Линейная и сегментная адресация
В 16-разрядных МП длина слова равна 16 бит, адресуемое пространство памяти составляет 1-16 Мбайт, оперативный блок состоит из 16 регистров общего назначения. Шина данных является 16-разрядной, используется расширенный набор команд, включающий команды умножения, деления и др, отсутствующие в 8-разрядных МП. Адреса обычно представляют собой 20-24-разрядные слова. Среди устройств этого класса имеются процессоры с раздельными шинами данных и адресов Motorola (MC68000) с большим количеством выводов (64) и процессоры с совмещенными шинами данных и адресов фирмы Intel и Zilog (8086 и Z8001), с меньшим количеством выводов (40 и 48 соответственно).
Если число разрядов адреса превышает длину информационного слова, возникают вопросы: в какой форме поместить такой адрес в регистр и каким способом осуществлять вычисление адреса? Для решения этих задач используют два способа адресации: линейную и сегментную.
При линейной адресации адрес представляет собой отдельное целочисленное значение. Вычисление адреса осуществляется с помощью операций сложения, приращения 16-ти разрядов слова двойной длины .В 16-разрядных МП выполняются аналогичные операции, т.е. адреса хранятся в 32-разрядных регистрах двойной длины. Архитектура такого процессора довольно сложная, но зато удобная для использования, т.к. все адресное пространство используется, как единое целое.
При сегментной адресации все пространство адресов делится на множество сегментов, т.е. пространство является сегментированным. Начальный адрес сегмента называют базовым. Порядок разбиения на сегменты может быть произвольным и после того, как он установлен, адрес можно представить с помощью номера (базового адреса) сегмента и смещения. Т.е. можно использовать два 16-разрядных регистра. Следовательно, максимальный размер одного сегмента составит 64Кбайт, а вычисления адреса сводится только к вычислению смещения. Для вычисления смещения можно воспользоваться тем же 16-разрядным АЛУ, что значительно упрощает структуру МП.
В МП MC68000 используется линейная адресация. 24-разрядный код адреса позволяет обращаться к 16 Мбайтам адресного пространства. Адреса хранятся в 32-разрядных регистрах. Операционный блок, кроме 16-го АЛУ, содержит два 16-разрядных сумматора, с помощью которых одновременно осуществляется вычисления 32-разрядных адресов. В МП 8086 и Z8001 применяется сегментная адресация. В 8086 используется базовый адрес сегмента и смещения, а в Z8001 – номер сегмента (7 старших бит) и 16 разрядов – смещение.
Память в микро-ЭВМ на базе МП Intel 8086 (отечественный аналог КР1810ВМ86) логически организована как одномерный массив байтов, каждый из которых имеет адрес в диапазоне 0000 – FFFFF. Любые два смежных байта могут рассматриваться как 16-битовое слово. Младший байт имеет меньший адрес, старший – больший. Адресом слова считается адрес его младшего байта.
Полная информация, необходимая для определения его физического адреса содержится в адресном объекте “сегмент-смещение”, который называется указателем адреса и содержит адрес сегмента и внутрисегментное смещение. Для запоминания указателя адреса требуется два слова памяти, причем слово с меньшим адресом всегда содержит смещение, а слово с большим адресом – базовый адрес сегмента.
Команды, байты и слова данных можно свободно размещать по любому адресу, что позволяет экономить память, благодаря ее плотной упаковки. Однако, для экономии времени выполнения программ, целесообразно размещать слова данных в памяти по четным адресам, т.к. МП передает такие слова за один машинный цикл. Слово с четным адресом называется выровненным на границе слов. Слова с нечетными адресами (не выровненные) также допустимы, но для их передачи требуется два цикла шины, что снижает производительность МП. Следует отметить, что интерфейсный блок процессора (BIU) инициирует необходимое для выборки слова число обращений к памяти автоматически, так что двукратное обращение к памяти не требует специального указания в программе. Особенно важно иметь выровненные слова для операций со стеком, так как в них участвуют только слова. Следовательно, указатель адреса стека SP необходимо всегда инициализировать на четный адрес.
Команды всегда выбираются словами по четным адресам, за исключением первой выборки после передачи управления по нечетному адресу, когда выбирается один байт. Поток команд разделяется на байты при заполнении конвейера команд внутри МП. Т.о. выравнивание команд не влияет на производительность и потому не используется.
Дата добавления: 2016-02-09; просмотров: 1606;