Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant http://csapp.cs.cmu.edu



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

Arquitetura de Computadores Trabalhos Práticos

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

Arquitectura de Computadores Y86 Instruções

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

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

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

Arquitetura de Computadores. Tipos de Instruções

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

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

Primeiros "computadores" digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna

Operadores lógicos (bit a bit)

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Pipelining - analogia

Arquitetura de Computadores I

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

28/9/2010. Unidade de Controle Funcionamento e Implementação

Nível da Microarquitetura

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

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Arquitectura de Computadores RECUPERAÇÃO DO 1º TESTE

Circuitos sequenciais elementares

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Organização e Arquitetura de Computadores I

BARRAMENTO DO SISTEMA

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Organização e Arquitetura de Computadores I

Introdução aos Computadores

MICROPROCESSADORES Nuno Cavaco Gomes Horta Universidade Técnica de Lisboa / Instituto Superior Técnico

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Arquitetura de Computadores I

Memória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação

Capítulo 2: Introdução à Linguagem C

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

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

Componentes do Computador e. aula 3. Profa. Débora Matos

Introdução à Arquitetura de Computadores

3º Trabalho de Laboratório. Unidade de Controlo Microprogramada

RISC simples. Aula de Março de

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Arquitetura de Computadores. Prof. João Bosco Jr.

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

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Sistemas Operacionais. Revisando alguns Conceitos de Hardware

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

ARQUITECTURA DE COMPUTADORES

Modos de entrada/saída

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

ArchC. Wesley Nunes Gonçalves

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Acetatos de apoio às aulas teóricas

Introdução à Programação 2006/07. Computadores e Programação

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Arquitetura de Computadores. Arquitetura de Computadores 1

Registradores de uma CPU. Registradores de uma CPU - Acumulador

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

INF 1005 Programação I

Disciplina de. Organização de Computadores Digitais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Professor: Dr. Rogério Rodrigues de Vargas.

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86

Índice. Tudo! (datapath de um ciclo)

MODOS DE ENDEREÇAMENTO

Arquitetura de Computadores. Ivan Saraiva Silva

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

ULA Sinais de Controle enviados pela UC

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

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

Programação ao nível da máquina. Operações lógicas e aritméticas

Sistemas Lógicos II. Aula 10

Introdução. ULA: Faz os Cálculos UC: Como isso tudo ocorre?

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

Arquitetura de Computadores - Revisão -

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

SIS17 - Arquitetura de Computadores

Microprocessadores. Prof. Leonardo Barreto Campos 1

Arquitectura de Computadores 2007/2008 2º Semestre Repescagem 1º Teste - 03/07/2008

ARQUITETURA DE COMPUTADORES

Arquitetura e Organização de Computadores I

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Estrutura de um Computador

Sistemas Computacionais II Professor Frederico Sauer

Arquitetura e Organização de Computadores

Capítulo 4 Livro do Mário Monteiro Introdução Hierarquia de memória Memória Principal. Memória principal

Estrutura do tema ISC

4-1. Parte2: A Arquitetura do Conjunto de Instruções

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Paralelismo a Nível de Instrução

PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação

1345 Arquitectura de Computadores

2 Formalidades referentes ao trabalho

Componentes de um Computador: Modelo Von Neumann

Conjunto de Instruções e Arquitectura p.1

Arquitetura de Computadores

Transcrição:

Arquitectura de Computadores Y86 Sequencial Créditos Randal E. Bryant http://csapp.cs.cmu.edu

Y86 - Jogo de Instruções Octeto 0 1 2 3 4 5 nop 0 0 halt 1 0 rrmovl ra, rb 2 0 ra rb irmovl V, rb 3 0 8 rb V rmmovl ra, D(rB) 4 0 ra rb D mrmovl D(rB), ra 5 0 ra rb D OPl ra, rb 6 fn ra rb jxx Dest 7 fn Dest call Dest 8 0 Dest ret 9 0 pushl ra A 0 ra 8 popl ra B 0 ra 8 2 addl 6 0 subl 6 1 andl 6 2 xorl 6 3 jmp 7 0 jle 7 1 jl 7 2 je 7 3 jne 7 4 jge 7 5 jg 7 6

Elementos de Base fun Lógica Combinacional Funções Booleanas e entradas Reage a alteração das entradas Operação e controlo de dados A B A L U 0 MUX = 1 Elementos de Armazenamento Bits endereçável Registos não-endereçáveis Sincronização ao impulso vala srca valb srcb A B Registos arquivo W valw dstw Impulso Relógio 3

