arquiteturas de computadores
TRANSCRIPT
Arquiteturas de Computadores
Implementação monociclo de MIPS
Arquiteturas de Computadores
Fontes dos slides: Patterson &Hennessy book website(copyright Morgan Kaufmann)e Dr. Sumanta Guha
Implementação do conjunto de instruções MIPS Simplificado para conter somente
Instruções lógico-aritméticas: add, sub, and, or, slt Instruções de referência à memória: lw, sw Instruções de controle de fluxo: beq, j
Implementando MIPS
op rs rt offset
6 bits 5 bits 5 bits 16 bits
op rs rt rd functshamt
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
R-Format
I-Format
op address
6 bits 26 bits
J-Format
Visão alto nível da implementação do ciclo de busca/execução de uma instrução usa o registrador contador de instrução (PC) para fornecer o endereço da
instrução busca a instrução na memória e incrementa PC usa campos da instrução para selecionar os registradores a serem lidos executa a instrução repita …
Implementando MIPS: Ciclo Busca/Execução
RegistersRegister #
Data
Register #
Data memory
Address
Data
Register #
PC Instruction ALU
Instruction memory
Address
Estilos para implementação do processador Monociclo
Executa cada instrução em um ciclo de relógio O ciclo de relógio deve ser longo o suficiente para que a
instrução que demanda maior tempo seja executada desvantagem: tão rápido quanto a instrução mais lenta
Multi-Ciclos Quebra o ciclo de busca/execução em vários passos executa 1 passo em cada ciclo de relógio vantagem: cada instrução usa somente o número de ciclos que
precisa Pipelined
executa cada instrução em vários passos executa 1 passo / instrução em cada ciclo de relógio Processa múltiplas instruções em paralelo
Dois tipos de elementos funcionais no hardware: elementos que operam os dados (denominados elementos
combinacionais ) elementos que contêm dados (denominados elementos de estado ou
sequenciais)
Elementos funcionais
Elementos Combinacionais
Trabalham com uma função input output, e.g., ALU Lógica combinacional lê dados de entrada de um registrador e escreve
dados no mesmo registrador ou em um diferente Leitura/escrita acontecem em um único ciclo–elemento combinacional não
armazena dado de um ciclo para outro
Clock cycle
State element
1Combinational logic
State element
2
State element Combinational logic
Unidades de hardware com lógica combinacional
Elementos de Estado
Elementos de estado armazenam dados, e.g., registradores e memória
Todos os elementos de estado definem o estado da máquina
Elementos de estado no caminho de dados: Registradores
Read register number 1 Read
data 1
Read data 2
Read register number 2
Register fileWrite register
Write data Write
Registradores com duas portas para leiturae uma porta para escrita
Clock
5 bits
5 bits
5 bits
32 bits
32 bits
32 bits
Sinal de controle
Implementação:
n-to-1 decoder
Register 0
Register 1
Register n – 1C
C
D
DRegister n
C
C
D
D
Register number
Write
Register data
01
n – 1n
M u x
Register 0Register 1
Register n – 1Register n
M u x
Read data 1
Read data 2
Read register number 1
Read register number 2
Portas de entrada são implementadas com2 multiplexadores de 5 bits para selecionar 32 registradores
Porta de saída é implementada com um decodificador5-to-32 para 32 registradores. O relógio é relevantepara a escrita porque o estado do registrador sópode ser trocado na transição do relógio
Clock
Clock
Elementos de estado no caminho de dados: Registradores
Implementação de MIPS monociclo
A primeira implementação de MIPS irá usar um único ciclo longo de relógio para cada instrução
Cada instrução começa a ser executada em uma transição para cima do relógio e termina na próxima transição para cima
Esta abordagem não é prática porque é muito mais devagar que uma implementação multiciclo onde cada instrução pode necessitar de números de ciclos diferentes Em uma implementação monociclo, cada instrução deve utilizar o
mesmo tempo que a instrução mais lenta necessita Em uma implementação multiciclo, este problema é evitado
porque instruções mais rápidas necessitam um número menor de ciclos
Embora a abordagem monociclo não seja utilizada na prática, ela é simples e fácil de entender
Caminho de dados: Instrução Armazena/Busca & Incremento do PC
PC
Instruction memory
Instruction address
Instruction
a. Instruction memory b. Program counter
Add Sum
c. Adder
PC
Instruction memory
Read address
Instruction
4
Add
Três elementos usados para armazenar e buscar instruções eincrementar o PC
Caminho de dados
Caminho de dados: Instrução Armazena/Busca & Incremento do PC
Instrução <- MEM[PC]PC <- PC + 4
RDMemory
ADDR
PC
Instruction
4
ADD
Caminho de dados: Instrução do tipo R
ALU control
RegWrite
RegistersWrite register
Read data 1
Read data 2
Read register 1
Read register 2
Write data
ALU result
ALU
Data
Data
Register numbers
a. Registers b. ALU
Zero5
5
5 3
InstructionRegisters
Write register
Read data 1
Read data 2
Read register 1
Read register 2
Write data
ALU result
ALUZero
RegWrite
ALU operation3
Dois elementos usados para implementarinstruções do tipo R
Caminho de dados
Caminho de dados: Instrução do tipo R
add rd, rs, rt
R[rd] <- R[rs] + R[rt];
5 5 5
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
op rs rt rd functshamt
Operation
ALU Zero
Instruction
3
Caminho de dados: Instrução Carrega/Armazena
16 32Sign
extend
b. Sign-extension unit
MemRead
MemWrite
Data memory
Write data
Read data
a. Data memory unit
Address
Instruction
16 32
RegistersWrite register
Read data 1
Read data 2
Read register 1
Read register 2
Data memory
Write data
Read data
Write data
Sign extend
ALU result
ZeroALU
Address
MemRead
MemWrite
RegWrite
ALU operation3
Dois elementos adicionais usados paraimplementar instruções do tipo carrega/armazena
Caminho de dados
Caminho de dados: Instrução Carrega/Armazena
op rs rt offset/immediate
5 5
16
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RDWD
MemRead
MemoryADDR
MemWrite
5
lw rt, offset(rs)
R[rt] <- MEM[R[rs] + s_extend(offset)];
Caminho de dados: Instrução Carrega/Armazena
op rs rt offset/immediate
5 5
16
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RDWD
MemRead
MemoryADDR
MemWrite
5
sw rt, offset(rs)
MEM[R[rs] + sign_extend(offset)] <- R[rt]
Caminho de dados: Instrução de desvio
16 32Sign
extend
ZeroALU
Sum
Shift left 2
To branch control logic
Branch target
PC + 4 from instruction datapath
Instruction
Add
RegistersWrite register
Read data 1
Read data 2
Read register 1
Read register 2
Write data
RegWrite
ALU operation3
Caminho de dados
Caminho de dados: Instrução de desvio
beq rs, rt, offset
op rs rt offset/immediate
5 5
16
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
EXTND
16 32
Zero
ADD
<<2
PC +4 from instruction datapath
if (R[rs] == R[rt]) then PC <- PC+4 + s_extend(offset<<2)
Caminho de dados para MIPS I:Monociclo
Entrada deve ser conteúdo de registrador (formato R) ou metade da instrução com extensão de sinal(formato carrega/armazena)
Combinando o caminho de dados para instruções do tipo Re carrega/armazena usando dois multiplexadores
Dados vêm da ALU (tipo R) ou da memória (carrega)
Instruções do tipo R
add rd,rs,rt5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
MUXALUSrc
MemtoReg
Instrução do tipo carrega
lw rt,offset(rs)5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
MUXALUSrc
MemtoReg
Instrução do tipo armazena
sw rt,offset(rs)5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
MUXALUSrc
MemtoReg
Caminho de dados para MIP II: Monociclo
PC
Instruction memory
Read address
Instruction
16 32
Registers
Write registerWrite data
Read data 1
Read data 2
Read register 1Read register 2
Sign extend
ALU result
Zero
Data memory
Address
Write data
Read data M
u x
4
Add
M u x
ALU
RegWrite
ALU operation3
MemRead
MemWrite
ALUSrcMemtoReg
Busca da instrução add
Memória de dados e instruções separadasporque leitura de memória e instrução ocorrem nomesmo ciclo de relógio
Somador separado da ALU porque as operações da ALUe incremento do PC devem ocorrer no mesmo ciclo de relógio
Caminho de dados para MIP III: Monociclo
PC
Instruction memory
Read address
Instruction
16 32
Add ALU result
M u x
Registers
Write registerWrite data
Read data 1
Read data 2
Read register 1Read register 2
Shift left 2
4
M u x
ALU operation3
RegWrite
MemRead
MemWrite
PCSrc
ALUSrcMemtoReg
ALU result
ZeroALU
Data memory
Address
Write data
Read data M
u x
Sign extend
Add
Incluindo a capacidade de desvio e outro multiplexador
Endereço da instrução éPC+4 ou endereço do desvio
Precisa de um somador extra porque os dois operam no mesmo ciclo
Novo multiplexador
Execução da instrução add
add rd, rs, rt
5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
ALUSrc
MemtoReg
ADD
<<2
RDInstruction
Memory
ADDR
PC
4
ADD
ADD
MUX
MUX
PCSrc
Execução da instrução lw
lw rt,offset(rs)
5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
ALUSrc
MemtoReg
ADD
<<2
RDInstruction
Memory
ADDR
PC
4
ADD
ADD
MUX
MUX
PCSrc
Execução da instrução sw
sw rt,offset(rs)
5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
ALUSrc
MemtoReg
ADD
<<2
RDInstruction
Memory
ADDR
PC
4
ADD
ADD
MUX
MUX
PCSrc
Execução da instrução beq
beq r1,r2,offset
5 516
RD1
RD2
RN1 RN2 WN
WD
RegWrite
Register File
Operation
ALU
3
EXTND
16 32
Zero
RD
WDMemRead
DataMemory
ADDRMemWrite
5
Instruction32
MUX
ALUSrc
MemtoReg
ADD
<<2
RDInstruction
Memory
ADDR
PC
4
ADD
ADD
MUX
MUX
PCSrc
Controle
Os dados de entrada da unidade de controle são: Os bits do campo opcode da instrução
A unidade de controle gera Sinais de controle para a ALU Sinais de escrita e leitura para os elementos de armazenamento Sinais de controle para cada multiplexador
Controle da ALU
Como controlar a ALU: controle principal envia 2-bits ALUOp para o campo de controle da ALU. Baseado em ALUOp e campo funct da instrução o controle da ALU gera os 3 bits do campo de controle da ALU
Campo de controle Functionda ALU
000 and001 or010 add110 sub111 slt
ALU deve executar add para carregamentos/armazenamentos (ALUOp 00) sub para desvios (ALUOp 01) um entre and, or, add, sub, slt para instruções do tipo R, dependendo do campo da instrução
funct (ALUOp 10)
MainControl
ALUControl
2
ALUOp
6
Instructionfunct field
3
ALU controlinput
ToALU
Gerenciando bits de controle da ALU
Tabela verdade para os bits de controle da ALU
Projetando o controle principal
Observações sobre o formato da instrução MIPS opcode está sempre nos bits 31-26 Dois registradores que devem ser lidos são sempre rs (bits 25-21) e rt (bits 20-16) Registrador base para armazenamentos e carregamentos é sempre rs (bits 25-21) Deslocamento de 16-bits para desvios e armazenamentos e carregamentos é sempre
definido pelos bits 15-0 Registrador destino para carregamentos é definido pelos bits 20-16 (rt) enquanto que para
instruções do tipo R é definido pelos bits 15-11 (rd) (necessita de multiplexador)
31-26 25-21 20-16 15-11 10-6 5-0
31-26 25-21 20-16 15-0
opcode
opcode
rs
rs
rt
rt address
rd shamt functR-type
Load/store or branch
Caminho de dados com controle I
Adicionando controle ao caminho de dados III (e um novo multiplexadorpara selecionar registrador destino):
Sinais de controle
Nome do sinal Efeito quando valor =0 Efeito quando valor =1
RegDst O identificador do registrador a ser escrito vem O identificador do registrador a ser escrito vemdos bits 20-16 dos bits 15-11
RegWrite Nenhum O registrador identificado é escrito com os dados que estão em Write data input
ALUSrc O segundo operando da ALU vem O segundo operando da ALU vem do valor com sinal estendido do segundo registrador lido (Read data 2) dos 16 bits da instrução
PCSrc O conteúdo do PC é substituído pela saída do somador O conteúdo do PC é substituído pela saída do somador que calcula o valor PC + 4 que calcula o endereço do desvio
MemRead Nenhum O conteúdo da memória que está no endereço é colocado na saída Read data output
MemWrite Nenhum O conteúdo da memória endereçada é substituído pelo conteúdo que está em Write data input
MemtoReg O valor de entrada de escrita do registrador O valor de entrada de escrita do registrador Write data input vem da ALU Write data input vem da memória
Efeitos dos sete sinais de controle
Caminho de dados com controle II
PC
Instruction memory
Read address
Instruction [31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoRegALUOpMemWrite
RegWrite
MemReadBranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0M u x
0
1
Control
Add ALU result
M u x
0
1
RegistersWrite register
Write data
Read data 1
Read data 2
Read register 1
Read register 2
Sign extend
M u x
1
ALU result
Zero
PCSrc
Data memory
Write data
Read data
M u x
1
Instruction [15 11]
ALU control
Shift left 2
ALUAddress
Unidade de controle: a entrada são os 6-bits do campo opcode da instrução,a saída são 7 sinais de 1-bit e 2-bits de sinal ALUOp