Conteúdo verificado

Unidade central de processamento

Sobre este escolas selecção Wikipedia

Crianças SOS feita esta seleção Wikipedia ao lado de outras escolas recursos . Patrocínio da criança ajuda as crianças uma a uma http://www.sponsor-a-child.org.uk/ .

Um Intel CPU 80486DX2 de cima.
Um 80486DX2 Intel a partir de baixo

Uma unidade de processamento central (CPU), também referido como uma unidade central de processamento, é o equipamento dentro de um computador que executa o instruções de um Programa de computador que executa a aritmética básica, lógico, e as operações de entrada / saída do sistema. O termo tem sido usado na indústria de computadores, pelo menos desde o início dos anos 1960. A forma, design, e implementação de CPUs mudaram ao longo de sua história, mas a sua operação fundamental continua a ser a mesma coisa.

Em computadores mais antigos, CPUs exigir uma ou mais placas de circuito impresso. Com a invenção do microprocessador, um processador pode ser contido dentro de um único chip de silício . Os primeiros computadores para usar microprocessadores foram os computadores pessoais e pequenas estações de trabalho. Desde os anos 1970, o microprocessador classe de CPUs quase completamente ultrapassada todas as outras implementações de CPU, à medida que o mesmo computadores mainframe utilizar um ou mais microprocessadores. Os microprocessadores modernos são em grande escala de circuitos integrados em pacotes tipicamente menos do que quatro centímetros quadrados, com centenas de pinos de conexão.

Um computador pode ter mais de uma CPU; esta é chamada multiprocessamento. Alguns microprocessadores podem conter várias CPUs em um único chip; esses microprocessadores são chamados processadores multi-core.

Dois componentes típicos de um processador são o unidade de aritmética lógica (ALU), que realiza operações aritméticas e lógicas, ea unidade de controlo (CU), o qual extrai as instruções de memória e decodifica e executa-los, invocando o ALU quando necessário.

Nem todos os sistemas computacionais dependem de uma unidade de processamento central. Um processador ou matriz processador vector tem vários elementos de computação paralela, sem uma unidade considerada o "centro". No modelo de computação distribuída, os problemas são resolvidos por um conjunto interligado de processadores distribuídos.

História

EDVAC, um dos computadores de programas armazenados primeiro.

Computadores, tais como o ENIAC tinha de ser fisicamente religados para executar diferentes tarefas, o que causou essas máquinas a ser chamado de "computadores-programa fixo." Uma vez que o termo "CPU" é geralmente definido como um dispositivo para software (programa de computador) a execução, os primeiros dispositivos que poderiam muito bem ser chamado CPUs veio com o advento da computador de programa armazenado.

A ideia de um computador de programa armazenado já estava presente no projeto de J. Presper Eckert e John William Mauchly de ENIAC, mas foi inicialmente omitido de modo que pudesse ser terminada mais cedo. Em 30 de junho de 1945, antes ENIAC foi feito, o matemático John von Neumann distribuiu o documento intitulado primeiro rascunho de um relatório sobre a EDVAC. Era o esboço de um computador de programa armazenado que acabaria por ser concluída em agosto de 1949. EDVAC foi projetado para executar um determinado número de instruções (ou operações) de vários tipos. Essas instruções podem ser combinados para criar programas úteis para o EDVAC para ser executado. Significativamente, os programas escritos para EDVAC foram armazenados em alta velocidade memória do computador em vez do especificado pela fiação física do computador. Este superou uma grave limitação de ENIAC, que foi o tempo considerável e esforço necessário para reconfigurar o computador para executar uma nova tarefa. Com design de von Neumann, o programa, ou software, que Edvac ran poderia ser alterada, alterando simplesmente o conteúdo da memória.

CPUs iniciais foram costume-projetado como uma parte de um maior, às vezes one-of-a-kind, computador. No entanto, este método de concepção de CPUs personalizados para uma aplicação particular tem em grande parte determinado caminho para o desenvolvimento de processadores produzidos em massa que são feitas para muitas finalidades. Esta padronização começou na era de discreta transistor mainframes e minicomputadores e acelerou rapidamente com a popularização do circuito integrado (IC). O IC tem permitido CPUs cada vez mais complexas para ser concebidos e fabricados com tolerâncias da ordem de nanómetros. Tanto a miniaturização e padronização de CPUs têm aumentado a presença de dispositivos digitais na vida moderna muito além da aplicação limitado de máquinas de computação dedicados. Os microprocessadores modernos aparecem em tudo, desde automóveis a telefones celulares e brinquedos para crianças.

Enquanto von Neumann é mais frequentemente creditado com o projeto do computador de programa armazenado por causa de seu projeto de EDVAC, outros antes dele, como Konrad Zuse, tinham sugerido e implementado idéias semelhantes. A chamada Arquitetura Harvard da Harvard Mark I, que foi concluída antes EDVAC, também utilizou um projeto de programa armazenado usando fita de papel perfurado em vez de memória eletrônica. A diferença fundamental entre as arquitecturas de von Neumann e Harvard é que o último separa o armazenamento e o tratamento de dados e instruções da CPU, enquanto o primeiro usa o mesmo espaço de memória para ambos. A maioria dos processadores modernos são principalmente von Neumann em design, mas elementos da arquitetura Harvard são comumente vistos também.

