Unidade central de processamento

0 Comments
Ver também: design do processador

Diagrama de bloco de um computador básico uniprocessador-CPU. As linhas pretas indicam o fluxo de dados, enquanto as linhas vermelhas indicam o fluxo de controle; as setas indicam as direções de fluxo.

Hardwireed into a CPU”s circuitry is a set of basic operations it can perform, called an instruction set. Tais operações podem envolver, por exemplo, adicionar ou subtrair dois números, comparar dois números, ou saltar para uma parte diferente de um programa., Cada operação básica é representada por uma combinação particular de bits, conhecido como Opcode linguagem de máquina; ao executar instruções em um programa de linguagem de máquina, a CPU decide qual operação executar por “decodificação” o opcode. Uma instrução de linguagem de máquina completa consiste de um opcode e, em muitos casos, bits adicionais que especificam argumentos para a operação (por exemplo, os números a serem somados no caso de uma operação de adição). Subindo a escala de complexidade, UM programa de linguagem de máquina é uma coleção de instruções de linguagem de máquina que a CPU executa.,

a operação matemática real para cada instrução é realizada por um circuito lógico combinacional dentro do processador da CPU conhecido como unidade lógica aritmética ou ALU. Em geral, uma CPU executa uma instrução, obtendo-a da memória, usando sua ALU para realizar uma operação, e então armazenando o resultado para a memória., Além das instruções para matemática inteira e operações lógicas, existem várias outras instruções da máquina, tais como as para carregar dados da memória e armazená-los de volta, operações de ramificação e operações matemáticas em números de ponto flutuante realizadas pela unidade de ponto flutuante da CPU (FPU).

Control unitEdit

artigo principal: unidade de controlo

a unidade de controlo (CU) é um componente da CPU que dirige o funcionamento do processador., Ele diz ao computador”S memória, aritmética e unidade lógica e dispositivos de entrada e saída como responder às instruções que foram enviadas para o processador.

dirige o funcionamento das outras unidades, fornecendo sinais de timing e de controlo. A maioria dos recursos de computador são gerenciados pela CU. Ele direciona o fluxo de dados entre a CPU e os outros dispositivos. John von Neumann incluiu a unidade de controle como parte da arquitetura de von Neumann., Em projetos de computador modernos, a unidade de controle é tipicamente uma parte interna da CPU, com seu papel global e operação inalterada desde a sua introdução.

Aritmética e lógica unitEdit

ver artigo Principal: unidade lógica Aritmética

representação Simbólica de um JANTES e os seus sinais de entrada e saída

A unidade lógica aritmética (ALU) é um circuito digital dentro do processador que executa inteiro aritméticas e operações lógicas bit a bit., As entradas para a ALU são as palavras de dados a serem operadas (chamados operandos), informações de status de operações anteriores, e um código da unidade de controle indicando qual operação realizar. Dependendo da instrução sendo executada, os operandos podem vir de registros internos da CPU ou Memória externa, ou podem ser constantes geradas pela própria Ula.

Quando todos os sinais de entrada se estabilizaram e propagaram através dos circuitos ALU, o resultado da operação realizada aparece nas saídas da ALU., O resultado consiste tanto de uma palavra de dados, que pode ser armazenado em um registro ou memória, e informações de Estado que é normalmente armazenado em um registro especial, interno CPU reservado para este propósito.

Address generation unitEdit

Main article: Address generation unit

Address generation unit (AGU), sometimes also called address computation unit (ACU), is an execution unit inside The CPU that calculates addresses used by the CPU to access main memory., Ao ter os cálculos de endereços tratados por circuitos separados que operam em paralelo com o resto da CPU, o número de ciclos de CPU necessários para executar várias instruções de máquina pode ser reduzido, trazendo melhorias de desempenho.

ao executar várias operações, os CPUs precisam calcular os endereços de memória necessários para obter dados da memória; por exemplo, as posições na memória de elementos de array devem ser calculadas antes que a CPU possa obter os dados de locais de memória reais., Esses cálculos de geração de endereços envolvem diferentes operações aritméticas de inteiros, tais como adição, subtração, operações modulo, ou mudanças de bits. Muitas vezes, calcular um endereço de memória envolve mais de uma instrução de máquina de propósito geral, que não necessariamente decodificar e executar rapidamente. Ao incorporar um AGU em um projeto de CPU, juntamente com a introdução de instruções especializadas que usam o AGU, vários cálculos de geração de endereços podem ser descarregados do resto do CPU, e muitas vezes podem ser executados rapidamente em um único ciclo de CPU.,

