Sei sulla pagina 1di 27

TEC 402 ARQUITETURA DE COMPUTADORES

CAPTULO 5 NVEL DE MICROPROGRAMAO 5.1 Introduo Interface entre o Nvel ISA e o Nvel de Lgica Digital. Este nvel de mquina virtual no est presente em mquinas RISC. Necessidade: simplificar o hardware, tornando-o mais eficiente. Arquitetura constituda por conjunto de Microinstrues que manipulam, fundamentalmente, memria de rascunho. O espao de endereamento visto pelas microinstrues a memria de rascunho. Microinstrues so instrues primitivas que codificam um nico ciclo de mquina a ser executado no caminho de dados da CPU. Os sinais de controle de todos os mdulos de processamento que compem o caminho de dados da CPU so codificados na microinstruo. O Microprograma o nico programa escrito para este nvel. O microprograma um interpretador de instrues do Nvel ISA (macroinstrues): busca, decodifica e executa as instrues dos programas do Nvel ISA. Vantagem: possibilidade de alterar o Nvel ISA escrevendo outro microprograma. Facilita a concepo de Famlias de Processadores. O microprograma armazenado em na Memria de Controle, que faz parte da Unidade de Controle microprogramada. As microinstrues que compem o microprograma so interpretadas pelo Nvel de Lgica Digital (essencialmente, pelo hardware da Unidade de Controle microprogramada): O hardware da Unidade de Controle microprogramada responsvel por buscar, uma a uma, cada micro instruo do microprograma na memria de controle e armazen-las em um registrador apropriado (Registrador de Microinstruo MIR). Os sinais de controle da CPU codificados na microinstruo armazenada no MIR so decodificados pelo hardware da Unidade de Controle microprogramada. O hardware da Unidade de Controle microprogramada responsvel pela execuo da microinstruo, ou seja, a aplicao dos sinais de controle no caminho de dados da CPU, de acordo com uma temporizao adequada. O hardware da Unidade de Controle microprogramada deve prover um meio de seqenciamento das microinstrues.

1|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

5.2 Exemplo de uma Macroarquitetura Simples Espao de Endereamento visvel ao programador: Memria principal: RAM de 4096 palavras de 16 bits cada. Via de Endereos de 12 bits (212 = 4096). Via de Dados de 16 bits. Via de controle: RD (requisita leitura) e WR (requisita escrita). Memria de Rascunho: CP: registrador Contador de Programa de 12 bits. PP: registrador Ponteiro de Pilha de 12 bits. AC: registrador Acumulador de 16 bits. Formato de Instrues: Tamanho fixo 16 bits. Cdigo de Operao + Endereo de Operando. Cdigo de Operao Endereo de Operando 4 bits 12 bits 16 bits 0 bits

Figura 5.1. Formato de Instrues para exemplo de Macroarquitetura. Tipos de Dados: Endereo de mquina de 12 bits: X = xxxx xxxx xxxx Constante de 12 bits: X = xxxx xxxx xxxx Modos de Endereamento: Imediato: Operando X na prpria instruo. Direto: Operando = m[X] (contedo do endereo X da memria). Indireto: Operando = m[AC] (contedo do endereo da memria apontado por AC). Local: Operando = m[X+PP] (contedo do endereo X+PP). Inerente: Operando implcito, obtido a partir de PP ou AC. Organizao da Pilha: PP inicializado com o valor da base da pilha no incio do programa. Pilha cresce no sentido decrescente de endereos. (PP decrementado antes de empilhar e incrementado depois de desempilhar). Entrada e Sada Mapeada em Memria: Entrada: Endereo 4092: Buffer de dados de entrada. Endereo 4093: Status de dados de entrada (MSB). Sada: Endereo 4094: Buffer de dados de sada. Endereo 4095: Status de dados de sada (MSB).
2|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

Conjunto de Instrues: 16 instrues: 16 Opcodes de 4 bits. Instrues de transferncia de dados: LOAD X / STOR X (carrega/armazena direto); LOCO X (carrega constante). Instrues aritmticas: ADDD X / SUBD X (adiciona/subtrai direto); ADDL X / SUBL X(adiciona/subtrai local). Instrues de desvio: JUMP X / JZER X / JNEG X (desvia para X se: incondicional/zero/negativo). Instrues de procedimentos: CALL X / RETN (chama X/retorna). Instrues de pilha: PUSH / POP (empilha/desempilha); PSHI / POPI (empilha/desempilha indireto).
Binrio 0000xxxxxxxxxxxx 0001xxxxxxxxxxxx 0010xxxxxxxxxxxx 0011xxxxxxxxxxxx 0100xxxxxxxxxxxx 0101xxxxxxxxxxxx 0110xxxxxxxxxxxx 0111xxxxxxxxxxxx 1000xxxxxxxxxxxx 1001xxxxxxxxxxxx 1010xxxxxxxxxxxx 1011000000000000 1100000000000000 1101000000000000 1110000000000000 1111000000000000 Mnemnico LOAD STOR ADDD SUBD ADDL SUBL JZER JNEG JUMP LOCO CALL RETN PUSH PSHI POP POPI Instruo Carrega direto Armazena direto Adiciona direto Subtrai direto Adiciona local Subtrai local Desvia se zero Desvia se negativo Desvia Carrega constante Chama procedimento Retorna Empilha Empilha indireto Desempilha Desempilha indireto Significado ac:=m[x] m[x]:=ac ac:=ac+m[x] ac:=ac-m[x] ac:=ac+m[pp+x] ac:=ac-m[pp+x] if ac =0 then cp:=x if ac <0 then cp:=x cp:=x ac:=x (0x4095) pp:=pp-1;m[pp]:=cp; cp:=x cp:=m[pp];pp:=pp+1 pp:=pp-1;m[pp]:=ac pp:=pp-1;m[pp]:=m[ac] ac:=m[pp];pp:=pp+1 m[ac]:=m[pp];pp:=pp+1

Figura 5.2. Conjunto de instrues do exemplo de macroarquitetura.

3|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

5.3 Exemplo de uma Microarquitetura Simples Caminho de Dados: Memria de Rascunho: 8 registradores. - Cada registrador tem sada para duas vias de 16 bits, A e B, atravs de dois sinais de habilitao de leitura correspondentes. - Cada registrador alimentado a partir da via S de 16 bits de sada da ULA por meio de dois sinais: um de seleo e outro de habilitao de escrita (HS comum a todos). - Conjunto de registradores: CP: Contador de Programa (s utiliza os 12 LSB). AC: Acumulador (16 bits). PP: Ponteiro de Pilha (s utiliza os 12 LSB). RI: Registrador de Instruo (16 bits). RT: Registrador de Armazenamento Temporrio (16 bits). Usado para armazenamento de dados temporrios, principalmente no processo de decodificao de instruo. MASC: Mscara (16 bits) usada para extrair o operando (12 LSB) de instruo de 16 bits. Armazena a constante MASC = 0000 1111 1111 1111. REM: Registrador de endereo da memria (s utiliza os 12 LSB). Usado para enderear memria principal. Possui tambm sada sempre habilitada para a via de endereos do barramento. RDM: Registrador de dados da memria (16 bits). Armazena dados em transferncias de e para a memria principal. Possui entrada e sada para a via de dados do barramento atravs dos sinais RD e WR, respectivamente. Latches A e B: (16 bits) mantm dados estveis na entrada da ULA. Os latches A e B so escritos a partir dos barramentos A e B atravs dos sinais LA e LB.

4|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

Unidade Lgica Aritmtica: Alimentada a partir de Latch A e de Latch B. Sadas de Status: N (resultado negativo) e Z (resultado zero). Sada: palavra de 16 bits, ULA(A,B), funo das entradas A e B, de acordo com entradas de controle F2F1F0. F2F1F0 000 001 010 011 100 101 110 111 S = F(A,B) A A+1 A1 A+B AB AB << A >>A Descrio Passa entrada A Incrementa entrada A Decrementa entrada A Soma A com B Subtrai B de A AND bit a bit de A e B Desloca A um bit esquerda Desloca A um bit direita

Figura 5.3. Funes selecionveis da ULA. Vias Internas: Via A (16 bits): memria de rascunho Latch A. Via B (16 bits): memria de rascunho Latch B. Via S (16 bits): ULA Memria de Rascunho (sinal HS habilita transferncias).

5|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

HS

Memria de Rascunho

Via A

Via B

CP AC PP RI RT MASC Via de Endereos Via de Dados REM RDM LA WR RD Latch A Latch B LB

F2F1F0 Via S

ULA

N Z

Figura 5.4. Caminho de Dados do exemplo de microarquitetura.

6|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

Formato da Microinstruo: Existem 32 sinais de controle para o caminho de dados: 8 sinais para ler a memria de rascunho pela via A. 8 sinais para ler a memria de rascunho pela via B. 8 sinais para escrever na memria de rascunho a partir da via S. 1 sinal para habilitar escrita na memria de rascunho, HS. 2 sinais para carregar os Latches A e B: LA e LB. 3 sinais para selecionar a funo da ULA: F = F2F1F0. 2 sinais para leitura e escrita do RDM: WR, RD. Estes 32 sinais devem ser codificados na microinstruo. Com alguma lgica adicional possvel reduzir a microinstruo: Os 24 sinais (8 + 8 + 8) de seleo de um registrador da memria de rascunho para operao com as vias A, B ou S podem ser codificados em campos de endereos A, B e S de 3 bits cada. Uma lgica adicional de decodificao ser necessria. Os sinais LA e LB no precisam ser codificados na microinstruo, uma vez que devem ser aplicados sempre, qualquer que seja o ciclo de mquina. Eles podem ser gerados diretamente, pelo prprio hardware da Unidade de Controle. Desta maneira, sobram 15 bits a codificar na microintruo. A microinstruo deve incluir um meio de codificar desvios condicionais no fluxo de execuo do microprograma, para controlar a seqncia das microinstrues. Oito bits sero utilizados para isto: Especificando uma memria de controle de 64 palavras, um campo END de 6 bits ser acrescentado microinstruo para especificar endereo de destino de desvios no microprograma. O tipo de desvio no microprograma ser codificado em um campo SQ (Seqncia) de 2 bits. SQ 00 01 10 11 Tipo de Desvio No desvie Desvie para END se N = 1 Desvie para END se Z = 1 Desvie para END incondicionalmente

Figura 5.5. Codificao de desvios na microinstruo.

