Cтраница 4
Это означает, что для задания полного адреса любого байта основной памяти необходимо 24 двоичных разряда. Однако в машинных командах под указание адреса основной памяти отводится только 16 или 20 разрядов. [46]
В Системе 370 использована схема адресации, состоящая из базового адреса и адреса смещения, которая позволяет производить относительную адресацию внутри блока основной памяти размером 4096 байтов. Три поля команды служат для формирования адреса основной памяти: поле В, определяющее регистр базы; поле X, определяющее индексный регистр; поле D, служащее для определения смещения. Поля В и X, определяющие регистры, имеют длину 4 бита и указывают номер одного из 16 регистров общего назначения. Поле смещения D имеет длину 12 битов и позволяет производить адресацию к любому из 4095 байтов информации сверх базового адреса. Многие команды в Системе 370 определяют также и индексный регистр, который может быть использован при формировании адреса. Исполнительный адрес при обращении в основную память определяется путем сложения содержимого базового-регистра, индексного регистра ( если последний используется) и поля смещения команды, как это показано на рис. 3.15. При выполнении указанных действий с адресами используются 24 младших бита базового и индексного регистров. [47]
Управление буферной памятью осуществляется с помощью адресного массива и массива замещения, которые рассмотрены в гл. Элемент адресного массива образован старшими разрядами адреса основной памяти для блока из 32 байтов, который в данный момент находится в сртветствующей ячейке буфера. При обращении процессора к основной памяти адресный массив позволяет определить, находится ли требуемая информация в буферной памяти или нет. Таким образом, исполнительный адрес сравнивается не более чем с четырьмя адресами, занесенными в адресный массив. [48]
Имя-фазы - это имя, присвоенное фазе, и оно должно совпадать с именем программы па карте JOB. Если f А, то смещение задает адрес основной памяти, начиная с которого редактор связей будет помещать программу. Если f S, то рабочая программа будет помещена по адресу, равному адресу первой свободной ячейки после супервизора плюс смещение. [49]
Использование данных типа метка рассматривается в разд. Данные типа указатель запйсываются только в виде переменных и предназначены для задания адреса основной памяти. Этот тип переменных рассматривается в разд. [50]
Одним из вопросов, которые приходится решать при написании программы, является размещение данных и самой программы в памяти ЭВМ. При использовании стандартных подпрограмм им также необходимо отвести место в памяти. При этом адрес основной памяти, с которого программист хочет ( или может) разместить стандартную подпрограмму, часто не совпадает с адресом, с которого она начиналась при написании. В этом случае стандартную подпрограмму необходимо переместить, подвергнув некоторой переработке, с тем чтобы она могла правильно работать на другом месте. [51]
Двоичный загрузчик ( илиJ абсолютный загрузчик) загружает подготовленную программу, представленную в абсолютной двоичной форме, с некоторого внешнего устройства в оперативную память, не внося в ее код никаких изменений. Такие загрузчики легко реализуются, но имеют несколько недостатков. Программист должен задавать адреса основной памяти, в которую должна загружаться программа. Он должен помнить и явно использовать абсолютные адреса каждой подпрограммы во всех вызовах подпрограммы. Он должен внимательно следить за тем, чтобы не присвоить двум или большему числу программных сегментов одни и те же или перекрывающиеся области памяти. Однако, если предполагается, что программа будет многократно использоваться с одним в тем же распределением памяти или в какой-то момент после начала выполнения программы требуется скопировать содержимое оперативной памяти, образовав контрольную точку начиная с которой можно было бы вновь начать работу в случае появления после нее сбоя машины, представляется удобным иметь код в абсолютной двоичной форме на некотором внешнем устройстве. [52]
Оператор PHASE предназначен для каталогизации фазы и для создания многофазовых программ. Создание многофазовых программ производится па уровне объектных модулей, которые могут располагаться в библиотеке или на устройстве SYSIPT. Оператор PHASE задает имя фазы и адрес основной памяти, начиная с которого она будет размещаться при выполнении. Этот оператор должен предшествовать первой карте объектного модуля или оператору INCLUDE. Оператор PHASE записывается в виде PHASE имя фазы, адрес загрузки [ NOAUTO ], где имя фазы - наименование программной фазы, содержащее от одного до восьми алфавитно-цифровых символов, начинающееся с буквы ( для многофазовых программ фонового раздела первые четыре символа наименования лучше иметь одинаковыми, а для разделов переднего плана первыми символами указать FGP); адрес загрузки указывает адрес основной памяти, с которого отредактированная фаза должна загружаться для выполнения. [53]
![]() |
Адресуемые форматы для памяти с адресуемыми байтами. [54] |
Большой памятью называют память, получаемую в результате расширения основной оперативной памяти за счет присоединения к ней вспомогательной памяти большого объема, но меньшего быстродействия. Большая пам ять и основная память образуют иерархию памятей, непосредственно адресуемых центральным процессором. Адреса большой памяти являются естественным продолжением адресов основной памяти, хотя обращение к большой памяти требует значительно большего времени. При работе с информацией, хранящейся в большой памяти, скорость центрального процессора снижается по сравне-нению со скоростью его работы с информацией, хранимой в основной памяти. Для некоторых применений оказывается целесообразным передавать команды или данные в основную память перед их обработкой в процессоре; в других случаях связанные с этим дополнительные расходы не оправданы. [55]
Запоминающие устройства большого объема ( известные также как ферритовые ЗУ большого объема) представляют собой адресуемую оперативную память большого объема. ЗУ сверхбольшого объема LCS часто используется вместе с основной памятью процессора, образуя иерархическую память процессора с прямой адресацией. Адреса LCS могут рассматриваться как расширение массива адресов основной памяти, однако время цикла LCS значительно больше, чем время цикла основной памяти. Так, в обычных LCS время цикла может составлять около 8 мкс. Для уменьшения эффективного времени цикла часто используют расслоение блоков памяти по адресам. Процессор может выбирать команды и данные непосредственно из LCS, но при этом уменьшается быстродействие системы. В некоторых случаях оказывается более эффективным предварительное перемещение информации из LCS в основную память, однако в ряде случаев дополнительные затраты времени на такое перемещение оказываются неоправданными. [56]