You are on page 1of 17

Reviso de Computadores Digitais I: ORGANIZAO BSICA: Um computador digital consiste em um sistema integrado de processadores (Unidade de Controle, Unidade Lgica

e Aritmtica e Registradores), memrias e dispositivos de entrada e sada. CONCEITOS BSICOS: Instruo: o comando para uma mquina Programa: seqncia de instrues que descrevem como executar uma determinada tarefa. Linguagem de mquina: conjunto de instrues primitivas da mquina; devem ser simples reduzindo a complexidade e custo de implementao. Mquina: dispositivo capaz de executar um programa escrito na sua linguagem de mquina. Linguagem de Baixo Nvel: toda aquela cujas instrues esto ligadas as caractersticas da mquina. Linguagem de Alto Nvel: toda aquela cujas instrues esto intimamente ligadas s caractersticas da aplicao. Mquina Virtual: mquina hipottica para uma determinada linguagem. Traduo: mtodo pelo qual um programa escrito numa liguagem L2 substitudo por outro programa escrito em linguagem L1, ento executado pela mquina M1, cuja linguagem de mquina L1. **GERA UM NOVO PROGRAMA** Compilao: processo de traduo de uma linguagem de alto nvel para uma linguagem de baixo nvel. Interpretao: mtodo pelo qual uma mquina M1, cuja linguagem da mquina L1, executa um programa escrito em linguagem L2, instruo por instruo, atravs de uma seqncia de instrues equivalentes em L2. **NO GERA UM NOVO PROGRAMA** NVEIS DE ORGANIZAO: Nvel 0 ou de lgica virtual: o hardware verdadeiro do computador e consiste nos dispositivos eletrnicos que respondem aos estmulos gerados pelas instrues da linguagem de mquina de nvel 1. No existe o conceito de programa e os objetos so denominados portas. Nvel 1 ou de microprogramao: o verdadeiro nvel de mquina, havendo um programa chamado microprograma, cuja funo interpretar as instrues do nvel 2, chamadas microinstrues. Estas instrues so executadas diretamente pelo hardware do computador. Nvel 2 ou de mquina convencional: primeiro nvel de linguagem virtual, sua linguagem chamada de linguagem de mquina do computador. As instrues so interpretadas pelo microprograma. Em computadores que no tenham o nvel de microprogramao, as instrues deste nvel so executadas diretamente pelo hardware do computador. Nvel 3 ou de sistema operacional: apresenta a maior parte das funes de nvel 2; apresenta um conjunto de novas instrues que so chamadas ao sistema operacional. Tem organizao diferente da memria principal, utilizando o conceito de memria virtual. Tem capacidade de executar dois ou mais programas em paralelo (multi-programao). As novas funcionalidades so realizadas por um interpretador denominado sistema operacional em execuo no nvel 2. As instrues do nvel 3 idnticas s de nvel 2 so executadas pelo micro-programa (nvel 1).

Nvel 4 ou de linguagem de montagem: apresenta as instrues do nvel 3 sob a forma de mnemnicos. Os programas em linguagem de montagem (assembly) so traduzidos (pelo assembler) para a linguagem de nvel 3 e ento interpretadas pela mquina apropriada (nvel 2 ou 1). Nvel 5 ou de linguagem orientada a problemas: linguagem de alto nvel. Os programas escritos nesta linguagem so, geralmente, compilados para o nvel 4 ou 3. ***OBSERVAES*** Os programas de nvel 2 e 3 so sempre interpretados, enquanto os de nvel 4 e 5 so traduzidos. As linguagens de nvel 1, 2 e 3 so binrias, as de nvel 4 e 5 so simblicas (contm palavras e abreviatura) SISTEMAS DE REPRESENTAO BINRIA: NMEROS NEGATIVOS: 1) Sinal e Magnitude: o bit mais significativo usado para representar o sinal (0 + e 1 -) e os bits restantes representam o valor absoluto do nmero: +8 00001000 -8 10001000 2) Complemento de um: um nmero negativo de valor absoluto v o complemento lgico do nmero positivo de mesmo valor absoluto, incluindo o bit de sinal; +8 00001000 -8 11110111 3) Complemento de dois: a soma da constante 1 e do complemento de um do nmero. Se houver um vai-um, este deve ser desprezado; +8 00001000 -8 00001000 11110111 + 1 11111000

