Unidade de ponto flutuante: A unidade de ponto flutuante

Propaganda
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
Download