Y86: Datapath Sequencial. Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos

Documentos relacionados
Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant

Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant

Arquitetura de Computadores Trabalhos Práticos

Y86: Encadeamento de Instruções (PIPE) Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos

lw, sw add, sub, and, or, slt beq, j

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Organização ou MicroArquitectura

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Infra-estrutura de Hardware

Microcontroladores e Interfaces

Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.)

Organização de Unidades de Processamento

Arquitectura de Computadores II L.E.S.I. 3º ano 2005/06. Módulo nº 4 Encadeamento e resolução de anomalias

Microprocessadores. Família x86 - Evolução

Arquitectura de Computadores MEEC (2014/15 2º Sem.)

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Nível da Microarquitetura

Exercícios resolvidos (aula de 4 de Maio) Resolução:

Microprocessadores MICROPROCESSADORES. Unidade de Processamento. Sumário

O Processador: Via de Dados e Controle

Arquitectura de Computadores

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Arquitectura de Computadores II L.E.S.I. 3º ano. Módulo nº 3 Princípios gerais de encadeamento

Arquitetura de Microprocessadores

Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.)

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v

Arquiteturas de Computadores

DataPath II Tomando o controle!

Organização de Computadores

Relembrando desempenho...

Organização e Projeto de Computadores

Relembrando desempenho...

William Stallings Organização de computadores digitais. Capítulo 14 Operação da Unidade de Controle

Projeto de Processadores Programáveis

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

O Processador: Via de Dados e Controle (Parte C: microprogramação)

Disciplina de. Organização de Computadores Digitais

µinstruções µoperações representadas em binário podem ser compactadas numa só µinstrução exemplo (as 3 últimas µinstruções anteriores):

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

Arquitectura de Computadores

Organização de Computadores

Capítulo 4 Nível da microarquitetura

Sistemas Digitais (SD)

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

Lic. Engenharia de Sistemas e Informática

Arquitetura e Organização de Processadores. Aula 4. Pipelines

SISTEMAS DIGITAIS (SD)

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

Pipelining. Luís Nogueira. Departamento Engenharia Informática Instituto Superior de Engenharia do Porto. Pipelining p.

Arquitectura de Computadores Y86 Instruções

Organização de Computadores

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Microprocessadores. Execução em Paralelo Pipelines

Unidade Central de Processamento UCP (CPU)

Organização e Arquitetura de Computadores I

Otimização de Execução em Processadores Modernos. William Stallings - Computer Organization and Architecture, Chapter 12 [Trad. E.Simões / F.

EEC2104 Microprocessadores

Arquitectura e Organização de Computadores

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Aula 14 Funcionamento de Processadores (Visão específica)

18/08/2015. Capítulo 2: Manipulação de dados. Arquitetura de Computadores. Capítulo 2: Manipulação de Dados

Sistemas Lógicos II. Aula 11

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

O Computador Neander Neander - Computador Hipotético Didático

Introdução à Computação: Arquitetura von Neumann

Arquiteturas de Computadores

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Microarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1

2. A influência do tamanho da palavra

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Organização de computadores. Aula 05

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

FCA - Editora de Informática xv

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve:

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Arquitectura de Computadores Y86 Encadeamento (parte I) Créditos Randal E. Bryant

Índice. Tudo! (datapath de um ciclo)

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Arquitectura e Organização de Computadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Sistemas Digitais (SD)

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

Nível Máquina Formatos de Instruções

Organização e Arquitetura de Computadores I

Introdução. Os mesmos princípios se aplicam a processadores. No MIPS as instruções são divididas normalmente em cinco etapas:

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Capítulo 6 Pipeline Morgan Kaufmann Publishers

Sistemas Processadores e Periféricos Aula 6 - Revisão

2. A influência do tamanho da palavra

Nome: N.º Ano: Turma: Turno: Responde às seguintes questões 1. Qual o primeiro nome do computador à base de transístores?

Processador. Processador

Arquitetura e Organização de Processadores. Aula 3. Processador MIPS Bloco operacional

Lic. Engenharia de Sistemas e Informática

O estudo da arquitectura de computadores efectua-se com recurso à Abstracção

Arquitetura: características gerais

Transcrição:

Y86: Datapath Sequencial Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos

Y86: Datapath Sequencial Conteúdos Resultados de Aprendizagem 9 Organização do Processador 9.1 Datapath sequencial C1 R9.1 Analisar e descrever organizações sequenciais de processadores elementares C1 AC Y86: Datapath sequencial 2

Circuitos Lógicos 0 1 0 Tensão Funcionam com valores discretos extraídos de um sinal contínuo Circuitos binários: Tempo Cadasinaltem o valor 0 ou1 AC Y86: Datapath sequencial 3

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 AC Y86: Datapath sequencial 4

a b Circuitos Combinatórios: Gates And Or Not out a b out a out out = a && b out = a b out =!a As saídas são funções Booleanas das entradas Respondem continuamente a mudanças nas entradas Com algumatraso Rising Delay Falling Delay a && b b Voltage a Time AC Y86: Datapath sequencial 5

Circuitos Combinatórios Rede Acíclica Entradas Saídas Rede Acíclica de Componentes Lógicos Respondem continuamente a mudanças nas entradas As saídas transformam-se (após um atraso)em funções Booleanas das entradas AC Y86: Datapath sequencial 6

Circuitos combinatórios: multiplexer s b 31 a 31 out 31 s b 30 out 30 a 30 B A MUX Out b 0 a 0 out 0 Selecciona palavra de entrada AouBdependendodo sinal de controlo s AC Y86: Datapath sequencial 7

Circuitos combinatórios: ALU s1 s0 Y X A B A L U OF ZF CF 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 Lógica Combinatória Responde continuamente às entradas Sinais de controlo(s1,s0) seleccionam função a computar Correspondemàs4 instruçõeslógico-aritméticasdo Y86 Também calcula os códigos de condição AC Y86: Datapath sequencial 8

Circuitos Sequenciais: Registos Estrutura Armazenam dados i 7 i 6 i 5 i 4 i 3 D C D C D C D C D C Q+ Q+ Q+ Q+ Q+ o 7 o 6 o 5 o 4 o 3 As saídassóvariamquandoo valor do sinaldo clock sobede 0 para1 i 2 i 1 i 0 D C D C D C Q+ Q+ Q+ o 2 o 1 o 0 1 0 Clock Fim do ciclo: Actualizar registo Fim do ciclo: Actualizar registo Fim do ciclo: Actualizar registo AC Y86: Datapath sequencial 9

Circuitos Sequenciais: Banco de Registos vala valw srca A dstw Portas de leitura valb Register file W valm Portas de escrita srcb B dstm Clock Armazena múltiplas palavras de dados (múltiplos registos) Endereços especificam quais os registos a ler e/ou escrever Endereços nos sinais srca, srcb, dstw, dstm Mantem os valores dos registos: %eax, %ebx, %esp, etc. O ID do registoserve comoendereço ID 8 implicaquenãoé feitaleituraouescrita Múltiplas Portas Pode ler(srca, srcb) e/ou escrever(dstw,dstm) múltiplos registos num ciclo AC Y86: Datapath sequencial 10

Estado Y86: Organização Sequencial Program counter () Códigos de Condição(CC) Banco de Registos Memória Data: para escrita/leitura de dados Instruction: para leitura de instruções Fluxo de Instruções Lerinstruçãono endereçodado pelo Processar nos vários estágios Escrita: Actualizar registos genéricos Escrevernamemóriade dados Actualizar Write back Memory Execute Decode Fetch icode, ifun ra, rb valc Instruction memory new vale, valm Addr, Data Bch CC alua, alub srca, srcb dsta, dstb valm Data memory vale ALU vala, valb valp increment A B M Register file E AC Y86: Datapath sequencial 11

Y86: Organização Sequencial Busca(Fetch) Ler instruções da memória icode:ifun ; ra:rb ; valc ; valp Descodificação(Decode) Ler registos: vala:valb DeterminaID de regs. a alterar: srca ; srcb ; dste ; dstm Execução(Execute) Calcular valor ou endereço/ CC vale / CC (Bch ) Memória(Memory) Lerouescreverdados valm Actualização(Write Back) Escrita nos registos genéricos Actualização Write back Memory Execute Decode Fetch icode, ifun ra, rb valc Instruction memory new vale, valm Addr, Data Bch CC alua, alub valm Data memory AC Y86: Datapath sequencial 12 srca, srcb dsta, dstb valp vale ALU vala, valb increment A B M Register file E

Y86: Organização Sequencial Write back new vale, valm valm Atenção à temporização: 1. Busca(início do ciclo) 2. Descodificação 3. Execução 4. Leitura da Memória 5. Escritas TODAS as escritas ocorrem SIMULTANEAMENTE no FIM do CICLO EscritanosCC Escrita na memória Escrita nos regs. genéricos Escritano 4 3 2 1 Memory Execute Decode Fetch icode, ifun ra, rb valc Instruction memory Addr, Data Bch CC alua, alub srca, srcb dsta, dstb Data memory valp vale ALU vala, valb increment A B M Register file E AC Y86: Datapath sequencial 13

Instrução Y86: operações lógico-aritméticas OPl ra, rb 6 fn ra rb Fetch Decode Ler2 bytes icode:ifun ; ra:rb Calcular próximo valp = + 2 Ler registos vala = R[rA] valb = R[rB] Execute Realizar operação vale = vala OP valb Códigos de condição cc = f(vale) Memory Nada a fazer Write back Actualizar registo R[rB] = vale Update Incrementar = valp AC Y86: Datapath sequencial 14

Instrução Y86: operações lógico-aritméticas Fetch OPl ra, rb icode:ifun M 1 [] ra:rb M 1 [+1] Ler byte de instrução Ler byte dos registos Decode Execute Memory Write back update valp +2 vala R[rA] valb R[rB] vale valb OP vala Set CC R[rB] vale valp Calcular próximo Ler operando A Ler operando B Realizar operação na ALU Códigos de condição Escrever resultado Actualizar Formularexecuçãode instruçõescomoumasequênciade passos simples Usara mesmaforma geralparatodasas instruções AC Y86: Datapath sequencial 15

Instrução Y86: irmovl irmovl V, rb 3 0 8 rb V Fetch Decode Ler6 bytes icode:ifun ; ra:rb ; valc Calcular próximo valp = + 6 Nada a fazer Execute Passar constante vale = valc Memory Nada a fazer Write back Escrever registo R[rB] = vale Update Incrementar = valp AC Y86: Datapath sequencial 16

Instrução Y86: irmovl Fetch Decode Execute Memory Write back update irmovl V, rb icode:ifun M 1 [] ra:rb M 1 [+1] valc M 4 [+2] valp +6 vale valc R[rB] vale valp Ler byte de instrução Ler byte de registos Ler deslocamento Calcular próximo Passar constante Escrever resultado Actualizar AC Y86: Datapath sequencial 17

Instrução Y86: rmmovl rmmovl ra, D(rB) 4 0 ra rb D Fetch Decode Ler6 bytes icode:ifun ; ra:rb ; valc Calcular próximo valp = + 6 Ler registos vala = R[rA] valb = R[rB] Execute Calcular endereço vale = valb + valc Memory Escrever na memória M 4 [vale] = vala Write back Nada a fazer Update Incrementar = valp AC Y86: Datapath sequencial 18

Instrução Y86: rmmovl Fetch Decode Execute Memory Write back update rmmovl ra, D(rB) icode:ifun M 1 [] ra:rb M 1 [+1] valc M 4 [+2] valp +6 vala R[rA] valb R[rB] vale valb + valc M 4 [vale] vala valp Ler byte de instrução Ler byte de registos Ler deslocamento Calcular próximo Ler operando A Ler operando B Calcular endereço Escrever na memória Actualizar AC Y86: Datapath sequencial 19

Instrução Y86: popl popl ra b 0 ra 8 Fetch Decode Ler2 bytes icode:ifun ; ra:rb Calcular próximo valp = + 2 Ler registos vala = R[%esp] valb = R[%esp] Execute Calcular próximo topo da pilha vale = valb + 4 Memory Lerda memória valm = M 4 [vala] Write back Escrever no registo R[rA] = valm R[%esp] = vale Update Incrementar = valp AC Y86: Datapath sequencial 20

Instrução Y86: popl Fetch Decode Execute Memory Write back update popl ra icode:ifun M 1 [] ra:rb M 1 [+1] valp +2 vala R[%esp] valb R[%esp] vale valb + 4 valm M 4 [vala] R[%esp] vale R[rA] valm valp Ler byte de instrução Ler byte de registo Calcular próximo Ler stack pointer Ler stack pointer Incrementar stack pointer Ler topo da pilha Actualizar stack pointer Escrever resultado Actualizar Usar ALU para incrementar stack pointer Actualizar dois registos: ra e %esp AC Y86: Datapath sequencial 21

Instrução Y86: Jump jxx Dest 7 fn Dest continua: XX XX Não tomado Dest: XX XX Tomado Fetch Ler5 bytes icode:ifun ; valc Calcular próximo valp = + 5 Decode Nada a fazer Execute Saltar?? Bch = f(ifun, CC) Memory Nada a fazer Write back Nada a fazer Update Novo valor dependede Bch = (Bch? valc : valp) AC Y86: Datapath sequencial 22

Instrução Y86: Jump Fetch Decode Execute Memory Write back update jxx Dest icode:ifun M 1 [] valc M 4 [+1] valp +5 Bch f(ifun, CC) (Bch? valc : valp) Ler byte de instrução Ler destino do salto (se tomado) Calcular próximo (se ñ tomado) Saltar? Actualizar Calcular ambos os endereços Escolherdestinobaseadono tipode saltoe noscódigosde condição AC Y86: Datapath sequencial 23

Instrução Y86: call call Dest return: 8 0 Dest XX XX target: XX XX Fetch Ler5 bytes Decode icode:ifun ; valc Calcular próximo (end. de retorno) valp = + 5 Le registo valb = R[%esp] Execute Calcularnovo topoda pilha vale = valb - 4 Memory Push do end. de retorno Write back M 4 [vale] = valp Actualizar topo da pilha R[%esp] = vale Update = valc AC Y86: Datapath sequencial 24

Instrução Y86: call Fetch Decode Execute Memory Write back update call Dest icode:ifun M 1 [] valc M 4 [+1] valp +5 valb R[%esp] vale valb - 4 M 4 [vale] valp R[%esp] vale valc Ler byte de instrução Ler destino do salto Calcular endereço de retorno Ler addr do topo da pilha Novo topo da pilha Guardar endereço de retorno Actualizar topo da pilha Actualizar AC Y86: Datapath sequencial 25

Instrução Y86: ret ret 9 0 return: XX XX Fetch Decode Ler1 byte icode:ifun Calcularpróximo valp = + 1 Ler registo vala = R[%esp] valb = R[%esp] Execute Calcularnovo topoda pilha vale = valb + 4 Memory Lerend. de retorno Write back valm = M 4 [vala] Actualizar topo da pilha R[%esp] = vale Update = valm AC Y86: Datapath sequencial 26

Instrução Y86: ret ret icode:ifun M 1 [] Ler byte de instrução Fetch Decode Execute Memory Write back update valp +1 vala R[%esp] valb R[%esp] vale valb + 4 valm M 4 [valea R[%esp] vale valm Calcular próximo Ler addr do topo da pilha Novo topo da pilha Ler endereço de retorno Actualizar topo da pilha Actualizar AC Y86: Datapath sequencial 27

Y86: Valores calculados Fetch icode Instruction code ifun Instruction function ra Instr. Register A rb Instr. Register B valc Instruction constant valp Incremented Decode vala Register value A valb Register value B Execute vale ALU result Bch Branch flag Memory valm Value from memory AC Y86: Datapath sequencial 28

Y86: SEQ new New Ovais brancas: sinais internos valm data out Caixas azuis: lógica sequencial escrita controlada pelo clock Memory Mem. control read write Data memory Addr Data Caixas cinzentas: multiplexers Caixas laranja: Cálculo ALU e incrementar Execute Bch CC ALU A vale ALU ALU B ALU fun. Caixas castanhas: controlo vala valb Traço grosso: 32 bits Traço fino: 4 bits Decode icode ifun ra rb valc valp A B M Register file E Write back Tracejado: 1 bit Fetch Instruction memory increment AC Y86: Datapath sequencial 29

Y86: Fetch icode ifun ra rb valc valp Blocos : Registo Memória Instruções: Ler6 bytes ( to +5) Split: Dividirbyte emicodee ifun Align: ObterrA, rb e valc Instr valid Split Byte 0 Instruction memory Align Bytes 1-5 Need valc Need regids increment Lógica de Controlo (sinais obtidos a partir de icode) Instr. Valid: esta instução é válida? Need regids: esta instrução tem os campos ra:rb? Need valc: esta instrução tem um valor imediato? AC Y86: Datapath sequencial 30

Y86: Decode vala valb valm vale Banco de Registos LerportasA, B EscreverportasE, M EndereçossãoosIDs do registosou 8(não aceder) A B M Register file E dste dstm srca srcb dste dstm srca srcb icode ra rb Lógica de Controlo srca, srcb: registosa ler dsta, dstb: registos a escrever AC Y86: Datapath sequencial 31

Y86: Execute Unidades ALU Implementa 4 funções Gera códigos de condição Bch vale CC Registocom 3 bits bcond bcond Calcularse o saltoé tomado(bch) CC ALU ALU fun. Lógica de Controlo Set CC: AlterarCC? ALU A: EntradaA paraalu ALU B: EntradaB paraalu ALU fun: Quala funçãoa calcular? Set CC ALU A ALU B icode ifun valc vala valb AC Y86: Datapath sequencial 32

Y86: Memory Memória Lerouescreverumapalavra Lógica de Controlo Mem.read: leitura? Mem.write: escrita? Mem.addr: Selecciona addr Mem.data: Selecciona dados icode Mem. read Mem. write read write valm data out Data memory data in Mem Mem addr data vale vala valp AC Y86: Datapath sequencial 33

Y86: Novo Selecciona próximo valor do update OPl; XXmovl; popl ; valp New update jxx Dest Bch? valc : valp icode Bch valc valm valp update update call Dest valc ret valm AC Y86: Datapath sequencial 34

Implementação Y86: SEQ resumo 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 AC Y86: Datapath sequencial 35

Y86: SEQ Limitações Em cada ciclo do relógio os sinais têm que se propagar desde o, 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 AC Y86: Datapath sequencial 36

Y86: SEQ+ Memory Mem. control read write valm data out Data memory Estágio reordenado: passaa acontecer ao princípio Bch vale Addr Data Estágio Selecciona para a instrução actual Baseadonosresultadosda última instrução Estes sãoguardadosnum registo e consistem em: picode; pbch; pvalm ; pvalc ; pvalp nãoestáguardadoem nenhum registo Execute Decode Fetch CC icode ifun ra ALU A rb Instruction memory ALU valc ALU B valp vala increment ALU fun. valb A B M Register file Write back E picode pbch pvalm pvalc pvalp AC Y86: Datapath sequencial 37