Aula MIPS Monociclo

45
Arquitetura de Computadores MIPS – Caminho de dados Monociclo Monociclo Ivan Saraiva Silva

Transcript of Aula MIPS Monociclo

Arquitetura de Computadores

MIPS – Caminho de dados

MonocicloMonociclo

Ivan Saraiva Silva

MIPS monociclo

• Caminho de dados monociclo

– Todas as instruções são realizadas em um único

ciclociclo

• Vamos analisar um caminho de dados

simplificado, contendo apenas

– Acesso a memória: lw e sw

– Aritméticas e lógicas : add, sub, and, or e slt

– Controle de fluxo: beq e j

MIPS monociclo

• Implementação genérica:

– Usa o registrador (PC) para endereçar

instruções

– Busca instruções na memória

– Lê registradores (Tipo R)

– Decodifica para saber que operação realizar

– Realiza a opreração

Visão geral abstrata

• Um bloco combinacional

• Três blocos seqüenciais (memória e

registradores)registradores)

– Por que duas memórias?

Registers

Register #

Data

Register #

Data�memory

Address

Data

Register #

PC Instruction ALU

Instruction�memory

Address

Nossa implementação

• Regime de temporização (Relógio)

– Cada registrador possui um sinal de carga

particular que é ativado com lógica diretaparticular que é ativado com lógica direta

– Os registradores são “disparados” pela borda

ascendente do relógio

– No desenho ao lado, quando CK=↑, se

cargaR1=1, então R1←entradas

Nossa implementação

• Regime de temporização (Relógio)

– Condição para o funcionamento do bloco

combinacionalcombinacional

Nossa implementação

MIPS monociclo

• Busca da Instrução - elementos necessários:

– a memória onde estão armazenadas as

instruçõesinstruções

– o contador de programa (PC) para armazenar o

endereço da instrução

– um somador para calcular o endereço da

próxima instrução

Busca de Instruções

Um bloco de busca,Um bloco de busca,

ainda simplificado

MIPS monociclo

• Banco de Registradores - elementos

necessários:

– Um conjunto de 32 registradores onde podem – Um conjunto de 32 registradores onde podem

ser armazenados operandos

MIPS monociclo

• Banco de registradores

– Usam flip-flops tipo D

Read register�

M�u�

x

Register 0

Register 1

Register n – 1

Register n

M�

u�x

Read data 1

Read data 2

number 1

Read register�

number 2

Read register�number 1 Read�

data 1

Read�data 2

Read register�number 2

Register fileWrite�register

Write�data Write

Banco de registradores

• Um implementação, simples, mas antiga

Register 0

C

Write

0

n-to-1�decoder

Register 0

Register 1

Register n – 1

C

C

D

D

Register n

C

D

D

Register number

Register data

1

n – 1

n

MIPS monociclo

• Memória de dados - elementos necessários

– Uma memória onde são armazenados dados

– Tipicamente instruções lw e sw se referem a – Tipicamente instruções lw e sw se referem a

esta memória

MIPS monociclo

• Agrupando elementos

– Caso das instruções: add, sub, and, or e slt

– Instruções tipo R:– Instruções tipo R:

• add $t1, $t2, $t3

– O conteúdo de dois registradores são usados na

operação (realizada na ula MIPS – já vista)

– O resultado da operação é armazenado em um

terceiro registrador

ULA MIPS

Slice ULA MIPS

ULA MIPS n Bits

MIPS monociclo

MIPS monociclo

• Agrupando elementos necessários

– Caso de uma escrita na memória: sw

• sw $so, 5($s1)• sw $so, 5($s1)

– O endereço de escrita é obtido pela soma de um

registrador de base com um deslocamento de 16

bits estendido para 32 bits

– O conteúdo de um segundo registrador é escrito

na memória

MIPS monociclo

MIPS monociclo

• Agrupando elementos necessários

– Caso de uma leitura da memória: lw

• lw $so, 5($s1)• lw $so, 5($s1)

– O endereço de escrita é obtido pela soma de um

registrador de base com um deslocamento de 16

bits estendido para 32 bits

– O dado vindo da memória e escrito em um

segundo registrador

MIPS monociclo

MIPS monociclo

• Agrupando elementos necessários

– Caso da instrução: beq

• beq $so, $s1, 5• beq $so, $s1, 5

– Comparar dois registradores usando a ULA

para fazer uma subtração

– Se ocorrer desvio, o endereço de desvio é

PC+4+deslocamento

– O deslocamento deve ser estendido para 32 bits

(pois está em 16 bits)

MIPS monociclo

MIPS monocicloLembrar

...

MIPS monociclo

• Na versão monociclo qualquer instrução executa

em um ciclo de relógio

• O período do relógio deve ser longo o suficiente

para acomodar a instrução mais demoradapara acomodar a instrução mais demorada

• Cada unidade funcional só pode ser usada uma

única vez durante a execução de uma instrução

qualquer,

– Por isso necessitamos de uma memória de instruções e

outra de dados

MIPS monociclo

MIPS monociclo

Add

RegWrite

4 0

M�u�x

1

Shift�

left 2

PCSrc

AddALU�

result

MemtoReg

MemRead

MemWrite

ALUOp

ALUSrc

RegDst

PC

Instruction�memory

Read�address

Instruction�[31–0]

Instruction [20–16]

Instruction [25–21]

Instruction [5–0]

RegWrite

16 32Instruction [15–0]

0

Registers

Write�register

Write�data

Write�data

Read�data 1

Read�data 2

Read�register 1

Read�register 2

Sign�extend

ALU�result

Zero

Data�memory

Address Read�data

M�u�x

1

0

M�u�x

1

0

M�u�x

1

Instruction [15–11]

ALU�control

left 2

ALU

MIPS monocicloadd $s2, $s3, $s4; Instruções tipo R, mas não JR/JALR

MIPS monociclolw $s4, 1000($s5)

MIPS monociclobeq $s4, $s5, LABEL

MIPS Monociclo : Controle

• A ULA tem 3 entradas de controle (8 combinações

possíveis)

– Somente 5 combinações são usadas

• Classes de instruções que usam a ULA

– lw/sw: adição (para calcular o endereço de acesso à

memória)

– beq: subtração (para testar se os registradores Rs e Rt

são iguais)

– Instruções 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 próprio, separado

do bloco de controle principal (e portanto,

menos complexo e mais rápido)menos complexo e mais rápido)

• 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 instrução a ser executada pertence

MIPS Monociclo : Controle

MIPS Monociclo : Controle

• Correspondência entre “funct” & “ULAOp” com

“controle da ULA”

– Apenas algumas das 64 combinações possíveis a partir

dos 6 bits do campo “funct” são de interessedos 6 bits do campo “funct” são de interesse

MIPS Monociclo : Controle

• Tabela Verdade para geração do controle da

ULA

MIPS Monociclo : Controle

• Circuito de Controle da ULA

MIPS Monociclo : Controle

MIPS Monociclo : Controle

Add

MemRead

BranchRegDst

4

Add ALUresult

Mux

0

1

Shiftleft 2

PC

Instructionmemory

Readaddress

Instruction[31–0]

Instruction [20–16]

Instruction [25–21]

Instruction [5–0]

MemtoReg

ALUOp

MemWrite

RegWrite

MemRead

ALUSrc

Instruction [31–26]

16 32Instruction [15–0]

0

0Mux

0

1

Control

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux

1

ALUresult

Zero

Datamemory

Writedata

Readdata

Mux

1

Instruction [15–11]

ALUcontrol

ALUAddress

Use rt not rd

MIPS Monociclo : Controle

Instruction RegDst ALUSrc

Memto-

Reg

Reg

Write

Mem

Read

Mem

Write Branch ALUOp1 ALUp0

R-format 1 0 0 1 0 0 0 1 0

lw 0 1 1 1 1 0 0 0 0

sw X 1 X 0 0 1 0 0 0

beq X 0 X 0 0 0 1 0 1beq X 0 X 0 0 0 1 0 1

MIPS Monociclo : Controle

• Instrução tipo R

• Instrução sw

• Instrução lw

MIPS Monociclo : Controle

• Instrução beq

MIPS Monociclo : Controle

• Subconjunto de opcods para as instruções

implementadas

MIPS Monociclo : Controle

• Tabela verdade para o controle principal

MIPS monociclo

• Inclusão da Instrução Jump (j)

– A instrução jump altera o valor de PC para:

• Deslocamento imediato codificado na instrução • Deslocamento imediato codificado na instrução

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