Buscar

Problemas Resolvidos de Eletrônica Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais