Логическая организация памяти

Аппаратный интерфейс процессора и памяти во всех компьютерах почти одинаков. Процессор выдает целевой физический адрес ячейки памяти на шину адреса, формирует сигнал считывания или записи, в операции записи помещает данные на шину данных, а память реагирует, возвращая считанные данные по шине данных или воспринимая новые данные с шины данных. Процессор, имеющий п линий в шине адреса, может обращаться к 2" ячейкам памяти. Схема интерфейса действует линейным образом, т.е. каждая из 2П возможных комбинаций соответствует только одной конкретной ячейке памяти. Если вы имеете 32 адресную шину, то возможный объем линейно адресуемой памяти равен 4 Гбайт, что вызывает ряд вопросов, т.к. реально объем оперативной памяти существенно меньше. Реализация потенциально имеющейся памяти — задача логической организации памяти. Есть еще одна непростая проблема — адресация и количество бит для ее представления. Рассмотрим команду ADD, которая требует спецификации трех операндов: двух источников и одного пункта назначения.

Схема команды ADD

Рис 6.7. Схема команды ADD

Если адреса памяти 32-битные, то нам понадобится помимо кода операции три 32-битных адреса, т.е. общее число разрядов, которое будет представлять эту команду и, следовательно, разрядность шины данных будет превышать 100 бит. Представьте себе это число — 2100 , а это ведь минимальные требования к объему адресного пространства памяти в этом случае. Значит необходимо найти способы уменьшения спецификации адресации.

Два метода уменьшения спецификации адресации очевидны.

Во-первых, если операнд используется неоднократно, а это наиболее распространенный случай, его можно переместить в регистр. Это даст не только уменьшение времени доступа, но и, главным образом, меньшее количество бит для определения операнда. Если имеется 32 регистра, любой из них можно определить, используя только 5 битов. Для нашего случая это потребует всего лишь 15 бит для определения всех трех операндов, а не 96.

Во-вторых, сокращение длины команды, что подразумевает определение одного или двух операндов неявным образом. Обычная трехадресная команда ADD использует следующую форму: DESTINATION=SOURSE 1+SOURSE2

Этот формат можно перевести в двухадресную команду и сократить до формы

REGISTER2=REGISTER2+SOURSE 1

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

Адресная, ассоциативная и стековая организация памяти

Запоминающее устройство, как правило, содержит множество одинаковых запоминающих элементов, образующих запоминающий массив. Массив разделен на отдельные ячейки; каждая из них предназначена для хранения двоичного кода, число разрядов в котором определяется шириной выборки памяти (байт, машинное слово или несколько слов). Способ организации памяти зависит от методов размещения и поиска информации в запоминающем массиве. По этому признаку различают адресную, ассоциативную и стековую память.

Адресная память

При адресной организации памяти размещение и поиск информации в запоминающем массиве основаны на использовании адреса хранения слова. Адресом служит номер ячейки массива, в которой это слово размещается. При записи (или считывании) слова в запоминающий массив, инициирующая эту операцию команда должна указывать адрес, по которому производится запись считывание).

Типичная структура адресной памяти содержит запоминающий массив из n-разрядных ячеек (обычно п равно 1, 4, 8 или 16) и его аппаратурное обрамление, включающее регистр адреса РгА, имеющий к разрядов (к больше или равно логарифму по основанию 2 от N), информационный регистр РгИ, блок адресной выборки БАВ, блок усилителей считывания БУС, блок разрядных усилителей-формирователей сигналов записи БУЗ и блок управления памятью БУП.

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

Адресная память

Рис. 6.8. Адресная память.

Такая структура организации памяти позволяет разрешить ряд проблем по хранению символов, закодированных в последовательных байтах (облегчается работа с текстами).

Ассоциативная намять

В памяти этого типа поиск нужной информации производится не по адресу, а по ее содержанию (по ассоциативному признаку). При этом поиск по ассоциативному признаку (или последовательно по отдельным его разрядам) происходит параллельно во времени для всех ячеек запоминающего массива. Во многих случаях ассоциативный поиск позволяет существенно упростить и ускорить обработку данных. Это достигается за счет того, что в памяти этого типа операция считывания информации совмещена с выполнением ряда логических операций.

