Você está na página 1de 51

Processador MIPS

Datapath e Unidade de Controle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-1

Datapath Componente do processador que realiza operaes aritmticas Unidade de Controle Componente do processador que comanda o datapath, memria e dispositivos de E/S de acodo com as instrues de um programa

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-2

Etapas para execuo de uma instruo


Independente da classe da instruo, as duas primeiras etapas para sua execuo so as mesmas: Enviar o PC para a memria e buscar a instruo. Ler um ou dois registradores (usando o campo da instruo para selecionar os registradores a serem lidos) Os passos seguintes dependem da classe da instruo (referncia memria, lgica-aritmtica e desvios) alguns destes passos so bastantes semelhantes e independem do opcode

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-3

Por exemplo, todas as instrues, independente da classe utilizam a ALU aps a leitura de um registrador. Instruo de referncia memria: utiliza para clculo do endereo Instrues lgica-aritmticas: utiliza para execuo Instrues de desvios: utiliza para comparao.

Aps a utilizao da ALU, os passos so diferentes para as diferentes classes.

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-4

Implementao do MIPS viso em alto nvel

D ata R egister# Registers R egister# R egister# Data

PC

Address Instruction memory

Instruction

ALU

Address Data memory

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-5

Reviso/Convenes adotadas Sinal lgico alto ativado Elementos combinacionais, exemplo: ALU Elementos de estado, exemplo: Registradores e Memria Sinal de Clock: usado para determinar quando se pode escrever em um elemento de estado. A leitura pode ser a qualquer momento

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-6

Metodologia de sincronizao sincroniza o elemento de estado para a permisso de leitura e de escrita (Por que necessrio?)

Lgica combinacional, elemento de estados e clock (sensvel subida).

State element 1

Combinational logic

State element 2

Clock cycle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-7

A metodologia edge-triggered permite a um elemento de estado ler e escrever no mesmo perodo de clock.

State element

Combinational logic

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-8

Datapath
OBS.: Primeiro implementaremos um Datapath utilizando apenas um clock com ciclo grande. Cada instruo comea a ser executada em uma transio e acaba na prxima transio do clock (na prtica isto no factvel, pois temos instrues de diferentes classes e portanto de diferentes nmeros de ciclos de clock) Recursos em um Datapath: Um lugar para armazenar as instrues do programa (Memria de instrues) Um lugar para armazenar o endereo da instruo a ser lida na memria (Program Counter - PC) Somador para incrementar o PC para que ele aponte para a prxima instruo

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-9

Elementos necessrios a armazenar e acessar informaes mais um somador para calcular o endereo do prximo estado.

Instruction address PC Instruction Instruction memory Add Sum

a. Instruction memory

b. Program counter

c. Adder

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-10

Parte do datapath para fetch e incremento de PC

Add 4 PC Read address Instruction Instruction memory

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-11

Instrues R-type
Instrues aritmticas e lgicas: add, sub, slt 32 registradores chamado de register file, que um conjunto de registradores que podem ser acessados (lidos ou escritos) especificando seu nmero. Instrues de formato R tem 3 operandos registradores (add $t1,$t2,$t3): necessidade de ler 2 dados do register file e escrever um dado nele, para cada instruo Para ler um dado do register file preciso de uma entrada (nmero do registrador) e uma sada (o dado lido) Para escrever um dado no register file, so necessrias duas entradas: o nmero do registrador e o dado a ser escrito Para escrever: sinal de controle (RegWrite) A ALU controlada por um sinal de controle (ALU control)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-12

Elementos necessrios para a implementao de operaes na ALU: instrues do tipo-R.

5 Register numbers 5 5

Read register 1 Read register 2 Registers Write register Write data

3 Read data 1 Data Read data 2

ALU control

ALU

Zero ALU result

Data

RegWrite a. Registers b. ALU

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-13

O datapath para instrues do tipo R

Read register 1 Instruction Read register 2 Registers Write register Write data

3 Read data 1

ALU operatio n

Zero ALU ALU result Read data 2

RegWrite

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-14

Instrues LOAD e STORE


lw $t1,offset_value($t2) e sw $t1,offset_value,($t2) Endereo de memria = value_offset + $t2 Value_offset: offset sinalizado de 16 bits preciso um register file e uma ALU Unidade que transforme valor de 16 bits sinalizado em um valor de 32 bits Unidade de memria de dados com controle de leitura (MemRead) e escrita (MemWrite)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-15

