Jump to content

Нулевая страница

Нулевая страница или базовая страница — это блок памяти в самом начале компьютера пространства адресного ; то есть страница , начальный адрес которой равен нулю. Размер страницы зависит от контекста, а значение памяти с нулевой страницей по сравнению с памятью с более высокой адресацией сильно зависит от архитектуры машины. Например, семейства процессоров Motorola 6800 и MOS Technology 6502 образом обрабатывают первые 256 байт памяти особым . [1] тогда как многие другие процессоры этого не делают.

В отличие от более современного оборудования, в 1970-х годах оперативная память компьютера была такой же быстрой, как и процессор. [ нужна ссылка ] Таким образом, имело смысл иметь мало регистров и использовать основную память как расширенный пул дополнительных регистров. В машинах с относительно широкой 16-битной адресной шиной и сравнительно узкой 8-битной шиной данных вычисление адреса в памяти могло занять несколько циклов. Однобайтовый адрес нулевой страницы был меньше и, следовательно, быстрее считывался и вычислялся, чем другие адреса, что делало нулевую страницу полезной для высокопроизводительного кода.

Адресация нулевой страницы теперь имеет в основном историческое значение, поскольку развитие интегральных схем технологии сделало добавление большего количества регистров в ЦП менее затратным, а операции ЦП стали намного быстрее, чем доступ к ОЗУ.

Фактический размер нулевой страницы в байтах определяется конструкцией микропроцессора и в старых конструкциях часто равен наибольшему значению, на которое могут ссылаться индексные регистры процессора. Например, вышеупомянутые 8-битные процессоры имеют 8-битные индексные регистры и размер страницы 256 байт. Следовательно, их нулевая страница простирается от адреса 0 до адреса 255.

Компьютеры с небольшим количеством регистров ЦП

[ редактировать ]

В ранних компьютерах, таких как PDP-8 , нулевая страница имела специальный режим быстрой адресации , что облегчало ее использование для временного хранения данных и компенсировало нехватку ЦП регистров . У PDP-8 был только один регистр, поэтому нулевая адресация страниц была необходима. В исходных моделях PDP-10 KA-10 доступные регистры представляют собой просто первые 16 слов длиной 36 бит основной памяти. Доступ к этим ячейкам можно получить как через регистры, так и через ячейки памяти.

компьютера 1970-х годов В отличие от более современного оборудования, оперативная память была такой же быстрой, как и процессор. Таким образом, имело смысл иметь мало регистров и использовать основную память как расширенный пул дополнительных регистров. В машинах с 16-битной адресной шиной и 8-битной шиной данных доступ к ячейкам нулевой страницы может быть быстрее, чем доступ к другим местам. Поскольку адреса нулевых страниц могут быть адресованы одним байтом , инструкции, обращающиеся к ним, могут быть короче и, следовательно, загружаться быстрее.

Например, семейство MOS Technology 6502 имеет только один регистр общего назначения: аккумулятор. Чтобы компенсировать это ограничение и получить преимущество в производительности, 6502 специально разработан для использования нулевой страницы, предоставляя инструкции, операнды которых имеют восемь бит вместо 16, что требует меньшего количества циклов выборки из памяти. Многие инструкции кодируются по-разному для адресов нулевой и ненулевой страниц; в терминологии 6502 это называется адресацией с нулевой страницей она называется прямой адресацией ( в Motorola 6800 терминологии ; Western Design Center 65C816 также называет адресацию с нулевой страницей прямой адресацией страниц ):

 LDA $12            ; zero page addressing
 LDA $0012          ; absolute addressing

На языке ассемблера 6502 обе приведенные выше инструкции выполняют одно и то же: они загружают значение ячейки памяти. $12 в .A (аккумулятор) регистр ( $ — обозначение языка ассемблера Motorola/MOS Technology для шестнадцатеричного числа). Однако длина первой инструкции составляет всего два байта, и для ее выполнения требуется три такта. Вторая инструкция имеет длину три байта и требует для выполнения четырех тактов. Эта разница во времени выполнения может стать существенной в повторяющемся коде.

Некоторые процессоры, такие как Motorola 6809 и вышеупомянутый WDC 65C816, реализуют «регистр прямой страницы» ( DP), который сообщает процессору начальный адрес в ОЗУ того, что считается нулевой страницей. В этом контексте адресация нулевой страницы является условной; фактический доступ не будет к физической нулевой странице, если DP загружается с каким-либо адресом, отличным от $00 (или $0000 в случае 65C816).

