Anexo A1 Capítulo 1 1 Fig. A.1. Fotografia mostrando o interior do microprocessador MIPS R3000. No lado direito do chip, pode-se ver a parte operativa. O lado superior esquerdo contem a unidade de controle. O canto inferior esquerdo contem a parte do sistema de memória chamada "Translation Lookaside Buffer", ou seja, a memória cache do microprocessador. 2 Fig. A.2. Fotografia mostrando o interior do microprocessador MIPS R4000. A pastilha tem a dimensão de 1,5cm por 1,1cm, contendo cerca de 1,3 milhão de transistores. No lado direito do chip pode-se ver a parte operativa para cálculo de operações com números inteiros, enquanto que o lado esquerdo contem a parte operativa para cálculos em ponto flutuante. A unidade de controle está no centro do chip e os dois grandes blocos no alto são as memórias cache do microprocessador. 3 Fig. A.3. Fotografia de um wafer de 6 polegadas contendo microprocessadores MIPS R4000 (esquerda) e um wafer de 6 polegadas contendo microprocessadores MIPS R3000 (direita). O número de pastilhas do R3000 no wafer da direita, para um rendimento de 100%, é 210. Cada pastilha mede 0,8 x 0,9cm2 e contem cerca de 125.000 transistores. O número de pastilhas do R4000 no wafer da esquerda, para um rendimento de 100%, é de 59. O tamanho da pastilha é 1,5 x 1,1cm2 e cada pastilha contem cerca de 1,3 milhão de transistores. Alguns dos chips do R3000 colocados nas bordas do wafer não serão utilizados; eles foram incluídos porque é mais fácil para se criar as máscaras para imprimir o circuito no silício. Os retângulos "vazios" em ambos wafers contém circuitos de teste usados para rapidamente se testar o wafer. O wafer do MIPS R4000 tem quatro circuitos de teste adicionais nas bordas. Fig. A.4. Fotografia do microprocessador Intel 4004, de 1971, o primeiro microprocessador. A pastilha tem a dimensão de: 0,3 x 0,4cm2 e possui 2.300 transistores. 4 Anexo A2 Capítulo 4 5 Anexo A3 Exercícios 6 Capítulo 1 1. Encontre a palavra ou frase na lista abaixo que melhor se enquadra na descrição das questões q1 à q26. a. níveis de abstração b. assembler c. número binário d. bit e. cache f. CPU g. chip h. compilador i. família de computadores j. parte de controle k. parte operativa l. defeito m. pastilha n. DRAM o. implementação p. instrução q. arquitetura de um conjunto de instruções r. circuito integrado LSI (large scale integration) s. memória t. sistema operacional u. processador v. semicondutor w. supercomputador x. transistor y. VLSI (very large scale integration) z. rendimento q1. Abstração específica que o hardware fornece ao software de baixo nível: q2. Parte ativa do computador, seguindo instruções dos programas para somar números, testar números, etc...: q3. Outro nome para processador: q4. Número na base 2: q5: Dígito binário: q6. Coleção de implementações de computadores apresentando mesma arquitetura de conjunto de instruções; ela é disponível ao mesmo tempo e varia em preço e performance: q7: Componente do processador que realiza operações aritméticas: q8: Componente do processador que controla a parte operativa, a memória e os dispositivos de I/O de acordo com as instruções do programa: q9: Hardware que obedece a abstração da arquitetura do conjunto de instruções: q10. Técnica para projetar o hardware ou software; o sistema consiste de camadas de hierarquia, onde cada camada inferior mostra detalhes da camada acima: q11. Máquina de alta performance: q12. Comando individual para um computador: q13. Circuito integrado comumente utilizado para construir a memória principal: q14. Integra dezenas à centenas de transistores dentro de um único chip: q15. Integra centenas de milhares à milhões de transistores dentro de um único chip: q16. Localização de programas quando estão sendo executados, contém dados necessários também: q17. Imperfeição microscópica de um wafer: q18. Apelido, abreviação de uma pastilha ou circuito integrado: q19: Chave (switch) de liga/desliga, controlada por eletricidade: q20. Percentagem de pastilhas boas entre o número total de pastilhas no wafer: q21. Programa que gerencia, administra um computador para o benefício dos programas que rodam naquela máquina: q22. Programa que traduz uma versão simbólica de uma instrução para uma versão binária (linguagem de máquina): 7 q23. Programa que traduz uma notação em linguagem em alto-nível para a linguagem assembler. q24. Componente retangular que resulta da divisão de um wafer: q25. Memória pequena e rápida que atua como um buffer para a memória principal: q26. Material que não conduz eletricidade muito bem: 2. Usando as categorias listadas abaixo, classifique as seguintes palavras. Use as letras à esquerda das palavras na tabela para responder. As letras destas palavras podem ser usadas mais de uma vez. a. software de aplicação b. linguagem de programação de alto-nível c. dispositivo de entrada d. circuito integrado e. minicomputador q1. Apple II: q2. Assembler: q3. Compilador: q4. Cray-1: q5. DRAM: q6. Fortran: q7. IBM-PC: q8. Keyboard: f. dispositivo de saída g. computador pessoal h. semicondutor i. supercomputador j. software de sistemas q9. Microprocessador: q10. Mouse: q11. Sistema operacional: q12. Pascal: q13. PDP-8: q14. Impressora: q15. Display de CRT: 3. Um disco magnético contendo dados está constantemente girando. Em média, leva-se a metade de uma revolução completa do disco para que a informação desejada passe embaixo da cabeça de leitura/escrita. Assumindo-se que o disco esteja girando a uma velocidade de 3600 revoluções/minuto, qual é o tempo médio para o dado desejado passar pela cabeça de leitura/escrita do disco? E qual é o tempo se o disco estivesse girando à 5400rpm? 4. Combine as três equações [i], [ii], [iii] (pág. 4) para determinar o custo/pastilha em função da área da pastilha. Se ignorar constantes, qual é a relação aproximada entre o custo e a área da pastilha? 5. Qual é o custo aproximado de uma pastilha de R4000 no wafer mostado à esquerda na figura 1.13 (pág. 11). Assuma que o wafer de 6 polegadas custa US$750,00 e que a densidade de feito é 2/cm2. Use o número de pastilhas indicado nesta figura. 6. Mesmo exercício que o anterior, mas utilizando o wafer da direita (R3000). 8 Exercícios 7. 8. e 9.: A cada nova geração, as pastilhas de circuitos de circuitos integrados DRAM tem significantemente aumentado. No entanto, o rendimento do processo destes circuitos tem permanecido aproximadamente o mesmo (43% à 48%). A tabela a seguir mostra alguns dados estatísticos referentes à produção de memórias DRAMs entre 1980 e 1992. 7. Dado o aumento de área da pastilha de memórias DRAM, qual o parâmetro que deve ser melhorado para se manter o mesmo rendimento? 8. Derive uma fórmula para o parâmetro que deve ser melhorado, obtido no exercício anterior. 9. Usando a fórmula obtida no exercício anterior, qual é o melhoramento calculado para aquele parâmetro entre 1980 e 1992? 10. Defina o termo "Hierarquia de Memória" em um computador. Quais são os parâmetros e as heurísticas que devem ser considerados quando se deseja implementar uma hierarquia de memória em um computador? 11. Responda às seguintes perguntas: i) Considere uma memória RAM (Random Acess Memory = Memória de Acesso Aleatório). Explique porque este tipo de memória é de "acesso aleatório". Um disco magnético também é de acesso aleatório? Caso negativo, qual é o tipo de acesso? Porque? ii) Considere uma memória SRAM (RAM estática) e outra DRAM (dinâmica). Porque a memória SRAM é dita "estática"e a DRAM é dita "dinâmica"? Suponha que ambas as memórias foram concebidas na mesma tecnologia e cuja pastilha de silício apresente as dimenções de 1cm X 1cm. Neste caso: Qual das duas memórias armazena mais informação? Porque? Qual é a mais cara em termos absolutos (preço da pastilha)? Qual é a mais cara em termos relativos (preço/bit)? Qual é a mais rápida? 12. Defina Circuito Síncrono. Qual é a diferença entre um Circuito Combinacional Síncrono e um Circuito Sequencial Síncrono? Um microprocessador é um circuito Combinacional ou Sequencial? Porque? 9 13. No segmento do código C abaixo, f, g, h, i, j são variáveis. L1: L2: if (i == j) goto L1; f = g + h; i = i + 1; goto L2 f = g - h; i = i - 1; j = j + A[i]; Assuma que as 5 variáveis estão associadas aos registradores de $16 à $20 e que A é um array de 20 elementos, cujo endereço inicial na memória é Astart. Qual é o código assembler para o MIPS deste segmento de programa em C? 14. Assuma que as variáveis x, y, z estão associadas aos registradores $18, $19, $20. Assuma também que o registrador $17 contem o valor de index (variável i). Qual é o código assembler para o MIPS do seguinte comando em C: If (x != y) A[i] = z + A[i]; else z = z + A[i]; 15. Assuma que A é um array de 10 elementos cujo espaço de memória já foi alocado pelo compilador, e que o compilador associa as variáveis w, x, y, z aos registradores $17 à $20. Assuma também que o compilador associou o endereço Astart como o endereço inicial para o array na memória. Traduza o trecho de programa em C abaixo para o assembler do microprocessador MIPS: w = A[x]; y = A[ x += z]; if (w != y) goto L1; else goto L2; L1: w = A[x]; y = A[x -= z]; goto L3; L2: A[x += y] += y; L3: x+= z; 10 Capítulo 2 1. Você é um usuário de computador e quer comparar a performance de dois sistemas distintos: S1 e S2. O sistema S1 custa R$10.000 e o sistema S2 custa R$15.000. As seguintes medidas mostradas na Tabela 1 foram publicadas para estes sistemas. Programa 1 2 Tempo em S1 10 segundos 3 segundos Tempo em S2 5 segundos 4 segundos Tabela 1. Tempo de Execução. a) Diz-se que um sistema é mais custo-efetivo do que outro se o seu quociente de performance por custo é mais alto. Qual sistema é mais custo-efetivo para um usuário que utiliza somente o programa 1? Por quanto? b) Um outro usuário está interessado na capacidade de processamento de seu escritório, que utiliza igualmente os programas 1 e 2. Que sistema é mais custo-efetivo para este usuário? Por quanto? c) As seguintes medidas adicionais foram feitas para os sistemas S1 e S2 executando o programa 1. Programa 1 Instruções Executadas em S1 6 20 x 10 Instruções Executadas em S2 6 16 x 10 Qual o valor de MIPS para o programa 1 em cada uma das máquinas? d) Se a freqüência de clock do sistema S1 é de 20 Mhz e a freqüência de clock do sistema S2 é de 30 Mhz, qual o valor de CPI para o programa 1 nos dois sistemas? e) Se a CPI de S2 fosse a mesma de S1 (ver questão d), quantas instruções do programa 1 S2 executaria em 5s? f) Sabendo-se que o número de instruções em S1 para um programa 3 é de 55 x 106, qual deve ser o valor máximo do CPI para que este programa seja executado em um tempo de CPU igual ou menor que o do programa 1? 2. Considere duas máquinas M1 e M2. M1 possui uma freqüência de clock de 50 MHz e M2 possui uma freqüência de clock de 75 MHz. Ambas as máquinas possuem quatro classes de instruções: A, B, C e D. Os valores de CPI para cada classe de instrução para cada máquina são dados na tabela abaixo. Considere ainda que você está interessado em avaliar o desempenho destas máquinas para um programa cujas instruções estão uniformemente distribuídas entre as classes A, B, C e D. Considere também que o número de instrucões é o mesmo em ambas as máquinas. 11 Classe A B C D CPI em M1 1 2 3 4 CPI em M2 2 2 4 4 a) Qual máquina é mais rápida e por quanto? b) Se desejássemos que ambas as máquinas possuíssem o mesmo desempenho (que M2) para o programa mencionado acima, qual deveria ser a freqüência de clock de M1? c) Se desejássemos que ambas as máquinas possuíssem o mesmo desempenho (que M1) para o programa mencionado acima, qual deveria ser a freqüência de clock de M2? 3. Suponha que você tem dois microcomputadores PC (de fabricantes diferentes) cuja principal utilização é rodar duas planilhas de cálculos (uma em cada um dos PCs). Você sabe que na primeira planilha de cálculo, 25% do tempo de processamento é gasto em operações de ponto flutuante, enquanto que na segunda, este tempo é de 45%. Considere também que a planilha roda em 10s e que a segunda em 23s. Você vai ao shopping para comprar um novo coprocessador para operações em ponto flutuante para instalar em um dos seus 2 PCs, encontrando dois modelos diferentes: um coprocessador que acelera 5 vezes as operações em ponto flutuante, no caso do PC que roda a primeira planilha de cálculos; e um outro coprocessador, que acelera 3 vezes o tempo para executar as operações em ponto flutuante da máquina que roda a segunda planilha. Pergunta: Qual dos dois coprocessadores você deve comprar? Em outras palavras, qual deles vai gerar o maior speedup depois de instalado nos seus respectivos PCs? 4. Você está escrevendo o compilador C para uma nova máquina que será lançada brevemente no mercado. Para um determinado comando em C você criou duas sequências alternativas de instruções em assembler. A seqüência S1 executa 50 instruções e a seqüência S2 executa 60 instrucões. Todas as instruções executadas em qualquer das seqüências são de apenas 3 classes de instruções: A, B e C. Instruções da classe A executam em 1 período de clock. Instruções da classe B executam em 2 períodos de clock e instruções da classe C executam em 3 períodos de clock. As percentagens de instruções de cada classe executada por cada seqüência são dadas na tabela a seguir. Classe S1 S2 a) b) Percentagem de Instruções da classe na seqüência A B C 40% 20% 40% 60% 20% 20% Qual o CPI de cada seqüência de código? Qual seqüência de código executa mais rapidamente e por quanto? 5. Você está liderando o projeto de um novo processador. O projeto do processador e do compilador foram completados e você precisa decidir se você vai produzir este processador projetado ou se você vai gastar mais tempo para melhorá-lo. O seu grupo de engenharia lhe apresenta as seguintes opções: 12 i. Deixar o projeto como está. Vamos chamar esta máquina de Mbase. Ela possui um clock de 50 Mhz, e as medidas mostradas na Tabela 1 foram feitas utilizando um simulador. ii. Otimizar o hardware. O grupo de hardware garante que eles podem melhorar o projeto para que a máquina trabalhe com uma freqüência de clock de 60 Mhz. Vamos chamar esta máquina melhorada de Mótima. Um simulador foi utilizado para obter as medidas mostradas na Tabela 2 para Mótima. Tipo de Instrução CPI Freqüência A 2 40% B 3 25% C 3 25% D 5 25% Tabela 1. Medidas da máquina Mbase. a) b) c) Tipo de Instrução CPI Freqüência A 2 40% B 2 25% C 3 25% D 4 10% Tabela 2. Medidas da máquina Mótima. Qual a CPI para cada máquina? Quais os valores de MIPS nativa para Mbase e Mótima? Quantas vezes Mótima é mais rápida do que Mbase? d) O grupo de projetistas de compiladores ficou sabendo da discussão sobre o projeto melhorado. Este grupo propôs que o compilador da máquina fosse reprojetado para melhorar a performance. Vamos chamar esta máquina com compilador melhorado de Mcomp. As melhorias conseguidas com este novo compilador foram estimadas de acordo com a Tabela 3. Por exemplo, se a máquina base executa 500 instruções do tipo A, Mcomp executa o mesmo programa executando 0.9 X 500 = 450 instruções tipo A. Qual a CPI de Mcomp? Tipo de Instrução Percentagem de Instruções executada em relação à Mbase A 90% B 90% C 85% D 95% Tabela 3. Instruções Executadas em Mcomp. e) Quantas vezes Mcomp é mais rápida do que Mbase? f) O grupo projetista de compiladores afirma que é possível implementar tanto as melhorias de hardware de Mótima, quanto as melhorias de compilador de Mcomp na mesma máquina. Suponha que a máquina com as duas melhorias seja chamada de Mambas. (Utilizar a mesma otimização do compilador - Tabela 3 - em relação à Mótima.) Quantas vezes Mambas é mais rápida do que Mbase? g) O gerente de custos da empresa decidiu que apenas uma das melhorias poderá ser incorporada no produto final, ou as melhorias de hardware de Mótima ou as melhorias do compilador de Mcomp poderão ser implementadas. Você estima que os tempos mostrados na Tabela 4 serão necessários para implementar estas otimizações. Melhoria Tempo para implementar Nome da máquina Hardware 6 meses Mótima Compilador 6 meses Mcomp Ambas 8 meses Mambas Tabela 4. Tempo para implementar melhorias. 13 Você lembra ter lido em um jornal científico recentemente que as novas CPUs que tem sido lançadas no mercado apresentam uma melhoria de performance de aproximadamente 50% por ano, ou aproximadamente 3.4% por mês. Assumindo que a máquina base possui uma performance idêntica a dos seus competidores hoje, qual otimização você decidiria implementar? Seria mais vantajoso lançar a máquina no mercado imediamente sem nenhuma das modificações? 14 Capítulo 3 1. Um microprocessador consiste em um circuito seqüencial. Um circuito seqüencial pode ser descrito como um conjunto de registradores e uma lógica combinacional que gera os valores lógicos que devem ser armazenados neste conjunto de registradores a cada ciclo de clock. A freqüência máxima de clock na qual um microprocessador pode operar é determinada pela velocidade da lógica combinacional utilizada entre os registradores. Portanto é importante determinar o tempo de execução de cada circuito utilizado nesta lógica combinacional. Este tempo de execução é fortemente dependente da tecnologia utilizada para a fabricação do componente, e esta tecnologia muda substancialmente de um ano para outro. Uma prática comum é utilizar uma medida normalizada em unidades de tempo (ut). Para este exercício, considere os seguintes tempos para os circuitos elementares : • Cada porta lógica elementar, ou seja um E, um OU ou um INVERSOR possui um atraso de 1 ut. • Um circuito multiplexador possui dois níveis lógicos, portanto seu atraso é de 2 ut. • O tempo necessário para gerar a saída vai-um em um circuito somador elementar é de 2 ut. • O tempo necessário para gerar a saída soma em um circuito somador elementar é de 2 ut. a) No caso de uma soma, quanto tempo leva para gerar as saídas Vai-um e Resultado na ULA apresentada na fig. 3.8? b) Considere que a ULA de 32 bits da fig. 3.9 é construída com ULAs de 1 bit como a mostrada na fig. 3.8. Quanto tempo leva para efetuar uma soma de 32 bits? 2. Considere que uma operação de deslocamento à direita ou à esquerda leve 1 ut independentemente do número de bits no registrador em que ela ocorre e que a ULA leve 2 ut para somar tanto números positivos quanto negativos. Considere ainda os seguintes números A = 0001111000111 expressos em binário: B = 0010101010101 Indique na tabela abaixo quanto tempo (medido em unidades de tempo), as seguintes operações necessitam para serem realizadas se os algoritmos de multiplicação indicados forem utilizados. Operação AxB BxA Multiplicação 1 Alg. de Booth 3. Considere um computador cuja ULA opera com operandos de 32 bits. Marque com um x em cada linha da tabela abaixo para indicar se a operação especificada resulta em overflow quando realizada neste computador. Operação $7FFFFFF0 $000000FE Resulta Overflow + 15 Não Resulta Overflow $00FEdCBA $00100000 $80000001 $00000ABC + + 4. Considere a operação A x B onde A é o multiplicando e B o multiplicador, executada pelos algoritmos de Multiplicação 1 e Booth apresentados em aula. Para operações de multiplicação cujos operandos possuem 32 bits e que geram um produto de 64 bits. Escreva na tabela abaixo quantas operações de adição/subtração são executadas para os operandos indicados abaixo. Operandos Multiplicação 1 Alg. Booth A = $0F0F 0F0F 0F0F 0F0F B = $0000 FFFF 0000 0000 A = $0000 FFFF 0000 0000 B = $0F0F 0F0F 0F0F 0F0F 5. Considere um computador que representa números inteiros com sinal em palavras de 16 bits utilizando notação de complemento de dois. Qual é o maior número positivo e qual é o número negativo de maior magnitude que podem ser representados neste computador? Maior número positivo: Número mais negativo: 6. Nas operações indicadas abaixo, os operandos estão representados em complemento de 2. (a) $00000FFF + $00007FE0 (b) $0FFE07E0 + $0001F81F (c) $FFFF0001 - $FFFF0000 (d) $7FABCDE0 + $F0A3F4B5 Considere que estas operações devem ser realizadas em um processador que possui uma ULA de 32 bits. Os resultados das operações realizadas por esta ULA devem ser armazenados também em um registrador de 32 bits. Para cada operação indique se ocorre overflow. Se não ocorrer indique o resultado da operação em notação hexadecimal e decimal (apresente seus cálculos). 7. Qual a representação binária e decimal dos seguintes números representados abaixo em complemento de dois? a. $FFFFFE0C b. $FFFFFFFF c. $7FFFFFFF d. $7FFFFFFA e. $FFFFd001 f. $007FFFE0 16 8. Considere que o circuito apresentado na fig. 3.8 é utilizado para implementar uma ULA de 1 bit. Os atrasos através de portas lógicas são normalmente contados em ns. Assuma os seguintes atrasos para os componentes dos circuitos. • As portas lógicas elementares (E, OU e inversor) possuem um atraso de 10 ns. • O multiplexador de duas entradas possui um atraso de 20 ns. • O multiplexador de três entradas possui um atraso de 30 ns. • O somador elementar possui um atraso de 20 ns entre quaisquer entrada e saída. Considere que uma ULA de 16 bits seja construída pela concatenação de 16 ULAs de 1 bit implementadas com o circuito descrito acima. A arquitetura da ULA de 16 bits é similar a da fig. 3.9. Ao responder as perguntas abaixo, explique o raciocínio que você empregou para obter o resultado. (a) Quanto tempo leva para realizar uma soma na ULA de 16 bits? (b) Quanto tempo leva para realizar uma subtração na ULA de 16 bits? Capítulo 4 17 1. Quais são as possíveis causas de formação de “bolhas” em uma arquitetura em pipeline? Que técnicas estão disponíveis para reduzir o custo da formação de bolhas nestas arquiteturas? 2. Qual a diferença entre uma arquitetura “superpipeline” e uma arquitetura “superscalar”? É possível construir uma máquina que seja ao mesmo tempo superscalar e superpipeline? Caso afirmativo, como seria a organização desta máquina? 3. Um estagiário de engenharia projetou uma máquina para operar em pipeline com cinco estágios. Quando a máquina começou a operar, o estagiário terminou o seu estágio e abandonou a empresa sem deixar nenhuma documentação sobre o tempo de execução de cada estágio. Você inicia o seu estágio de informática nesta mesma empresa e seu supervisor solicita que você escreva um programa para determinar a latência da máquina. Para resolver o problema, você escreve dois trechos lineares de programa, isto é, trechos de programa que não possuem desvios, e nos quais você tem certeza que não existem dependências de qualquer natureza. O seu primeiro trecho de programa possui 500 instruções e executa em 50.4 ms (este é o tempo decorrido entre a busca da primeira instrução e o término da última instrução do programa). O seu segundo trecho de programa possui 1000 instruções e executa em 100.4 ms. Após assistir você realizando estes experimentos, o seu supervisor lhe pergunta: a. Qual a latência do pipeline? b. Qual é o tempo de execução do estágio mais lento deste pipeline? 4. Considere uma máquina em pipeline que utiliza previsão estática de que um branch nunca ocorre. Esta máquina possui os seguintes tempos de operação em cada estágio: 1. Busca de instrução: 30 ns 2. Decodificação de Instrução: 35 ns 3. Execução de Instrução: 80 ns 4. Acesso à Memória: 100 ns 5. Escrita em Registradores: 45 ns a) Qual a latência para execução de instruções nesta máquina? b) Qual o tempo perdido por causa do aparecimento de bolhas devido ao branch no final de um laço de 10 instruções que executa 10.000 vezes? Calcule a % na queda de desempenho. c) Qual seria o tempo perdido se a máquina utilizasse previsão estática de que o branch sempre ocorre? Qual seria a dificuldade adicional do projeto para implementar esta previsão? d) Qual a freqüência de execução de instruções nesta máquina? e) Responda a letra (b) para previsão dinâmica, supondo que o compilador setou um flag de que este desvio ocorre. f) Mesmo que em (e), porém previsão dinâmica para instrução que não ocorre. 18 g) A gerência de desenvolvimento solicitou que a freqüência de execução de instruções seja dobrada utilizando-se a mesma tecnologia. Para tanto decidiu-se transformar a máquina em uma máquina “superpipelined” aumentando-se o número de estágios no pipeline. Foi solicitado que se usasse um número mínimo de estágios na máquina superpipelined. Como você modificaria a máquina acima para alcançar o objetivo de dobrar a freqüência de execução de instruções? Qual seria a nova latência? Capítulo 5 19 1. Numa implementação simplificada de um chip de memória, são necessários no mínimo dois pinos para alimentação elétrica, usualmente chamados de Vcc e Gnd1, um v para indicar se a operação é de escrita ou leitura (WE), um sinal para selecionar o chip de memória (CS), e ainda um sinal para habilitar o chip de memória (ME), entre outros. Além destes sinais de alimentação e controle, o chip necessita ter um determinado número de linhas de dados e endereço de acordo com a sua configuração. Na tabela abaixo, indique o número mínimo de pinos que os chips com as configurações dadas podem ter. Indique também quantas linhas de endereço você utilizaria para endereçar row e column, e qual o número total de portas AND utilizadas nos decodificadores com a sua organização. Organização # Pinos Linhas para Row Linhas para Column # Portas AND Capacidade (bits) 4Mx4bits 1Mx4bits 2Mx8bits 256Kx16bits 16Mx1bit 512Kx8bits 2. Considere a implementação de um sistema de memória de 16 Mbytes organizado em palavras de 16 bits utilizando o chip µPD4216400 que possui uma organização de 4Mx4bits. Responda: a) Quantos chips são necessários? Projete os bancos de memória. b) Projete a organização do espaço de endereçamento de memória. c) Quais linhas de endereçamento devem ser usadas para selecionar os bancos de memória? Projete o multiplexador para os bancos supondo o sinal de chip select sendo ~CS. 3. Considere um chip de memória com organização de 64Mbytesx8bits. A equipe de projeto deste chip está considerando as configurações abaixo para o número de linhas de endereço utilizadas para o endereçamento de row e column. Indique na tabela a seguir o número total de portas AND que seriam usadas nos circuitos decodificadores do chip para cada configuração. Sabendo-se que este é um chip DRAM, e assumindo a configuração do decodificador de 13x13 abaixo, quantos transistores são necessários para implementar o array de células e a lógica de decodificação? Linhas de End. p/Row 13 14 15 Linhas de End. p/Column 13 12 11 1 # total de portas AND Em vários manuais de fabricante, você poderá verificar que muitos chips possuem mais de um pino para Gnd e Vcc. O uso de múltiplos pinos para alimentação é uma decisão feita pelos projetistas em função de restrições de layout interno. Nós vamos considerar que apenas dois pinos sejam necessários para alimentação. 20 4. Considere a implementação de uma memória com 32 Mbytes organizada em palavras de 8 bits utilizando o chip µPD4216800 que possui uma organização de 8Mx4bits. a) Quantos chips são necessários? b) Quais linhas de endereçamento devem ser usadas para selecionar bancos de memória? Capítulo 6 21 1. Porque a memória cache, sendo uma memória de muito pouca capacidade de armazenamento, consegue acelerar o processamento de uma CPU de forma tão efetiva? 2. Qual a diferença entre as técnicas de atualização de dados na cache “escrita através” (write through) e “escrita de volta” (write back)? Quais as vantagens e desvantagens de cada uma delas? 3. Considere um computador com uma memória principal de 16 Mbytes e uma cache de 64 Kbytes. Construa um gráfico com os valores do espaço de gerenciamento e do tamanho da cache (medido em bits) em função do tamanho do bloco da cache (considere blocos de 8, 16, 32, 64, 128, 256, 512 e 1024 bits). 4. Considere uma cache com mapeamento direto com 16 blocos. Cada bloco do tamanho de uma palavra. Considere que a seguinte seqüência de palavras é acessada: 1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17 (endereços expressos em decimal). Assuma que a cache está inicialmente vazia. Identifique cada um dos acessos acima como um acerto ou uma falha. Mostre o conteúdo de toda a cache ao final da seqüência de acessos. 5. Considere uma memória principal de 1MB e uma cache de 16 Kbytes, organizada em blocos com tamanho de 2 bytes. Qual o ÍNDICE e o TAG do bloco (expresso em hexadecimal) no qual o endereço 78FEC da memória principal é mapeado? 6. Considere uma cache de 64 Kbytes com mapeamento direto e organizada em blocos de 8 bytes, inserida em um computador com uma memória principal de 16 Mbytes. Quantos blocos da memória principal são mapeados em um mesmo bloco da cache? 7. Considere uma pastilha de memória estática utilizada para implementação de memória cache. Esta pastilha é organizada em blocos contendo 1 única palavra de 16 bits, e possui uma capacidade de 256 palavras. Considere que esta memória cache é usada com esquema de endereçamento completamente associativo em um sistema de memória cuja capacidade de 8K palavras. Especifique os valores relacionados abaixo. a) Capacidade da memória medida em bytes: ____________ b) Número de bits de endereço necessários para endereçar todas as palavras da memória:_________ c) Número de palavras da memória principal que podem ser mapeadas na mesma posição da cache:________ d) Suponha mapeamento direto na cache, e responda novamente a letra (c). e) Suponha mapeamento com associatividade 2 na cache, e responda novamente a letra (c). 22 8. Considere uma cache de 4Kbytes, organizada em blocos de 8 bytes e operando em um computador que possui uma memória principal de 4 Mbytes. a) Quantos blocos da memória principal podem ser mapeados no bloco $0010 da memória cache? b) Quantos bits os campos de etiqueta (tag) e índice (index) esta cache possui? c) Qual o valor do campo de etiqueta (tag) do byte armazenado no endereço $001A BCDE da memória principal? 9. Considere um sistema computacional baseado em microprocessador com uma memória principal de 16 Mbytes e uma memória cache de 4 Kbytes. Assuma que a cache é organizada em blocos de 16 bits, que o mapeamento da memória principal para a memória cache é direto, isto é, que existe uma única posição possível na cache para cada palavra armazenada na memória principal, e que o processador trabalha com palavras de 1 byte. Assuma também que os seguintes valores estão armazenados nas posições especificadas da memória principal. 15 $07F300 $07F302 $07F304 $07F306 $07F308 $07F30A $07F30C $07F30E 0 15 0 $7A8B $080300 $048C $1AB300 15 0 $FAFA $8B9C $080302 $159D $1AB302 $FOFO $9CAD $080304 $26AE $1AB304 $DED0 $ADBE $080306 $37BF $1AB306 $DAD0 $BECF $080308 $48C0 $1AB308 $F0CA $CFD0 $08030A $59D1 $1AB30A $FACE $D0E1 $08030C $6AE2 $1AB30C $CAFE $E1F0 $08030E $7BF3 $1AB30E $C0C0 A figura a seguir mostra uma porção da memória cache. Os valores numéricos nos campos de índice, tag e validade estão expressos em binários. No campo de dados os valores estão expressos em números hexadecimal. Índice 0011 0000 000 0011 0000 001 0011 0000 010 0011 0000 011 0011 0000 100 Tag 0000 0111 1111 0110 1000 0100 0000 1001 0000 0000 1100 0000 0001 1010 1011 23 V 0 0 0 0 0 15 0 Dados $FAFA $FOFO $DED0 $DAD0 $F0CA 0011 0000 101 0011 0000 110 0011 0000 111 0001 1010 1011 0001 1010 1011 0001 1010 1011 1 $FACE 1 $CAFE 1 $C0C0 a) Indique abaixo o conteúdo dos campos de Tag, Validade e Dados na cache após uma seqüência de acessos de leitura nos endereços abaixo. Indique os valores de Tag e Validade em números binários e o campo de Dados em hexadecimal. $07F302, $07F304, $07F306, $080304, $080304, $07F308, $1AB30A, $1AB30C, $07F302 Índice 0011 0000 000 0011 0000 001 0011 0000 010 0011 0000 011 0011 0000 100 0011 0000 101 0011 0000 110 0011 0000 111 15 V Dados Tag 0 b. Quantos acessos de leitura à memória principal são feitos durante a seqüência de acessos acima? Explique. Capítulo 7 24 1. Porque que não é possível utilizar a técnica de “escrita através” na implementação de sistemas de memória virtual? 2. Qual a grande vantagem de um microprocessador que contém uma TLB? 3. Porque a técnica de escrita-através (write-through) não é compatível com a implementação de sistemas com memória virtual? 25