В настоящее время я читаю книгу по компьютерной организации, и я так запутался в механизме ввода / вывода, и у меня в голове много вопросов.

Как я понял, для взаимодействия с периферийными устройствами существуют две концепции: первая - это ввод-вывод с отображением в память, а другая - ввод-вывод с отображением ввода-вывода (порта). Если архитектура основана на ввод-выводе с отображением памяти, специальные инструкции ввода / вывода, такие как "in", "out" и т. д., а также регистры устройства отображаются в адресное пространство памяти, поэтому мы можем читать или записывать данные на периферийные порты с помощью инструкции "mov".С другой стороны, если архитектура основана на I / O Mapped I / O, регистры устройства сопоставляются с адресным пространством I / O, которое полностью отделено от адресного пространства памяти, а процессор использует специальные инструкции ("in", "out", "" ins "," outs ") для чтения или записи в регистры подключенного устройства ввода-вывода.

Так вот мои вопросы;

1.)Если в архитектуре X86 используется метод сопоставления ввода-вывода (порт, изолированный и т.д.), То почему существуют адреса памяти в таких устройствах, как графическая карта?

2.)Если графическая карта отображает 1 Гб памяти в адресное пространство основной памяти, что это значит?Означает ли это ввод-вывод с отображением в память?

3.)Если архитектура x86 не использует Memory Mapped I/O, как устройство может отображать себя в адресное пространство памяти?

4.)Если архитектура x86 может использовать Memory Mapped I/O, как она может использоваться и с какими инструкциями?

5.)Если отображение ввода / вывода связано с отображением периферийных регистров, почему графическая карта требует так много места для отображения?

0