Нулевые указатели

[ редактировать ]

В отличие от первоначального предпочтительного использования нулевой страницы, некоторые современные операционные системы, такие как FreeBSD , Linux и Microsoft Windows, [2] фактически сделать нулевую страницу недоступной для перехвата использования нулевых указателей . Такие значения указателей могут законно указывать на неинициализированные значения или контрольные узлы , но они не указывают на действительные объекты. Код с ошибками может попытаться получить доступ к объекту через нулевой указатель, и это может быть перехвачено на уровне операционной системы как нарушение доступа к памяти .

Векторы прерываний

[ редактировать ]

Однако в некоторых компьютерных архитектурах начало адресного пространства все еще резервируется для других целей; например, системы Intel x86 резервируют первые 256 двойных слов адресного пространства для таблицы векторов прерываний (IVT), если они работают в реальном режиме .

Похожий метод использования нулевой страницы для векторов, связанных с аппаратным обеспечением, использовался в архитектуре ARM. В плохо написанных программах это может привести к поведению «ofla», когда программа пытается прочитать информацию из непредусмотренной области памяти и воспринимает исполняемый код как данные или наоборот. Это особенно проблематично, если область нулевой страницы используется для хранения векторов перехода системы, а прошивка обманом перезаписывает их. [3]

В 8-битном CP/M нулевая страница используется для связи между запущенной программой и операционной системой.

Адресация страниц

[ редактировать ]

В некоторых процессорных архитектурах, например в 4-битном процессоре Intel 4004 , память была разделена на страницы (256 байт), и приходилось принимать особые меры предосторожности, когда поток управления пересекал границы страниц , поскольку некоторые машинные инструкции вели себя по-разному, если располагались в последние несколько инструкций страницы, так что для перехода между страницами рекомендовалось только несколько инструкций. [4]

См. также

[ редактировать ]
  1. ^ Сьёдин, Томас; Йонссон, Йохан (2006). Студенческие работы по компьютерной архитектуре (PDF) . Умео, Швеция. п. 29. S2CID   14355431 . Архивировано из оригинала (PDF) 9 марта 2019 г. Проверено 21 августа 2019 г. {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  2. ^ «Управление виртуальной памятью» . Майкрософт . 05.12.2014 . Проверено 5 декабря 2014 г.
  3. ^ «Дыра в безопасности ARM — двоюродный брат» . drobe.co.uk. 24 апреля 2007 г. Проверено 22 октября 2008 г.
  4. ^ «4.1 Пересечение границ страницы». Руководство по программированию на языке ассемблера MCS-4 — Руководство по программированию микрокомпьютерной системы INTELLEC 4 (PDF) (предварительное издание). Санта-Клара, Калифорния, США: Корпорация Intel . Декабрь 1973 г. стр. 2–4, 2–14, 3–41, 4–1. MCS-030-1273-1. Архивировано (PDF) из оригинала 01 марта 2020 г. Проверено 02 марта 2020 г. […] некоторые инструкции функционируют иначе, когда они расположены в последнем байте (или байтах) страницы, чем когда они расположены в другом месте. […] Два адреса находятся на одной странице, если старшие шестнадцатеричные цифры их адресов равны. […] Если инструкция JIN расположена в последней ячейке страницы в памяти, старшие 4 бита счетчика программы увеличиваются на единицу, в результате чего управление передается в соответствующую ячейку на следующей странице. […] Если бы […] JIN находился по десятичному адресу 255 (0FF шестнадцатеричный), управление было бы передано по шестнадцатеричному адресу 115, а не по шестнадцатеричному адресу 015. Это опасная практика программирования, и ее следует избегать, когда это возможно. […] программы хранятся либо в ПЗУ, либо в программном ОЗУ, оба из которых разделены на страницы. Каждая страница состоит из 256 8-битных ячеек. Адреса от 0 до 255 составляют первую страницу, адреса 256–511 — вторую страницу и так далее. В общем, хорошей практикой программирования является никогда не позволять потоку программы пересекать границу страницы, кроме как с помощью инструкции JUN или JMS. […]

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1551fd9b03e27009a7adbe60ed509afe__1715263440
URL1:https://arc.ask3.ru/arc/aa/15/fe/1551fd9b03e27009a7adbe60ed509afe.html
Заголовок, (Title) документа по адресу, URL1:
Zero page - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)