Ячейки памяти, порты и регистры

Поясним разницу между ячейками памяти, портами и регистрами.
Ячейки памяти служат лишь для хранения информации – сначала ее записывают в ячейку, а потом могут прочитать, а также записать иную информацию.
Порты ввода-вывода , как правило, служат для преобразования двоичной информации в какие-либо физические сигналы и обратно. Например, порт данных параллельного интерфейса формирует электрические сигналы на разъеме, к которому обычно подключают принтер. Порт состояния того же интерфейса электрические сигналы, поступающие от принтера, отображает в виде набора бит, который может быть считан процессором.
Регистр–довольно широкое понятие, которое зачастую используется как синоним порта.
Каждый байт (ячейка памяти, порт) имеет собственный уникальный физический адрес. Этот адрес устанавливается на системной шине процессором, когда он инициирует обращение к данной ячейке или порту. В семействе х86 и PC-совместимых компьютерах пространства адресов ячеек памяти и портов ввода-вывода разделены. Это предусмотрено с обеих сторон: процессоры позволяют, а компьютеры используют данное разделение. Нынешние процессоры имеют разрядность физического адреса памяти 32 и даже 36 бит, что позволяет адресовать до 4 и 64 Гбайт соответственно. Пространство ввода-вывода использует только младшие 16 бит адреса, что позволяет адресовать до 65 384 однобайтных регистров. Адреса «исторических» системных устройств PC не изменились с самого рождения – это дань совместимости, которая без разделения пространств вряд ли бы просуществовала столько лет. Пространства памяти и портов ввода-вывода неравнозначны не только по объему, но и по способам обращения. Способов адресации к ячейке памяти в х86 великое множество, в то время как для адресации ввода-вывода их существует только два. К памяти возможна (и широко используется) виртуальная адресация, при которой для программиста, программы и даже пользователя создается иллюзия гигантского размера оперативной памяти. К портам ввода-вывода обращаются только по реальным адресам, правда, и здесь возможна виртуализация, но уже чисто программными средствами операционной системы. И, наконец, самое существенное различие пространств памяти и портов ввода-вывода: процессор может считывать инструкции для исполнения только из пространства памяти. Конечно, через порт ввода можно считать фрагмент программного кода (что и происходит, например, при считывании данных с диска), но для того чтобы этот код исполнить, его необходимо записать в память.
Регистры различных устройств могут быть приписаны как к пространству портов ввода-вывода, так и к пространству памяти. Под портом устройства, как правило, подразумевают регистр, связанный с этим устройством и приписанный к пространству портов ввода-вывода. Точность вышеприведенной терминологии, конечно же, относительна. Так, к примеру, ячейки видеопамяти (тоже память!) служат в основном не для хранения информации, а для управления свечением элементов экрана.
загрузка...