
hessel
(usa Ubuntu)
Enviado em 30/09/2011 - 01:13h
Olá Ovídio,
No processador, os dados são movimentados nos barramentos e, por isso, pode-se dizer que sempre há a movimentação da quantidade máxima de bits da arquitetura. Mas isso não quer dizer que sempre haverá a gravação de todos os bits do barramento nos registradores.
Os registradores que precisam ser lidos ou gravados são escolhidos através de um sistema de seleção de registradores e, mesmo que todo o barramento tenha dados (sempre tem zeros ou uns...), apenas a parte corresta do barramento terá algum efeito.
Por exemplo, com a instrução mov al, ah.
Haverá um ciclo de leitura onde a parte alta do registrador ax estará em contato com o barramento
Num momento posterior, haverá a gravação da parte baixa do registrador ax e a parte alta não estará em contato com o barramento (alta impedância).
Quanto à otimização, acredito que o motivo esteja mais relacionado ao alinhamento de dados. Quando você trabalha com dados, na memória principal, de tamanho múltiplo da quantidade de bits da arquitetura, os dados (espera-se) podem estar alinhados de forma que a leitura dos mesmos podem ser executadas em menos ciclos (o barramento é completamente utilizado). Se você começa a utilizar dados com tamanho fracionário, eventualmente fará leituras onde somente parte do barramento será efetivamente utilizada para a transmissão de dados (dados desalinhados).
Abraços