Vous êtes sur la page 1sur 54

5.

O Processador Datapath e Unidade de Controle Datapath Componente do processador que realiza operaes aritmticas Controle Componente do processador que comanda o datapath, memria e dispositivos de E/S de acodo com as instrues de um programa Independente da classe da instruo, as duas primeiras etapas para sua execuo so as mesmas: Enviar o PC para a memria e buscar ao 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) estes passos so bastantes semelhantes e independem do opcode Por exemplo, todas as instrues, independente da classe utilizam a ULA aps a leitura de um registrador. Para uma instruo de referncia memria, utiliza para clculo do endereo, lgica-aritmtica para execuo e desvios para comparao Aps a utilizao da ULA, os passos so diferentes para as diferentes classes.

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

112

Figura 5.1 - Implementao do MIPS viso em alto nvel

Data Register # PC A ddress Instruction m em ory Instruction Registers Register # Register # Data Data m em ory ALU Address

Reviso/Convenes adotadas Sinal lgico alto asserted Sinal que pode ser logicamente alto - assert Elementos combinacionais Exemplo: ULA 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 Metodologia de sincronizao sincroniza o elemento de estado para a permisso de leitura e de escrita Porque necessrio ?
ARQUITETURA DE COMPUTADORES - RICARDO PANNAIN 113

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

State element 1

Combinational logic

State element 2

Clock cycle

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

State element

Combinational logic

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

114

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 Para construir 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 memia Program Counter - PC Somador para incrementar o PC para que ele aponte para a prxima instruo Figura 5.4 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

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

115

Figura 5.5 Parte do datapath para fetch e incremento de PC

Add 4 Read address Instruction Instruction memory

PC

Instrues R-type Instrues aritmticas e lgicas add, sub, slt Estrutura de registradores (32) chamada de register file que um conjunto de registradores que podem ser acessados (lidos ou escritos) especificando seu nmero. Nele se encontra o registrador de estado da mquina 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 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 ULA controlada por um sinal de controle (ALU control)
ARQUITETURA DE COMPUTADORES - RICARDO PANNAIN 116

Figura 5.6 Elementos necessrios para a implementao de operaes da ULA, de instrues do tipo-R.
ALU control

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

Zero ALU result

Data

RegWrite a. Registers b. ALU

Figura 5.7 O datapath para instrues do tipo R

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

3 Read data 1

ALU operation

Zero ALU ALU result Read data 2

RegWrite

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

117

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 de um register file e uma ULA 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) Figura 5.8 Unidades para implementao de lw e sw

MemWrite

Address

Read data Data memory

16

Sign extend

32

Write data

MemRead a. Data memory unit b. Sign-extension unit

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

118

Figura 5.9 Datapath para instrues lw e sw.

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

3 Read data 1

ALU operation MemWrite

Zero ALU ALU result Read data 2

Address

Read data Data memory

Write data Sign extend 32

MemRead

Instruo beq 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 ).
ARQUITETURA DE COMPUTADORES - RICARDO PANNAIN 119

Figura 5.10 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

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

LU operation 3 A
Rea d register 1 Instructio n Read data 1

M em W rite MemtoReg ALUS rc


M u x Zero ALU ALU result Addre ss Read data Data me mory

Rea d register 2 Registers Read Write data 2 register Write data

M u x

RegW rite
16 Sign extend 3 2

Write data

M em Read

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

120

Figura 5.12 - Fetch da instruo + execuo de instrues de memria e da ULA

Add 4 Reg isters Read registe r 1 Read Read data 1 register 2 Write registe r Write data RegWrite 16 Sign 32 e xtend Read data 2 3 ALUSrc M u x AL U operation

PC

Read address Instruction Instruction memory

MemWrite MemtoReg

Zero ALU ALU result

Address

Read data

Write data

Data memory

M u x

MemRead

Controle da ULA

Sinal de Controle da ULA 000 001 010 110 111

Funo AND OR ADD SUB SLT

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

121

Datapath para as classes de instrues do MIPS

PCSrc Add 4 Shift lef t 2 Registers Read re gister 1 Read Read data 1 regist er 2 Write re gister Write data RegWrite 16 Read data 2 3 ALU operation MemWrite Me mtoReg Address Read data Add ALU result M u x