Linguagem de Controlo Linguagem de descrição de hardware muito simples HCL-Hardware Control Language (anglo-saxónico) Descreve apenas alguns aspectos da operação do hardware Partes a explorar e a modificar Tipos de Dados bool: Boolean a, b, c, int: palavras A, B, C, Não especifica tamanhos --- octetos, palavras de 32-bit, Declarações bool a = bool-expr ; int A = int-expr ; 4

HCL - Operações Classificação por tipo e valor de retorno Expressões Booleanas Operações Lógicas a && b, a b,!a Comparação de palavras A == B, A!= B, A < B, A <= B, A >= B, A > B Inclusão de conjunto A em { B, C, D } Expressões caso» Idêntico a A == B A == C A == D [ a : A; b : B; c : C ] Avaliação expressões de teste a, b, c, na sequência Retorno do valor A, B, C, a primeira a satisfazer a expressão 5

Arquivo de Registos vala srca valb srcb A B 2 x Registos arquivo Leitura Lógica combinacional Dados à saída seleccionados pelos endereços à entrada Atraso de propagação Escrita Como num registo Na subida do impulso 2 x Registos arquivo W valw dstw y 2 Subida impulso 2 y Registos arquivo W valw dstw Relógio 6 Relógio

SEQ - Estrutura Hardware Estado Contador de programa () Códigos de condição (CC) Arquivo de registos s Espaço de memória único Dados» Leitura/escrita Instruções» Leitura Fluxo de Instruções Instruções referenciadas pelo Processamento em estágios ção do Extrai icode, ifun ra, rb valc Instruções Instruction memória memory novo vale, valm Addr, Data Bch CC alua, alub srca, srcb dsta, dstb valm Dados Data memory valp vale ALU vala, valb incremento A B Registos Register M arquivo file E 7

SEQ - Estágios novo vale, valm valm Extrai Lê instruções da memória Registos programa Cálculo de valores e endereços Leitura/escrita dados registos Extrai icode, ifun ra, rb valc Instruções Instruction memória memory Addr, Data Bch CC alua, alub srca, srcb dsta, dstb Dados Data memória memory valp vale ALU vala, valb incremento A B Registos Register M arquivo file E 8

ção de Instruções Opcional Opcional 5 0 ra rb D icode ifun ra rb valc Formato de Instruções Instrução - octeto Registo opcional - octeto Constante opcional palavra icode:ifun ra:rb valc 9

Execução - Operações Arit./Lógicas OPl ra, rb 6 fn ra rb Extrai lê 2 octetos Lê operandos em registos Não faz nada Escreve no registo de destino Efectua a operação Ajusta códigos de condição (+2) 10

Estágios - Operações: Arit./Lógicas Extrai OPl ra, rb icode:ifun M 1 [] ra:rb M 1 [+1] valp +2 vala R[rA] valb R[rB] vale valb OP vala Ajusta CC R[rB] vale valp Lê instrução 1 octeto Lê registo 1 octeto Calcula valor Lê operando A Lê operando B Efectua operação na ALU Ajusta códigos de condição registo destino Instruções executadas numa sequência de passos simples Idêntico para todas as operações aritméticas/lógicas 11

Execução - rmmovl rmmovl ra, D(rB) 4 0 ra rb D Extrai Lê 6 octetos Lê operandos em registos Escreve na memória Não faz nada Calcula o endereço efectivo (+6) 12

Estágios : rmmovl Extrai 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 Lê instrução 1 octeto Lê registo 1 octeto Lê desfasamento D Calcula valor Lê operando A Lê operando B Calcula endereço efectivo Escreve valor na memória Cálculo de endereços através da ALU 13

Execução - popl popl ra b 0 ra 8 Extrai Lê 2 octetos Lê apontador de pilha Calcula novo valor para o apontador pilha (+4) Lê da memória no endereço antigo do apontador de pilha apontador de pilha registo destino (+2) 14

Estágios : popl Extrai 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 Lê instrução 1 octeto Lê registo 1 octeto Calcula valor Lê valor apont. pilha Lê valor apont. pilha Novo valor apont. pilha Lê valor da pilha apontador pilha Registo com valor resultado Uso da ALU para actualizar o apontador pilha Necessário actualizar dois registos Valor extraído Novo valor apontador de pilha 15

Execução - Saltos jxx Dest 7 fn Dest passa: XX XX Não segue deriva: XX XX Segue Extrai Lê 5 octetos Calcula (+ 5) Não faz nada Decide o salto comparando a condição de salto com os códigos de condição Não faz nada Não faz nada com Dest se Segue ou com valor antes calculado se Não segue 16

Estágios : Saltos Extrai jxx Dest icode:ifun M 1 [] valc M 4 [+1] valp +5 Lê instrução 1 octeto Lê endereço destino Calcula valor Bch Cond(CC,ifun) Bch? valc : valp Determina a opção a usar Calcula dois endereços para o Decisão baseada na condição na instrução e nos CC 17

Execução - call call Dest 8 0 Dest retorno: XX XX rotina: XX XX Extrai Lê 5 octetos Calcula novo (+ 5) Lê apontador pilha Calcula novo valor para apontador pilha (-4) Salva novo no novo endereço do apontador pilha o apontador pilha com valor Dest 18

Estágios : call Extrai 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 Lê instrução 1 octeto Lê endereço de destino Calcula o endereço retorno Lê apontador de pilha Decrementa o apont. pilha Salva endereço de retorno apontador de pilha com endereço destino Uso da ALU para actualizar o apontador de pilha o valor do 19

Execução - ret ret 9 0 retorno: XX XX Extrai Lê 1 octeto Lê apontador de pilhar Calcula novo valor para apontador pilha (+4) Obtém endereço de retorno da posição apontada pelo antigo apontador de pilha o apontador pilha com valor retorno: 20

Estágios : ret ret icode:ifun M 1 [] Lê instrução 1 octeto Extrai vala R[%esp] valb R[%esp] vale valb + 4 valm M 4 [vala] R[%esp] vale valm Lê operando apont. pilha Lê operando apont. pilha Novo valor para apont. pilha Lê endereço retorno apontador pilha com endereço de retorno Uso da ALU para actualizar o apontador de pilha Lê o endereço de retorno da memória 21

Passos - Computação Extrai icode,ifun ra,rb valc valp vala, srca valb, srcb vale Cond code valm dste dstm OPl ra, rb icode:ifun M 1 [] ra:rb M 1 [+1] valp +2 vala R[rA] valb R[rB] vale valb OP vala Set CC R[rB] vale valp Lê instrução 1 octeto Lê registo 1 octeto [Lê constante - 1 palavra] Calcula valor Lê operando A Lê operando B Efectua operação na ALU Ajusta códigos condição [Lê/escreve na memória] Registo com resultado [ com resultado] Todas as instruções seguem o mesmo padrão Diferente apenas o que é calculado em cada passo 22

Passos - Computação call Dest Extrai icode,ifun ra,rb valc valp vala, srca valb, srcb vale Cond code valm dste dstm icode:ifun M 1 [] valc M 4 [+1] valp +5 valb R[%esp] vale valb + 4 M 4 [vale] valp R[%esp] vale valc Lê instrução 1 octeto [Lê registo 1 octeto] Lê constante - 1 palavra Calcula valor [Lê operando A] Lê operando B Efectua operação na ALU [Ajusta códigos condição.] [Lê/escreve na memória] [Registo com resultado] com resultado] Todas as instruções seguem o mesmo padrão Diferente apenas o que é calculado em cada passo 23

Valores Calculados Extracção icode ifun ra rb valc valp ção srca srcb dste dstm vala valb Instrução - código Instrução - função Instrução - Registo A Instrução - Registo B Instrução - Constante - Aumentado Registo ID - A Registo ID - B Registo Destino - E Registo Destino - M Registo valor - A Registo valor - B 24 Execução vale Bch valm ALU - resultado Condição - Segue - valor

SEQ - Hardware new New Caixas azuis blocos pré-definidos E.g., memórias, ALU Caixas cinzentas: lógica de controlo Especificada em HCL Ovais brancas etiquetas para sinais Linhas espessas palavras de 32-bits Linhas finas: valores de 4-8 bits Linhas ponteadas valores de 1-bit Memory Execute Decode Fetch Bch CC icode ifun ra Mem. control ALU A Instruction memory rb read write vale ALU valc Data memory Addr ALU B valm data out Data valp vala increment ALU fun. valb A B M Register file E dste dstm srca srcb dste dstm srca srcb Write back 25

Lógica - Extracção icode ifun ra rb valc valp Instr válida Se valc Se reg-ids incremento Divide Split Byte 0 Alinha Align Bytes 1-5 Instruções Instruction memória memory Blocos Pré-definidos : Registo com contador de programa de Instruções: Leitura de 6 octetos ( to +5) Divide: Divide a instrução (octeto) em icode e ifun Alinha: Obtém os campos para ra, rb, e valc 26

Lógica - Extracção icode ifun ra rb valc valp Instr válida Se valc Se reg-ids incremento Divide Split Byte 0 Alinha Align Bytes 1-5 Instruções Instruction memória memory Lógica Controlo Instr. válida: Esta instrução é válida? Se regids: Esta instrução referencia registos? Se valc: Esta instrução refere valores constantes? 27

Lógica de Controlo Extracção nop 0 0 halt 1 0 rrmovl ra, rb 2 0 ra rb irmovl V, rb 3 0 8 rb V rmmovl ra, D(rB) 4 0 ra rb D mrmovl D(rB), ra 5 0 ra rb D OPl ra, rb 6 fn ra rb jxx Dest 7 fn Dest call Dest 8 0 Dest ret 9 0 pushl ra A 0 ra 8 popl ra B 0 ra 8 bool need_regids = icode in { IRRMOVL, IOPL, IPUSHL, IPOPL, IIRMOVL, IRMMOVL, IMRMOVL }; bool instr_valid = icode in { INOP, IHALT, IRRMOVL, IIRMOVL, IRMMOVL, IMRMOVL, IOPL, IJXX, ICALL, IRET, IPUSHL, IPOPL }; 28

Lógica ção Arquivo de Registos Lê portas A, B Escreve portas E, M Endereços são IDs para acesso a registos (8 para não-acesso) vala valb A B M Registos Register arquivo file E dste dstm srca srcb dste dstm srca srcb valm vale Lógica de Controlo srca, srcb lê endereço da porta dsta, dstb escreve no endereço da porta icode ra rb 29

Origem - A OPl ra, rb vala R[rA] rmmovl ra, D(rB) vala R[rA] popl ra vala R[%esp] jxx Dest call Dest Lê operando A Lê operando A Lê apontador pilha Sem operando Sem operando ret vala R[%esp] 30 Lê apontador pilha int srca = [ icode in { IRRMOVL, IRMMOVL, IOPL, IPUSHL } : ra; icode in { IPOPL, IRET } : RESP; 1 : RNONE; # Don't need register ];

Destino E OPl ra, rb R[rB] vale rmmovl ra, D(rB) popl ra R[%esp] vale jxx Dest call Dest R[%esp] vale com resultado Não faz nada apont. pilha Não faz nada apont. pilha ret R[%esp] vale int dste = [ icode in { IRRMOVL, IIRMOVL, IOPL} : rb; icode in { IPUSHL, IPOPL, ICALL, IRET } : RESP; 1 : RNONE; # Don't need register ]; 31 apont. pilha

Lógica - Execução Unidades ALU 4 funções Gera códigos de condição CC Registo com 3 bits de condições bcond Calcula bit de salto Lógica de controlo Ajusta CC É necessário actualizar os códigos de condição? ALU A Entrada A para a ALU ALU B Entrada B para a ALU ALU fun Qual a função efectuada pela ALU? Bch bcond CC Set CC ALU A vale ALU ALU B icode ifun valc vala valb ALU fun. 32

ALU Entrada A OPl ra, rb vale valb OP vala Efectua operação ALU rmmovl ra, D(rB) vale valb + valc popl ra vale valb + 4 jxx Dest call Dest vale valb + 4 Calcula endereço efectivo Incrementa apont. pilha Não faz nada Decrementa apont. pilha ret vale valb + 4 Incrementa apont. pilha int alua = [ icode in { IRRMOVL, IOPL } : vala; icode in { IIRMOVL, IRMMOVL, IMRMOVL } : valc; icode in { ICALL, IPUSHL } : -4; icode in { IRET, IPOPL } : 4; # Other instructions don't need ALU ]; 33

ALU - Operação OPl ra, rb vale valb OP vala rmmovl ra, D(rB) vale valb + valc popl ra vale valb + 4 jxx Dest call Dest vale valb + 4 Efectua operação ALU Calcula endereço efectivo Incrementa apont. pilha Não faz nada Decrementa apont. pilha ret vale valb + 4 Incrementa apont. pilha int alufun = [ icode == IOPL : ifun; 1 : ALUADD; ]; 34

Lógica Lê/escreve palavras Lógica Controlo Mem. esc deve ser lida uma palavra? Mem. lê Deve ser escrita uma palavra? icode Mem. lê Mem. esc lê escreve Dados Data memória memory Mem end vale valm Saída dados Mem dados vala Entrada dados valp Mem. end Selecciona endereço Mem. Dados Selecciona dados 35

Endereçamento OPl ra, rb rmmovl ra, D(rB) M 4 [vale] vala popl ra valm M 4 [vala] jxx Dest call Dest M 4 [vale] valp ret valm M 4 [vala] Não faz nada Escreve valor na memória Lê valor da pilha Não faz nada Escreve valor de retorno na memória Lê endereço retorno int mem_addr = [ icode in { IRMMOVL, IPUSHL, ICALL, IMRMOVL } : vale; icode in { IPOPL, IRET } : vala; # Other instructions don't need address ]; 36

- Leitura OPl ra, rb rmmovl ra, D(rB) M 4 [vale] vala popl ra valm M 4 [vala] jxx Dest call Dest M 4 [vale] valp ret valm M 4 [vala] Não faz nada Escreve valor na memória Lê da pilha Não faz nada Escreve valor de retorno na pilha Lê endereço de retorno bool mem_read = icode in { IMRMOVL, IPOPL, IRET }; 37

Lógica para actualização novo Determina o novo valor do New icode Bch valc valm valp 38

OPl ra, rb valp rmmovl ra, D(rB) valp popl ra valp jxx Dest Bch? valc : valp call Dest valc Ajusta para destino ret valm int new_pc = [ icode == ICALL : valc; icode == IJXX && Bch : valc; icode == IRET : valm; 1 : valp; ]; 39 Ajusta para destino

SEQ - Operação Combinacional Lógica CC 0x00c 40 Lê Leitura Portas Dados Data memória memory Registos Register arquivo file Write Escreve Escrita Portas Estado Registo Registo de códigos condição de dados Registos em arquivo dos à subida do impulso Lógica combinacional ALU Lógica de Controlo Leituras de Instruções Arquivo de registos Dados

SEQ Operação #2 Relógio Ciclo 1: Ciclo 2: Ciclo 3: Ciclo 4: Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 0x000: irmovl $0x100,% ebx # % ebx <-- 0x100 0x006: irmovl $0x200,% edx # % edx <-- 0x200 0x00c: addl %edx,%ebx # % ebx <-- 0x300 CC < -- 000 0x00e: je dest # Not taken Combinacional Lógica CC 100 Lê Leitura Portas Dados Data memória memory Registos Register arquivo file %ebx = 0x100 Escreve Escrita Portas Ajuste do estado de acordo com a 2ª instrução irmovl Lógica combinacional começa a reagir à alteração do estado 0x00c 41

SEQ Operação #3 Relógio Ciclo 1: Ciclo 2: Ciclo 3: Ciclo 4: Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 0x000: irmovl $0x100,% ebx # % ebx <-- 0x100 0x006: irmovl $0x200,% edx # % edx <-- 0x200 0x00c: addl %edx,%ebx # % ebx <-- 0x300 CC < -- 000 0x00e: je dest # Não segue Combinacional Lógica CC 100 000 Lê Leitura Portas Dados Data memória memory Registos Register arquivo file %ebx = 0x100 Escreve Escrita Portas Ajuste do estado de acordo com a 2ª instrução irmovl Lógica combinacional gera resultados para a instrução addl 0x00c 0x00e 42

SEQ Operação #4 Relógio Ciclo 1: Ciclo 2: Ciclo 3: Ciclo 4: Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 0x000: irmovl $0x100,% ebx # % ebx <-- 0x100 0x006: irmovl $0x200,% edx # % edx <-- 0x200 0x00c: addl %edx,%ebx # % ebx <-- 0x300 CC < -- 000 0x00e: je dest # Not taken Combinacional Lógica CC 000 Lê Leitura Portas Escreve Dados Data memória memory Registos Register arquivo file % ebx = 0x300 Ajuste do estado de acordo com a instrução addl Lógica combinacional começa a reagir à alteração do estado Escrita Portas 0x00e 43

SEQ Operation #5 Relógio Ciclo 1: Ciclo 2: Ciclo 3: Ciclo 4: Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 0x000: irmovl $0x100,% ebx # % ebx <-- 0x100 0x006: irmovl $0x200,% edx # % edx <-- 0x200 0x00c: addl %edx,%ebx # % ebx <-- 0x300 CC < -- 000 0x00e: je dest # Não segue Combinational Combinacional Logic Lógica CC 000 Lê Escreve Dados Data memória memory Read Escrita Portas Ports Portas Ports Registos Register arquivo file % ebx = 0x300 Ajuste do estado de acordo com a instrução addl Lógica combinacional gera resultados para a instrução je 0x013 0x00e 44

SEQ - Discussão Realização Toda a instrução consiste numa sequência de passos simples Segue o modelo geral de fluxo em cada tipo de instrução Agrupa registos, memória e blocos combinacionais prédesenhados Conexão através de lógica de controlo Limitações Demasiado lenta para ser praticável Um único ciclo para propagação através da memória de instruções, do arquivo de registos, ALU, e da memória de dados Seria necessário um relógio extremamente lento As unidades de Hardware estariam activas apenas durante uma fracção do ciclo de relógio 45