Baixe o app para aproveitar ainda mais
Prévia do material em texto
COLECÇÃO DE PROBLEMAS RESOLVIDOS DE ELECTRÓNICA DE COMPUTADORES MESTRADO EM ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES Leonel Augusto Pires Seabra de Sousa Francisco André Corrêa Alegria 16 de Dezembro de 2011 i Conteúdo PROCESSADORES ................................................................................................................................................... 1 Caminho de Dados ................................................................................................................................................ 3 Processador para Calcular a Potência de um Número .......................................................................................... 6 Processador para Implementar a Função Exponencial ....................................................................................... 10 UNIDADES ARITMÉTICAS E LÓGICAS .................................................................................................................... 15 Somador Carry Select .......................................................................................................................................... 17 Somador Carry Lookahead e Ripple‐carry ........................................................................................................... 21 Somador Misto .................................................................................................................................................... 25 Registo de Deslocamento .................................................................................................................................... 30 Multiplicador Ripple‐Carry .................................................................................................................................. 33 Multiplicador Série .............................................................................................................................................. 40 Algoritmo de Booth ............................................................................................................................................. 46 MEMÓRIAS .......................................................................................................................................................... 49 Plano de Memória Aumentando o Número de Bits por Palavra ......................................................................... 51 Largura de Banda de Memória ............................................................................................................................ 54 Plano de Memória com Intercalagem Simples .................................................................................................... 64 Memória Tampão com 512 bytes ....................................................................................................................... 67 Memória Tampão Separadas para Dados e Código ............................................................................................ 69 Memória Tampão Associativa de 2 Vias .............................................................................................................. 72 Memória Tampão de um Processador AMD Athlon ........................................................................................... 76 Memória Tampão de um Processador Intel Pentium 4 ....................................................................................... 82 BARRAMENTOS ................................................................................................................................................... 87 Terminação Thevenin com Díodo........................................................................................................................ 89 Terminação com Díodo de Zener ........................................................................................................................ 94 Terminação Thevenin com Condensador ............................................................................................................ 96 Terminação Activa com AMPOP .......................................................................................................................... 98 Terminação Activa com AMPOP e Transístor .................................................................................................... 101 ii 1 CAPÍTULO 4 Processadores “Nothing is particularly hard if you divide it into small jobs.” HENRY FORD 2 3 1 Caminho de Dados ENUNCIADO Assuma que tem um conjunto de registos ligados por um barramento, conforme mostra a figura abaixo. Todos os registos são edge-triggered no flanco positivo e os registos R2 e O têm saídas tri- state. Todos os barramentos são de 4 bits. Pretende-se executar a seguinte sequência de operações: (1) calcular R1 −R0, colocando o resultado em R2. (2) mostrar o resultado nos LEDs ligados ao registo O e (3) substituir o valor de R0 com este resultado. 1. Descreva todas as operações de transferência de registos e respectivas micro-operações suportadas por este circuito de dados. 2. Descreva as formas de onda para todos os sinais de controlo necessários à implementação desta sequência de operações. 3. Descreva o diagrama de estados que corresponde às formas de onda descritas na alínea anterior. RESOLUÇÃO Alínea 1 Passo 1 – Para calcular R1-R0 é necessário colocar R1 na entrada A do subtractor e R0 na entrada B. Isso é feito colocando 1 na linha de controlo do muliplexer da entrada A e 0 na linha de controlo do multiplexer da entrada B. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 4 Passo 2 – O resultado é colocado no registo R2 activando-se a sua entrada de carregamento de dados (sinal LD). Passo 3 – Os dados armazenados em R2 são colocados no barramento activando-se a saída desse registo (sinal OE) par que posteriormente sejam escritos no registo O. Passo 4 – Os dados que se encontram no barramento (provenientes de R2) são escritos no registo O que está ligado aos leds. Isso é feito activando-se a entrada de carregamento (sinal LD) do registo O. Ao mesmo tempo os dados no barramento são escritos no registo R0 activando-se a entrada de carregamento deste registo. Passo 5 – Os leds mostram o resultado quando a saída do registo O for activada (linha OE). Alínea 2 O diagrama temporal dos sinais é o seguinte. Escolheu-se retornar todos os sinais a zero no fim da execução. Alínea 3 5 6 2 Processador para Calcular a Potência de um Número ENUNCIADO Considere que pretende projectar um processador dedicado para cálculo da equação z = xy, em que x, y e ready são entradas do processador, e z e done são saídas. 1. Apresente o algoritmo e o respectivo FSMD. 2. Projecte o controlador (FSM) e o caminho de dados data-path (D) para implementação do processador (basta apresentar o diagrama de estados e o diagrama do caminho de dados, incluindo registos e unidades funcionais). 3. Considerando aritmética em complemento para dois, apresente o diagrama de blocos de um multiplicador série de 8 x 8!bits baseado no algoritmo de Booth. Indique a largura dos barramentos e calcule o tempo requerido para calcular 34, considerando um período de relógio de 50 MHz. RESOLUÇÃO Alínea 1 O algoritmo para o cálculo de consiste em multiplicar x por si próprio y – 1 vezes. É usada a variável a para guardaro resultado dos produtos sucessivos e a variável n para contar o número de vezes que falta efectuar multiplicações. Inicialmente o número de multiplicações necessárias é igual a y - 1. Cada vez que se efectua uma multiplicação esse valor é decrementado de uma unidade. 0: int a, n; 1: while (1) { 2: while(!ready); 3: done = 0; 4: a = x_i; 5: n = y_i; 6: n = n – 1; 7: while( n>0 ) { 8: a = a * x; 9: n = n - 1; } 10: z_o = a; 11: done = 1; } Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 7 A FSMD (finite state machine with datapath) obtém-se do algoritmo. Alínea 2 O datapath contém os registos e unidades funcionais. Neste caso são precisos registos para as variáveis a e n e para guardar o valor final (z). Em relação às unidades funcionais é preciso unidades para a multiplicação, para decrementar uma unidade a um valor e para verificar se um número é maior do que zero. É necessário também um multiplexer para seleccionar o que é guardado no registo a – a variável de entrada x_i ou o resultado de uma multiplicação e outro multiplexer para seleccionar o que é guardado no registo n – a variável de entrada y_i ou o resultado da decrementação. 8 A máquina de estados finita do controlador obtém-se da FSMD substituindo as variáveis e funções pelos sinais de controlo dos dispositivos existentes no datapath. 9 Neste caso obtém-se uma máquina de estados com 14 estados. O controlador precisa portanto de um registo de 4 bits para armazenar o estado actual. Alínea 3 O período de um sinal de relógio de 50 MHz é 20 ns. São precisas realizar 3 multiplicações. Cada multiplicação de 3 por 3 (0000 0011) necessita de uma subtracção e uma adição (no inicio e no fim da sequência de 1s respectivamente). Se considerarmos que essas operações demoram um ciclo de relógio e que o resto não demora nada (deslocamentos e escrita nos registos) o tempo necessário para calcular 34 é 3 2 20 = 120 ns. 10 3 Processador para Implementar a Função Exponencial ENUNCIADO Considere que pretende projectar um processador dedicado para cálculo da função exponencial usando a aproximação por série de Taylor: 0 ! kN x k xe k em que x é uma variável de entrada. 1. Proponha um algoritmo que permita o cálculo da função exponencial. 2. Apresente o FSMD correspondente ao algoritmo proposto. 3. Projecte o controlador (FSM) e o caminho de dados data-path (D) para implementar o processador (basta apresentar o diagrama de estados e o diagrama do caminho de dados, incluindo registos e unidades funcionais). 4. Considerando uma frequência de relógio de 100 MHz, e que uma multiplicação demora 40ns, calcule o tempo requerido para calcular uma aproximação do valor duma exponencial com N = 5. RESOLUÇÃO Alínea 1 O algoritmo para o cálculo da série de Taylor usa uma variável (a) para acumular o valor do somatório. O primeiro termo do somatório e 1 e portanto não precisa ser calculado. Basta inicializar a variável a com 1. 2 3 0 1 ... ! 2 6 ! k NN x k x x x xe x k N O somatório é então calculado a partir de k igual a 1 até N (que vale 5 no algoritmo apresentado). Não se considera que N seja uma variável de entrada. Cada termo do somatório é igual ao anterior (d) multiplicado por x (devido a xk) e dividido por k devido ao factorial. Como o cálculo do somatório começa com k =1 as variáveis a (valor do somatório) e d (valor do termo anterior do somatório) são inicializadas com o valor 1. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 11 Alínea 2 A FSMD (finite state machine with datapath) obtém-se do algoritmo. Alínea 3 O datapath contém os registos e unidades funcionais. Neste caso são precisos registos para as variáveis a, d e n e para guardar o valor final (z). Em relação às unidades funcionais é preciso unidades para a multiplicação, para a divisão, para a soma, para incrementar e para testar se um valor é menor ou igual a 5. É necessário também um multiplexer para seleccionar o que é 0: int a, d, k; 1: while (1) { 2: while(!ready); 3: a = 1; 4: d = 1; 5: k = 1; 6: while( k <= 5 ) { 7: d = d * x; 8: d = d / k; 9: a = a + d; 10: k = k + 1; } 11: z_o = a; } 12 guardado no registo a – a variável de entrada x_i (0) ou o resultado da soma (1), outro multiplexer para seleccionar o que é guardado no registo k – a constante 2 (0) ou o resultado da incrementação (1) e um outro multiplexer, com 3 entradas e dois sinais de controlo, para seleccionar o que é guardado no registo d – o resultado da divisão (00), a variável de entrada (01) ou o resultado da multiplicação (10). A máquina de estados finita do controlador obtém-se da FSMD substituindo as variáveis e funções pelos sinais de controlo dos dispositivos existentes no datapath. 13 Neste caso obtém-se uma máquina de estados com 11 estados. O controlador precisa portanto de um registo de 4 bits para armazenar o estado actual. 14 15 CAPÍTULO 3 Unidades Aritméticas e Lógicas “In science one tries to tell people, in such a way as to be understood by everyone, something that no one ever knew before. But in poetry, it's the exact opposite.” PAUL DIRAC 16 17 4 Somador Carry Select ENUNCIADO A figura abaixo representa um somador do tipo carry select para um processador de 16 bits. Cada um dos blocos indicados representa um somador de 8 bits, ligados entre si da forma que a figura indica. Cada um dos somadores de 8 bits é composto de 8 somadores de 1 bit, ligados em cadeia (ripple carry adders). Assuma que cada porta lógica com duas entradas impõe um atraso de 3 ns e que o multiplexer da figura impõe um atraso de 10 ns. 1. Descreva brevemente o funcionamento do somador de 16 bits, indicando como são ligados os pontos X e Y. 2. Determine o tempo necessário para este somador calcular a soma de dois números de 16 bits. Indique quaisquer simplificações que considere necessárias. 3. Determine a tabela de verdade e proponha uma implementação com gates NOR para o bloco combinatório marcado com C. 4. Descreva a realização de um somador deste tipo que some inteiros de 16 bits mas use 4 blocos somadores (ripple carry adders) de 4 bits cada. Determine o tempo necessário para o cálculo da adição no somador projectado. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 18 RESOLUÇÃO Alínea 1 Os 8 bits menos significativos são calculados em paralelo com os 8 bits mais significativos. De modo a que este últimos possam ser calculados sem se esperar pelo carry vindo de trás o somador admite duas hipóteses: carry igual a 0 (X = 0) e carry igual a 1 (Y = 0). Para os 8 bits mais significativos são portanto efectuadas, também em paralelo, 2 somas. O resultado final par esses 8 bits mais significativos é escolhido usando um multiplexer controlado pelo sinal de carry proveniente do cálculo da soma dos 8 bits menos significativos. Alínea 2 Cada somador de 8 bits é constituído por 8 somadores completos de 1 bit. Esses somadores podem ser implementados como indicado na figura abaixo. Como é ditono enunciado que todas as portas de duas entradas impõem um atraso de 3 ns, mesmo as portas ou exclusivo, o tempo de propagação para o bit de soma é de 6 ns (2 x 3 ns)e o tempo de propagação para o bit de carry é de 9 ns (3 x 3 ns). No caso do somador de 8 bits, o caminho crítico é o cálculo do 8º bit pois cada somador completo tem de esperar pelo carry vindo do bit anterior (somador ripply-carry). Assim sendo a soma de 8 bits demora 69 ns (7 x 9 + 6) correspondente ao tempo de propagação do bit de carry durante os primeiros 7 bits mais o tempo de propagação do 8º bit de soma. O tempo de propagação do bit de carry final é de 72 ns (8 x 9) devido à propagação através de 8 somadores completos de bit. 19 Em relação ao somador de 16 bits, passados 72 ns desde o inicio do cálculo, todas os bits de soma estão calculados (pois demoram no pior caso 69 ns) e também está disponível o bit de carry vindo proveniente da soma dos 8 bits menos significativos. Falta portanto a selecção dos 8 bits mais significativos efectuada pelo multiplexer, o que demora 10 ns. Assim sendo o tempo total para determinação dos 16 bits de soma é de 82 ns (72 + 10). Alínea 3 O bloco C determina o bit de carry final a partir dos bits de carry vindos dos dois somadores usados para os 8 bits mais significativos. Isso é feito com um multiplexer controlado pelo bit de carry proveniente do somador de 8 bits usado para os 8 bits menos significativos. O bloco C é portanto um multiplexer com duas entradas ( 16 xc e 16Yc ) e uma saída 8 16 8 16X Yc c c C c . Esta função lógica pode ser construída unicamente com portas NOR: 8 16 8 16X Yc c c C c . A tabela de verdade é a seguinte c8 cX16 cY16 c 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 20 Esta função pode ser implementada da seguinte forma: Alínea 4 Passados 36 ns (4 bits x 9 ns) desde o inicio do cálculo, todas os bits de soma e de carry de cada somador de 4 bits estão calculados. A partir daí cada multiplexer demora 10 ns até ter a sua saída actualizada. Assim sendo, o tempo total para determinação dos 16 bits de soma é de 66 ns (36 + 3 x 10). 21 5 Somador Carry Lookahead e Ripple-carry ENUNCIADO Considere o somador de 16 bits da figura abaixo, que representa um circuito somador que usa uma técnica mista de carry lookahead e ripple-carry. Cada um dos pequenos blocos assinalados com um C representa um circuito somador (fulladder) de 1 bit. 1. Quais são os sinais gerados pelos blocos C e propagados para os blocos do tipo B? 2. Proponha realizações ao nível de porta lógica para cada uma das saídas dos blocos do tipo B. 3. Proponha realizações ao nível de porta lógica para cada uma das saídas dos blocos do tipo A. 4. Admitindo que todas as portas lógicas impõem um atraso de 3 ns, qual o tempo mínimo necessário para garantir que este somador opere correctamente? Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 22 RESOLUÇÃO Alínea 1 Os blocos C geram sinal de propagação e geração. i i i i i i p a b g a b . Alínea 2 Os blocos B recebem os sinais de geração e propagação de cada bit e produzem um sinal de geração e um sinal de propagação para um dado grupo de bits (4 bits). A soma de um grupo de 4 bits gera um transporte se a soma do último bit gerar um transporte (g3 = 1) ou se a soma do penúltimo bit gerar um transporte e esse transporte propagar-se pela soma do último bit (g2p3), ou se esse transporte for gerado no bit 1 e propagar-se pelos bits 2 e 3 (g1p2p3) ou, finalmente, se esse transporte for gerado no bit 0 e propagar-se pelos outros 4 bits (g0 p1p2p3). Tem-se assim, para o bit de geração do grupo 0-3 por exemplo, 0,3 3 2 3 1 2 3 0 1 2 3 G g g p g p p g p p p . Quanto à propagação, um bit de transporte propaga-se através de um grupo se se propagar através de cada uma das somas de bit. Tem-se assim, mais um vez como exemplo para o grupo 0-3, 0,3 0 1 2 3 P p p p p . A realização do bloco B ao nível de porta lógica é a seguinte: 23 Alínea 3 Os blocos do tipo A combinam os bits de geração e propagação de 2 grupos de bits. O bloco A do lado direito do esquema, por exemplo, combina os bits do grupo 0-3 e do grupo 4-7 gerando bits de propagação e geração para o grupo 0-7. 0,7 4,7 0,3 4,7 0,7 0,3 4,7 G G G P P P P . Para além disso os blocos do tipo A calculam o bit de transporte de saída do primeiro grupo a partir do transporte de entrada nesse grupo. O bloco A da direita, por exemplo, calcula o bit de transporte C4 a partir do bit de transporte c0 e dos bits de geração e propagação G0,3 e P0,3 respectivamente: 4 0,3 0 0,3C G c P . Esta expressão significa que o bit de transporte de saída do grupo 0-3 é 1 se for gerado no grupo 0-3 (G0,3) ou se entrar nesse grupo (c0) e propagar-se através dele até à sua saída (P0,3). A realização do bloco A ao nível de porta lógica é a seguinte: Alínea 4 Para determinar o tempo mínimo para este somador há que determinar o atraso provocado pelos blocos C. Para isso há que obter as expressões lógicas realizadas por este bloco. Como foi referido na alínea 1 este bloco determina os bits de propagação e geração de bit dados por i i i i i i p a b g a b . 24 Para além disso determinam o bit de soma i i i is a b c e o bit de transporte 1i i i i i i ic a b a c b c . Observando estas funções lógicas podem determinar o tempo de atraso para cada uma das 4 saídas tendo em atenção que cada porta lógica impõe um atraso de 3 ns. A tabela seguinte apresenta esses atrasos não só para o bloco C mas também para os blocos A e B. Bloco Saída Atraso A P 3 ns A G 6 ns A C 6 ns B P 3 ns B G 6 ns C g 3 ns C p 3 ns C s 3 ns C c 6 ns O caminho crítico do somador é o apresentado na figura. Ao longo do caminho crítico está indicado o atraso sofrido pelos sinais em cada bloco. O atraso total é portanto 48 ns. 25 6 Somador Misto ENUNCIADO Considere o somador de 8 bits apresentado na figura abaixo, que faz parte do datapath de um processador dedicado. Este processador baseia-se numa técnica mista de carry select, carry lookahead e ripple carry. Cada um dos blocos assinalados com um C representa um somador completo (FA) de 1 bit. 1. Explique sucintamente o funcionamento do somador indicando o valor lógico dos sinais X e Y. Apresente, na forma de equação ou diagrama, o bloco do tipo D. 2. Proponha uma implementação para os blocos C e D e MUX com base em portas lógicas (NOT, AND, OR, XOR) com o máximo de 3 entradas. Calcule o tempo de soma, considerando que uma porta lógica impõe um atraso de 1 ns. 3. Proponha um somador de 16 bits baseado no somador de 8 bits da figura acima. Nas condições da alínea anterior, calcule o tempo de soma e compare esse tempo com o de um somador do tipo ripple carry de 16 bits. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 26 RESOLUÇÃO Alínea 1 Cada conjunto de 4 blocos do tipo C implementa um somador ripple carry de 4 bits. Os dois somadores ripple carry do lado esquerdo determinam os bits soma s4 a s7 usando uma filosofia carry select, isto é, efectuam duas somas considerando que o bit decarry que vem de trás vale 0 ou vale 1 (entradas X e Y). O multiplexer é depois usado para escolher qual das duas somas corresponde ao valor correcto tendo em conta o bit de carry que vem de trás calculado pelo bloco D da direita. Esse cálculo é efectuado usando a filosofia carry lookahead, isto é, o valor do carry é calculado directamente a partir dos bits das duas palavras a somar (e de um carry que eventualmente venha de trás). O bloco D da esquerda determina o carry de saída do somador a partir do carry c4 e dos bits das palavras de entrada a4 a a7 e b4 a b7. Quanto à implementação do bloco D da direita, o carry c4 será 1 se for gerado na soma do bit 3 ou se for gerado na soma do bit 2 e propagado através da soma do bit 3, ou se for gerado na soma do bit 1 e propagado através da soma dos bits 2 e 3 ou finalmente se for gerado na soma do bit 0 e propagado através da soma dos outros 3 bits seguintes. Tem-se assim 4 3 2 3 1 2 3 0 1 2 3c g g p g p p g p p p , em que i i i i i i g a b p a b . No caso do bloco D da esquerda a estrutura interna é igual ao bloco D da direita sendo no entanto calculado o carry c8: 8 7 6 7 5 6 7 4 5 6 7 4 4 5 6 7c g g p g p p g p p p c p p p p . Note-se que neste caso há que ter em conta a chegada de um carry vindo de trás (c4) e que pode-se propagar até ao fim. Alínea 2 O bloco C é um somador completo que pode ser implementado tendo que cada porta com 3 entrada ou menos tem o mesmo tempo de propagação de 1 ns: 1i i i i i i i i i i i c a b a c b c s a b c . O diagrama de blocos é portanto o seguinte: 27 Usando as equações para a função lógica do bloco D apresentadas na alínea anterior tem-se o seguinte diagrama de blocos para o bloco D da direita (que não tem nenhum carry vindo de trás): e o seguinte diagrama de blocos para o bloco D da esquerda: 28 Quanto ao multiplexer a equação lógica é ' ''i i is sel s se l s , e o diagrama de blocos é o seguinte: 29 O caminho critico é o do cálculo do s7. Para efectuar esse cálculo é preciso que o multiplexer tenha o valor da sua entrada de controlo que vem da saída do bloco D da direita que demora 4 ns. É preciso também que as entradas s7’ e s7’’ estejam disponíveis o que acontece passados 7 ns que é 3 vezes o tempo de cálculo do carry pelos somadores completos (2 ns) mais o tempo de cálculo da soma (1 ns). Aos 7 ns já o sinal saída da porta NOT do multiplexer está disponível, o que aconteceu aos 5 ns (4 ns do bloco D e 1 ns da porta NOT). Assim deporá só mais 2 ns até s7 estar disponível. O tempo total para cálculo da soma é pois de 9 ns. O tempo para o cálculo do carry de saída é de 6 ns (4 ns para cada bloco D da direita e mais 2 ns para as duas portas entre c4 e c8 no bloco D da esquerda). Alínea 3 30 7 Registo de Deslocamento ENUNCIADO Considere o seguinte circuito electrónico, geralmente designado por barrel shifter. B3 B2 B1 B0 A0 A1 A2 A3 S1 S2 S3 S0 S2 S3 S0 S1 S3 S0 S1 S2 S0 S1 S2 S3 1. Explique sucintamente o funcionamento do circuito. 2. Indique, para todas as combinações úteis dos valores de S3...S0, a relação entre os valores das saídas B3...B0 e os das entradas A3...A0. 3. A partir da análise realizada anteriormente, proponha um barrel shifter para deslocamentos lógicos para a direita, entre 0 e 3 posições, de números de 4 bits. Proponha um barrel shifter para deslocamentos para a esquerda, entre 0 e 3 posições, de números de 4 bits. 4. Apresente um circuito com funcionalidade equivalente ao da alínea anterior mas baseado em circuitos lógicos de multiplexagem. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 31 RESOLUÇÃO Alínea 1 Este circuito efectua o deslocamento aritmético para a direita de uma palavra de 4 bits de 1, 2 ou 3 posições. A activação de uma das linhas de controlo (Sh0 a Sh3) leva a que alguns dos transístores passem a conduzir conectando certas entradas a certas saídas. Alínea 2 A relação entre as saídas (B) e as entradas (A) é a seguinte. S3 S2 S1 S0 B3 B2 B1 B0 0 0 0 1 A3 A2 A1 A0 0 0 1 0 A3 A3 A2 A1 0 1 0 0 A3 A3 A3 A2 1 0 0 0 A3 A3 A3 A3 Alínea 3 Nos deslocamentos lógicos as posições que ficam vazias são preenchidas com 0. Assim sendo o 6 transístores do canto superior esquerdo passam a estar ligados à massa em vez de estarem ligados a A3. 32 Alínea 4 O circuito para realizar deslocamentos aritméticos para a esquerda pode ser obtido a partir do circuito que realiza esses deslocamentos para a direita trocando a ordem dos bits da entrada e dos bits da saída. B0 B1 B2 B3 A3 A2 A1 A0 S1 S2 S3 S0 S2 S3 S0 S1 S3 S0 S1 S2 S0 S1 S2 S3 Alínea 5 O circuito para efectuar deslocamentos aritméticos para a esquerda de 0 a 3 posições usando multiplexers é o seguinte. A palavra S determina o número de posições deslocadas. 33 9 Multiplicador Ripple-Carry ENUNCIADO Considere o multiplicador para números positivos de 4 bits esquematizado na figura abaixo. Admita que os somadores da figura são do tipo ripple-carry, e que cada somador de um bit impõe um atraso de 1 ns. Admita ainda que cada porta lógica de não mais que 3 entradas impõe um atraso de 0,5 ns. 1. Indique como são ligados os pontos X, Y e Z. 2. Determine o atraso que decorre entre estarem disponíveis os dados de entrada e estarem válidos os valores de saída. 3. Para o caso geral em que se pretendem multiplicar números de m bits (multiplicando) por n bits (multiplicador) determine o número de somadores de um bit necessários e qual o atraso na resposta do sistema. 4. Altere a estrutura apresentada de forma a utilizar somadores do tipo carry save, e indique, para essa estrutura, o tempo de atraso. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 34 RESOLUÇÃO Alínea 1 O produto de dois números de 4 bits consiste na determinação de diferentes parcelas (4) que são deslocadas e somadas como ilustra a figura. As portas AND no topo do esquema determinam os produtos parciais da parcela 1 e 2 que são depois adicionadas pelo somador imediatamente abaixo. Esse somador, de 4 bits, vai somar os termos a sombreado na seguinte figura: Por essa razão uma das entradas do somador A é 0 – é o bit mais significativo da 1ª parcela. Conclui-se assim que as entradas do somador são, da direita para a esquerda, a1b0, a0b1, a2b0, a1b1, a3b0, a2b1, 0 e a3b1. O termo Y é portanto o termo a0b1. 35 O somador B vai adicionar o resultado do somador de topo com a 3ª parcela do produto. As entradas desse somador são portanto as seguintes: em que sx são as saídas do somado A e c4 é o carry out desse somador. O termo X é portanto o produto parcial a3b2 (determinado com uma porta AND e os bits a3 e b2 das palavras de entrada do multiplicador). Finalmente o somador C vai adicionar o resultado desta soma com a 4ª parcela do produto: As entradas desse somador são portanto as seguintes: 36 O sinal Z é portanto o termo a0b3. Alínea 2 Os somadores são do tipo ripple-carry, ou seja, a soma de cada bit só pode ser efectuada quando o transporte devido à soma do bit anterior (menos significativo)tiver sido calculado. A figura seguinte mostra o diagrama de blocos desse somador indicando o tempo de atraso que se considera ser de 1 ns para a determinação do bit de soma e para a determinação do bit de transporte. Considerando esse tempo de atraso para a soma de 1 bit pode-se determinar o instante de tempo em que cada sinal fica válido: 37 Conclui-se assim que o tempo necessário para o cálculo da multiplicação é de 8,5 ns. Alínea 3 O número de parcelas é igual ao número de bits do multiplicador. São precisos, portanto, n-1 somadores ripple-carry. Cada um desses somadores tem de somar m bits (número de bits do multiplicando). Assim sendo são precisos m x (n-1) somadores de 1 bit. O percurso crítico para o cálculo do produto é, por exemplo, o seguinte: 38 O atraso total é dado pela soma de 3 termos: o atraso na porta AND (0,5 ns); o atraso através dos dois primeiros somadores de bit em cada somador ripple-carry com excepção do último. Como há n-1 somadores ripple-carry o atraso em nanossegundos é 2 x (n - 2); o atraso dentro do último somador ripple-carry que é de m x 1 ns. Assim sendo o atraso total, em nanossegundos, é de 0,5 + 2 x (n – 2) + m, ou seja 2n + m – 3,5. Facilmente se verifica que para o caso particular deste exercício, em que n = m = 4, tem-se 2 x 4 +4 – 3,5 = 8,5 ns . Alínea 4 A arquitectura do somador carry save é a seguinte. 39 O tempo de atraso consiste em 3 termos: o atraso nas portas AND (0,5 ns); o atraso ao descer os níveis que é, em nanossegundos, de 1 x (n – 1); o atraso dentro do último nível que é de 1 x (m – 1). Assim sendo o atraso total, em nanossegundos, é de “0,5 + n – 1 + m – 1” que é igual a “n + m – 1,5”. Comparando com o multiplicador do enunciado verifica-se que este tem um tempo de atraso menor para n > 3 e que essa diferença se torna mais significativa quanto maior o número de bits do multiplicador pois neste caso o atraso é proporcional a n e no outro caso é proporcional a 2n. 40 10 Multiplicador Série ENUNCIADO Considere o multiplicador de raíz 2 para números inteiros de 8 bits em notação de complemento para dois apresentado na figura abaixo. Neste multiplicador, o registo que guarda o produto é sincronizado pelo flanco ascendente do sinal de relógio que tem uma frequência de 100 MHz. Assuma que no flanco de relógio que corresponde a t = 0 o registo P é carregado nas posições apropriadas com o valor do multiplicador e que o cálculo de cada bit do resultado requer 2 ciclos de relógio, um para carregar o registo e outro para efectuar o deslocamento. 1. Indique a largura em bits de todos os barramentos indicados e dos registos da figura. Descreva a função dos sinais Desloca para a direita e Grava do registo P. 2. Descreva os conteúdos do registo P em t = 19 ns, t = 29 ns e t = 69 ns quando este circuito é usado para multiplicar o número 17 (multiplicando) por 5 (multiplicador). 3. Desenhe o diagrama de estados do controlador. 4. Indique que modificações no circuito de dados serão necessárias para implementar um multiplicador de raíz 4. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 41 RESOLUÇÃO Alínea 1 A largura dos registos e dos barramentos está indicada na figura seguinte. Em cada passo o registo P é deslocado para a direita de uma posição. Esse deslocamento tem duas funções. Por um lado serve para que o módulo de controlo tenha acesso a cada um dos bits do multiplicador a começar do menos significativo já que inicialmente o multiplicador é carregado na metade direita do registo P. A outra função é a de deslocar a soma acumulada das várias parcelas do produto para a direita. Isso é equivalente a deslocar-se o multiplicando para a direita como se faz quando se efectua a multiplicação usando papel e lápis. O sinal Grava serve para indicar ao registo quando deve armazenar os dados provenientes da ALU. Alínea 2 Inicialmente a metade direita do registo P é carregada com o valor do multiplicador, 0000 0101 (510). A evolução do registo P é a seguinte. 42 A evolução temporal dos sinais de relógio, Grava e Desloca para a direita é a seguinte. Em t = 19 ns tinha já ocorrido a gravação da primeira soma mas ainda não se tinha dado o deslocamento subsequente. O valor do registo P nessa altura era de 0001 0001 0000 0101. Em t = 29 ns tinha já ocorrido o deslocamento e portanto o valor do registo P nessa altura era de 0000 1000 1000 0010. Em t = 69 ns tinha já ocorrido a segunda soma e o deslocamento seguinte. Portanto o valor do registo P nessa altura era de 0000 1010 1010 0000. Alínea 3 43 O funcionamento do multiplicador pode ser dividido em 3 estados: Grava – a gravação da palavra proveniente da ALU na metade esquerda do registo P; Desloca – o deslocamento do conteúdo do registo P para a direita de uma posição; Nada – não é feito nem o deslocamento nem a gravação. No cálculo de cada bit é efectuado sempre o deslocamento. A gravação só é efectuada se o valor do bit menos significativo do registo P for 1 (sinal p que entra no controlador). A indicação para que seja efectuado um deslocamento é dada através do sinal d do controlador e a indicação para que o registo P seja carregado é dada pelo sinal g de saída do controlador. As transições de estado dão-se nos flancos descendentes do relógio de modo a que os sinais de saída estejam válidos aquando do flanco ascendente do relógio que é quando o registo P executa as operações. É por essa razão que se escolheu representar os flancos dos sinais de gravação e deslocamento no diagrama temporal da alínea 2 coincidentes com os flancos negativos do relógio. Note-se que na prática as transições dos sinais de controlo ocorreriam um pouco depois dos flancos negativos do relógio devido ao tempo de atraso entre a ocorrência de um flanco no registo de estado do controlador, a mudança do valor da saída desse registo e a lógica combinatória necessária para produzir esses sinais dado o estado actual do controlador. Neste caso particular, uma escolha apropriada dos valores usados para representar os estados permite dispensar essa lógica combinatória e usar como sinais de saída (d e g) directamente as saídas do registo de estado. Essa escolha é: Estado Valor da variável de estado Nada 00 Desloca 01 Grava 10 Assim sendo o sinal d é o bit menos significativo da variável de estado e o sinal g é o bit mais significativo. 44 Por outro lado há que ter em atenção que o valor do bit menos significativo do registo P, que é o sinal de entrada p do controlador, tem de estar válido um pouco antes do flanco descendente do relógio já que ao passar pela lógica combinatória do controlador a caminho do registo de estado sofrerá um atraso. A tabela de verdade do controlador é a seguinte. A variável Q representa o estado actual e a variável I o estado seguinte. Q1 Q0 p I1 I0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 0 X X 1 1 1 X X Estas duas funções podem ser determinadas utilizando mapas de Karnaugh. Obtém-se assim 1 0 0 0 I Q p I Q . É possível agora desenhar o diagrama de blocos do controlador. 45 I1 I0 p Q0 Q1 d g Lógica combinatória Registo de estado Relógio Controlador Alínea 4 Um circuito multiplicador de raiz 4 analisa 2 bits do multiplicadorde cada vez. Seriam assim precisas duas linhas a ligar os dois bits menos significativos do registo P ao controlador. As 4 combinações possíveis desses dois bits determinam a operação a realizar, que pode ser não fazer nada (00), somar o multiplicando ao acumulador, isto é, à metade esquerda do registo P (01), somar o dobro do multiplicando (10) o que pode ser feito acrescentando um registo para armazenar o valor do multiplicando deslocado de 1 bit para a esquerda e somar o triplo do multiplicando (11). Este último caso é mais complicado para pode ser implementado, por exemplo, somando o multiplicando e somando o dobro do multiplicando ao acumulador. 46 11 Algoritmo de Booth ENUNCIADO Considere que se pretende implementar um multiplicador de palavras de 8 bits representadas em complemento para dois utilizando o algoritmo de Booth. 1. Ilustre o algoritmo de Booth raiz de 2 apresentando o desenrolar do cálculo para um multiplicando M=2810!e um multiplicador m= -1310. 2. Apresente uma arquitectura que permita realizar os algoritmos de Booth raízes de 2 e 4, indicando os caminhos de dados, os registos e a largura dos barramentos. 3. Considerando que utiliza apenas portas lógicas de 2 entradas com um tempo de atraso de 1ns, apresente um possível somador a utilizar e indique a frequência máxima a que pode operar o multiplicador. Ignore o tempo de estabelecimento dos registos e indique qualquer outra simplificação considerada. 4. Indique como integraria o circuito proposto numa ALU de 8 entradas que realiza também as funções aritméticas de adição e de divisão e a operação lógica ou exclusivo. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 47 RESOLUÇÃO Alínea 1 48 Alínea 2 Alínea 3 49 CAPÍTULO 5 Memórias “Every science begins as philosophy and ends as art.” WILL DURANT 50 51 12 Plano de Memória Aumentando o Número de Bits por Palavra ENUNCIADO Pretende-se desenvolver um sistema de processamento usando um processador com comprimento de palavra de 16 bits (com acesso apenas a palavras completas) e com uma capacidade de 4 MB, supondo que tem disponíveis SIMMs de 72 pinos MT8D25632: 1. Diga qual o número de SIMMs necessário para a realização do sistema; 2. Considerando intercalagem simples, apresente um diagrama que ilustre a organização dos módulos de memória, indicando os respectivos sinais de controlo; 3. Apresente um mapa de memória com indicação da posição dos vários módulos, considerando que o endereço de base é 0; Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 52 RESOLUÇÃO Alínea 1 Cada SIMM tem 1 MB de capacidade (256 kwords de 32 bits cada). São portanto precisos 4 SIMMs para criar uma memória com 4 MB. Alínea 2 Cada SIMM possui 8 circuitos integrados de memória DRAM (MT4C4256DJ) com 256 kwords e 4 bits de comprimento de palavra. O módulo SIMM disponibiliza para o exterior duas linhas RAS que permitem aceder às linhas das memórias DRAM só de metade dos circuitos integrados (4). Assim é possível usar 4 dessas memórias DRAM para produzir uma palavra de 16 bits para o plano de memória desejado. As 2 metades de cada uma das 4 DRAMs permitem obter um espaço de endereçamento 8 vezes superior ao de cada DRAM, isto é, um espaço de endereçamento e 2 Mwords. Como cada palavra tem 16 bits obtemos uma memória com 4 MB como desejado. Para endereçar separadamente cada DRAM e dentro destas cada metade, usa-se um descodificador para 3 dos bits de endereço (23 = 8) controlado pela linha de RAS do nosso plano de memória. Os bits de endereço são os 3 menos significativos para garantir que palavras consecutivas no espaço de memória encontram-se em memórias DRAM diferentes (intercalagem simples). Os restantes 8 bits de endereço são ligados em paralelo a todos os módulos SIMMs. De notar que dentro desses módulos os endereços são também ligados em paralelo a cada circuito integrado de memória DRAM. As linhas de controlo CAS e WE são também ligadas em paralelo a todos os módulos SIMM já que a sua activação numa dada memória DRAM quando a linha RAS está inactiva não tem qualquer influência. Assim sendo só a DRAM cuja linha RAS foi activada (por intermédio do descodificador 3:8 usado) é que prestará atenção ao nível desses sinais de controlo (CAS e WE). O plano de memória tem 4 MB de capacidade com palavras de 16 bits o que corresponde a 2 Mwords. São necessários portanto 21 bits de endereço. Os 3 bits menos significativos, como se viu, são usados no descodificador para determinar que metade dos 4 SIMS são acedidos. Os outros 18 bits têm de ser separados em duas metades, uma para o endereço de linha e outra para o endereço de coluna dentro de cada DRAM. Como se observa na folha de especificação dos módulos de memória, cada SIMM recebe 9 linhas de endereço que são usadas ora para fornecer o endereço da linha ora para fornecer o endereço da coluna consoante ocorre um flanco descendente dos sinal RAS ou do sinal CAS. O sinal CAS é assim usado para controlar um multiplexer que escolha 9 bits dos 18 bits mais significativos do endereço de memória. 53 Alínea 3 54 13 Largura de Banda de Memória ENUNCIADO Pretende-se projectar um sistema de memória dinâmica baseado em circuitos integrados do tipo MT16D232 numa organização com um único plano de memória. O sistema deve dispor de um total de 32 MB, organizados em palavras de 32 bits. O controlador de memória é síncrono com o processador e o relógio utilizado tem uma frequência de 125 MHz. 1. Esboce a organização do sistema de memória, indicando como são ligadas as linhas de endereço, de dados e de controlo de cada circuito integrado. Assuma que existe um bloco que gera os sinais com as temporizações de RAS e CAS adequadas. 2. Calcule a máxima largura de banda (memory bandwidth) que se pode obter com este sistema, supondo que todas as transferências são efectuadas em blocos de 32 bytes e ignorando o tempo de refrescamento da memória. Deve justificar o resultado obtido, esboçando, se necessário, as formas de onda associadas à transferência dum bloco. 3. Assuma agora que o refrescamento é efectuado pelo controlador utilizando ciclos do tipo CAS before RAS. Nestas condições, determine de novo o valor máximo da largura de banda da memória. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 55 56 57 58 RESOLUÇÃO Alínea 1 Cada SIMM, como se pode ver na folha de especificações, possui 16 circuitos integrados de memória DRAM (MT4C4001J) com 1 Mword e 4 bits de comprimento de palavra. Tem uma mega palavras porque têm 10 linhas de endereço que são usadas alternadamente para endereçar a linha e a coluna. Imagina-se então uma disposição quadrada para grupos de 4 células de memória – 1024 (1010) linhas por 1024 colunas. Estimam-se que sejam grupos de 4 células de memória pois cada DRAM tem 4 linhas de dados para o exterior. Quanto ao controlo da memória, embora haja uma linha de RAS e uma de CAS para cada circuito integrado DRAM (16 RAS e 16 CAS o todo), para o exterior do módulo SIMM só há 4 linhas deRAS e 4 de CAS. Isto significa que essas linhas que são acessíveis do exterior controlam simultaneamente mais do que uma DRAM (4 circuitos integrados de cada vez, neste caso). As 4 linhas RAS, por exemplo comandam ao mesmo tempo as 4 DRAMs de cada fila no diagrama de blocos apresentado na folha de especificações: 1 linha RAS para U1, U2, U3 e U4 (RAS0), outra para U5, U6, U7 e U8 (RAS2), outra para U9, U10, U11 e U12 (RAS1) e outra para U13, U14, U15 e U16 (RAS3). Da mesma forma as 4 linhas CAS comandam simultaneamente as DRAM U1, U2, U9 e U10 (CAS0), U3, U4, U11 e U12 (CAS1), U5, U6, U13 e U14 (CAS2), U7, U8, U15 e U16 (CAS3). Estas combinações permitem usar a mesma SIMM para construir diferentes planos de memória. No caso do presente exercício pretendem-se palavras de 32 bits. Há portanto que usar 8 DRAMs de cada SIMM para construir uma palavra. Como a SIMM tem 16 DRAMs, é possível ter 2 palavras de 32 bits para cada valor de endereço da SIMM (linhas A0-A9). A selecção entre uma ou outra palavra é feita activando simultaneamente as linhas de comando RAS0 e RAS2 (para uma palavra) ou RAS1 e RAS3 (para a outra palavra que partilha o mesmo endereço). Cada SIMM pode ser encarada, portanto, como tendo 2 mega palavras de 32 bits. Para se construir o plano de memória desejado com 32 MB, ou seja 8 mega palavras de 32 bits (8 M x 4 bytes = 32 MB), são precisas 4 SIMMs. As 4 SIMMs encaradas como tendo duas metades cada (metade de cima e metade de baixo do diagrama de blocos da SIMM) perfazem 8 blocos que são activados através das seguintes linhas de controlo: RAS0/RAS2 da SIMM1 RAS1/RAS3 da SIMM1 RAS0/RAS2 da SIMM2 RAS1/RAS3 da SIMM2 RAS0/RAS2 da SIMM3 RAS1/RAS3 da SIMM3 RAS0/RAS2 da SIMM4 RAS1/RAS3 da SIMM4 59 Estas linhas de controlo são activadas uma de cada vez de acordo com os endereços da memória total. Como o plano de memória tem de ter 8 M palavras de 32 bits cada, são necessárias 23 linhas para endereçar essas palavras (223 = 8 M palavras). Como nada é dito no enunciado do exercício sobre o uso de intercalagem, admite-se que não se usa intercalagem e portanto serão usados os 3 bits mais significativos da palavra de endereço (A20 a A23) para, através de um descodificador 3:8, activar as 8 linhas de RAS dos módulos SIMMs. Esse descodificador recebe na sua entrada de habilitação (enable) o sinal RAS gerado pelo controlador de memória. Assim, enquanto o sinal RAS estivar desactivado (nível alto) nenhuma das saídas está activada (nível alto). Quando o sinal RAS for activado então uma das saídas, consoante os bits de endereço, será activada. As restantes 20 linhas de endereço são multiplexadas em 2 conjuntos de 10 linhas para fornecimento às SIMMs (e DRAMs nelas contidas) para indicação da linha e coluna a activar. Esse multiplexer é controlado pelo sinal geral de CAS. Relembre-se que o protocolo de acesso à memória DRAM consiste em: 1) colocar no barramento de endereços o endereço da linha, 2) activar o sinal RAS, 3) colocar no barramento de endereços o endereço da coluna e 4) activar o sinal CAS depois de passado um certo tempo mínimo do flanco descendente do sinal RAS (RAS to CAS delay time: tRCD). Assim sendo, quando deve estar no barramento de endereços o endereço da linha, o sinal CAS está no nível alto e portanto o multiplexer coloca na sua saída as linhas de endereço A10 a A19 que são usadas para indicar a linha. Quando o sinal CAS é activado (nível baixo) o multiplexer coloca na sua saída as linhas de endereço A0 a A9 que são usadas para indicar a coluna. Note- se que esta escolha não podia ser ao contrário porque palavras de memória pertencentes a endereços consecutivos devem estar armazenadas na mesma linha de modo a por ser usar o modo rápido de página em que um conjunto de palavras, chamadas de página, podem ser acedidas activando unicamente a linha CAS com o endereço de coluna apropriado no barramento de endereços sem ter que se activar e desactivar a linha de RAS entre cada acesso, o que torna o procedimento mais lento devido à necessidade de pré-carga e equalização das linhas. Note-se ainda que em algumas memórias os endereços devem estar no barramento um certo tempo antes das linhas de RAS ou CAS serem activadas. Assim sendo, e como no plano de memória proposto os endereços de coluna só estão na linha depois de o multiplexer os seleccionar o que só é feito depois do sinal CAS ser activado, é preciso introduzir um atraso no sinal CAS entre a entrada do multiplexer e a entrada das SIMMs de modo a que a transição acabe por acontecer, na perspectiva da memória DRAM, depois dos endereços estarem no barramento. Isso pode ser feito introduzindo no caminho do sinal CAS duas ou mais (em número par) portas lógicas NOT. No presente exercício considera-se que isso não é necessário. 60 As linhas de controlo CAS e WE são também ligadas em paralelo a todos os módulos SIMM já que a sua activação numa dada memória DRAM quando a linha RAS está inactiva não tem qualquer influência. Assim sendo só a DRAM cuja linha RAS foi activada (por intermédio do descodificador 3:8 usado) é que prestará atenção ao nível desses sinais de controlo (CAS e WE). O controlador de memória é responsável por gerar os sinais RAS e CAS para as SIMMs com a temporização adequada. A interface que apresenta para o exterior, isto é, para o CPU, consiste nas linhas de relógio, de leitura/escrita, de selecção do dispositivo (chip select) e linha de READY para indicação de quando a operação está concluída. Essa interface é igual quer se trata de uma memória SRAM ou DRAM. Esse aspecto é transparente para o processador bem como o facto de existir ou não memória tampão (cache), por exemplo. 61 Alínea 2 A máxima largura de banda consegue-se através do uso do modo de página rápido. Nesse modo vários bytes da mesma linha podem ser transferidos sem ter que se fornecer individualmente o endereço de linha. Observando o diagrama temporal fornecido na folha de especificações da memória para o caso de uma leitura usando o fast-page-mode, conclui-se que a leitura de, por exemplo, um bloco de 32 bytes requer: 1) a colocação do endereço de linha no barramento de endereços; 2) a activação do sinal RAS; 3) a colocação do endereço de coluna no barramento de endereços; 4) a activação do sinal CAS; 5) a leitura dos dados presentes no barramento de dados; 6) a desactivação da linha CAS; 7) a repetição dos passos 3 a 5 para a leitura de cada um dos 32 bytes. Depois de 32º flanco descendente do sinal CAS há que desactivar o sinal RAS de modo a se poder começar a transferir outro bloco repetindo-se as mesmas operações. A activação e desactivação dos sinais de controlo, nomeadamente do sinal RAS e do sinal CAS, requerem que se cumpram intervalos de tempo mínimos consoante o indicado na folha de 62 especificações da memória. Vamos considerar nesta resolução que se usa a versão “-6” dos módulos de memória. O sistema de memória a construir utiliza um controlador síncrono com o processador. Isto significa que o controlador executa uma máquina de estados finita havendo lugar a uma transição de estado a cada ciclo de relógio. Como a frequência desse relógio é, neste caso, 128 MHz, as transições de estado acontecem, no mínimo, intervaladas de 8 ns (1/125 s). Os sinais de saída do controlador ligados às SIMMs são portanto alterados de cada vez que se entra num novo estado. Isso implica que o intervalo mínimo entre dois flancos do mesmo ou de sinais diferentes é de 8 ns. Tendo em conta esta resolução temporal e os tempos mínimos impostos pela memória, há que determinar o número de ciclosde relógio (transições de estados da máquina de estado finita do controlador) a utilizar entre os diferentes flancos dos sinais de controlo (RAS e CAS). Considera-se que o início da transferência acontece quando o sinal RAS é activado (flanco descendente). Entre esse flanco e o flanco descendente do sinal CAS tem que existir um intervalo de tempo igual ou superior a 20 ns (tRCD – RAS to CAS delay). Isso corresponde portanto a 3 ciclos de relógio pois 3 x 8 ≥ 20. De seguida há que activar o sinal CAS que deve manter-se activo durante 15 ns (tCAS – CAS pulse width) o que corresponde a 2 ciclos de relógio. De seguida o sinal CAS é desactivado e tem que se manter desactivado durante 10 ns (tCP – CAS precharge time) o que corresponde também a 2 ciclos de relógio. Esses dois tempos levariam a crer que o ciclo de activação e desactivação do sinal CAS (necessário para transferir cada byte) poderia ocupar unicamente 4 ciclos de relógio. Há, no entanto, que ter em atenção que a folha de especificações indica que deve ocorrer um intervalo mínimo de 35 ns entre activações consecutivas do sinal CAS (tPC – FAST-PAGE-MODE READ or WRITE cycle time). Isso corresponde a 5 ciclos de relógio. Escolheu-se portanto usar 3 ciclos de relógio para o intervalo de tempo que o sinal CAS está desactivado e 2 ciclos para o intervalo de tempo em que está activado. Depois do 32º flanco descendente do sinal CAS, quando é realizada a leitura do 32º byte, há que desactivar o sinal RAS. O tempo que deve passar entre uma coisa e outra é de 15 ns (tRSH – RAS hold time). Isso corresponde a 2 ciclos de relógio. Finalmente, para voltar a activar de novo o sinal RAS por forma a dar início à transferência de mais um bloco de dados, há que esperar 40 ns (tRP – RAS precharge time). Isso traduz-se em mais 5 ciclos de relógio. O número de ciclos de relógio a usar para cada fase da leitura dos dados está resumido no diagrama temporal apresentado (3-3-2-2-5). Note-se que o 2º e o 3º número nesta sequência são repetidos 31 vezes para transferência do byte 0 ao byte 30. O tempo total necessário para a leitura de um bloco de 32 bytes, em ciclos de relógio, é portanto 3 3 2 31 2 5 165 ciclosN . 63 Em segundos isso equivale a 1320 ns (165 x 8). Conseguem-se assim transferir 32 bytes a cada 1320 ns. Isso equivale à transferência de 24,24x106 bytes por segundo. A largura de banda é portanto 23,12 MB/s (24,24x106 / 1024 / 1024). Alínea 3 Observando o diagrama CBR Refresh Cycle da folha de especificações, conclui-se que o refrescamento de uma linha necessita de pelo menos 40 ns durante o qual o sinal RAS está inactivo (tRP – RAS precharge time), o que corresponde a 5 ciclos de relógio, e mais 60 ns durante o qual o sinal RAS está activo (tRAS – RAS pulse width) o que corresponde a pelo menos 8 ciclos de relógio. Ao todo são preciso pois 13 (5 + 8) ciclos de relógio o que corresponde a 104 ns. O refrescamento das 1024 linhas que a memória DRAM tem demora portanto 13312 (13 x 1024) ciclos de relógio (106,496 s). Segundo o fabricante esse refrescamento tem de ser executado pelo menos uma vez em cada 16 ms. Há então que planear como esse tempo é usado para transferir dados (blocos de 32 bytes) e para efectuar o refrescamento. Em 16 ms existem 2 milhões de ciclos de relógio. Retirando os 13312 que são necessários para o refrescamento sobram 1986688 ciclos. Tendo em conta que a transferência de 32 bytes requer 165 ciclos de relógio, conseguem-se efectuar 12040 transferências de bloco (1986600 ciclos de relógio). Ficam a sobrar 2000000 – 13312 – 1986600 = 88 ciclos de relógio. A transferência dos 1204 blocos de dados mais o refrescamento das 1024 linhas demora 1999912 (1986600 + 13312) ciclos de relógio, ou seja, 15,999296 ms. Nesse período de tempo conseguem-se transferir 385280 bytes. A largura de banda é pois de aproximadamente 24081059 bytes/s, ou seja, 22,97 MB/s. 64 14 Plano de Memória com Intercalagem Simples ENUNCIADO Pretende-se realizar um plano de memória para um processador de 32 bits. O plano de memória deve conter 1 MB e usar intercalagem simples, e usar circuitos integrados HM511664-8 (65536 x 16 bits, tRAS = 100 ns, tCAS = 20 ns). O controlador de memória é síncrono com um relógio de 40 MHz e deve gerar um sinal de ready, seguindo o protocolo de full-handshake indicado abaixo. 1. Projecte o sistema de memória, indicando o número de circuitos integrados necessário, e explicitando como são ligadas as linhas de endereço, dados e controlo. 2. Esboce as formas de onda geradas pelo controlador num acesso em modo leitura a uma palavra isolada de um dos bancos de memória. 3. Assumindo que a fracção de acessos intercalados é 70%, indique a máxima taxa de transferência que é possível obter neste sistema de memória quando não é feito uso do fast-page-mode. 4. Desenhe o diagrama de estados do controlador de memória que corresponde às formas de onda apresentadas na figura. Por simplicidade, considere apenas os estados e sinais envolvidos no controlo de um dos bancos de memória. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 65 RESOLUÇÃO Alínea 1 Como cada circuito integrado tem 128 KB são necessários 8 desses circuitos para construir uma memória com a capacidade de 1 MB. Como o tamanho de palavra desejado é de 32 bits e cada circuito integrado tem 16 linhas de dados é necessário associar os 8 circuitos integrados em 4 ranks de 2 circuitos cada como ilustra a figura. Cada um desses ranks tem um barramento de dados de 32 bits e tem uma capacidade de armazenamento de 65535 palavras, ou seja, 256 KB. Cada um dos ranks é seleccionado através de um sinal RAS proveniente de um descodificador 2:4 que recebe 2 das 18 linhas de endereços e é habilitado pelo sinal RAS global. As 2 linhas usadas correspondem aos bits menos significativos de forma a ter-se intercalagem do espaço de memória. Ao todo são necessários 18 bits de endereço de forma a endereçarem-se as 256 kpalavras da memória total (4 bytes por palavra). De forma a fornecer às memórias DRAM o endereço de linha e de coluna, é necessário usar um multiplexer que, das 16 linhas de endereços restantes, selecciona 8 consoante o sinal CAS. Isso é necessário porque os circuitos integrados de memória só têm 8 linhas de endereços. As linhas de comando CAS e UW, LW e OE são ligadas em paralelo a todos os circuitos integrados. 66 Alínea 2 67 20 Memória Tampão com 512 bytes ENUNCIADO Considere uma memória tampão associativa de dimensão 512 bytes, com 2 vias e blocos de 32 bytes. Esta cache está integrada num sistema que pode endereçar 232 bytes, podendo cada byte ser endereçado individualmente. 1. Descreva quais os bits de endereço usados para endereçar o bloco da memória tampão e quais os bits usados para endereçar dentro do bloco. 2. Determine o tamanho das etiquetas (tags) guardadas na memória tampão. 3. Usando como blocos básicos comparadores, descodificadores, registos, multiplexers e buffers tri state, esboce os circuitos desta memória tampão envolvidos em operações de leitura. Nesta descrição, considere que os registos têm uma única entrada de controlo, &/ , e que têm as saídas em alta impedância quando não estão seleccionados. Descreva sempre a largura, em bits, de cada linha de dados ou endereços que utilizar mas ignore quaisquer circuitos necessários para a escrita de dados na memória tampão. A figura abaixo mostra exemplos de blocos que pode utilizar.RESOLUÇÃO Alínea 1 Na memória associativa com 2 vias existem 8 conjuntos de 32 bytes por via cada perfazendo os 512 bytes da memória tampão (2 x 8 x 32 = 512). São portanto precisos 5 bits para endereçar dentro do bloco (25 = 32) e 3 bits para endereçar o bloco (23 = 8). Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 68 Alínea 2 As etiquetas têm o mesmo número de bits que o endereço de memória (32) menos os bits usados para endereçar os blocos (3) e dentro dos blocos (5). Assim sendo sobram assim 24 bits para a etiqueta (32 – 3 – 5 = 24). Alínea 3 Os circuitos internos desta memória tampão são os seguintes: 69 22 Memória Tampão Separadas para Dados e Código ENUNCIADO Considere um processador que possui caches separadas para dados e código do tipo bloqueante e que, na ausência de falhas na cache, executa uma instrução por ciclo de relógio. A cache de dados é de 64 KB, usa blocos de 32 bytes, mapeamento directo e write-through com um tampão de escrita (write-buffer). Um acesso à cache demora um ciclo de relógio, a transferência de um bloco entre a memória e a cache demora 18 ciclos de relógio e uma escrita em memória de uma palavra demora 4 ciclos de relógio. 1. Descreva qual a importância do tampão de escrita numa cache que use write-through. 2. Suponha que 10% das instruções são escritas e que o tampão de escrita nunca enche. Nestas condições, calcule o número médio de ciclos por instrução (CPI) do processador quando a taxa de sucesso na memória tampão (hit-rate) é de 90%. Ignore qualquer efeito da memória tampão de código. 3. Nas condições da alínea anterior, qual é a taxa de ocupação do barramento de memória? 4. Suponha que, mantendo-se a taxa de sucesso da alínea anterior, a percentagem de escritas se eleva para 30%. Calcule a nova taxa de ocupação do barramento e o novo CPI do processador. RESOLUÇÃO Alínea 1 Na estratégia write-through os dados provenientes do processador são escritos na memória tampão e na memória principal. É usado um tampão de escrita (write buffer) para não ter que se esperar que a memória principal acabe de escrever os dados. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 70 O tampão de escrita é normalmente do tipo FIFO (first in – frist out). Esta estratégia funciona bem se a frequência de escrita for muito menor do que o inverso do tempo de ciclo da memória principal, caso contrário o tampão de escrita enche. Alínea 2 A existência de 10% de escritas implica que há 90% de leituras. Em 10% das instruções o tempo que demora o acesso à memória é de 1 ciclo. Note-se que, devido ao uso de um tampão de escrita, a leitura e a escrita na memória tampão, usando a estratégia de write-through, demora sempre 1 ciclo de relógio. Nos outros 90%, em que há leitura, pode acontecer os dados estarem na memória tampão ou não. No primeiro caso o tempo gasto é só um ciclo de relógio enquanto no segundo caso o tempo gasto é de 18 ciclos de relógio pois os dados têm que ser lidos da memória principal (mais lenta). Alínea 3 Os dados escritos, embora “custem” ao processador só um ciclo de relógio, devido ao uso de um tampão de escrita, são eventualmente transferidos desse tampão para a memória principal ocupando o barramento de memória durante 4 ciclos de relógio. No caso da leitura, só quando à falha na memória tampão (10% das vezes) é que é preciso ler os dados da memória principal, o que demora 18 ciclos de relógio. 71 O tempo em que o barramento de memória está ocupado, em média, é portanto de 2,02 ciclo por instrução: TOB = 0,1 x 4 + 0,9 x 0,1 x 18 = 2,02 ciclos por instrução escrita leitura Número de ciclos que demora a escrever na memória principal Percentagem de escritas Percentagem de leituras Percentagem de falhas Número de ciclos que demora a ler da memória principal Tempo de ocupação do barramento A taxa de ocupação do barramento obtém-se dividindo este valor pelo CPI obtendo-se 79,8%. Alínea 4 Repetindo os cálculos efectuados anteriormente tem-se A taxa de ocupação e portanto 2,22 / 2,46 = 110,8%. Isto significa que o processador tem que esperar pelo barramento de memória sendo portanto o número efectivo de ciclos por instrução de 2,46 e não de 2,22. 72 23 Memória Tampão Associativa de 2 Vias ENUNCIADO Considere um CPU com uma memória tampão interna com uma dimensão de 16 KB, associativa de duas vias e com blocos de 32 bytes. A memória tampão utiliza as estratégias write back e write allocate. Assuma também que a memória tampão é utilizada num sistema com um espaço de endereçamento de 232 bytes, onde cada byte é endereçável individualmente. 1. Descreva a organização da memória tampão. Indique a utilização dos diferentes bits de endereço. 2. Determine o número de comparadores e o número de bits utilizados na memória tampão, incluindo quaisquer bits de controlo que julgue necessários. 3. Pretende-se analisar o desempenho da cache na execução do seguinte segmento de código: static int local[1024]; // Inteiro representado por 32 bits int init_n_sum (char inp[]) { register int k, sum=0; for (k = 0; k < 1024; k = k+2) { local[k] = inp[k]; } for (k = 0; k < 512; k = k+2) { sum += local[k]; } return sum; } Assuma que o compilador não executa quaisquer optimizações ao código, que as entradas da memória tampão são inicialmente inválidas e que o endereço base dos arrays local e inp é respectivamente, 0x0010 0000 e 0x000E 0000. Nestas condições, e durante a execução da função init_n_sum, calcule: a) O número de bytes transferidos da memória principal para o bloco CPU/memória tampão. b) O número de bytes transferidos do bloco CPU/memória tampão para a memória principal. 4. Indique as alterações à resposta da alínea anterior assumindo que a memória tampão utiliza as estratégias write through e write not allocate. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 73 RESOLUÇÃO Alínea 1 Na memória associativa com 2 vias existem 256 conjuntos de 32 bytes por via cada perfazendo os 16 KB da memória tampão. São portanto precisos 5 bits para endereçar a palavra dentro de conjunto (25 = 32) e 8 bits para endereçar o conjunto (28 = 256). Sobram assim 19 bits para a etiqueta (32 – 5 – 8 = 19). Alínea 2 São usados dois comparadores de 19 bits cada. Além dos bits de armazenamento propriamente ditos existem vários bits de controlo. Esses bits são usados para as etiquetas (19 por conjunto e por via), para registo da validade dos dados armazenados (1 por conjunto por via) e para indicação de qual das vias foi usada há mais tempo. A estratégia usualmente adoptada em memórias associativas com duas vias é a técnica least recently used (LRU) em que a escolha da via a usar para a escrita de um novo bloco é aquela que foi usada há mais tempo. Para implementar essa estratégia basta um bit por conjunto e por via que indica se dada via é ou não a que foi usada há mais tempo. Assim que há um acesso a um bloco de memória o bit LRU desse conjunto e via é colocada a 0 e o bit correspondente da outra via é colocado a 1. 74 O número de bits de controlo necessários é portanto (19 + 1 + 1) x 2 x 256 = 21 x 2 x 256 = 10752. Como os bits de armazenamento são 131072 (2 x 256 x 32 x 8)o número total de bits da memória tampão é 141824. Alínea 3 Na estratégia write back os dados são guardados só na memória tampão. Só quando precisam de ser descartados da memória tampão é que são enviados para a memória principal. A estratégia write allocate consiste em, quando se pretende escrever um dado na memória e esse dado não está já na memória tampão, transferi-lo primeiro da memória principal para a memória tampão (um bloco inteiro de dados) e depois então escrever o novo dado na memória tampão. No primeiro ciclo os elementos o vector inp são lidos um a um e escritos no vector local. Para cada iteração do ciclo o elemento inp[k] é lido a memória principal e transferido para o CPU/memória tampão pois essa memória está vazia. Esse valor lido é depois de novo enviado para a memória (para a posição local[k]), no entanto, como é usada a estratégia de write back, esse valor é só escrito, para já, na memória tampão. Note-se que embora inp[k] e local [k] tenham endereços diferentes na memória principal eles são armazenados no mesmo endereço dentro da memória tampão pois os 13 bits (8 + 5) menos significativos dos seus endereços são iguais. Acontece que a memória tampão tem duas vias. Assim sendo o elemento inp[k] é lido para uma via enquanto que o elemento local[k], que tem que ser transferido da memória principal para a memória tampão antes de poder ser escrito nesta, devido ao uso da estratégia de write allocate, será armazenado na outra via que estava, até então, vazia. Durante o primeiro ciclo são portanto transferidos da memória principal para a memória tampão 2 vezes (inp e local) 1024 elementos (só são utilizados metade desses elementos mas como a transferência é feita por blocos de bytes consecutivos todo o vector é transferido). Enquanto os elementos de inp ocupam 1 byte (tipo char) os de local ocupam 4 bytes (tipo int). Assim sendo o número total de bytes transferido é de 5120 bytes (5 KB). Durante o segundo ciclo 256 elementos do vector local são lidos da memória (512 elementos com saltos de 2 em 2). Como já tinham sido lidos no ciclo anterior encontram-se todos na memória tampão, não havendo portanto origem a transferência de dados da memória principal para a memória tampão. No total tem-se portanto 5 KB da memória principal para o CPU/memória tampão e nenhum byte no sentido contrário. 75 Alínea 4 Na estratégia de write through os dados são escritos na memória tampão e na memória principal ao mesmo tempo. Na estratégia de write not allocate se os dados correspondentes ao endereço onde se quer escrever não estiverem na memória tampão não serão transferidos para esta. Neste caso os dados são só guardados na memória principal. Durante o primeiro ciclo elementos do vector inp são transferidos da memória principal para a memória tampão (1024 bytes). Os elementos do vector local, como não se encontram na memória tampão, são só escritos na memória principal dando origem à transferência de 2 KB (512 elementos de 4 bytes cada) do CPU/memória tampão para a memória principal. Durante o segundo ciclo os elementos do vector local não se encontram na memória tampão e portanto têm que ser transferidos da memória principal para o CPU e memória tampão. Há portanto uma transferência nesse sentido de 2 KB (512 elementos e 4 bytes cada). Note-se que embora só sejam usados 256 elementos, são transferidos 512 pois a transferência é feita por bloco consecutivo de bytes. Em resumo há a transferência de 3 KB da memória principal para o CPU/memória tampão e 2 KB no sentido inverso. 76 24 Memória Tampão de um Processador AMD Athlon ENUNCIADO Considere a memória tampão de dados de nível 1 (L1) do processador AMD Athlon (arquitectura K7), com uma capacidade de 64 KB, associativa de duas vias, e com blocos de 64 bytes. A memória utiliza as estratégias write-back e write-allocate e o processador tem um comprimento de palavra de 32 bits e dispõe de 32 bits de endereço, endereçando individualmente o byte. Considere um mecanismo de substituição de blocos do tipo LRU. 1. Indique a utilização dos diferentes bits de endereço, comparando com uma memória tampão de mapeamento directo com a mesma capacidade e blocos do mesmo tamanho. 2. Determine o número de comparadores e o número de bits utilizados na memória tampão, incluindo os bits de controlo que entenda necessários. 3. Calcule a taxa de faltas e a taxa de acertos para o troço de código que se apresenta de seguida. static int X[32768]; // Inteiro representado por 32 bits register int k, sum1=0, sum2=0, sum3=0; main() { for (k = 0; k < 32768; k++) sum1 = sum1 + X[k]; for (k = 32766; k >=0; k = k-2) sum2 = sum2 + X[k]; for (k = 0; k < 32768; k = k+4) sum3 = sum3 + X[k]; } 4. Repita a alínea anterior considerando um código exactamente com a mesma funcionalidade mas em que a variável do ciclo for intermédio é incrementada no sentido inverso, isto é do valor mínimo para o valor máximo (0 a 32766). Comente o resultado. 5. Considere que a memória tampão está ligada directamente a um plano de memória principal, formada por circuitos de memória dinâmica acedidos no modo rápido de página em palavras de 32 bits. O intervalo de tempo mínimo entre activar o sinal de RAS e de CAS é 20 ns e, a partir daí, o acesso a palavras consecutivas na memória é efectuado pulsando o sinal de CAS com um período de 10 ns e um factor de ciclo de 50%. Os dados estão disponíveis 5 ns depois da linha CAS ter sido activada. Considerando uma das taxas de falta calculadas nas alíneas anteriores e que o acesso à cache demora 10 ns, calcule o ciclo médio de acesso à memória. Se não resolveu nenhuma das alíneas anteriores considere uma taxa de faltas de 10%. Electrónica de Computadores Mestrado em Engenharia Electrotécnica e de Computadores Exercício Resolvido 77 RESOLUÇÃO Alínea 1 Na memória com mapeamento directo existem 1024 conjuntos de 64 bytes cada perfazendo os 64 KB da memória tampão. São portanto precisos 6 bits para endereçar a palavra dentro de conjunto (26 = 64) e 10 bits para endereçar o conjunto (210 = 1024). Sobram assim 16 bits para a etiqueta (32 – 6 – 10 = 16). Na memória associativa com 2 vias existem 512 conjuntos de 64 bytes por via cada perfazendo os 64 KB da memória tampão. São portanto precisos 6 bits para endereçar a palavra dentro de conjunto (26 = 64) e 9 bits para endereçar o conjunto (29 = 512). Sobram assim 17 bits para a etiqueta (32 – 6 – 9 = 17). 78 Alínea 2 São usados dois comparadores de 17 bits cada. Além dos bits de armazenamento propriamente ditos existem vários bits de controlo. Esses bits são usados para as etiquetas (17 por conjunto e por via), para registo da validade dos dados armazenados (1 por conjunto por via) e para indicação de qual das vias foi usada há mais tempo. A estratégia usualmente adoptada em memórias associativas com duas vias é a técnica least recently used (LRU) em que a escolha da via a usar para a escrita de um novo bloco é aquela que foi usada há mais tempo. Para implementar essa estratégia basta um bit por conjunto e por via que indica se dada via é ou não a que foi usada há mais tempo. Assim que há um acesso a um bloco de memória o bit LRU desse conjunto e via é colocada a 0 e o bit correspondente da outra via é colocado a 1. O número de bits de controlo necessários é portanto (17 + 1 + 1) x 2 x 512 = 19 x 2 x 512 = 19456. Como os bits de armazenamento são 524288 (2 x 512 x 64 x 8) o número total de bits da memória tampão é 543744. Alínea 3 79 O vector X ocupa
Compartilhar