4) Excesso de 2n-1: Nmeros positivos e negativos so representados pela soma deles com 2n-1 (n o nmero de bits) +8+128 = 136 10001000 -8 +128 = 120 01111000 NMEROS REAIS: 1) Nmeros em Ponto Fixo: a palavra no computador dividida em duas partes: inteira e fracionria. O ponto decimal fictcio!!! 3,625 1.21 + 1.20 + 1.2-1 + 0.2-2 + 1.2-3 = 11(.)1012 2) Nmeros em Ponto Flutuante: Modelo: N = M 2 E (N o nmero, M a mantissa e E o expoente) O expoente representado em excesso de 1024; O nmero de dgitos da mantissa determina a preciso do dado representado;

Uma representao dita normalizada se o dgito mais significativo da mantissa diferente de zero;

Exemplo: 673 .10 14 .

Modelo: O sinal da mantissa representado pelo bit S, que, por questes de eficincia separado da representao do mdulo da mantissa o qual constitudo pelos 23 bits mais direita. O valor do mdulo da mantissa normalmente dado por 1+M(2), isto , 1 mais o valor de M considerado como nmero racional binrio, com a vrgula esquerda do bit mais significativo. Os oito bits restantes so interpretados como um inteiro positivo E e representam o expoente cujo valor E-127. O valor representado F=(-1)S(2E-127)(1.M)(2) exceto se E for 00000000 ento F=(-1)S(2-127)(.M(2)) e se M tambm zero ento F=0. Considere

Neste caso, S=1 indica que o nmero negativo; 10000111(2)=135(10) logo o expoente 135-127=8; e o mdulo da mantissa :

O valor representado : 2 8 x1.625 = 416 ORGANIZAO BSICA: A UCP tem como funo executar programas armazenados na memria principal (MP), buscando instrues, examinando-as e, ento, executando uma aps a outra. A ordem de execuo de uma instruo na UCP a seguinte (ciclo da busca, decodificao e execuo): 1) busca a prxima instruo; 2) atualiza PC; 3) determina o tipo de instruo; 4) determina onde esto os dados; 5) busca os dados; 6) executa a instruo; 7) armazena resultados; 8) volta ao item 1. A UC (Unidade de Controle) responsvel pela busca das instrues da MP e sua anlise. A ULA realiza operaes lgicas e aritmticas. Os registradores da UCP constituem uma memria local, de alta velocidade, usada para armazenar resultados temporrios, informao de controle (CP, RI, ACC). Classificao de Flynn:

Os limites fsicos determinam at quando uma mquina pode ser acelerada aumentando somente a velocidade do hardware. As mquinas paralelas podem ser classificadas conforme o fluxo de instrues. SISD (Single Instruction, Single Data): fluxo nico de instrues e de dados, executado por uma nica CPU e uma memria contendo seus dados. Tradicional Mquina de Von Neumann. SIMD (Single Instruction, Multiply Data): fluxo nico de instrues e mltiplo de dados. MIMD (Multiply Instruction, Multiply Data): fluxo mltiplo de instrues e de dados. Pipeline: caracterstica de buscar a informao num ciclo de mquina e executar no ciclo seguinte. Ela permite que quase todas as instrues sejam executadas em apenas um ciclo, tornando o sistema mais rpido. UNIDADE DE CONTROLE: Funo: executar o microprograma cujas instrues permitem controlar os registradores, os barramentos, a ULA, as memrias e outros componentes do hardware. O microprograma armazenado numa memria de controle, localizada fisicamente dentro do processador. Os registradores esto localizados fisicamente dentro do processador. Um barramento uma coleo de fios usados para transmitir sinais em paralelo. Pode ser unidirecional ou bidirecional. A maioria do computadores tem um barramento de endereo, um barramento de dados e um barramento de controle para a comunicao entre a UCP e a memria. MAR (Memory Access Register): responsvel pelo armazenamento do endereo da memria. MBR (Memory Buffer Register): responsvel pelo armazenamento do dado. A linha de controle de MBR permite carregar o registrador com dado da UCP. O sinal RD permite carregar o MBR com dado do barramento. O sinal WR permite liberar o contedo do registrador no barramento. Os barramentos A e B alimentam uma ALU de largura de 16 bits, que pode realizar 4 funes: A+B, A and B, A e not A. A ALU fornece dois bits de estado, de acordo com a sada atual: N, que ligado quando a sada negativa e Z, que ligado quando a sada zero. Vale ressaltar que os barramentos A e B no alimentam a ALU diretamente. Eles alimentam os latches A e B, que por sua vez alimentam a ALU. Estes latches permitem manter os dados estveis durante o ciclo de operao da ALU, agem como se congelassem os dados at que uma operao seja concluda. O registrador MAR carregado a partir do latch B, em paralelo com a operao da ALU. Nas escritas, o registrador MBR pode ser carregado pelo deslocador, em paralelo ou ao invs de uma escrita na memria de rascunho. A linha de controle do bloco AMUX que determina se a ALU deve ser alimentada pelo latch A ou MBR A sada da ALU entra em um deslocador, que pode desloc-la de 1 bit em qualquer direo ou nenhuma. Um ciclo consiste em colocar os valores nos barramentos A e B, armazen-los nos dois circuitos de latch, pass-los pela ULA e pelo deslocador e armazen-los na memria local ou no MBR. A seqncia de eventos obtida atravs do relgio de 4 ciclos: 1) Carregar a prxima microinstruo no registrador de IR; 2) Colocar o contedo dos registros nos barramentos A e B e armazen-los nos latches A e B; 3) Dar tempo a ULA e aos registradores para produzirem um resultado e carregar o MAR, se necessrio.

4) Armazenar o valor existente no barramento C, na memria local (registradores) ou no MBR. Um circuito de clock emite uma seqncia peridica de pulsos, os quais definem os ciclos de mquina. Durante cada ciclo, ocorre alguma atividade bsica, como a execuo de uma microinstruo. A diviso em subciclos permite executar partes da micro-instruo em uma determinada ordem. Formato da microinstruo: Contm 13 campos, sendo dois condicionais (COND e ADDR). AMUX: controla a entrada esquerda da ALU: 0=latch A, 1=MBR COND: determina se a prxima microinstruo ser buscada de MPC+1 ou de ADDR. 00=no desvia; a prxima instruo ser tomada de MPC+1; 01=desvia para ADDR se N=1 10= desvia para ADDR se Z=1 11=desvie para ADDR incondicionalmente Circuito lgico:
LR NZ

00 01 11 10

00 0 0 1 0

01 0 0 1 1

11 0 1 1 1

10 0 1 1 0

Mmux: RN + LZ + LR

O bloco rotulado lgica de microssequenciamento faz a escolha da prxima microinstruo a ser executada durante o subciclo 4, quando os sinais N e Z so vlidos. A sada deste bloco controla o multiplexador M (Mmux), que roteia MPC+1 ou ADDR para MPC, de onde ser buscada a prxima microinstruo. esta escolha indicada fazendo o campo COND igual aos valores supracitados. ALU: controla a funo da ALU. 00=A+B 01=AandB 10=A 11=notA SH: funo do deslocador. 00=no desloca; 01=desloca para a direira; 10=desloca para a esquerda MBR: carrega MBR a partir do deslocador: 0 =no carrega; 1=carrega MBR MAR: carrega MAR a partir do latch B: 0 =no carrega; 1=carrega MAR RD: requisita leitura de memria. 0=no h; 1= carrega MBR a partir da memria. WR: requisita escrita na memria: 0=no h; 1= escreve o contedo de MBR na memria. ENC (enable C): controla o armazenamento na memria de rascunho: 0=no h; 1=armazena C: seleciona registrador para armazenamento se ENC=1: 0=PC; 1=AC B: seleciona fonte do barramento B: 0=PC; 1=AC A: seleciona fonte do barramento A: 0=PC; 1=AC ADDR: o endereo da sucessora potencial da microinstruo corrente. CARACTERSTICA DA MICROPROGRAMAO HORIZONTAL:

Exemplo de prova Q1) Defina os processos de compilao e de interpretao.

Q2) Caracterize o nvel de micro-programao na mquina multi-nveis e explique a interao deste nvel com o nvel de lgica digital e o de convencional de mquina.

Q3) Represente em ponto flutuante o nmero -4,6329 utilizando 16 bits. O expoente deve ser representado em excesso de 16 e a representao deve ser normalizada. Avalie a perda de preciso.

Q4) Efetue a operao 14-31 em complemento de um e complemento de dois.

Q5) Explique porque so necessrios 4 sub-ciclos para execuo de uma micro-instruo na arquitetura estudada.

Q6) Explique o papel do bit ENC numa micro-instruo.

Q7) Qual o papel do componente LuS (o "u" era para ser micro, Bruna) na arquitetura estudada. D o circuito deste componente sabendo que: COND = 0 desvie sempre; COND = 1 no desvie; COND = 2 desvie se N; COND = 3 desvie se Z.

EXERCCIO:
o o o o

Divide o valor de AC por 2 e coloca o resultado em AC Soma 1 a AC Se o resultado ficar igual a zero entao escreve SP em M[0] caso contrrio escreve SP em M[1] Retorna posio 0 do microcdigo

35: ac := rshift (ac) 36: ac := ac + 1; if z goto 38 37: mar := 1; mbr := sp; wr; goto 39 38: mar := 0; mbr := sp; wr 39: wr; goto 0
PARTE 2 MICROPROGRAMAO MICROPROGRAMA HORIZONTAL: Para a elaborao do microprograma, define-se que: 1) PC, AC E SP so os registradores usados para armazenamento; 2) IR o registrador de instruo e contm a macroinstruo que est sendo corretamente executada 3) TIR uma cpia temporria de IR, usada para decodificar o opcode; 4) AMASK contm a mscara de endereos e usado para separar opcode de bits de endereo; 5) SMASK a mscara de pilha, e usado nas instrues INSP e DESP, para isolar a distncia de 8 bits; 6) Os seis registradores restantes no tm funo especfica, podendo ser utilizados da maneira que o microprogramador quiser. Como todo interpretador, o microprograma tem um loop principal que busca, decodifica e executa instrues do programa que est sendo interpretado. O loop principal comea na linha 0, onde ele inicia buscando a macroinstruo em PC. Enquanto espera que a microinstruo chegue, o microprograma incrementa PC e continua a ativar o sinal de barramento RD. Quando ela chega, na linha 2, ela armazenada em IR e, simultaneamente, o bit de alta ordem (bit 15) testado. Se este bit for igual a 1, a decodificao continua na linha 28; caso contrrio, ela continua na linha 3. Assumindo que a instruo um LODD, o bit 14 testado na linha 3 e TIR carregado com a instruo original deslocada de 2 bits para a esquerda, uma vez usando o somador e outra usando o deslocador. Note que o bit N de status da ALU determinado pela sada da ALU, na qual o bit 14 o de mais alta ordem, pois IR+IR desloca IR 1 bit para a esquerda. A sada do deslocador no afeta os bits de status da ALU. Todas as instrues que tm 00 em seus dois bits de alta ordem, eventualmente chegam linha 4 para ter o bit 13 testado. As instrues que comeam com 000 vo para a linha 5, e aquelas que comeam com 001 vo para a linha 11. A linha 5 um exemplo de uma microinstruo com ENC=0; ela apenas testa TIR, mas no o altera. Dependendo do resultado deste teste, o cdigo para LODD ou STOD selecionado. Para LODD, o microcdigo deve primeiro buscar a palavra endereada diretamente carregando os 12 bits de baixa ordem de IR em MAR. Neste caso, os 4 bits de alta ordem so todos zero, mas para STOD e outras instrues, no. Entretanto, como MAR s tem 12 bits de largura, os bits de opcode no afetam a escolha da palavra lida. Na linha 7, o microprograma no tem nada a fazer, apenas espera. Quando a palavra chega, ela copiada para AC e o microprograma desvia para o incio do loop. STOD, ADDD e SUBD so similares. O nico ponto notvel relativo a elas como a subtrao feita (complemento de dois). O microcdigo para JPOS comea na linha 21. Se AC<0, a condio de desvio falha e JPOS terminado imediatamente atravs da volta ao loop principal. Se, entretanto AC0, os 12 bits de baixa ordem so extrados, fazendo um AND deles com a mscara 007777 e armazenando o resultado em PC. JZER funciona de maneira oposta a JPOS. Com JPOS, se a condio for verificada, o desvio falha e o controle retorna ao loop principal. Com JZER, se a condio for verificada, o desvio realizado. Como o cdigo para realizar o desvio o mesmo para todas as instrues de desvio, podemos economizar microcdigo simplesmente indo para a linha 22 sempre que possvel. JUMP e LOCO so imediatas, de modo que a prxima rotina interessante a ser analisada a para LODL. Primeiro, o endereo de memria absoluto a ser referenciado calculado somando o deslocamento contido na

instruo a SP. Ento, a leitura de memria iniciada. Como o resto do cdigo o mesmo para LODL E LODD, vamos apenas usar as linhas 7 e 8 para ambos. Isto no apenas economiza memria de controle sem perda na velocidade de execuo, mas tambm significa menos rotina para depurar. Cdigo anlogo usado para STOL, ADDL e SUBL. O cdigo para JNEG e JNZE similar a JZER e JPOS, respectivamente. CALL primeiro decrementa SP, ento empilha o endereo de retorno, e finalmente desvia para o procedimento. A linha 49 quase idntica a linha 22. OPCODES Microprogramao Vertical - Trs diferenas principais entre a arquitetura horizontal e a vertical so os blocos rotulados como AND, NZ e decodificador OP. O AND necessrio porque o campo R1 agora alimenta tanto o barramento A quanto o C. Um problema surge porque o barramento A carregado durante o subciclo 2, mas o barramento C no pode ser carregado na rea de rascunho at que os latches A e B estejam estveis, no subciclo 3. O bloco AND faz um AND dos 16 sinais decodificados coma linha do subciclo 4 proveniente do relgio e com um sinal proveniente do decodificador OP, que equivalente ao antigo sinal ENC. O resultado que os 16 sinais que carregam dados na rea de rascunho so ativados nas mesmas condies anteriores. - Bloco NZ: um registrador de 2 bits que pode ser comandado para armazenar os sinais N e Z da ALU. Precisamos detsa facilidade porque, no novo projeto, a ALU realizar o trabalho em uma microinstruo, mas os bits de status so sero testados a partir da microinstrua seguinte. Como a ALu no tem armazenamento interno, e N eZ so derivados da sada corrente (com N sendo o bit de alta ordem e Z o NOR de todos os bits de sada), ambos os sinais de status seriam perdidos depois de uma microinstruo se no fossem guradados em algum lugar. - Decodificador OP: Este bloco produz, a partir do campo OPCODE de 4 bits, sianis que alimentam o bloco AND,a lgica de microssequenciamento, NZ, Anux, a ALU, o deslocador, MBR, MAR, RD e WR. A logica de microssequenciamento, a ALU e o deslocador requerem, cada um, dois sinais identicos aos do projeto anterior. Ao todo o decodificador OP gera 13 sinais distintos, baseados nos 4 bits de alta ordem da microinstruo corrente. BINRIO 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 MNEMNICO ADD AND MOVE COMPL LSHIFT RSHIFT GETMBR TEST BEGRD BEGWR CONRD CONWR NJUMP ZJUMP UJUMP INSTRUO Adio AND booleano Move registrador Complemento Deslocamento esquerda Deslocamento direita Armazena MBR em registrador Testa registrador Incio de leitura Incio de escrita Continua leitura Continua escrita (no utilizado) If n then goto r If z then goto r goto r SIGNIFICADO r1:=r1+r2 r1:=r1 AND r2 r1:=r2 r1:= inv(r2) r1:=lshift(r2) r1:=rshift(r2) r1:=mbr If r2<0 then n:=true; if r2=0 then z:=true mar:=r1; rd mar:=r1; mbr:=r2; wr rd wr If n then goto r If z then goto r goto r

Sinais de Controle do OpCode ALUH ALUL SHH SHL NZ AMUX AND MAR MBR RD WR MSLH MSLL + + + + + + + + + + + +