PC

Read addre ss Instru ction Instruction memory

ALUSrc

M u x

Zero ALU ALU re sult

Write data Sign extend 32

Data memory

M u x

MemRead

Tabelas figuras 5.14 e 5.15

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

122

Projeto da Unidade de Controle Principal Figura 5.16 Classes de instrues - tipo-R, load&store e branch)

O campo opcode bits 31-26 Os dois registradores a serem lidos rs e rt bits 25-21 e 20-16 O 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 dever ser selecionado dentre 2 opes, o que requer um multiplexador: para um load bits 20-16 (rt) para instrues R-type bits 15-11 (rd) O valor guardado no banco de registradores que pode vir da ALU (R-type) ou da memria (sw)

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

123

Figura 5.17 - Datapath com os multiplexadores necessrios

PCSrc 1 M u x 0

Add 4 RegWrite 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 register 1 Read register 2 Shift left 2 Add ALU result

Read data 1 Read data 2

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

Write register Write Registers data 16

Sign extend

Write data

Data memory

MemRead

Ins truction [5 0] ALUOp

Sinais de controle Tabela da figura 5.18

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

124

Figura 5.19 - Datapath com a Unidade de Controle

0 M u x Add A dd 4 Instruct ion [31 26] Co ntrol Reg Dst Branch Me mRead Me mt oReg ALUOp Me mWrit e ALUSrc RegWrit e Re ad register 1 Shift left 2 ALU result 1 PCSrc

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

Read dat a 1 Re ad register 2 Registers Read Write dat a 2 register Write data

0 M u x 1

Zero ALU ALU result

Address

Read data Data memory

Write da ta Instruct ion [15 0] 16 Sign extend 32 ALU control

1 M u x 0

Instruction [5 0]

Sinais de controle Tabela da figura 5.20

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

125

Operao do Datapath instruo R-type add $t1,$t2,$t3 fetch da instruo leitura de $t2 e $t3 operao da ULA com os dados lidos resultado da ULA escrito em $t1 Figura 5.21 Fetch e incremento de PC instruo R-TYPE

0 M u x Add Add 4 I nstruction [31 26] Control RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Shift le ft 2 ALU re sult 1

I nstruction [25 21] PC Read ad dress Instruction [3 1 0] Instruction memory I nstruction [15 11] I nstruction [20 16] 0 M u x 1

Read da ta 1 Read register 2 Registers Read Write da ta 2 register Write data

Zero 0 M u x 1 ALU ALU result Address Read data Data memory 1 M u x 0

Write data I nstruction [15 0] 16 Sign e xtend 32 ALU control

Instruction [5 0]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

126

Figura 5.22 Leitura dos registradores e decodificao instruo R-TYPE


0 M u x ALU Add result Add 4 Instruction [31 26] RegDst Branch MemRead MemtoReg Control ALUO p MemWr ite 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 regis ter 1 Shift left 2 1

Read data 1 Read regis ter 2 Register s Read Wr ite data 2 regis ter Wr ite data

0 M u x 1

Z ero ALU ALU result

Address

Read data Data memor y

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

1 M u x 0

Instruc tion [5 0]

Figura 5.23 operao da ULA instruo R-TYPE


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

Instruction [31 26]

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]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

127

Figura 5.24 Escrita no registrador instruo R-TYPE


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

Instruction [31 26]

Control

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

0 M u x 1

ALU

Zero ALU r esult

Address

Read data Data memory

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

1 M u x 0

Instr uction [5 0]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

128

Instruo load word lw $t1, offset($t2) Instruction Fetch $t2 lido ULA 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 Figura 5.25 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 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

Control

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]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

129

