Anda di halaman 1dari 10

6 O Processador

6.1 Introduo
Um processador uma mquina de estados que executa a seguinte seqncia
de estados continuamente:
1. Leia da memria a instruo apontada pelo registrador Program Counter
(PC)
2. Incremente o PC (PC = PC + 1; ou PC = PC + 4 se a instruo for de 4
bytes)
3. Decodifique a instruo
4. Execute a instruo
5. Volte ao passo 1
Um gerador de pulsos usado para indicar quando o processador deve
passar de um estado para o outro. Convencionou-se chamar este gerador de
pulsos de clock (relgio). A freqncia mxima de operao do processador,
ou seja, o quo rpido ele pode passar por estes passos, em GHz,
normalmente indicada como fator de desempenho dos computadores. Um
GHz (giga Hertz, ou bilhes de Hertz) equivale a um bilho de pulsos por
segundo.
Uma mquina de estados composta por dois tipos de circuitos interligados
de forma apropriada: circuitos combinacionais e circuitos capazes de guardar
estados.
Circuitos combinacionais possuem entradas e sadas, e suas sadas
dependem nica e exclusivamente de suas entradas. Portas lgicas (E, OU,
etc) so exemplos de circuitos combinacionais. Na verdade, todos os
circuitos combinacionais so ou uma porta lgica, ou uma combinao de
portas lgicas.
Um circuito capaz de guardar estados retm o valor de um certo nmero de
bits at que um novo valor seja escrito nele. Como um exemplo de circuito
capaz de guardar estados, podemos citar o registrador PC. Na verdade, todos
os registradores e toda a memria de um computador so circuitos capazes
de guardar estados.

aula20.doc

1 de 10

A memria pode ser vista como uma caixa preta, contendo um registrador
especfico para cada endereo, sendo que cada um deles pode ser lido ou
escrito independentemente. O banco de registradores de um computador ,
na verdade, uma pequena memria de acesso rpido.
Existem dois tipos bsicos de registrador: acionado por nvel ou acionado
por borda. Os registradores acionados por nvel copiam a entrada para sada
enquanto o sinal de clock estiver alto (ou quando ele estiver baixo).
Registradores acionados por borda copiam o valor da entrada para a sada
quando ocorrer uma transio de clock de alto para baixo (ou de baixo para
alto).
A figura abaixo mostra uma mquina de estados genrica implementada com
registradores acionados por borda:
clock
Registradores

Lgica Combinacional

clock

Na figura, na primeira subida do clock o estado dos registradores


modificado para o valor presente em suas entradas. O novo estado
apresentado nas sadas dos registradores logo aps a subida do clock. Estas
sadas so aplicadas s entradas da lgica combinacional, que opera sobre
elas e produz uma nova entrada para os registradores.
Quando da prxima subida do clock, as novas sadas da lgica
combinacional sero as novas entradas dos registradores. Assim, os estados
guardados nos registradores evoluem de acordo o estado inicial e conforme o
especificado pela lgica combinacional.

aula20.doc

2 de 10

Um computador , na verdade, uma mquina de estados bastante complexa,


projetada para, a partir de um estado inicial, mudar seu estado interno
(memria, registradores, etc) de acordo com o especificado por uma
seqncia instrues, que so, na verdade, parte do estado inicial!
6.2 Datapath (Caminho dos Dados)
Os circuitos que compem um processador podem ser divididos em duas
partes: o datapath e o controle. Os circuitos que formam o datapath so
responsveis pela manipulao dos dados; a ALU faz parte do datapath, por
exemplo. Os circuitos de controle so responsveis, como o nome diz, por
controlar o datapath.
Vamos fazer uma anlise de um datapath tpico, o datapath de um
processador MIPS. A figura abaixo mostra alguns componentes deste
datapath.

A memria e o PC so capazes de guardar estados, enquanto que o somador


combinacional. A memria usada para guardar as instrues e os dados
dos programas, PC guarda o endereo da instruo corrente e o somador
pode ser usado para incrementar o PC de modo a faz-lo apontar para a
prxima instruo.

aula20.doc

3 de 10

Estes circuitos podem ser agrupados para compor a parte do datapath


responsvel por trazer instrues da memria:

Neste datapath, a cada subida do clock o PC recebe PC + 4. A instruo, cujo


endereo igual ao contedo de PC, disponibilizada na sada da memria
de instrues (Instruction memory) logo aps a atualizao do contedo do
PC. A memria de instrues composta por registradores (milhes deles)
acionados por nvel; isto , basta apresentar o endereo que a memria
devolve a instruo correspondente.
As instrues trazidas da memria so utilizadas por outras partes do
datapath, como veremos a seguir.

aula20.doc

4 de 10

Os componentes abaixo podem ser usados para compor a parte do datapath


responsvel por implementar a maioria das instrues lgicas e aritmticas:

aula20.doc

5 de 10

Os componentes mostrados na figura anterior podem ser agrupados como


abaixo:

Na figura acima, uma parte dos bits da instruo usada para determinar
quais registradores sero lidos e qual ser escrito durante a execuo da
instruo. Por exemplo, se a instruo a
add $8, $17, $18
nome
campo
No. bits
decimal

op
1
6
0

rs
2
5
17

rt
3
5
18

rd
4
5
8

shamt
5
5
0

funct
6
6
32

os bits que especificam os registradores de leitura $17 e $18, campos 2 e 3


acima, so apresentados s entradas Read register 1 (Registrador de leitura
1) e Read register 2 (Registrador de leitura 2) do banco de registradores
Registers, respectivamente, enquanto que os bits que especificam o
registrador de escrita $8 (campo 4) so apresentados entrada Write register
(Registrador de escrita).
Logo aps a apresentao dos bits que especificam os registradores que
sero lidos, o banco de registradores disponibiliza o contedo dos
respectivos registradores nas sadas Read data 1 (Dado de leitura 1) e Read
data 2 (Dado de leitura 2).
A ALU recebe estes valores e opera sobre eles, conforme o que determina a
instruo, e disponibiliza o resultado da operao na sua sada. Esta, levada
entrada Write data (Dado de escrita).
aula20.doc

6 de 10

No final do ciclo de clock, o valor computado pela ALU escrito no


registrador especificado em Write register.
Para implementar as instrues de leitura e escrita na memria, precisamos
dos componentes abaixo:

A memria de dados guarda os dados a serem manipulados pelo processador.


A unidade de extenso de sinal usada para transformar a constante de 16
bits, que um dado imediato das instrues de leitura e escrita na memria
(fazem parte da instruo), em um valor de 32 bits.
A operao de extenso de sinal consiste em copiar o bit de sinal da
constante de 16 bits, o bit 15, para os bits 16-31 da sada da unidade de
extenso de sinal.
Os componentes acima podem ser agrupados para implementar a parte do
datapath responsvel pelas instrues de leitura e escrita na memria como
abaixo:

aula20.doc

7 de 10

Como no caso das instrues lgicas e aritmticas, parte dos bits da


instruo usada para determinar quais registradores sero lidos e qual ser
escrito durante a execuo da instruo (se a instruo for de leitura na
memria).
A constante de 16 bits, que sempre aparece nas instrues de leitura e escrita
na memria, tem que ser estendida de sinal para ser somada ao registrador
que usado para compor o endereo. Por exemplo, se a instruo a
lw $8, 1200($19)
nome
campo
No. bits
decimal

op
1
6
35

rs
2
5
19

rt
3
5
8

address
4
16
1200

os bits que especificam o registrador de leitura $19, campos 2 acima, so


apresentados entrada Read register 1 do banco de registradores Registers,
enquanto que os bits que especificam o registrador de escrita $8 (campo 3)
so apresentados entrada Write register.
Logo aps a apresentao dos bits que especificam o registrador $19, o
banco de registradores disponibiliza o seu contedo na sada Read data 1.
Ao mesmo tempo, a constante 1200 apresentada unidade de extenso de
sinal, que disponibiliza o valor 1200 entendido de sinal na entrada de baixo
da ALU.
aula20.doc

8 de 10

A ALU recebe o contedo de $19 e a constante 1200 extendida de sinal e


disponibiliza a soma destes dois valores na sua sada. Esta, levada s
entradas Read address (Endereo de leitura) e Write address (Endereo de
escrita) da Data memory (Memria de dados).
No caso da instruo lw $8, 1200($19), no final do ciclo de clock o contedo
da posio de memria apontado pelo endereo 1200+($19) escrito no
registrador especificado em Write register.
Se a instruo em questo fosse o sw $8, 1200($19) ao invs do lw, o
contedo do registrador $8 seria escrito no endereo 1200+($19) atravs da
entrada Write data (Dado de escrita) da memria.
Para implementar as instrues de desvio beq e bne podemos usar o datapath
abaixo:

aula20.doc

9 de 10

No caso da instruo
bne $8, $21, 100
nome
campo
No. bits
decimal

op
1
6
5

rs
2
5
8

rt
3
5
21

address
4
16
100

os bits que especificam os registradores de leitura $8 e $21, campos 2 e 3


acima, so apresentados s entradas Read register 1 e Read register 2 do
banco de registradores Registers, respectivamente.
Logo aps a apresentao dos bits que especificam os registradores $8 e $21,
o banco de registradores disponibiliza seus contedos nas sadas Read data
1 e 2. Ao mesmo tempo, a constante 100 apresentada unidade de
extenso de sinal, que disponibiliza o valor 100 entendido de sinal e
deslocado para a esquerda de dois bits na entrada do Adder (somador).
A constante 100 estendida de sinal deslocada de dois, que equivalente a
multiplica-la por quatro. Isto feito porque as instrues sempre ocupam
endereos mltiplos de quatro na memria (porque elas so de 32 bits, ou
quatro bytes). A constante somada com (PC)+4 por Adder e, na sada deste,
disponibilizado o Branch target (Alvo do desvio), que o endereo da
prxima instruo que deve ser executada no caso do desvio ser tomado.
O processador decidir se o desvio deve ser tomado ou no de acordo com o
resultado computado pela ALU a partir de Read data 1 e 2. No caso das
instrues beq e bne, a ALU subtrai Read data 2 de Read data 1 (computa
$8 - $21, no caso da instruo bne $8, $21, 100). Dependendo do resultado
ser igual a zero ou no e da instruo ser beq ou bne, a branch control logic
(lgica de controle de desvio) copia o valor branch target para o PC ou no.

aula20.doc

10 de 10