0 1 2 3

ADD AND MOVE COMPL

4 LSHIFT 5 RSHIFT 6 GETMBR 7 TEST 8 BEGRD 9 BEGWR 10 CONRD 11 CONWR 12 13 NJUMP 14 ZJUMP 15 UJUMP

+ + + + + + + + + + +

+ +

+ + + +

+ + + + + + + + + + + + + +

MICROPROGRAMA: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 99: 17: 18: 19: 20: 21: 22: mar:=pc; rd; rd; pc:=pc+1; ir:=mbr; tir:=lshift(ir); if n then goto 28; tir:=lshift(tir); if n then goto 19; tir:=lshift(tir); if n then goto 11; alu:=tir; if n then goto 9; mar:=ir; rd; rd; Ac:=mbr; Goto 0; Mar:=ir; mbr:=ac; wr; Wr; Goto 0; Alu:=tir; If n then goto 15; Mar:=ir; rd; Rd; A:=mbr; Ac:=ac+a; Goto 0; Mar:=ir;rd; Rd; Ac:=ac+1; A:=mbr; A:=inv(a); Ac:=ac+a; Goto 0; Tir:=lshift(tir); If n then goto 25; Alu:=tir; If n then goto 23; Alu:=ac; If n then goto 0; Pc:=ir; Pc:=band(pc, amask);

23: 24: 25: 26: 27: 28: 29: 30: 31: 32:

33: 34: 35: 36: 37:

38: 39: 40: 41: 42: 43: 44: 45: 46:

Goto 0; Alu:=ac; If z then goto 22; Goto 0; Alu:=tir; If n then goto 27; Pc:=ir; Pc:=band(pc, amask); Goto 0; ac:=ir; ac:=band(ac, amask); Goto 0; Tir:=lshift(tir); If n then goto 40; Tir:=lshift(tir); If n then goto 35; Alu:=tir; If n then goto 33; A:=ir; A:=sp; Mar:=a; rd; Rd; Ac:=mbr; Goto 0; A:=ir; A:=a+sp; Mar:=a; mbr:=ac; wr; Wr; Goto 0; Alu:=tir; If n then goto 38; A:=ir; A:=a+sp; Mar:=a; rd; Rd; A:=mbr; Ac:=ac+a; Goto 0; A:=ir; A:=a+sp; Mar:=a; rd; Rd; Goto 99; Tir:=lshift(tir); If n then goto 46; Alu:=tir; If n then goto 44; Alu:=ac; If n then goto 22; Goto 0; Alu:=ac; If z then goto 0; Pc:=ir; Pc:=band(pc, amask); Goto 0; Tir:=lshift(tir); If n then goto 50;

47: 48: 49: 50: 51: 52: 53: 54: 55:

56: 57: 58:

59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76:

Sp:=sp+(-1); Mar:=sp; mbr:=pc; wr; Wr; Pc:=ir; Pc:=band(pc, amask); Goto 0; Tir:=lshift(tir); If n then goto 65; Tir:=lshift(tir); If n then goto 59; Alu:=tir; If n then goto 56; Mar:=ac; rd; Rd; Sp:=sp+(-1); A:=mbr; Mar:=sp; mbr:=a; wr; Wr; Goto 0; Mar:=sp; rd; Rd; Sp:=sp+1; A:=mbr; Mar:=ac; mbr:=a; wr; Wr; Goto 0; Alu:=tir; If n then goto 62; Sp:=sp+(-1); Mar:=sp; mbr:=ac; wr; Wr; Goto 0; Mar:=sp; rd; Rd; Sp:=sp+1; Ac:=mbr; Goto 0; Tir:=lshift(tir); If n then goto 73; Alu:=tir; If n then goto 70; Mar:=sp; rd; Rd; Sp:=sp+1; Pc:=mbr; Goto 0; A:=ac; Ac:=sp; Sp:=a; Goto 0; Alu:=tir; If n then goto 76; A:=ir; A:=band(a,smask); Sp:=sp+a; Goto 0; A:=ir;

77: 78:

A:=band(a,smask); A:inv(a); A:=a+1; Sp:=sp+a; Goto 0;

