На каком уровне иерархии памяти находится программа в процессе выполнения

Обновлено: 20.11.2024

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

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

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

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

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

Временная и пространственная локализация гарантирует, что почти все ссылки можно найти в памяти меньшего размера, и в то же время создает иллюзию того, что процессору предоставляется большая и быстрая память. На рис. 25.1 показана иерархическая система памяти. Чем быстрее, меньше и дороже память, тем ближе она к процессору. По мере удаления от процессора снижается скорость, уменьшается стоимость и увеличивается размер. Регистры и кэш-память расположены ближе к процессору, удовлетворяя требования процессора к скорости, затем идет основная память и в последнюю очередь — вторичное хранилище, удовлетворяющее требованиям емкости. На рисунке также указаны типичные размеры и время доступа каждого из этих типов памяти. Регистры, являющиеся частью самого ЦП, имеют очень малое время доступа, составляющее несколько сотен пикосекунд, а объем памяти составляет несколько тысяч байтов. Кэш первого уровня имеет несколько килобайт, а время доступа составляет всего несколько наносекунд. Кэш второго уровня имеет несколько сотен килобайт, а время доступа увеличивается примерно до 10 наносекунд. Хранилище увеличивается до нескольких мегабайт в случае третьего уровня кеша, а время доступа увеличивается до нескольких десятков наносекунд. Основная память имеет время доступа порядка нескольких сотен наносекунд, но также имеет больший объем памяти. Хранилище составляет порядка терабайт для вторичного хранилища, а время доступа составляет несколько миллисекунд. В том же духе на рисунке также показана иерархия памяти для персонального мобильного устройства.

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

Различные типы памяти: Доступны разные типы памяти. Одна классификация основана на типах доступа. Оперативное запоминающее устройство (ОЗУ) имеет одинаковое время доступа для всех местоположений. Существует два типа оперативной памяти — динамическая и статическая. Динамическая оперативная память имеет высокую плотность, потребляет меньше энергии, дешева и медленна. Он называется динамическим, потому что его нужно регулярно «обновлять». SRAM — статическая оперативная память имеет низкую плотность, потребляет много энергии, дорога и быстра. Здесь контент будет длиться «вечно» (пока не пропадет питание).У нас также есть технология «неслучайного» доступа, при которой время доступа варьируется от места к месту и время от времени. Примеры памяти этого типа включают диски и компакт-диски. Существует также еще один тип памяти, а именно память с последовательным доступом, где время доступа линейно по местоположению (например, лента). Обычно динамическое ОЗУ (DRAM) используется для основной памяти, а статическое ОЗУ (SRAM) — для кэша.

Статическое ОЗУ. На рис. 25.3 показана конструкция типичной ячейки статического ОЗУ. Для его построения требуется шесть транзисторов — отсюда меньшая плотность и повышенная стоимость. Шесть транзисторов соединены перекрестным способом. Они обеспечивают обычный и инвертированный выходы. Поскольку он реализован с использованием процесса CMOS, для сохранения бита требуется малое энергопотребление.

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

Динамическое ОЗУ. Ячейка динамического ОЗУ состоит из одного транзистора и конденсатора, как показано на рис. 25.5, что позволяет снизить стоимость и объем памяти. Однако это деструктивное чтение. Его необходимо периодически обновлять, скажем, каждые 8 ​​мс, но каждую строку можно обновлять одновременно. Для операции записи мы должны управлять битовой линией и выбирать строку. Для операции чтения мы должны предварительно зарядить битовую линию до Vdd и выбрать строку. Ячейка и битовая линия имеют общий заряд, и на битовой линии есть очень небольшое изменение напряжения. Усилитель чувств может обнаруживать изменения примерно в 1 миллион электронов. После выполнения чтения необходимо выполнить запись для восстановления значения. Refresh - это просто фиктивное чтение для каждой ячейки. Преимуществом DRAM является простота ее структуры: на бит требуется только один транзистор и конденсатор по сравнению с четырьмя или шестью транзисторами в SRAM. Это позволяет DRAM достигать очень высокой плотности. Используемые транзисторы и конденсаторы чрезвычайно малы; миллиарды могут поместиться на одном чипе памяти. Из-за динамического характера ячеек памяти DRAM потребляет относительно большое количество энергии, при этом существуют различные способы управления энергопотреблением.

