Quelle est la différence entre un registre matériel et un registre mappé en mémoire ?

Cela a été déroutant, alors je vais tout exposer ici. Apparemment, via MMIO , vous pouvez accéder à des périphériques externes en utilisant une certaine adresse mappée en mémoire, qui serait ensuite réacheminée vers ce périphérique lui-même (via une écriture, un paquet de commandes, etc.). Cependant, j'ai entendu des descriptions mitigées des registres matériels (par exemple, comme un registre CPU / GPU, ou même des puces sonores) et des registres mappés en mémoire utilisés de manière interchangeable. Sont-ils les mêmes un truc ?

Lorsque vous dites un "registre mappé en mémoire", ne faites-vous pas référence à l'adresse à partir de laquelle un octet de données est réacheminé à une adresse spécifique à l'intérieur de ce périphérique (par exemple, théorique: l'adresse 0x500 du GPU est pour register TEXTURE_BUFFER). Cependant, un périphérique mappé en mémoire ne peut pas mapper un registre physique à l'intérieur de la RAM.

Donc, en gros, quelle est la différence entre un registre mappé en mémoire et juste un registre matériel?

demandé sur