Considere um microprocessador de 32 bits hipotético com instruções de 32 bits, compostas de dois campos: o primeiro byte contém o opcode e o restante, o operando imediato ou o endereço de um operando.
a. Qual é a capacidade de memória máxima endereçável diretamente (em bytes)?
b. Discuta o impacto sobre a velocidade do sistema se o barramento do microprocessador tiver
- um barramento de endereço local de 32 bits e um barramento de dados local de 16 bits, ou
- um barramento de endereço local de 16 bits e um barramento de dados local de 16 bits.
c. Quantos bits são necessários para o contador de programa e o registrador de instrução?
a. Qual é a capacidade de memória máxima endereçável diretamente (em bytes)?
b. Discuta o impacto sobre a velocidade do sistema se o barramento do microprocessador tiver
c. Quantos bits são necessários para o contador de programa e o registrador de instrução?
Passo 1
O enunciado dá as seguintes informações e pede três coisas claras:
- Informação 1: É um microprocessador “de 32 bits hipotético” cujas instruções têm tamanho de
bits. - Informação 2: Cada instrução é composta de dois campos: o primeiro byte (ou seja,
bits) contém o opcode; o restante da instrução (os bits que sobram) contém ou um operando imediato ou o endereço de um operando. Portanto o campo de endereço/imediato tem bits. - Informação 3: Há duas configurações de barramento a serem discutidas:
- barramento de endereço local de
bits e barramento de dados local de bits; - barramento de endereço local de
bits e barramento de dados local de bits.
- barramento de endereço local de
- O que se pede:
a. Calcular a capacidade de memória máxima endereçável diretamente (em bytes).
b. Discutir o impacto sobre a velocidade do sistema para as duas configurações de barramento listadas.
c. Dizer quantos bits são necessários para o contador de programa (PC) e para o registrador de instrução (IR).
Não vou resolver nada aqui; apenas organizei o que o enunciado dá e o que é pedido. Agora vou desenvolver passo a passo.
Passo 2
Conceitos fundamentais que vamos usar (aulas rápidas e intuitivas):
- Endereçamento byte-a-byte: quando falamos que um processador endereça memória por byte, cada endereço aponta para um byte distinto. Com
bits de endereço podemos endereçar bytes distintos. Exemplo simples: com bits de endereço endereçamos bytes. - Campo de endereço em uma instrução: se a instrução carrega um endereço direto no seu campo de operando e esse campo tem
bits, então, por esse modo de endereçamento direto, ela pode referir até endereços distintos (novamente, assumindo endereçamento por byte). - Barramento de endereço vs. registrador PC: o barramento de endereço determina quantos endereços a placa/memória consegue acessar fisicamente em um ciclo de barramento; o contador de programa (PC) precisa ter largura suficiente para conter os endereços que o processador irá gerar/usar. Se o barramento de endereço for mais largo que o campo de endereço da instrução, o processador pode ter modos para construir endereços maiores (ex.: carregando bits altos em registradores), mas o campo imediato direto fica limitado ao seu tamanho.
- Barramento de dados: define quantos bits são transferidos por ciclo entre CPU e memória. Se a CPU usa palavras de
bits mas o barramento de dados é de bits, cada palavra de bits exige duas transferências de barramento (normalmente dois ciclos de leitura/escrita).
Com esses conceitos claros, vamos aplicar ao problema.
Passo 3
O campo de endereço disponível dentro da instrução tem
bits (o enunciado disse: primeiro byte é opcode; sobraram
bits para imediato/endereços). Assumindo endereçamento por byte, a capacidade de memória máxima endereçável diretamente por esse campo é
bytes. Vamos calcular e converter para unidades mais amigáveis:
-
(aprox. KiB), (aprox. MiB). - Assim
bytes.
Em termos de mebibytes (MiB):
Portanto a resposta numérica para (a) é
bytes (ou
MiB).
Passo 4
Antes de analisar os dois casos específicos, vamos fixar o que significa cada largura de barramento para o desempenho:
- Largura do barramento de endereço (A bits): determina o espaço de endereçamento físico por ciclo. Com
bits podemos gerar endereços de posições (bytes se o endereçamento for por byte). - Largura do barramento de dados (D bits): quantos bits a memória entrega/recebe em uma única transferência. Para transferir uma palavra de
bits, precisamos de transferências de dados (ciclos de barramento). - Cada transferência de dados costuma envolver colocar o endereço no barramento, aguardar a memória responder e mover os dados — ou seja, cada transferência tem sobrecarga de tempo. Logo, se você precisa de
transfers em vez de , normalmente dobra o tempo de leitura/escrita de uma palavra (aproximação prática).
Com isso, vamos analisar os dois casos dando exemplos concretos de fetch de instrução e de acesso a um dado de
bits.
Passo 5
O que isso significa:
- Barramento de endereço
bits permite endereçar até bytes (isto é, bytes ≈ GiB) na memória física por um ciclo de barramento. - Barramento de dados
bits significa que a memória fornece bits (2 bytes) por transferência de barramento.
Impacto sobre a velocidade — exemplos práticos e explicados passo a passo:
-
Fetch da instrução (instrução tem
bits): - Como o barramento de dados é de
bits, cada fetch de instrução de bits exige transferências de barramento (tipicamente dois ciclos de memória). - Em comparação, se o barramento de dados fosse de
bits, seria só uma transferência. Logo, o fetch de instrução fica aproximadamente duas vezes mais lento em relação ao caso ideal de -bit data bus (ignorando latências adicionais, pipelining, burst transfers etc.).
- Como o barramento de dados é de
-
Acesso a dados de
bits (load/store): - Mesmo raciocínio: cada load/store de
bits necessita de transferências de bits, dobrando o tempo de memória para operações de palavra completa. - Se muitas instruções dependem de acessos à memória (memoria-bound), o throughput do sistema cai aproximadamente pela metade nessas operações.
- Mesmo raciocínio: cada load/store de
-
Vantagem: barramento de endereço
bits permite trabalhar com um espaço de memória físico grande sem artifícios, o que é bom para programas grandes ou memória mapeada. Porém, a largura de dados reduzida é o gargalo de throughput.
Resumo qualitativo para (b.1):
- Capacidade de memória suportada pelo barramento: até
bytes. - Penalidade de performance: fetchs e transfers de palavras de
bits exigem duas transferências no barramento de dados, aumentando latência e diminuindo throughput de memória aproximadamente pela metade para operações de 32 bits (comparado a um barramento de dados de 32 bits).
Passo 6
O que isso significa:
- Barramento de endereço
bits permite endereçar até bytes, isto é, KiB (kilobytes). - Barramento de dados
bits igual ao caso anterior: transfers para cada palavra de bits.
Impacto e problemas práticos:
-
Limitação de memória física direta:
- O barramento de endereço de
bits limita o espaço endereçável a KiB. Isso é pequeno para praticamente qualquer sistema moderno; muitos programas e dados não caberiam. - Observação importante: a instrução contém um campo de endereço de
bits. Há uma contradição prática entre o campo de endereço da instrução (poderia especificar até endereços) e o barramento físico de endereço (apenas endereços). Como resolver isso na prática? O processador teria que usar técnicas extras (por exemplo, registradores de banco alto com instruções adicionais para compor o endereço completo, segmentação, paginar, ou efetuar múltiplas operações para acessar a parte alta dos bits do endereço). Tudo isso adiciona overhead (mais instruções, mais ciclos) e deixa o sistema mais lento e mais complexo.
- O barramento de endereço de
-
Fetch de instrução e acesso a dados de
bits: - Mesmo que o endereço caiba em
bits, o barramento de dados de bits força transferências para cada instrução de bits ou para cada load/store de bits. Logo, essas operações são mais lentas do que num barramento de dados de bits. - Se o código referenciar endereços maiores que
KiB, cada acesso implicará em passos extras (montar endereço em registradores, mudar banco/segmento etc.), multiplicando o tempo.
- Mesmo que o endereço caiba em
-
Resumo qualitativo para (b.2):
- Capacidade de memória suportada pelo barramento: até
bytes ( KiB). - Penalidade de performance: além da penalidade óbvia do barramento de dados de
bits (duas transferências por palavra de bits), existe um custo funcional e de tempo muito maior quando o programa precisa acessar memória fora dos KiB — porque o processador terá de usar sequências de instruções para construir endereços maiores, degradando ainda mais o desempenho e complicando compiladores/código.
Passo 7
Comparando os dois casos:
- Caso 1 (A=32, D=16): grande espaço de endereçamento físico (
bytes) — bom para capacidade —, mas data throughput limitado: cada instrução/word de bits exige duas transferências, reduzindo taxas de leitura/escrita de memória. Em sistemas com muito acesso à memória, o desempenho sofre. - Caso 2 (A=16, D=16): espaço de endereçamento muito restrito (
KiB) — pode tornar o sistema impraticável —, e igualmente sofre com transfers duplos por palavra de bits. Além disso, existe overhead extra quando se tenta usar o campo de bits da instrução (porque o barramento físico só aceita bits), o que torna acesso a endereços maiores ainda mais lento.
Observação prática final: o gargalo imediato de velocidade em ambos os casos é o barramento de dados de
bits quando o processador usa palavras de
bits — isso dobra o número de transfêrencias para instruções e dados de
bits. A largura do barramento de endereço afeta principalmente a quantidade de memória que pode ser acessada sem truques; se o endereço físico permitido for menor que o campo de endereço da instrução, haverá overhead extra para formar endereços, prejudicando ainda mais a velocidade.
Passo 8
Primeiro, o registrador de instrução (IR):
- A instrução tem
bits (dado no enunciado). O IR precisa armazenar a instrução completa para que a unidade de controle faça a decodificação. Portanto o IR precisa ter exatamente
Agora, o contador de programa (PC):
-
O objetivo do PC é conter o endereço da próxima instrução (ou do byte onde está a próxima instrução) — portanto o PC precisa ter largura suficiente para endereçar todo o espaço de memória que o processador usa para buscar instruções.
-
Existem duas respostas relevantes, dependendo do que se considera “necessário”:
- Resposta mínima baseada no campo de endereço da instrução (endereçamento direto): como o campo de endereço direto na instrução tem
bits, para que a instrução possa colocar qualquer endereço imediato direto no PC (sem mecanismos adicionais), o PC precisa ter pelo menos
Isso permite endereçar diretamente osbytes que calculamos na letra (a). - Resposta baseada no barramento de endereço físico: se o barramento de endereço local do processador for de
bits (como no caso (b.1)), o PC normalmente precisa ter bits para poder dirigir o barramento de endereço sem truncamento, ou seja, para gerar qualquer endereço que o barramento possa carregar. Se o barramento de endereço for bits (caso (b.2)), o PC precisaria de bits para endereçar diretamente o barramento (mas isso também restringe o espaço endereçável a bytes, e muitas vezes o hardware usa registradores adicionais para contornar isso).
- Resposta mínima baseada no campo de endereço da instrução (endereçamento direto): como o campo de endereço direto na instrução tem
-
Em resumo prático e direto:
- IR:
bits (necessário e suficiente). - PC: mínimo
bits para usar o campo de endereço direto da instrução; porém, se o barramento de endereço físico for maior (por exemplo bits), o PC normalmente terá de ser bits para controlar o barramento sem operações extras; se o barramento for menor ( bits) o PC pode ser bits mas isso impõe limitações e necessidade de técnicas adicionais.
- IR:
Resposta
a)
bytes
MiB
b1) Barramento de endereço
bits e dados
bits: endereçamento físico até
bytes (≈
GiB); porém, como o barramento de dados é de
bits, fetch de instrução de
bits e operações de
-bit requerem duas transferências de barramento, aproximando-se de redução de throughput (latência de memória) em ~2× para essas operações.
b2) Barramento de endereço
bits e dados
bits: endereçamento físico limitado a
bytes (
KiB); além da penalidade do barramento de dados (duas transferências por palavra de
bits), há overhead extra e perda de desempenho quando se tenta usar o campo de endereço de
bits da instrução (é preciso compor endereços em múltiplas instruções/etapas).
c) Contador de programa (PC): mínimo
bits para corresponder ao campo de endereço direto da instrução; se o barramento de endereço físico for
bits, o PC normalmente precisa ser
bits (se for
bits, o PC teria
bits mas isso impõe limitações). Registrador de instrução (IR):
bits.