Рисунок 25.5

Организация памяти DRAM. На рис. 25.6 показана двумерная организация памяти DRAM. Ячейки расположены в виде двумерного массива. Строки адреса разделены на две части: одна часть используется для декодера строк, а другая — для декодера столбцов. Только ячейка, выбранная декодером строк и столбцов, может быть прочитана или записана. Как всегда, хотя линии ввода данных и вывода данных не показаны, они используются для операций записи и чтения соответственно. Чтобы сохранить количество адресных строк, адресные строки могут быть мультиплексированы. Сначала может быть передана верхняя половина адреса, а затем нижняя половина адреса. Строб адреса строки (RAS) указывает, что передается адрес строки, а строб адреса столбца (CAS) указывает, что передается адрес столбца.

  • Многократный доступ к одной и той же строке
  • Синхронная динамическая память
  • Добавлены часы в интерфейс DRAM.
  • Пакетный режим с первым важным словом
  • Более широкие интерфейсы
  • Двойная скорость передачи данных (DDR)
  • Несколько банков на каждом устройстве DRAM

Различные типы DRAM. В зависимости от проведенной оптимизации существуют разные типы DRAM.

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

Direct Rambus DRAM (RDRAM) — это новая архитектура DRAM и стандарт интерфейса, который бросает вызов традиционным конструкциям основной памяти. Он передает данные со скоростью до 800 МГц по узкой 16-битной шине, называемой прямым каналом Rambus. Такая высокая тактовая частота возможна благодаря функции, называемой «двойной тактовой частотой», которая позволяет выполнять операции как на переднем, так и на заднем фронте тактового цикла. Rambus спроектирован так, чтобы соответствовать существующим стандартам материнских плат. Компоненты, которые вставляются в соединения материнской платы, называются встроенными модулями памяти Rambus (RIMM). Они заменяют обычные модули DIMM. DDR SDRAM и RDRAM конкурируют на рынке высокопроизводительных микрокомпьютеров. Из-за своей новой архитектуры система RDRAM несколько дороже, чем DDR SDRAM. Многие компьютерные компании производят высокопроизводительные микрокомпьютеры с обеими системами памяти и предоставляют потребителю право выбора.

Графическая память SDRAM с удвоенной скоростью передачи данных (GDDR SDRAM) — это тип специализированной памяти DDR SDRAM, предназначенной для использования в качестве основной памяти графических процессоров (GPU). GDDR SDRAM отличается от стандартных типов DDR SDRAM, таких как DDR3, хотя они используют некоторые основные технологии. Их основными характеристиками являются более высокие тактовые частоты как для ядра DRAM, так и для интерфейса ввода-вывода, что обеспечивает большую пропускную способность памяти для графических процессоров. По состоянию на 2015 год существует четыре последовательных поколения GDDR: GDDR2, GDDR3, GDDR4 и GDDR5.

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

Флэш-память — это электронный энергонезависимый компьютерный носитель данных, который можно электрически стирать и перепрограммировать. Это тип EEPROM. Он должен быть стерт (блоками) перед перезаписью. Имеет ограниченное количество циклов записи. Это дешевле, чем SDRAM, но дороже, чем диск. Он медленнее, чем SRAM, и быстрее, чем диск. Он широко используется в КПК, цифровых аудиоплеерах, цифровых камерах, мобильных телефонах и т. д. Его механическая ударопрочность является причиной его популярности по сравнению с жесткими дисками в портативных устройствах, а также его высокая прочность, способность выдерживать высокое давление, температуру , погружение в воду и т. д.

Терминология иерархии памяти. Давайте теперь рассмотрим терминологию, используемую в иерархической системе памяти. Говорят, что попадание происходит, если данные появляются в некотором блоке на верхнем уровне. Частота попаданий — это доля обращений к памяти, обнаруженная на верхнем уровне, а время попадания — это время доступа к верхнему уровню, которое состоит из времени доступа к ОЗУ + времени для определения попадания/промаха. Считается, что промах происходит, если данные необходимо извлечь из блока на нижнем уровне. Частота промахов = 1 – (Показатель попаданий). Miss Penalty — это время замены блока на верхнем уровне + время доставки блока процессору. Время попадания обычно равно промаху пенальти. Когда слово не найдено в кэше, происходит промах:

• Извлекать слово с более низкого уровня в иерархии, требуя ссылки с более высокой задержкой

• Нижний уровень может быть другим кешем или основной памятью

• Также извлекать другие слова, содержащиеся в блоке

.

• Использует преимущества пространственного расположения

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

Пример, показывающий влияние на производительность. Предположим, что процессор работает с тактовой частотой = 200 МГц (5 нс за цикл) с CPI = 1,1 и с 50 % арифметических/логических операций, 30 % загрузкой/сохранением, 20 % управлением. инструкции. Предположим, что 10 % операций с памятью получают 50 промахов тактов.

< td>Отсутствие данных

CPI = идеальный CPI + среднее количество остановок на инструкцию = 1,1 (циклы) + (0,30 (датамопс/инкс) x 0,10 (промах/датамопс) x 50 (цикл/промах) )

= 1,1 цикла + 1,5 цикла = 2,6

Это показывает, что 58 % времени процессор простаивает в ожидании памяти! Добавление коэффициента пропуска инструкций 1% добавит еще 0.5 циклов до индекса потребительских цен.

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

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

– Временная локализация (локальность во времени): если на элемент ссылаются, на него, как правило, скоро ссылаются снова

– Пространственная локализация (локальность в пространстве): если на элемент ссылаются, элементы, чьи адреса находятся рядом, имеют тенденцию ссылаться в ближайшее время

Используя принцип локальности, мы предоставляем пользователю столько памяти, сколько доступно в самой дешевой технологии, и обеспечиваем доступ со скоростью, предлагаемой самой быстрой технологией. SRAM и DRAM очень полезны в качестве кэш-памяти и основной памяти соответственно. Другие типы памяти, такие как ПЗУ и флэш-память, также очень полезны. DRAM медленная, но дешевая и плотная. Это хороший выбор для предоставления пользователю БОЛЬШОЙ системы памяти. SRAM быстрая, но дорогая и не очень плотная и является хорошим выбором для предоставления пользователю БЫСТРОГО времени доступа.

Веб-ссылки/вспомогательные материалы

  • Компьютерная организация и дизайн — аппаратно-программный интерфейс, Дэвид А. Паттерсон и Джон Л. Хеннесси, 4-е издание, Морган Кауфманн, Elsevier, 2009 г.
  • Компьютерная архитектура — количественный подход, Джон Л. Хеннесси и Дэвид А. Паттерсон, 5-е издание, Морган Кауфманн, Elsevier, 2011 г.
  • Computer Organization, Carl Hamacher, Zvonko Vranesic and Safwat Zaky, 5th. Edition, McGraw-Hill Higher Education, 2011.

Memory Hierarchy Design - Basics by Dr A. P. Shanthi распространяется под лицензией Creative Commons Attribution-NonCommercial 4.0 International License, если не указано иное.

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

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

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

Обратите внимание, что на рис. 1 кеш классифицируется как единый объект, но большинство систем содержат несколько уровней кеша, которые образуют свою собственную меньшую иерархию. Например, процессоры обычно имеют очень маленький и быстрый кэш первого уровня (L1), который находится относительно близко к ALU, и более крупный и медленный кэш второго уровня (L2). кеш, который находится дальше. Многие многоядерные ЦП также совместно используют данные между ядрами в более крупном кэше третьего уровня (L3). Хотя различия между уровнями кэширования могут иметь значение для приложений, ориентированных на производительность, в этой книге для простоты рассматривается только один уровень кэширования.

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

Авторское право (C) 2020 Dive into Systems, LLC.

Dive into Systems находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).

Читайте также:

Идеальный индекс потребительских цен 1,1
1,5
Отсутствие данных 0,5