Prévia do material em texto
Arquitetura de Computadores II Exercícios de Revisão – Prova 1 Questão Faça o desenho representativo e a respectiva tabela verdade de cada uma das portas lógicas elementares Nand, Not, And, Or e Xor. (ver anotações feitas no quadro – módulo 1) Questão Qual o resultado de 1 AND (0 OR (NOT (1)))? 0 Questão Existem algumas leis que podem ser utilizadas para fazer manipulações em álgebra booleana. Alguns exemplos dessas leis são a lei da comutação, a lei associativa, a lei distributiva, a lei de DeMorgan, entre outras. Assinale V ou F nas alternativas a seguir: ( V ) (X AND Y) = (Y AND X) ( V ) (X AND (Y AND Z)) = ((X AND Y) AND Z) ( V ) (X AND (Y OR Z)) = (X AND Y) OR (X AND Z) ( V ) NOT (X AND Y) = NOT(X) OR NOT(Y) Questão Simplifique a expressão: NOT (NOT(X) AND NOT(X OR Y)) X OR Y Questão Assinale V ou F ( V ) Qualquer função booleana pode ser representada utilizando uma expressão que contém apenas as operações AND, OR ou NOT ( V ) Qualquer função booleana pode ser representada utilizando uma expressão que contém apenas as operações AND e NOT ( V ) Qualquer função booleana pode ser representada utilizando uma expressão que contém apenas operações NAND ( F ) No circuito combinacional a seguir, a ordem da implementação dos bits de entrada altera o resultado na saída Questão Sobre a linguagem HDL (Hardware Description Language – Linguagem de Descrição de Hardware), assinale V ou F ( V ) HDL é uma linguagem funcional ou declarativa, não há execução acontecendo, é uma linguagem estática ( V ) Podemos escrever as expressões HDL na ordem que quisermos ( V ) O aspecto procedural (executável) não faz parte do código HDL Questão Sobre barramentos, assinale V ou F ( V ) É possível manipular múltiplos bits de uma só vez utilizando barramentos ( V ) É possível manipular bits individuais em um barramento ( V ) É possível manipular apenas parte dos bits de um barramento ( V ) É possível manipular todos os bits de um barramento de uma só vez Questão Considere que um barramento de 16 bits contém os bits mostrados a seguir, indique qual é o bit mais significativo (MSB – Most significative bit) e qual é o bit menos significativo (LSB – least significative bit). bit mais significativo 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 bit menos significativo Questão Como é possível implementar uma operação Xor do primeiro bit e do último bit de um barramento chamado info[16]? Enunciado corrigido Xor (a=info[0] , b=info[15], out=out) Questão Um multiplexador 2-way nos permite selecionar uma de duas entradas e a replicar na saída. Faça o desenho representativo do Multiplexador 2-way e sua respectiva tabela verdade. Questão O demultiplexador distribui o único sinal de entrada em uma das possibilidades de destino. Faça o desenho representativo do Demultiplexador com 2 saídas e sua respectiva tabela verdade. Questão Considere o circuito combinacional a seguir. Complete o código HDL de acordo com o diagrama e indique qual porta lógica está sendo implementada: Questão Converta os números decimais para números binários a. 35 100011 b. 85 1010101 c. 23 10111 Questão Converta os números binários para números decimais a. 1111101 125 b. 11111111 255 c. 1010111 87 d. 10000000 128 Questão Ache a representação em complemento de dois dos seguintes números a. 1111 1111 0000 0001 b. 1011 0000 0101 0000 c. 1000 0000 1000 0000 d. 0000 0000 0000 0000 Questão Faça a adição dos números binários a seguir. Indique se há ou não há overflow. 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 ______________ Overflow 1 0 1 1 1 0 0 0 1 Questão Faça a subtração dos seguintes números utilizando o complemento de dois a. 11110011 – 11000011 Complemento de dois de 11000011 é 00111101 Basta somar: 11110011 + 00111101 = 1 00110000, descarta o carry e o resultado é + 00110000 b. 10001101 – 11111000 Complemento de dois de 11111000 é 00001000 Basta somar: 10001101 + 00001000 = 10010101 e a soma não produz carry, então, o complemento de dois de 10010101 = - 01101011 Questão Considere que desejamos representar números em complemento de dois e que o registrador que iremos usar tem apenas 4 bits de largura para representar cada número. a. Quantos números são possíveis de serem representados com apenas 4 bits? 16 b. Qual o intervalo de números positivos representados? 0 ... 7 0 .. () c. Qual o intervalo de números negativos representados? -1 ... -8 -1 .. () Questão Indique se a afirmativa é V ou F ( V ) A ULA calcula uma determinada função em dois valores de n bits fornecidos e gera um valor de n bits. ( V ) A função a ser calculada pela ULA é determinada pela combinação dos bits de controle. Questão Considere a ULA representada a seguir: Considere a tabela de funcionamento da ULA: Considere que desejamos calcular x – y. a. Qual deve ser a configuração dos bits de controle (zx, nx, zy, ny, f, no)? 0 1 0 0 1 1 b. Mostre, passo a passo, como o cálculo é realizado na ULA, para os números x e y a seguir. Questão ( V ) Na lógica sequencial, a saída atual depende de entradas anteriores e, eventualmente, das entradas atuais. ( V ) Um oscilador é usado para gerar um trem de pulsos e sua saída é conectada em todos os chips sequenciais de um computador. ( V ) Um registrador é projetado para armazenar algum valor. Questão Considere o registrador de 1 bit representado a seguir. Desenhe qual será a saída out em cada um dos tempos discretos de 1 a 8. Questão O que é um Flip Flop D (DFF - Data Flip Flop ou latch)? É uma porta sequencial elementar que propaga na saída a entrada do tempo anterior. Questão Quais são as diferenças entre o DFF e o Registrador de 1 bit (Bit)? (Marque todos que se apliquem) ( F ) DFF é combinacional, Bit é sequencial ( V ) DFF sempre armazena o bit de entrada, enquanto o Bit apenas armazena se o “load” for 1 ( V ) DFF pode armazenar informação por uma unidade de tempo discreto, apenas, enquanto Bit pode armazenar por muitos ciclos de tempo discreto ( F ) DFF pode armazenar múltiplos bits de entrada, enquanto Bit apenas recebe um único valor Questão Considere um Flip Flop D. Desenhe qual será a saída out em cada um dos tempos discretos de 1 a 8. Questão Para que serve o PC (Program Counter – Contador de Programa)? Indica a próxima instrução a ser executada pela CPU. Questão Qual das operação a seguir não é implementada pelo contador de programa? ( ) Setar o seu valor para 0 ( ) Incrementar o seu valor em 1 ( X ) Decrementar o seu valor em 1 ( ) Setar o seu valor para um dado valor de entrada Questão Qual a diferença entre a largura de um registrador e o endereço de um registrador? ( ) São iguais ( ) Endereço é o mesmo para todos os registradores, largura é única para cada registrador ( X ) Largura é a quantidade de dados/bits um único registrador armazena, endereço é a localização do registrador dentro de um chip maior ( ) O endereço de um registrador é o logaritmo de sua largura Questão Assinale V ou F ( V ) Memória RAM (Random Access Memory) é uma sequência de registradores endereçáveis ( V ) Independentemente do tamanho da memória da RAM, qualquer registrador pode ser acessado “instantaneamente”, a uma mesma velocidade (aproximadamente) ( V ) Apenas uma posição (um registrador) da memória RAM pode acessado de cada vez ( V ) O endereçamento da memória RAM é feita por meio de uma lógica combinacional ( V ) A escrita e leitura da memória RAM é feita por meio de uma lógica sequencial (clock-based) Questão Considere a memória RAM a seguir. Suponha que o tamanho da RAM seja de 512 registradores. Qual deve ser a largura do barramento de endereços k? 9 Questão Assinale a opção verdadeira em relação à hierarquia de memória ( F ) Quanto mais perto da CPU maior o tamanho da memória ( F ) Endereços de memória longos significam acesso mais rápido ( F ) Endereços de memória longos significam acesso mais devagar ( V ) Acesso rápido está associado com memórias de tamanhos menores Questão Assinale V ou F ( V ) A sintaxe de uma linguagem de máquina varia de acordo com a arquitetura do computador( V ) As linguagens de máquina são projetadas com o objetivo de manipular registradores ( V ) Por padrão, o PC (Program Counter) é incrementado e a CPU executa a próxima instrução ( V ) Para manipular um registrador da memória, precisamos de um par de instruções: uma instrução para selecionar/endereçar o registrador de memória e outra instrução para manipular o registrador selecionado. Questão Qual das opções são verdadeiras após o programa a seguir ser executado? ENUNCIADO CORRIGIDO Instrução 0: @1 // A = 1 Instrução 1: M=A-1; JEQ // RAM[1]=0 // M = 0 então vai fazer o jump e vai executar instrução endereçada por A ( ) Registrador A contém o valor 0 ( X ) Registrador A contém o valor 1 ( ) Registrador RAM[0] contém o valor 0 ( ) Registrador RAM[0] contém o valor 1 ( X ) Registrador RAM[1] contém o valor 0 ( ) A próxima instrução a ser executada é a instrução 0 ( X ) A próxima instrução a ser executada é a instrução 1 ( ) Não há informação suficiente para determinar a próxima instrução a ser executada Questão Utilize a arquitetura do computador visto em sala de aula e sua respectiva linguagem Assembly: Arquitetura: Instruções: Resolva o problema a seguir: RAM[2] RAM[0] + RAM[1] - 5 // implementar a soma // RAM[2] = RAM[0] + RAM[1] - 5 // D = R0 @R0 D=M // D = D + R1 @R1 D = D + M // D = D - 5 @5 D = D - A // R2 = D @R2 M = D (FIM) @FIM 0; JMP Questão Em linguagem de máquina, podemos implementar desvios incondicionais e desvios condicionais e é comum chamarmos um desvio de jump (salto). Na linguagem Assembly vista em sala de aula, existem 7 desvios possíveis. Liste e explique esses 7 desvios/jumps. JMP – jump incondicional JEQ – jump se igual a zero JNE – jump se diferente de zero JGT – jump se maior que zero JGE – jump se maior ou igual a zero JLT – jump se menor que zero JLE – jump se menor ou igual a zero Questão O mecanismo de controle de uma CPU adota, por padrão, a execução sequencial de instruções. Eventualmente pode acontecer de a CPU continuar executando instruções que não pertencem ao programa que está sendo executado no momento caso o código não termine de forma adequada. Qual a estratégia pode ser utilizada para contornar essa limitação? Criar um loop infinito ao término do programa assembly: ... instruções do programa atual ... (final) @final 0; JMP .. instruções do programa antigo carregado na memória ... Unidade Lógica e Aritmética Nand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 52 zx nx zy ny f no out 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 -1 0 0 1 1 0 0 x 1 1 0 0 0 0 y 0 0 1 1 0 1 !x 1 1 0 0 0 1 !y 0 0 1 1 1 1 -x 1 1 0 0 1 1 -y 0 1 1 1 1 1 x+1 1 1 0 1 1 1 y+1 0 0 1 1 1 0 x-1 1 1 0 0 1 0 y-1 0 0 0 0 1 0 x+y 0 1 0 0 1 1 x-y 0 0 0 1 1 1 y-x 0 0 0 0 0 0 x&y 0 1 0 1 0 1 x|y The Hack ALU in action: Compute y-x To cause the ALU to compute a function: Set the control bits to one of the binary combinations listed in the table. zx no zr nx zy ny f ALU ng 16 bits 16 bits x y 16 bits out control bits Nand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 56 The Hack ALU operation pre-setting the x input pre-setting the y input selecting between computing + or & post-setting the output Resulting ALU output zx nx zy ny f no out if zx then x=0 if nx then x=!x if zy then y=0 if ny then y=!y if f then out=x+y else out=x&y if no then out=!out out(x,y)= zx no zr nx zy ny f ALU ng 16 bits 16 bits x y 16 bits out Unidade Lógica e AritméticaNand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 52 zxnxzynyfnoout 1010100 1111111 111010-1 001100x 110000y 001101!x 110001!y 001111-x 110011-y 011111x+1 110111y+1 001110x-1 110010y-1 000010x+y 010011x-y 000111y-x 000000x&y 010101x|y The Hack ALU in action: Compute y-xTo cause the ALU to compute a function: Set the control bits to one of the binary combinations listed in the table. zx no zr nxzynyf ALU ng 16 bits 16 bits x y 16 bits out control bits Nand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 56 The Hack ALU operationpre-settingthe xinputpre-settingthe yinputselecting between computing +or &post-setting the outputResultingALU outputzxnxzynyf noout if zx then x=0 if nx then x=!x if zy then y=0 if ny then y=!y iff then out=x+y else out=x&y if no then out=!outout(x,y)= zx no zr nxzynyf ALU ng 16 bits 16 bits x y 16 bits out Resulting ALU output post-setting the output selecting between computing + or & pre-setting the y input pre-setting the x input outnofnyzynxzx out(x,y)= if no then out=!out if f then out=x+y else out=x&y if ny then y=!y if zy then y=0 if nx then x=!x if zx then x=0 0010101 1111111 -1010111 x001100 y000011 !x101100 !y100011 -x111100 -y110011 x+1111110 y+1111011 x-1011100 y-1010011 x+y010000 x-y110010 y-x111000 x&y000000 x|y101010 Resulting ALU output post-setting the output selecting between computing +or & pre-setting the yinput pre-setting the xinput outnofnyzynxzx out(x,y)= if no then out=!out iff then out=x+y else out=x&y if ny then y=!y if zy then y=0 if nx then x=!x if zx then x=0 0010101 1111111 -1010111 x001100 y000011 !x101100 !y100011 -x111100 -y110011 x+1111110 y+1111011 x-1011100 y-1010011 x+y010000 x-y110010 y-x111000 x&y000000 x|y101010 Example: compute x-y x: 0 0 1 1 (3) y: 0 1 1 1 (7) Following pre-setting: x: 1 1 0 0 y: 0 1 1 1 Computation and post-setting: x+y: 0 0 1 1 !(x+y): 1 1 0 0 (-4) Example:compute x-y x: 0 0 1 1 (3) y: 0 1 1 1 (7) Following pre-setting: x: 1100 y: 0111 Computation and post-setting: x+y: 0011 !(x+y): 110 0 (-4) Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 27 1-Bit Register out: in: load: 0 1 0 1 1 0 time: 1 2 3 4 5 6 7 8 “storing” “storing”“loading” “loading”Resulting behavior: outin load Bit if load(t–1) then out(t) = in(t–1) else out(t) = out(t–1) examples of arbitrary input values Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 27 1-Bit Registerout: in: load: 0 1 0 1 1 0 time: 1 23 45 67 8 “storing” “storing” “loading” “loading” Resulting behavior: out in load Bit if load(t–1)then out(t)=in(t–1) else out(t)=out(t–1) examples of arbitrary input values Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 41 DFF 1 2 3 4 5 6 7 8 0 1 1 0 time: examples of arbitrary inputs in: out: out(t) = in(t– 1)outin DFF Data Flip Flop (aka latch) The most elementary sequential gate: Outputs the input in the previous time-step Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 41 DFF 1 23 4 5 67 8 0 1 1 0 time: examples of arbitrary inputs in: out: out(t)=in(t–1) out in DFF Data Flip Flop(aka latch) The most elementary sequential gate: Outputs the input in the previous time-step RAM Questão • Suponha que o tamanho da RAM sejam 8 registradores. Qual deve ser o valor de k? Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 32 RAM Practice question: Suppose that the RAM size n = 8 registers. What should be the value of k? Answer: k = log 2n out in load w Register0 1 n-1 ... RAMn Register Register address k Abstraction: A sequence of n addressable, w-bit registers, with addresses0 to n-1 Word width: Typically 16, 32, 64 bits (Hack computer: w = 16) w RAMQuestão •Suponha que o tamanho da RAM sejam 8 registradores. Qual deve ser o valor de k? Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 32 RAM Practice question: Suppose that the RAM size n= 8 registers. What should be the value of k? Answer: k= log 2 n out in load w Register0 1 n-1 . . . RAMn Register Register address k Abstraction: A sequence ofnaddressable, w-bit registers, with addresses 0 to n-1 Word width: Typically16, 32, 64 bits (Hack computer: w= 16) w Nand to Tetris / www.nand2tetris.org / Chapter 4 / Copyright © Noam Nisan and Shimon Schocken Slide 23 Hack instructions • A instruction • C instruction Instruction set Side effects: • RAM[A] (called M) becomes selected • ROM[A] becomes selected Syntax: where const is a constant @ const Example: @ 19 Semantics: A ← 19 (Complete / formal syntax, later). Cristiano Rodrigues Nand to Tetris / www.nand2tetris.org / Chapter 4/ Copyright © Noam Nisan and Shimon Schocken Slide 23 Hack instructions •Ainstruction •Cinstruction Instruction set Side effects: •RAM[A](called M) becomes selected •ROM[A]becomes selected Syntax: whereconst is a constant @const Example: @19 Semantics: A←19 (Complete / formal syntax, later). Text Nand to Tetris / www.nand2tetris.org / Chapter 4 / Copyright © Noam Nisan and Shimon Schocken Slide 25 Hack instructions Typical instructions: @ constant (A← constant) D=1 D=A D=D+1 ... D=D+A D=M M=0 ... M=D D=D+A M=M–D ... // D ← 2 Examples: The game: We show some typical Hack instructions (top left), and practice writing code examples that use subsets of these instructions.? Cristiano Rodrigues Nand to Tetris / www.nand2tetris.org / Chapter 4/ Copyright © Noam Nisan and Shimon Schocken Slide 25 Hack instructionsTypical instructions:@constant (A←constant) D=1 D=A D=D+1 ... D=D+A D=M M=0 ... M=D D=D+A M=M–D ... // D←2 Examples: The game:We show some typical Hack instructions (top left), and practice writing code examples that use subsets of these instructions. ? Text Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 83 Multiplexor sel out 0 a 1 b abbreviated truth table a b sel out 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 if (sel == 0) out = a else out = b Implementation tip Can be implemented from the gates And, Or, Not. CHIP Mux { IN a, b, sel; OUT out; PARTS: // Put your code here: } Mux.hdl Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 83 Multiplexor selout 0a 1b abbreviated truth table abselout 0000 0100 1001 1101 0010 0111 1010 1111 if (sel==0) out=a else out=b Implementation tip Can be implemented from the gates And, Or,Not. CHIP Mux { IN a, b, sel; OUT out; PARTS: // Put your code here: } Mux.hdl Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 84 Demultiplexor in sel a b 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 if (sel == 0) {a, b} = {in, 0} else {a, b} = {0, in} • Acts like the “inverse” of a multiplexor • Channels the single input value into one of two possible destinations CHIP DMux { IN in, sel; OUT a, b; PARTS: // Put your code here: } DMux.hdl Implementation tip Similar to the Mux implementation. Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 84 Demultiplexor inselab 0000 0100 1010 1101 if (sel==0) {a, b} = {in, 0} else {a, b} = {0, in} •Acts like the “inverse” of a multiplexor •Channels the single input value into one of two possible destinations CHIP DMux { IN in, sel; OUT a, b; PARTS: // Put your code here: } DMux.hdl Implementation tip Similar tothe Muximplementation. Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 53 Interface / Implementation /** Sets out = (a And Not(b)) Or (Not(a) And b)) */ CHIP Xor { IN a, b; OUT out; PARTS: Not (in=a, out=nota); Not (in=b, out=notb); And (a=a, b=notb, out=aAndNotb); And (a=nota, b=b, out=notaAndb); Or (a=aAndNotb, b=notaAndb, out=out); } a Not Not And And Or b out nota notb aAndNotb notaAndb out b a b a in in out out out out b a gate interface gate Implement -ation A logic gate has: • One interface • Many possible implementations Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 53 Interface / Implementation/**Setsout=(aAndNot(b))Or(Not(a)Andb))*/ CHIPXor{ INa,b; OUTout; PARTS: Not(in=a,out=nota); Not(in=b,out=notb); And(a=a,b=notb,out=aAndNotb); And(a=nota,b=b,out=notaAndb); Or(a=aAndNotb,b=notaAndb,out=out); } aNotNot AndAnd OrboutnotanotbaAndNotbnotaAndboutbabaininoutout outoutbagate interface gate Implement -ation A logic gate has: •One interface •Many possible implementations