Unidades para implementao de lw e sw

M e m W rit e

A d dre s s

Read d ata 16 S ig n e x te n d 32

W ri t e d ata

D a ta m e m ory

Me m Read

a . D a ta m e m o r y u n it

b . S i g n - e x t e n s i o n u n it

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-16

Datapath para instrues lw e sw.


ALU operation MemWrite Zero ALU ALU result Read data 2 Write data 16 Sign extend 32

Read register 1 Instruction Read register 2 Registers Write register Write data RegWrite

3 Read data 1

Address

Read data Data memory

MemRead

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-17

Instruo beq e jump


beq $t1,$t2,offset: 2 registradores que so comparados e um offset de 16 bits usado para calcular o endereo relativo, alvo do branch A base para o clculo do endereo alvo de branch o endereo da prxima instruo em relao instruo branch O campo offset deslocado de 2 bits para aumentar o alcance do desvio (multiplicado por 4) Alm do clculo do endereo do branch, deve-se determinar qual endereo ser escolhido, o do branch (taken) ou o armazenado em PC (not taken) dependendo do resultado da comparao OBS.: Instruo jump: os 28 bits menos significativos de PC so substitudos pelos 26 bits do imediato, deslocado de 2 bits ( X 4 ).

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-18

Datapath para branchs


PC + 4 from instruction datapath Add Sum Shift left 2 Read register 1 Read register 2 Registers Write register Write data RegWrite 16 Sign extend 32 3 Read data 1 ALU Zero Read data 2 To branch control logic ALU operation Branch target

Instruction

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-19

Datapath geral - Instrues de memria + instrues R-type (instrues da ALU)


3 ALUoperation Read data1 Read register2 Registers Read Write data2 register Write data Read register1

MemWrite ALUSrc
M u x

MemtoReg
Zero ALU ALU result Address Read data Data memory

Instruction

M u x

RegW rite
16 Sign extend 32

Write data

M emRead

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-20

Fetch da instruo + execuo de instrues de memria e da ALU

Add 4 Registers Read register 1 Read Read data 1 register 2 Write register Write data RegWrite 16 Sign 32 extend Read data 2 3 ALUSrc M u x ALU operation

PC

Read address Instruction Instruction memory

MemWrite MemtoReg

Zero ALU ALU result

Address

Read data

Data Write memory data MemRead

M u x

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-21

Controle da ALU

Sinal de Controle da ALU 000 001 010 110 111

Funo AND OR ADD SUB SLT

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-22

Datapath para as classes de instrues do MIPS

PCSrc Add 4 Shift left 2 Registers Read register 1 Read Read data 1 register 2 Write register Write data RegWrite 16 Read data 2 3 ALU operation MemWrite MemtoReg Address Read data Add ALU result M u x

PC

Read address Instruction Instruction memory

ALUSrc

M u x

Zero ALU ALU result

Write data Sign extend 32

Data memory

M u x

MemRead

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-23

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-24

Projeto da Unidade de Controle Principal


Classes de instrues - tipo-R, load, store e branch)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-25

Campo opcode: bits 31-26 Dois registradores a serem lidos rs e rt: bits 25-21 e 20-16 Registrador base (load e store): bits 15-0 O valor a ser guardado no PC que pode vir do clculo de um endereo de salto ou simplesmente do PC + 4. O registrador destino (a ser escrito), que selecionado dentre 2 opes, o que multiplexador: para um load: bits 20-16 (rt) para instrues R-type: bits 15-11 (rd) dever ser requer um

O valor guardado no banco de registradores que pode vir da ALU (R-type) ou da memria (sw)
1998 Morgan Kaufmann Publishers

Paulo C. Centoducatte

Ch5-26

Datapath com os multiplexadores necessrios

PCSrc 1 M u x 0

Add 4 Reg Write Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [20 16] 1 M u Instruction [15 11] x 0 RegDst Instruction [15 0] Read regi ster 1 Read regi ster 2 Shift left 2 Add ALU result

Read data 1

MemWrite ALUSrc 1 M u x 0 32 ALU control Zero ALU ALU result MemtoReg Address Read data 1 M u x 0

Read Write data 2 regi ster Write Registers data 16 Sign extend

Wri te data

