В иерархической структуре памяти неограниченно большая емкость. Иерархия памяти. Иерархическая структура памяти

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

Между устройствами памяти соседних уровней иерархии с помощью операционной организован обмен информацией, называемый свопингом (swapping).

Иерархическая структура памяти основана на ее страничной организации, при которой все пространство памяти разбито на страницы фиксированного размера. Например, в процессорах Intel допустимы страницы размером от 4 Кбайт до 2 Мбайт. В кэш-памяти и ОЗУ из-за их сравнительно небольшой емкости в каждый момент времени хранится только малая часть страниц. Остальные страницы хранятся в дисковой памяти, откуда операционная система может «подкачать»


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

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

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

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

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

Емкость ЗУ измеряется в Байтах (1Байт = 8 Бит), Килобайтах (1 Кбайт= 2 10 Байт), Мегабайтах (1Мбайт= 2 10 Кбайт), Гигабайта (1Гбайт= 2 10 Мбайт), Терабайтах (1Тбайт= 2 10 Гбайт).

Быстродействие измеряется в секундах и в настоящее время находится в пределах от 10 - 2 до 10 - 9 секунд в зависимости от способа доступа к информации.

По способу доступа к хранящейся в них информации ЗУ делятся на: ЗУ с произвольным доступом; ЗУ с прямым доступом; ЗУ с последовательным доступом.

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

Носитель информации в ЗУ с прямым доступом непрерывно вращается, в результате данные доступны через некоторый фиксированный промежуток времени. К ЗУ с прямым доступом относятся НЖМД, НМГД, НОД.

ЗУ с последовательным доступом , прежде чем найти необходимые данные, «просматривает» все предыдущие участки памяти. Последовательный доступ реализована в ЗУ, использующих магнитную ленту, например, в стримерах.

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

При движении от 1-го до 3-го уровня иерархии быстродействие ЗУ уменьшается, а емкость увеличивается.

Иерархическая организация памяти позволяет повысить производительность ПК и предоставить пользователю практически неограниченную емкость памяти.

Назначение и основные характеристики ЗУ 1-го уровня были описаны в лекции 3 Рассмотрим 2-й и 3-й уровень иерархии памяти ПК.

Внешняя память относится к внешним устройствам ПК и используется для долговременного хранения любой информации, которая может когда-либо потребоваться для решения задач. Внешняя память содержит разнообразные виды ЗУ, но наиболее распространенными, имеющимися практически на любом компьютере, являются НЖМД, НГМД и НОД. Указанные накопители предназначены для хранения больших объемов информации, запись и выдача хранимой информации по запросу в оперативное запоминающее устройство.

НЖМД (HDD - hard disk drive) в обиходе называют «винчестером». В отличие от оперативной памяти, НЖМД гарантируют долговременное хранение информации, для чего не требуется постоянное питание компьютера от внешнего источника электроэнергии. Для записи данных в жестких дисках используется магнитный слой. Он покрывает диски, вращающиеся внутри винчестера с огромными скоростями. Вдоль дисков перемещаются головки чтения / записи. Основными характеристика современных НЖГД являются: емкость (до 1 Тбайт); количество пластин (до 5); количество головок (10 головок); среднее время поиска информации (меньше 10 мс); скорость вращения дисков (до 10 тыс. об/мин); вес (меньше 100 г.). Основными производителями НЖМД являются фирмы IBM, Seegate, Toshiba, Fujitsu, Samsung.

НГМД (FDD - floppy disk drive) представляет собой устройство чтения / записи сменных гибких дисков (флоппи-дисков, дискет ). Ранее применялись магнитные диски 2-х размеров: 5,25"" (133 мм) и 3,5» (89 мм). Первые давно исчезли, а 3,5"" используются только для переноса относительно небольших (1,44 Mбайт) объемов информации между компьютерами. Данные на гибких дисках хранятся подобно данным на винчестере за тем лишь исключением, что диск во флоппи-дисководе вращается с много меньшей скоростью и он всего один. Из-за недостаточной герметизации дискеты чаще всего выходят из строя. Таким образом, как носитель информации флоппи-диск крайне ненадежен и в настоящее время применяется все реже.

НОД являются в настоящее время самыми надежными и широко распространенными ЗУ внешней памяти. Считывание информации с оптического диска происходит за счёт регистрации изменений интенсивности отраженного от алюминиевого слоя излучения маломощного лазера.