Relés e tubos de vácuo (válvulas thermionic) eram comumente usados como elementos de comutação; um computador útil requer milhares ou dezenas de milhares de dispositivos de comutação. A velocidade global de um sistema depende da velocidade dos interruptores. Computadores tubo como EDVAC tendiam a média de oito horas entre as falhas, enquanto os computadores de retransmissão (como o mais lento, mas mais cedo) Harvard Mark I falhou muito raramente. No final, CPUs de tubos baseado tornou-se dominante, porque as vantagens de velocidade significativas oferecidas geralmente superaram os problemas de confiabilidade. A maioria destes CPUs síncronas primeiros correu em baixa taxas de clock em comparação com projetos de microeletrônica modernos (ver abaixo para uma discussão da velocidade do clock). Frequências de sinal de relógio que variam de 100 kHz a 4 MHz foram muito comum neste momento, em grande parte limitadas pela velocidade dos dispositivos de comutação que foram construídas com.

Transistor e CPUs de circuitos integrados

CPU, memória de núcleo, e interface de bus externo de um DEC PDP-8 / I. Feito de circuitos integrados de médio porte.

A complexidade do projeto de CPUs aumentou à medida que várias tecnologias facilitaram a construção de dispositivos eletrônicos menores e mais confiáveis. O primeiro tal melhoria veio com o advento da transistor. CPUs transistorizados durante os anos 1950 e 1960 já não tinha que ser construído a partir de elementos de comutação volumosos, pouco confiáveis e frágeis como tubos de vácuo e relés elétricos. Com esta melhoria CPUs mais complexos e de confiança foram construídos sobre uma ou várias placas de circuito impresso com componentes discretos (individuais).

Durante este período, foi desenvolvido um método de fabricação de vários transistores interligados num espaço compacto. O circuito integrado (IC) permitiu um grande número de transistores de ser fabricados numa única semicondutores baseados morrer, ou "chips". No primeiro circuitos digitais não especializados só é muito básicos, tais como NOR foram miniaturizados em ICs. CPUs baseadas nestes ICs "blocos de construção" são geralmente referidos como "dispositivos de integração em pequena escala" (SSI). CIs SSI, tais como os usados no Apollo computador de orientação, geralmente contido até alguns transistores de pontuação. Para construir uma CPU toda para fora da SSI ICs necessários milhares de fichas individuais, mas ainda consumia muito menos espaço e energia do que os modelos anteriores de transistores discretos. Como tecnologia de micro-electrónica avançada, um número crescente de transistores foram colocados em CIs, diminuindo assim a quantidade de CIs individuais necessários para uma CPU completa. ICs MSI e LSI (integração de médio e grande escala) aumentou número de transistores a centenas, e depois milhares.

Em 1964, a IBM introduziu o seu System / 360 arquitetura de computador que foi utilizado em uma série de computadores que podem executar os mesmos programas com velocidade e desempenho diferente. Isso foi importante num momento em que a maioria dos computadores eletrônicos eram incompatíveis um com o outro, mesmo aqueles feitos pelo mesmo fabricante. Para facilitar esta melhoria, IBM utilizado o conceito de um microprogram (muitas vezes chamado de "microcode"), que ainda vê uso difundido em processadores modernos. A / 360 A arquitetura do sistema era tão popular que dominou a mercado de computador de grande porte por décadas e deixou um legado que ainda continua por computadores modernos semelhantes, como a IBM zSeries. No mesmo ano (1964), Digital Equipment Corporation (DEC), introduziu um outro computador influente vocacionado para os mercados científicas e de investigação, a PDP-8. Dezembro viria a introduzir o extremamente popular Linha PDP-11 que foi originalmente construído com CIs SSI mas acabou por ser implementado com componentes LSI uma vez que estes se tornou prática. Em contraste gritante com seus antecessores SSI e MSI, a primeira implementação LSI do PDP-11 continha uma CPU composta de apenas quatro circuitos integrados LSI.

Computadores baseados em transistor tinha várias vantagens sobre seus antecessores. Além de facilitar o aumento da fiabilidade e baixo consumo de energia, transistores também permitiu CPUs de operar a velocidades muito elevadas, devido ao curto tempo de comutação de um transistor, em comparação com um tubo ou relé. Graças a tanto o aumento da fiabilidade, bem como o aumento da velocidade de drasticamente os elementos de comutação (que eram quase exclusivamente transistores por esta altura), as taxas de relógio da CPU na casa das dezenas de megahertz foram obtidos durante este período. Além disso, enquanto transistor discreto e IC CPUs estavam em uso pesado, novo de alta performance projeta como SIMD (Single Instruction Multiple Data) processadores vetoriais começaram a aparecer. Estes projetos experimentais adiantados mais tarde deu origem à era da especialização computadores, como os fabricados pela Cray Inc.

Microprocessadores

Morre de um Intel 80486DX2 microprocessador (tamanho real: 12 × 6,75 milímetros) em sua embalagem
Intel Core i5 em uma placa-mãe série laptop Vaio E (à direita, abaixo da tubo de calor).

Na década de 1970 as invenções fundamentais por Federico Faggin (ICs porta de silicone MOS com auto alinhado portões juntamente com sua nova metodologia de projeto lógica aleatória) mudou a concepção e implementação de CPUs para sempre. Desde a introdução do primeiro microprocessador disponível comercialmente (o Intel 4004) em 1970, e o primeiro amplamente utilizados microprocessador (a Intel 8080), em 1974, esta classe de CPUs tem quase completamente ultrapassado todos os outros métodos de implementação da unidade de processamento central. Mainframe e minicomputadores fabricantes da época lançou programas proprietários de desenvolvimento IC para atualizar seu mais velho arquiteturas de computadores, e, eventualmente, produzido conjunto de instruções microprocessadores compatíveis que eram compatíveis com versões anteriores com o seu hardware mais antigo e software. Combinado com o advento e eventual sucesso do onipresente computador pessoal , a CPU termo passou a ser aplicado quase exclusivamente aos microprocessadores. Vários CPUs podem ser combinados numa única chip de processamento.

