ARTIGO IV – PRINCIPAIS PARTES DA CPU Principais partes da CPU: Nos primeiros computadores as partes da CPU eram construídas separadamente, ou seja, um equipamento fazia o papel de unidade lógica e aritmética e outro fazia o papel de unidade de controle. A partir da miniaturização dos processadores estas partes passaram a ser construídas juntas e com os microprocessadores as unidades lógica e aritmética e de controle passaram a ser construídas em chips de silício que medem poucos centímetros. 1. ULA (unidade lógica e aritmética, UAL – unidade aritmética e lógica ou ainda ALU – arthmetic logic unit): É principal parte da CPU, porque é quem realmente processa. A ULA realiza as operações lógicas e aritméticas com os dados. Para executar as instruções é conveniente lembrar que há micro instruções gravadas diretamente na ULA (informam como fazer), estes comandos gravados em hardware é chamado de firmware. Normalmente não é necessário conhecimento profundo sobre as unidades internas do processador, porém, vamos tentar compreender algo mais do que o básico. 1.1. Portas lógicas: Quando a corrente passa pelos transistores estes podem ser programados para serem ligados ou desligados e também podem ser programados para controlar a atividade de outros transistores, esta capacidade de controlar a atividade dos outros transistores é chamada de porta. As portas podem ser encadeadas para produzir cálculos simples ou complexos, com diferentes combinações de portas o processador consegue efetuar as operações matemáticas. As portas podem ser: 1.1.1. Porta NÃO lógica: A porta NÃO lógica é formada por apenas um transistor e produz como saída sempre o oposto da entrada do transistor anterior. Entrada Saída 1 0 0 1 1.1.2. Porta OU lógica: A porta OU lógica utiliza a comparação de dois transistores e produz 1 se o primeiro ou o segundo transistores forem 1. 1ª Entrada 2ª Entrada Saída 0 0 0 0 1 1 1 0 1 1 1 1 1.1.3. Porta E lógica: A porta E lógica utiliza a comparação de dois transistores e produz 1 se o primeiro e o segundo transistores forem 1. 1ª Entrada 2ª Entrada Saída 0 0 0 0 1 0 1 0 0 1 1 1 1.1.4. Porta XOR lógica (OU EXCLUSIVO): A porta XOR lógica utiliza a comparação de dois transistores e produz 1 se o primeiro e o segundo transistores forem diferentes. 1ª Entrada 2ª Entrada Saída 0 0 0 0 1 1 1 0 1 1 1 0 1.2. Operações aritméticas: Por meio da combinação das diferentes portas o computador é capaz de realizar as quatro operações básicas: soma, subtração, multiplicação e adição (em verdade só existe soma, porque a subtração é soma de número negativo, a multiplicação é o resultado de somas repetidas e a divisão é a soma repetida de números negativos). As operações de soma de dois números binários, por exemplo, podem ser efetuadas por meio da combinação de uma porta E e uma porta XOR. Para somar números mais complexos é necessário combinar diversas portas. 1.3. Operações lógicas e operadores relacionais: As operações lógicas que a ULA pode realizar são, na verdade, comparações. Comparar números, letras, cores pode ser essencial para a realização das tarefas, pois o computador poderá executar ações com base nos resultados das combinações realizadas. Os programadores utilizam operadores relacionais para representar as combinações. Apesar de as operações lógicas poderem ser resumidas em apenas três (igual, menor e maior), vamos também falar das combinações entre elas e mostrar os respectivos operadores relacionais (=, < e >): 1.3.1.Condição de igualdade (=): Compara dois valores para determinar se há igualdade entre eles. 1.3.2. Condição menor que (<): Compara dois valores para determinar se o primeiro é menor que o segundo. 1.3.3. Condição maior que (>): Compara dois valores para determinar se o primeiro é maior que o segundo. 1.3.4. Condição não é igual a (<>): É a combinação entre a condição de menor que e a de maior que. Esta condição compara se um valor é maior ou menor que outro, ou seja, se o primeiro é diferente do segundo. Sabendo que o primeiro é maior ou menor que o segundo saberá que se não é igual ao primeiro. 1.3.5. Condição de menor ou igual a (<=): Também é uma combinação de duas condições e compara se o primeiro é menor ou igual ao segundo; 1.3.6. Condição de maior ou igual a (>=):Também é uma combinação de duas condições e compara se o primeiro é maior ou igual ao segundo. 2. UC (Unidade de controle ou control unit): Coordena os outros componentes internos da CPU para a execução de instruções armazenadas em um programa (buscadas na memória principal). A unidade de controle não processa, ela apenas coordena as partes do processador para que o processamento ocorra da forma mais apropriada, verificando a ordem dos dados e a sincronia entre as outras partes. A UC é responsável por determinar quais etapas do processamento deverão ser executadas em determinado momento. 3. Registradores: Tanto a ULA como a UC (o processador como um todo) necessitam de locais de armazenamento temporário de dados. Os registradores armazenam instruções ou dados enquanto não estão sendo processados. São capazes de fornecer os dados ou instruções para a UC ou ULA em velocidades altíssimas porque trabalham na mesma freqüência do processador. Os registradores fazem, então, o papel de apoio às outras partes do processador. Pode-se fazer uma analogia às caixas registrados que guardam os valores que estão sendo subtraídos ou somados pelo operado de caixa. Muito cuidado, pois, apesar de os registradores serem áreas de armazenamento eles não fazem parte da memória principal, fazem parte da própria CPU. Guardam os dados que estão diretamente relacionados com a operação em execução. Já a memória principal armazena os dados que serão processados em seguida. Os registradores, dentro de um escalonamento de memórias, seria a memória que possui a maior velocidade de transferência, ou seja, possui o menor tempo de resposta, porém, também é a mais cara e por isso está presente sempre em pouca quantidade. Os registradores armazenam dados em caráter temporário e são voláteis, ou seja, só armazenam as informações enquanto à energia. 4 Clock (clock de sistema ou freqüência): Dispositivo gerador de pulsos cuja duração é chamada de ciclo de máquina e efetua o sincronismo das fases do processamento. Podemos dizer que o computador tem um relógio interno (não confunda com o relógio que armazena a data e hora) que determina o ritmo de trabalho do computador. Este dispositivo é um pequeno cristal que vibra milhões ou até bilhões de vezes por segundo e assim define os ciclos de trabalho da CPU. A quantidade de vezes em que este pulso se repete em um segundo define a unidade de medida do clock, denominada de freqüência. A unidade de medida usual para a freqüência é o Hertz (Hz), que significa um ciclo por segundo. Normalmente, utiliza-se o clock como elemento auxiliar para determinar a velocidade de uma CPU. No entanto, o clock não é a melhor forma de se aferir o desempenho ou velocidade de um microcomputador em relação a outros de arquitetura diferente, já que é uma medida de freqüência de trabalho e não de velocidade propriamente dita. Cada arquitetura diferente de microprocessador poderá permitir a manipulação de quantidade de dados diferentes a cada ciclo de clock, além do mais, é possível que num mesmo ciclo alguns processadores possam executar mais de uma instrução de máquina (processadores com arquitetura superescalar). Os processadores possuem dois clocks ou duas freqüências, uma medida internamente e a outra medida externamente. 4.1. Clock externo (FSB Front Side Bus) – barramento local (de dados): O clock externo determina o ritmo em que o processador se comunica com a memória principal. Já foi visto que o clock externo tem que trabalhar na mesma freqüência da memória principal. Atualmente alguns processadores já chegaram à freqüência externa de 1066 MHz ou 1,066 GHz de clock externo (Pentium EE), porém, cabe ressaltar que a velocidade real é menor. O que acontece, na Intel, é que eles utilizam uma técnica chamada QDR ou Quad Data Rate (taxa de transferência quadruplicada). Sendo assim, um processador Pentium 4 HT com clock externo declarado pelo fabricante como sendo de 800 MHz é na verdade de 200 MHz só que consegue transferir até quatro palavras a cada ciclo o que faz com tenha um desempenho quatro vezes superior aos 200 MHz reais, por isso é oferecido com a taxa de 800 MHz. A AMD também faz seus truques para que o clock externo pareça maior do que realmente é. A AMD utiliza a técnica chamada DDR ou Double Data Rate (taxa de transferência dobrada), sendo assim o processador AMD Athlon 64 FX com 400MHz de clock externo declarado pelo fabricante em verdade trabalha com 200 MHz, mas transfere o dobro de dados a cada pulso de clock e por isso é vendido como se fosse de 400 MHz. 4.2. Clock interno: O clock interno mede a freqüência do processador, ou seja, é capaz de determinar quantas instruções de máquina o computador será capaz de realizar a cada segundo. Em processadores de mesma arquitetura e clocks internos diferentes, logicamente, o de clock maior poderá efetuar mais instruções a cada segundo e por isso poderá ser considerado mais rápido. Porém, como já afirmado não é correto comparar dois processadores de arquiteturas diferentes utilizando apenas o clock interno. Atualmente (maio/2006) os processadores já possuem clocks internos na ordem de 3,8 GHz (3,8 bilhões de ciclos por segundo) e logo estarão ultrapassando a barreira dos 4 GHz. 4.2.1. Clock interno x Clock externo: Talvez você já esteja pensando: “Mas você não acabou de dizer que o processador terá que se comunicar com a memória na mesma velocidade dela?” Em verdade, o processador até pode ser mais lento que a memória (a memória será acessada no ritmo do processador – trabalhará mais devagar), o que não pode é aconselhável é o contrário. Mas, então como o clock externo é de “800 MHz” e o clock interno já está chegando a 4 GHz? O processador não está com clock maior que a memória? Meu amigo concurseiro, você está coberto de razão... O processador até pode trabalhar internamente a 4 GHz, porém, para se comunicar com a memória terá que ir “mais devagar” e falar com ela na velocidade que ela entende, por exemplo, 800 MHz. E como faz isso?! Como o processador fica mais devagar? É aí que entra uma outra “gambiarrazinha” do pessoal da Intel: O “Multiplicador do clock interno. 4.2.2. Multiplicador do clock interno: Até a chegada dos processadores 80486 da Intel os processadores tinham clock interno real igual ao clock externo, por isso não havia problema algum. A tecnologia da época permitia que as placas-mães suportassem freqüências até superiores à do clock interno. Porém, com a chegada dos 80486DX2 o clock interno passou a ser construído com freqüência superior à freqüência do barramento de dados e foi necessária a criação do “multiplicador do clock”. O processador continuou a ser produzido com clocks baixos (para conversar com a memória), mas, internamente poderia trabalhar em ritmo alto (clock interno com fator de multiplicação). Veja só: Aquele processador Pentium 4 HT com clock real de 200 MHz (com quatro palavras a cada pulso de clock que faz parecer 800 MHz) tem internamente clock de 3,8 GHz o que faz você concluir que utiliza um fator de multiplicação de 19 x (200 MHz de clock real x 19 = 3.800 MHz = 3,8 GHz clock interno). O fator de multiplicação do processador deverá ser definido na hora de configuração do processador na placa-mãe. 4.2.3. Wait states ou ciclos de espera: Muitas vezes o processador tem que aguardar a memória ou outros dispositivos mais lentos para receber dados ou instruções, então, o processador poderá ficar alguns ciclos à espera dos outros dispositivos. Este tempo que o processador não recebe informações ou instruções é conhecido pelo nome de estados de espera (wait states) e é um tempo inútil para o processamento de dados. 4.2.4. Formas de compensar a diferença entre clock interno e clock externo (evitar wait states): Para minimizar tão grande diferença entre o clock interno e o clock externo os fabricantes têm procurado técnicas que reduzam o tempo de espera do processador ou aumentem a capacidade de acesso à memória. Atualmente os processadores utilizam as técnicas de transferência dupla ou quádrupla a cada ciclo de clock. Além disso, os processadores têm feito uso cada vez maior da memória cachê interna. Já sabemos que a cachê interna tem freqüência maior que a memória principal, ou seja, mais próxima a do processador e assim, se o dado a ser processado estiver na memória cachê não haverá retardo (ou vai ser menor). 4.2.5. Overclock: A técnica de utilizar o clock acima dos valores indicados pelo fabricante é chamada de overclock. O usuário deverá ter cuidado com o problema do aquecimento e ter também a noção de que a vida útil do processador poderá ser diminuída caso utilize o processador com overclock. Existem dois tipos de overclock: interno e externo; O overclock interno é definido aumentando-se o fator de multiplicação do clock interno. O fabricante faz um conjunto de testes e diz: “Olha pessoal este processador trabalha muito bem a 3,8 GHz, isso eu garanto”. Porém, alguns usuários sabem que este processador é capaz de trabalhar de forma relativamente segura a 4,0 ou 4,2 GHz e assim utilizam um fator de multiplicação do clock interno maior do que o indicado pelo fabricante. Atualmente alguns fabricantes lançam os processadores com o fator de multiplicação do clock interno travado para coibir tal prática! O overclock do barramento externo também é possível, ou seja, alguns usuários também experimentam fazer com que o processador se comunique com a memória além da capacidade aconselhada pelo fabricante, por exemplo: se o processador é vendido com clock externo de 200 MHz, é possível fazê-lo trabalhar, de forma aparentemente segura, a 210 ou 220 MHz. 5. Cachê do processador (cachê interna): Sabe-se que a função da memória cachê é acelerar o processamento. Desde o 80386 que os computadores já trazem alguma porção de memória cachê incorporada ao próprio processador. A partir do 80486 também foi utilizada uma porção de memória cachê instalada na placa-mãe (externa), esta memória ficou conhecida como L2 e a primeira (interna) como L1. Já faz algum tempo que os processadores incorporaram também a L2 e hoje possuem a L1 e a L2 interna. Alguns processadores mais modernos, de alto desempenho, também já possuem memória cachê nível 3 (L3) interna, aumentando mais ainda a performance do sistema. 5.1. Controlador da memória cachê: Este item faz o gerenciamento de quais dados serão colocados em cachê e levados ao processador. Atualmente os processadores já possuem os controladores de cachê L1 e L2 também incorporados. 6. Unidade de ponto flutuante (conhecida antigamente como co-processador matemático) – FPU Float Point Unit: Os computadores não são muito bons para lidar com números fracionários, números muito pequenos ou muito grandes, para este tipo de cálculo a ULA não é bem “treinada”. Em outras palavras podemos dizer que a ULA não contém instruções específicas para lidar com algumas funções matemáticas mais complexas. 6.1. Co-processador matemático: Os processadores antigos (80286 – coprocessador 80287 e 80386 – co-processador 80387) eram auxiliados por outro processador mais especializado para a realização de operações matemáticas complexas. Este outro processador auxiliar ficou conhecido como co-processador matemático. 6.2. Unidade de ponto flutuante: A partir do processador 80486 os processadores passaram a incorporar (internamente) a função de co-processamento matemático e, a partir de então, a os processadores receberam mais um componente que passou a ser chamado de unidade de ponto flutuante. Este nome é pertinente à capacidade da unidade realizar cálculos matemáticos complexos. 7. Etapas do processamento (ciclo de máquina): O processamento, propriamente dito, é efetuado em etapas. Para cada instrução de máquina o processador gastará pelo menos um pulso de clock (atualmente pode ser menos), percorrendo uma série de passos. Embora as etapas do processamento não sejam, normalmente, cobradas em concursos as explicações a seguir serão úteis para entender conceitos como processamento pipeling, arquitetura superescalar e outros. As principais etapas que compõem um ciclo de máquina são divididas em tempo de instrução e tempo de execução. 7.1. Tempo de instrução: Diz respeito às etapas iniciais do processamento, ou seja, é a reunião das etapas de buscar a instrução (e os dados necessários) e interpretar esta instrução para saber qual operação será executada. Vejamos: 7.1.1.Captar: A unidade de controle é responsável por obter a instrução que está em memória principal e a colocar em uma memória interna do processador (registrador). 7.1.2. Decodificar: A unidade de controle é responsável, ainda, por dizer o que significa a instrução que foi buscada em memória, ou seja, a unidade de controle determina qual operação deverá ser efetuada pela ULA. Nesta etapa a UC também define a localização (em memória) dos dados necessários para a realização da instrução. Por exemplo: Se for para somar dois números (27 + 28) a UC então decodifica a instrução indicando que a operação a ser realizada é a de soma e também identifica em qual posição da memória estão os números 27 e 28 que serão somados. 7.2. Tempo de execução: Diz respeito às etapas finais do ciclo de processamento, ou seja, é a reunião das etapas de execução e registro do resultado. 7.2.1. Executar: A unidade de controle não executa, porém, é responsável por transferir os dados da memória para os registrados (memória de apoio) da ULA. A ULA é que será responsável por executar a instrução por meio de suas operações aritméticas e lógicas. No nosso exemplo a ULA executa a soma dos números 27 e 28. 7.2.2. Armazenar ou registrar: A unidade de controle armazena o resultado (no nosso exemplo o resultado da soma é 55). Enviará para a memória principal se este resultado bastar para completar a instrução do software ou armazenará o resultado em um acumulador caso o resultado seja necessário para executar a próxima instrução de máquina. 8. Esquema básico da organização do processador: O dado a ser processado é requerido memória principal, da memória principal é MEMÓRIA PRINCIPAL à transferido para a cachê L2 (pela freqüência do clock CACHÊ L2 externo). Daqui para frente (veja o quadro ao lado) a velocidade será definida pelo clock interno. Então, a instrução segue da cachê L2 para a cachê L1 (cachê de CACHÊ L1 DE INSTRUÇÕES instruções) e desta para a unidade de busca que, ao identificar a instrução a ser processada faz a decodificação da mesma e a envia à unidade de execução. A unidade de BUSCA execução (normalmente a ULA) por sua vez encaminha à cachê L1 (cachê de dados). Da memória cachê L1 de dados a instrução pode retornar DECODIFICAÇÃO à memória principal ou pode ser enviada a um periférico de saída ou a um dispositivo de armazenamento, dependerá da tudo instrução EXECUÇÃO seguinte do software. CACHÊ L1 DE DADOS