7|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

Os campos resultantes na microinstruo so: A (3 bits) - enderea memria de rascunho para leitura atravs da via A: 000 = CP, 001 = AC, 010 = PP, 011 =RI, 100 = RT, 101 = MASC, 110 = REM, 111 = RDM. B (3 bits) - enderea memria de rascunho para leitura atravs da via A: 000 = CP, 001 = AC, 010 = PP, 011 =RI, 100 = RT, 101 = MASC, 110 = REM, 111 = RDM. S (3 bits) - enderea memria de rascunho para escrita a partir da via S: 000 = CP, 001 = AC, 010 = PP, 011 =RI, 100 = RT, 101 = MASC, 110 = REM, 111 = RDM. HS (1 bit) - habilita escrita na memria de rascunho a partir da via S: 0 = no habilita escrita, 1 = habilita escrita. F = F2F1F0 (3 bits) - codifica sinais de seleo da ULA: 000 = A, 001 = A+1, 010 = A-1, 011 = A+B, 100 = A B, 101 = AB, 110 = <<A, 111 = >>A. RD (1 bit) - requisita leitura da memria: 0 = nenhuma leitura, 1 = carrega RDM a partir da memria principal. WR (1 bit) - requisita escrita na memria: 0 = nenhuma escrita, 1 = escreve o contedo do RDM na memria principal. SQ (2 bits) - codifica desvios no microprograma: 00 = no desvie, 01 = desvie se negativo, 10 = desvie se zero, 11 = desvie incondicionalmente. END (6 bits) - Enderea memria de controle.

H S

R W D R

S Q

E N D

F:
000 = A 001 = A+1 010 = A-1 011 = A+B 100 = A-B 101 = AB 110 = <<A 111 = >>A

HS, RD, WR:


0 = no ativo 1 = ativo

SQ:
00 = no desvie 01 = desvie se N = 1 10 = desvie se Z = 1 11 = desvie sempre

Figura 5.6. Campos da microinstruo para controlar o caminho de dados.

8|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

Unidade de Controle Microcontrolada: Responsvel por interpretar as microinstrues do microprograma: busca, decodifica executa microinstrues. Unidades funcionais: Gerador de Sub-ciclos: circuito que gera quatro sub-ciclos do relgio utilizados para temporizar a microinstruo. Memria de Controle - ROM de 64 x 23 bits: armazena microinstrues do microprograma. Endereada a partir de Registrador Contador de Microprograma (CMP). Sada para Registrador de Microinstruo (RMI). Contador de Microprograma (CMP) - Registrador de 6 bits: enderea memria de controle. Armazena ponteiro que aponta para a prxima microinstruo a ser executada. Sada sempre habilitada para entrada de endereos da memria de controle. Entrada, a partir do Multiplexador, de Incrementador ou de campo END do Registrador de Microinstruo, de acordo com lgica de seqncia do microprograma. Registrador de Microinstruo (RMI) - Registrador de 23 bits: armazena microinstruo corrente a partir da memria de controle. Sada para as diversas linhas de controle da CPU. Registrador de Status: Armazena os bits de Status da ULA N (Negativo) e Z (Zero). Lgica de Seqncia do Microprograma: de acordo com as entradas N e Z (do registrador de status) e SQ (campo SQ do RMI) controla atualizao do CMP. Permite implementar desvios no microprograma. Multiplexador (Mux): recebe como entradas a sada do Incrementador e o campo END do RMI. De acordo com a lgica de microsseqenciamento, seleciona uma delas para escrever no CMP. Incrementador: recebe como entrada o contedo do CMP e fornece como sada o seu valor incrementado, o qual alimenta uma das entradas do multiplexador Mux. Decodificadores A, B e C: recebem como entrada os campos A, B ou S do RMI e geram sinais de seleo para leitura ou escrita de registradores da memria de rascunho por vias A, B ou S.

9|P g.

TEC 402 ARQUITETURA DE COMPUTADORES

Mux Incrementador CMP

Memria de Controle 64 x 23

Registrador de Microinstruo
3 A
Decodificador A

3 B
Decodificador B

3 S
Decodificador S

1 HS

5 F, RD, WR

1 SQ
1 2

END
3 4

Gerador de Sub-ciclos

Lgica de Seqncia
N Z Registrador de Status

HS

LA LB

Figura 5.7. Unidade de Controle Microcontrolada.

10 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Mux Incrementador CMP

Memria de Controle 64 x 23

Registrador de Microinstruo
3 A
Decodificador A

3 B
Decodificador B

3 S
Decodificador S

1 HS

5 F, RD, WR

2 SQ
1 2

END
3 4

Gerador de Sub-ciclos

Lgica de Seqncia
N Z Registrador de Status

RD WR

Memria de Rascunho Memria Principal 4096x16

Latch A

Latch B

ULA

Figura 5.8. Computador com Unidade de Controle Microcontrolada.

