"Un processeur a un bus d'adresse de 27 bits et il utilise des mots de 32 bits. Quelle est la taille maximum de mémoire qu'il peut adresser?"
(les parties de la question en gras étaient aussi en gras dans l'énoncé)
Ca dépend de la façon dont la mémoire est adressée.
Dans le cas du 68k, comme le faisait remarquer Kevin, le bus d'adresse est relié à deux mémoires, et deux lignes d'activation indépendantes permettent de lire soit l'octet d'une mémoire, soit l'octet de l'autre, soit les deux à la fois.
Ainsi les adresses impaires voient en réalité exactement la même adresse que l'adresse paire inférieure, mais avec l'autre ligne d'activation mise.
Exemple :
-> 42 sur bus d'adresse, bit MSB => lit un octet à l'adresse 84 (42x2 +0).
-> 42 sur bus d'adresse, bit LSB => lit un octet à l'adresse 85 (42x2 +1)
-> 42 sur bus d'adresse, bits MSB et LSB => lit les deux octets précédents simultanément (dont un word à l'adresse 84).
[edit: en relisant un post plus haut, on indique que ces bits se nomment UDS et LDS]
C'est également pour ça qu'il est impossible de lire un word à une adresse impaire.
Avec cette architecture, on peut adresser (taille du bus de données) x (nombre d'adresses sur le bus d'adresse) octets.
Néanmoins cette architecture n'est pas universelle. Les x86 ne fonctionnent pas comme ça, par exemple. Si mes souvenirs sont bons, l'adresse sortie sur le bus d'adresse accès toujours au même octet (et une seule ligne d'activation en régit l'accès). L'avantage c'est qu'il est possible de lire des mots de la taille du bus de données, même non alignés, sans aucun impact sur les performances.
Dans ce cas là, la taille de la mémoire adressable ne dépend que du nombre d'adresses que le bus d'adresse peut exprimer, et absolument pas de la taille du bus de données.
(à noter que même si globalement le x86 fonctionne de cette façon, certaines instructions étendues (SSE2 notamment) nécessitent un alignement sur 128 bits. De plus, l'architecture du Northbridge joue sur les performances lors d'accès non alignés par les procs Intel)
Sinon, pour revenir aux exceptions du 68k, il y a un ordre particulier de priorités. En cas de déclenchement simultané de plusieurs exceptions, elles sont traitées les unes après les autres par ordre de priorité (ce qui veut dire que tu les retrouves en ordre inverse sur la pile superviseur). Cet ordre est assez mal décrit par 2 malheureuses pages dans la doc du 68k.
De plus, la levée d'une exception au cours du traitement d'une exception passe le processeur en mode halt (plus qu'à le réinitialiser). Normalement, ceci ne peut se produire que si l'adresse donnée par le ssp n'est pas accessible (impaire, non mappée, ...)