68
считается адрес его младшего байта. Таким образом, 20-битовый адрес
памяти может рассматриваться и как адрес байта, и как адрес слова.
Полная информация, необходимая для определения физического
адреса, содержится в адресном объекте «сегмент : смещение», который
называется указателем адреса и содержит адрес сегмента и внутрисегментное
смещение. Для запоминания указателя адреса требуется два слова памяти,
причем слово с меньшим адресом всегда содержит смещение, а слово с
большим адресом — базовый адрес сегмента. Каждое слово хранится
обычным образом, т. е. по принципу «младший байт — по меньшему
адресу».
Команды, байты и слова данных можно свободно размещать по
любому адресу, что позволяет экономить память благодаря ее плотной
упаковке. Однако для экономии времени выполнения программы
целесообразно размещать слова данных в памяти по четным адресам, так как
МП передает такие слова за один цикл шины. Слово с четным адресом
называется выравненным на границе слов. Слова с нечетными адресами
(невыравненные) также допустимы, но для их передачи требуются два цикла
шины, что снижает производительность МП. (Каждый цикл имеет четыре
обязательных такта Т). Отметим, что шинный интерфейс инициирует
необходимое для выборки слова число обращений к памяти автоматически,
так что двукратное обращение к памяти не требует специального указания в
программе. Особенно важно иметь выравненные слова для операций со
стеком, так как в них участвуют только слова. Следовательно, указатель
стека SP необходимо всегда инициализировать на четный адрес.
Команды всегда выбираются словами по четным адресам, за
исключениием первой выборки после передачи управления по нечетному
адресу, когда выбирается один байт. Поток команд разделяется на байты при
заполнении очереди команд внутри МП, так что выравнивание команд не
влияет на производительность и поэтому не используется.
Подключение блоков памяти.
При подключении ЗУ к шинам МПС необходимо обеспечивать
передачу как двухбайтовых слов, так и отдельных байтов. С этой целью
память выполняется в виде двух банков (рис. 2.5): младшего, подключаемого
к линиям данных D7 – DO и содержащего байты с четными адресами (А0 =
0), и старшего, соединенного с D15 – D8 и содержащего байты с нечетными
адресами (А0 = 1). Чтобы каждое слово передавалось за один цикл шины,
слова располагают только с четных адресов. Напомним, что адресная линия
АО совместно с линией разрешения старшего банка ВНЕ обеспечивает
следующие варианты пересылок по шине данных:
А0 = 0, ВНЕ = 0 – пересылается слово;
А0 = 0, ВНЕ = 1 – пересылается только младший байт;
A0 = l, BHE = 0 – пересылается только старший байт,