Os legados de projetos anteriores, como Babbage difference engine e o mainframe de cartões perfurados sistemas de 1970, têm um impacto significativo sobre os atuais sistemas de computador. No meu primeiro artigo nesta série histórica, história do computador e computadores modernos para sysadmins, discuti vários precursores do computador moderno e listei características que definem o que chamamos de computador hoje.,neste artigo, discuto a unidade central de processamento (CPU), incluindo os seus componentes e funcionalidade. Muitos dos tópicos referem-se de volta ao primeiro artigo, por isso certifique-se de lê-lo se você ainda não o fez.
a unidade central de processamento (CPU)
a CPU nos computadores modernos é a personificação da “moinho” na máquina de diferença de Babbage. O termo unidade central de processamento originou-se de volta nas brumas do tempo do computador quando um único gabinete massivo continha os circuitos necessários para interpretar as instruções do programa de nível da máquina e realizar operações sobre os dados fornecidos., A unidade central de processamento também completou todo o processamento para quaisquer dispositivos periféricos ligados. Periféricos incluíam impressoras, leitores de cartões e dispositivos de armazenamento precoce, como discos de bateria e disco. Dispositivos periféricos modernos têm uma quantidade significativa de energia de processamento em si e off-load algumas tarefas de processamento a partir da CPU. Isto liberta a CPU das tarefas de entrada/saída para que a sua potência seja aplicada à tarefa primária em mãos.
os primeiros computadores tinham apenas uma CPU e só podiam executar uma tarefa de cada vez.,
Nós mantemos o termo CPU hoje, mas agora ele se refere ao pacote de processador em uma placa mãe típica. A figura 1 apresenta um pacote de Processador Intel padrão.
Figura 1: Um processador Intel Core i5 pacote (Cj) McCranie via Wikimedia Commons, CC BY-SA 4.0).
realmente não há nada para ver aqui a não ser o próprio pacote do processador. O pacote do processador é um chip que contém o(s) processador (s) selado (s) dentro de um recipiente de metal e montado em uma placa de circuito impresso pequeno (PC)., O pacote é simplesmente deixado no lugar no soquete de CPU em uma placa-mãe e seguro com um arranjo de alavanca de bloqueio. Um refrigerador de CPU liga-se ao pacote do processador. Existem vários sockets físicos diferentes com números específicos de contatos, então obter o pacote correto para caber o socket da placa-mãe é essencial se você construir seus próprios computadores.
como a CPU funciona
vamos olhar para a CPU com mais detalhes. A figura 2 é um diagrama conceitual de uma CPU hipotética para que você possa visualizar os componentes mais facilmente., A memória RAM e o relógio do sistema são sombreados porque não fazem parte da CPU e são mostrados apenas para clareza. Além disso, não existem conexões entre o relógio da CPU e a unidade de controle para os Componentes da CPU. Basta dizer que os sinais do relógio e da unidade de controle são parte integrante de todos os outros componentes.
Figura 2: Um modelo simplificado do diagrama conceitual de um típico CPU.
Este design não parece particularmente simples, mas a realidade é ainda mais complicada., Este número é suficiente para os nossos propósitos sem ser excessivamente complexo.
unidade lógica aritmética
a unidade lógica aritmética (ALU) executa as funções aritméticas e lógicas que são o trabalho do computador. Os registros A E B possuem os dados de entrada, e o acumulador recebe o resultado da operação. O registo de instruções contém as instruções que a ALU deve executar.
Por exemplo, ao adicionar dois números, um é colocado no registo A e o outro no registo B. A ALU realiza a adição e coloca o resultado no Acumulador., Se a operação for lógica, os dados a serem comparados são colocados nos registros de entrada. O resultado da comparação, um 1 ou 0, é colocado no Acumulador. Se esta é uma operação lógica ou aritmética, o conteúdo do acumulador é então colocado no local de cache reservado pelo programa para o resultado.
Existe outro tipo de operação realizada pela ALU. O resultado é um endereço na memória, e é usado para calcular um novo local na memória para começar a carregar instruções. O resultado é colocado no registro de ponteiro de instrução.,
registrador de instruções e ponteiro
o ponteiro de instruções especifica a localização na memória contendo a instrução seguinte a ser executada pela CPU. Quando a CPU completa a execução da instrução atual, a instrução seguinte é carregada no registro de instruções a partir do local da memória apontado pelo ponteiro da instrução.
Após a instrução ser carregada no registo de instruções, o ponteiro do registo de instruções é aumentado por um endereço de instrução. O incremento permite que ele esteja pronto para mover a próxima instrução para o registro de instruções.,
Cache
a CPU nunca acede directamente à RAM. Os CPUs modernos têm uma ou mais camadas de cache. A capacidade da CPU de realizar cálculos é muito mais rápida do que a capacidade da RAM de alimentar os dados para a CPU. As razões para isso estão além do âmbito deste artigo, mas eu vou explorá-lo ainda mais no próximo artigo.
Cache memory is faster than the system RAM, and it is closer to the CPU because it is on the processor chip. O cache fornece armazenamento de dados e instruções para evitar que a CPU espere que os dados sejam recuperados da RAM., Quando a CPU precisa de dados-e as instruções do programa também são consideradas dados-o cache determina se os dados já estão na residência e fornece-os à CPU.
Se os dados solicitados não estão no cache, ele é recuperado da RAM e usa algoritmos preditivos para mover mais dados da RAM para o cache. O controlador de cache analisa os dados solicitados e tenta prever quais dados adicionais serão necessários a partir da RAM. Carrega os dados antecipados para o cache., Mantendo alguns dados mais próximos da CPU em um cache que é mais rápido do que a RAM, A CPU pode permanecer ocupada e não desperdiçar ciclos à espera de dados.
nossa CPU simples tem três níveis de cache. Os níveis 2 e 3 são projetados para prever quais dados e instruções do programa serão necessários em seguida, mover esses dados da RAM, e movê-lo cada vez mais perto da CPU para estar pronto quando necessário. Estes tamanhos de cache tipicamente variam de 1 MB a 32 MB, dependendo da velocidade e uso pretendido do processador.
a cache de Nível 1 está mais próxima da CPU. Na nossa CPU, existem dois tipos de cache L1., L1i é o cache de instruções, e L1d é o cache de dados. Tamanhos de cache de Nível 1 tipicamente variam de 64 KB a 512 KB.
unidade de gestão da memória
a unidade de gestão da memória (MMU) gere o fluxo de dados entre a memória principal (RAM) e a CPU. Ele também fornece proteção de memória necessária em ambientes multitarefas e conversão entre endereços de memória virtual e endereços físicos.
relógio e unidade de controlo da CPU
todos os Componentes da CPU devem ser sincronizados para funcionarem em conjunto sem problemas., A unidade de controle executa esta função a uma taxa determinada pela velocidade do relógio e é responsável por dirigir as operações das outras unidades usando sinais de tempo que se estendem por toda a CPU.
memória de acesso aleatório (RAM)
embora a RAM, ou armazenamento principal, é mostrado neste diagrama e no próximo, não é verdadeiramente uma parte da CPU. Sua função é armazenar programas e dados para que eles estejam prontos para uso quando a CPU precisa deles.
How it works
CPUs work on a cycle that is managed by the control unit and synchronized by the CPU clock., Este ciclo é chamado de ciclo de instrução de CPU, e consiste de uma série de componentes fetch/decode/execute. A instrução, que pode conter dados estáticos ou ponteiros para dados variáveis, é obtida e colocada no registro de instruções. A instrução é decodificada,e quaisquer dados são colocados nos registros de dados A E B. A instrução é executada usando os registros A E B, com o resultado colocado no Acumulador. A CPU então aumenta o valor do ponteiro de instrução pelo comprimento do anterior e começa novamente.
O Ciclo Básico de instrução de CPU se parece com este.,
Figura 3: O CPU ciclo de instrução.
a necessidade de velocidade
embora a CPU básica funcione bem, CPUs que rodam neste ciclo simples podem ser usadas ainda mais eficientemente. Existem várias estratégias para aumentar o desempenho da CPU, e nós olhamos para duas delas aqui.
sobrecarregar o ciclo de instrução
um problema que os primeiros designers de CPU encontraram foi desperdiçado tempo nos vários componentes de CPU., Uma das primeiras estratégias para melhorar o desempenho da CPU foi sobrepor as partes do ciclo de instrução da CPU para utilizar as várias partes da CPU mais plenamente.
por exemplo, quando a instrução atual foi decodificada, a próxima é obtida e colocada no registro de instruções. Assim que isso ocorreu, o ponteiro de instrução é atualizado com o endereço de memória da próxima instrução. A utilização de ciclos de instrução sobrepostos é ilustrada na Figura 4.,
Figura 4: A CPU ciclo de instrução com sobreposição.
Este design parece agradável e suave, mas fatores como a espera por I/O podem perturbar o fluxo. Não ter os dados ou instruções apropriados no cache requer que o MMU localize os corretos e os mova para o CPU, e isso pode levar algum tempo. Algumas instruções também levam mais ciclos de CPU para completar do que outras, interferindo com a sobreposição suave.no entanto, esta é uma estratégia poderosa para melhorar o desempenho da CPU.,
Hyperthreading
outra estratégia para melhorar o desempenho da CPU é hyperthreading. Hyperthreading faz um único processador funcionar como dois CPUs, fornecendo dois fluxos de dados e instruções. A adição de um segundo ponteiro de instrução e registro de instruções à nossa hipotética CPU, como mostrado na Figura 5, faz com que ela funcione como duas CPUs, executando duas sequências de instruções separadas durante cada ciclo de instrução. Além disso, quando um fluxo de execução pára enquanto espera por dados—novamente, instruções são também dados—o segundo fluxo de execução continua o processamento., Cada núcleo que implementa hyperthreading é o equivalente a dois CPUs em sua capacidade de processar instruções.
Figura 5: diagrama conceitual de um CPU com o hyperthreading.
lembre-se que este é um diagrama muito simplificado e explicação da nossa CPU hipotética. A realidade é muito mais complexa.
mais terminologia
eu encontrei uma série de diferentes terminologia CPU., Para definir a terminologia um pouco mais explicitamente, vamos olhar para a CPU em si usando o comando lscpu
.
O processador Intel mostrado acima é um pacote que se conecta em um único socket na placa-mãe. O pacote do processador contém seis núcleos. Cada núcleo é capaz de hyperthreading, então cada um pode executar dois threads simultâneos para um total de 12 CPUs.
minhas definições:
- Core – a core é a menor unidade física de hardware capaz de executar a tarefa de processamento. Contém um ALU e um ou dois conjuntos de registos de suporte., O segundo conjunto de registros e circuitos de suporte permite hyperthreading. Um ou mais núcleos podem ser combinados em um único pacote físico.CPU-uma unidade lógica de hardware capaz de processar um único fio de execução. O uso moderno do termo unidade central de Processamento refere-se ao número total de threads que um pacote de processador é capaz de executar simultaneamente. Um processador de núcleo único que não suporta hyperthreading é o equivalente a uma única CPU. Neste caso, CPU e núcleo são sinônimos., Um processador de hyperthreading com um único núcleo é o equivalente funcional de dois CPUs. Um processador de hyperthreading com oito núcleos é o equivalente funcional de 16 CPUs.embalagem-o componente físico que contém um ou mais tarolos, tal como o indicado na Figura 1.Processador-1) um dispositivo que processa instruções de programa para manipular dados. 2) frequentemente usado como sinônimo de pacote.,
- Socket-algumas vezes usado como outro sinônimo para pacote, mas mais precisamente refere-se ao socket físico na placa-mãe em que o pacote de processador é inserido.
os Termos socket, processador e pacote são muitas vezes usados indistintamente, o que pode causar alguma confusão. Como vemos a partir do id
resultados de comando acima, Intel nos fornece sua própria terminologia, e eu considero que a fonte autoritária., Na realidade, todos nós usamos esses termos de várias maneiras, mas desde que nos entendamos a qualquer momento, isso é o que realmente importa.
Notice that the processor above has two Level 1 caches of 512 KiB each, one for instructions (L1i) and one for data (L1d). O cache de Nível 1 é o mais próximo da CPU, e acelera as coisas para ter instruções e dados separados neste ponto. Os bigodes de Nível 2 e Nível 3 são maiores, mas as instruções e os dados coexistem em cada um.o que significa tudo isto?boa pergunta., Nos primeiros dias dos mainframes, cada computador tinha apenas uma CPU e era incapaz de executar mais de um programa simultaneamente. O mainframe pode executar folha de pagamentos, depois Contabilidade de inventário, depois facturação de clientes, e assim por diante, mas apenas uma aplicação poderia funcionar de cada vez. Cada programa tinha que terminar antes que o operador do sistema pudesse iniciar o próximo.algumas tentativas iniciais de executar vários programas ao mesmo tempo tiveram uma abordagem simples e foram destinadas a uma melhor utilização de uma única CPU., Por exemplo, o programa 1 e o programa 2 foram carregados, e o programa 1 foi executado até que ele foi bloqueado à espera que o I/O ocorra. Nessa altura, o programa 2 correu até ser bloqueado. Esta abordagem foi chamada de multi-processamento e ajudou a utilizar plenamente o tempo de computador valioso.
tentativas iniciais de multitarefas todas envolveram mudar o contexto de execução de uma única CPU muito rapidamente entre os fluxos de execução de várias tarefas. Esta prática não é verdadeira multitarefa como a entendemos porque, na realidade, apenas um único fio de execução é processado de cada vez. É mais corretamente chamado de time-sharing.,computadores modernos, desde relógios inteligentes e tablets até supercomputadores, todos suportam multitarefas verdadeiras com múltiplos CPUs. Vários CPUs permitem que os computadores executem muitas tarefas simultaneamente. Cada CPU executa as suas próprias funções ao mesmo tempo que todas as outras CPUs. Um processador de oito núcleos com hyperthreading (ou seja, 16 CPUs) pode executar 16 tarefas simultaneamente.
Pensamentos finais
olhamos para uma CPU conceitualizada e simplificada para aprender um pouco sobre estruturas. Neste artigo, mal passei a superfície da funcionalidade do processador., Você pode aprender mais usando os links incorporados para os tópicos que exploramos.
lembre-se que os diagramas e Descrições neste artigo são puramente conceituais e não representam nenhuma CPU real.
na próxima parte desta série, eu vou olhar para RAM e unidades de disco como diferentes tipos de armazenamento e por que cada um é necessário para os computadores modernos.