logo
ОССиО_методичка_1 / ВССиТ / Остаток лекции_ВССиТ

Организация распределения памяти в эвм

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

Ключевую роль в этой иерархии играет оперативная память. Именно в ней хранятся программы во время их исполнения, именно отсюда загружаются в регистры микропроцессора исходные данные для обработки. Сюда же, как правило, передаются и окончательные результаты работы программ. Поэтому рациональное использование ОЗУ на протяжении всего времени работы ЭВМ чрезвычайно важно.

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

Распределение памяти предполагает удовлетворение потребностей как пользователей, так и системных средств. Эти требования в большей части противоречивы.

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

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

Подсистема управления памятью выполняет такие функции, как:

Все доступное множество адресов элементов хранения, упорядоченное по какому-либо признаку, называют адресным пространством памяти. Адресное пространство памяти может быть организовано в соответствии двумя моделями:

При использовании сплошной модели (flat model) памяти программа оперирует единым непрерывным адресным пространством, в котором ячейки памяти нумеруются последовательно и непрерывно. В этом случае каждая ячейка имеет свой уникальный номер, называемый «физическим адресом».

При использовании сегментированной модели (segmented model) для программы память представляется группой независимых адресных блоков, называемых сегментами. Для указания байта памяти программа должна использовать уже логический адрес, состоящий из сегмента и смещения, т.е. две координаты. (аналогия с квартирами в пределах улицы и дома - для примера).

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

Для адресации данных программы используют логическую адресацию. Процессор автоматически транслирует логические адреса в физические, которые понимаются адресной шиной и контроллерами памяти. Преимущество логической адресации очевидно: при её использовании к оперативной памяти можно добавить внешнюю память (винчестер, флэш), которая будет являться как бы «продолжением» оперативной памяти. Таким образом будет сформировано виртуальное адресное пространство (Вирт.= Внутр.+Внешняя). Для персональных ЭВМ на основе 32-разрядных микропроцессоров объем виртуальной памяти равен: Vвирт= 232 = 4 Гбайт.

***

Логическая структура оперативной памяти.

Вообще логическая структура оперативной памяти устроена достаточно интересно. Она является во-первых: «слоистой», а во вторых: «ячеистой» в пределах каждого слоя. Однако, «слоистость» учитывалась только в лишь в ОС ДОС и ей подобных.

*Немного о том, как происходила «эволюция» оперативной памяти, а точнее её объема.

Дело в том, что первые ПК с процессорами 80186, 80286 могли адресовать («понимали») только до 1 Мбайт памяти (если точнее, то 1024 Кб или = FFFFFв 16-ричном виде, или = 220), причем и этого было полнее достаточно для ОС ДОС и прикладных программ!. В современных ПК это называетсяреальный режим(режимDOS). Т.е. ОП организована как одномерный массив ячеек памяти размером в 1 байт с диапазоном адресов от 00000 до FFFFF.

В то же время, регистровая память микропроцессора составляла еще меньше - всего 64 Кб, или = FFFF, или = 216и именно поэтому в качестве стандартной длины маш. слова взят 16-битный адресный код. Любые два смежных байта в памяти могут рассматриваться как 16-битовое слово.

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

ОС и программы должны обращаться и к той и другой памяти, а значит нужна какая единая нумерация и она действительно есть. На следующ. слайде представлена схема адресного пространства размером 1 Мб = 1024 Кб (*** слайд 43). На этой схеме: Сегмент 0… Сегмент 15 - это наборы (блоки) ячеек размером 64 Кб (FFFF), а смещение - это конкретная ячейка внутри сегмента. Таким образом, полный (физический) адрес ячейки состоит из адреса сегмента + адреса смещения.

Схематично связь между 16-битной и 20 битной адресацией можно представить в следующем виде (*** слайд 44). А формулу для перевода из одной адресации в другую можно представить в таком виде: (***слайд 45).

- адрес сегментасегм) – это номер 64-Кбайтового блока, внутри которого находится адресуемая ячейка. Максимальный номер сегмента =FFFFh;

