Сервер под 1с выбор сервера.
Каждое периферийное устройство имеет в своем составе один или несколько регистров, содержимое которых можно прочитать или записать командами программы. Сложные периферийные устройства могут содержать несколько десятков регистров. Таким образом, общее количество регистров периферийных устройств в системе может быть значительным.
Словосочетанием “модель периферийного устройства для программиста” будем называть набор регистров в периферийном устройстве, которые можно прочитать-записать программно.
Простейшая модель для программиста внешнего устройства может содержать довольно мало регистров: — регистр состояния (статуса), регистр управления, регистр (буфер) данных.
Применяют два основных способа доступа к регистрам ПУ:
В первом случае процессор по команде может записать/считать данные в любой регистр ПУ. Если ПУ имеет большое количество регистров, например, более 100, как в sound blaster, используют второй способ. В этом случае ПУ имеет два регистра: индексный регистр и регистр данных. При записи в индексный регистр заносим номер регистра ПУ, в который хотим записать, затем в регистр данных заносим записываемое число.
Адресация регистров внешнего устройства:
В некоторых процессорах доступ к регистрам периферийных устройств осуществляется аналогично доступу к ячейкам памяти. Каждому регистру присвоен адрес в адресном пространстве памяти. В этом случае для обращения к регистрам ПУ можно использовать те же команды, что и для доступа к ячейкам памяти. Такая организация носит название "ввод-вывод, отображаемый на память". Обычно разработчики вычислительной системы выделяют для адресации регистров ПУ какой-либо фиксированный диапазон адресов.
В других процессорах регистры ПУ имеют свою систему адресации, никак не связанную с адресацией ячеек памяти. Для обращения к регистрам ПУ в системе команд имеются специальные команды ввода- вывода. Такая организация обмена с ПУ носит название "изолированный ввод-вывод". Для обозначения программно- доступных регистров периферийных устройств в компьютерной литературе используют термин "порты ввода-вывода".
Пример 1. Нулевой канал таймера имеет порт данных с адресом 40h
и порт управления с адресом 43h.
Пример 2. Приемник последовательного интерфейса COM1 имеет
порт данных с адресом 0378h и порт состояния (статуса) с адресом
03FDh. Младший бит в порте состояния (флаг окончания приема)
устанавливается в 1, если приемник принял извне байт.
Оба вида адресации аппаратно поддержаны со стороны процессора. В первом случае в адресном пространстве процессора выделяется область адресов для ПУ. Адреса из этой области транслируются напрямую, без использования схемы преобразования (логический адрес равен физическому). В процессоре Motorola 68040 этот механизм называется “прозрачная трансляция адресов”. Для указания выделенной области регистров ПУ используются специальные регистры. В этих регистрах дополнительно имеются поля, определяющие разрешение/запрещение КЭШирования, тип доступа r/w и др. На рисунке (см. рисунок ниже) представлена схема страничной трансляции.
Регистры прозрачной трансляции ТТО и ТТ1 (см. рисунок ниже) определяют блоки адресного пространства, которые транслируются прозрачно (прямо): в этих блоках логические адреса являются физическими.
Значения полей регистров ТТО и ТТ1:
LOGICAL ADDRESS BASE — значение А31 — А24, определяют блок прозрачной трансляции;
LOGICAL ADDRESS MASK — игнорируемые разряды А31 — А24;
Е (Enable) — разрешение: определяет возможность прозрачной трансляции (Е=1 разрешена).
Cl (Cashe Inhibit) — КЭШ запрещен: определяет возможность использования КЭШа ( С1=0 означает, что КЭШ используется);
R/W — чтение/запись: определяет тип доступа в транслируемом блоке: (R/W=0 — запись; R/W=1 — чтение);
RWM (Read/Write Mask) — маска чтения-записи: определяет достоверность поля R/W (RWM=0 — поле используется);
FC BASE (Function Code Base) — значение функционального кода блока прозрачной трансляции;
FC MASK (Function Code Mask) — игнорируемые биты функциональною кода.
При изолированном вводе-выводе процессор должен иметь: специальные команды работы с ПУ, специальные сигналы на шине, различающие обращение к памяти и к ПУ.
В процессорах семейства х86 использован изолированный ввод-вывод. На шине процессора имеются специальные сигналы. При обращении к памяти вырабатываются стробы MEMR, MEMW, а к ПУ — стробы I/OR, I/OW. Схема подключения приведена на рисунке (см. рисунок ниже).
В составе системы команд имеются следующие две команды ввода-вывода:
Номер порта операнда-источника в команде in или операнда-приемника в команде out можно задать двумя способами: непосредственной адресацией или косвенно-регистровой с использованием только регистра dx.
!Примеры.
in al,040h; ввести байт в al из порта 40h
mov dx,0378h; записать номер порта 0378h в регистр dx
in al,dx; ввести байт в al из порта 0378h
mov al,049h; записать байт 49h в регистр al
out dx,al; вывести байт из al в порт, номер которого содержится в dx
Кроме того, в системе команд есть две строковые (цепочечные) команды ввода-вывода: