Сегментация памяти ЭВМ с микропроцессором Intel 8086
ТЕМА 4. ФУНКЦИОНАЛЬНАЯ И СТРУКТУРНАЯ ОРГАНИЗАЦИЯ ЭВМ
ЛЕКЦИЯ 4.2. ВНУТРЕННЯЯ ПАМЯТЬ ПЕРСОНАЛЬНОЙ ЭВМ
СТРУКТУРА ПАМЯТИ ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА
Обрабатываемые данные и выполняемая программа должны находиться в запоминающем устройстве – памяти ЭВМ, куда они вводятся через устройства ввода. Ёмкость памяти измеряется в величинах кратных байту.
Для обеспечения высокой производительности ЭВМ необходимо, чтобы её память удовлетворяла следующим требованиям:
· большая емкость (не менее сотен Мбайт);
· высокое быстродействие (время доступа не более десятка нс);
· энергонезависимость, т.е. обеспечение хранения программ и данных при выключении ЭВМ).
Эти требования невозможно удовлетворить путем построения памяти в виде единого запоминающего устройства (ЗУ), что связано с их противоречивостью. Например, чем больше емкость памяти, тем обычно ниже её быстродействие, или наиболее быстродействующее ЗУ, выполненное на триггерах, не обеспечивает требование по долговременности хранения информации.
Поэтому в современных ЭВМ память представляет собой сложную структуру, построенную по иерархическому принципу, и включает в себя запоминающие устройства различных типов, отличающиеся функциональным назначением, значениями основных характеристик и физическими принципами работы.
Функционально она делится на две части: внутреннюю и внешнюю.
Внутренняя или основная память – это запоминающие устройства, напрямую связанные с процессором и предназначенные для хранения выполняемых программ и данных, непосредственно участвующих в вычислениях. Обращение к внутренней памяти ЭВМ осуществляется с высоким быстродействием, но она имеет ограниченный объём, определяемый системой адресации машины.
Внутренняя память, в свою очередь, делится на оперативную (ОЗУ), постоянную (ПЗУ) память и быструю кэш-память.
ОПЕРАТИВНАЯ ПАМЯТЬ
Основные понятия
Оперативная память, по объему составляющая большую часть внутренней памяти, служит для приёма, временного хранения и выдачи информации (программ и данных), непосредственно участвующей в вычислительном процессе, выполняемом ЭВМ в текущий период времени. Она называется оперативной, так как процессор может обратиться к ячейке этой памяти по её адресу в любой (произвольный) момент времени. Её еще называют памятью с произвольным (прямым) доступом Random Access Memory (RAM). Главным достоинством оперативной памяти, наряду с прямым адресным доступом к её ячейкам, является ее высокое быстродействие, время доступа к ней (access time) составляет десятки нс (50-70 10-9 с). Недостатком ОЗУ является невозможность сохранения информации в ней после выключения питания машины (энергозависимость). Ёмкость ОЗУ в современных ЭВМ составляет 64 –256 Мбайт,
Оперативную память ЭВМ можно представит в виде длинной цепочки элементов, предназначенных для хранения единицы информации 1 бита. Отсюда и элемент памяти также называется битом. Каждый элемент памяти (бит) может находиться в двух различных состояниях, соответствующих двоичным знакам 1 и 0. Перевод элемента памяти (бита) в состояние 0 принято называть очисткой (clear) бита, а в состояние 1 – установкой (set) бита.
Бит, однако, является слишком мелкой единицей памяти, поэтому биты объединяют в группы по 8 штук в каждой. Такая группа из 8 бит называется байтом. Байт памяти может находиться в 28=256 различных состояниях, которые принято обозначать числами от 0 до 255. Их можно представить в разных системах счисления.
Например, состояние 100100102=14610=2228=9216;
001001002=3510=448=2416.
Рис. 4.4. Байт памяти
Биты в байте обозначаются индексами 0…7. Младший имеет индекс 0. Каждый байт составляет ячейку памяти с постоянным номером, называемым адресом. Таким образом, оперативная память в целом это вектор байт с индексом от 0 до некоторого максимального значения, зависящего от объема памяти ЭВМ. Индекс конкретного байта в векторе и есть его адрес. Адреса обычно записываются в 16-ричной системе (реже в 8-ричной).
Объем памяти обычно измеряют Кбайтах или чаще в Мбайтах. Например, для ЭВМ PDP-11, имеющей 16-разрядную шину адреса максимальный объем памяти 216= 64 Кбайт, а максимальный адрес 216-1=FFFF16=1777778=6553510. В компьютерах на процессоре Intel 8086 с 20-разрядной шиной адреса максимальный объем памяти 220= 1 Мбайт, а максимальный адрес
220-1=FFFFF16=37777778=104857510.
Для многих целей, например для представления чисел, и байт слишком малая единица памяти. Поэтому в ЭВМ предусмотрена возможность работать с группами последовательных байтов, адресуясь к первому из них. В 16-разрядных ЭВМ байты объединяют в пары: нулевой с первым, второй с третьим, и т.д. Такая пара байт с соседними адресами, из которых меньший адрес четный, называется словом (машинным словом). Сам меньший адрес (четный) называется адресом слова.
Таким образом память можно представить в виде вектора слов с четными индексами. Всего в PDP-11 имеют адрес 32768 слов, т.е. объем адресуемой памяти 32 Кслов, а у Intel 8086 объем адресуемой памяти 512 Кслов.
Машинное слово с одной стороны является основной единицей памяти, а с другой, как единая последовательность из бит, основной единицей передачи и обработки информации. Оно может быть одновременно помещено в регистр процессора и обработано АЛУ. 16-разрядное слово может принимать 216=65536 различных состояний, биты в слове нумеруются справа налево. Левый байт называется младшим, правый – старшим.
Рис.4.5. Адресация слов памяти
Рис.4.6. 16-разрядное слово
Сегментация памяти ЭВМ с микропроцессором Intel 8086
По сравнению с PDP-11 в ЭВМ с процессором Intel 8086 для формирования 20-разрядного адреса используется особая структура оперативной памяти. Все пространство памяти разделяется на сегменты из смежных ячеек по 64 Кбайта каждый. Причем в любой момент времени процессор может обращаться к ячейкам 4-ёх сегментов, которые программно выбраны в качестве текущих. Сегментация памяти обеспечивает удобный механизм вычисления адресов и способствует модульному проектированию программ.
Начальные адреса текущих сегментов (адреса первых байтов сегментов) записываются в сегментные регистры CS, DS, SS, ES, тем самым фиксируются текущие сегменты кода (программы), данных, стека и дополнительных данных. Для обращения к командам и данным, находящихся в других сегментах, необходимо изменять содержимое сегментных регистров, что позволяет использовать все пространство памяти в 1 Мбайт. Сегментные регистры инициализируются в начале программы путем засылки в них соответствующих констант. Частный случай загрузки всех сегментных регистров нулями приводит к организации памяти характерной для PDP-11, т.е. к отказу от сегментации памяти.
В сегментном регистре хранится 16 старших битов 20-битового начального адреса сегмента. 4 младших бита считаются равными нулю и дописываются справа при вычислении физических адресов ячеек памяти. Поэтому начальные адреса сегментов всегда кратны 16. Других ограничений на размещение сегментов в памяти нет, поэтому сегменты могут быть соседними (смежными), неперекрывающимися, частично или полностью перекрывающимися.
Полная информация, необходимая для определения 20-битового физического адреса ячейки (выдается на шину адреса в начале цикла шины, связанной с обращением к памяти) содержится в адресном объекте <сегмент : смещение>, который называется указателем адреса (логический адрес). Для хранения указателя необходимо два слова: слово с большим адресом содержит начальный адрес сегмента (базу сегмента), слово с меньшим адресом – внутрисегментное смещение, которое определяет расстояние от начала сегмента до нужной ячейки. Например, команды выбираются из текущего кодового сегмента в соответствии с логическим адресом CS:IP, к стеку можно обратиться по адресу SS:SP, обращение к операнду может быть организовано по адресу DS:SI. Здесь IP – регистр указатель команд, SP – регистр указатель стека, SI – индексный регистр.
Для вычисления физического адреса база сегмента сдвигается влево на 4 бита и суммируется со смещением.
Рис.4.7. Вычисления физического адреса у Intel 8086
В ЭВМ с процессором Intel 8086 данные можно размещать в памяти по любому адресу. Однако все же для экономии времени выполнения программы целесообразно размещать слова данных в памяти по четным адресам. Слово с четным адресом называется выровненным на границе слов. Такие слова процессор считывает за один цикл шины (каждый цикл имеет 4 обязательных такта). Слова с нечетными адресами (невыровненные) хотя и допустимы, но требуют 2 цикла шины. Команды всегда выбираются из памяти словами по четным адресам.