11 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Interpretao da Microinstruo: As microinstrues do microprograma so interpretadas pelo hardware da Unidade de Controle. A interpretao de uma microinstruo corresponde execuo de um ciclo de mquina no caminho de dados da CPU. O ciclo de busca-decodificao-execuo de microinstrues temporizado por sub-ciclos do relgio. No exemplo de microarquitetura, quatro sub-ciclos so utilizados: 1. A prxima microinstruo a ser executada, apontada pelo CMP, carregada no RMI. 2. Os dados endereados na memria de rascunho, disponveis nas vias A e B, so armazenados nos Latches A e B para processamento pela ULA. 3. O Registrador de Status atualizado de acordo com as sadas de status da ULA (N e Z). 4. A palavra de sada da ULA armazenada na memria de rascunho (atravs da via S). Em ciclos de leitura ou escrita, os sinais RD ou WR so aplicados durante este sub- ciclo. Busca da microinstruo: no primeiro sub-ciclo, o valor apontado por MPC carregado no MIR. Decodificao da microinstruo: os campos da microinstruo que possuem alguma codificao so decodificados pelo hardware correspondente. (Exemplo: os campos A, B e S, de endereo de memria de rascunho, so decodificados por decodificadores 3 para 8). Execuo da microinstruo: Os sinais de controle resultantes da decodificao so aplicados na seqncia adequada e no instante apropriado, de acordo com os sub-ciclos do relgio, implementando um ciclo de mquina no caminho de dados.

12 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Controle da Seqncia do Microprograma: A prxima microinstruo a ser interpretada apontada por CMP. O valor de CMP atualizado, a cada ciclo de mquina, a partir do multiplexador Mux. Dependendo do campo SQ da microinstruo corrente e do status da ULA, de acordo com uma lgica de seqencia, CMP atualizado a partir do Incrementador ou do campo END da microinstruo armazenado no RMI. O campo SQ especifica desvios no microprograma: SQ = 00, corresponde a uma microinstruo na qual nenhum desvio realizado. CMP carregado a partir do Incrementador. (CMP CMP + 1). A prxima microinstruo buscada no endereo seguinte ao da microinstruo corrente. SQ = 01, corresponde a uma microinstruo de desvio condicional se negativo, ou seja, se o bit de status da ULA N = 1, CMP carregado com o valor do campo END e o microprograma desviado para este endereo. SQ = 10, corresponde a uma microinstruo de desvio condicional se zero, ou seja, se o bit de status da ULA Z = 1, CMP carregado com o valor do campo END e o microprograma desviado para este endereo. SQ = 11, corresponde a uma microinstruo de desvio incondicional, ou seja, independente do status da ULA, CMP carregado com o valor do campo END e o microprograma desviado para este endereo. A lgica de seqncia, define se o MPC ser carregado a partir do incrementador ou do campo END do RMI. Est lgica consiste em um circuito combinacional que recebe como entradas os bits de status N e Z, bem como os dois bits (Q1 e Q0) do campo SQ do RMI, fornecendo como sada o sinal Mux de seleo da entrada do multiplexador Mux, o qual dado por: Mux = Q1'.Q0.N + Q1.Q0'.Z + Q1.Q0

13 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

5.4 Exemplo de um Microprograma Microlinguagem de Montagem: Microinstrues so palavras de 23 bits. No conveniente escrever programas usando a sua representao binria. Escrever o microprograma em linguagem de alto nvel e depois compilar pode gerar cdigo ineficiente. Um microprograma ineficiente resulta em um desempenho ineficiente do processador, na mesma proporo. Soluo: escrever em uma microlinguagem de montagem. Exemplo de operao na memria de rascunho: ac:=rdm+ac, l os registradores RDM e AC (a partir das vias A e B), soma os dois valores na ULA e armazena o resultado em AC. Funes da ULA: ac:=rdm; ac:=ac+1; ac:=ac-1; ac:=ac+rdm; ac:=ac-rdm; rem= irmask; rt:=<<ri, rt:=>>rt. Operaes na memria: rd, wr. Exemplo de desvios: goto 17, if n then goto 27, if z then goto 9.
COMANDO (em microlinguagem de montagem) A B S H F R W S S D R Q END

rem:=cp; rd; cp:=cp+1; rd; ri:=rdm; if n then goto 28; rt:=(<<ri); if n then goto 17; cp:=(rimasc); goto 0; rem:=(acmasc); wr; goto 11

0 0 7 3 3 1

0 0 0 0 5 5

6 0 3 4 0 6

1 1 1 1 1 1

0 1 0 6 5 5

1 1 0 0 0 0

0 0 0 0 0 1

0 0 1 1 3 3

00 00 28 17 0 11

Figura 5.9. Exemplos de comandos em microlinguagem de montagem e as microinstrues correspondentes. Os valores dos campos foram expressos em notao decimal, para simplificar.

14 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Microprograma exemplo: - O microprograma um interpretador de macroinstrues: implementa o ciclo de busca, decodificao e execuo das macroinstrues. - O ciclo de busca, decodificao, execuo executado em lao, que comea na linha 0 do microprograma. Ao final da execuo de uma macroinstruo, sempre existe uma microinstruo de desvio incondicional para 0, de modo a repetir o lao. - Busca da macroinstruo: (linhas 0, 1 e 2 do microprograma): Na linha 0, o cp carregado no REM para enderear a memria principal. Simultaneamente, o sinal RD ativado para requisitar leitura. Na linha 1, o sinal RD mantido ativo, para carregar a instruo endereada no RDM. Simultaneamente, o CP incrementado para apontar para a prxima instruo. Na linha 2, a instruo armazenada no RDM transferida para o RI, concluindo a busca. - Decodificao da macroinstruo: Realizada analisando os bits do cdigo de operao um a um Cada bit analisado atravs de sucessivos deslocamentos esquerda da macroinstruo, os quais so associados ao teste do MSB correspondente usando o bit N de status da ULA. A cada deslocamento, a instruo deslocada armazenada temporariamente no RT. De acordo com os testes dos bits do cdigo de operao, o fluxo do microprograma desviado numa busca em rvore at chegar no cdigo responsvel pela execuo da macroinstruo A decodificao comea j na linha 2 do microprograma, paralelamente ao fim do processo de busca. O primeiro bit do cdigo de operao testado ao passar pela ULA, na sua transferncia do RDM para o IR. A decodificao em rvore realizada nas linhas 2, 3, 4, 5, 14, 17, 20, 22, 28, 29, 30, 33, 41, 43 (ver figura). - Execuo da macroinstruo: Aps o processo de decodificao, o microprograma executa mais algumas microinstrues responsveis pela execuo da macroinstruo. Algumas macroinstrues semelhantes compartilham trechos de cdigo, por questo de eficincia. No final da execuo, sempre se executa um desvio incondicional para a linha 0, de modo a recomear o ciclo e interpretar a prxima macroinstruo.
15 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Microintruo 0: rem:=cp; rd; 1: cp:=cp+1; rd; 2: ri:=rdm; if n then goto 28; 3: rt:=(<<ri); if n then goto 17; 4: rt:=(<<rt); if n then goto 12; 5: rt:=(<<rt); if n then goto 9; 6: rem:=(rimasc); rd; 7: rd; 8: ac:= rdm; goto 0; 9: rem:=(rimasc); 10: rdm:=ac; wr; 11: wr; goto 0;

Comentrio

Microinstruo 34: pp:=pp-1; Lao principal 35: rem:=pp; Incremente cp 36: rdm:=cp;wr; Salva rdm/0xxx ou 37: cp:=(rimasc); wr; goto 0; 1xxx? 00xx ou 01xx? 000x ou 001x? 38: rem:=pp; rd; 0000 ou 0001? 39: pp:=pp+1; rd; 40: cp:=rdm; goto 0 0000 = LOAD Transfere dado 41: rt:=(<<rt); if n then goto 49; Carrega dado 42: pp:=pp-1; 0001 = STOR 43: rt:=(<<rt); if n then goto 47; Disponibiliza dado Transfere dado 44: rdm:=ac; 45: rem:=pp; wr; Enderea operando Busca operando 0010 ou 0011? 0010 ADDD 0011 SUBD 49: rem:=pp; 50: pp:=pp+1; rd; 51: rd; 46: wr; goto 0; 47: rem:=(acmasc); rd; 48: rd; goto 45

Comentrio 1010 CALL Enderea topo da pilha Disponibiliza cp Empilha cp e desvia

1011 RETN L cp do topo da pilha Retorna 110x ou 111x? Abre espao na pilha 1100 ou 1101? 1100 PUSH Enderea pilha disponibiliza dado Empilha 1101 PSHI L operando indireto Enderea pilha Atualiza ponteiro de pilha / sinaliza leitura Desempilha 1110 ou 1111? 1110 POP

12: rem:=ri;rd; 13: rd; 14: rt:=(<<rt); if n then goto 16; 15: ac:=ac+rdm; goto 0; 16: ac:=ac-rdm; goto 0;

17: rt:=(<<rt); if n then goto 22; 18: rem:=(rimasc); 19: rem:=rem+pp; rd. 20: rt:=(<<rt); if n then goto 16; rd;

010x ou 011x? 52: rt:=(<<rt); if n then goto b0=1; Mascara constante Calcula endereo 53: ac:=rdm; goto 0; Busca operando/0100 ou 0101 (SUBL)? 54: rem:=(acmasc); wr; goto 11 0100 ADDL 0110 ou 0111? 0110 JZER Desvio no realizado Desvia 0111 JNEG Desvio no realizado 10xx ou 11xx? 100x ou 101x? 1000 ou 1001? 1000 JUMP 1001 LOCO 1010 ou 1011?

1111 POPI

21: goto 15; 22: rt:=(<<rt); if n then goto 26; 23: ac:=ac; if z then goto 25; 24: goto 0; 25: cp:=(rimasc); goto 0; 26: ac:=ac; if n then goto 25; 27: goto 0; 28: rt:=(<<ri); if n then goto 41; 29: rt:=(<<rt); if n then goto 33; 30: rt:=(<<rt); if n then goto 32; 31: cp:=(rimasc); goto 0; 32: ac:=(rimasc); goto 0; 33: rt:=(<<rt); if n then goto 38;

16 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Figura 5.10. Exemplo de Microprograma.

C.O. 0 0 b1 0
Lin 4

Instruo LOAD
Lin 6

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

b0
Lin 5

1 0

STOR
Lin 9

ADDD
Lin 15

1 b2
Lin 3

b0
Lin 14

1 0

SUBD
Lin 16

ADDL
Lin 20

0 0 1 b1
Lin 17

b0
Lin 20

1 0

SUBL
Lin 21

JZER
Lin 23

1 b3
Lin 2

b0
Lin 22

1 0

JNEG
Lin 26