As gerações anteriores de CPUs foram implementados como componentes discretos e numerosos pequenos circuitos integrados (ICs) em uma ou mais placas de circuito. Microprocessadores, por outro lado, são fabricados em CPUs um número muito pequeno de CIs; geralmente apenas um. Quanto menor o tamanho geral da CPU, como resultado de ser implementado em um único die significa tempo de comutação mais rápido por causa de fatores físicos como diminuição da porta capacitância parasita. Isto permitiu microprocessadores síncronos para ter taxas de clock variando de dezenas de megahertz a vários gigahertz. Além disso, como a capacidade para construir extremamente pequenos transistores em um IC aumentou, a complexidade e número de transistores em uma única CPU tem aumentado muitas vezes. Esta tendência observada é amplamente descrito por lei de Moore , que tem provado ser um preditor bastante precisa do crescimento da CPU (e outros IC) complexidade.

Enquanto a complexidade, o tamanho, a construção ea forma geral de CPUs mudaram muito desde 1950, é notável que o projeto básico ea função não mudou muito em tudo. Quase todas as CPUs comum hoje em dia pode ser descrito com muita precisão como von Neumann máquinas de programa armazenado. Como lei o referido de Moore continua a ser verdade, surgiram preocupações sobre os limites da tecnologia de circuito integrado transistor. Miniaturização extrema de portões eletrônicos está causando os efeitos de fenômenos como electromigration e fugas subliminares para tornar-se muito mais significativo. Estas preocupações mais recentes estão entre os muitos fatores que causam os pesquisadores a investigar novos métodos de computação, como o computador quântico , bem como para expandir o uso de paralelismo e outros métodos que se estendem a utilidade do modelo de von Neumann clássica.

Operação

A operação fundamental da maioria das CPUs, independentemente da forma física que tomar, é para executar uma sequência de instruções de um programa de chamadas armazenados. O programa é representada por uma série de números que são mantidos em algum tipo de memória do computador. Há quatro etapas que quase todos os processadores utilizam em sua operação: busca, decodificação, executar e write-back.

O primeiro passo, buscar, envolve a recuperação de um instruções (a qual é representada por uma série ou sequência de números) a partir da memória do programa. A localização na memória do programa é determinada por um contador de programa (PC), que armazena um número que identifica a posição actual do programa. Depois de uma instrução é buscada, a PC é incrementado por o comprimento da palavra de instrução em termos de unidades de memória. Muitas vezes, a instrução a ser buscada deve ser recuperada a partir da memória relativamente lento, fazendo com que a CPU para parar enquanto espera para a instrução a ser devolvido. Este problema é largamente abordados em processadores modernos por caches e arquiteturas pipeline (veja abaixo).

A instrução que a CPU busca da memória é utilizada para determinar o que a CPU está a fazer. No passo de descodificação, a instrução é dividido em partes que têm importância para outras porções da CPU. A maneira na qual o valor numérico de instruções é interpretado é definida por conjunto de instruções da arquitectura do processador (ISA). Muitas vezes, um grupo de números na instrução, chamada de código de operação indica que a operação para executar. As restantes partes do número geralmente fornecer dados necessários para que a instrução, tal como operandos para uma operação de adição. Tais operandos pode ser dada como um valor constante (chamado um valor imediato), ou como um local para um valor de: um registar-se ou um endereço de memória, tal como determinado por alguns modo de endereçamento. Em modelos mais antigos, as partes da CPU responsável pela decodificação de instrução eram dispositivos de hardware imutáveis. No entanto, em CPUs e normas de auditoria mais abstrato e complicado, uma microprogram é freqüentemente usado para ajudar a traduzir as instruções em diversos sinais de configuração para o CPU. Este é, por vezes, regravável microprograma, de modo que ele pode ser modificado para alterar o modo como o CPU descodifica instruções, mesmo depois de ter sido fabricado.

Após as etapas de buscar e descodificar, executar o passo é realizado. Durante este passo, as várias porções do CPU são ligados de modo que é possível efectuar a operação desejada. Se, por exemplo, uma operação de adição foi solicitado, o unidade aritmética e lógica (ALU) serão ligados a um conjunto de entradas e um conjunto de saídas. As entradas fornecer os números a ser adicionado, e as saídas irá conter a soma final. A ALU contém o circuito para realizar operações aritméticas simples e operações lógicas sobre os insumos (como adição e operações bit a bit). Se a operação de adição produz um resultado muito grande para o CPU de manusear, uma bandeira de um excesso aritmético em bandeiras registar pode também ser ajustado.