Operaes OR e XOR: AC=AC+M[x] 20: mar:=ir; rd 21: rd; ac:=inv(ac) 22: a:=inv(mbr); 23: ac:=band(ac, mbr); 24: ac:= inv(ac); goto 0 OR A0: BEGRD A1: CONRD A2: GETMBR A3: COMPL A4: COMPL A5: AND A6: COMPL A7: BEGWR A8: CONWR A9: UJUMP XOR B0: BEGRD B1: CONRD B2: GETMBR B3: COMPL B4: COMPL B5: AND B6: COMPL B7: BEGWR B8: CONWR B9: UJUMP BA: COMPL BB: MOVE BC: ADD BD: ADD BE: ADD BF: BEGWR C0: CONWR C1: UJUMP SP X X X A X A A B AC A B A A IR A X X 0 0 A A B IR B AMASK A -1 B -1 B A X X 0 0 IR X X X A X A A B AC A B A A IR A X X 0 0

AC=AC xor M[x] 20: mar:=ir; rd 21: rd; a:=inv(ac) 22: b:=inv(mbr); 23: ac:=band(ac, b); 24: a:= band (mbr, a)

25: ac:=inv(ac); 26: a:= inv(a); 27: ac:= band(ac, a); 28: ac:=inv(ac); goto 0

Se mudamos para: M[x]=AC xorM[x] 28: ac:=inv(ac); 29: mar:= ir; mbr:=ac;wr 30: wr; goto 0; 1. m [0202]=m [0200] mod m [0201] 20: lodd 200 21: subd 201 22: jneg 21 ; coloca no registrador ac o contedo do endereo 0200; ; subtrai o contedo de ac do contedo do endereo 201; o resultado vai para ac. ; se o valor no for negativo, retorna para 21; se for negativo, vai para instruo seguinte

22: addd 201 24: stod 202

; soma com o contedo de 201; o resultado vai para ac. ; armazena o contedo de ac na posio de endereo 0202

Microprograma da Experincia 3: Tomando por base a arquitetura de Tanenbaum, desenvolva os programas na linguagem de montagem que implementam as seguintes operaes: 1. Multiplicao [T * T]; 2. Mdulo [T mod M]; 3. Exponenciao modular [TN mod M = ((((T * T) mod M) * T) mod M) * ... * T) mod M) N vezes]; 0 1 2 3 4 5 6 7 8 9 00 A 00 B 00 C 00 D 00E 00F 10 11 12 13 14 15 16 17 18 19 01 LOCO 001 STOD FFE STOD AA3 LOCO STOD AA0 JZER 01D LOCO STOD AA1 JZER 01D LOCO STOD AA2 LODD A9F ADDD AA0 STOD A9F LODD AA3 SUBD FFE STOD AA3 JNZE 00B LODD A9F SUBD AA2 JPOS 013 ADDD AA2 STOD AA3 LOCO 000 STOD A9F LODD AA1 SUBD FFE 2 1

A 01 B 01 C 01 D 01E 01F 00: 01: 02: 03: 04: 05: 06: 07: 08: 09: 0a: 0b: 0c: 0d: 0e: 0f: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 1a: 1b: 1c: 1d: 1e: 1f: 20: 21: 22: 22: 24: 25:

STOD AA1 JNZE 00B LODD AA3 STOD AA4 JUMP 01D loco N stod 100 loco T stod 101 loco M stod 102 loco 1 stod 103 lodd 101 stod 104 lodd 100 subd 103 stod 100 jzer 11 call 12 call 20 jump 0a jump 11 loco 0 stod 105 lodd 101 stod 106 jzer 1d lodd 105 addd 104 stod 105 lodd 106 subd 103 jump 15 lodd 105 stod 104 retn lodd 104 subd 102 jpos 21 addd 102 stod 104 retn FIM

;resultado na posio 104 ;ler N ;desvia para o fim ;multiplica ;mod

;inicio da sub-rotina de multiplicao ;stod z ;lodd [T] ;cria a variavel T-1 ;vai para o fim-mult ;carrega z ;soma c ;grava em z ;decremento do (T-1) ;carrega o resultado no c ;fim da multiplicacao ;inicio do mod ;subtrai M ;carrega em c