JUMP
Lin 31

0 b1 1 0
Lin 29

b0
Lin 30

1 0

LOCO
Lin 32

CALL
Lin 34

1 b2
Lin 28

b0
Lin 33

1 0

RETN
Lin 38

PUSH
Lin 44

0 1 b1
Lin 41

b0
Lin 43

1 0

PSHI
Lin 47

POP
Lin 53

b0
Lin 52

POPI
Lin 54

Figura 5.11. Busca em arvore para decodificao do Cdigo de Operao da Instruo (C.O. = b3b2b1b0).

17 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

5.5 Aspectos de Projeto do Nvel de Microprogramao O nvel de microprogramao funciona como interface entre o compilador e o interpretador. Deve interpretar eficientemente as macroinstrues, explorando as vantagens oferecidas pelo hardware. Microprogramao Horizontal x Microprogramao Vertical: Microprogramao Horizontal: Sinais de controle da CPU explcitos nos campos da microinstruo. Conjunto pequeno de microinstrues largas. Ocupa mais memria de controle. Ocupa mais rea do chip. Custo maior. Precisa pouco ou nenhum hardware de decodificao. Microinstrues mais versteis, conseguem fazer mais coisas em paralelo. Em mdia, utiliza menos microinstrues para interpretar uma macroinstruo. Microprograma mais curto, implica em melhor desempenho. Microprogramao Vertical: Uso generalizado de codificao dos sinais de controle da CPU nos campos da microinstruo. Conjunto grande de microinstrues estreitas. Ocupa menos memria de controle (microprograma mais comprido, mas com microinstrues bem mais estreitas do que na microprogramao horizontal). Ocupa menos rea do chip. Custo menor. Precisa de hardware adicional para decodificao da microinstruo. Microinstrues primitivas menos versteis, no exploram paralelismo de operaes no caminho de dados. Em mdia, utiliza mais microinstrues para interpretar uma macroinstruo. Microprograma mais longo, implica em desempenho menor.

18 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Nanoprogramao: Microprograma com n microinstrues de w bits de largura. Memria de controle (micromemria) de n w bits. Das n microinstrues que compem o microprograma, algumas podem aparecer repetidas vrias vezes, de modo que existe um nmero m < n de microinstrues diferentes no microprograma. Se m for muito menor do que n. Pode-se utilizar uma Nanomemria de m w bits para armazenar as m microinstrues diferentes. Neste caso, o microprograma ser armazenado numa micromemria. A micromemria armazenar n ponteiros (endereos) para as microinstrues armazenadas na nanomemria. A largura de um ponteiro deve ser igual largura do endereo da nanomemria: log2(W) bits. Assim, a micromemria deve ter capacidade de armazenamento igual a n log2(w). Resultado: Sem nanoprogramao: micromemria de n w bits. Mais memria de controle. Mais rea no chip. Maior custo. Um nico acesso memria de controle. Melhor desempenho. Com nanoprogramao: micromemria de n log2m bits + nanomemria de m w bits.Se m << n n log2m + m w << n w bit menos memria Menos rea no chip. Menor custo. Dois acessos a memria de controle (um micromemria e outro nanomemria). Desempenho menor. w bits Micromemria armazena Microprograma log2m bits Microprograma n m w bits Nanoprograma

Figura 5.12. Implementao de nanoprogramao.


19 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Pipeline: Paralelismo de operaes do ciclo de busca-decodificao-execuo. O Pipeline constitudo por seqncia de estgios operando em paralelo. A sada de um estgio serve de entrada para o seguinte. Em um pipeline de cinco estgios, por exemplo, um estgio busca instrues, outro as decodifica, o seguinte determina os endereos dos operandos das instrues, outro busca os operandos e o ltima executa as instrues A seqncia de interpretao de instrues no quebrada, mas vrias instrues so processadas simultaneamente. Em um mesmo instante, uma instruo est sendo executada pelo estgio de execuo, o estgio de busca de operandos procura os operandos da instruo seguinte, enquanto que o estgio de clculo de endereos determina onde buscar os operandos de uma terceira instruo. Ao mesmo tempo, uma quarta instruo est sendo decodificada pelo estgio correspondente, enquanto que a instruo seguinte a esta buscada pelo estgio de busca.
Estgio de busca de instruo
Instruo 5

Fila de Instrues

Estgio de decodificao
Instruo 4

Estgio de clculo de endereo


Instruo 3

Estgio de busca de operandos


Instruo 2

Estgio de Execuo

Instruo 1

Figura 5.13. Um Pipeline de cinco estgios. Problema: em instrues de desvio, o endereo da prxima instruo a ser buscada s ser conhecido com certeza aps a execuo da instruo atual. Estudos estatsticos mostram que cerca de 30% das instrues so desvios. Quando o pipeline processa uma instruo de desvio, o mesmo carregado com vrias instrues que podem no ser as que deveriam ser executadas aps o desvio. A perda de ciclos do pipeline denominada Penalidade de Desvio. Um mecanismo de soluo simples para este problema assumir que o desvio no ser realizado e buscar a instruo seguinte em PC+1. Se a instruo for um desvio e este acontecer, necessrio restaurar a configurao original do pipeline anterior ao desvio (fazer squashing), o que redunda em perda de desempenho.
20 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Estgio : Ciclo: 1 Busca de instruo 1 Decodificao de instruo Clculo de endereo Busca de operando Execuo de instruo