O passo final, write-back, simplesmente "escreve para trás", os resultados da etapa de executar a alguma forma de memória. Os resultados, muitas vezes, são gravados em alguns registro interno para o acesso rápido CPU por instruções posteriores. Em outros casos, os resultados podem ser gravados para mais lento, mas mais barato e maior, memória principal. Alguns tipos de instruções manipular o contador do programa, em vez de produzir diretamente dados do resultado. Estes são geralmente chamados de "saltos" e facilitar comportamento como laçadas, a execução do programa condicional (através da utilização de um salto condicional), e funções de programas. Muitas instruções também alterar o estado de dígitos em um "bandeiras" registo. Estes sinalizadores podem ser usadas para influenciar a forma como um programa comporta, uma vez que eles geralmente indicam o resultado de várias operações. Por exemplo, um tipo de instrução "comparar" considera dois valores e define um número no registrador de flags de acordo com a qual é maior. Esta bandeira pode, em seguida, ser utilizado por uma instrução de salto mais tarde para determinar o fluxo do programa.

Após a execução da instrução e write-back dos dados resultantes, todo o processo é repetido, com a seguinte ciclo de instrução normalmente buscar o próximo-in-sequence instrução por causa do valor incrementado no contador de programa. Se a instrução era completado um salto, o contador de programa será modificado para conter o endereço da instrução que foi saltou para, e a execução do programa continua normalmente. Em CPUs mais complexa do que a descrita aqui, várias instruções podem ser buscadas, decodificado, e executado simultaneamente. Esta secção descreve o que é geralmente referido como o " RISC clássico pipeline ", que na verdade é bastante comum entre os CPUs simples usados em muitos dispositivos eletrônicos (muitas vezes chamado microcontrolador). Ele ignora em grande parte o importante papel do cache da CPU , e, portanto, a fase de acesso do gasoduto.

Concepção e implementação

O conceito básico de uma CPU é o seguinte:

Hardwired em um projeto de CPU é uma lista de operações básicas que podem ser executadas, chamado de conjunto de instruções. Tais operações podem incluir a adição ou subtração de dois números, comparando números, ou saltar para uma parte diferente de um programa. Cada uma destas operações básicas é representado por uma sequência particular de bits; esta sequência é chamada de opcode para essa operação particular. O envio de um código de operação particular, a um processador central fará com que a executar a operação representada por esse código de operação. Para executar uma instrução de um programa de computador, a CPU utiliza o código de operação para essa instrução, bem como os seus argumentos (por exemplo, os dois números para ser adicionado, no caso de uma operação de adição). A programa de computador é, portanto, uma sequência de instruções, com cada instrução incluindo um código de operação e os argumentos que de operação.

A operação matemática real para cada instrução é executada por uma sub-unidade do processador central conhecida como a unidade lógica aritmética ou ALU. Além de utilizar o seu ALU para executar operações, uma CPU também é responsável pela leitura da próxima instrução de memória, a leitura de dados especificados em argumentos de memória e escrita para a memória de resultados.

Em muitos projetos de CPU, um conjunto de instruções vai diferenciar claramente entre as operações que os dados de carga da memória, e aqueles que realizar operações matemáticas. Neste caso, os dados carregados a partir da memória é armazenada em registros, e uma operação matemática não tem argumentos, mas simplesmente executa as contas sobre os dados nos registos e escreve-o para um novo registo, cujo valor uma operação separada pode, em seguida, escrever para a memória.

Unidade de controle

A unidade do processador central de controle contém um circuito que usa sinais elétricos para dirigir todo o sistema de computador para executar instruções de programa armazenado. A unidade de comando não executa instruções de programas; ao invés, dirige outras partes do sistema para o fazer. A unidade de controle deve se comunicar tanto com a aritmética / unidade lógica e memória.

Intervalo inteiro

A forma como uma CPU representa números é uma escolha de design que afeta as formas mais básicas em que as funções do dispositivo. Alguns computadores digitais primeiros usou um modelo elétrico do comum decimal (base dez) sistema numérico para representar números internamente. Alguns outros computadores têm utilizado sistemas numerais mais exóticos como ternária (base três). Quase todos os processadores modernos representar números em binário forma, com cada dígito a ser representados por alguma quantidade física de dois valores, como uma "alta" ou "baixa" de tensão .

MOS 6502 microprocessador numa Dual In-Line Package, um projeto de 8 bits extremamente popular.

Relacionado a representação número é o tamanho ea precisão dos números que uma CPU pode representar. No caso de uma CPU de binário, um pouco refere-se a um lugar significativo nos números de uma CPU ocupa. O número de bits (ou lugares) numeral um CPU usa para representar números é muitas vezes chamado de " tamanho de palavra "," largura de bit "," largura caminho de dados ", ou" precisão inteiro "quando se lida com números inteiros estritamente (em oposição a ponto flutuante). Este número pode ser diferente entre arquitecturas, e muitas vezes dentro de diferentes partes do mesmo CPU. Por exemplo, uma 8 bits CPU lida com uma gama de números que podem ser representados por oito dígitos binários (cada dígito que tem dois valores possíveis), isto é, 2 8 ou 256 números discretos. Com efeito, o tamanho inteiro estabelece um limite de hardware no intervalo de inteiros do software executado pelo CPU pode utilizar.

Intervalo inteiro também pode afetar o número de localizações na memória a CPU pode localizar o endereço (). Por exemplo, se um processador binário usa 32 bits para representar um endereço de memória, e cada um representa um endereço de memória octeto (8 bits), a quantidade máxima de memória que CPU pode tratar é de 2 32 octetos, ou 4 GiB. Esta é uma ideia muito simples de CPU espaço de endereço, e muitos projetos usar métodos de endereçamento mais complexos como paginação para localizar mais memória do que a sua gama inteiro permitiria com um espaço de endereço plano.

