Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gosy_voprosy / вопрос_78.docx
Скачиваний:
18
Добавлен:
12.04.2015
Размер:
99.27 Кб
Скачать

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

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

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

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

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

Рассматривая расслоение адресов, можно отметить его аналогию с некоторыми режимами работы RAID-контроллеров.

Рис. 6. Распределение адресов адресного пространства памяти по блокам (а – последовательное, б – с расслоением по блокам)

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

Динамическое распределение памяти — способ выделения оперативной памяти компьютера для объектов в программе, при котором выделение памяти под объект осуществляется во время выполнения программы.

При динамическом распределении памяти объекты размещаются в т.н. «куче» (англ. heap): при конструировании объекта указывается размер запрашиваемой под объект памяти, и, в случае успеха, выделенная область памяти, условно говоря, «изымается» из «кучи», становясь недоступной при последующих операциях выделения памяти. Противоположная по смыслу операция — освобождение занятой ранее под какой-либо объект памяти: освобождаемая память, также условно говоря, возвращается в «кучу» и становится доступной при дальнейших операциях выделения памяти.

По мере создания в программе новых объектов, количество доступной памяти уменьшается. Отсюда вытекает необходимость постоянно освобождать ранее выделенную память. В идеальной ситуации программа должна полностью освободить всю память, которая потребовалась для работы. По аналогии с этим, каждая процедура (функция или подпрограмма) должна обеспечить освобождение всей памяти, выделенной в ходе выполнении процедуры. Некорректное распределение памяти приводит к т.н. «утечкам» памяти, когда выделенная память не освобождается. Многократные утечки памяти могут привести к исчерпанию всей оперативной памяти и нарушить работу операционной системы.

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

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

Статическая память, или SRAM (Statistic RAM) является наиболее производительным типом памяти. Микросхемы SRAM применяются для кэширования оперативной памяти, в которой используются микросхемы динамической памяти, а также для кэширования данных в механических устройствах хранения информации, в блоках памяти видеоадаптеров и т. д. Фактически, микросхемы SRAM используются там, где необходимый объем памяти не очень велик, но высоки требования к быстродействию, а раз так, то оправдано использование дорогостоящих микросхем. В персональных компьютерах с процессорами, у которых не было интегрированной на кристалле кэш-памяти второго уровня, всегда использовались микросхемы SRAM внешнего кэша. Для удешевления системных плат и возможности их модернизации производители системных плат с процессорами 486 и первых поколений Pentium устанавливали специальные кроватки (разъемы для микросхем с DIP-корпусом), в которые можно было устанавливать различные микросхемы SRAM, отличающиеся как по быстродействию и объему памяти, так и различной разрядностью. Для конфигурирования памяти на системной плате предусматривался набор джамперов. Для справки прямо на системной плате краской наносилась информация об установке джамперов, например, как показано в табл.(в колонках JS1 и JS2 указаны номера контактов, которые надо замкнуть перемычками). Пример таблицы конфигурирования кэш-памяти на системной плате

Size

SRAM

JS1

JS2

256 К

32x8

1-2

1-2

512 К

64x8

2-3

1—2

1 М

128x8

2-3

2-3

Отметим, что изменением конфигурации кэш-памяти занимались только тогда, когда выходила из строя какая-либо микросхема кэш-памяти. В остальных случаях изменять положение джамперов не рекомендовалось. В дальнейшем, по мере разработки более совершенных микросхем SRAM, они непосредственно припаивались на системную плату в количестве 1, 2 или 4 штук. На системных платах, которые выпускаются в настоящее время, микросхемы SRAM используются, в основном, только для кэширования ввода/вывода и других системных функций.

Прямой доступ к памяти (англ. Direct Memory Access, DMA) — режим обмена данными между устройствами или же между устройством и основной памятью (RAM) без участия Центрального Процессора (ЦП). В результате скорость передачи увеличивается, так как данные не пересылаются в ЦП и обратно.

Кроме того, данные пересылаются сразу для многих слов, расположенных по подряд идущим адресам, что позволяет использование т. н. «пакетного» (burst) режима работы шины — 1 цикл адреса и следующие за ним многочисленные циклы данных. Аналогичная оптимизация работы ЦП с памятью крайне затруднена.

В оригинальной архитектуре IBM PC (шина ISA) был возможен лишь при наличии аппаратного DMA-контроллера (микросхема с индексом Intel 8237).

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

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

Содержание

 [убрать

  • 1 Захват шины (bus mastering)

  • 2 DMA и виртуальная память, IOMMU и AGP GART

  • 3 DMA и IDE/ATA, Ultra DMA

  • 4 Режимы Ultra DMA протокола ATA для ОС Linux

Соседние файлы в папке gosy_voprosy