2 2 1

3 4 5 6 7 D 2 D 1 2 D 1 2 D 1 2 D

8 4

9 10 11 5 6 7 4 5 6 4 5 4

12 8 7 6 5 4

Figura 5.14. Penalidade devia a uma instruo de desvio D em um pipeline de cinco estgios. Tm, Tempo mdio de interpretao de uma instruo no pipeline: Tm = (1-Pd).(1) + Pd.[Pdr.(1+D)+(1-Pdr).(1)] = (1 + D.Pd.Pdr) ciclos. onde: D = penalidade de desvio, em ciclos. Pd = Probabilidade de que a instruo seja um desvio. Pdr = Probabilidade de que, sendo a instruo um desvio, este efetivamente acontea.

A eficiencia do pipeline : Ef = 1/Tm = 1/(1 + D.Pd.Pdr). Uma maneira de aumentar a eficincia do pipeline, consiste em utilizar uma predio da maneira em que o desvio ser realizado, de modo a buscar a instruo que ter mais probabilidade de suced-lo. Seja Pde a probabilidade da predio estar errada, a eficincia do pipeline : Ef = 1/(1 + D.Pd.Pde). Assim, quanto melhor forem as predies, menor Pde e, conseqentemente, maior a eficincia do pipeline. Dois tipos de predies podem ser utilizadas: Predio esttica (em tempo de compilao): compilador coloca a instruo seguinte mais provvel logo aps o desvio. Exemplo: desvios em loops tem grande probabilidade de ocorrer; desvios devidos a chamadas de rotinas de exceo tem pequena probabilidade de ocorrer. Predio dinmica (em tempo de execuo): microprograma mantm tabela de endereos de destino de instrues de desvio e informaes sobre o seu comportamento.
21 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Memria Cache: Problema: A CPU mais rpida do que a memria principal. A memria principal um gargalo no desempenho da CPU. A cada requisio, a CPU perde desempenho esperando que a memria atenda a sua requisio. Memria de desempenho equivalente ao da CPU pode ser construda, mas a custo muito alto. Soluo: combinar uma memria grande e lenta (memria principal) com uma memria pequena e rpida (memria cache). Esta combinao, feita de maneira apropriada, responde como se fosse uma nica memria grande e relativamente rpida. A memria principal, barata, associada a uma pequena quantidade de memria rpida (cache), que por ser pequena no to cara, resulta numa memria global razoavelmente rpida a um custo razoavelmente barato.

CPU

Memria Principal

CACHE Figura 5.15. Memria Cache. O ganho de desempenho na combinao entre memria principal e memria cache possvel graas ao Princpio da Localidade, que se baseia no fato de que o acesso RAM no completamente aleatrio, Princpio da Localidade Espacial: existe grande probabilidade que o prximo endereo a ser referenciado se encontre prximo ao ltimo endereo da referncia mais recente memria. Exemplo: a busca de instrues de um programa geralmente feita em PC+1. Princpio da Localidade Temporal: existe grande probabilidade que um endereo referenciado recentemente, brevemente seja referenciado novamente. Exemplo: execuo de instrues dentro de um loop.

22 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

De acordo com o princpio da localidade, palavras so buscadas em bloco na memria principal e trazidas para a cache. O prximo acesso a essas palavras ser mais rpido, pois esto na cache. Palavras so buscadas primeiro na cache, caso no se encontrem l (falha na cache), so buscadas na memria principal e trazidas para a cache. Taxa de acertos, h, a razo entre o nmero de referncias a uma palavra que podem ser satisfeitas pela cache e o nmero total de referncias a essa palavra. Se uma palavra for referida k vezes, a primeira referncia ser lenta (na memria principal), mas as (k-1) referncias seguintes sero rpidas (na memria cache). Assim, a taxa de acertos dada por: h = (k-1)/k Ento, a taxa de falhas da cache : (1-h) = 1/k Seja tm o tempo mdio de acesso memria principal e tc o tempo mdio de acesso cache, ento o tempo mdio de acesso ta memria (principal + cache) dado por: ta = tc + (1-h).tm Se h 1, ento ta tc (todas as referncias podem ser satisfeitas pela cache). Se h 0, ento ta tc + tm (nenhuma referncias pode ser satisfeita pela cache e h uma referncia cache seguida por uma referncia memria principal). Quanto mais vezes for referida uma mesma palavra, (maior k), melhor a taxa de acertos e melhor o desempenho do sistema. Em alguns sistemas, a referncia memria principal iniciada em paralelo com referncia cache, de modo que, caso a cache no consiga satisfazer a referncia, a busca da palavra desejada na memria principal j se encontre em andamento, melhorando o desempenho. O microprograma encarregado de controlar a interrupo da busca na memria principal, caso a cache contenha a palavra desejada.

23 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Memria Cache Associativa: Memria principal, com espao de endereamento de 2m endereos, dividida em (2m/b) blocos de b bytes cada. Memria cache constituda de slots. Cada slot tem trs campos: Bit de slot vlido: indica se o slot est ocupado com uma palavra vlida, trazida da memria principal. Nmero de bloco: contm o nmero do bloco = endereo da palavra na memria principal dividido pelo tamanho b do bloco. Serve para enderear palavras dentro da cache. Valor: armazena o dado propriamente dito. Endereo 0 4 8 12 16 83 210 541 333 226 . . . No do Bloco 0 1 2 3 4 Vlido 1 0 1 1 0 1 . . . 1 No do Bloco 3 777 4 0 . . . 1 Valor 333 2994 226 83 . . . 210

224-1 (a) (b)

Figura 5.16. Cache Associativa. a) Memria de 16 M dividida em 4 M blocos de 4 bytes. b) Memria cache com 1 K slots. A busca de uma palavra na cache associativa envolve duas fases: Determinao do nmero do bloco a partir do endereo. facilmente obtido dividindo o endereo pelo tamanho b do bloco. Busca do slot vlido que contm este nmero de bloco (mais difcil). Hardware dedicado (e caro) compara simultaneamente os campos de nmero de bloco de todos os slots com o nmero de bloco procurado.
24 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Na cache associativa, a ordem das entradas aleatria. O microprograma busca a palavra na cache e, se no estiver l, a seguir, na memria principal armazenando-a num slot com bit vlido igual a zero. Caso a cache estiver cheia (todos os bits vlido iguais a 1), alguma palavra dever ser descartada, de acordo com uma poltica de substituio adequada. Memria Cache com Mapeamento Direto: Na cache com mapeamento direto, cada endereo da memria principal possui um slot correspondente associado na cache, ou seja, uma palavra buscada num dado endereo da memria principal ser mapeado sempre no mesmo slot da cache. Como a cache muito menor do que a memria principal, muitos endereos compartilham um mesmo slot. Memria cache constituda de slots. Cada slot tem trs campos: Bit de slot vlido: indica se o slot est ocupado com uma palavra vlida, trazida da memria principal. Tag: armazena a parte do endereo da memria principal que identifica qual das palavras que mapeam naquele slot est efetivamente armazenada no mesmo. Valor: armazena o dado propriamente dito, constitudo por um bloco de bytes trazido da memria principal numa referncia mesma. Um endereo dividido em trs campos: Tag: conjunto de bits mais significativos do endereo que identificam uma palavra dentre aquelas que mapeam no mesmo slot. Tag = No Bloco/No total de slots. Slot: conjunto de bits do endereo que identificam em qual slot mapeado na cache. Slot = resto(No Bloco/No total de slots). Um campo de log2b bits: identifica palavras dentro de um mesmo bloco de bytes na memria principal. A busca de uma dada palavra na cache extremamente simples: o campo slot do endereo usado para enderear a cache e o campo Tag do endereo comparado com o campo Tag do slot correspondente, de modo a verificar se, dentre as palavras que mapeam naquele slot, a palavra correntemente armazenada no mesmo aquela efetivamente procurada.
25 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Problema: blocos mltiplos mapeam no mesmo slot. Pode degradar o desempenho, pois K palavras importantes (usadas freqentemente) podem estar armazenadas em blocos mltiplos.

Endereos que mapeam no Slot 0, 4096, 8192, 12288, ... 4, 4100, 8196, 12292, ... 8, 4104, 8200, 12296, ... 12, 4108, 8204, 12300, ...

4092, 8188, 12284, 16380, ...

Vlido 1 0 1 1 . . . 1 (a)

Tag 3 1 4 . . . 0

Valor 345 678 910 . . . 111

Bits

12 Tag (b)

10 Slot

2 00

Figura 5.17. a) Cache com Mapeamento com 1 K slots de quatro bytes cada. b) Extrao do Slot e do Tag a partir de um endereo de 24 bits. Comparao - Cache Associativa e Cache com Mapeamento Direto: Cache Associativa Cache com Mapeamento Direto Taxa de acertos maior, pois no Mais simples. h conflitos. Mais barato. Mais complexo e caro, pois requer Tempo de acesso rpido hardware dedicado para determinar o slot que armazena o bloco procurado. Figura. 5.18. Comparao entre Cache Associativa e Cache com Mapeamento Direto.

26 | P g .

TEC 402 ARQUITETURA DE COMPUTADORES

Memria Cache Associativa por Conjunto: Caso geral: combinao de cache associativa e cache com mapeamento direto. Usa N entradas por slot. Se N = 1 cache com mapeamento direto. Se No de slots = 1 cache associativo (entradas devem ser distinguidas pelo seu tag.
Slot 0 1 2 3 4 5 . . . Entrada 0 Vl. Tag Valor Entrada 1 Vl. Tag Valor ... ... ... ... ... ... Entrada n-1 Vl. Tag Valor

...

Figura 5.19. Cache Associativa por Conjunto com n entradas por Slot. Tcnicas de Manipulao de Escrita: Quando o contedo de uma modificado na cache, torna-se necessrio atualizar a palavra original correspondente na memria principal. Duas tcnicas podem ser utilizadas: Write Through: A palavra escrita na cache e imediatamente atualizada na memria principal. Copy Back: Memria principal s alterada quando a entrada correspondente na cache for alterada.

Write Through Mais trfego no barramento.

Copy Back Pode complicar transferncia entre E/S e memria principal, (pois esta no est atualizada).

Fig. 5.20. Comparao entre tcnicas de manipulao de escrita.


27 | P g .

Potrebbero piacerti anche