Vous êtes sur la page 1sur 45

Arquitetura de Computadores MIPS Caminho de dados Monociclo

Ivan Saraiva Silva

MIPS monociclo
Caminho de dados monociclo
Todas as instrues so realizadas em um nico ciclo

Vamos analisar um caminho de dados simplificado, contendo apenas


Acesso a memria: lw e sw Aritmticas e lgicas : add, sub, and, or e slt Controle de fluxo: beq e j

MIPS monociclo
Implementao genrica:
Usa o registrador (PC) para enderear instrues Busca instrues na memria L registradores (Tipo R) Decodifica para saber que operao realizar Realiza a oprerao

Viso geral abstrata


Um bloco combinacional Trs blocos seqenciais (memria e registradores)
Por que duas memrias?
Data Register # PC Address Instruction memory Instruction Registers Register # Register # Data Data memory ALU Address

Nossa implementao
Regime de temporizao (Relgio)
Cada registrador possui um sinal de carga particular que ativado com lgica direta Os registradores so disparados pela borda ascendente do relgio No desenho ao lado, quando CK=, se cargaR1=1, ento R1entradas

Nossa implementao
Regime de temporizao (Relgio)
Condio para o funcionamento do bloco combinacional

Nossa implementao

MIPS monociclo
Busca da Instruo - elementos necessrios:
a memria onde esto armazenadas as instrues o contador de programa (PC) para armazenar o endereo da instruo um somador para calcular o endereo da prxima instruo

Busca de Instrues

Um bloco de busca, ainda simplificado

MIPS monociclo
Banco de Registradores - elementos necessrios:
Um conjunto de 32 registradores onde podem ser armazenados operandos

MIPS monociclo
Banco de registradores
Usam flip-flops tipo D
Read register number 1 Register 0 Register 1 Register n 1 Register n Read register number 2 M u x Read data 1

Read register number 1 Read register number 2 Write register


Register file

Read data 1

M u x

Read data 2

Write data

Read data 2 Write

Banco de registradores
Um implementao, simples, mas antiga
Write 0 1 Register number n-to-1 decoder n 1 n C Register 0 D C Register 1 D

C Register n 1 D C Register n Register data D

MIPS monociclo
Memria de dados - elementos necessrios
Uma memria onde so armazenados dados Tipicamente instrues lw e sw se referem a esta memria

MIPS monociclo
Agrupando elementos
Caso das instrues: add, sub, and, or e slt Instrues tipo R:
add $t1, $t2, $t3

O contedo de dois registradores so usados na operao (realizada na ula MIPS j vista) O resultado da operao armazenado em um terceiro registrador

ULA MIPS

Slice ULA MIPS ULA MIPS n Bits

MIPS monociclo

MIPS monociclo
Agrupando elementos necessrios
Caso de uma escrita na memria: sw
sw $so, 5($s1)

O endereo de escrita obtido pela soma de um registrador de base com um deslocamento de 16 bits estendido para 32 bits O contedo de um segundo registrador escrito na memria

MIPS monociclo

MIPS monociclo
Agrupando elementos necessrios
Caso de uma leitura da memria: lw
lw $so, 5($s1)

O endereo de escrita obtido pela soma de um registrador de base com um deslocamento de 16 bits estendido para 32 bits O dado vindo da memria e escrito em um segundo registrador

MIPS monociclo

MIPS monociclo
Agrupando elementos necessrios
Caso da instruo: beq
beq $so, $s1, 5

Comparar dois registradores usando a ULA para fazer uma subtrao Se ocorrer desvio, o endereo de desvio PC+4+deslocamento O deslocamento deve ser estendido para 32 bits (pois est em 16 bits)

MIPS monociclo

MIPS monociclo
Lembrar

...

MIPS monociclo
Na verso monociclo qualquer instruo executa em um ciclo de relgio O perodo do relgio deve ser longo o suficiente para acomodar a instruo mais demorada Cada unidade funcional s pode ser usada uma nica vez durante a execuo de uma instruo qualquer,
Por isso necessitamos de uma memria de instrues e outra de dados

MIPS monociclo

MIPS monociclo
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 ALU Add result

Read data 1

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

Read Write data 2 register Write data Registers 16 Sign 32 extend

Write Data data memory MemRead

ALU control

Instruction [5 0] ALUOp

MIPS monociclo
add $s2, $s3, $s4; Instrues tipo R, mas no JR/JALR

MIPS monociclo
lw $s4, 1000($s5)

MIPS monociclo
beq $s4, $s5, LABEL

MIPS Monociclo : Controle


A ULA tem 3 entradas de controle (8 combinaes possveis)
Somente 5 combinaes so usadas

Classes de instrues que usam a ULA


lw/sw: adio (para calcular o endereo de acesso memria) beq: subtrao (para testar se os registradores Rs e Rt so iguais) Instrues tipo R: depende do campo funct, podendo ser (add, sub, and, or e slt)

MIPS Monociclo : Controle

MIPS Monociclo : Controle


A ULA pode ter controle prprio, separado do bloco de controle principal (e portanto, menos complexo e mais rpido) Este controle tem como entradas:
Os 6 bits do campo funct 2 bits vindos do bloco de controle global (ULAOp), que serve para identificar a qual classe a instruo a ser executada pertence

MIPS Monociclo : Controle

MIPS Monociclo : Controle


Correspondncia entre funct & ULAOp com controle da ULA
Apenas algumas das 64 combinaes possveis a partir dos 6 bits do campo funct so de interesse

MIPS Monociclo : Controle


Tabela Verdade para gerao do controle da ULA

MIPS Monociclo : Controle


Circuito de Controle da ULA

MIPS Monociclo : Controle

MIPS Monociclo : Controle


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

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

Use rt not rd

Instruction [5 0]

MIPS Monociclo : Controle


Instruction R-format lw sw beq RegDst 1 0 X X ALUSrc 0 1 1 0 MemtoReg 0 1 X X Reg Write 1 1 0 0 Mem Read 0 1 0 0 Mem Write 0 0 1 0 Branch 0 0 0 1 ALUOp1 1 0 0 0 ALUp0 0 0 0 1

MIPS Monociclo : Controle


Instruo tipo R

Instruo sw

Instruo lw

MIPS Monociclo : Controle


Instruo beq

MIPS Monociclo : Controle


Subconjunto de opcods para as instrues implementadas

MIPS Monociclo : Controle


Tabela verdade para o controle principal

MIPS monociclo
Incluso da Instruo Jump (j)
A instruo jump altera o valor de PC para:
Deslocamento imediato codificado na instruo deslocado de dois bits a esquerda (deslocamento em palavras) Concatenado com os 4 bits de mais significativos de PC+4

O caminho de dados atualizado muda para:

MIPS monociclo

Vous aimerez peut-être aussi