Memory Mapped vs. I / O Mapped Input Output

0

Ich lese gerade ein Computerorganisationsbuch und bin so verwirrt über den Ein- / Ausgabemechanismus und habe viele Fragen im Kopf.

Wie ich verstanden habe, gibt es zwei Konzepte für die Kommunikation mit Peripheriegeräten: das eine ist speicherabgebildete E / A und das andere ist E / A (Port) -abgebildete E / A Spezielle E / A-Befehle wie "in", "out" usw. und Geräteregister werden dem Speicheradressraum zugeordnet, damit wir per "mov" -Befehl per Lese- oder Schreibzugriff auf Peripherie-Ports zugreifen können. Andererseits, wenn die Architektur auf E / A basiert Zugeordnete E / A, Geräteregister werden dem E / A-Adressraum zugeordnet, der vollständig vom Speicheradressraum getrennt ist, und die CPU verwendet spezielle Befehle ("in", "out", "ins", "outs") zum Lesen oder Schreiben E / A zugeordnete Geräteregister.

Also hier sind meine Fragen;

1.) Wenn die X86-Architektur die E / A-Technik (Port, isoliert usw.) verwendet, warum gibt es Speicheradressräume für Geräte wie Grafikkarten?

2.) Wenn die Grafikkarte dem Hauptspeicher-Adressraum 1 GB Speicher zuordnet, was bedeutet das? Bedeutet es Memory Mapped I / O?

3.) Wenn die x86-Architektur kein speicherzugeordnetes E / A verwendet, wie kann sich ein Gerät dem Speicheradressraum zuordnen?

4.) Wenn die x86-Architektur speicherzugeordnete E / A verwenden kann, wie und mit welchen Anweisungen?

5.) Wenn es bei der E / A-Zuordnung um die Zuordnung von Peripherieregistern geht, warum benötigt die Grafikkarte so viel Platz für die Zuordnung?

spartacus
quelle
Wenn der Prozessor über E / A-Anweisungen und E / A-Speicher verfügt, ist dies möglich beide port- und speicherabgebildete E / A. X86 arch kann also beides. (1) Der E / A-Adressraum ist nicht so groß wie der Speicheradressraum, daher muss zu speicherabgebildeten E / A gewechselt werden. In mancher Hinsicht ist es einfacher, speicherabgebildete E / A zu codieren, z. Sie können Datenstrukturen auf die Geräteregister abbilden, die speicherabgebildet sind.
sawdust
@sawdust Ich suchte nach u :), und sagte, x86 kann speicherabgebildete E / A-Vorgänge ausführen, aber wie? Wie kann CPU Daten an Peripheriegeräte mit "mov" -Anweisung in 86-Architekturen senden? Warum ist E / A-Speicher nicht so groß wie Speicherplatz? ist es nicht nur ein separater Bus?
spartacus