Память этого типа применяется в специализированных вычислительных машинах, машинах баз данных и при организации работы кэш-памяти. Если использовать адресную память или стек, то процедура поиска и вывода нужной информации сводится к последовательному считыванию содержимого отдельных ячеек памяти, выделению с помощью маски десяти его первых битов, сравнению выделенных битов с искомым кодом и выводом результата. Это очень нерационально. Ассоциативная память резко сокращает время поиска нужной информации. На рисунке 6.9 приведен пример организации подобной памяти.

Структура ассоциативной памяти

Рис. 6.9. Структура ассоциативной памяти

Рассмотрим алгоритм работы устройства. В регистр ассоциативного признака (РАП) УУ передает признак искомой информации (компаранд). Код может содержать произвольное число разрядов от 1 до п-1. Если код не полностью перекрывает разрядную сетку, то в этом случае ненужные разряды маскируются с помощью регистра маски (РМ). Перед началом поиска все разряды в регистре индикаторов адреса (РИА) устанавливаются в «1». После этого опрашиваются все первые разряды ячеек запоминающего устройства (ЗУ). Если содержимое первого разряда i- той ячейки не совпадает с маскированным содержимым 1-го разряда РАП, то соответствующий этой ячейке разряд регистра РИА сбрасывается в «О», если совпадает — на Т, остается «1». Затем операция повторяется с 2-ым, 3-им и т.д. разрядом. После поразрядного опроса и сравнения в «1» останутся те разряды РИА которые соответствуют ячейкам содержащим нужную информацию (совпадение с РАП). Эта информация может быть считана с помощью УУ. Время поиска зависит только от числа разрядов РАП и не зависит от числа ячеек ЗУ.

Стековая память

Стековая память состоит из ячеек, связанных друг с другом разрядными цепями передачи слов. Обмен информацией всегда выполняется только через верхнюю ячейку — вершину стека. При записи нового слова (команды, числа, символа) все ранее записанные слова сдвигаются на одну ячейку вниз, а новое слово помещается на вершину стека. Считывание возможно только с вершины стека и производится с удалением или без удаления считываемого слова. Такую память часто называют памятью типа LIFO (Last — In First — Out последним вошел, первым вышел). Аппаратная реализация стека сложна и обычно стек моделируют программно. При этом в качестве стека обычно используется часть адресной памяти.

Сегментная организация памяти.

Принцип адресации при сегментной организации памяти довольно прост. Представим себе девятиэтажную гостиницу. Каждому этажу присвоен номер от 0 до 9, т.е. на четвертом этаже будут комнаты 401, 402 ... вплоть до 499. Здесь все просто и понятно. Теперь несколько модернизируем систему отсчета, введем понятие сегмент. Будем считать сегментом любую группу из 100 комнат одного этажа. Присвоим каждому сегменту порядковый номер из двух цифр, а не одной как было ранее. Чтобы получить любой номер комнаты на этом этаже в пределах от 0 до 99 введем понятие смещение.

Допустим, номер комнаты — 541 (линейный адрес). Если представить его в виде [сегмент]: [смещение], то можно сказать, что вы живете в комнате с адресом сегмента 54 (номер комнаты 540) и смещением 1 от начала сегмента, в результате мы получим линейный адрес комнаты — 541. Тот же результат мы можем получить и другими способами сегментной адресации:

Адрес сегмента Смещение Адрес

  • 54 1 541
  • 50 41 541
  • 45 91 541

Очевидно, полный адрес состоит из суммы адреса сегмента (умноженного на 10, что реально осуществляется сдвигом на один разряд) и адреса смещения.

Используя различные сегменты и смещения, можно получить один и тот же адрес. Необходимо иметь в виду, что линейный адрес не делится на две составляющие, как и номер комнаты в реальной гостинице. Чтобы лучше понять, как из двух 16 битовых слов получается 20 битовый адрес, еще раз покажем это на двоичном примере.

Пусть имеется 2 машинных слова:

ABCDH и 1234 Н

(вспомним, что каждая 16-ричная цифра представляет 4 бита, например — 111 Ь = 15ю = F)6, символ Н — означает, что число 16- ричное, от англ, hexadecimal);

Берем первое число и приписываем 0 справа (если больше нравится - умножаем на 16), получим ABCD0, т.е. первоначальное число, но со смещением на один 16-ричный разряд. Это 20-ти разрядное число, но оно не может нам служить 20 битовым адресом, т.к. оно заканчивается на нуль и, следовательно может представлять только адреса которые тоже заканчиваются на нуль. Другими словами оно пригодно для адресации каждого 16-го байта или сегмента.

