arquiteturas de computadores
TRANSCRIPT
![Page 1: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/1.jpg)
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
![Page 2: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/2.jpg)
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
![Page 3: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/3.jpg)
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
![Page 4: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/4.jpg)
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
![Page 5: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/5.jpg)
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
![Page 6: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/6.jpg)
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
![Page 7: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/7.jpg)
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
![Page 8: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/8.jpg)
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
![Page 9: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/9.jpg)
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
![Page 10: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/10.jpg)
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
![Page 11: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/11.jpg)
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
![Page 12: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/12.jpg)
Caminho de dados: Instrução Armazena/Busca & Incremento do PC
Instrução <- MEM[PC]PC <- PC + 4
RDMemory
ADDR
PC
Instruction
4
ADD
![Page 13: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/13.jpg)
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
![Page 14: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/14.jpg)
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
![Page 15: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/15.jpg)
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
![Page 16: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/16.jpg)
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)];
![Page 17: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/17.jpg)
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]
![Page 18: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/18.jpg)
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
![Page 19: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/19.jpg)
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)
![Page 20: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/20.jpg)
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)
![Page 21: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/21.jpg)
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
![Page 22: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/22.jpg)
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
![Page 23: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/23.jpg)
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
![Page 24: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/24.jpg)
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
![Page 25: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/25.jpg)
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
![Page 26: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/26.jpg)
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
![Page 27: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/27.jpg)
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
![Page 28: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/28.jpg)
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
![Page 29: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/29.jpg)
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
![Page 30: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/30.jpg)
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
![Page 31: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/31.jpg)
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
![Page 32: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/32.jpg)
Gerenciando bits de controle da ALU
Tabela verdade para os bits de controle da ALU
![Page 33: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/33.jpg)
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
![Page 34: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/34.jpg)
Caminho de dados com controle I
Adicionando controle ao caminho de dados III (e um novo multiplexadorpara selecionar registrador destino):
![Page 35: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/35.jpg)
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
![Page 36: Arquiteturas de Computadores](https://reader035.vdocuments.net/reader035/viewer/2022072118/62d911094b280805356a1738/html5/thumbnails/36.jpg)
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