Data memory

MemRead

Instruction [5 0] ALUOp

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-27

Sinais de controle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-28

Datapath com a Unidade de Controle


0 M u x ALU Add result Add 4 Instruction [31 26] RegDst Branch MemRead Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 1 PCSrc

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-29

Sinais de controle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-30

Operao do Datapath
instruo R-type add $t1,$t2,$t3

fetch da instruo leitura de $t2 e $t3 operao na ALU com os dados lidos resultado da ALU escrito em $t1

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-31

Fetch e incremento de PC instruo R-TYPE


0 M u x Add ALU result Add 4 Instruction [31 26] RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Shift left 2 1

Control

Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-32

Leitura dos registradores e decodificao instruo R-TYPE


0 M u x ALU Add result Add 4 Instruction [31 26] RegDst Branch MemRead Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 1

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-33

Operao na ALU instruo R-TYPE


0 M u x Add Add 4 Instruction [31 26] RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [25 21] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 ALU result 1

Control

PC

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-34

Escrita no registrador instruo R-TYPE


0 M u x ALU Add result Add 4 RegDst Branch MemRead Instruction [31 26] MemtoReg Control ALUOp MemWrite ALUSrc Reg Write Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 1

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-35

Instruo load word


lw $t1, offset($t2) Instruction Fetch $t2 lido ALU calcula a soma do valor lido e o imediato de 16 bits O resultado usado como endereo da memria de dados O dado da memria de dados escrito no register file

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-36

Operao de um lw com um esquema simples de controle


0 M u x ALU Add result Add 4 Instruction [31 26] RegDst Branch MemRead Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [25 21] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 1

PC

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data

1 M u x 0

Instruction [15 0]

16

Sign extend

32 ALU control

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-37

Instruo branch
beq $t1,$t2,offset Fetch da instruo $t1 e $t2 so lidos ALU faz subtrao dos valores lidos. PC+4 adicionado ao imediato de 16 bits, deslocado de 2 bits resultado o endereo do desvio A sada Zero usada para decidir qual endereo ser armazenado em PC

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-38

Datapath para a instruo beq


0 M u x Add Add 4 Instruction [31 26] RegDst Branch MemRead Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 ALU result 1

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-39

Tabela verdade para as funes de controle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-40

Instruo jump
J L1 Fetch da instruo PC formado pelos 4 bits mais significativos + 26 bits do imediato + 00 (deslocamento de 2)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-41

Datapath para instruo jump


Instruction [25 0] 26 Shift left 2 Jump address [31 0] 28 0 M u x Add Add 4 Instruction [31 26] Control RegDst Jump Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 ALU result 1 1 M u x 0

PC+4 [31 28]

