Arquitetura do processador 32 bits e 64 bits

3

Eu tenho uma pergunta sobre a arquitetura do processador dos sistemas de 32 bits e 64 bits.

Quando você trabalha com um sistema de 64 bits, eu suponho que significa que você tem um endereço de endereçamento de memória endereçável em bytes de 64 bits e registradores de 64 bits na própria CPU.

Um dos registradores é um registrador de instruções que contém a instrução atual que é executada. Este registro também tem 64 bits de largura.

Minhas perguntas são

Como é possível que uma instrução de 64 bits de largura possa conter uma referência a um endereço de 64 bits para carregá-la em um registrador da CPU? O registrador de instrução tem apenas 64 bits de largura, então não haverá mais lugar para um opcode?

Além disso, quando o endereço de memória se refere a um byte de memória (máximo inteiro de 2 ^ 8 - 1), como é possível expressar inteiros de 64 bits?

E o que uma ALU faz quando adiciona 2 inteiros de 64 bits com um resultado que não pode ser expresso em um inteiro de 64 bits?

    
por Koen 22.12.2015 / 03:10

1 resposta

2

How is it possible that an instruction of 64 bit wide can contain a reference to an address of 64 bit to load it into a register of the CPU?

Quando eu fazia programação de montagem, normalmente uma instrução iria para uma memória separada (um registrador diferente) que o registrador que conteria outros dados, como um endereço de memória.

The instruction register is only 64 bit wide so there will be no place for an opcode anymore?

Normalmente, uma instrução de montagem completa é parecida com: "ADD AX, BX". (Os detalhes podem variar com base em qual assembler está sendo usado.) Nesse caso, a CPU pegaria o valor do registrador AX, o adicionaria ao valor do registrador BX e armazenaria os resultados. Por exemplo, se AX armazenou 2 e BX armazenou 7, então o resultado pode ter o armazenamento AX 9. (Isso é 16 bits: para 64 bits, você pode estar usando RAX em vez de apenas AX.)

Also, when the memory address refers to a byte of memory (maximum integer of 2^8 - 1), how is it possible to express 64 bit integers then?

Um endereço de memória, como um endereço físico onde uma casa está, refere-se apenas a um local de memória. Um inteiro de 64 bits não será armazenado inteiramente em 1 byte; isso levaria 8 bytes.

And what does a ALU do when he adds up 2 64bit integers with a result that can't be expressed in a 64 bit integer?

Ele apenas armazena os resultados possíveis nos 64 bits que ele encontra disponíveis. No entanto, ele também inverte o sinalizador "estouro". Um programador pode verificar se o sinalizador "overflow" foi invertido e perceber que os resultados excederam 64 bits e, portanto, os resultados não são totalmente armazenados no registrador.

    
por 22.12.2015 / 04:44