НОД подразделяются на: CD-ROM (Compact Disc Read Only Memory) - компакт - диск только для чтения; CD-R (Compact Disc Recordable) - однократно записываемый компакт - диск; CD-RW (Compact Disc Rewritable) - перезаписываемый компакт-диск; DVD (Digital Versatile Disk) - универсальный цифровой диск.

Стандартный оптический диск имеет емкость порядка 650-800 Мбайт, емкость DVD диск достигает 17 Гбайт.

DVD диск имея те же габариты, что и обычный оптический компакт-диск, вмещает чрезвычайно много информации - от 4,7 до 17 Гбайт. В настоящее время DVD-диск применяется лишь в двух областях: для хранения видеофильмов (DVD-Video или просто DVD) и сверхбольших баз данных (DVD-ROM, DVD-R). В отличие от CD-ROM, диски DVD записываются с обеих сторон. Более того, с каждой стороны могут быть нанесены один или два слоя информации. Таким образом, односторонние однослойные диски имеют объем 4,7 Гбайт (их часто называют DVD-5, т.е. диски емкостью около 5 Гбайт), двусторонние однослойные - 9,4 Гбайт (DVD-10), односторонние двухслойные - 8,5 Гбайт (DVD-9), а двусторонние двухслойные - 17 Гбайт (DVD-18). В зависимости от объема требующих хранения данных и выбирается тип DVD-диска. Если речь идет о фильмах, то на двусторонних дисках часто хранят две версии одного и того же фильма - одна широкоэкранная, вторая в классическом телевизионном формате.

Архивная память ПК предназначена для длительного и надежного хранения программ и данных. Как видно из рисунка 2.3 хранить информацию можно на дискетах, оптических дисках, съемных НЖМД, магнитной ленте и флэш-памяти. Поскольку трое первых носителей информации описаны выше, а съемный НЖМД принципиально не отличается от обычного НЖМД, отметим основные свойства флэш-памяти.

Флэш-память представляет собой особый вид энергонезависимой перезаписываемой полупроводниковой памяти. Это означает, что она не требует дополнительной энергии для хранения данных (энергия требуется только для записи), допускает изменение (перезапись) хранимых в ней данных и не содержит механически движущихся частей (как обычные НЖМД или НОД) и построена на основе интегральных микросхем.

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

Основное преимущество флэш-памяти перед обычными накопителями состоит в том, что флэш-память потребляет значительно (примерно в 10-20 и более раз) меньше энергии во время работы. В НЖМД, НГМД, НОД, кассетах и других механических носителях информации, бо льшая часть энергии тратится на приведение в движение механики этих устройств. Кроме того, флэш-память компактнее большинства других механических носителей.

Размер носителя флэш-памяти составляет от 20 до 40 мм в длину, в ширину и толщина до 3 мм, емкость достигает 1Гбайт, в зависимости от типа флэш-памяти возможна перезапись информации от 10 тысяч до 1 млн раз.

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

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

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

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

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

Вершиной пирамиды является регистр процессора.
За ним следует кеш-память первого (L1)
и второго уровня (L2)
Оперативная память делится на:
физическую и виртуальную
И кеш, и оперативная память являются временными хранилищами информации
Далее идут постоянные хранилища информации:
ПЗУ/BIOS; съемные диски; удаленные накопители (в локальной сети); жесткий диск
Подножие пирамиды образуют устройства ввода, к которым относятся:
клавиатура; мышь; подключаемые медиаустройства; сканер/камера/микрофон/видео; удаленные источники; другие источники

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

Роль оперативной памяти в общем «оркестре» компонентов компьютера


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

Вы включили компьютер. Он, в свою очередь, загрузил данные из постоянной памяти (ROM) и начал самотестирование при включении (power-on self-test, POST). Компьютер проверяет сам себя и определяет, исправен ли он и готов ли к новому трудовому сеансу. Целью этого этапа работы является проверка того, что все основные компоненты системы работают корректно. В ходе самотестирования контроллер памяти посредством быстрой операции чтения/записи проверяет все ячейки памяти на наличие или отсутствие ошибок. Процесс проверки выглядит так: бит информации записывается в память по определенному адресу, а затем считывается оттуда.

