Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка пргр МП.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
16 Мб
Скачать
☆

1.2.5.1 Адресное пространство портов ввода-вывода: единое с оперативной памятью и раздельное

Устройства ввода-вывода могут быть отображены в адресном пространстве оперативной памяти (memory-mapped I/O). Это называется вводом-выводом, управляемым памятью. Если устройства реагируют на обращения, как обычные компоненты памяти, они могут быть использованы для ввода-вывода, управляемого памятью. Единое адресное пространство портов ввода-вывода и оперативной памяти используется в большинстве современных микроконтроллеров с RISC-ядром: NXP LPC2000, LPC1700,

Freescale Coldfire V2, Fujitsu и т. д.

Используется одна и та же адресная шина для обращения к основной памяти и устройствам ввода-вывода. Ввод-вывод, управляемый памятью, обеспечивает дополнительную гибкость программирования. Для доступа к порту ввода-вывода, расположенному в адресном пространстве памяти, могут использоваться любые работающие с памятью команды. Например, команда MOV позволяет пересылать данные между портом и любым регистром. Команды AND, OR и TEST могут использоваться для манипулирования отдельными битами в регистрах управления и состояния периферийных устройств. Ввод-вывод, управляемый памятью, может использовать для адресации портов ввода-вывода полный набор команд и режимов адресации памяти.

Достоинства

Не нужно во время схемотехнического проектирования кристалла процессора включать отдельные модули для организации и управления работой с портами ввода-вывода. Таким образом, микросхема процессора проще, производительнее, дешевле, может потреблять меньше электроэнергии и меньше по размерам.

При сегодняшних технологиях производства микроконтроллеров вопрос экономии памяти не стоит уже так остро, как несколько лет назад. Поэтому разделение по этой причине адресных пространств основной памяти и портов ввода-вывода не имеет такой значимости.

Недостатки

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

В процессорах семейства Intel x86 используется раздельное адресное пространство оперативной памяти и портов ввода-вывода. В таком случае есть специальный класс инструкций в системе команд для взаимодействия с устройствами ввода-вывода. Например, в процессорах семейства Intel x86 это команды IN и OUT, при помощи которых можно читать и писать от 1 до 4 байтов из/в УВВ. Существует два вида команд ввода-вывода:

  1. Команды, выполняющие пересылку отдельного элемента (байта, слова или двойного слова) в регистр или из регистра (для x86 IN, OUT). Они адресуют порты ввода-вывода либо напрямую, по адресу одного из портов, задаваемому непосредственно в команде, либо косвенно, при помощи адреса в регистре. Эти команды синхронизируют выполнение программы с работой внешнего аппаратного обеспечения. Буферы записи процессора очищаются, а выполнение программы откладывается до тех пор, пока не будет получен сигнал готовности (ready) последнего цикла шины.

  2. Команды, пересылающие строки элементов (строки байт, слов или двойных слов), расположенных в памяти. Эти команды называются «строковыми командами ввода-вывода» или «блочными командами ввода-вывода» (для x86 INS, OUTS).

Кроме того, для отдельного адресного пространства может быть отдельная шина адреса.

Достоинства

Экономичное решение для процессоров со скромными емкостями памяти и адресными пространствами. Меньшая разрядность адреса дает меньшую разрядность команды. Раздельное адресное пространство – решение проблемы замедления обращения к основной памяти из-за активного ввода-вывода.

Недостатки

Ограничение в командах: чаще всего только загрузить из порта вводавывода в регистр процессора и обратно. Любая арифметическая, логическая операция над данными порта превращается как минимум в три инструкции. Недостатком дополнительного адресного пространства является уменьшение регулярности процессов обращения к памяти, что в свою очередь усложняет оптимизацию архитектуры микроконтроллера с точки зрения увеличения производительности.