Основы языка ассемблер
Оперативная память
Оперативная память (ОП) ПК делится на ячейки размером в 8 разрядов (битов) или в 1 байт. В каждом разряде может быть записано значение 0 или 1. Разряды байта нумеруются справа налево от 0 до 7. При этом правые разряды (с меньшими номерами) называются младшими, а левые разряды - старшими. Для краткости содержимое ячеек часто записывают в шестнадцатиричной системе, указывая в конце записи букву h (hexadecimal - шестнадцатиричный). Например, содержимое байта 0001011 можно записать как 13h (десятичное 19). Байты нумеруются с 0, порядковый номер байта называется его адресом. Словом (word) называют два соседних байта, его размер 16 разрядов, нумеруемых справа налево от 0 до 15. Его адресом считается по определению адрес его первого байта (с меньшим разрядом). Двойное слово (double word) - это четыре соседних байта или два соседних слова. Размер двойного слова - 32 разряда, они нумеруются справа налево от 0 до 31. Адрес двойного слова - адрес первого из его байтов (с наименьшим адресом). ПК может работать как с байтами, так и со словами и двойными словами (и в целом, и побайтно). При наличии 16-разрядного кода адреса можно непосредственно адресовать всего 216=164=65536 байт=64К (1К=210=1024) с адресами от 0 до FFFF. Этот объем 64Кбайт, называемый сегментом, является базовым в логической структуре. Объем непосредственно адресуемой оперативной памяти ПК - 220 байт (1 Мбайт), поэтому для ссылок на байты памяти нужны 20-разрядные слова - от 00000h до FFFFFh. Непосредственно адресуемая память состоит из стандартной памяти (CMA – Conventional Memory Area) в диапазоне от 0 до 640К, (первые 64К из них – это область служебных программ и данных ОС, а в остальных 576К размещаются программы и данные ОС и пользователя) и верхней памяти (UMA – Upper Memory Area) в диапазоне от 640 до 1024К, зарезервированной для видеопамяти и постоянного запоминающего устройства (ПЗУ – 128К). Свободные участки верхней памяти могут использоваться и в качестве ОП общего назначения. Память с адресами 1024К и выше называют расширенной, доступ к ней возможен при использовании специальных программ-драйверов или в защищенном режиме работы микропроцессора. Ее часть от 1024 до 1088К, называемая высокой памятью, может адресоваться непосредственно при сложении максимального адреса сегмента FFFFF и смещения, не превышающего 64К.
Если требующееся программе адресное пространство превышает размер оперативной памяти, данные размещаются на жестком диске. Единое адресное пространство, используемое при этом программой, называют виртуальной памятью. Оно делится на секции (страницы) одинаковой величины. Выгрузка на диск и загрузка в оперативную память (для последующей выборки по запросу процессора) производится страницами. Этот процесс, выполняемый операционной системой, называется свопингом (от англ. swap – подкачивать) или пейджингом (paging - постраничная подкачка). Виртуальный адрес состоит из номера страницы и смещения (адреса относительно начала страницы). Преобразование виртуального адреса в физический при чтении/записи данных выполняет устройство управления памятью (Memory Management Unit) с помощью таблицы страниц.
Для эффективной работы компьютера необходимо, чтобы операции выборки данных из памяти выполнялись со скоростью, сравнимой со скоростью их обработки центральным процессором. Поэтому используется иерархическая память с двумя основными уровнями – маленькая, но быстрая память (регистры микропроцессора, кэш-память первого и второго уровней) и медленная память большого объема (оперативная и внешняя память). Кэш-память предназначена для хранения данных из оперативной памяти, которые использовались недавно. Согласно принципу локальности во времени, если программа обратилась к какому-либо элементу данных, он может вскоре понадобиться вновь. Согласно принципу локальности в пространстве, при этом могут потребоваться элементы данных, адреса которых мало отличаются от адреса данных, используемых в настоящий момент.