Se uma CPU possui um barramento de endereço de 16 bits e palavras de 8 bits, quanta memória pode endereçar?

23

Estou estudando para um exame de final de semestre e estou confuso com a seguinte pergunta. Se uma CPU possui um barramento de endereço de 16 bits e palavras de 8 bits, quanta memória em KB pode ser endereçada? Meu entendimento me diria que ele pode endereçar 64 KB, no entanto, para fazer isso, usei 2 ^ 16 = 65.536. Esse cálculo nunca levou em consideração palavras de 8 bits, então não tenho certeza se está correto. Também o que significam palavras de 8 bits?

Felicidades

eZ_Harry
fonte
16
Você o usou indiretamente: a quantidade total de memória endereçável é de 2 ^ 16 * 8 bits. Como um byte = 8 bits, são 2 ^ 16 bytes, ou seja, 65536 bytes ou 64 KiB. Observe que K é o prefixo SI para 1000. Se você quer dizer 1024, use Ki.
jcaron
2
Observe a diferença entre o kilobytes do prefixo do SI (1.000 bytes) e o kibibytes do prefixo binário (1.024 bytes). 2 ^ 16 = 65,536 = 64 kibi ~ 65,5 kg. A resposta procurada é provavelmente aquela em que o quilo é entendido como kibi, mas há momentos em que a diferença realmente importa. Se você quiser ter certeza absoluta, siga a rota segura e especifique o número de bytes e ofereça a tradução em unidades mais úteis, como kilobytes ou kibibytes, como uma conveniência para o seu professor. Compare Wikipedia: prefixo binário . Os chips de memória geralmente especificam, por exemplo, 65.536x8 bits.
a CVn
3
Presumo que você não assuma nenhuma troca bancária. A maioria das CPUs de 16 bits usa alguma forma de troca bancária que dificulta a resposta.
Joshua
1
@ MichaelKjörling A pergunta diz KB, que sempre significou 1024 bytes.
precisa saber é o seguinte

Respostas:

38

Uma palavra, na maioria das arquiteturas, é o maior dado que pode ser transferido de e para a memória de trabalho em uma única operação.

O maior tamanho de endereço possível, usado para designar um local na memória, geralmente é chamado de palavra de hardware.

Portanto, sua CPU poderá endereçar 64 KB (2 ^ 16), mas somente poderá transferir em uma única operação 8 bits.

Overmind
fonte
3
Tenho certeza de que essa resposta é a que o professor está buscando, mas ela está realmente correta? Você não poderia usar algo como PAE para permitir uma hierarquia de 3 níveis (ou até mais) para permitir que as CPUs acessem mais de 64 KB? Não sou especialista em hardware, mas o Commodore 128 nem conseguiu fazer algo assim em um barramento de 8 bits de palavras e 16 bits, permitindo a troca de bancos de RAM?
Davidgo 6/06
5
Não tenho certeza se entendi sua frase "só será capaz de transferir em uma única operação é 256B (2 ^ 8)"? Só pode transferir 1 palavra = 1 byte = 8 bits em uma única operação.
jcaron
8
O @davidgo ainda PAE exige que o barramento de endereço seja dimensionado adequadamente. As CPUs Intel que suportam PAE têm um barramento de endereços de 36 bits.
Dmitry Grigoryev
6
PAE é mais ou menos um nome de marca / recurso específico para as modernas CPUs x86. Sim, esquemas para endereçar indiretamente grandes quantidades de memória foram implementados por muito tempo (por exemplo, XMS); no final, tratam o subsistema de memória como um periférico que pode ser reconfigurado constantemente para expor diferentes memórias em um espaço de endereço menor. Além disso, veja o modelo segmentado memória do x86 velha escola ...
rackandboneman
6
@Overmind, você deve esclarecer um pouco a sua resposta. Ninguém realmente usa um único B como unidade e o motivo é exatamente o que aconteceu aqui - você está confundindo bits e bytes. O OP declara "palavras de 8 bits * - portanto, cada palavra tem 8 bits (1 byte) e só pode transferi-lo em uma operação. 256 é simplesmente o número de valores possíveis que cada palavra possui, não o quanto é transferido.
adelphus
21

Uma palavra de máquina, ou geralmente apenas palavra, é a maior unidade de dados que a CPU pode manipular como um todo usando instruções comuns. Isso não tem nada a ver com endereçamento de memória.

O que importa é a resolução da unidade de endereço , que geralmente é um byte de 8 bits, mesmo em arquiteturas de 16/32/64 bits. Não precisa ser igual ao tamanho da palavra da máquina, mas provavelmente é o seu caso.

Uma unidade endereçável de 8 bits combinada com o barramento de endereços de 16 bits atinge 64KiB de RAM que a CPU pode endereçar.