- адрес смещениясм) – это относительный 16-разрядный адрес внутри сегмента. Максимальное смещение может быть также =FFFFh;

- абсолютный (полный, физический) адрес– (Аабс) формируется из суммыадреса смещенияиадреса сегмента * 16.

формула: Аабс = Асегм*16 + Асм.

*здесь цифра 16 нужна для перевода 16-разрядного кода в 20-разрядный код (1 Мбайт). Т.е. если мы допишем справа 0000, то сама информация от этого не изменится, а кодировка будет соответствовать 20-разрядной.

Следует отметить, что CPUможет обращаться к основной памяти только через абсолютный адрес, а программист – может использовать все 3 компонента адресов.

Если рассматривать структуру памяти на физическом уровне, то ячейки оперативной памяти организованы в матрицу, состоящую из строк и столбцов. Таким образом полный физический адрес ячейки состоит из адреса строки (Row) и столбца (Columns). Внутри памяти существуют свои шины, по которым передаются управляющие сигналы и информация к соответствующим ячейкам и от них. Каждаямикросхема памяти имеет 4, 8 или 16 таких матриц, и соответственно – столько же линий ввода-вывода, и такую же разрядность шины. Количество бит информации, которое хранится в ячейках каждой матрицы, называетсяглубиной адресного пространства. (***слайд 46)

При поступлении на входы микросхемы адреса ячейки производится одновременное чтение / запись всех ячеек, находящихся по данному адресу, но в различных матрицах. Например, если микросхема имеет 8 матриц, то проц. может считывать информацию побайтно (по 8 бит сразу). Таким образом, общ. емкость микросхемы определяется как:

С=D*N,

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

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

Оперативная память по принципу действия делится на два большие класса – динамическаяистатическая.

Память статического типа обладает более высоким быстродействием. Ячейки этой памяти построены на основе специальных электронных переключателей – триггеров, которые имеют 2 устойчивых состояния (0 и 1). После записи бита в такую ячейку, при наличии питания он может сохраняться в ней неограниченное время. Т.к. эта память считается более быстрой и дорогой, то очень часто она используется в качестве кэш-памяти и процессорной (регистровой) памяти.

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

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

Время обращения к кэшу зависит от тактовой частоты, на которой она работает и обычно составляет 1-2 такта. Например, для кэш L1 проц.Pentiumвремя обращения составляет порядка 2-5 нсек, а для кэшL2 иL3 (если есть) – до 10 нсек. Чем больше размер КЭШа, тем выше быстродействие системы, но эта зависимостьнелинейная. В частности, для современных ПК существенный рост производительности прекращается уже после 1 Мбайт кэшаL2. Многие внешние запоминающие ус-ва, например, винчестеры имеют свою кэш-память, т.е. как бы кэш следующего ур-ня (3-го, 4-го, 5-го и т.д.).

Время, необходимое для чтения/записи данных называется временем доступа(Accesstime), для современных микросхем оно составляет не более 40-60 нсек. Время доступа всегда присутствует в маркировке микросхем памяти. Практический опыт показывает, что нежелательно на одной материнской плате использовать модули памяти разных производителей и с разницей во времени доступа > 10 нсек.

Временная диаграммахарактеризуетколичество тактов, которые необходимы CPU для выполнения 4-х последовательных операций считывания данных. Например, современная синхронная динамическая память имеет временную диаграмму 5-1-1-1. Это означает, что для считывания первого байта необходимо 5 тактовCPU, а для трех последующих – по одному такту.

За последние 10-15 лет производительность CPUувеличилась примерно в 100 раз, в то время как пропускная способность элементов памяти (объем информации в Мбайт/Гбайтах пересылаемых по сист. шине за 1 сек. между процессором и модулем памяти) всего лишь в 10-12 раз. Таким образом, элементы памяти стали тормозить работу всей системы в целом, т.к. процессор вынужден простаивать в ожидании готовности памяти. Для исправления данной ситуации фирмы-производители микросхем памяти пытаются найти новые технические решения.

***