Read data 1 Read register 2 Registers Read Write data 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write data Instruction [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-42

Implementao em um ciclo de clock (no usada)


Funciona corretamente mas no eficiente

Para single-cycle o ciclo do clock deve ter o mesmo comprimento para todas as instrues CPI = 1 para isto, o ciclo de clock determinado pelo maior caminho no datapath da mquina ( instruo de load que usa 5 unidades funcionais em srie: instruction memory, register file, ALU, data memory e register file)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-43

Exemplo 1:
Sejam os seguintes tempos de operao: unidade de memria : 2 ns ALU e somadores: 2ns register file (read ou write) : 1 ns unidade de controle, multiplexadores, acesso ao PC, circuito para extenso do sinal e linhas no tem atraso, quais das seguintes implementaes seria mais rpida e quanto ?

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-44

Exemplo 1:
Uma implementao na qual cada instruo opera em um ciclo de clock de tamanho fixo Uma implementao onde cada instruo executada usando clock de tamanho de ciclo varivel (exatamente do tamanho necessrio para a execuo da respectiva instruo tambm no utilizado na prtica) OBS.: Para comparar o desempenho, assuma a execuo de um programa com a seguinte distribuio de instrues : 24% de loads, 12% de store, 44% instrues tipo R, 18% de branches e 2% de jumps.

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-45

Exemplo 1:
Soluo: tempo de execuo CPU = nmero de instrues X CPI X perodo do clock CPI = 1 tempo de execuo CPU = nmero de instrues perodo do clock Temos que encontrar o perodo do clock para as duas implementaes, pois o nmero de instrues e a CPI so iguais para ambas implementaes. X

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-46

O caminho crtico para cada classe de instruo : Classe da Instruo R-TYPE LW SW BRANCH JUMP Unidades funcionais envolvidas Inst. fetch Inst. fetch Inst. fetch Inst. fetch Inst. fetch Reg. access Reg. access Reg. access Reg. access ALU Reg. access ALU Mem access Reg access ALU Mem access ALU

Usando o caminho crtico, podemos computar o comprimento do ciclo de clock necessrio para cada classe de instruo: Classe da Memria Leitur ALU Memria Escrita Total Instruo Instrs. a Regs. oper. Dados Regs. R-TYPE 2 1 2 0 1 6 ns LW 2 1 2 2 1 8 ns SW 2 1 2 2 7 ns BRANCH 2 1 2 5 ns JUMP 2 2 ns
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-47

O perodo do clock para a mquina com um nico clock determinado pela maior instruo 8ns

A mquina com clock varivel, ter seus perodos de clock variando entre 2ns e 8ns. O clcock mdio ser: Tempo de clock da CPU = 8 X 24% + 7 X 12% + 6 X 44% + 5 X 18 % + 2 X 2% = 6.3ns
CPU desempenho vc / CPU desempenhosc = = tempo de execuo CPUsc / tempo de execuo CPUvc = = IC X perodo de clock da CPUsc / IC X perodo de clock da CPUvc = = perodo de clock da CPUsc / perodo de clock da CPUvc = = 8 / 6.3 = 1.27
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-48

Exemplo 2:
FP unit 8ns para add e 16ns para mul

todos os loads tem o mesmo tempo e so 33% das instrues (8 ns) todos os stores tem mesmo tempo e so 21% das instrues (7 ns) instrues tipo R so 27 % das instrues (6 ns) Branches so 5 % (5 ns) e jumps 2% das instrues (2 ns) FP add e sub tem o mesmo tempo e juntos tem 7% das instrues (12 ns) FP mul e div tem o mesmo tempo e so 5% das instrues (20 ns)
Ch5-49

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Exemplo 2:
Soluo CPU desempenhovc / CPU desempenhosc = = tempo de execuo CPUsc / tempo de execuo CPUvc
Para a mquina de nico clock instruo FP mul (mais longa) perodo do clock = ciclo da 2+1+16+1 = 20ns

Para a mquina de clock varivel: perodo do clock CPU = 8 X 31% + 7 X 21% + 6 X 27% + 5 X 5% 2 X 2% + 12 X 7% + 20 X 7% = 8.1 ns
Portanto: CPU desempenhovc / CPU desempenhosc = = tempo de execuo CPUsc / tempo de execuo CPUvc = 20/8.1 = 2.46

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-50

Implementao Multiciclos
a execuo de cada instruo dividida em etapas cada etapa corresponde a uma operao de uma unidade funcional implementao multiciclos cada etapa executada em um ciclo
permite que uma unidade funcional possa ser usada em mais de uma etapa da instruo compartilhamento pode diminuir a quantidade de HW

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-51

Datapath multiciclos

Instruction register PC Address Instruction or data Memory data register

Data A Register # Registers Register # B Register # ALU ALUout

Memory

Data

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-52

Diferenas em relao a verso single-cycle


Uma s memria usada para dados e instrues Uma ALU em vez de uma ALU e dois somadores Reduo de rea reduo de custos Alguns registradores a mais para manter a sada de uma unidade funcional para outra unidade funcional, em um ciclo de clock posterior:
Instruction Register IR armazenar uma instruo lida da memria (a instruo deve ser mantida at o fim de sua execuo) Memory Data Register MDR armazenar dados lidos da memria registrador A e registrador B usados para manter os operandos lidos do register file registrador ALUOut para manter a sada da ALU

Incluso de multiplexadores
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-53

Datapth multiciclos para as instrues bsicas

PC

0 M u x 1

Address Memory MemData Write data

Instruction [25 21] Instruction [20 16] Instruction [15 0] Instruction register Instruction [15 0] Memory data register

Read register 1 Read Read register 2 data 1 Registers Write Read register data 2 Write data A

0 M u x 1 0 1 M u 2 x 3

0 M Instruction u x [15 11] 1 0 M u x 1 16

Zero ALU ALU result

ALUOut

B 4

Sign extend

32

Shift left 2

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-54

Datapath para implementao multiciclos com sinais de controle


IorD MemRead MemWrite IRWrite RegDst RegWrite ALUSrcA

PC

0 M u x 1

Address Memory MemData Write data

Instruction [25 21] Instruction [20 16] Instruction [15 0] Instruction register Instruction [15 0] Memory data register

Read register 1 Read Read data 1 register 2 Registers Write Read register data 2 Write data A

0 M u x 1 0 1 M u 2 x 3

0 M Instruction u x [15 11] 1 0 M u x 1 16

B 4

Zero ALU ALU result

ALUOut

Sign extend

32

Shift left 2

ALU control

Instruction [5 0]

MemtoReg

ALUSrcB ALUOp

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-55

Datapath para implementao multiciclos com sinais de controle completo incluindo atualizao do PC

PCWriteCond

PCSource

PCWrite ALUOp IorD Outputs ALUSrcB MemRead ALUSrcA Control MemWrite RegWrite MemtoReg Op RegDst IRWrite [5 0] Jump address [31-0]

Instruction [25 0] Instruction [31-26] Address Memory MemData Write data Instruction [25 21] Instruction [20 16] Instruction [15 0] Instruction register Instruction [15 0] Memory data register 0 M Instruction u x [15 11] 1 0 M u x 1 16 Sign extend 32 Shift left 2 Read register 1 Read Read register 2 data 1 Registers Write Read register data 2 Write data A 0 M u x 1 0 1 M u 2 x 3

26

Shift left 2

28

1 u
x 2

PC

0 M u x 1

PC [31-28]

B 4

Zero ALU ALU result

ALUOut

ALU control

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-56

Tabela com Sinais de Controle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-57

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-58

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


1 - Instruction fetch Incremento do PC e leitura da instruo em paralelo
IR = Memory[PC] PC = PC + 4

Sinais ativados
MemRead (1), Irwrite (1), IorD (0 PC como endereo), ALUSrcA (0 PC para ALU), ALUSrcB (01 4 para a ALU), ALUOp (00 add) e PCWrite (1 o novo valor de PC no visvel at o prximo ciclo de clock).
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-59

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


2 - Instruction decode e register fetch Como temos regularidade no formato das instrues, podemos, sem saber a natureza da instruo, fazer:
ler dois registradores do register file, mesmo que eles no sejam utilizados e armazena-los nos registradores A e B; computar os endereos de branch e guard-los em ALUOut, mesmo que a instruo no venha a ser um branch. A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC + (sign-extend (IR[15-0] << 2)

Sinais ativados: ALUSrcA (0 PC vai para a ALU), ALUSrcB (11- sign extended e shifted enviado a ALU) e ALUOp (00 add).
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-60

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


3 - Execution, memory address computation ou branch completion Primeira etapa determinada pelo tipo de instruo. Para cada classe temos:
Referncia memria (I-Type) ALUOut = A + sign-extend (IR[15-0]); Sinais ativados: ALUSrcA (1 - A para ALU), ALUSrcB (10 - sada da unidade sign-extension para a ALU) e ALUOp (00 - add).

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-61

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle

Instrues Lgicas-Aritmticas ( R-type) ALUOut = A op B; Sinais ativados: ALUSrcA (1 - A para ULA), ALUSrcB (00 B para a ULA) e ALUOp (10 o campo funct usado para determinar os sinais de controle da ALU)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-62

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


Branch if ( A == B ) PC = ALUOut; Sinais ativados: ALUSrcA (1 - A para ULA), ALUSrcB (00 B para a ULA) e ALUOp (01 sub para teste de igualdade), PCCondWrite (1 se Zero=1) e PCSource (01 PC recebe dado vindo de ALUOut)

Jump PC = PC[31-28] || (IR[25-0]<<2) Sinais ativados: PCSource(10- jump address para PC) e PCWrite (1)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-63

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


4 - Memory access or R-type instruction completion Nesta etapa, uma instruo de load ou store acessa a memria ou uma instruo R-type escreve seu resultado.
Referncia memria MDR = Memory [ALUOut]; - load Memory [ALUOut] = B; - store Sinais ativados: MemRead (1 - para load) ou MemWrite (1 - para store), IorD ( 1 para load, para que o endereo de memria venha da ALU)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-64

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


instrues R-type Reg[IR[15-11]] = ALUOut; Sinais ativados: RegDst ( 1 campo rd (15-11) usado como entrada do register file para escrita), RegWrite (1) e Memto Reg (0 para saida da ULA ser escrita).

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-65

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle


5 - Memory read completion
Load Reg[IR[20-16]] = MDR; Sinais ativados: MemtoReg ( 1 para escrver o resultado da memria), RegWrite ( 1 - escrita no register file) e RegDst ( 0 para escolher rt (20-16) como nmero do registrador).

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-66

Resumo das etapas de execuo para as diversas classes

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-67

Projeto da Unidade de Controle

Mquinas de estados finitos conjunto de estados e como estes estados podem mudar ( esta mudana prximo estado).

Controle de estados finitos corresponde s cinco etapas de execuo de uma instruo, onde cada etapa executada em um ciclo de clock.

Unidade de Controle implementada como mquina de estados finitos

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-68

Unidade de Controle Mquinas de Estados Finitos

Start

Instruction fetch/decode and register fetch (Figure 5.37)

Memory access instructions (Figure 5.38)

R-type instructions (Figure 5.39)

Branch instruction (Figure 5.40)

Jump instruction (Figure 5.41)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-69

Diagrama de estados - Instruction fetch e instruction decode/register fetch


Instruction decode/ Register fetch 1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00

Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00
= Op R -t e) yp

Start

( Op

= 'L

W')

Op or (

Memory reference FSM (Figure 5.38)

R-type FSM (Figure 5.39)

Branch FSM (Figure 5.40)

(O

= 'S

W')

Jump FSM (Figure 5.41)

(Op = 'JMP')

'B

EQ ')

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-70

Diagrama de estados - Memory reference From state 1 instructions (Op = 'LW') or (Op = 'SW')
Memory address computation 2 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00

(Op = 'LW')

Memory access 5

(O p = 'S ') W

Memory access

3 MemRead IorD = 1

MemWrite IorD = 1

Write-back step 4 RegWrite MemtoReg = 1 RegDst = 0 To state 0 (Figure 5.37)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-71

Diagrama de estados - R-type instructions


From state 1 (Op = R-type) Execution 6 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10

R-type completion 7 RegDst = 1 RegWrite MemtoReg = 0

To state 0 (Figure 5.37)


Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-72

Diagrama de estados - Branch instructions

From state 1 (Op = 'BEQ') Branch completion 8 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01

To state 0 (Figure 5.37)

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-73

Diagrama de estados - Jump instructions


From state 1 (Op = 'J') Jump completion 9 PCWrite PCSource = 10

To state 0 (Figure 5.37)


Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-74

Diagrama de estados - Figura Unidade de Controle completa


Instruction fetch 0 Start MemRead AL USrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 AL UOp = 00 PCWrite PCSource = 00
')
(O R p=

Instruction decode/ register fetch

1 ALUSrcA = 0 ALUSrcB = 11 AL UOp = 00

Memo ry address computation 2 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00


(Op W = 'L

') o

r (O

p=

Exe cution 6 AL USrcA = 1 ALUSrcB = 00 ALUOp = 10 8

Branch completion

(O p

'S W

(Op = 'J')

'B

e) - ty p

EQ

')

Jump co mpletion

9 ALUSrcA = 1 ALUSrcB = 00 AL UOp = 01 PC WriteCond PCSource = 01 PCWrite PCSou rce = 10

(O

(Op = 'LW')

p = 'S ') W

Memory acce ss 5

Memo ry access 7 Me m Write IorD = 1

R-type completion

3 Me mRead IorD = 1

RegDst = 1 Reg Write MemtoReg = 0

Write-ba ck step 4 RegDst = 0 Reg Write MemtoReg = 1

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-75

CPI em uma CPU multicycles


Exemplo: Usando a figura anterior e a distribuio de instrues abaixo, qual a CPI, assumindo que cada estado necessita de 1 clico de clock ? conjunto de instrues: 22% loads, 11% de stores, 49% de R-type, 16% de branches e 2% de jumps ( gcc ). Soluo: O nmero de ciclos de clocks para cada classe :
loads: 5 stores: 4 R-type : 4 branches : 3 jumps: 3
1998 Morgan Kaufmann Publishers

Paulo C. Centoducatte

Ch5-76

CPI em uma CPU multicycles


Soluo:

CPI = ciclos de clock da CPU / nmero de instrues CPI = (num. de instruesi X CPIi) / num. de instrues CPI = ((num. de instruesi/ num. de instrues) X CPIi) CPI = 0.22 X 5 + 0.11 X 4 + 0.49 X 4 + 0.16 X 3 + 0.02 X 3 CPI = 4.04 4.04 melhor que a CPI de uma CPU em que todas as instrues tivessem o mesmo nmero de ciclos de clock ( CPI pior caso = 5).

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-77

Implementao de uma Unidade de Controle: com mquina de estados finitos


Uma mquina de estados finitos pode ser implementada com um registrador temporrio que guarde o estado corrente, e uma lgica de controle combinacional, que determina os sinais de controle e o prximo estado

Combinational control logic

Datapath control outputs

Outputs

Inputs

Next state Inputs from instruction register opcode field State register

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-78

Implementao de uma Unidade de Controle: com Microprogramao


Projeto simplificado da Unidade de Controle Cada microinstruo tem o efeito de ativar os sinais de controle especificados por elas Um microprograma uma representao simblica da unidade de controle que ser traduzida por um programa para a lgica de controle. O formato da microinstruo deve ser escolhida de tal forma a simplificar sua representao. Para evitar microinstrues inconsistentes, cada campo da microinstruo deve especificar um conjunto de sinais que no acontecem simultaneamente.
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-79

Tabela com os campos das microinstrues

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-80

As microinstrues so colocadas em uma ROM ou PLA. O endereamento das microinstrues pode ser dado seqencialmente. Existem 3 modos diferentes para a escolha da prxima microinstruo a ser executada:
Incrementar o endereo da microinstruo corrente para obter o endereo da prxima microinstruo. Este comportamento indicado, colocando Seq no campo de Seqncia. Desviar para a microinstruo que inicia a execuo da prxima instruo MIPS (estado 0 - fetch). Este comportamento indicado colocando Fetch no campo de Seqncia. Escolher a prxima microinstruo baseada em entradas da unidade de controle. Este comportamento chamado dispatch e usualmente implementado criando uma tabela (implementada em ROM ou PLA) contendo os endereos das microinstrues alvo. Geralmente existe muitas tabelas, neste caso temos duas a do estado 1 e a do estado 2. Isto indicado no campo Seqncia por Dispatch i, onde i o nmero da tabela.

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-81

Tabela com os valores dos campos de uma microinstruo

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-82

Tabela com os valores dos campos de uma microinstruo

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-83

Criando um Microprograma -- Fetch e Decode

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-84

Criando um Microprograma -- Fetch e Decode

Dispatch table 1 e o opcode so usados para selecionar uma de 4 seqncias diferentes de microinstrues:
Mem1 Rformat1 BEQ1 JUMP1 instrues de referncia memria instrues R-type

instrues beq instrues de jump

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-85

Criando um Microprograma -- Referncia Memria

Mem1

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-86

Criando um Microprograma -- Referncia Memria

LW2

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-87

Criando um Microprograma -- Referncia Memria

SW2

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-88

Criando um Microprograma -- instrues R-type

Rformat1

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-89

Criando um Microprograma -- Instrues beq

BEQ1

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-90

Criando um Microprograma -- Instrues de jump

JUMP1

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-91

Microprograma para unidade de controle

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-92

Implementao, em ROM, da Unidade de controle microprogramada


Microcode storage Outputs Datapath control outputs

Input 1 Microprogram counter Adder Address select logic Sequencing control

Inputs from instruction register opcode field


Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-93

Excees e interrupes

Exceo um evento inesperado, interno ao processador (p. ex. overflow), que causa uma mudana no fluxo normal de execuo das instrues.

Interrupo um evento inesperado, externo ao processador (p. ex. interrupo de I/O), que causa uma mudana no fluxo normal de execuo das instrues.

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-94

Exemplos de eventos que podem causar excees/interrupes

Tipo de Evento Requisio de I/O Chamada ao SO Overflow aritimtico Uso de instruo no definida Mau funcionamento do hardware

Fonte Externa Interna Interna Interna Ambos

Terminologia MIPS Interrupo Exceo Exceo Exceo Exceo ou Interrupo

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-95

Deteco de exceo
Dois tipos de exceo sero tratados: execuo de uma instruo no definida e overflow aritmtico. Quando ocorre uma exceo, o endereo da instruo afetada guardada no EPC (exception program counter) e o controle transferido ao sistema operacional em um endereo especificado. Dependendo da atitude do SO e do tipo de exceo, o programa pode ser interrompido ou reiniciado a partir do endereo armazenado em EPC. Para o SO tratar a exceo, ele tem que conhecer qual a exceo. H duas maneiras: status register (Cause), que tem um campo que especifica a exceo (MIPS) vectored interrupts o SO sabe a razo da exceo pelo endereo de entrada no vetor. O SO sabe a razo da exceo pelo endereo passado para ele.
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-96

Para o SO tratar a exceo, ele tem que conhecer qual a exceo. H duas maneiras: status register (Cause), que tem um campo que especifica a exceo (MIPS) vectored interrupts o SO sabe a razo da exceo pelo endereo de entrada no vetor. O SO sabe a razo da exceo pelo endereo passado para ele.

Tipo de exceo Endereo no vetor de exees(hexa) Instruo no definida C0 00 00 00hex Overflow aritimtico C0 00 00 20hex

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-97

Para tratar a exceo vamos supor o primeiro mtodo.


Temos 2 registradores extra: EPC de 32 bits, usado para manter o endereo da instruo afetada e Cause (32 bits), usado para armazenar a causa da exceo. Vamos assumir que o bit menos significativo seja usado para codificar a causa da exceo ( instruo indefinida = 0 e overflow = 1) Precisamos de dois sinais de controle EPCWrite e CauseWrite, o sinal do bit menos significativo de Cause IntCause. Precisamos tambm escrever o endereo de exceo, no qual o SO entra para tratar a mesma (supor C000000016). O multiplexador de entrada de PC dever ser alterado de 3 para 4 entradas (entrada C000000016). A ULA deve subtrair 4 do valor de PC para poder guardar em EPC.
Paulo C. Centoducatte
1998 Morgan Kaufmann Publishers

Ch5-98

PCWriteCond PCWrite IorD MemRead MemWrite MemtoReg IRWrite Op [5 0] Control Outputs

CauseWrite IntCause EPCWrite PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst 0 Jump address [31-0]

Instruction [25 0] Instruction [31-26] Address Memory MemData Write data Instruction [25 21] Instruction [20 16] Instruction [15 0] Instruction register Instruction [15 0] Memory data register 0 M Instruction u x [15 11] 1 0 M u x 1 16 Sign extend 32 Shift left 2 Read register 1 Read Read register 2 data 1 Registers Write Read register data 2 Write data A 0 M u x 1 0 1M u 2 x 3

26

Shift left 2

28

1M
2 u x

CO 00 00 00
PC [31-28]

PC

0 M u x 1

B 4

Zero ALU ALU result

ALUOut

EPC

1 ALU control

0 M u x 1

Cause

Instruction [5 0]

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-99

Para detectar as excees e transferir o controle para o estado apropriado temos:

Instruo indefinida: detectada quando no h prximo estado definido a partir do estado 1, para o valor do opcode. Tratamos definindo o prximo estado, para qualquer valor de opcode, como estado 10.

Overflow aritmtico: o sinal de overflow (sada da ULA) usado para modificar a mquina de estados para especificar um novo prximo estado a partir do estado 7.

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-100

11

10 IntCause = 0 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PC++Source = 11

IntCause = 1 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 PCSource = 11

To state 0 to begin next instruction

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-101

Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PC Write PCSource = 00
) ype R-t p= (O Branch completion 8 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01

Instruction decode/ Register fetch 1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00


p (O

Start

EQ ')

(Op = 'J')

=o

'B

the

Memory address computation 2 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 00


(Op

(O p

= 'L

O or ( W')

W') = 'S

r)

Execution 6 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10

Ju mp co mpletion

9 PCWrite PCSource = 10

(O

(Op = 'LW')

p = ') W 'S

Me mory access

Memory access 7

R-type co mpletion 11 RegDst = 1 RegWrite MemtoReg = 0 Overflow

3 MemRead IorD = 1

5 MemWrite IorD = 1

IntCause = 1 Cause Write ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11

10

IntCause = 0 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11

Write-back step 4 RegWrite MemtoReg = 1 RegDst = 0 Overflow

Paulo C. Centoducatte

1998 Morgan Kaufmann Publishers

Ch5-102