Dmitry Grigoryev
fonte
3
Mas usei máquinas onde a resolução da unidade de endereço era de 16 bits. (Assim, o conceito é significativo.)
Martin Bonner suporta Monica
4
@MartinBonner No entanto, não está diretamente relacionado ao tamanho da palavra da CPU.
glglgl
1
@glglgl - É muito relacionado. Eu não acredito que haja qualquer arquiteturas que não têm uma unidade de endereço de ambos 8 bits ou seu tamanho palavra.
Jules
1
Não concordo com a afirmação de que uma palavra é a maior unidade que a CPU pode manipular como um todo. O Intel i7 possui um barramento de dados de 64 bits e ainda pode usar instruções SIMD de 256 bits. Se a Wikipedia estiver correta, a palavra se refere à largura do barramento de dados e não ao material interno da CPU.
Thomas Weller
1
@ ThomasWeller: 8088 possui barramento de dados de 8 bits, mas ainda instruções de 16 bits. Na verdade, é um 8086 com um banco de dados menor. Nota: a largura do banco de dados e a transferência real também são diferentes (pense em dados desalinhados).
Giacomo Catenazzi
1

Também o que significam palavras de 8 bits?

No contexto, o tamanho da palavra acompanha o tamanho do endereço para descrever o barramento de memória. Há 16 bits brilhando na memória para que você possa escolher os locais de 64ki. Então, cada local contém 8 bits.

O tamanho da palavra aqui pode ou não corresponder ao tamanho da unidade de computação da CPU, e isso pode ou não corresponder à granularidade lógica no endereçamento.

Por exemplo, uma CPU pode anunciar um barramento de 16 bits (para essa finalidade). Ele usa endereços de 16 bits em suas instruções e, como no exemplo, tem 64ki. Mas possui 15 bits de barramento de endereços e 16 bits de barramento de dados. Ele só precisa de 32ki endereços e sempre recebe 2 bytes em cada local. (Se uma instrução quisesse 1 byte, ela despacharia o endereço com o mínimo de bits faltando, buscaria os dois bytes nessa etapa e, em seguida, observe o mínimo do endereço desejado para decidir qual metade usar.)

Observe que a troca de banco, o PAE etc. mencionados por outras pessoas não são relevantes aqui. Uma unidade de gerenciamento de memória pode usar endereços de 16 bits e ter um endereço de hardware de 20 bits; portanto, a CPU precisa alternar e mapear itens para fazer uso do intervalo real de endereços de 20 bits dos chips de RAM que podem ser endereçados.

Certifique-se de especificar unidades em suas respostas. "64ki". Sobre o que? Palavras de 8 bits, tornando-se (ainda) 64ki bytes de RAM endereçável. Essa etapa elimina a confusão e cria problemas como esse triviais.

JDługosz
fonte
0

Você também deve usar o tamanho da palavra nos cálculos. A resposta é 64 KB.

Você pode endereçar 2 ^ 16 palavras e cada palavra tem 8 bits (= 1 byte). Portanto, é de 64 KB.

Se o tamanho da palavra for 16 bits. A resposta seria 128 KB.

Nuri Tasdemir
fonte
1
Seu cálculo não se aplica a CPUs comuns de 32 bits, que ainda podem endereçar 2 ^ 32 bytes de memória (4 GB), não (2 ^ 32) * 4 (16 GB).
Dmitry Grigoryev
As CPUs modernas endereçam "linhas" maiores e têm menos linhas de endereço correspondentes. A questão fala do endereço de ônibus do lado físico das coisas. Portanto, multiplicar pelo tamanho da palavra desse barramento (não pelo tamanho do registro da CPU) está correto.
JDługosz 7/06
0

Existem dois lados disso: o que seu instrutor provavelmente deseja que você diga a ele e qual é a realidade.

Primeiro, o que seu instrutor provavelmente deseja que você conte a ele.

"16 bits podem endereçar 2 ^ 16 locais de memória, cada local é 8 bits. Portanto, podemos endereçar uma memória de 524288 bits (65536 octetos)."

No entanto, isso reflete uma visão de mundo bastante simplificada. A realidade é mais complicada e dar uma resposta definitiva requer mais informações. Algumas das maneiras pelas quais sistemas reais podem ser mais complicados do que isso incluem.

  • Muitos processadores não possuem um mapa de E / S dedicado; portanto, partes do espaço de endereço da memória podem precisar ser usadas para outras coisas que não a memória.
  • O "tamanho da palavra" do processador não é praticamente o mesmo que a largura do barramento de dados da memória ou a menor unidade de memória endereçável.
  • Alguns barramentos permitem o movimento de unidades de dados de tamanhos variados. Isso requer endereçamento adicional que pode ou não ser tratado por bits do barramento de endereço principal.
  • Alguns ônibus multiplexam sinais diferentes nas mesmas linhas. Por exemplo, a SDRAM usa as mesmas linhas de endereço duas vezes para enviar um "endereço de linha" e um "endereço de coluna".
  • Muitos sistemas usavam abordagens de comutação bancária para permitir que os programas acessassem mais memória do que o processador poderia endereçar nativamente.
plugwash
fonte