При изменении A,B,C,D изменяется дискретно сегмент (параграф).

Чтобы получить окончательную схему сегментированной адресации возьмем другое 16-ти битовое число — 1234 Н и сложим его с модифицированным первым:

ABCDO + 1234

получим ACF04 , двадцати битовое число, которое

может принимать любые значения от 0 до 1 048 577

Таким образом, ABCD0 — сегментная часть, которая указывает на ту область адреса, которая кратна 16 (сегмент, параграф. Второе число 1234 — смещение, которое указывает конкретное расположение байта внутри сегментного параграфа (это дает 65536 или 64 Кбайт адресов внутри сегмента).

Существует стандарт записи этих сегментированных адресов: ABCD:1234 (ассемблер), т.е. внутри сегмента применяется линейная адресация.

Например, на плате основного адаптера SCSI может быть установлено ПЗУ на 16 Кбайт, ячейкам которого выделен следующий диапазон адресов D4000 — D7FFF, при этом сегмент определяет 4 старших разряда, а смещение - 4 младших разряда. Поскольку эти составляющие перекрываются, конечный адрес можно получить различными способами:

Отметим, что линейный адрес является пятиразрядным, хотя мы использовали для сегмента и смещения четырехразрядные числа (шестнадцатеричной системы счисления). Можно констатировать, что вычисление сегментированного адреса основано на так называемом сегментном сложении, позволяющем получить (например) 20-битовое двоичное число из двух 16 битовых.

Таким образом мы смогли адресоваться к каждой ячейке 16 Кбайт — ного блока из почти 1 Мбайт объема общей памяти, используя только 16 разрядную шину адреса, а не 20 разрядную, как это было бы в случае прямой адресации.

Основные характеристики памяти:

Емкость памяти определяется максимальным количеством хранимой информации;

Удельная плотность записи;

Плотность записи;

Быстродействие измеряется временем цикла обращения к памяти стирания прежней информации с магнитных носителей или процесс подготовки поверхности CD-RW).

Время обращения называется также временем цикла работы памяти или временем цикла доступа памяти.

Вопросы и задания для самоконтроля

  • 1. Что такое основная память в ВМ и ВС?
  • 2. Опишите классификация памяти по специфике использования.
  • 3. В чём отличие статической памяти от динамической?.
  • 4. Что такое DRAM.
  • 5. Опишите структуру организации блока памяти 2D.
  • 6. Опишите структуру организации блока памяти 3D.
  • 7. Опишите структуру организации блока памяти 2.5D
  • 8. Как происходит регенерация памяти и зачем она нужна? Назовите различные методы регенерации.
  • 9. Что такое SRAM?
  • 10. Опишите классификацию памяти в зависимости от возможности записи и перезаписи данных (ROM, PROM, EPROM, EEPROM, Flash Memory).
  • 11. Аппаратный контроль корректности работы памяти.
  • 12. Расскажите как работает контроль четности.
  • 13. Расскажите как работает контроль ЕСС.
  • 14. Логическая организация памяти. Основные характеристики памяти.
  • 15. Опишите особенности сегментной организации памяти. Что такое «сегмент» и «смещение»? Продемонстрируйте вычисление адреса.
  • 16. Каким должно быть значение бита контроля чётности для бита данных, восемь бит которого содержат 00100001?
  • 17. Каким должно быть значение бита контроля чётности для бита данных, восемь бит которого содержат 0010001 1?
  • 18. Каким должно быть значение бита контроля чётности для бита данных, восемь бит которого содержат 10111011?
  • 19. Каким должно быть значение бита контроля чётности для бита данных, восемь бит которого содержат 11111111?
  • 20. Вычислите адрес памяти, на который ссылается Segment:Offset, равные 0203:5BDO.
  • 21. Вычислите адрес памяти, на который ссылается Segment:Offset, равные 0048:7780.
  • 22. Вычислите адрес памяти, на который ссылается Segment:Offset, равные 0204:5ВС0.
  • 23. Вычислите адрес памяти, на который ссылается Segment:Offset, равные FFFF:FFFF. Это максимальное значение адреса, на который может ссылаться комбинация S:0 из двух машинных слов.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >