Y86 datapath sequencial
This presentation is the property of its rightful owner.
Sponsored Links
1 / 37

Y86: Datapath Sequencial PowerPoint PPT Presentation


  • 62 Views
  • Uploaded on
  • Presentation posted in: General

Y86: Datapath Sequencial. Arquitectura de Computadores Lic. em Engenharia Informática 2008/09 Luís Paulo Santos. Y86: Datapath Sequencial. 0. 1. 0. Voltage. Time. Circuitos Lógicos. Funcionam com valores discretos extraídos de um sinal contínuo Circuitos binários :

Download Presentation

Y86: Datapath Sequencial

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Y86 datapath sequencial

Y86:Datapath Sequencial

Arquitectura de Computadores

Lic. em Engenharia Informática

2008/09

Luís Paulo Santos


Y86 datapath sequencial1

Y86: Datapath Sequencial


Circuitos l gicos

0

1

0

Voltage

Time

Circuitos Lógicos

  • Funcionam com valoresdiscretosextraídos de um sinalcontínuo

  • Circuitosbinários:

    • Cadasinal tem o valor 0 ou 1


Circuitos l gicos1

Circuitos Lógicos

Existem 2 grandes tipos de componentes ou circuitos:

  • Circuitos combinatórios

    • Reagem continuamente a mudanças nos valores das entradas (com um atraso de propagação)

  • Circuitos sequenciais

    • Capazes de memorizar informação

    • As suas saídas só se alteram quando um sinal de temporização (relógio ou clock) o autoriza


Circuitos combinat rios gates

a && b

Circuitos Combinatórios: Gates

  • As saídassãofunçõesBooleanas das entradas

  • Respondemcontinuamente a mudançasnasentradas

    • Com algumatraso

Falling Delay

Rising Delay

b

Voltage

a

Time


Circuitos combinat rios

Rede Acíclica

Entradas

Saídas

Circuitos Combinatórios

  • RedeAcíclica de ComponentesLógicos

    • Respondemcontinuamente a mudançasnasentradas

    • As saídastransformam-se (após um atraso)emfunçõesBooleanas das entradas


Circuitos combinat rios multiplexer

s

b31

out31

a31

s

b30

out30

MUX

B

Out

a30

A

b0

out0

a0

Circuitos combinatórios: multiplexer

  • Seleccionapalavra de entradaAouBdependendo do sinal de controlos


Circuitos combinat rios alu

s1

Se s1,s0 == 00 (0) então X + Y

Se s1,s0 == 01 (1) então X - Y

Se s1,s0 == 10 (2) então X & Y

Se s1,s0 == 11 (3) então X | Y

Y

A

X

B

OF

ZF

CF

A

L

U

Circuitos combinatórios: ALU

s0

  • LógicaCombinatória

    • Respondecontinuamenteàsentradas

  • Sinais de controlo (s1,s0) seleccionamfunção a computar

    • Correspondemàs 4 instruçõeslógico-aritméticas do Y86

  • Tambémcalculaoscódigos de condição


Circuitos sequenciais registos

i7

D

o7

Q+

C

i6

D

o6

Q+

C

i5

D

o5

Q+

C

i4

D

o4

Q+

C

i3

D

o3

Q+

C

i2

D

o2

Q+

C

i1

D

o1

Q+

C

i0

D

o0

Q+

C

Clock

Circuitos Sequenciais: Registos

  • Armazenam dados

  • As saídassóvariamquando o valor do sinal do clock sobe de 0 para 1

Estrutura

1

0

Fim do ciclo:

Actualizar

registo

Fim do ciclo:

Actualizar

registo

Fim do ciclo:

Actualizar

registo


Circuitos sequenciais banco de registos

valW

valA

Register

file

dstW

srcA

A

Portas de leitura

W

Portas de escrita

valB

srcB

B

Clock

Circuitos Sequenciais: Banco de Registos

valM

dstM

  • Armazenamúltiplaspalavras de dados (múltiplosregistos)

    • Endereçosespecificamquaisosregistos a ler e/ouescrever

    • Mantemosvalores dos registos: %eax, %ebx, %esp, etc.

    • O ID do registo serve comoendereço

      • ID 8 implicaquenão é feitaleituraouescrita

  • MúltiplasPortas

    • Podeler (srcA, srcB) e/ouescrever (dstW,dstM) múltiplosregistos num ciclo


Y86 organiza o sequencial

newPC

Y86: Organização Sequencial

PC

valE

,

valM

Write back

valM

  • Estado

    • Program counter (PC)

    • Códigos de Condição (CC)

    • Banco de Registos

    • Memória

      • Data: paraescrita/leitura de dados

      • Instruction: paraleitura de instruções

  • Fluxo de Instruções

    • Lerinstrução no endereço dado pelo PC

    • Processarnosváriosestágios

    • Escrita:

      • Actualizarregistosgenéricos

      • Escrevernamemória de dados

      • Actualizar PC

Data

Data

Memory

memory

memory

Addr

, Data

valE

CC

CC

ALU

ALU

Execute

Bch

aluA

,

aluB

valA

,

valB

srcA

,

srcB

Decode

A

A

B

B

dstA

,

dstB

M

M

Register

Register

Register

Register

file

file

file

file

E

E

icode

,

ifun

valP

rA

,

rB

valC

Instruction

PC

Instruction

PC

memory

increment

Fetch

memory

increment

PC


Y86 organiza o sequencial1

newPC

Y86: Organização Sequencial

PC

valE

,

valM

Write back

valM

  • Busca (Fetch)

    • Lerinstruções da memória

    • icode:ifun ; rA:rB ; valC ; valP

  • Descodificação(Decode)

    • Lerregistos: valA:valB

    • Determina ID de regs. a alterar:

      • srcA ; srcB ; dstE ; dstM

  • Execução (Execute)

    • Calcular valor ouendereço / CC

      • valE / CC (Bch )

  • Memória (Memory)

    • Lerouescrever dados

      • valM

  • Actualização (Write Back)

    • Escritanosregistosgenéricos

  • Actualização PC

Data

Data

Memory

memory

memory

Addr

, Data

valE

CC

CC

ALU

ALU

Execute

Bch

aluA

,

aluB

valA

,

valB

srcA

,

srcB

Decode

A

A

B

B

dstA

,

dstB

M

M

Register

Register

Register

Register

file

file

file

file

E

E

icode

,

ifun

valP

rA

,

rB

valC

Instruction

PC

Instruction

PC

memory

increment

Fetch

memory

increment

PC


Y86 organiza o sequencial2

newPC

Y86: Organização Sequencial

PC

valE

,

valM

Write back

valM

  • Atenção à temporização:

  • Busca (início do ciclo)

  • Descodificação

  • Execução

  • Leitura da Memória

  • EscritasTODAS as escritasocorremsimultaneamente no FIM do CICLO

    • Escritanos CC

    • Escritanamemória

    • Escritanosregs. genéricos

    • Escrita no PC

Data

Data

Memory

memory

memory

Addr

, Data

valE

CC

CC

ALU

ALU

Execute

Bch

aluA

,

aluB

valA

,

valB

srcA

,

srcB

Decode

A

A

B

B

dstA

,

dstB

M

M

Register

Register

Register

Register

file

file

file

file

E

E

icode

,

ifun

valP

rA

,

rB

valC

4

3

1

2

Instruction

PC

Instruction

PC

memory

increment

Fetch

memory

increment

PC


Instru o y86 opera es l gico aritm ticas

OPl rA, rB

6

fn

rA

rB

Instrução Y86: operações lógico-aritméticas

  • Fetch

    • Ler 2 bytesicode:ifun ; rA:rB

    • Calcularpróximo PCvalP = PC + 2

  • Decode

    • LerregistosvalA = R[rA]valB = R[rB]

  • Execute

    • RealizaroperaçãovalE = valA OP valB

    • Códigos de condiçãocc = f(valE)

  • Memory

    • Nada a fazer

  • Write back

    • ActualizarregistoR[rB] = valE

  • PC Update

    • Incrementar PCPC = valP


Instru o y86 opera es l gico aritm ticas1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

rA:rB  M1[PC+1]

Ler byte dos registos

valP  PC+2

Calcular próximo PC

Decode

valA  R[rA]

Ler operando A

valB  R[rB]

Ler operando B

Execute

valE  valB OP valA

Realizar operação na ALU

Set CC

Códigos de condição

Memory

Write

back

R[rB]  valE

Escrever resultado

PC update

PC  valP

Actualizar PC

Instrução Y86: operações lógico-aritméticas

OPl rA, rB

  • Formularexecução de instruçõescomoumasequência de passos simples

  • Usar a mesma forma geralparatodas as instruções


Instru o y86 i rmovl

8

rB

3

0

irmovl V, rB

V

Instrução Y86: irmovl

  • Fetch

    • Ler 6 bytesicode:ifun ; rA:rB ; valC

    • Calcularpróximo PCvalP = PC + 6

  • Decode

    • Nada a fazer

  • Execute

    • PassarconstantevalE = valC

  • Memory

    • Nada a fazer

  • Write back

    • EscreverregistoR[rB] = valE

  • PC Update

    • Incrementar PCPC = valP


Instru o y86 i rmovl1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

rA:rB  M1[PC+1]

Ler byte de registos

valC  M4[PC+2]

Ler deslocamento

valP  PC+6

Calcular próximo PC

Decode

Execute

valE  valC

Passar constante

Memory

Write

back

R[rB]  valE

PC update

PC  valP

Actualizar PC

Instrução Y86: irmovl

irmovl V, rB

Escrever resultado


Instru o y86 rmmovl

rA

rB

4

0

rmmovl rA, D(rB)

D

Instrução Y86: rmmovl

  • Fetch

    • Ler 6 bytesicode:ifun ; rA:rB ; valC

    • Calcularpróximo PCvalP = PC + 6

  • Decode

    • LerregistosvalA = R[rA]valB = R[rB]

  • Execute

    • CalcularendereçovalE = valB + valC

  • Memory

    • EscrevernamemóriaM4[valE] = valA

  • Write back

    • Nada a fazer

  • PC Update

    • Incrementar PCPC = valP


Instru o y86 rmmovl1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

rA:rB  M1[PC+1]

Ler byte de registos

valC  M4[PC+2]

Ler deslocamento

valP  PC+6

Calcular próximo PC

Decode

valA  R[rA]

Ler operando A

valB  R[rB]

Ler operando B

Execute

valE  valB + valC

Calcular endereço

Memory

M4[valE]  valA

Escrever na memória

Write

back

PC update

PC  valP

Actualizar PC

Instrução Y86: rmmovl

rmmovl rA, D(rB)


Instru o y86 popl

popl rA

b

rA

0

8

Instrução Y86: popl

  • Fetch

    • Ler 2 bytesicode:ifun ; rA:rB

    • Calcularpróximo PCvalP = PC + 2

  • Decode

    • LerregistosvalA = R[%esp]valB = R[%esp]

  • Execute

    • Calcularpróximotopo da pilhavalE = valB + 4

  • Memory

    • Ler da memóriavalM = M4[valA]

  • Write back

    • Escrever no registoR[rA] = valMR[%esp] = valE

  • PC Update

    • Incrementar PCPC = valP


Instru o y86 popl1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

rA:rB  M1[PC+1]

Ler byte de registo

valP  PC+2

Calcular próximo PC

Decode

valA  R[%esp]

Ler stack pointer

valB  R[%esp]

Ler stack pointer

Execute

valE  valB + 4

Incrementar stack pointer

Memory

valM  M4[valA]

Ler topo da pilha

Write

back

R[%esp]  valE

Actualizar stack pointer

R[rA]  valM

Escrever resultado

PC update

PC  valP

Actualizar PC

Instrução Y86: popl

popl rA

  • Usar ALU paraincrementar stack pointer

  • Actualizardoisregistos: rA e %esp


Instru o y86 jump

jXX Dest

Dest

Não tomado