Níveis mais elevados de gama inteiro exigem mais estruturas para lidar com os dígitos adicionais, e, portanto, mais complexidade, o tamanho, uso de energia, e despesas gerais. Não é incomum, por conseguinte, para ver de 4 ou 8 bits microcontroladores usados em aplicações modernas, apesar de CPUs com muito maior gama (tais como 16, 32, 64, até 128-bit) estão disponíveis. Os microcontroladores mais simples são geralmente mais baratos, consomem menos energia e, portanto, geram menos calor, todos os quais podem ser as principais considerações de design para dispositivos eletrônicos. No entanto, em aplicações mais sofisticadas, as vantagens oferecidas pela faixa adicional (na maioria das vezes o espaço de endereçamento adicional) são mais significativos e muitas vezes afetam as escolhas de design. Para obter algumas das vantagens oferecidas por ambos os comprimentos de bits mais baixas e mais altas, muitos processadores são concebidas com diferentes larguras de bits para diferentes partes do dispositivo. Por exemplo, o IBM System / 370 utilizada uma CPU que foi principalmente de 32 bits, mas é usado precisão de 128 bits dentro de seu unidades de ponto flutuante para facilitar uma maior precisão e alcance de números de ponto flutuante. Muitos projetos posteriores CPU usar largura semelhante pouco misto, especialmente quando o processador é destinado para uso de propósito geral, onde é necessário um equilíbrio razoável de inteiro e capacidade de ponto flutuante.

Taxa de clock

A frequência do relógio é a velocidade na qual um microprocessador executa as instruções. Cada computador contém um relógio interno que regula a taxa a que as instruções são executadas e sincroniza todos os vários componentes do computador. A CPU requer um número fixo de carrapatos relógio (ou ciclos de clock) para executar cada instrução. Quanto mais rápido o relógio, as instruções mais a CPU pode executar por segundo.

A maioria das CPUs, e de fato mais Os dispositivos lógicos sequenciais, são síncrona na natureza. Ou seja, eles são projetados e operam em suposições sobre um sinal de sincronização. Este sinal, conhecido como um sinal de relógio, geralmente toma a forma de um periódico onda quadrada. Ao calcular o tempo máximo que os sinais elétricos podem se mover em diversos ramos de muitos circuitos de uma CPU, os designers pode selecionar um adequado período do sinal de relógio.

Este prazo deve ser mais longo do que a quantidade de tempo que leva para um sinal para se mover, ou propagar, no pior cenário. Ao fixar o período de relógio para um valor bem acima do pior caso atraso de propagação, é possível projetar toda a CPU ea forma como ele se move dados em torno das "bordas" do sinal de relógio subindo e descendo. Isto tem a vantagem de simplificar a CPU significativamente, tanto do ponto de vista de desenho e um componente perspectiva de contagem. No entanto, também carrega a desvantagem de que toda a CPU deve esperar sobre os seus elementos mais lentas, mesmo que algumas porções da mesma são muito mais rápidos. Esta limitação foi em grande parte compensado por vários métodos para aumentar o paralelismo da CPU. (Ver abaixo)

No entanto, as melhorias arquitectónicas, isoladamente, não resolver todos os inconvenientes dos CPUs globalmente síncronos. Por exemplo, um sinal de relógio está sujeito aos atrasos de qualquer outro sinal eléctrico. Taxas de clock mais altas em CPUs cada vez mais complexas tornar mais difícil para manter o sinal de relógio em fase (sincronizado) em toda a unidade. Isso levou muitos CPUs modernas para exigir vários sinais de relógio idêntico ao ser fornecido para não atrasar um único sinal significativamente o suficiente para causar a CPU para avaria. Outra questão importante como taxas de clock é aumentar drasticamente a quantidade de calor que é dissipada pela CPU. O relógio em constante mutação faz com que muitos componentes para exibir independentemente de eles estão sendo usados nesse momento. Em geral, um componente que está a mudar consome mais energia do que um elemento de um estado estático. Portanto, como aumentos da taxa de relógio, o mesmo acontece com o consumo de energia, fazendo com que a CPU para exigir mais dissipação de calor sob a forma de Soluções de refrigeração da CPU.

Um método para lidar com a comutação de componentes desnecessários é chamada gating relógio, que envolve a desligar o sinal de relógio de componentes desnecessários (efetivamente desativá-los). No entanto, esta é muitas vezes considerado difícil de implementar e, portanto, não vê uso comum fora dos próprios projetos de baixa potência. Um projeto final CPU notável que usa relógio gating para reduzir os requisitos de energia do console de videogame é o da IBM Baseado em PowerPC Xbox 360. Ele utiliza extensa gating relógio em que ela é usada. Um outro método de endereçamento alguns dos problemas com um sinal de relógio global é a remoção do sinal de relógio completo. Vantagens ao remover o sinal de relógio mundial faz com que o processo de concepção consideravelmente mais complexo, em muitos aspectos, assíncrona (ou sem relógio) projeta transportar marcados no consumo de energia e dissipação de calor em comparação com projetos síncronos semelhantes. Embora um tanto incomum, todo CPUs assíncronas foram construídas sem a utilização de um sinal de relógio global. Dois exemplos notáveis são o ARM compatível AMULET eo MiniMIPS compatíveis MIPS R3000. Em vez de remover totalmente o sinal de relógio, alguns modelos de CPU permitem que certas partes do dispositivo a ser assíncrona, tais como a utilização de assíncrono ALUs em conjunto com pipelining superscalar para conseguir alguns ganhos de desempenho aritméticas. Embora não seja totalmente claro se totalmente projetos assíncronos pode executar em um nível comparável ou melhor do que os seus homólogos síncronos, é evidente que eles, pelo menos, destacar em operações matemáticas simples. Isto, combinado com as suas excelentes de consumo de energia e propriedades de dissipação de calor, que os torna muito adequados para computadores integrados.

Paralelismo

Modelo de uma CPU subscalar. Observe que leva quinze ciclos para completar três instruções.

A descrição da operação de uma CPU de base oferecidos na secção anterior descreve a forma mais simples que pode tomar uma CPU. Este tipo de CPU, geralmente referido como subscalar, opera em e executa uma instrução em um ou dois pedaços de dados de cada vez.

Este processo dá origem a uma ineficácia inerente CPUs subscalar. Uma vez que apenas uma instrução é executada em um momento, toda a CPU deve aguardar que a instrução seja concluída antes de prosseguir para a próxima instrução. Como resultado, a CPU subscalar fica "pendurado" na instruções que levam mais de um ciclo de relógio para concluir a execução. Mesmo a adição de um segundo unidade de execução (ver abaixo) não melhora o desempenho muito; em vez de um caminho a ser desligou, agora dois caminhos são desligou o telefone e o número de transistores não utilizados é aumentada. Este projeto, em que recursos de execução da CPU pode operar em apenas uma instrução por vez, só pode, eventualmente, atingir o desempenho escalar (uma instrução por clock). No entanto, o desempenho é quase sempre subscalar (menos do que uma instrução por ciclo).

As tentativas para conseguir um melhor desempenho e escalar resultaram em uma variedade de metodologias de concepção que causam a CPU para comportar menos de forma linear e, mais em paralelo. Ao referir-se ao paralelismo em CPUs, dois termos são geralmente usados para classificar essas técnicas de design. Nível de instrução paralelismo (ILP) procura aumentar a taxa na qual as instruções são executadas dentro de uma CPU (ou seja, para aumentar a utilização de recursos on-die execução), e nível rosca paralelismo (TLP) para fins de aumentar o número de threads (efetivamente programas individuais) que uma CPU pode executar simultaneamente. Cada metodologia difere tanto nas formas em que são implementadas, bem como a eficácia relativa eles oferecem em aumentar o desempenho da CPU para um aplicativo.

Nível de instrução paralelismo

Básico gasoduto de cinco estágios. Na melhor das hipóteses, esse gasoduto pode sustentar uma taxa de conclusão de uma instrução por ciclo.

Um dos métodos mais simples usados para realizar aumento de paralelismo é começar os primeiros passos de buscar instrução e decodificação antes da instrução termina a execução antes. Esta é a forma mais simples de uma técnica conhecida como pipelining instrução, e é utilizado em quase todos os processadores de uso geral modernas. Pipelining permite que mais de uma instrução a ser executada a qualquer momento por quebrar a via de execução em fases distintas. Esta separação pode ser comparado com uma linha de montagem, em que uma instrução seja feita mais completa em cada fase até que ele sai da tubagem de execução e é retirado.

Pipelining se, no entanto, prever a possibilidade de uma situação em que é necessário o resultado da operação anterior, para completar a operação seguinte; uma condição frequentemente denominado conflito de dependência de dados. Para lidar com isso, devem ser tomados cuidados adicionais para verificar esses tipos de condições e atrasar uma parte do oleoduto instrução, se isso ocorrer. Naturalmente, realizar isto requer circuitos adicionais, de modo que os processadores em pipeline são mais complexas do que os subscalar (muito embora não tão significativamente). Um processador em conduta, pode tornar-se quase escalar, inibida apenas por bancas de condutas (uma instrução de passar mais de um ciclo de relógio de uma fase).

Encanamento superscalar simples. Ao buscar e despachar duas instruções por vez, no máximo, duas instruções por ciclo pode ser concluída.

Uma nova melhoria na ideia de pipelining instrução levou ao desenvolvimento de um método que diminui o tempo de inactividade da CPU ainda mais os componentes. Projetos que se diz ser superscalar incluem um gasoduto instrução longa e várias unidades de execução idênticas. Em um pipeline superscalar, múltiplas instruções são lidos e passados para um despachante, que decide se deve ou não as instruções podem ser executadas em paralelo (simultaneamente). Se assim que eles são distribuídos às unidades de execução disponíveis, resultando na capacidade para várias instruções a serem executadas simultaneamente. Em geral, quanto mais instruções a CPU superescalar é capaz de enviar simultaneamente para unidades de execução de espera, as instruções mais será concluída em um determinado ciclo.

A maioria das dificuldades na concepção de uma arquitetura super da CPU encontra-se na criação de um expedidor eficaz. O distribuidor tem de ser capaz de rapidamente e correctamente determinar se as instruções podem ser executadas em paralelo, bem como a enviá-los de tal maneira como para manter um número de unidades de execução ocupadas quanto possível. Isto requer que o gasoduto instrução é preenchido o mais rápido possível e dá origem à necessidade em arquiteturas superescalares para quantidades significativas de cache da CPU . Ele também faz técnicas de perigo evitando como previsão de desvio, execução especulativa, e fora-de-ordem de execução crucial para manter altos níveis de desempenho. Ao tentar prever qual ramo (ou o caminho) uma instrução condicional terá, a CPU pode minimizar o número de vezes que todo o encanamento deve esperar até que uma instrução condicional for concluída. Execução especulativa fornece frequentemente modestos aumentos de desempenho com a execução porções de código que não pode ser necessária depois de uma operação condicional completa. Out-of-ordem de execução reorganiza um pouco a ordem em que as instruções são executadas para reduzir atrasos devido a dependências de dados. Também no caso de instruções de dados único múltipla - um caso em que uma grande quantidade de dados a partir do mesmo tipo tem que ser processado, os processadores modernos podem desactivar partes da tubagem de modo a que quando uma única instrução é executada muitas vezes, a CPU ignora a buscar e decodificar fases e, portanto, aumenta muito o desempenho em certas ocasiões, especialmente em motores de programa altamente monótonas, tais como software de criação de vídeo e processamento de fotos.

No caso em que uma parte da CPU é superescalar e parte não é, a parte que não é sujeito a uma penalidade de desempenho devido ao barracas de agendamento. A Intel P5 Pentium tinha dois ALUs superscalar que poderia aceitar uma instrução por cada relógio, mas seu FPU não podia aceitar uma instrução por relógio. Assim, o P5 foi inteiro superscalar, mas não de ponto flutuante superescalar. O sucessor de Intel para a arquitetura P5, P6, acrescentou capacidades superescalares às suas características de ponto flutuante e, portanto, proporcionou um aumento significativo no desempenho de instruções de ponto flutuante.

Ambos pipelining simples e design superescalar aumentar ILP de uma CPU, permitindo que um único processador para concluir a execução de instruções em taxas superando uma instrução por ciclo (IPC). A maioria dos projetos modernos de CPU são pelo menos um pouco superscalar, e quase todas as CPUs de finalidades gerais projetados na última década são superescalares. Nos anos posteriores, alguns da ênfase na concepção de computadores de alto ILP foi movido fora de hardware da CPU e em sua interface de software, ou ISA. A estratégia da palavra de instrução muito longo (PIML) faz com que algum PLI a tornar-se directamente implicada pelo software, reduzindo a quantidade de trabalho a CPU deve executar para impulsionar PLI e reduzindo assim a complexidade do desenho.

-Nível de thread paralelismo

Outra estratégia de atingir o desempenho é executar vários programas ou threads em paralelo. Esta área de pesquisa é conhecida como computação paralela. Em taxonomia de Flynn, esta estratégia é conhecida como múltiplas instruções vários dados ou MIMD.

Uma tecnologia utilizada para esta finalidade foi o multiprocessamento (MP). O sabor inicial desta tecnologia é conhecida como multiprocessamento simétrico (SMP), onde um pequeno número de CPUs compartilham uma visão coerente do seu sistema de memória. Neste esquema, cada CPU tem hardware adicional para manter uma visão constantemente up-to-date de memória. Ao evitar vistas obsoletos de memória, os processadores podem cooperar no mesmo programa e os programas podem migrar de uma CPU para outra. Para aumentar o número de CPUs que colaboraram para além de um punhado, esquemas como o acesso não-uniforme de memória (NUMA) e protocolos de coerência baseados em diretório foram introduzidas na década de 1990. Sistemas SMP estão limitadas a um pequeno número de CPUs enquanto sistemas NUMA foram construídos com milhares de processadores. Inicialmente, multiprocessamento foi construído utilizando CPUs discreta múltipla e placas para implementar a interconexão entre os processadores. Quando os processadores e sua interconexão são todas implementadas em um único chip de silício, a tecnologia é conhecida como um processador multi-core.

Mais tarde foi reconhecido que o paralelismo mais fina de grãos com existiu um único programa. Um único programa pode ter vários tópicos (ou funções) que podem ser executadas separadamente ou em paralelo. Alguns dos primeiros exemplos dessa tecnologia implementada de entrada / saída de processamento, tais como acesso direto à memória como um segmento separado a partir do segmento de computação. Uma abordagem mais geral para esta tecnologia foi introduzida na década de 1970 quando os sistemas foram projetados para executar várias threads de computação em paralelo. Esta tecnologia é conhecida como multi-tarefa (MT). Esta abordagem é considerada mais de multiprocessamento, uma vez que apenas um pequeno número de componentes dentro de um processador de baixo custo é replicado para apoiar MT em oposição a todo o processador central no caso de MP. Em MT, as unidades de execução eo sistema de memória, incluindo os caches são compartilhados entre vários segmentos. A desvantagem de MT é que o suporte de hardware para multithreading é mais visível ao software do que o de MP e, portanto, software supervisor como sistemas operacionais têm de passar por grandes mudanças para apoiar MT. Um tipo de MT que foi implementada é conhecido como multithreading bloco, onde um segmento é executado até que seja parado à espera de dados para retornar de memória externa. Neste esquema, o CPU, então, mudar rapidamente para outra discussão que está pronto para ser executado, o interruptor muitas vezes feito em um ciclo de clock da CPU, como a tecnologia UltraSPARC. Outro tipo de MT é conhecido como multithreading simultânea, onde as instruções de múltiplas threads são executados em paralelo dentro de um ciclo de clock da CPU.

Durante várias décadas desde 1970 até início de 2000, o foco na criação de processadores de alto desempenho de propósito geral foi em grande parte na obtenção de alta ILP através de tecnologias como a canalização, caches, execução superscalar, fora-de-ordem de execução, etc. Essa tendência culminou em grande , CPUs sedentos de poder, como o IntelPentium 4. No princípio de 2000, os projetistas da CPU foram frustradas de alcançar maior desempenho a partir de técnicas de PLI devido à crescente disparidade entre frequências de funcionamento CPU e freqüências de operação da memória principal, bem como escalada dissipação de energia da CPU que é devido às técnicas de PLI mais esotéricos.

