Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Exerc�cios Resolvidos/exerc1.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv 1 - A figura representa o diagrama de blocos de um processador simples, de 8 bits (PEPE-8). a) - Indique se o registrador A tem de ser (i) um latch ou (ii) sensível à borda do relógio ou (iii) se pode ser de qualquer dos tipos. Justifique. Tem de ser sensível à borda, pois uma operação através da ALU usa o registrador como operando e como destino. Se fosse um latch, quando o relógio estivesse com 1 o registrador ficaria transparente, e o resultado da ALU iria aparecer também na saída do registrador, destruindo o valor do operando original, que por sua vez iria alterar o resultado da ALU, e assim sucessivamente. b) - Explique a função de cada um dos blocos internos do processador. Bloco Para que serve PC Indica o endereço (na memória de instruções) da instrução a ser executada ROM de decodificação Gera os sinais de controle do processador a partir do código de operação da instrução NOR Indica se o valor do registrador A é zero ou não MPX_A Seleciona o valor a escrever no registrador A (resultado da ALU ou um valor que sai do multiplexador B) MPX_B Seleciona o valor que entra no multiplexador B (lado direito) e que pode ser resultado de uma leitura da memória ou uma constante que vem da instrução. Em conjunto com o multiplexador A, permite selecionar as várias hipóteses de valor a armazenar no registrador A. Registrador A Memoriza os valores produzidos pelas instruções ALU Efetua operações sobre os dados contidos no registrador A e na memória c) - Suponha que o processador vai executar a instrução descrita pela expressão A ( A + M[2AH] e que, imediatamente antes de o relógio mudar (para executar a instrução), o registrador A contém 14H e todas as células de memória foram previamente inicializadas com o valor 3CH. Anote na tabela seguinte o valor presente em cada um dos sinais do processador nesse instante. Sinal Nº bits Valores possíveis Valor do sinal Constante 8 00H a FFH 2AH nWR 1 Escrever, Ler Ler Saída da memória de dados 8 00H a FFH 3CH SEL_A 1 Esquerda, Direita Esquerda SEL_B 1 Esquerda, Direita Direita 1º operando 8 00H a FFH 14H 2º operando 8 00H a FFH 3CH SEL_ALU 2 Somar, Subtrair, AND, OR Somar Entrada do registrador A 8 00H a FFH 50H d) - Justifique o valor que indicou para este último sinal. Resulta da soma de 14H (vem do registrador A) com 3CH (vem da memória). ( 50H 4+CH=10H (0 e vai 1) 3 + 1+ transporte = 5 A ALU produz este valor, que chega ao registrador A através do multiplexador A 2 - A figura seguinte representa o diagrama de blocos básico de um processador de 16 bits de dados e de endereços, com endereçamento de byte, que se supõe ligado a uma memória RAM, onde estão armazenados tanto os dados como as instruções do seguinte programa (em que, quando há dois operandos, o primeiro serve também de resultado). Assuma que o programa está localizado a partir do endereço 0000H, e que o PC já foi previamente inicializado com esse valor. A: MOV R2, 48H B: MOV R1, [R2] C: ADD R3, R1 ; R3 <- R3 + R1 D: MOV [R2], R3 a) - Preencha a seguinte tabela (use apenas as linhas necessárias), indicando todos os acessos à memória (em leitura ou escrita) efetuados pelo processador durante a execução do programa. Use o rótulo para identificar a instrução. Endereço da memória (hexadecimal) Registrador usado para especificar o endereço Instrução em que ocorre Leitura ou escrita Motivo do acesso 0000H PC A Leitura Busca da instrução 0002H PC B Leitura Busca da instrução 0048H R2 B Leitura Leitura de dados 0004H PC C Leitura Busca da instrução 0006H PC D Leitura Busca da instrução 0048H R2 D Escrita Escrita de dados b) - Ao contrário do PEPE-8, este processador não consegue executar instruções em apenas um ciclo de relógio. Por que? Porque só tem uma interface para a memória, que tem de ser compartilhada pelos dados e pelas instruções, em função do que ele não pode estar lendo a instrução e fazer acessos em dados ao mesmo tempo. Por isso, primeiro tem de ler (buscar) a instrução para o registrador de instrução e só depois é que pode fazer o processamento restante. 3 - Considere os números (em decimal) A=+27 e B= −51. a) - Preencha a tabela seguinte com a representação em complemento de 2 dos números indicados, com 8 bits. Justifique no espaço a seguir. Número Em binário Em hexadecimal A 0001 1011 1BH B 1100 1101 CDH A+B 1110 1000 E8H A-B 0100 1110 4EH 27 = 16 + 11 = 1BH 51 = 48 + 3 = 33H -51 ( 33H = 0011 0011 ( 1100 1100 + 1 = 1100 1101 = CDH 27 + (-51) = -24 -24 ( 24 = 16 + 8 = 18H = 0001 1000 ( 1110 0111 + 1 = 1110 1000 = E8H 27 – (-51) = +78 78 = 64 + 14 = 4EH b) - Dentro da representação em complemento de 2 com 8 bits, qual o maior valor de B (da faixa de valores representáveis) para que A+B não dê estouro (overflow)? Justifique. Maior valor ( A + X = +127 X = 127 – 27 = 100 = 96 + 4 = 64H c) - Calcule o simétrico, em complemento de 2, de A+B, com 16 bits. Apresente o resultado em hexadecimal e justifique-o. Com 8 bits: A+B = E8H simétrico ( E8H = 1110 1000 ( 0001 0111 + 1 = 0001 1000 = 18H Com 16 bits ( 0018H (sendo positivo, se acrescenta zeros à esquerda) SEL_PC Memória de MPX_B constante instruções SEL_B >= 1 instruções endereço de PC SEL_ALU ESCR_A SEL_A 2º operando 1º operando resultado da operação constante nWR de dados opcode decodificação ROM de zero Memória ALU MPX_A Registrador A Unidade de Dados Unidade de Controle Processador (PEPE-8) � PAGE �1� Exerc�cios Resolvidos/exerc10.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv � Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos já na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes: B (Busca de Instrução) D (Decodificação e Busca de Operandos) E (Execução da Instrução) W (Escrita do Resultado). T0 T1 T2 T3 T4 T5 T6 T7 T8 JNZ Y B D E X: MOV R1, 12H B D OR R2, R1 B Y: ADD R1, R2 B D E W SHR R2, 2 B D E W CMP R1, R2 B D E W Suponha que o processador executa estas instruções, assumindo-se que o resultado da última operação da ALU deu 23H. Assuma ainda que as instruções de desvio só alteram o PC (em caso de desvio) no estágio E. Cada um dos tempos T0 a T8 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução. Indique que conflitos de dados são visíveis neste programa, traçando um círculo à volta do registrador que tem uma dependência (em conflito) de uma instrução anterior. NOTA – Isto tem de ser válido em qualquer caso e não apenas no caso a). Suponha que só se pode resolver os conflitos em software. Escreva uma nova versão do programa, sem conflitos (mas mantendo a funcionalidade). JNZ Y X: MOV R1, 12H NOP OR R2, R1 NOP Y: ADD R1, R2 SHR R2, 2 NOP CMP R1, R2 Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 64 palavras (blocos de 1 palavra). Indique os campos e o respectivo número de bits em que o endereço se divide, do ponto de vista da cache. Byte (par ou ímpar) 1 Índice 6 Rótulo 9 Na execução de instruções do tipo MOV R1, [R2], o núcleo do PEPE verificou que em uns casos o valor de R1 demorava 2 ns para ser obtido, noutros 10 ns, e que em média demorava 3,6 ns. Qual a taxa de sucesso (hit rate) da cache com este programa? 80 % Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com apenas 4 entradas e está inicialmente vazia, sendo realizados depois 5 acessos em leitura, na ordem com que aparecem, cujos dados ficaram nas posições da cache e com os rótulos indicados na tabela. Para cada acesso, indique o respectivo endereço na memória e se foi hit (Sim ou Não). Endereço acessado Posição da cache Hit (S ou N) Rótulo (em binário) 27H 3 N 0010 01 76H 2 N 0111 01 52H 2 N 0101 00 27H 3 S 0010 01 76H 2 N 0111 01 Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 00000H até FFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH, mas só há RAM de 00000H até 8000H. As páginas virtuais têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas e tem atualmente o conteúdo da seguinte tabela (algumas posições estão vazias, isto é, não inicializadas). Posição da TLB Bit de validade Nº página virtual (hexadecimal) Nº página física (hexadecimal) 0 1 A0E 18 1 1 3B 2B 2 0 3 1 213 0E 4 0 5 0 6 1 718 3B 7 0 Preencha a tabela seguinte para este computador. Nº bits do espaço virtual 20 Dimensão do espaço físico (em KBytes) 64 Nº páginas do espaço físico 256 Nº de páginas virtuais que podem estar carregadas simultaneamente na RAM (considerando que toda a RAM está disponível para conter páginas) 128 Nº máximo de páginas virtuais (num determinado instante) cuja tradução virtual/físico pode ser feita sem acessar a tabela de páginas 8 Considere a TLB inicialmente vazia e que o processador efetua acessos aos seguintes endereços virtuais (com os respectivos endereços físicos entre parênteses): A0E2BH (182BH); 3B18H (2B18H); 2133BH (E3BH); 7180EH (3B0EH). Após estes acessos, os bits de validade ficaram como indicados. Acabe de preencher a TLB (apenas com valores relevantes e arbitrando o que achar necessário). Exerc�cios Resolvidos/exerc11.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv � Considere o seguinte programa e a respectiva rotina X, que efetua uma operação sobre o parâmetro de entrada (R1) e dá o resultado em R3. Assuma que no início de tudo R0=12H. O que devia acontecer quando a rotina retorna a primeira vez é R0 e R1 terem os valores que tinham quando a rotina foi chamada e R3=70H, mas o programa tem erros e omissões que impedem que isso aconteça. Corrija o que achar necessário na tabela da direita, sem usar mais registradores do que os que este programa já usa. Não tem de usar as linhas todas. Indique também o endereço de cada instrução. Para cada acesso à pilha do programa corrigido, indique o endereço, o tipo (L-leitura, E-escrita) e o valor (no caso de não ter respondido à alínea anterior, use o programa original). Use apenas as linhas correspondentes a uma chamada/retorno. PLACE 0 MOV SP, 2000H chamaX: CALL X JMP chamaX X: MOV R0, 10H ADD R1, R0 MOV R3, R1 RFE Acessos à pilha Endereço Tipo Valor 1FFEH E 0006H 1FFCH E 0012H 1FFAH E 0060H 1FFAH L 0060H 1FFCH L 0012H 1FFEH L 0006H Programa corrigido Endereço Instrução PLACE 0 0000H MOV SP, 2000H 0002H MOV R1, 60H 0004H chamaX: CALL X 0006H JMP chamaX 0008H X: PUSH R0 000AH PUSH R1 000CH MOV R0, 10H 000EH ADD R1, R0 0010H MOV R3, R1 0012H POP R1 0014H POP R0 0016H RET Considere as duas rotinas de interrupção 0 e 2, e o respectivo programa principal, que faz apenas as inicializações necessárias. Complete o que achar necessário no programa principal para estas duas interrupções funcionarem corretamente. A área de dados é de 3000H a 3500H. Sabendo que a interrupção 0 é a mais prioritária, indique (por ordem de execução) quais as 6 primeiras instruções que o processador executa após os dois pinos de interrupção serem ativados simultaneamente. int0: PUSH R1 PUSH R2 EI MOV R1, cont MOV R2, [R1] ADD R2, 1 MOV [R1], R2 POP R2 POP R1 RFE int2: ADD R5, 1 RFE Programa principal PLACE 3000H tab: WORD int0 0 int2 pilha: TABLE 400H ; por ex. fim_pilha: cont: WORD 0 PLACE 0 MOV BTE, tab MOV SP, fim_pilha EI0 EI2 EI fim: JMP fim 1.ª PUSH R1 4.ª ADD R5, 1 2.ª PUSH R2 5.ª RFE 3.ª EI 6.ª MOV R1, cont Considere uma operação de transferência de dados por um controlador de DMA num computador que tem de atender uma interrupção a cada milissegundo (10-3 s) e em que cada palavra transferida demora cerca de 1 microssegundo (10-6 s) se for feita pelo controlador de DMA e 8 microssegundos se for feita em software. Ordene as seguintes tarefas temporalmente, de 1 (a primeira) a 6 (a última). Leitura de um dado 4 Interrupção 6 Concessão do bus 3 Programação do controlador 1 Escrita de um dado 5 Pedido do bus 2 Qual o número máximo (aproximadamente) de palavras que se deve transferir numa só operação de DMA neste computador? 1000 Exerc�cios Resolvidos/exerc12.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv 1) Considere o seguinte sistema de memória utilizado por um processador com bus de dados de 8 bits e bus de endereços de 16 bits. Preencha a tabela com o dispositivo e os endereços de início e de fim (em hexadecimal) em que esse dispositivo está ativo. Dispositivo Início Fim RAM 0200H 02FFH Per1 0600H 061FH ROM1 0C00H 0DFFH ROM2 0E00H 0FFFH � 2) A figura seguinte representa uma unidade de controle microprogamada simples: a) Faça a legenda da figura, colocando as respectivas letras dos vários módulos no local certo da figura (existem letras em excesso). A Unidade de Exceções B Multiplexador. Permite escolher qual a condição que influencia o próximo valor do MPC. C Somador com 1 D Multiplexador. E Micro Program Counter (MPC) F ROM de Microprograma SHAPE \* MERGEFORMAT ��� Endereço na ROM Operações LOAD_ALU_R1 LOAD_MEM_R1 LOAD_ALU_R2 LOAD_MEM_R2 LOAD_MEM_R3 LOAD_ALU_R4 LOAD_MEM_R4 OP_ALU SEL_MICRO_SALTO MICRO_SALTO 0 Inicializa R2=N e R4=0 (que vem da memória) X X 1 Se R2 = 0, desvia para o passo 7 2 7 2 Load R1 e R3 X X 3 Multiplica R1 e R3 e coloca resultado em R1 X A 4 Adiciona R1 a R4 e coloca resultado em R4 X B 5 Decrementa R2 X C 6 Se R2 diferente 0, desvia para o passo 2 3 2 7 Desvia para 7 1 7 3) Considere o seguinte circuito que implementa um filtro digital, da forma F = A*Z-n+B*Zn-1 ...H*Z-1+J*Z0 O circuito é controlado por uma unidade microprogramada. Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1). Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R2_ZERO, 3=R2_NAO_ZERO). As opções disponíveis para OP_ALU são (A=MUL_R1_R3, B=ADD_R4_R1, C=DEC_R2, etc.) � MICRO_SALTO SEL_MICRO_SALTO B C D E F S3 A9 S7 S1 Per1 ROM2 ROM1 RAM Decodi-ficador 1-8 A10 A11 CS A0-A7 CS S6 CS CS A0-A4 A0-A8 A0-A8 b) Se uma determinada RAM tiver 32 KB, quantos bits de endereço necessita: __15 bits_____ c) Se tiver uma ROM de 8 bits de dados e 21 bits de endereço, qual a sua capacidade: __2MBytes___ a) b) Sabendo que a ROM de microprograma tem 14 microinstruções, que gera 14 sinais de controle de 1 bit cada e que SEL_MICRO_SALTO tem 2 bits, qual a largura mínima de cada palavra da ROM: _20 bits_ LOAD_ALU_R1 LOAD_MEM_R1 R3 memória R2 R1 OP_ALU R4 ALU Exerc�cios Resolvidos/exerc13.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv � Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos já na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes: B (Busca de Instrução) D (Decodificação e Busca de Operandos) E (Execução da Instrução) W (Escrita do Resultado). T0 T1 T2 T3 T4 T5 T6 T7 MOV R2, 21AH B D E W MOV R1, [R2] B D E W MUL R1, R2 B D E W OR R2, R0 B D E W Suponha que o processador execute estas instruções, começando com o pipeline vazio. Cada um dos tempos T0 a T7 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução. Indique que conflitos de dados são visíveis neste programa, traçando setas entre os estágios em que os valores são produzidos e aquele em que são lidos (em conflito). Suponha que só se pode resolver os conflitos em software. Escreva uma nova versão do programa, sem conflitos (mas mantendo a funcionalidade) MOV R2, 21AH NOP MOV R1, [R2] NOP MUL R1, R2 OR R2, R0 Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 16 palavras (blocos de 1 palavra). Preencha esta tabela para esta cache. Nº bits do rótulo 11 Nº bits do índice 4 Se o tempo de acesso com sucesso (hit) for de 1 ns e com insucesso (miss) de 10 ns e a taxa de sucesso (hit rate) for de 90%, qual o tempo médio (em ns) de um acesso à memória visto pelo núcleo do PEPE? 1,9 ns Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com apenas 4 entradas e está inicialmente vazia, sendo realizados os acessos em leitura aos endereços indicados na tabela e na ordem com que aparecem. Para cada acesso, indique a posição (0 a 3) da cache que é usada, se foi hit (sim ou não) e qual o valor do rótulo com que essa posição fica após esse acesso. Endereço acessado Posição da cache Hit (S ou N) Rótulo (em binário) 71H 1 N 011100 52H 2 N 010100 71H 1 S 011100 26H 2 N 001001 52H 2 N 010100 Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 00000H até FFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH, mas só há RAM de 0000H até 4000H. As páginas físicas têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas e tem atualmente o conteúdo da seguinte tabela (algumas posições estão vazias, isto é, não inicializadas). Posição da TLB Nº página virtual (hexadecimal) Nº página física (hexadecimal) 0 - - - - - - 1 - - - - - - 2 280 3D 3 - - - - - - 4 4E7 28 5 - - - - - - 6 B34 1B 7 A08 0B Preencha a tabela seguinte para este computador e para este conteúdo da TLB. Nº bits do espaço virtual 20 Nº bits do espaço físico 16 Nº páginas virtuais 4 K Nº máximo de páginas virtuais que podem estar carregadas simultaneamente na RAM (considerando que toda a RAM está disponível para conter páginas) 40 Nº de páginas virtuais cuja tradução virtual/físico não precisa acessar a tabela de páginas 4 O processador acessou o endereço físico B34H. Qual o endereço virtual que lhe corresponde? A0834H Exerc�cios Resolvidos/exerc14.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv � Considere a seguinte figura, que representa duas portas tri-state cuja saída fica ativa quando o sinal de controle está com 1. Assinale com um X, para cada combinação dos valores de A, B, C e D, a respectiva situação da saída. Saída A B C D 0 1 Conflito Alta impedância 1 1 1 1 X 1 0 1 0 X 0 1 1 0 X 1 0 1 1 X Imagine uma RAM simples, com 2048 palavras, uma largura de 16 bits e um sinal WR (escreve) que fica ativo em 0. Indique: o nº de bits que cada sinal na RAM deve ter os respectivos valores (em hexadecimal) se quiser memorizar o valor 31DH na última posição da RAM. a capacidade da RAM em bits: 2048 x 16 Entrada Endereço WR Nº de bits 16 11 1 Valor 31DH 7FFH 0 Nesta figura (PEPE de 8 bits), cada registrador é formado por 8 flip-flops D ativos na borda de subida do relógio. A instrução OR 34H (A ( A OR 34H) está no endereço 2EH da memória de instruções e os sinais de controle que produz preparam todos os valores para serem memorizados nos registradores quando o sinal de relógio passar de 0 para 1 (o que executa a instrução OR). A instrução anterior foi LD 5AH (A ( 5AH) e a que se segue ao OR 34H é LD 31H. Preencha a tabela seguinte, com os valores (em hexadecimal) dos sinais referenciados com os números, antes e depois de o relógio mudar de 0 para 1. Coloque X se um dado valor não puder ser determinado. Relógio 1 2 3 4 5 6 7 0 7EH 5AH 34H 7EH X 34H 2EH 1 X 7EH 31H 31H X 31H 2FH Complete o programa do lado direito, preenchendo os retângulos com os valores corretos. Registrador – registrador onde a instrução dessa linha armazena o resultado Valor – valor desse registrador após a execução da instrução Instrução Registrador e valor MOV R1, 1246H R1 1246H MOV R0 2C4H R0 2C4H ADD R1, 6 R1 124CH SHR R0 3 R0 58H Considere o seguinte programa. Inicialmente, temos R0=1234H e R1=4321H. Preencha a tabela com os valores de cada registrador e flags (bits de estado – ativo = 1, inativo = 0) após a execução da instrução Instruções R0 R1 Z N CMP R0, R1 1234H 4321H 0 1 JNN fim 1234H 4321H 0 1 SWAP R0, R1 4321H 1234H 0 1 fim: JMP fim 4321H 1234H 0 1 ;CMP: Faz R0–R1 e afeta as flags (mas R0 não) ;SWAP: troca registradores, JNN: desvia se não negativo _1235312273.vsd � 1� A C Saída B D _1235210622.vsd RAM Entrada Endereço WR Saída Exerc�cios Resolvidos/exerc2.doc 1- Uma interface serial assíncrona usa caracteres de 8 bits com bit de paridade e dois stop bits. Foi transmitido um caractere tendo a linha serial de transmissão evoluído de acordo com a seguinte figura (lembre-se que se transmite primeiro o bit menos significativo): a) - Qual é, em hexadecimal, o caractere transmitido? Justifique. O caractere transmitido é o 47H. A seguir ao start bit (o primeiro LOW), a seqüência de bits é 11100010 que, tendo em conta que o bit menos significativo é transmitido em primeiro lugar, deve ser interpretada como 0100 0111b b) - Está sendo utilizada paridade par ou ímpar? Justifique. Está sendo usada paridade ímpar. O bit de paridade está em HIGH. O número total de bits de dados e do de paridade tem 5 bits em HIGH. Assim, a paridade é ímpar. c) - Supondo que se utiliza uma velocidade de transmissão de 19 200 bit/s, qual a taxa máxima de transmissão de caracteres (em caractere/s)? Cada caractere, para ser transmitido, necessita dos seus 8 bits, do start bit, do bit de paridade e de dois stop bits, num total de 12 bits. Se se consegue transmitir 19 200 bit/s, consegue-se, portanto, transmitir 19 200/12 = 1600 caractere/s. � 2- Considere um sistema com a estrutura indicada a seguir: � O processador PEPE está ligado, além da memória, a um conversor analógico-digital que monitora uma grandeza física e a uma interface de comunicação serial assíncrona (UART). O conversor está ligado à interrupção INT0 do PEPE e provoca interrupções periodicamente. O processador deve então ler o valor fornecido pelo conversor (um número de 16 bits) e armazená-lo numa tabela. A rotina de tratamento da interrupção tem um tempo de execução de 200 µs. Quando a tabela referida no parágrafo anterior atinge 50 valores, o processador envia a tabela armazenada, através da interface de comunicação serial. Esta está ligada à interrupção INT1 do processador, indicando cada interrupção, que foi enviado um byte e que o byte seguinte pode ser enviado. Entretanto continua a receber-se dados do conversor. A rotina de tratamento da interrupção tem, para cada byte, o tempo de execução de 50 µs. a) - Qual o tempo máximo de espera que a interrupção da interface de comunicação serial tem de esperar para ser atendida? Justifique. A interrupção do conversor tem mais prioridade (é a INT0 que tem mais prioridade que a INT1) que a da UART e não pode ser interrompida. A pior situação ocorre quando uma instrução do programa começa o seu ciclo e, imediatamente a seguir, surgem as duas interrupções. Terá de se esperar o fim da instrução em execução para, após isso, iniciar a rotina de atendimento referente ao conversor. Só quando essa rotina terminar é que se poderá iniciar a da UART. O tempo é, portanto, 200µs acrescido do tempo de execução da instrução que estava sendo executada. O tempo máximo de espera é, portanto, T = 200 µs + tempo de execução da instrução mais lenta do PEPE. NOTA: Aceita-se como resposta certa T = 200 µs. � O programa que executa no sistema anterior tem a estrutura indicada: Nos de linha Instruções 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 PLACE 0 início: MOV SP, TOPO MOV BTE, INTERR EI0 EI1 EI ... ;corpo do programa PLACE 1000h INTADC: ;rotina de atendimento da ;interrupção do conversor RFE INTCOMSER:;rotina de atendimento da ;interrupção da interface serial RFE PLACE 4000h INTERR: WORD INTADC INTERR1: WORD INTCOMSER PLACE 5000h PILHA: TABLE 100h TOPO: WORD 0 b) - Qual a função das instruções das linhas 3 a 6? A instrução da linha 6 define o local onde fica localizada a base da tabela de exceções. As instruções das linhas 4 e 5 habilitam as interrupções INT0 e INT1, respectivamente. A instrução da linha 6 coloca 1 no bit IE, permitindo que o processador atenda interrupções. c) - Complete as linhas que faltam a partir da linha 15 de forma a que o sistema de interrupções possa funcionar. Responda diretamente na listagem. Faltava definir a tabela de exceções. A instrução da linha 15 é opcional e o valor de localização na memória pode ser outro qualquer possível. 3- Considere o seguinte programa em linguagem assembly do PEPE. Nos de linha Endereços Instruções 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 0000H 0004H 0006H 0008H 000AH 000CH 000EH 0010H 0012H 0014H 0016H 0018H 001AH 001CH 001EH 0020H 0022H 0024H 0026H 0028H 002AH PLACE 0 início: MOV SP, 100H MOV R1, A1 MOV R2, B1 PUSH R1 CALL xpto POP R1 Parte2: CALL sub32 ;rotina a ;desenvolver na alínea d) Stop: JMP Stop xpto: MOV R0,[R1+2] MOV R3,[R2+2] ADD R0, R3 MOV R1, [R1] MOV R3, [R2] ADDC R1, R3 MOV [R2+2], R0 MOV [R2], R1 RET A1: WORD 10h A0: WORD 2000h B1: WORD 2h B0: WORD 0f000h Preencha as tabelas seguintes com os valores hexadecimais que ficam, após a execução do programa até o rótulo Parte2, na pilha e no SP, R0, R1, R2 e R3, tendo atenção aos valores antes de o programa começar. Nota: “XXXX” significa “valor indeterminado”. Valor antes do programa Valor após o programa SP 0000H 0100h R0 0100H 1000h R1 0200H 0024h R2 0300H 0028h R3 0400H 0002h Pilha: Endereço Valor antes do programa Valor após o programa 0F8H XXXX XXXX 0FAH XXXX XXXX 0FCH XXXX 0CH 0FEH XXXX 24H 100H XXXX XXXX Quais os valores que terão as posições de memória B1 e B0 antes da execução da linha 8? Justifique. [B1] = 13h [B0] = 1000h O par B1:B0 vai conter o resultado da soma do par A1:A0 com o valor anterior do par B1:B0, isto é, 00102000h e 0002f000h. O resultado dessa soma é 00131000h. Analise o funcionamento da rotina xpto. Complete o respectivo cabeçalho. ;* -------------------------------------------------------------------------------------- ;* Nome: SOMA32 ;* Descrição: Soma dois números de 32 bits cujas referências são passadas nos registradores R1 e R2. ;* Parâmetros de entrada: R1 : endereço da Word mais significativa do 1º operando; R2: endereço da Word mais significativa do 2º operando. ;* Resultado: Resultado colocado nas posições de memória que continham o 2º operando. ;* Registradores destruídos: R0, R1 e R3 ;* -------------------------------------------------------------------------------------- Pretende-se que seja construída agora a rotina SUB32, de forma a respeitar o especificado no seguinte cabeçalho. Escreva o seu código (em Assembly do PEPE) na tabela seguinte. Provavelmente não será necessário usar todo o espaço dado. Rótulo Instrução Comentário Sub32: PUSH R0 ;Guardam os PUSH R2 ;registradores que vão PUSH R3 ;ser alterados MOV R0, [R1+2] ;Obtém a parte menos sign. do 1º operando MOV R3, [R2+2] ;Obtém a parte menos sign. do 2º operando SUB R0, R3 ;A parte menos sign. do resultado fica em R0 MOV R3, [R1} ;Obtém a parte mais sign. do 1º operando MOV R2, [R2] ;Obtém a parte mais sign. do 2º operando SUBB R3, R2 ;Subtrai com o Borrow para considerar o ;transporte da primeira parte; Parte mais ;sign. fica em R3 MOV [R1+2], R0 ;Guarda a parte menos sign. do resultado MOV [R1], R3 ;E a mais significativa, também POP R3 ;Repõem os POP R2 ;registradores que foram POP R0 ;afetados RET ;e retorna � Mini-manual do PEPE: Instrução de assembly Descrição ADD R1, R2 R1 ( R1 + R2 ADD R1, constante R1 ( R1 + constante (entre -8 e +7) ADDC R1, R2 R1 ( R1 + R2 + C (se C=1, soma mais 1) SUB R1, R2 R1 ( R1 - R2 SUBB R1, R2 R1 ( R1 - R2 - C (se C=1, subtrai mais 1) AND R1, R2 R1 ( R1 and R2 (bit a bit) OR R1, R2 R1 ( R1 or R2 (bit a bit) SHL R1, n Desloca R1 de n bits para a esquerda SHR R1, n Desloca R1 de n bits para a direita CMP R1, R2 Ativa flag Z se R1 = R2 CMP R1, constante Ativa flag Z se R1 = constante (entre -8 e +7) BIT R1, n Ativa flag Z se o bit n de R1 = 0 (n entre 0 e 15) MOV R1, R2 R1 ( R2 MOV R1, constante R1 ( constante (qualquer valor de 16 bits) MOV R1, [R2] R1 ( M[R2] MOV [R1], R2 M[R1]( R2 MOV R1, [R2+k] R1 ( M[R2+k] (k par entre -16 e + 14) MOV [R1+k], R2 M[R1+k]( R2 (k par entre -16 e + 14) JZ rótulo Desvia para o rótulo se a flag Z estiver ativa JNZ rótulo Desvia para o rótulo se a flag Z não estiver ativa JMP rótulo Desvia para o rótulo CALL rótulo Chama a rotina no endereço indicado pelo rótulo RET Retorna da rotina RFE Retorna da rotina de interrupção PUSH R1 Decrementa o SP e guarda o registrador R1 no topo da pilha POP R1 Lê o valor do topo da pilha, coloca-o em R1 e incrementa SP INT1 INT0 Comunicação Conversor nWR nRD Dados PEPE Memória Digital Analógico- ;* -------------------------------------------------------------------------------------- ;* Nome: SUB32 ;* Descrição: Subtrai 2 números de 32 bit (1º operando – 2º operando) ;* cujas referência são passadas nos registradores R1 e R2. ;* Entradas: R1 - Endereço do 1º operando; R2 – Endereço do 2º ;* operando.: ;* Saídas: (*R1) – resultado guardado na posição de memória que ;* continha o 1º operando (apontado por R1) ;* Destrói: nada ;* Notas: -- ;* --------------------------------------------------------------------------------------- Interface de Endereços Serial � PAGE �1� de 8 � PAGE �7� de 8 Exerc�cios Resolvidos/exerc3.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv 1 - Considere o seguinte circuito, que representa apenas uma parte do circuito de decodificação de endereços de um computador com base no PEPE (processador de 16 bits com endereçamento de byte). Cada uma das RAMs (par e ímpar) tem 1K células de 8 bits. Os bits do barramento de endereços que se ligam ao decodificador devem ser os menos significativos possível e permitem que o sinal S0 esteja ativo durante a faixa de endereços necessária para acessar todas as células das RAMs. Os detalhes da seleção de RAM par ou ímpar estão omitidos por não serem relevantes para este problema. a) - Indique quais os bits do barramento de endereços que devem se ligar ao decodificador nestas condições. Justifique. A12 e A11. Cada RAM precisa de 10 bits para selecionar uma das suas 1K células. O A0 é usado para distinguir entre RAM par e ímpar (no acesso de byte, com MOVB). Logo, o conjunto das duas RAMs, que tem 2K bytes no total (par + ímpar), precisa dos A10 a A0 para selecionar todas as células. Ligando o A12 e A11 no decodificador, que são os seguintes ao A10, garante-se que cada saída fique ativa em 2 K endereços. b) - Se o processador acessar o endereço 1234H, qual o sinal de saída do decodificador que fica ativo? Justifique. 400H são 1K e 1000H são 4 K. 1234H é algo entre 4 K e 5 K. A saída S0 fica ativa entre 0 e 2K-1, S1 entre 2K e 4K-1, e S2 entre 4K e 6K-1. Logo, a saída ativa é S2. 2 - Considere o seguinte circuito, que implementa um voltímetro digital (medidor de tensão de 0 a 15 volts, em que o resultado é apresentado como um número binário de 4 bits). O voltímetro funciona por aproximações sucessivas, comparando a tensão de entrada com um resultado parcial cada vez mais perto do valor final. Começa comparando com metade da escala (1000), depois com 1100 ou 0100 (conforme o resultado da comparação) e assim sucessivamente para refinar o resultado. O circuito é controlado por uma unidade microprogramada, em que: LOAD_R1 e LOAD_R2 memorizam valores em R1 e R2 (registradores de 4 bits); INIT_R1 inicializa R1 com 0 e SHR_R2 desloca R2 de um bit para a direita; NÃO_ZERO e MAIOR são entradas para a unidade de controle e estão descritas no desenho; O sinal PRONTO indica quando a medição estiver pronta (quando R2=0); O multiplexador MUX1 seleciona a entrada de baixo se o valor na saída do multiplexador MUX2 for 1. a) - Identifique cada um dos blocos A e B nesta figura. Bloco O que é, para que serve A MPC, registrador que mantém o endereço da microinstrução corrente na ROM de microcódigo B Somador de 1 unidade, destinado a incrementar o MPC para endereçar a microinstrução seguinte b) - Preencha a tabela seguinte com as microinstruções necessárias para implementar a funcionalidade da divisão inteira. Use “SIM” para indicar os sinais que devem estar ativos em cada ciclo de relógio, e deixe em branco as células dos sinais não ativos ou não relevantes. Em SEL_MICRO_SALTO, identifique a entrada do multiplexador a selecionar (quando relevante). Endereço na ROM Operações LOAD_R1 INIT_R1 LOAD_R2 SHR_R2 PRONTO SEL_MICRO_ SALTO MICRO_SALTO 0 Inicializa R1 (com 0) e R2 (com 1000, em binário) Sim Sim 1 Se MAIOR = 1, desvia para o passo 3 MAIOR 3 2 Memoriza em R1 a sua entrada (R1 + R2) Sim 3 Desloca R2 para a direita Sim 4 Se R2 for diferente de 0, desvia para o passo 1 NÃO_ZERO 1 5 Ativa PRONTO (acabou) Sim c) - Quantos bits deve ter cada palavra da ROM? Justifique. 10 bits. Todos os sinais gerados têm 1 bit, exceto SEL_MICRO_SALTO que tem 2 e MICRO_SALTO, que tem 3 (há 6 microinstruções). 3 - Suponha que o PEPE (processador de 16 bits com endereçamento de byte) inclui uma cache de dados de mapeamento direto com blocos de 4 palavras e uma capacidade de 1K bytes (só a parte dos dados propriamente ditos), onde V=1 se a linha tiver um valor válido e M=1 se alguma das palavras dessa linha tiver sido modificada. V M Rótulo Palavras . . . a) - Quantas linhas tem a cache? Justifique. Cada bloco tem 4 palavras ou 8 bytes. Com uma capacidade de 1K bytes, a cache tem 128 blocos (1K / 8), ou 128 linhas. b) - Suponha que a cache esteja vazia quando o processador fizer um acesso de 16 bits em leitura ao endereço 18C4H. Indique o nº da linha da cache que é alterada e, na linha abaixo, o conteúdo que fica nessa linha (no caso das palavras, escreva o endereço de cada palavra em vez do seu valor, só para se perceber que palavra fica escrita lá). Indique todos os valores em binário ou hexadecimal. 18H Nº da linha alterada, em hexadecimal V M Rótulo Palavras (endereço maior do lado direito) 1 0 000110 18C0H 18C2H 18C4H 18C6H 4 - Suponha que o PEPE, com os seus 16 bits de endereço e endereçamento de byte, suporte memória virtual com páginas de 256 bytes. Assuma que a memória física é de 4 Kbytes e que a TLB é uma cache totalmente associativa de 4 entradas, cujo conteúdo é em determinado momento o seguinte: Válida Página alterada Nº de página virtual Nº de página física 1 1 24H 03H 0 0 7CH 03H 1 0 63H 0FH 0 0 E8H 08H a) - Preencha a tabela seguinte (valores em decimal ou hexadecimal): Valor Breve justificativa Dimensão do espaço virtual 64 K bytes 16 bits de endereço nº de páginas virtuais 256 64K / 256 (dimensão de cada página) nº de páginas físicas 16 4K / 256 b) - Acabe de preencher as correspondências da seguinte tabela: Endereço virtual Endereço físico 63CEH 0FCEH 24A6H 03A6H 241EH 031EH 630EH 0F0E H c) - Suponha agora que o processador faça uma leitura ao endereço virtual 23E8H. Indique na tabela da questão 4 as alterações que terão de ocorrer na TLB (risque e escreva os novos valores, arbitrando o que for necessário) para que o acesso seja efetuado e justifique sucintamente essas alterações na caixa abaixo. Válida Página alterada Nº de página virtual Nº de página física 1 1 24H 03H 1 0 23H 05H 1 0 63H 0FH 0 0 E8H 08H A página virtual 23H não está carregada na TLB, em função do que no acesso dá TLB miss. Usando uma das entradas livres, tem de se carregar na TLB a correspondência entre a página virtual 23H e a página física onde está carregada em memória principal (05H, no exemplo), assumindo que esta já está carregada em memória principal (senão dá page-fault e isto tem de ser resolvido primeiro). Decodifi-cador � PAGE �1� _1210826676.vsd Descodificador RAM par 1k x 8 CS S0 S1 S2 S3 A? A? _1211281141.vsd 32 SEL_MICRO_SALTO MUX1 MUX 2 A ROM B MICRO_SALTO 2 1 NÃO_ZERO MAIOR R1 MAIOR (1 se X >= Y) NÃO_ZERO (1 se R2 > 0) 0 + INIT_R1 SHR_R2 PRONTO R2 LOAD_R1 INIT_R1 LOAD_R1 LOAD_R2 LOAD_R2 SHR_R2 Comparador Valor digital medido Tensão a medir (0 a 15 volts) X Y 1000 Exerc�cios Resolvidos/exerc4.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv � Imagine um latch que memoriza o valor quando o sinal de controle C=0. Se no meio tempo em que C=1 a entrada D mudar de 0 para 1, a saída Q: Muda de 0 para 1 Mantém o valor anterior Muda de 1 para 0 Fica com um valor indeterminado Uma das vantagens da representação em complemento de 2 é: Para calcular o valor simétrico basta negar todos os bits Os números simétricos diferem apenas no bit mais significativo A diferença A-B pode ser calculada pela soma de A com o simétrico de B Para calcular o valor simétrico basta negar o bit mais significativo �Derivar 1101 a partir do número -3 significa (usando 4 bits): Calcular o valor do complemento de 2 desse número Representar o simétrico desse número em complemento de 2 Representar esse número em complemento de 2 Representar esse número em binário sem sinal O endereço de uma ROM é: O número de palavras da ROM O índice de uma palavra dentro da ROM O número de bits de uma palavra da ROM O valor de uma palavra da ROM � 5 Quantos sinais de seleção (de um bit cada um) deve ter um multiplexador de 8 entradas? 3 6 Quantos flip-flops D são necessários para construir um registrador capaz de memorizar 32 valores diferentes (um de cada vez)? 5 7 Quantos bits são necessários no mínimo para representar o número decimal 30 em complemento de 2? 6 8 Represente o número F1A5H em binário 1111 0001 1010 0101 b 9 Represente o número -51 em complemento de 2, com 8 bits 1100 1101 10 Calcule em binário (com 8 bits) a soma dos dois números (representados em complemento de 2 com 8 bits) 1010 1101 e 0111 0101 0010 0010 Exerc�cios Resolvidos/exerc5.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere o seguinte circuito, em que tanto o latch D (transparente quando C=1) como o flip-flop D (ativo na borda de subida de C) têm a saída negada. Assumindo que as entradas do circuito D, C e X variam de acordo com o indicado na figura, indique a evolução temporal correspondente dos sinais K, L e M. 2 Quais os números mínimo e máximo (em decimal) representáveis em binário, complemento de 2, com 10 bits? -512 a +511 3 Represente o número AF18H em binário 1010 1111 0001 1000 4 Determine o valor em decimal do número 93H (considerado em complemento de 2 com 8 bits) -109 5 Calcule em binário (com 8 bits) a soma dos dois números (representados em complemento de 2 com 8 bits) 0110 1011 e 1011 0111 0010 0010 Latch Flip-flop Multiplexa- dor _1241869395.vsd X X D C K Q Q Báscula K L Multiplexer 00 01 10 11 Trinco X Y 0 Q Q D D C C D C M L M Exerc�cios Resolvidos/exerc6.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Imagine uma RAM simples (um só circuito integrado), com uma capacidade de 32 Kbits e uma largura de 16 bits. Indique: Nº de células da RAM 2 K Nº de bits do endereço da RAM 11 Capacidade em bytes da RAM 4 K Endereço da RAM (em hexadecimal) da célula que inicia a segunda metade da RAM 400H � A figura representa, de forma muito simplificada, o circuito de dados do PEPE (com 16 registradores, R0 a R15, de 16 bits). Os sinais A, B e C indicam, respectivamente, qual o registrador que numa determinada instrução serve como 1º operando, como 2º operando e como resultado. Há instruções em que o 2º operando é uma constante. Z e N são os bits de estado, ativos em 1. Indique o número de bits que cada um dos seguintes sinais deve ter. Nº de bits A 4 B 4 C 4 1º operando 16 Resultado 16 Z 1 N 1 Dado o seguinte programa e a respectiva situação inicial, indique para cada instrução os valores dos respectivos sinais e registradores no final da execução da instrução. Use X para indicar um valor que não é relevante para uma determinada instrução e aspas (“) quando um valor se mantiver desde a instrução anterior. R1 R2 R3 A B C 1º oper. Const. Result. Z N instrução anterior 1000H FFEDH 7AH 1 0 MOV R1, 13H 0013H “ “ 1 X 1 X 0013H 0013H “ “ ADD R1, R2 0000H “ “ 1 2 1 0013H X 0000H 1 0 SHR R2, 3 “ 1FFDH “ 2 X 2 FFEDH 3 1FFDH 0 0 CMP R3, R2 “ “ “ 3 2 X 007AH X E08DH 0 1 Considere o seguinte programa do PEPE, que conta o número de vezes que um número pode ser somado a si próprio antes de dar estouro (overflow). Indique o valor final dos registradores R0 e R1. R0 4 R1 E340H MOV R1, 71AH MOV R0, -1 X: ADD R0, 1 ADD R1, R1 JNV X fim: JMP fim Banco de registradores Multiple- xador _1235210622.vsd RAM Entrada Endereço WR Saída _1241094663.vsd Banco de registos ALU A B C resultado 1º operando Z N Multi-plexer constante Exerc�cios Resolvidos/exerc7.doc Considere o seguinte programa, destinado a ser executado no simulador do PEPE. Ao executar, este programa faz alguns acessos à memória (além das buscas de instruções, que são ignoradas). A tabela indica em que endereço o primeiro acesso é feito (uma escrita). PLACE 0000H 0000H MOV SP, 1800H 0002H MOV R1, 231FH 0004H CALL X 0006H fim: JMP fim 0008H X: MOV R2, 1234H 000AH CALL Y 000CH RET 000EH Y: MOV [R2], R1 0010H RET Preencha os espaços no programa (os do lado esquerdo são os endereços em que as instruções ficam). Acabe de preencher a tabela com os acessos à memória realizados pelo programa, indicando em que endereço o acesso é feito, se é leitura (L) ou escrita (E) e o respectivo valor (lido ou escrito). Endereço L ou E Valor 17FEH E 0006H 17FCH E 000CH 1234H E 231FH 17FCH L 000CH 17FEH L 0006H Ao analisar um programa de assembly, o assemblador do PEPE produz uma tabela interna com os símbolos (constantes simbólicas) e respectivos valores. Considere o seguinte programa e simule um assemblador, preenchendo os valores (em hexadecimal) dos símbolos usados. PLACE 1000H X: WORD 2000H Y EQU 1000H W: STRING “abcdef” Z: WORD 1006H PLACE 0 A: MOV SP, 1000H MOV R1, 1000H B: SUB R1, 2 C: JNZ B fim: JMP fim Símbolo Valor (hexadecimal) X 1000H Y 1000H W 1002H Z 1008H A 0000H B 0004H C 0006H fim 0008H Considere o seguinte programa. Indique qual o valor dos registradores quando o programa termina. PLACE 1000H X: WORD 2BBFH Y: WORD 2B4FH WORD 54AFH WORD 27AFH PLACE 0 A: MOV SP, 2000H MOV R1, X B: MOV R2, 2 CALL AAA fim: JMP fim AAA: SHL R2, 1 MOV R3, [R1+R2] RET R1 1000H R2 0004H R3 54AFH SP 2000H Exerc�cios Resolvidos/exerc8.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv � Considere o seguinte programa e a respectiva rotina X, que soma o valor do parâmetro (R1) ao valor da célula de memória K e coloca o resultado de novo em K. Esta rotina mantém o valor de todos os registradores (com exceção de RE) entre a sua chamada e o seu retorno. Programe a rotina X no espaço do lado direito (ensaie primeiro no verso da folha). Por cada acesso à memória efetuado pelo programa (incluindo a rotina X, mas ignorando a busca das instruções), indique o endereço, o tipo (L-leitura, E-escrita) e o valor, na ordem em que eles são feitos. Para referenciar um valor não conhecido de um registrador, use a sua sigla (R1, por exemplo). PLACE 0 MOV SP, 2000H MOV R1, 13H CALL X fim: JMP fim K: WORD 12H X: . . . Acessos à memória Endereço Tipo Valor 1FFEH E 0006H 1FFCH E R2 1FFAH E R3 0008H L 0012H 0008H E 0025H 1FFAH L R3 1FFCH L R2 1FFEH L 0006H Rotina X X: PUSH R2 PUSH R3 MOV R2, K MOV R3, [R2] ADD R3, R1 MOV [R2], R3 POP R3 POP R2 RET Considere a rotina de interrupção 2 e o respectivo programa principal, que faz apenas as inicializações necessárias. A rotina de interrupção 2 incrementa (de uma unidade) o valor da posição de memória “conta” (deixando lá o novo valor). Programe essa rotina de interrupção, usando os registradores que quiser. Complete o que considerar necessário no programa principal para que a interrupção 2 possa funcionar corretamente. Rotina de interrupção int2 int2: PUSH R1 PUSH R2 MOV R1, conta MOV R2, [R1] ADD R2, 1 MOV [R1], R2 POP R2 POP R1 RFE Programa principal PLACE 0 início: MOV SP, fim_pilha MOV BTE, tab EI2 EI fim: JMP fim pilha: TABLE 100H fim_pilha: conta: WORD 0 tab: WORD 0 WORD 0 WORD int2 Considere um computador com um controlador de DMA que funciona em modo de bloco (dados transferidos numa só operação de DMA), em que cada palavra (2 bytes) demora cerca de 100 nanossegundos para ser transferida. NOTA – mili = 10-3; micro=10-6; nano=10-9. Este computador está fazendo digitalização de voz, com uma interrupção (para ler o valor do sinal de áudio) a cada 100 microssegundos. Os valores lidos (um valor é uma palavra) são guardados numa tabela em memória e escritos no disco numa operação de DMA quando a tabela enche. Qual o tamanho máximo (aproximadamente) em palavras que esta tabela deve ter? 1000 Exerc�cios Resolvidos/exerc9.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere um sistema com um processador com bus de dados de 8 bits e bus de endereços de 16 bits cujo mapa de endereços é apresentado na seguinte tabela. Preencha o campo “Capacidade” em bytes de cada dispositivo. Indique quais os “Bits de endereços” que é necessário ligar a cada dispositivo (por exemplo, A0-A5) Sabendo que tem um decodificador de 1-8, indique quais os bits de endereços que deve se ligar às entradas de controle do decodificador _______A15-A13_______________ Preencha a coluna “Saídas do decodificador” com o número da saída do decodificador que se liga ao chip select de cada dispositivo. Dispositivo Início Fim Capacidade Bits de endereços Saídas do decodificador RAM1 0000H 0FFFH 4kBytes A0-A11 S0 RAM2 2000H 3FFFH 16kBytes A0-A13 S1 Periférico 5000H 5008H 9Bytes A0-A3 S2 ROM 9000H 92FFH 768Bytes A0-A9 S4 2) A figura seguinte representa uma parte simplificada do Núcleo do Processador. a) Faça a legenda da figura, colocando as respectivas letras dos vários módulos ou sinais de controle no local certo da figura (existem letras em excesso). A ALU B Sel_Const: sinal de controle para o Gerador de Constantes. C Banco de Registradores D Multiplexador E Micro Program Counter (MPC) F Gerador de Constantes SHAPE \* MERGEFORMAT ��� Endereço na ROM Operações LOAD_ALU_R1 LOAD_MEM_R1 LOAD_ALU_R2 LOAD_MEM_R2 OP_ALU SEL_MICRO_SALTO MICRO_SALTO 0 Inicializa R1 com N, que vem da memória. X 1 Move R1 para R2 X B 2 Decrementa R2 X C 3 Se R2 = 1, desvia para o passo 6 3 6 4 Multiplica R1 e R2 e coloca resultado em R1 X A 5 Desvia para 2 1 2 6 Desvia para 6 1 6 3) Considere o seguinte circuito que implementa o fatorial de um número, F(n)= (n)(n-1) ... (1) O circuito é controlado por uma unidade microprogramada. Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1) Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R2_ZERO, 3=R2_UM, 4=R2_NAO_ZERO). As opções disponíveis para OP_ALU são (A=MUL_R1_R2, B=PASS_R1, C=DEC_R2, etc.) � F D C A b) Sabendo que tem a possibilidade de gerar 8 tipos diferentes de constantes, quantos bits tem de ter Sel_Const (referido na tabela acima): _____3______ LOAD_ALU_R1 LOAD_MEM_R1 memória R2 R1 OP_ALU PASS_R1 = Operação da ALU que permite colocar na saída da ALU o valor de R1 sem ser modificado. ALU B Exerc�cios Resolvidos/exerc�cios-1.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere o seguinte programa e a respectiva rotina X, que soma o valor do parâmetro (R1) ao valor da célula de memória K e coloca o resultado de novo em K. Esta rotina mantém o valor de todos os registradores (com exceção de RE) entre a sua chamada e o seu retorno. Programe a rotina X no espaço do lado direito (rascunhe primeiro no verso da folha). Para cada acesso à memória efetuado pelo programa (incluindo a rotina X, mas ignorando a busca das instruções), indique o endereço, o tipo (L-leitura, E-escrita) e o valor, na ordem em que eles são feitos. Para referenciar um valor não conhecido de um registrador, use a sua sigla (R1, por exemplo). PLACE 0 MOV SP, 2000H MOV R1, 13H CALL X fim: JMP fim K: WORD 12H X: . . . Acessos à memória Endereço Tipo Valor 1FFEH E 0006H 1FFCH E R2 1FFAH E R3 0008H L 0012H 0008H E 0025H 1FFAH L R3 1FFCH L R2 1FFEH L 0006H Rotina X X: PUSH R2 PUSH R3 MOV R2, K MOV R3, [R2] ADD R3, R1 MOV [R2], R3 POP R3 POP R2 RET Considere a rotina de interrupção 2 e o respectivo programa principal, que faz apenas as inicializações necessárias. A rotina de interrupção 2 incrementa (de uma unidade) o valor da posição de memória “conta” (deixando lá o novo valor). Programe essa rotina de interrupção, usando os registradores que achar necessário. Complete o que for necessário no programa principal para que a interrupção 2 possa funcionar corretamente. Rotina de interrupção int2 int2: PUSH R1 PUSH R2 MOV R1, conta MOV R2, [R1] ADD R2, 1 MOV [R1], R2 POP R2 POP R1 RFE Programa principal PLACE 0 início: MOV SP, fim_pilha MOV BTE, tab EI2 EI fim: JMP fim pilha: TABLE 100H fim_pilha: conta: WORD 0 tab: WORD 0 WORD 0 WORD int2 Considere um computador com um controlador de DMA que funciona em modo de bloco (dados transferidos numa só operação de DMA), em que cada palavra (2 bytes) demora cerca de 100 nanossegundos para ser transferida. NOTA – mili = 10-3; micro=10-6; nano=10-9. Este computador está fazendo digitalização de voz, com uma interrupção (para ler o valor do sinal de áudio) a cada 100 microssegundos. Os valores lidos (um valor é uma palavra) são guardados numa tabela em memória e escritos no disco numa operação de DMA quando a tabela enche. Qual é o tamanho máximo (aproximadamente) em palavras que esta tabela deve ter? 1000 Exerc�cios Resolvidos/exerc�cios-10.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere o seguinte programa. Assume-se que há hardware ligado aos pinos do processador de modo a poder gerar interrupções (pinos de interrupção sensíveis à borda de subida). Coloque os endereços (em hexadecimal) em que cada dado ou instrução ficará localizada. Preencha o que falta no programa para este funcionar corretamente com as duas interrupções. Assumindo que o processador (i) gasta 1 ms (milissegundo) com cada instrução executada e (ii) que todo o resto é instantâneo, indique: Tempo máximo desde que o pino da interrupção 0 é ativado até esta interrupção começar a ser atendida (assumindo que o pino da interrupção 1 nunca é ativado) 1 ms Idem, mas assumindo que o pino da interrupção 1 pode ser ativado 5 ms Suponha que o pino da interrupção 0 é ativado no meio da execução da instrução no endereço X, ocasião em que R1 tem o valor 8. Indique a seqüência de seis instruções (e respectivos endereços) que são executadas a seguir. Endereços Instruções 0014H SUB R1, 1 0018H SUB R1, R1 001AH RFE 0016H RET 0010H JNZ deNovo 000EH CALL X 0014H SUB R1, 1 Endereços PLACE 100H 0100H TAB_EXC: WORD Y 0102H WORD Z PLACE 0 0000H Inicio: MOV SP, 100H 0002H MOV BTE, TAB_EXC 0004H EI0 0006H EI1 0008H EI 000AH começa: MOV R2, 10 000CH MOV R1, 1000 000EH deNovo: CALL X 0010H JNZ deNovo 0012H JMP começa ; rotina X 0014H X: SUB R1, 1 0016H RET ; rotina da interrupção 0 0018H Y: SUB R1, R1 001AH RFE ; rotina da interrupção 1 001CH Z: PUSH R2 001EH MOV R2, 30 0020H SUB R1, R2 0022H POP R2 0024H RFE Imagine que se quer enviar dados por um barramento serial assíncrono, em que cada bit enviado, de dados ou de protocolo, gasta 1 ms (milissegundo). O protocolo usa bit de paridade e dois stop bits. Indique o tempo mínimo que tem de decorrer entre o emissor começar a enviar um byte até poder começar a enviar o próximo. 12 ms Suponha que se está implementando um sistema de transferência de dados por DMA num computador que tem de atender uma interrupção muito freqüente e periódica, com um tempo máximo de resposta (desde a geração do pedido de interrupção até o início de atendimento) de 1 ms. Cada palavra transferida por DMA demora 0,1 microssegundos. Quantas palavras (aproximadamente) se pode transferir por DMA em regime de bloco (transferência de uma só vez) neste computador? 10 000 palavras O disco do seu computador deu defeito e você comprou um novo. O antigo era de 5400 rotações por minuto e o novo é de 7200. Você achou que a máquina parece agora mais rápida e decidiu executar um benchmark que gasta cerca de 40% do seu tempo em acessos ao disco. Assumindo (para simplificar) que o tempo de acesso ao disco é inversamente proporcional à sua velocidade de rotação, o novo disco roda cerca de 1,3333 vezes mais rápido e terá um tempo de acesso de cerca de 0,75 do tempo do antigo. Nestas condições, estime qual a percentagem do tempo de execução deste benchmark agora em relação à versão com o disco antigo. 90 % Exerc�cios Resolvidos/exerc�cios-11.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv 1) Considere o seguinte sistema de memória utilizado por um processador com bus de dados de 8 bits e bus de endereços de 16 bits. Preencha a tabela com o tamanho e os endereços de início e de fim (em hexadecimal) em que esse dispositivo está ativo. A coluna de endereços contém os bits de endereços que estão ligados ao respectivo dispositivo. Dispositivo Endereços Início Fim Tamanho ROM A0-A12 0000H 1FFFH 8KBytes PER1 A0-A3 2000H 200FH 16Bytes RAM1 A0-A7 8000H 80FFH 256Bytes RAM2 A0-A7 C000H C0FFH 256Bytes � b) Se, em vez de um decodificador, se utilizar uma PROM para realizar a decodificação de endereços, e sabendo que se tem um NOVO Periférico2, que é o seu dispositivo com menor endereçamento (ocupa apenas uma palavra da PROM), indique qual o Fim da faixa de endereços do Periférico2, sabendo que os bits de endereço ligados à PROM são A7-A15 e o primeiro endereço do Periférico é 0800H. Fim=______087FH_______ 2) A figura seguinte representa uma parte simplificada do Núcleo do Processador. Faça a legenda da figura, preenchendo a seguinte tabela, e indique o que é e para que serve cada um dos blocos. O Que é e Para que Serve A BANCO de REGISTRADORES, contém os registradores principais, que servem para armazenar os operandos e os resultados das instruções. B ALU, responsável por realizar as operações aritméticas. C MULTIPLEXADOR, seleciona a origem do sinal, uma constante ou um registrador. D GERADOR DE CONSTANTES, permite gerar diversos tipos de constantes. SHAPE \* MERGEFORMAT ��� Endereço na ROM Operações LOAD_MEM_R1 LOAD_ALU_R1 LOAD_MEM_R2 LOAD_ALU_R2 LOAD_MEM_R3 LOAD_ALU_R3 OP_ALU SEL_MICRO_SALTO MICRO_SALTO 0 Inicializa R1 com N, e R3 com zero que vem da memória. X X 1 Inicializa R2 com a[R1], que vem da memória. X 2 Adiciona R3 e R2 e coloca resultado em R3 X A 3 Decrementa R1 X C 4 Se R1 < 0, desvia para o passo 6 3 6 5 Desvia para 1 1 1 6 Desvia para 6 1 6 3) Considere o seguinte circuito que implementa o Somatório de um vetor de números que estão originalmente em memória. F(n)= a[0]+a[1] +…+a[n-1]+a[n] O circuito é controlado por uma unidade microprogramada. Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1) Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R1_ZERO, 3=R1_NEGATIVO, 4=R1_NAO_ZERO). As opções disponíveis para OP_ALU são (A=ADD_R3_R2, B=MUL_R1_R2, C=DEC_R1, etc.) � LOAD_ALU_R1 LOAD_MEM_R1 R3 memória S1 A13 S6 S0 Per1 RAM2 RAM1 ROM Decodi-ficador 1-8 A14 A15 CS R2 CS S4 CS CS R1 OP_ALU ALU a) D C A B Exerc�cios Resolvidos/exerc�cios-12.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes: B (Busca de Instrução) D (Decodificação e Busca de Operandos) E (Execução da Instrução) W (Escrita do Resultado). T0 T1 T2 T3 T4 T5 T6 T7 T8 X: AND R2, R1 B D E W B D E MOV R1, R2 B D E W B D SUB R1, 05H B D E W B JZ X B D E ADD R2, R1 B D OR R1, R2 B Suponha que o processador executa estas instruções, assumindo-se que inicialmente R1=15H e R2=2FH. Assuma ainda que as instruções de desvio alteram o PC (em caso de desvio) na execução do estágio E. Cada um dos tempos T0 a T8 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução. X: AND R2, R1 MOV R1, R2 ADD R2, R1 NOP OR R1, R2 Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 128 palavras (blocos de 8 palavras). Indique o número de bits de cada um dos campos em que o endereço se divide para acesso à cache. Rótulo 8 Índice 4 Palavra dentro do bloco 3 Byte dentro da palavra 1 Na execução de instruções do tipo MOV R1, [R2], o núcleo do PEPE verificou que a taxa de sucesso (hit rate) foi de 90%. Um hit demora 5 ns, enquanto que um miss demora, no total, 30 ns para obter o valor. Qual é o tempo médio de acesso à memória? 7,5 ns Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com 8 entradas e que está inicialmente vazia, sendo feitos os acessos em leitura aos endereços indicados na tabela e na ordem com que aparecem. Para cada acesso, indique a posição (0 a 7) da cache que é usada, se foi hit (sim ou não) e qual o valor do rótulo com que essa posição fica após esse acesso. Endereço acessado Posição da cache Hit (S ou N) Rótulo (em binário) 5AH 2 N 01011 34H 4 N 00110 12H 2 N 00010 34H 4 S 00110 5AH 2 N 01011 34H 4 S 00110 Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 000000H até FFFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH. As páginas físicas têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas. Posição da TLB Bit de validade Nº página virtual (hexadecimal) Nº página física (hexadecimal) 0 1 C5E 18 1 0 3B 2B 2 0 C5E 6F 3 1 213 0E 4 0 45 23 5 1 3B 45 6 1 23 3B 7 1 45 2B Após alguns acessos, a TLB ficou como indicada. Preencha a tabela seguinte para este exemplo concreto. Dimensão do espaço físico (em Bytes) 64 K Dimensão do espaço virtual (em Bytes) 16 M Nº páginas do espaço físico 256 Nº atual (neste instante) de páginas virtuais cuja tradução virtual/físico pode ser feita sem acessar a tabela de páginas 5 Endereço físico que corresponde ao endereço virtual 3B45H 4545H Endereço virtual que corresponde ao endereço físico 453BH 3B3BH Exerc�cios Resolvidos/exerc�cios-2.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere um sistema com um processador com bus de dados de 8 bits e bus de endereços de 16 bits cujo mapa de endereços é apresentado na seguinte tabela. Preencha o campo “Capacidade” em bytes de cada dispositivo. Indique quais os “Bits de endereços” que precisam ser ligados a cada dispositivo (por exemplo, A0-A5) Sabendo que ele tem um decodificador de 1-8, indique quais os bits de endereços que devem ser ligados às entradas de controle do decodificador _______A15-A13_______________ Preencha a coluna “Saídas do decodificador” com o número da saída do decodificador que se liga ao chip select de cada dispositivo. Dispositivo Início Fim Capacidade Bits de endereços Saídas do decodificador RAM1 0000H 0FFFH 4kBytes A0-A11 S0 RAM2 2000H 3FFFH 16kBytes A0-A13 S1 Periférico 5000H 5008H 9Bytes A0-A3 S2 ROM 9000H 92FFH 768Bytes A0-A9 S4 2) A figura seguinte representa uma parte simplificada do Núcleo do Processador. a) Faça a legenda da figura, colocando as respectivas letras dos vários módulos ou sinais de controle no local certo da figura (existem letras em excesso). A ALU B Sel_Const: sinal de controle para o Gerador de Constantes C Banco de Registradores D Multiplexador E Micro Program Counter (MPC) F Gerador de Constantes SHAPE \* MERGEFORMAT ��� Endereço na ROM Operações LOAD_ALU_R1 LOAD_MEM_R1 LOAD_ALU_R2 LOAD_MEM_R2 OP_ALU SEL_MICRO_SALTO MICRO_SALTO 0 Inicializa R1 com N, que vem da memória. X 1 Move R1 para R2 X B 2 Decrementa R2 X C 3 Se R2 = 1, desvia para o passo 6 3 6 4 Multiplica R1 e R2 e coloca resultado em R1 X A 5 Desvia para 2 1 2 6 Desvia para 6 1 6 3) Considere o seguinte circuito que implementa o fatorial de um número, F(n)= (n)(n-1) ... (1) O circuito é controlado por uma unidade microprogramada. Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1) Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R2_ZERO, 3=R2_UM, 4=R2_NAO_ZERO). As opções disponíveis para OP_ALU são (A=MUL_R1_R2, B=PASS_R1, C=DEC_R2, etc.) � F D C A b) Sabendo que há a possibilidade de gerar 8 tipos diferentes de constantes, quantos bits Sel_Const (referido na tabela acima) tem de ter? _____3______ LOAD_ALU_R1 LOAD_MEM_R1 memória R2 R1 OP_ALU PASS_R1 = Operação da ALU que permite colocar na saída da ALU o valor de R1 sem ser modificado. ALU B Exerc�cios Resolvidos/exerc�cios-3.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes: B (Busca de Instrução) D (Decodificação e Busca de Operandos) E (Execução da Instrução) W (Escrita do Resultado). T0 T1 T2 T3 T4 T5 T6 T7 T8 JNZ Y B D E X: MOV R1, 12H B D OR R2, R1 B Y: ADD R1, R2 B D E W SHR R2, 2 B D E W CMP R1, R2 B D E W Suponha que o processador executa estas instruções, assumindo-se que o resultado da última operação da ALU deu 23H. Assuma ainda que as instruções de desvio só alteram o PC (em caso de desvio) no estágio E. Cada um dos tempos T0 a T8 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução. Indique que conflitos de dados são visíveis neste programa, traçando um círculo à volta do registrador que tem uma dependência (em conflito) de uma instrução anterior. NOTA – Isto tem de ser válido em qualquer caso e não apenas no caso a). Suponha que só se pode resolver os conflitos em software. Escreva uma nova versão do programa, sem conflitos (mas mantendo a funcionalidade). JNZ Y X: MOV R1, 12H NOP OR R2, R1 NOP Y: ADD R1, R2 SHR R2, 2 NOP CMP R1, R2 Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 64 palavras (blocos de 1 palavra). Indique os campos e o respectivo número de bits em que o endereço se divide, do ponto de vista da cache. Byte (par ou ímpar) 1 Índice 6 Rótulo 9 Na execução de instruções do tipo MOV R1, [R2], o núcleo do PEPE verificou que nuns casos o valor de R1 demorava 2 ns para ser obtido, noutros 10 ns, e que em média demorava 3,6 ns. Qual é a taxa de sucesso (hit rate) da cache com este programa? 80 % Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com apenas 4 entradas que está inicialmente vazia, sendo feitos depois 5 acessos em leitura, na ordem com que aparecem, cujos dados ficaram nas posições da cache e com os rótulos indicados na tabela. Para cada acesso, indique o respectivo endereço na memória e se foi hit (Sim ou Não). Endereço acessado Posição da cache Hit (S ou N) Rótulo (em binário) 27H 3 N 0010 01 76H 2 N 0111 01 52H 2 N 0101 00 27H 3 S 0010 01 76H 2 N 0111 01 Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 00000H até FFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH, mas só há RAM de 00000H até 8000H. As páginas virtuais têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas e tem atualmente o conteúdo da seguinte tabela (algumas posições estão vazias, isto é, não inicializadas). Posição da TLB Bit de validade Nº página virtual (hexadecimal) Nº página física (hexadecimal) 0 1 A0E 18 1 1 3B 2B 2 0 3 1 213 0E 4 0 5 0 6 1 718 3B 7 0 Preencha a seguinte tabela para este computador. Nº bits do espaço virtual 20 Dimensão do espaço físico (em KBytes) 64 Nº páginas do espaço físico 256 Nº de páginas virtuais que podem estar carregadas simultaneamente na RAM (considerando que toda a RAM está disponível para conter páginas) 128 Nº máximo de páginas virtuais (num determinado instante) cuja tradução virtual/físico pode ser feita sem acessar a tabela de páginas 8 Considere a TLB inicialmente vazia e que o processador efetua acessos aos seguintes endereços virtuais (com os respectivos endereços físicos entre parênteses): A0E2BH (182BH); 3B18H (2B18H); 2133BH (E3BH); 7180EH (3B0EH). Após estes acessos, os bits de validade ficaram como indicados. Acabe de preencher a TLB (apenas com valores relevantes e arbitrando o que achar necessário). Exerc�cios Resolvidos/exerc�cios-4.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere o seguinte circuito, em que tanto o latch D (transparente quando C=1) como o flip-flop D (sensível à borda de subida de C) têm a saída negada. Assumindo que as entradas do circuito D, C e X variam de acordo com o indicado na figura, indique a evolução temporal correspondente dos sinais K, L e M. 2 Quais são os números, mínimo e máximo (em decimal), representáveis em binário, complemento de 2, com 10 bits? -512 a +511 3 Represente o número AF18H em binário 1010 1111 0001 1000 4 Determine o valor em decimal do número 93H (considerado em complemento de 2 com 8 bits) -109 5 Calcule em binário (com 8 bits) a soma dos dois números (representados em complemento de 2 com 8 bits) 0110 1011 e 1011 0111 0010 0010 Latch Flip-flop Multiplexador _1241869395.vsd X X D C K Q Q Báscula K L Multiplexer 00 01 10 11 Trinco X Y 0 Q Q D D C C D C M L M Exerc�cios Resolvidos/exerc�cios-5.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Imagine uma RAM simples (um só circuito integrado), com uma capacidade de 32 Kbits e uma largura de 16 bits. Indique: Nº de células da RAM 2 K Nº de bits do endereço da RAM 11 Capacidade em bytes da RAM 4 K Endereço da RAM (em hexadecimal) da célula que inicia a segunda metade da RAM 400H � A figura representa, de forma muito simplificada, o circuito de dados do PEPE (com 16 registradores, R0 a R15, de 16 bits). Os sinais A, B e C indicam, respectivamente, qual o registrador que numa determinada instrução serve como 1º operando, como 2º operando e como resultado. Há instruções em que o 2º operando é uma constante. Z e N são os bits de estado, ativos em 1. Indique o número de bits que cada um dos seguintes sinais deve ter. Nº de bits A 4 B 4 C 4 1º operando 16 Resultado 16 Z 1 N 1 Dado o seguinte programa e a respectiva situação inicial, indique, para cada instrução, os valores dos respectivos sinais e registradores no final da execução da instrução. Use X para indicar um valor que não é relevante para uma determinada instrução e aspas (“) quando um valor se mantiver desde a instrução anterior. R1 R2 R3 A B C 1º oper. Const. Result. Z N instrução anterior 1000H FFEDH 7AH 1 0 MOV R1, 13H 0013H “ “ 1 X 1 X 0013H 0013H “ “ ADD R1, R2 0000H “ “ 1 2 1 0013H X 0000H 1 0 SHR R2, 3 “ 1FFDH “ 2 X 2 FFEDH 3 1FFDH 0 0 CMP R3, R2 “ “ “ 3 2 X 007AH X E08DH 0 1 Considere o seguinte programa do PEPE, que conta o número de vezes que um número pode ser somado a si próprio antes de dar estouro (overflow). Indique o valor final dos registradores R0 e R1. R0 4 R1 E340H MOV R1, 71AH MOV R0, -1 X: ADD R0, 1 ADD R1, R1 JNV X fim: JMP fim Multi- plexador Banco de registradores _1235210622.vsd RAM Entrada Endereço WR Saída _1241094663.vsd Banco de registos ALU A B C resultado 1º operando Z N Multi-plexer constante Exerc�cios Resolvidos/exerc�cios-6.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv Considere o circuito da figura, em que o latch fica transparente quando o seu sinal de controle está com 1 e o flip-flop reage na borda de subida do seu relógio. D é a entrada de dados. Assumindo a evolução temporal dos sinais que já está assinalada, desenhe o resto da evolução dos sinais X, Y, W e Z. Sugestão: desenhe primeiro completamente os sinais X e Y. Represente o número hexadecimal A5FBH em binário. 1010 0101 1111 1011 Considere o número decimal 3489. Converta-o para hexadecimal com 16 bits, usando a notação de complemento de 2: 0 D A 1 H Idem, para o seu simétrico (-3489): F 2 5 F H Repita a alínea b, mas agora com 32 bits: F F F F F 2 5 F H Qual é o número mínimo de bits necessário para representar corretamente estes números em notação de complemento de 2? 13 Considere os números decimais 65 e 82. Converta-os para binário e faça a sua soma em binário (tudo com 8 bits e em notação de complemento de 2). Indique ainda se houve estouro. 0 1 0 0 0 0 0 1 65 0 1 0 1 0 0 1 0 82 1 0 0 1 0 0 1 1 65 + 82 Estouro (Sim ou Não) Sim Flip-flop � EMBED Visio.Drawing.11 ��� Latch _1277532740.vsd X D C Y Q Q Báscula X Y Exerc�cios Resolvidos/exerc�cios-7.doc Considere o seguinte programa a ser executado no simulador do PEPE. Ao executar, este programa faz alguns acessos à memória (além das buscas de instruções, que são ignoradas). A tabela indica em que endereço o primeiro acesso é feito (uma escrita). PLACE 0000H 0000H MOV SP, 1800H 0002H MOV R1, 231FH 0004H CALL X 0006H fim: JMP fim 0008H X: MOV R2, 1234H 000AH CALL Y 000CH RET 000EH Y: MOV [R2], R1 0010H RET Preencha os espaços no programa (os do lado esquerdo são os endereços onde estão as instruções). Acabe de preencher a tabela com os acessos à memória feitos pelo programa, indicando em que endereço o acesso é feito, se é leitura (L) ou escrita (E) e o respectivo valor (lido ou escrito). Endereço L ou E Valor 17FEH E 0006H 17FCH E 000CH 1234H E 231FH 17FCH L 000CH 17FEH L 0006H Ao analisar um programa em assembly, o assembler do PEPE produz uma tabela interna com os símbolos (constantes simbólicas) e respectivos valores. Considere o seguinte programa e simule um assembler, preenchendo os valores (em hexadecimal) dos símbolos usados. PLACE 1000H X: WORD 2000H Y EQU 1000H W: STRING “abcdef” Z: WORD 1006H PLACE 0 A: MOV SP, 1000H MOV R1, 1000H B: SUB R1, 2 C: JNZ B fim: JMP fim Símbolo Valor (hexadecimal) X 1000H Y 1000H W 1002H Z 1008H A 0000H B 0004H C 0006H fim 0008H Considere o seguinte programa. Indique qual é o valor dos registradores quando o programa termina. PLACE 1000H X: WORD 2BBFH Y: WORD 2B4FH WORD 54AFH WORD 27AFH PLACE 0 A: MOV SP, 2000H MOV R1, X B: MOV R2, 2 CALL AAA fim: JMP fim AAA: SHL R2, 1 MOV R3, [R1+R2] RET R1 1000H R2 0004H R3 54AFH SP 2000H Exerc�cios Resolvidos/exerc�cios-8.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv 2º Teste de Arquitetura de Computadores IST - Taguspark 2º Semestre 2007/2008 Duração: 25 minutos 4 Julho 2008 Nome Número (3 + 3 pontos) A figura representa uma versão simplificada do PEPE-8 (processador de 8 bits) ligado às memórias. A ALU sabe executar 4 operações. Suponha que a memória de dados tem uma capacidade de 128 bytes e a de código 256 instruções. Preencha a tabela. Nº de bits de endereço que se ligam à memória de dados 7 Nº de bits de cada célula da memória de dados 8 Nº de bits de endereço que se ligam à memória de instruções 8 Nº de bits de cada célula da memória de instruções 12 Suponha que todas as células de memória de dados contêm o valor 27H e o reg. A tem 2EH. Preencha a tabela com os valores existentes em cada ponto imediatamente antes da transição de relógio que executa a instrução. Use X se um determinado valor for desconhecido. Assembly (PEPE-8) RTL Endereço de dados Entrada reg. A Saída reg. A ST [4BH] M[4BH] ( A 4BH X 2EH LD [1FH] A ( M[1FH] 1FH 27H 2EH (1 + 4 pontos) O circuito ao lado representa de forma simplificada o PEPE (16 bits). Indique quantos bits tem o bus F: 16 bits Supondo que o PEPE executa as instruções seguintes, em que a primeira está no endereço 0020H da RAM, indique todos os endereços em que a memória é acessada e o tipo de acesso (leitura/escrita). Use apenas as colunas que precisar. MOV R1, 5CH Nº do acesso 1 2 3 4 5 6 MOV [R1], R1 Endereço 20H 22H 5CH 24H ADD R1, 3 Leitura/Escrita Leitura Leitura Escrita Leitura (5 pontos) Considere o programa no PEPE (16 bits) e as seguintes questões (SHL Ri, n = desloca n bits à esquerda). MOV R1, 1 Quantas vezes o programa passa por “prox”? 3 MOV R2, 3 Qual é o valor final de R1? 8 H prox: SHL R1, 1 Qual é o valor final de R2? 0 H SUB R2, 1 Qual é a função matemática R1 final = f (valor inicial do R2)? JNZ prox Potência de 2 (R1 = 2R2) fim: JMP fim (4 pontos) Indique os valores (em hexadecimal) dos registradores após a execução de cada instrução (instruções executadas em seqüência). R1 R2 R3 Valores iniciais 3154H 2468H 2A52H OR R1, R2 357CH 2468H 2A52H ADD R2, R3 357CH 4EBAH 2A52H Registrador A Exerc�cios Resolvidos/exerc�cios-9.doc Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv 1) Dado o seguinte programa, e sabendo que inicialmente os registradores tem os seguintes valores, indique o valor dos registradores no fim do programa, e escreva na memória os valores alterados. R1=0216H R2=0200H R3=0216H R4=22FAH R5=348FH MOV R5, [R2+6] MOV R4, [R3] MOV [R2+2], R3 0 1 2 3 4 5 6 7 8 9 A B C D E F 200H A1 B2 02 16 7A 87 6B 45 210H 23 43 43 FA 54 38 06 BA CA 6B 46 ADD R5, 1H MOV R2, 6 MOV [R2+R3], R5 ADD R3, 3H MOVB [R3], R2 ADD R1, 5 MOVB R1, [R1] Tab1: Memória de dados R1=00CAH R2=0006H R3=0219H R4=5438H R5=6B46H SÍMBOLO VALOR REGISTRADOR VALOR PRI 2040H R1 2040H TOP 3301H R2 2050H FIR 2042H R3 2042H SEC 3333H THI 2046H FOR 2048H BOT 3001H LAST 204CH 2) Dado o seguinte programa, indique o valor dos registradores quando terminar a sua execução e o valor dos símbolos apresentados na tabela seguinte: Place 2040H PRI: WORD 2050H TOP EQU 3301H FIR: TABLE 2 SEC EQU 3333H THI: WORD 2042H FOR: STRING “mesa” BOT EQU 3001H LAST: STRING “amarela” Place 0h Inicio: MOV R1, 2040H MOV R2, [R1] MOV R3, [R1+6] Fim: JMP Fim 3) Dado o seguinte programa, indique o valor dos registradores quando terminar a sua execução e preencha a memória com o conteúdo do stack. Endereço Dados 6700H 6702H 6704H 6706H 0834H 6708H 2006H 670AH 670CH 670EH R1 0834H R2 0000H R3 0004H SP 6708H PLACE 2000 INI: MOV SP, 6708H MOV R1, 0834H CALL FUN FIM2: JMP FIM2 CALL Eti SP ( SP-2 M[SP](PC PC ( Eti FUN: PUSH R1 MEIO: MOV R2, 1H AND R2, R1 JZ AQUI ADD R3, 1 AQUI: SHR R1, 1 JZ FIM RET PC ( M[SP] SP ( SP+2 JMP MEIO FIM: POP R1 RET