continua:

Dest:

Tomado

7

XX

XX

fn

XX

XX

Instrução Y86: Jump

  • Fetch

    • Ler 5 bytesicode:ifun ; valC

    • Calcularpróximo PCvalP = PC + 5

  • Decode

    • Nada a fazer

  • Execute

    • Saltar ??Bch = f(ifun, CC)

  • Memory

    • Nada a fazer

  • Write back

    • Nada a fazer

  • PC Update

    • Novo valor depende de BchPC = (Bch ? valC : valP)


Instru o y86 jump1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

valC  M4[PC+1]

Ler destino do salto (se tomado)

valP  PC+5

Calcular próximo PC (se ñ tomado)

Decode

Execute

Bch  f(ifun, CC)

Saltar?

Memory

Write

back

PC update

PC  (Bch ? valC : valP)

Actualizar PC

Instrução Y86: Jump

jxx Dest

  • Calcular ambos osendereços

  • Escolherdestinobaseado no tipo de salto e noscódigos de condição


Instru o y86 call

call Dest

Dest

return:

target:

8

XX

XX

0

XX

XX

Instrução Y86: call

  • Fetch

    • Ler 5 bytesicode:ifun ; valC

    • Calcularpróximo PC (end. de retorno)valP = PC + 5

  • Decode

    • Le registovalB = R[%esp]

  • Execute

    • Calcular novo topo da pilhavalE = valB - 4

  • Memory

    • Push do end. de retornoM4[valE] = valP

  • Write back

    • Actualizartopo da pilhaR[%esp] = valE

  • PC Update

    • PC = valC


Instru o y86 call1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

valC  M4[PC+1]

Ler destino do salto

valP  PC+5

Calcular endereço de retorno

Decode

valB  R[%esp]

Execute

valE  valB - 4

Novo topo da pilha

Memory

M4[valE]  valP

Write

back

R[%esp]  valE

PC update

PC  valC

Actualizar PC

Instrução Y86: call

call Dest

Ler addr do topo da pilha

Guardar endereço de retorno

Actualizar topo da pilha


Instru o y86 ret

9

XX

0

XX

Instrução Y86: ret

ret

return:

  • Fetch

    • Ler 1 byte icode:ifun

    • Calcularpróximo PC valP = PC + 1

  • Decode

    • LerregistovalA = R[%esp] valB = R[%esp]

  • Execute

    • Calcular novo topo da pilhavalE = valB + 4

  • Memory

    • Ler end. de retornovalM = M4[valA]

  • Write back

    • Actualizartopo da pilhaR[%esp] = valE

  • PC Update

    • PC = valM


Instru o y86 ret1

Fetch

icode:ifun  M1[PC]

Ler byte de instrução

valP  PC+1

Calcular próximo PC

Decode

valA  R[%esp]

valB  R[%esp]

Execute

valE  valB + 4

Novo topo da pilha

Memory

valM  M4[valEA

Write

back

R[%esp]  valE

PC update

PC  valM

Actualizar PC

Instrução Y86: ret

ret

Ler addr do topo da pilha

Ler endereço de retorno

Actualizar topo da pilha


Y86 valores calculados

Y86: Valores calculados

  • Fetch

    • icodeInstruction code

    • ifunInstruction function

    • rAInstr. Register A

    • rBInstr. Register B

    • valCInstruction constant

    • valPIncremented PC

  • Decode

    • valARegister value A

    • valBRegister value B

  • Execute

    • valEALU result

    • BchBranch flag

  • Memory

    • valMValue from memory


Y86 seq

newPC

Y86: SEQ

New

PC

PC

  • Ovais brancas: sinais internos

  • Caixas azuis: lógica sequencialescrita controlada pelo clock

  • Caixas cinzentas: multiplexers

  • Caixas laranja: CálculoALU e “incrementar PC”

  • Caixas castanhas: controlo

  • Traço grosso: 32 bits

  • Traço fino: 4 bits

  • Tracejado: 1 bit

valM

data out

read

Data

Data

Mem

.

Memory

control

memory

memory

write

Addr

Data

Bch

valE

ALU

Execute

ALU

ALU

CC

CC

fun.

ALU

ALU

A

B

valA

valB

Decode

A

A

B

B

M

M

Register

Register

Register

Register

file

file

file

file

E

E

Write back

icode

ifun

rA

rB

valC

valP

Instruction

PC

Instruction

PC

Fetch

memory

increment

memory

increment

PC


Y86 fetch

Y86: Fetch

  • Blocos

    • PC: Registo

    • MemóriaInstruções:Ler 6 bytes (PC to PC+5)

    • Split: Dividir byte emicode e ifun

    • Align: ObterrA, rB e valC

  • Lógica de Controlo(sinaisobtidos a partir de icode)

    • Instr. Valid: estainstução é válida?

    • Need regids: estainstrução tem oscamposrA:rB?

    • Need valC: estainstrução tem um valor imediato?


Y86 decode

Y86: Decode

  • Banco de Registos

    • Lerportas A, B

    • Escreverportas E, M

    • Endereçossãoos IDs do registosou 8(nãoaceder)

  • Lógica de Controlo

    • srcA, srcB: registos a ler

    • dstA, dstB: registos a escrever


Y86 execute

Y86: Execute

  • Unidades

    • ALU

      • Implementa 4 funções

      • Gera códigos de condição

    • CC

      • Registo com 3 bits

    • bcond

      • Calcular se o salto é tomado (Bch)

  • Lógica de Controlo

    • Set CC: Alterar CC?

    • ALU A: Entrada A para ALU

    • ALU B: Entrada B para ALU

    • ALU fun: Qual a função a calcular?


Y86 memory

Y86: Memory

  • Memória

    • Lerouescreverumapalavra

  • Lógicade Controlo

    • Mem.read:leitura?

    • Mem.write: escrita?

    • Mem.addr: Seleccionaaddr

    • Mem.data: Selecciona dados


Y86 pc

OPl; XXmovl; popl ; …

jXX Dest

call Dest

PC update

PC  valM

PC update

PC  valC

PC update

PC  Bch ? valC : valP

ret

PC update

PC  valP

Y86: PC

  • Novo PC

    • Seleccionapróximo valor do PC


Y86 seq resumo

Y86: SEQ resumo

  • Implementação

    • Cada instrução expressa como uma sequência de passos elementares

    • Mesma sequência geral para todos os tipos de instruções

    • Identificar blocos combinatórios e sequenciais básicos

    • Ligar e controlar com a lógica de controlo


Y86 seq limita es

Y86: SEQ Limitações

  • Em cada ciclo do relógio os sinais têm que se propagar desde o PC, memória de instruções, banco de registos, ALU e memória até aos registos de novo:

    • O período do relógio tem que ser suficientemente longo para permitir esta propagação

    • O período do relógio é constante, logo tem que ser tão grande quanto necessário para a instrução mais lenta

    • O relógio é, portanto, muito lento

  • Cada unidade de hardware só está activa (é utilizada) durante uma fracção pequena do período do relógio

    • Logo, desperdício das verdadeiras capacidades do equipamento


Y86 seq1

PC

Y86: SEQ+

valM

data out

read

Data

Data

Mem

.

Memory

control

memory

memory

write

  • Estágio PC reordenado: passa a aconteceraoprincípio

  • Estágio PC

    • Selecciona PC para a instrução actual

    • Baseadonosresultados da últimainstrução

    • Estes sãoguardados num registo e consistemem:pIcode; pBch; pvalM ; pvalC ; pvalP

    • PC nãoestáguardadoemnenhumregisto

Addr

Data

Bch

valE

ALU

CC

CC

Execute

ALU

ALU

fun.

ALU

ALU

A

B

valA

valB

Write back

Decode

A

A

B

B

M

M

Register

Register

Register

Register

file

file

file

file

E

E

icode

ifun

rA

rB

valC

valP

Instruction

PC

Fetch

Instruction

PC

memory

increment

memory

increment

PC

PC

pIcode

pBch

pValM

pValC

pValP


  • Login