capacidades de um AGU dependem de um CPU particular e sua arquitetura. Assim, algumas AGUs implementam e expõem mais operações de cálculo de endereços, enquanto outras também incluem instruções especializadas mais avançadas que podem operar em vários operandos de cada vez. Além disso, algumas arquiteturas de CPU incluem múltiplos AGUs para que mais de uma operação de cálculo de endereços possa ser executada simultaneamente, trazendo melhorias de desempenho adicionais, capitalizando a natureza superscalar de projetos avançados de CPU., Por exemplo, a Intel incorpora vários AGUs em sua ponte Sandy e microarquiteturas Haswell, que aumentam a largura de banda do subsistema de memória da CPU, permitindo que múltiplas instruções de acesso à memória sejam executadas em paralelo.

unidade de gerenciamento de Memória (MMU)Editar

ver artigo Principal: unidade de gerenciamento de Memória

a Maioria dos microprocessadores (no desktop, laptop, computadores de servidor) têm uma unidade de gerenciamento de memória, convertendo endereços lógicos em físicos endereços de RAM, proporcionando proteção de memória de paginação e habilidades úteis para a memória virtual., Processadores mais simples, especialmente microcontroladores, geralmente não incluem um MMU.

CacheEdit

UM cache da CPU é um cache de hardware usado pela unidade de processamento central (CPU) de um computador para reduzir o custo médio (tempo ou energia) para acessar os dados da memória principal. Um cache é uma memória menor e mais rápida, mais perto de um núcleo de processador, que armazena cópias dos dados de locais de memória principais frequentemente usados. A maioria dos CPUs tem diferentes caches independentes, incluindo instruções e caches de dados, onde o cache de dados é normalmente organizado como uma hierarquia de mais níveis de cache (L1, L2, L3, L4, etc.,).todas as CPUs modernas (rápidas) (com poucas exceções especializadas) têm múltiplos níveis de caches de CPU. O primeiro CPUs que usou um cache tinha apenas um nível de cache; ao contrário de caches de Nível 1 posteriores, ele não foi dividido em L1D (para dados) e L1i (para instruções). Quase todos os CPUs atuais com caches têm uma cache L1 dividida. Eles também têm caches L2 e, para processadores maiores, caches L3 também. O cache L2 geralmente não é dividido e atua como um repositório comum para o cache L1 já dividido. Cada núcleo de um processador multi-core tem um cache L2 dedicado e geralmente não é compartilhado entre os núcleos., O cache L3, e caches de nível superior, são compartilhados entre os núcleos e não são divididos. Um cache L4 é atualmente incomum, e é geralmente em memória dinâmica de acesso aleatório (DRAM), em vez de em memória estática de acesso aleatório (SRAM), em um dado separado ou chip. Esse também foi o caso historicamente com L1, enquanto chips maiores têm permitido a integração dele e geralmente todos os níveis de cache, com a possível exceção do último nível. Cada nível extra de cache tende a ser maior e ser otimizado de forma diferente.,

existem outros tipos de caches (que não são contados para o “tamanho de cache” dos caches mais importantes mencionados acima), como o buffer de translation lookaside (TLB) que é parte da unidade de gerenciamento de memória (MMU) que a maioria dos CPUs tem.Caches são geralmente dimensionados em poderes de dois: 4, 8, 16 etc. KiB ou MiB (para tamanhos maiores não-L1), embora o IBM z13 tenha um cache de instruções L1 de 96 KiB.

Clock rateEdit

artigo principal: Clock rate

a maioria das CPUs são circuitos síncronos, o que significa que empregam um sinal de clock para acelerar as suas operações sequenciais., O sinal de clock é produzido por um circuito externo de oscilador que gera um número consistente de pulsos a cada segundo na forma de uma onda quadrada periódica. A frequência dos pulsos do relógio determina a taxa a que uma CPU executa instruções e, consequentemente, quanto mais rápido o relógio, mais instruções a CPU executará a cada segundo.

para assegurar o bom funcionamento da CPU, o período de relógio é maior do que o tempo máximo necessário para todos os sinais se propagarem (mover) através da CPU., Ao definir o período do relógio para um valor bem acima do atraso de propagação do pior caso, é possível projetar toda a CPU e a maneira como ela move os dados em torno das “bordas” do sinal de relógio ascendente e descendente. Isto tem a vantagem de simplificar significativamente a CPU, tanto a partir de uma perspectiva de design e uma perspectiva de contagem de componentes. No entanto, ele também carrega a desvantagem de que toda a CPU deve esperar em seus elementos mais lentos, mesmo que algumas porções dela são muito mais rápidas. Esta limitação tem sido amplamente compensada por vários métodos de aumento do paralelismo do CPU (ver abaixo).,

no entanto, melhorias arquitetônicas por si só não resolvem todos os inconvenientes de CPUs globalmente síncronas. Por exemplo, um sinal de relógio está sujeito aos atrasos de qualquer outro sinal elétrico. Taxas de clock mais elevadas em CPUs cada vez mais complexas tornam mais difícil manter o sinal de clock em fase (sincronizado) em toda a unidade. Isso levou muitos CPUs modernos a exigir múltiplos sinais de clock idênticos a serem fornecidos para evitar atrasar um único sinal significativamente o suficiente para causar o mau funcionamento da CPU., Outra questão importante, como as taxas de clock aumentam dramaticamente, é a quantidade de calor que é dissipada pela CPU. O relógio em constante mudança faz com que muitos componentes mudem, independentemente de estarem a ser usados nesse momento. Em geral, um componente que está comutando usa mais energia do que um elemento em um estado estático. Portanto, à medida que a taxa de clock aumenta, também aumenta o consumo de energia, fazendo com que a CPU requeira mais dissipação de calor na forma de soluções de arrefecimento CPU.,

Um método de lidar com a comutação de componentes sem necessidade é chamado de fluxo de relógio, que envolve desligar o sinal de relógio para componentes sem necessidade (desativando-os efetivamente). No entanto, isto é muitas vezes considerado difícil de implementar e, portanto, não vê uso comum fora de projetos de baixa potência. Um projeto recente notável de CPU que usa uma ampla datação de relógio é o xénon baseado em PowerPC da IBM usado no Xbox 360; dessa forma, os requisitos de potência do Xbox 360 são muito reduzidos., Outro método de abordar alguns dos problemas com um sinal de relógio global é a remoção do sinal de relógio completamente. Enquanto a remoção do sinal de clock global torna o processo de projeto consideravelmente mais complexo em muitas maneiras, os projetos assíncronos (ou sem Clock) têm vantagens marcadas no consumo de energia e dissipação de calor em comparação com projetos semelhantes síncronos. Embora um pouco incomum, CPUs assíncronos inteiros foram construídos sem usar um sinal de clock global. Dois exemplos notáveis disso são o amuleto compatível com o braço e os MiniMIPS compatíveis com o MIPS R3000.,

ao invés de remover totalmente o sinal do relógio, alguns projetos da CPU permitem que certas porções do dispositivo sejam assíncronas, como o uso de ALUs assíncrono em conjunto com pipelining superscalar para alcançar alguns ganhos de desempenho aritmético. Embora não seja totalmente claro se projetos totalmente assíncronos podem executar em um nível comparável ou melhor do que suas contrapartes síncronas, é evidente que eles fazem pelo menos excel em operações matemáticas mais simples., Isto, combinado com o seu excelente consumo de energia e propriedades de dissipação de calor, torna-os muito adequados para computadores incorporados.artigo principal: módulo regulador de tensão

muitas CPUs modernas têm um módulo integrado de gestão de energia que regula a oferta de tensão a pedido ao circuito da CPU, permitindo-lhe manter o equilíbrio entre o desempenho e o consumo de energia.

inteiro rangeEdit

cada CPU representa valores numéricos de uma forma específica., Por exemplo, alguns dos primeiros computadores digitais representavam números como familiares valores decimais (base 10) do sistema, e outros empregaram representações mais incomuns, como ternary (base três). Quase todos os CPUs modernos representam números em forma binária, com cada dígito sendo representado por alguma quantidade física de dois valores, como uma tensão “alta” ou “baixa”.

uma palavra de seis bits contendo a representação binária codificada do valor decimal 40. A maioria dos CPUs modernos empregam tamanhos de palavras que são uma potência de dois, por exemplo 8, 16, 32 ou 64 bits.,