Instruo de branch beq $t1,$t2,offset Fetch da instruo $t1 e $t2 so lidos ULA 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 Figura 5.26 Datapath para a instruo beq
0 M u x Add Add 4 Instr uction [31 26] RegDst Branch MemRead Control MemtoReg ALUOp MemWrite ALUSr c RegWr ite Instr uction [25 21] PC Read address Instruction [31 0] Instruction memory Instr uction [15 11] Instr uction [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

Z er o ALU ALU result

Addr ess

Read data Data memory

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

1 M u x 0

Instruction [5 0]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

130

Tabela da figura 5.27 Tabela verdade para as funes de controle.

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

131

Instruo de jump

2
31-26

endereo
25-0

PC formado pelos 4 bits mais significativos + 26 bits do imediato + 00 (deslocamento de 2) Figura 5.29 Datapath para instruo de jump

Instruction [25 0]

Shift 26 left 2 28

Jump address [31 0] 0 M u x ALU Add result 1 1 M u x 0

PC+4 [31 28]

Add 4 Instruction [31 26] Control

RegDst Jump Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] Read register 1

Shift left 2

PC

Read address Instruction [31 0] Instruction memory

Instruction [20 16] 0 M u x 1

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

Instruction [15 11]

0 M u x 1

Z ero 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]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

132

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, ULA, data memory e register file) Exemplo. Sejam os seguintes tempos de operao: unidade de memria : 2 ns ULA 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 ? 1. Uma implementao na qual cada instruo opera em um ciclo de clock de tamanho fixo 2. 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)

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

133

Para comparar a performance, assuma que o seguinte conjunto de instrues : 24% de loads, 12% de store, 44% instrues tipo R, 18% de branches e 2% de jumps. Soluo: tempo de execuo CPU = nmero de instrues X CPI X perodo do clock CPI = 1 tempo de execuo CPU = nmero de instrues X 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. 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

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

134

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 perfomancevc / CPU perfomancesc = = 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 Exemplo FP unit 8ns para add e 16ns para mul todos os loads tem o mesmo tempo e so 33% das instrues todos os stores tem mesmo tempo e so 21% das instrues instrues tipo R so 27 % das instrues Branches so 5 % e jumps 2% das instrues FP add e sub tem o mesmo tempo e juntos tem 7% das instrues FP mul e div tem o mesmo tempo e &5 das instrues

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

135

Soluo CPU perfomancevc / CPU perfomancesc = = tempo de execuo CPUsc / tempo de execuo CPUvc Para a mquina de nico clock perodo do clock = ciclo da instruo FP mul (mais longa) 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% = 7.0 ns Portanto: CPU perfomancevc / CPU perfomancesc = = tempo de execuo CPUsc / tempo de execuo CPUvc = 20/7 = 2.9

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

136

Implementao Multiciclos a execuo de cada instruo dividida em etapas, onde cada etapa corresponde a uma operao de uma unidade funcional implementao multiciclos cada etapa executada em um ciclo, isto permite que uma unidade funcional possa ser usada por mais de uma instruo compartilhamento pode diminuir a quantidade de HW necessria Figura 5.30 Datapath multiciclos

Instruction register PC Address Instruction or data Memory data register

Data A Register # Registers Register # B Register # ALU ALUOut

Memory

Data

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

137

Diferenas com a verso single-cycle Uma s memria usada para dados e instrues Uma ULA em vez de uma ULA 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 ULA Incluso de multiplexadores Figura 5.31 Datapth multiciclos para as instrues bsicas

PC

0 M u x 1

Address
Memory MemDat a Writ e data

Instruction [25 21] Instruction [20 16] Instruction [15 0] Instruction register Instruction [15 0] 0 M I nstruction u x [ 15 11] 1 0 M u x 1 16

Read register 1 Read Read register 2 data 1 Regist ers Write Read register data 2 Write data A

0 M u x 1

Zero ALU ALU result

A LUOut

B 4

0 1 M u 2 x 3

Memory data register

Sign extend

32

S hift left 2

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

138

Figura 5.32 - 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

Ins truction [25 21] Ins truction [20 16] Ins truction [150] Instruction regis ter Instruction [15 0] Memory data regis ter 0 M Instruction u x [15 11] 1 0 M u x 1 16

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

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

Zero ALU ALU result

ALUOut

Sign ex tend

32

Shift left 2

ALU control

Instruction [5 0]

MemtoReg

ALUSrcB ALUOp

Figura 5.33 - Datapath para implementao multiciclos com sinais de controle completo incluindo atualizao do PC
PCSo urce PCWrite Outpu ts AL UOp IorD ALUSrcB MemRea d ALUSrcA Co ntrol MemWri te Reg Wri te Memto Reg IRWri te Op [5 0 ] Re gDst 0 M x 2 PCWrite Con d