Designers de CPU então emprestado idéias de mercados de computação comerciais, tais comoprocessamento de transações, onde o desempenho agregado de vários programas, também conhecida comocomputação rendimento, era mais importante do que o desempenho de um único segmento ou programa.

Esta inversão da ênfase é evidenciada pela proliferação de núcleo duplo e múltiplo CMP (em nível de chip multiprocessamento) projeta e nomeadamente, designs mais recentes da Intel que se assemelha a menos superescalar arquitetura P6. Projetos atrasados ​​em várias famílias de processadores exposição CMP, incluindo o x86-64 Opteron e Athlon 64 X2, o SPARC UltraSPARC T1, IBM POWER4 e POWER5, bem como vários Video Game Console CPUs como o desenho PowerPC de três núcleos do Xbox 360, eo 7-core da PS3 microprocessador Cell.

O paralelismo de dados

Um paradigma menos comum, mas cada vez mais importante de CPUs (e de fato, a computação em geral) lida com paralelismo de dados. Os processadores discutidos anteriormente são todos referidos como algum tipo de dispositivo de escalar. Como o nome indica, processadores vetoriais lidar com várias partes de dados no contexto de uma instrução. Isto contrasta com os processadores escalares, que lidam com um pedaço de dados para cada instrução. Uso taxonomia de Flynn, estes dois regimes de lidar com dados são geralmente referidos como SIMD (Single Instruction, vários dados) e SISD (instrução única, dados individuais), respectivamente. A grande utilidade na criação de CPUs que lidam com vectores de dados encontra-se na optimização tarefas que tendem a exigir a mesma operação (por exemplo, um montante ou um produto de pontos) para ser realizado em um conjunto grande de dados. Alguns exemplos clássicos destes tipos de tarefas são aplicações multimídia (imagens, vídeo e som), bem como muitos tipos de tarefas científicas e de engenharia. Considerando que uma CPU escalar deve completar todo o processo de busca, decodificação e execução de cada instrução e valor em um conjunto de dados, um CPU vector pode realizar uma única operação em um relativamente grande conjunto de dados com uma instrução. Claro, isso só é possível quando a aplicação tende a exigir muitos passos que se aplicam uma operação para um grande conjunto de dados.

A maioria das CPUs vetor início, como o Cray-1, foram associadas quase que exclusivamente com ciência e investigação de criptografia aplicações. No entanto, como multimídia deslocou pela maior parte para a mídia digital, a necessidade de alguma forma de SIMD em CPUs de propósito geral tornou-se significativo. Pouco tempo após a inclusão de unidades de execução de ponto flutuante começaram a se tornar comuns em processadores de uso geral, as especificações para e implementações de unidades de execução SIMD também começaram a aparecer para CPUs de propósito geral. Algumas dessas especificações SIMD adiantados como da HP eXtensions Aceleração Multimédia (MAX) e da Intel MMX estiveram inteiro somente. Isto provou ser um impedimento significativo para alguns desenvolvedores de software, uma vez que muitas das aplicações que se beneficiam de SIMD lidam principalmente com números de ponto flutuante. Progressivamente, esses primeiros projetos foram refinados e refeito em alguns dos SIMD, especificações modernas comuns, que normalmente estão associados a um ISA. Alguns exemplos notáveis ​​são modernos da Intel SSE ea relacionada com PowerPC AltiVec (também conhecido como VMX).

Atuação

O desempenho ou velocidade de um processador depende da velocidade do clock (geralmente dada em múltiplos de hertz) e as instruções por clock (IPC), que, juntos, são os fatores para as instruções por segundo (IPS) que a CPU pode executar. Muitos relataram valores IPS representaram taxas de "pico" de execução de sequências de instruções artificiais com poucos ramos, enquanto que as cargas de trabalho realistas consistem em uma mistura de instruções e aplicações, alguns dos quais levam mais tempo para executar do que outros. O desempenho da hierarquia de memória também afeta bastante o desempenho do processador, uma questão mal considerada nos cálculos MIPS. Devido a estes problemas, vários testes padronizados, muitas vezes chamado de "benchmarks" para este fim-como SPECint - foram desenvolvidos para tentar medir o desempenho real efetiva em aplicações mais utilizadas.

Desempenho de processamento dos computadores é aumentada pela utilização de processadores multi-core, que essencialmente é tapar dois ou mais processadores individuais (chamados núcleos nesse sentido) em um circuito integrado . Idealmente, um processador dual core seria quase duas vezes mais potente como um processador de núcleo único. Na prática, no entanto, o ganho de desempenho é muito menor, apenas cerca de 50%, devido a algoritmos de software imperfeitos e implementação. O aumento do número de núcleos em um processador (isto é, de núcleo duplo, quatro núcleos, etc.) aumenta a carga de trabalho que pode ser manuseado. Isto significa que o processador pode agora lidar com inúmeros eventos assíncronos, interrupções, etc., que podem tomar um pedágio sobre a CPU (Central Processing Unit) quando oprimido. Estes núcleos podem ser pensado como diferentes andares em uma planta de processamento, com a manipulação de cada andar uma tarefa diferente. Às vezes, estes núcleos irão lidar com as mesmas tarefas que os núcleos adjacentes a eles, se um único núcleo não é suficiente para lidar com a informação.

Retirado de " http://en.wikipedia.org/w/index.php?title=Central_processing_unit&oldid=545392486 "