relacionado com a representação numérica é o tamanho e a precisão dos números inteiros que uma CPU pode representar. No caso de uma CPU binária, isso é medido pelo número de bits (dígitos significativos de um inteiro codificado binário) que a CPU pode processar em uma operação, que é comumente chamado de tamanho da palavra, largura de bits, largura do caminho de dados, precisão de inteiros, ou tamanho inteiro. O tamanho inteiro de uma CPU determina a gama de valores inteiros que ela pode operar diretamente., Por exemplo, uma CPU de 8 bits pode manipular diretamente os inteiros representados por oito bits, que têm uma gama de 256 (28) valores inteiros discretos.

inteiro range can also affect the number of memory locations the CPU can directly address (an address is an integer value representing a specific memory location). Por exemplo, se uma CPU binária usa 32 bits para representar um endereço de memória, então ela pode dirigir-se diretamente a 232 localizações de memória. Para contornar esta limitação e por várias outras razões, algumas CPUs usam mecanismos (como mudança de banco) que permitem que a memória adicional seja tratada.,CPUs com maiores tamanhos de palavras requerem mais circuitos e consequentemente são fisicamente maiores, custam mais e consomem mais energia (e, portanto, geram mais calor). Como resultado, microcontroladores menores de 4 ou 8 bits são comumente usados em aplicações modernas, mesmo que CPUs com tamanhos de palavras muito maiores (como 16, 32, 64, até 128-bit) estão disponíveis. Quando maior desempenho é necessário, no entanto, os benefícios de um tamanho de palavra maior (maiores gamas de dados e espaços de endereço) podem superar as desvantagens. Uma CPU pode ter caminhos de dados internos mais curtos do que o tamanho da palavra para reduzir o tamanho e o custo., Por exemplo, mesmo que o IBM System/360 o conjunto de instruções foi uma versão de 32 bits com conjunto de instruções, o System/360 Modelo 30 e Modelo de 40 tinha de dados de 8 bits caminhos na aritmética a unidade lógica, de modo que um de 32 bits, adicione necessários quatro ciclos, um para cada 8 bits dos operandos, e, mesmo que o Motorola 68000 conjunto de instruções foi uma versão de 32 bits com conjunto de instruções, o Motorola 68000 e Motorola 68010 tinha de dados de 16 bits caminhos na aritmética a unidade lógica, para que um de 32 bits, adicione necessários dois ciclos.,

para ganhar algumas das vantagens oferecidas por comprimentos de bits mais baixos e mais elevados, muitos conjuntos de instruções têm larguras de bits diferentes para dados inteiros e de ponto flutuante, permitindo que as CPUs implementem esse conjunto de instruções para ter larguras de bits diferentes para diferentes porções do dispositivo. Por exemplo, o conjunto de instruções IBM System/360 era principalmente 32 bit, mas suportava valores de ponto flutuante 64-bit para facilitar uma maior precisão e alcance em números de ponto flutuante., The System / 360 Model 65 had an 8-bit adder for decimal and fixed-point binary arithmetic and a 60-bit adder for floating-point arithmetic. Muitos projetos posteriores da CPU usam largura de bit mista semelhante, especialmente quando o processador é destinado para uso geral, onde um equilíbrio razoável de capacidade de inteiros e de vírgula flutuante é necessária.,

ParallelismEdit

ver artigo Principal: computação Paralela

Modelo de um subscalar CPU, no que leva quinze ciclos de relógio para completar três instruções

A descrição da operação básica de uma CPU oferecidos na seção anterior descreve a forma mais simples que uma CPU pode tomar. Este tipo de CPU, geralmente referido como subescala, Opera e executa uma instrução em uma ou duas peças de dados de cada vez, que é menos de uma instrução por ciclo de clock (IPC < 1).,este processo dá origem a uma ineficiência inerente nos CPUs subescala. Uma vez que apenas uma instrução é executada de cada vez, toda a CPU deve esperar que essa instrução termine antes de prosseguir para a instrução seguinte. Como resultado, o CPU subescalar fica “pendurado” em instruções que levam mais de um ciclo de clock para completar a execução. Mesmo a adição de uma segunda unidade de execução (ver abaixo) não melhora muito o desempenho; ao invés de uma via ser desligada, agora duas vias são desligadas e o número de transistores não utilizados é aumentado., Este projeto, em que os recursos de execução da CPU podem operar em apenas uma instrução de cada vez, só pode atingir o desempenho escalar (uma instrução por ciclo de clock, IPC = 1). No entanto, o desempenho é quase sempre subescalar (menos de uma instrução por ciclo de clock, IPC < 1).

