Memory-Mapped-I / O- und Memory-Mapped-Register sind nicht dasselbe und nicht so eng miteinander verbunden.
Memory-Mapped I / O wurde beispielsweise in frühen PCs verwendet, bei denen ein Teil des RAM-Adressraums dem Anzeigepuffer zugeordnet wurde. (In einigen Produkten wurde tatsächlich normaler RAM-Speicher für den Anzeigepuffer verwendet, statt den Puffer auf der Anzeigeadapterkarte zu haben.) In anderen Fällen würde ein Hardwaregerät wie ein Plattenlaufwerk-Controller eine speicherzugeordnete Adressierung zum Einstellen / Lesen seiner Steuerung verwenden registriert. (Und ich würde vermuten, dass moderne Grafikkarten immer noch den Anzeigespeicher in den Adressraum des Grafikprozessors abbilden, obwohl ich nicht weiß, dass dies eine Tatsache ist.)
"Memory-mapped register" können mehrere Dinge bedeuten. Ein Beispiel wäre das obige Beispiel des Plattenlaufwerk-Controllers mit speicherzugeordneten Steuerregistern. Ein anderer, ganz anderer Fall wäre ein Prozessor, dessen Register sich tatsächlich im RAM befinden. Dies war bei Prozessoren der frühen 50er bis frühen 70er Jahre ziemlich üblich, da sie die Anzahl der Teile erheblich reduzierten und einige "clevere" Programmierpraktiken zuließen. In einigen Fällen war der Prozessor in zwei Modellen verfügbar, eines mit Registern mit Speicherzuordnung und das andere mit (schnelleren) "Hardware" -Registern.
Und in einigen Fällen war es unklar, was ein Register war und was nicht, wie bei den "Stack" -Maschinen von Burroughs, bei denen ein "Stack" anstelle von Standardregistern verwendet wurde (mit, IIRC, verschiedenen Schemata für " "Shadowing" der Register im RAM).