Компьютер загружает из ПЗУ базовую систему ввода-вывода, более известную по английской аббревиатуре BIOS. В этом «биосе» содержится базовая информация о накопителях, порядке загрузки, безопасности, автоматическом распознавании устройств (Plug and Play) и некоторые иные сведения.

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

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

Что происходит, когда вы сохраняете файл и закрываете приложение? Файл записывается на жесткий диск, а приложение «выталкивается» из оперативной памяти. То есть и само приложение, и связанные с ним файлы удаляются из оперативной памяти. Тем самым освобождается место для новой информации: других приложений и файлов. Если измененный файл не был сохранен перед удалением из временного хранилища, все изменения будут потеряны.

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

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

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

Продолжение следует

По материалам computer.howstuffworks.com

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

Разрешить эту дилемму можно, использовав в подсистеме памяти разные технология хранения информации, реализовав некую иерархию подсистемы памяти . Типичная иерархия подсистемы памяти схематически представлена на рис. 5.1.


Рис. 5.1. Иерархия подсистемы памяти компьютера

Принцип иерархии подразумевает выполнение следующих условий:

количество уровней иерархии может быть произвольным;

каждый уровень иерархии выполняет строго определенный набор функций;

обращение извне всегда происходит к верхнему уровню иерархии;

если i-й уровень иерархии может выполнить полученный запрос, то он его выполняет и передает результат источнику запроса – (i-1)-му уровню иерархии;

если i-й уровень иерархии не может выполнить полученный запрос, то он формирует запрос к (i+1)-му уровню иерархии;

по мере перехода от верхних уровней иерархии подсистемы памяти к нижним уровням:

повышается емкость;

увеличиваетсявремя доступа;

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

Ключевыми вопросами, решение которых обеспечивает успех иерархического проекта подсистемы памяти, являются:

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

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

Предположим, что процессор в системе может обращаться к памяти двух уровней. Память 1-го уровня содержит N слов и имеет время доступа 1 нс, а память 2-го уровня - 1000 N слов и время доступа 10 нс. Предположим, что если нужное слово находится в памяти 1-го уровня, то процессор извлекает его непосредственно, а если в памяти 2-го уровня, то затребованное слово сначала записывается в память 1-го уровня, а уже оттуда его извлекает процессор. Для простоты анализа не будем учитывать время, необходимое процессору для того, чтобы выяснить, где именно находится искомое слово, - в памяти 1-го или 2-го уровня.


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

Среднее время обращения к такой подсистеме памяти может быть выражено формулой:

Предположим, что 95% всех обращений приходится в память первого уровня (т.е., H=0.95). Тогда среднее время извлечения одного слова из иерархической подсистемы памяти будет равно:

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

Среди существующих на сегодняшний день технологий памяти, не так уж сложно подобрать ряд, обладающий следующими свойствами:

необходимое быстродействие памяти верхнего уровня;

снижение относительной стоимости хранения информации;

повышение емкости;

увеличениевремени доступа;

на некотором уровне иерархии обеспечивается энергонезависимость;

реализация требования о вложенности.

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

Выводы

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

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

3. Количество и параметры памятей уровней иерархии зависят от области применения компьютера.

4. В высокопроизводительных современных компьютерах существует до 6 уровней иерархии подсистемы памяти.

5. Количество уровней иерархии может быть произвольным.

6. Каждый уровень иерархии выполняет строго определенный набор функций.

7. Обращение к иерархической подсистеме памяти извне всегда происходит к верхнему уровню иерархии.

8. Если i-й уровень иерархии может выполнить полученный запрос, то он его выполняет и передает результат источнику запроса – (i-1)-му уровню иерархии.

9. Если i-й уровень иерархии не может выполнить полученный запрос, то он формирует запрос к (i+1)-му уровню иерархии.

10. По мере перехода от верхних уровней иерархии подсистемы памяти к нижним уровням:

снижается относительная стоимость хранения информации;

повышается емкость;

увеличиваетсявремя доступа;

снижается частота обращений с предыдущего уровня иерархии;

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

на некотором уровне иерархии обеспечивается энергонезависимость.

Локальность ссылок

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

Интуитивно предположение о локализации ссылок кажется вполне резон­ным. Рассмотрим следующие доводы в пользу этого предположения.

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

