arquiteturas de computadores

Post on 21-Jul-2022

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related