Instr uction [25 0] Instruction [31-26] Address Memory MemData Write data Instr uction [25 21] Instr uction [20 16] Instr uction [15 0] Instr uction register Instruction [15 0] Memory data r egister 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 Register s Write Read register data 2 Write data A 0 M u x 1 0 1 M u 2 x 3

26

S hift left 2

28

Jum p ad dre ss [3 1-0 ]

1 u

PC

0 M u x 1

PC [31- 28 ]

Zero ALU ALU r esult ALUOut

B 4

ALU contr ol

Instruction [5 0]

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

139

Figura 5.34 tabela com Sinais de Controle

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

140

Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle 1. Instruction fetch O incremento do PC e leitura da 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 ULA), ALUSrcB (01 4 para a ULA), ALUOp (00 add) e PCWrite (1 o novo valor de PC no visvel at o prximo ciclo de clock). 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 armazen-los nos registradores A e B; computar os endereos de branch e guard-los e 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 ULA), ALUSrcB (11- sign extended e shifted enviado a UAL) e ALUOp (00 add).

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

141

3. Execution, memory address computation ou branch completion Primeira etapa determinada pelo tipo de instruo. Para cada classe temos: Referncia memria: ALUOut = A + sign-extend (IR[15-0]); Sinais ativados: ALUSrcA (1 - A para ULA), ALUSrcB (10 saida da unidade sign-extension para a ULA) e ALUOp (00 - add). Instrues Aritmticas-lgicas ( 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 sianis de controle da ULA). 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).

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

142

Jump PC = PC[31-28] || (IR[25-0]<<2) Sinais ativados: PCSource(10- jump address para PC) e PCWrite (1). 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 ou 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 ULA). 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).

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

143

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). Figura 5.35 - Resumo das etapas de execuo para as diversas classes

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

144

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:

Figura 5.36 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)

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

145

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

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

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

Start

(O p

or W ') = 'L

( Op

Memory reference FSM (Figure 5.38)

R-type FSM (Figure 5.39)

Branch FSM (Figure 5.40)

(O

W ') = 'S

p=

(Op

Jump FSM (Figure 5.41)

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

(Op = 'JMP')

'B EQ ')

146

Figura 5.38 Diagrama de estados - Memory reference instructions

From state 1 (Op = 'LW') or (Op = 'SW') Memory address computation 2 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00

(O

(Op = 'LW')

p = W 'S ')

Memory access 5

Memory access

3 MemRead IorD = 1

MemWrite IorD = 1

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

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

147

Figura 5.39 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)

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

148

Figura 5.40 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)

Figura 5.41 Diagrama de estados - Jump instructions


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

To state 0 (Figure 5.37)

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

149

Figura 5.42 Diagrama de estados - Figura Unidade de Controle completa

Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00
')
(O

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

Start

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


= (Op '

(O

) LW'

p= or ( O

'SW

Execution 6 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 8

Branch completion

(Op = 'J')

yp R-t p=

'B EQ

e)

')

Jump completion

9 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 PCWrite PCSource = 10

(O

(Op = 'LW')

p = W 'S ')

Memory access 5

Memory access 7 MemWrite IorD = 1

R-type completion

3 MemRead IorD = 1

RegDst = 1 RegWrite MemtoReg = 0

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

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

150

CPI em uma CPU multicycles Exemplo: Usando a figura anterior o conjunto 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 (da figura anteiror): loads: 5 stores: 4 R-type : 4 branches : 3 jumps: 3

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).

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

151

Figura 5.43 - Implementao de uma Unidade de Controle com mquina de estados finitos

Combinational control logic

Datapath control outputs

Outputs

Inputs

Next state Inputs from instruction register opcode field State register

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

152

Microprogramao Projeto simplificado da Unidade de Controle Representao grfica til para pequenas mquinas de estados. 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. Figura 5.44 Tabela com os sete campos da microinstruo

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

153

As microinstrues so colocadas em uma ROM ou PLA. O endereamento seqencialmente.

da

microinstruo

dado

Existem 3 modos diferentes para escolher a prxima microinstruo:

1. Incrementar o endereo da microinstruo corrente para obter ao endereo da prxima microinstruo. Este comportamento indicado, colocando Seq no campo de Seqncia.

2. Desviar para a microinstruo que inicia a execuo da prxima instruo (estado 0 - fetch). Este comportamento indicado colocando Fetch no campo de Seqncia.

3. 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.

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

154

Figura 5.45 Tabela com os valores dos campos de uma microinstruo

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

155

Microprograma Fetch e decode Primeira tabela pgina 404

Primeira microinstruo Segunda tabela pgina 404

Segunda microinstruo Terceira tabela pgina 404

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

156

Dispatch table 1 usada para selecionar uma das 4 seqncias de microinstrues: Mem1 instrues de referncia memria Rformat1 instrues R-type BEQ1 instrues beq JUMP1 instrues de jump

Microprograma para Mem1 Tabelas da pgina 405 e primeira tabela da pgina 406

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

157

Microprograma para Rformat1 As trs ltimas tabelas da pgina 406

Microprograma para BEQ1 As duas primeiras tabelas da pgina 407

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

158

Microprograma para JUMP1 As duas ltimas tabelas da pgina 407

Figura 5.46 - Microprograma para unidade de controle

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

159

Figura 5.47 - 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

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

160

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.

Tabela da pgina 411 Tipo de Evento Requisio de I/O Chamada Overflow aritimtico Uso de instruo no definida Malfuncionamento do hardware Fonte Externa Interna Interna Interna Ambos Terminologia MIPS Interrupo Exceo Exceo Exceo Exceo ou Interrupo

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

161

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 e 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.

Tabela da pgina 412 Tipo de exceo Intruo no definida Overflow aritimtico Endereo no vetor de exees(hexa) C0 00 00 00hex C0 00 00 20hex

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

162

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.

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

163

Figura 5.48 - Datapath que trata excees


P CWriteCond P CWrite IorD M emRead M emWr ite M emtoReg IRWrite Op [5 0] Control Outputs CauseWrite IntCaus e EPCWrite PCS ource ALUOp ALUSrc B ALUSrc A RegWr ite RegDst 0

Instruction [25 0] Instruction [31-26] PC 0 M u x 1 Address Memory MemData Instruction [15 0] Write data In struction register Instruction [15 0] Me mory data register Instruction [25 21] Instruction [20 16] 0 M Inst ruction u x [15 11] 1 0 M u x 1 16 Sign extend 32 Shift le ft 2 Read register 1 Read Read register 2 data 1 Registers Write Read register data 2 Write data A 0 M u x 1

26

S hift left 2

28

Jum p address [31-0]

1M
2 u x

C O 00 00 00
PC [31-28]

B 4

Zero AL U ALU result

ALU Out

EPC

0 1M u 2 x 3

1 ALU control

0 M u x 1

Cause

Instruction [5 0 ]

Para detectar as excees e transferir o controle para o estado apropriado temos: Instruo indefinida: detectada quando o prximo estado definido do estado 1 para o valor op. Tratamos definindo o prximo estado, para qualquer valor de op, como estado 10. Overflow aritmtico: o sinal de overflow (sada da ULA) usado para modificar a mquina de estados para especificar um prximo estado para o estado 7.

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

164

Figura 5.49 Estados para tratar excees.


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

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

To state 0 to begin next instruction

Figura 5.50 - Unidade de controle modificada para tratar exceo


Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00
ty Rp= ) pe

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


p (O

Start

Q ')

(Op = 'J')

r) th e =o

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


(Op

W' = 'L

Op or (

W ') = 'S Execution

Branch completion

(O p

(O

'B E

Jump completion

6 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10

ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01

9 PCWrite PCSource = 10

p (O

(Op = 'LW')

= W 'S ')

Memory access 5

Memory access 7 MemWrite IorD = 1

R-type completion 11 RegDst = 1 RegWrite MemtoReg = 0 Overfl ow

3 MemRead IorD = 1

IntCause = 1 CauseWrite 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

ARQUITETURA DE COMPUTADORES

- RICARDO PANNAIN

165

Vous aimerez peut-être aussi