I / O з відображенням на пам'ять і входом / виводом з картами портів - це два взаємодоповнюючих способи вводу / виводу.
Введення / виведення з пам'яттю
У системах з картографічною пам'яттю доступ до пристрою вводу / виводу доступний так, як це частина пам'яті. Load
і Store
команди виконуються для читання і запису на пристрої вводу / виводу, подібно до того, як вони використовуються для пам'яті (на картографічному порту є спеціальні команди для вводу / виводу). Це означає, що пристрої вводу-виводу використовують ту саму шину адреси, що й пам’ять, тобто CPU може посилатися на пам'ять або пристрій вводу-виводу на основі значення адреси. Цей підхід вимагає ізоляції в адресному просторі: тобто адреси, відведені для вводу-виводу, не повинні бути доступними для фізичної пам'яті.
Нижче зображено просту базову комп'ютерну систему . Справа набагато складніша в сучасних системах.
Порт-карту вводу / виводу
За даними Вікіпедії
Порт-відображений ввід / вивід часто використовує спеціальний клас інструкцій CPU, спеціально для виконання вводу-виводу. Це знайдено в мікропроцесорах Intel, з інструкціями IN і OUT. Ці інструкції можуть читати та записувати один-чотири байти (outb, outw, outl) на пристрій вводу / виводу. Пристрої вводу / виводу мають окремий адресний простір від загальної пам’яті, або це здійснюється додатковим штифтом «I / O» у фізичному інтерфейсі процесора, або цілою шиною, присвяченою вводу / виводу. Оскільки адресний простір для вводу / виводу ізольовано від простору для основної пам'яті, це іноді називають ізольованим введенням / виводом.
Щодо переваг та недоліків: оскільки периферійні пристрої повільніше, ніж пам'ять, обмін даними та шинами адреси може уповільнити доступ до пам'яті. З іншого боку, завдяки системам, нанесеним на карту простоти вводу / виводу, ЦП вимагає меншої внутрішньої логіки, і це допомагає швидше, дешевше і менше споживати енергоспоживання процесорів. Логіка схожа на систему RISC: зменшіть складність, отримайте більш віддану і надійну систему, яка є дуже зручною, наприклад, для вбудованих систем.
Навпаки (знову з Вікі):
Інструкції з картографічним входом / виводом, нанесені на порт, дуже обмежені, часто забезпечують лише прості операції завантаження та зберігання між регістрами процесора та портами вводу / виводу, так що, наприклад, для додавання константи до реєстру пристроїв, нанесених на порт, потрібно три інструкції: прочитайте порт до реєстру процесора, додайте константу до реєстру процесора та запишіть результат назад у порт.
Настійно рекомендую прочитати цю статтю у Вікі для отримання додаткової інформації.
Щоб відповісти на одне із запитань:
Що або де я пишу, якщо це не на пам'ять?
Ви пишете в регістри інтерфейсу вводу / виводу через шину даних, яка пізніше (коли буде готова) надсилає дані на фактичний пристрій вводу / виводу. Нижче зображено приклад інтерфейсу пристрою вводу / виводу.