2. Очень редко случается так, что команды вызова процедур следуют одна
за другой непрерывным потоком, а затем следует такой же поток команд
возврата из процедур. Как правило, программа имеет достаточно небольшую вложенность вызовов процедур. Следовательно, в течение не­которого, пусть и ограниченного, отрезка времени программа выполняет команды, сконцентрированные в небольшом количестве процедур.

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

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

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

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

Таблица 5.1. Относительная частота выполнения операторов разного типа в программах на языках высокого уровня

На рис. 5.1 представлен график, показывающий харак­тер работы с процедурами в процессе выполнения типовой программы.

Рис. 5.1. Характер обращения к процедурам в процессе выполнения программы

По оси ординат графика отсчитывается текущая глубина вложенности выполняемой процедуры, а по оси абсцисс - время в относительных единицах (циклах выполнения команд "вызов/возврат"). Каждый вызов процедуры представ­лен на графике наклонной линией, идущей вниз-вправо (погружающей програм­му "в глубину"), а команда возврата - линией вверх-вправо (поднимающей про­грамму "на поверхность"). На графике выделены прямоугольниками участки, в которых относительная глубина вложенности не превышает 5. Такой прямо­угольник (окно заданной вложенности) смещается только в том случае, когда глубина вложенности с момента, зафиксированного его левой кромкой, превысит 5. Как видно на графике, программа остается в указанном диапазоне вложенности достаточно продолжительное время, а это означает, что все это время ядро процессора обращается только к командам из пяти текущих вложенных процедур. Исследование ряда программ, написанных на языках высокого уровня, показало, что только в 1% всех команд вызова процедур глубина вложенно­сти превосходит значение 8.

Свойство локализации ссылок подтверждается и более поздними исследова­ниями приложений, характерных для настоящего времени. Например, на рис. 5.2 показаны результаты статистического исследования доступа к страни­цам отдельного Web-сервера.

Рис. 5.2. Локализация ссылок на Web-страницы

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

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

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

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

Этот же принцип можно применить и в системе, имеющей не два, а три или больше запоминающих устройств разных уровней иерархии.

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

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

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

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

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

1. Записи на дисках имеют четко выраженную кластерную структуру. Буферизация позволяет передавать данные большими порциями, примерно равными кластеру, вместо того, чтобы отправлять их мелкими порциями "дергая" каждый раз механизм привода диска.

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

Контрольные вопросы

1. Какие функции подсистемы памяти в компьютере?

2. Перечислите требования к подсистеме памяти?

3. Как соотносятся между собой основные требования к подсистеме памяти?

4. Что такое энергонезависимость памяти?

5. Назовите основные особенности статической полупроводниковой памяти.

6. Назовите основные особенности динамической полупроводниковой памяти.

7. Назовите основные особенности магнитной памяти.

8. Почему нельзя реализовать в быстродействующем универсальном компьютере подсистему памяти при использовании одной технологии?

9. Каковы принципы организации иерархической подсистемы памяти?

10. Может ли подсистема оперативной памяти иметь один уровень иерархии?

11. Что такое локализация ссылок?

12. Что такое временная локализация?

13. Что такое пространственная локализация?

ВВЕДЕНИЕ

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

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

В идеале каждому программисту хотелось бы иметь предоставленную только ему неограниченную по объему и скорости работы память, которая к тому же не теряет своего содержимого при отключении питания. Раз уж мы так размечтались, то почему бы не сделать память еще и совсем дешевой? К сожалению, существующие технологии пока не могут дать нам желаемое. Тогда чем же нам придется довольствоваться? Со временем была разработана концепция иерархии памяти, согласно которой компьютеры обладают несколькими мегабайтами очень быстродействующей, дорогой и энергозависимой кэш-памяти, несколькими гигабайтами памяти, средней как по скорости, так и по цене, а также несколькими терабайтами памяти на довольно медленных, сравнительно дешевых дисковых накопителях, не говоря уже о сменных накопителях, таких как DVD – диски и флеш – устройства USB.

Итак, как мы уже определили, иерархия памяти современных компьютеров строится на нескольких уровнях. В нашей работе мы более подробно рассмотрим данные уровни, их структуру и функции.

1 ИЕРАРХИЧЕСКАЯ СТРУКТУРА ПАМЯТИ


Память ЭВМ должна иметь большую информационную емкость, малое время обращения (высокое быстродействие), высокую надежность и низкую стоимость. Но с увеличением емкости снижается быстродействие и растет стоимость. Деление памяти на ОЗУ и ВЗУ не снимает это противоречие полностью, так как различие в быстродействии процессора, ОЗУ и ВЗУ очень велико. Поэтому обмен информацией производится через дополнительные буферные устройства, то есть память ЭВМ имеет иерархическую многоуровневую структуру. Чем больше быстродействие ЗУ, тем выше стоимость хранения 1 байта, тем меньшую емкость имеет ЗУ. Иерархия памяти имеет следующий вид (Рис. 1):

Рисунок 1 – Четырехуровневая организация памяти

Виды памяти:

1) регистры микропроцессорной памяти, а также кэш-память первого и второго уровня;

2) внутренняя память ПЗУ, ОЗУ;

3) внешняя память;

4) массовая или архивная память.


Эта система запоминающих устройств работает как единое ЗУ с большой емкостью (за счет внешних ЗУ) и высоким быстродействием (за счет внутренних ЗУ).

Микропроцессорная память – высокоскоростная память небольшой емкости, входящая в МП и используемая АЛУ для хранения операндов и промежуточных результатов вычислений. КЭШ-память – это буферная, не доступная для пользователя память, автоматически используемая компьютером для ускорения операций с информацией, хранящейся в медленно действующих запоминающих устройствах. Для ускорения операций с основной памятью организуется регистровая КЭШ-память внутри микропроцессора (КЭШ-память первого уровня) или вне микропроцессора на материнской плате (КЭШ-память второго уровня); для ускорения операций с дисковой памятью организуется КЭШ-память на ячейках электронной памяти.

Внутренняя память состоит из ПЗУ (ROM – Read Only Memory) и ОЗУ (RAM – Random Access Memory – память с произвольным доступом). ПЗУ состоит из установленных на материнской плате микросхем и используется для хранения неизменяемой информации: загрузочных программ операционной системы (ОС), программ тестирования устройств компьютера и некоторых драйверов базовой системы ввода-вывода (BIOS – Base Input-Output System) и др. Из ПЗУ можно только считывать информацию, емкость ПЗУ – сотни Кбайт. Это энергонезависимая память, – при отключении ЭВМ информация сохраняется.

Внешняя память относится к внешним устройствам ЭВМ и используется для долговременного хранения любой информации, которая может потребоваться. В ВЗУ хранится программное обеспечение ЭВМ. Внешняя память: НЖМД и ЖМД, НГМД и ГМД (магнитный диск), стример (НМЛ – накопитель на магнитной ленте), оптические накопители для CD-ROM и DVD-дисков.

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


2 КЭШИРОВАНИЕ

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

Кэш имеет совокупность строк (cache-lines), каждая из которых состо­ит из фиксированного количества адресуемых единиц памяти (байтов, слов) с последовательными адресами. Типичный размер строки: 16, 64, 128, 256 байтов.

Наиболее часто используются три способа организации кэш-памяти, отличающиеся объемом аппаратуры, требуемой для их реализации. Это так называемые кэш-память с прямым отображением (direct-mapped cache), частично ассоциативная кэш-память (set-associative cache) и ассоциатив­ная кэш-память (fully associative cache).

При использовании кэш-памяти с прямым отображением адрес пред­ставляется как набор трех компонент, составляющих группы старших, средних и младших разрядов адреса, соответственно тега, номера строки, смещения. Например, при 16-разрядном адресе старшие 5 разрядов могут представлять тег, следующие 7 разрядов - номер строки и последние 4 раз­ряда - смещение в строке. В этом случае строка состоит из 16 адресуемых единиц памяти, всего строк в кэше 128. Кэш-память с прямым отображе­нием представляет собой набор строк, каждая из которых содержит ком­поненту тег и элементы памяти строки, адрес которых идентифицируется смещением относительно начала строки. При этом устанавливается однозначное соответствие между адресом элемента памяти и возможным расположением этого


элемента памяти в кэше, а именно: элемент памяти всегда располагается в строке, задавае­мой компонентой "номер строки" адреса, и находится на позиции строки, задаваемой компонентой "смещение" адреса.

Наличие элемента данных по запрашиваемому адресу в кэше опреде­ляется значением тега. Если тег строки кэш-памяти равен компоненте "тег" адреса, то элемент данных содержится в кэш-памяти.

Иначе необходима подкачка в кэш-память строки, с заданным в адресе тегом.

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

Недостатки этой организации - очевидны. Если программа использует поочередно элементы памяти из одной строки, но с различными значения­ми тегов, то это вызывает при каждом обращении замену строки с обра­щением к данным основной памяти.

Ассоциативная кэш-память использует двухкомпонентное представле­ние адреса: группа старших разрядов трактуется как тег, а группа млад­ших разрядов - как смещение в строке.

Нахождение строки в кэше определяется совпадением тега-строки со зна­чением тега адреса. Количество строк в кэше может быть произвольным (естественное ограничение - количество возможных значений тегов). По­этому при определении нахождения требуемой строки в кэш-памяти необ­ходимо сравнение тега адреса с тегами всех строк кэша. Если выполнять это последовательно, строка за строкой, то время выполнения сравнений будет непозволительно большим. Поэтому сравнение выполняется параллельно во всех строках с использованием принципов построения ассоциативной памяти, что и дало название этому способу организации кэш-памяти.

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

Частично-ассоциативная кэш-память комбинирует оба вышеописан­ных подхода: кэш-память состоит из набора ассоциативных блоков кэш-памяти. Средняя компонента адреса задает в отличие от прямо адресуе­мой кэш-памяти не номер строки, а номер одного из ассоциативных бло­ков. При поиске данных ассоциативное сравнение тегов выполняется толь­ко для набора блоков (возможна организация кэша, когда таких наборов несколько), номер которого совпадает со средней компонентой адреса. По количеству n строк в наборе кэш-память называется n -входовой.

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

Один способ предполагает внесение изменений в оперативную память сразу после изменения данных в кэше. При этом процессор простаивает в ожидании завершения записи в основную память. В основной памяти под­держивается правильная копия данных кэша, и при замене строк не требу­ется никаких дополнительных действий. Кэш-память, работающая в та­ком режиме, называется памятью со сквозной записью (write - through).

Другой способ предполагает отображение изменений в основной па­мяти только в момент вытеснения строки данных из кэша. Если данные по адресу памяти, в который необходимо произвести запись, находятся в кэш-памяти, то идет запись только в кэш-память. При отсутствии данных в кэш-памяти производится запись в основную память. Такой режим рабо­ты кэша получил название обратной записи (write-back).

Существуют также промежуточные варианты (buffed write though), при которых запросы на изменение в основной памяти буферизуются и не за­держивают процессор на время операции записи в память. Эта запись вы­полняется по мере возможности доступа контроллера кэш-памяти к ос­новной памяти.

Кэш-память с обратной записью (write-back) создает меньшую нагрузку на шину процессора и обеспечивает большую производительность, однако контрол­лер для write-back кэша значительно сложнее.

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

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

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


ЗАКЛЮЧЕНИЕ

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

А так же рассмотрели принципы работы и виды кэш-памяти. Кэш – это память с большей скоростью доступа, предназначенная для ускорения обращения к данным, содержащимся постоянно в памяти с меньшей скоростью доступа (далее «основная память»). Кэширование применяется ЦПУ, жёсткими дисками, браузерами и веб-серверами. Основная идея кэш-памяти проста: в ней находятся слова, которые чаще всего используются. Если процессору нужно какое-нибудь слово, сначала он обращается к кэш-памяти. Только в том случае, если слова там нет, он обращается к основной памяти. Если значительная часть слов находится в кэш-памяти, среднее время доступа значительно сокращается.

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Майер, Р.В. Информатика: Кодирование информации. Принципы работы ЭВМ. [Текст] / Учебн. пособ. для вузов.// Р.В. Майер – М.: ФАИР – ПРЕСС, 2004. – 24 c.

2 Шнитман, В. Архитектура процессоров UltraSPARC. [Текст]/ В. Шнитман // Открытые системы №2, 1996.– c. 5

3 Таненбаум, Э. Современные операционные системы. 3-е изд. [Текст]/ – СПб.: Питер, 2002.–1120 с.

4 Трофимова, И.П. Системы обработки и хранения информации: Учеб. для вузов. [Текст] / И.П. Трофимова – М.: Высш. шк., 1989. – 191 c.

5 Бикташев, Р.А. , Князьков, В.С. Многопроцессорные системы. Архитектура, топология, анализ производительности: Учебное пособие. [Текст]/– Пенза: Пенз. гос. ун-т, 2003. –105 c.