tentativas de alcançar escalar e melhor desempenho resultaram em uma variedade de metodologias de design que fazem com que a CPU se comporte menos linearmente e mais em paralelo., Quando se refere ao paralelismo em CPUs, dois termos são geralmente usados para classificar estas técnicas de design:

  • instrução-nível de paralelismo (ILP), que busca aumentar a taxa na qual as instruções são executadas dentro de uma CPU (que é, para aumentar o uso de morrer recursos de execução);
  • tarefa nível de paralelismo (TLP), que meramente para aumentar o número de threads ou processos que uma CPU pode executar simultaneamente.,

cada metodologia difere tanto na forma como são implementadas, bem como na eficácia relativa que proporcionam no aumento do desempenho da CPU para uma aplicação.

Parallelismedit ao nível da instrução

artigo principal: paralelismo ao nível da instrução

Pipeline básica de cinco fases. Na melhor das hipóteses, este gasoduto pode manter uma taxa de conclusão de uma instrução por ciclo de clock.,

um dos métodos mais simples usados para alcançar um maior paralelismo é começar os primeiros passos de obtenção e decodificação de instruções antes que a instrução anterior termine de executar. Esta é a forma mais simples de uma técnica conhecida como pipelining de instrução, e é usada em quase todos os CPUs modernos de uso geral. Pipelining permite que mais de uma instrução seja executada em qualquer momento, quebrando a via de execução em estágios discretos., Esta separação pode ser comparada a uma linha de montagem, na qual uma instrução é feita mais completa em cada etapa até que ela saia do pipeline de execução e seja retirada.

o Pipelining, no entanto, introduzir a possibilidade de uma situação onde o resultado da operação anterior é necessário para concluir a operação seguinte; uma condição muitas vezes chamado de dependência de dados conflito. Para lidar com isso, é preciso ter cuidado adicional para verificar este tipo de condições e atrasar uma parte do pipeline de instrução se isso ocorrer., Naturalmente, realizar isso requer circuitos adicionais, de modo que os processadores pipelinados são mais complexos do que os subscais (embora não muito significativamente). Um processador pipelined pode tornar – se muito quase escalar, inibido apenas por barracas de Tubulação (uma instrução gastando mais de um ciclo de clock em um estágio).

um oleoduto superscalar simples. Ao obter e enviar duas instruções de cada vez, um máximo de duas instruções por ciclo de clock pode ser concluído.,

melhoria adicional com a ideia de tubulação de instrução levou ao desenvolvimento de um método que diminui ainda mais o tempo de inactividade dos componentes da CPU. Designs que dizem ser superscalar incluem um pipeline de longa instrução e várias unidades de execução idênticas, tais como unidades de load-store, unidades aritméticas-lógicas, unidades de ponto flutuante e unidades de geração de endereços. Em um pipeline superscalar, várias instruções são lidas e passadas para um despachante, que decide se as instruções podem ou não ser executadas em paralelo (simultaneamente)., Se assim for, eles são enviados para unidades de execução disponíveis, resultando na capacidade de várias instruções a serem executadas simultaneamente. Em geral, quanto mais instruções uma CPU superscalar é capaz de enviar simultaneamente para unidades de execução esperando, mais instruções serão completadas em um determinado ciclo.

A maior parte da dificuldade no desenho de uma arquitetura de CPU superscalar reside na criação de um despachante eficaz., O dispatcher precisa ser capaz de determinar rápida e corretamente se as instruções podem ser executadas em paralelo, bem como enviá-las de forma a manter o maior número possível de unidades de execução ocupadas. Isso requer que o pipeline de instruções seja preenchido o mais frequentemente possível e dá origem à necessidade de arquiteturas superscalar para quantidades significativas de cache de CPU. Também faz com que técnicas de prevenção de riscos como previsão de ramos, execução especulativa, renomeação de registros, execução fora de ordem e memória transacional cruciais para manter altos níveis de desempenho., Ao tentar prever qual ramo (ou caminho) uma instrução condicional irá tomar, a CPU pode minimizar o número de vezes que todo o gasoduto deve esperar até que uma instrução condicional seja concluída. A execução especulativa muitas vezes fornece aumentos modestos de desempenho executando porções de código que podem não ser necessárias após uma operação condicional completa. A execução fora de ordem reorganiza um pouco a ordem na qual as instruções são executadas para reduzir atrasos devido a dependências de dados., Também no caso do single instruction stream, multiple data stream—um caso quando um monte de dados do mesmo tipo tem que ser processado, os processadores modernos podem desativar partes do pipeline de modo que, quando uma única instrução é executada muitas vezes, a CPU ignora a buscar e decodificar fases e, assim, aumenta bastante o desempenho em certas ocasiões, especialmente em ambientes altamente monótono programa de motores como de criação de vídeo, software e processamento de fotos.,

no caso em que uma parte da CPU é superscalar e parte não é, a parte que não sofre uma penalidade de desempenho devido a bancas de agendamento. The Intel P5 Pentium had two superscalar ALUs which could accept one instruction per clock cycle each, but its FPU could not accept one instruction per clock cycle. Assim, o P5 era um superscalar inteiro, mas não um superscalar de ponto flutuante. O sucessor da Intel para a arquitetura P5, P6, adicionou habilidades superscalar às suas características de ponto flutuante, e, assim, ofereceu um aumento significativo no desempenho de instrução de ponto flutuante.,tanto a tubulação simples como o projeto superscalar aumentam a ILP de uma CPU, permitindo que um único processador complete a execução de instruções a taxas superiores a uma instrução por ciclo de clock. A maioria dos projetos de CPU modernos são pelo menos um pouco superscalar, e quase todos os CPUs de propósito geral projetados na última década são superscalar. Nos últimos anos, a ênfase na concepção de computadores de alto nível foi transferida do hardware da CPU para a sua interface de software, ou arquitetura de conjunto de instruções (ISA)., A estratégia da palavra de instrução muito longa (VLIW) faz com que algum ILP se torne implícito diretamente pelo software, reduzindo a quantidade de trabalho que o CPU deve realizar para impulsionar o ILP e, assim, reduzir a complexidade do projeto.

parallelismEdit a nível de tarefa

principais artigos: Multithreading e processador multi-core

outra estratégia de alcançar o desempenho é executar vários fios ou processos em paralelo. Esta área de pesquisa é conhecida como computação paralela. Na taxonomia de Flynn, esta estratégia é conhecida como fluxo de instruções múltiplas, fluxo de dados múltiplos (MIMD).,

uma tecnologia utilizada para este fim foi multiprocessamento (MP). O sabor inicial desta tecnologia é conhecido como multiprocessamento simétrico (SMP), onde um pequeno número de CPUs compartilham uma visão coerente de seu sistema de memória. Neste esquema, cada CPU tem hardware adicional para manter uma visão constantemente atualizada da memória. Ao evitar visões obsoletas da memória, os CPUs podem cooperar no mesmo programa e os programas podem migrar de uma CPU para outra., Para aumentar o número de CPUs cooperantes além de um punhado, esquemas como o acesso à memória não uniforme (NUMA) e protocolos de coerência baseados em diretórios foram introduzidos na década de 1990. sistemas SMP estão limitados a um pequeno número de CPUs, enquanto sistemas NUMA foram construídos com milhares de processadores. Inicialmente, multiprocessamento foi construído usando múltiplos processadores discretos e placas para implementar a interligação entre os processadores., Quando os processadores e sua interligação são todos implementados em um único chip, a tecnologia é conhecida como chip-level multiprocessing (CMP) e o único chip como um processador multi-core.mais tarde foi reconhecido que o paralelismo de grão-fino existia com um ÚNICO programa. Um ÚNICO programa pode ter vários threads (ou funções) que podem ser executados separadamente ou em paralelo. Alguns dos primeiros exemplos desta tecnologia implementaram processamento de entrada / saída, como o acesso direto à memória como um tópico separado do thread de computação., Uma abordagem mais geral a esta tecnologia foi introduzida na década de 1970, quando os sistemas foram projetados para executar vários threads de computação em paralelo. Esta tecnologia é conhecida como multi-threading (MT). Esta abordagem é considerada mais rentável do que multiprocessamento, uma vez que apenas um pequeno número de componentes dentro de uma CPU é replicado para suportar MT, em oposição a toda CPU no caso de MP. No MT, as unidades de execução e o sistema de memória, incluindo os caches, são compartilhados entre vários threads., O lado negativo do MT é que o Suporte de hardware para multi-leitura é mais visível para o software do que o de MP e, portanto, supervisor software como sistemas operacionais têm que passar por maiores mudanças para suportar MT. Um tipo de MT que foi implementado é conhecido como multithreading temporal, onde um thread é executado até que ele é parado esperando os dados retornarem da Memória externa. Neste esquema, a CPU iria então rapidamente contextualizar mudar para outro thread que está pronto para correr, o switch muitas vezes feito em um ciclo de clock CPU, como o UltraSPARC T1., Outro tipo de MT é multithreading simultâneo, onde as instruções de vários threads são executadas em paralelo dentro de um ciclo de clock da CPU.

por várias décadas da década de 1970 ao início da década de 2000, o foco na concepção de CPUs de propósito geral de alto desempenho foi em grande parte na obtenção de alta ILP através de tecnologias como pipelining, caches, execução superscalar, execução fora de ordem, etc. Esta tendência culminou em CPUs grandes, famintos de poder, como o Intel Pentium 4., No início da década de 2000, os designers da CPU foram impedidos de alcançar maior desempenho das técnicas da ILP devido à crescente disparidade entre as frequências operacionais da CPU e as principais frequências operacionais da memória, bem como a escalada da dissipação de energia da CPU devido a técnicas mais esotéricas da ILP.

designers de CPU então emprestaram ideias de mercados comerciais de computação, como processamento de transações, onde o desempenho agregado de vários programas, também conhecido como processamento de processamento, era mais importante do que o desempenho de um único thread ou processo.,

Esta reversão de ênfase é evidenciada pela proliferação de projetos de processador dual e mais core e, notavelmente, os projetos mais recentes da Intel assemelhando-se a sua arquitetura menos superescalar P6. Projetos tardios em várias famílias de processadores exibem CMP, incluindo o Opteron x86-64 e Athlon 64 X2, o SPARC UltraSPARC T1, IBM POWER4 e POWER5, bem como vários consoles de jogos de vídeo como o design PowerPC Triplo-core do Xbox 360, e o microprocessador de células 7-core do PlayStation 3.,

Data parallelismEdit

main articles: Vector processor and SIMD

a less common but increasingly important paradigm of processors (and indeed, computing in general) deals parallelism. Os processadores discutidos anteriormente são todos referidos como algum tipo de dispositivo scalar. Como o nome indica, processadores vetoriais lidam com múltiplas peças de dados no contexto de uma instrução. Isto contrasta com processadores scalar, que lidam com um pedaço de dados para cada instrução., Usando a taxonomia de Flynn, estes dois esquemas de lidar com dados são geralmente referidos como fluxo de instrução única, fluxo de dados múltiplos (SIMD) e fluxo de instrução único, fluxo de dados único (SISD), respectivamente. A grande utilidade na criação de processadores que lidam com vetores de dados reside na otimização de tarefas que tendem a exigir a mesma operação (por exemplo, uma soma ou um produto Ponto) a ser realizada em um grande conjunto de dados. Alguns exemplos clássicos destes tipos de tarefas incluem aplicações multimédia (imagens, vídeo e som), bem como muitos tipos de tarefas científicas e de engenharia., Enquanto um processador escalar deve completar todo o processo de obtenção, decodificação e execução de cada instrução e valor em um conjunto de dados, um processador vetorial pode realizar uma única operação em um conjunto comparativamente grande de dados com uma instrução. Isto só é possível quando a aplicação tende a exigir muitos passos que aplicam uma operação a um grande conjunto de dados.

A maioria dos primeiros processadores vetoriais, como o Cray-1, foram associados quase exclusivamente com a pesquisa científica e aplicações de criptografia., No entanto, uma vez que o multimedia se deslocou em grande parte para os meios digitais, a necessidade de alguma forma de processadores SIMD em geral tornou-se significativa. Logo após a inclusão de unidades de ponto flutuante começou a se tornar comum em processadores de uso geral, especificações e implementações de unidades de execução de SIMD também começaram a aparecer para processadores de uso geral. Algumas dessas primeiras especificações SIMD-como extensões de Aceleração multimídia de HP (MAX) e Intel”s MMX – eram apenas inteiros., Isto provou ser um impedimento significativo para alguns desenvolvedores de software, uma vez que muitas das aplicações que se beneficiam do SIMD lidam principalmente com números de ponto flutuante. Progressivamente, os desenvolvedores refinaram e refizeram esses primeiros projetos em algumas das especificações modernas comuns do SIMD, que são geralmente associadas com uma arquitetura de conjunto de instruções (ISA). Alguns exemplos modernos notáveis incluem Intel Streaming SIMD Extensions (SSE) e o PowerPC-related AltiVec (também conhecido como VMX).


Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *