centro de informática da ufpe - cpu: estrutura...

44
Infra-estrutura de Hardware

Upload: others

Post on 27-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Page 2: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

CPU: Estrutura e

Funcionalidade

Page 3: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Roteiro da Aula

• Ciclo de Instrução

• Projeto de uma CPU simples: conceitos

• Componentes básicos– Leitura da instrução

– Operação entre registradores

– Acesso à memória

• Implementação Mono-ciclo– Leitura da Instrução

– Operações Aritméticas

– Leitura + Operação entre registradores

– Acesso à Memória

– Desvio Condicional

• Visualizando a execução da instrução

• Análise de Desempenho

Page 4: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Como um documento é processado?

1- Busca

documento

2 - Identifica tipo

de transação

3 - Verifica se saldo

é positivo

4 - Efetiva transação e

atualiza saldo

Page 5: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes de um computador

Vídeo

Teclado

CPU

Execução das

instruções de um

programa

Memória

Programas

+

Dados

E/S

Buffers

Page 6: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Unidade Central de Processamento

PCReg.IR MAR

MBR

◼Unidade de processamento

◼Unidade de controle

ALU

Gerais

Reg.FLAGS

Dados

Endereço

Controle

Page 7: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Ciclo de Instrução

Busca instrução

Executa instrução

Busca operando

Decodifica instrução

Armazena resultado

Incrementa PC

Page 8: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Projeto de uma Arquitetura

• Conjunto de

registradores

• Tipos de Dados

• Formato e Repertório

de instruções

Page 9: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Projeto: uma CPU simples...

Instrução Descrição

LD rt, desl(rs) Carrega palavra de mem em rs

SD rt, desl(rs) Armaz. Reg. na memória

ADD rd, rs, rt rd <- rs + rt

SUB rd, rs, rt rd <- rs – rt

AND rd, rs, rt rd <- rs and rt

BEQ rs, rt, end Desvio se rs = rt

Page 10: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

RISC V - Visão Abstrata

Registers

Register #

Data

Register #

Data

memory

Address

Data

Register #

PC Instruction ALU

Instruction

memory

Address

Page 11: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Multiplexers

◼ Não é só juntar

fios juntos◼ Usar multiplexers

Page 12: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Controle

Page 13: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Conceitos Básico Projeto Lógico

• Informação codificada em binário

– Baixa tensão = 0, alta tensão = 1

– Um fio por bit

– Dados codificados como vários bits são

implementados como barramentos

• Circuito combinacional

– Operam os dados

– A saída é uma função da entrada

• Circuitos de estado (sequenciais)

– Guardam informação

Page 14: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Elementos Combinacionais

• AND-gate

– Y = A & B

A

BY

I0

I1Y

M

u

x

S

◼ Multiplexer

◼ Y = S ? I1 : I0

A

B

Y+

A

B

YALU

F

◼ Adder

◼ Y = A + B

◼ Arithmetic/Logic Unit

◼ Y = F(A, B)

Page 15: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Elementos Sequenciais

• Registrador: armazena dados em um

circuito

• Usa um sinal do clock para determinar

quando atualizar o valor armazenado

– Edge-triggered: atualiza quando Clk muda de

0 para 1

D

Clk

Q

Clk

D

Q

Page 16: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Elementos Sequenciais

• Registrador com controle de escrita

– Sómente atualiza na transição do clock edge

quando controle write é 1

– Usado quando valor armazenado será usado

posteriormente

D

Clk

Q

Write

Write

D

Q

Clk

Page 17: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Uso do Clock

• A lógica combinacional transforma os dados durante os ciclos de clock

• Entre transições do clock

– Entrada de elementos de estado, saída para o elemento de estado

– Atraso mais longo determina o período do relógio

Page 18: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Projetando um Datapath

• Datapath (Caminho de Dados)

– Elementos que processam dados e

endereços na CPU– Registradores, ALUs, mux's, memórias,…

• Vamos construir um caminho de dados

RISC-V incrementalmente

– Refinando o projeto da versão geral

Page 19: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Relógio - Clock

Clock cycle

S tate

e lem ent

1

Com binationa l logic

State

elem ent

2

Page 20: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Mono-ciclo

Clock cycle

Busca a próxima

instrução

Executa a

instrução

Início

Término

Busca - Executa

Page 21: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Busca de Instrução

PC

Instruction

memory

Instructionaddress

Instruction Add Sum

8000..

.0000

02480020

0000..

0004

8000..

0000 8000..

0004

Memória (Instrução)

Contador Programa

Adicionador

Page 22: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Busca de Instrução

PC

Instructionmemory

Readaddress

Instruction

4

Add

8000..

.0000

8000..

.0000

8000..

.0004

02480020

64-bit

register

Page 23: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Operações Aritméticas

RegWrite

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

Data

Data

Register

numbers

Banco de registradores

Leitura

5

5

500110

00111

0000...0004

0000...0002

00000...004...

0000...0002

Page 24: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Operações Aritméticas

RegWrite

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

Data

Data

Register

numbers

Banco de registradores

Escrita

5

5

5

00101

0000..0006

0000..0004

0000..0002

0000..0006

1

Page 25: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Operações Aritméticas

ALU control

ALUresult

ALU

b. ALU

Zero

4

0000..0004

0000..0002

0000..0006

+: 0001

ALU

Page 26: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Instruções Aritméticas/Lógicas

InstructionRegisters

Writeregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

ALUresult

ALU

Zero

RegWrite

ALU operation400110

001110000..0004

0000..0002

0000..0004

00000..0002

0001 (+)

0000..0006

00000000111001100

010

010

100

000

00

00101

1

0000..0006

Page 27: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Busca e Execução de Instruções

Aritméticas/Lógicas

InstructionRegisters

Writeregister

Readdata1

Readdata2

Readregister 1

Readregister 2

Writedata

ALUresult

ALUZero

RegWrite

ALUoperation3

PC

Instructionmemory

Readaddress

Instruction

4

Add

8000..

0000

02480020

8000..

0004

00110

00111

0000..0004

00000..0002

0000..000600101

0000..00040000..0002

0000..0006

+

1

add x5,x6,x7

Page 28: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Acesso à memória

MemRead

MemWrite

Datamemory

Writedata

Readdata

Address

8000..

000C

0000..0005

1

Memória de Dados - Leitura

0000..0005

0

Page 29: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Acesso à memória

MemRead

MemWrite

Datamemory

Writedata

Readdata

Address

80000010

0000..00070000..0005

0000..0007

1

0

Memória de Dados - Escrita

Page 30: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Componentes Básicos: Acesso à memória

12 64Sign

extend

Geração de Constantes: extrai e

compõe constante da instrução

preservando o sinal

FFDFFFF..FFFD

002 0000..0002

Immed.

Gen.

Page 31: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Instruções Load/Store

Instruction

32 64

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Data

memoryWritedata

Readdata

Writedata

Sign

extend

ALUresult

Zero

ALU

Address

MemRead

MemWrite

RegWrite

ALU operation3

ld x8, desl(x9)

8D

28

04B

0

01001

01000

8D..4B0

8000..0008

000..004B0

800..004B8

0000..0002

0000..0002

1

+

1

0

8000..0008

0000..0002

Immed.

Gen.

Page 32: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Instruções Load/Store

Instruction

32 64

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Data

memoryWritedata

Readdata

Writedata

Immed

Gen.

ALUresult

Zero

ALU

Address

MemRead

MemWrite

RegWrite

ALU operation3

sw x8, desl(x9)

AB

28

04B

0

01001

01000

00..4B0

8000..0008

0000..04B0

800..004B8

0000..0005

00000005

+

1

0

80000008

00000005

Immed.

Gen.

Page 33: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Instruções Aritméticas e de Load/Store

Instruction

32 64

Registers

W rite

register

Read

data 1

Read

data 2

Read

register 1

Read

register 2

Data

mem oryWrite

data

Read

dataM

u

x

M

u

xW rite

data

ALU

result

Zero

ALU

Address

RegWrite

ALU operation3

MemRead

MemWrite

ALUSrc

MemtoReg

02480020

00110

001110000..0004

0000..00002 0000..00060000..00040000..0002

0000..0006

0000..0006

001011

0

+

00000006

1

add x5, x6, x7

Immed

Gen.

Immed.

Gen.

Page 34: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Instruções Aritméticas e de Load/Store

Instruction

32 64

Registers

W rite

register

Read

data 1

Read

data 2

Read

register 1

Read

register 2

Data

mem oryWrite

data

Read

dataM

u

x

M

u

xW rite

data

Sign

extend

ALU

result

Zero

ALU

Address

RegWrite

ALU operation3

MemRead

MemWrite

ALUSrc

MemtoReg

0000..00040000..0006

8D

28

04B

0

01001

01000

8D..4B0

8000..0008

80000008

0000..04B0

8000..04B8

00000005

0000..0005

00000005

1 0

ld x8, desl(x9)

1

0

00000005

1

Immed

Gen.

Immed.

Gen.

Page 35: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Instrução de Branch on equal

32 64Sign

extend

ZeroALU

Sum

Shift

left 1

To branch

control logic

Branch target

PC + 4 from instruction datapath

Instruction

Add

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

RegWrite

ALU operation4

Endereçamento relativo

Beq x5,x6, end.

0000..00060000..0006

0000..0005

00101

001100000..0006

0000..0006

00..4b00000..04b0

0000..12C0

8000..0004 8000..12C2

comp

Immed.

Gen.

Page 36: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Unidade Processamento

Page 37: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Controle da ALU

• ALU usada para

– Load/Store: F = adição

– Branch: F = subtração

– R-type: F depende do opcode

ALU control Function

0000 AND

0001 OR

0010 add

0110 subtract

Page 38: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Controle da ALU

• Suponha que o ALUOp de 2 bits seja derivado

do opcode

– Lógica combinacional deriva o controle da ALU

opcode ALUOp Operation Opcode field ALU function

ALU

control

ld 00 load register XXXXXXXXXXX add 0010

sd 00 store register XXXXXXXXXXX add 0010

beq 01 branch on equal XXXXXXXXXXX subtract 0110

R-type 10 add 100000 add 0010

subtract 100010 subtract 0110

AND 100100 AND 0000

OR 100101 OR 0001

Page 39: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Unidade de Controle

• Sinais de controle derivados da instrução

Page 40: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Processamento e Controle

Page 41: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Instrução R-Type

Page 42: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Instrução Load

Page 43: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Instrução BEQ

Page 44: Centro de Informática da UFPE - CPU: Estrutura eif674/arquivos/2019.1/Aulas/mono-ciclo-riscv.pdf · de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza

Infra-estrutura de Hardware

Análise de Desempenho

• Mono-ciclo:

– Período do relógio definido em função da duração da instrução mais lenta

• 8ns (5ns)

• Implementação pouco eficiente

• CPUtime = nr. Instruções x período_clock

• Como melhorar o desempenho na execução de várias instruções?

– Multi-ciclo: cada estágio é executado em um ciclo do relógio.

– Começar uma instrução ANTES da última instrução iniciada terminar.