MEMRIA CACHE:

Apesar da evoluo tecnolgica, as CPUs continuam mais rpidas que a memria. O problema no tecnolgico, mas econmico. PEQUENA QUANTIDADE DE MEMRIA RPIDA <-> GRANDE QUANTIDADE DE MEMRIA LENTA A memria pequena e rpida chamada de memria cache e est sob o controle do microprograma. Se uma dada referncia memria para o endereo A, possvel que a prxima referncia memria seja nas vizinhanas de A. O princpio da localidade consiste em que referncias memria, feitas em qualquer intervalo curto de tempo, tendem a usar apenas uma frao da memria total. Considerando: k=no de vezes que uma palavra referenciada c=tempo de acesso ao cache m=tempo de acesso a memria principal h=taxa de acerto (hit ratio) 1-h=taxa de falha (miss ratio) Tem-se que: h=(k-1)/k e tempo mdio de acesso=c+(1-h)m A memria de 2n bits dividida em blocos consecutivos de b bytes, totalizando (2n)/b blocos. Cada bloco tem um endereo, que um mltiplo de b, e o tamanho do bloco , normalmente, uma potncia de 2. O cache associativo apresenta um nmero de posies (slots ou linhas), cada uma contendo um bloco e seu nmero de bloco, junto com um bit dizendo se aquela posio est em uso ou no. A ordem das entradas aleatria. Se o cache estiver cheio, uma entrada antiga ter de ser descartada para deixar lugar para uma nova. Quando aparece um endereo de memria, o microprograma deve calcular o nmero do bloco e, ento, procurar aquele nmero no cache. Para evitar a pesquisa linear, o cache associativo tem um hardware especial que pode comparar simultaneamente todas as posies com o nmero do bloco dado, ao invs de um lop do microprograma. Este hardware torna o cache associativo caro. No cache com mapeamento direto, cada bloco colocado numa posio, cujo nmero pode corresponder, por exemplo, ao resto da diviso do nmero do bloco pelo nmero de posies. Um problema com o cache com mapeamento direto identificar a palavra que est ocupando uma dada posio. A soluo est em criar um campo tag no slot, que guarda a parte do endereo que no participa do endereamento que no participa do endereamento da posio. Ex: seja a palavra no endereo 8192: tag 12 bits 10 bits Endereo da palavra Posio 00 2

Os dois bits significativos so 0, pois os blocos so inteiros e mltiplos do tamanho do bloco (4 bytes). O fato de que os blocos mltiplos mapeiam na mesma posio podem degradar o desempenho do cache se muitas palavras que estiverem sendo usadas mapeiem na mesma posio. No cache associativo por conjunto, utiliza-se um cache de mapeamento direto com mltiplas entradas por posio.

Tanto o cache associativo quanto o de mapeamento direto so casos especiais do cache associativo por conjunto. O cache de mapeamento direto mais simples, mais barato e tem tempo de acesso mais rpido. O cache associativo tem uma taxa de acerto maior para qualquer dado nmero de posies, pois a probabilidade de conflito mnima. Uma vantagem de se utilizar um tamanho de bloco com mais de uma palavra que existe menos overhead na busca de um bloco de oito palavras do que na busca de oito blocos de uma palavra. Uma desvantagem que nem todas as palavras podem ser necessrias, de modo que algumas das buscas podem ser desperdiadas. Uma tcnica para manipular escritas denominada write through, quando uma palavra escrita de volta na memria imediatamente aps ter sido escrita no cache (consistncia de dados). Outra tcnica denominada copy back, em que a memria s atualizada quando a entrada expurgada do cache para permitir que outra entrada tome conta da posio (consistncia de dados). A tcnica write through causa mais trfego de barramento. A tcnica de copy back pode gerar inconsistncia se a CPU efetuar uma transferncia entre memria e disco, enquanto a memria no tiver sido atualizada. Se a razo de leituras para escritas for muito alta, pode ser mais simples usar write through. Se houver muitas escritas, pode ser melhor usar copy back e fazer co que o microprograma expurgue todo o cache antes de uma operao de entrada/sada.