В компьютерной архитектуре , в иерархии памяти отделяет компьютер хранение в иерархию на основе времени отклика. Поскольку время отклика, сложность и емкость взаимосвязаны, уровни также можно различать по их производительности и технологиям управления. [1] Иерархия памяти влияет на производительность в компьютерном архитектурном проектировании, предсказаниях алгоритмов и конструкциях программирования нижнего уровня, включающих локальность ссылки .
Проектирование для обеспечения высокой производительности требует учета ограничений иерархии памяти, то есть размера и возможностей каждого компонента. Каждый из различных компонентов можно рассматривать как часть иерархии памяти (m 1 , m 2 , ..., m n ), в которой каждый член m i обычно меньше и быстрее, чем следующий самый высокий член m i + 1 из иерархия. Чтобы ограничить ожидание более высокими уровнями, более низкий уровень будет реагировать, заполняя буфер, а затем сигнализируя об активации передачи.
Есть четыре основных уровня хранения. [1]
- Внутренний - регистры процессора и кэш .
- Основное - системная оперативная память и платы контроллеров.
- Он-лайн массовое хранилище - Вторичное хранилище.
- Автономное бестарное хранение - третичное и автономное хранение.
Это общая структура иерархии памяти. Полезны многие другие структуры. Например, алгоритм подкачки может рассматриваться как уровень виртуальной памяти при проектировании компьютерной архитектуры , и один может включать в себя уровень близкой к сети хранилища между оперативным и автономным хранилищем.
Свойства технологий в иерархии памяти
- Увеличение сложности замедляет иерархию памяти . [2]
- Технология памяти CMOx расширяет пространство Flash в иерархии памяти [3]
- Одним из основных способов повышения производительности системы является минимизация того, насколько далеко вниз по иерархии памяти нужно идти, чтобы манипулировать данными. [4]
- Задержка и пропускная способность - две метрики, связанные с кешами. Ни один из них не является единообразным, но специфическим для определенного компонента иерархии памяти. [5]
- Предсказать, где в иерархии памяти находятся данные, сложно. [5]
- ... расположение в иерархии памяти определяет время, необходимое для выполнения предварительной выборки. [5]
Примеры
Количество уровней в иерархии памяти и производительность на каждом уровне со временем увеличивались. Тип памяти или компоненты хранилища также меняются исторически. [6] Например, иерархия памяти процессора Intel Haswell Mobile [7] около 2013 года выглядит следующим образом:
- Регистры процессора - максимально быстрый доступ (обычно 1 цикл ЦП). Размер в несколько тысяч байт
- Кэш
- Уровень 0 (L0) операции Micro кэш - 6,144 байт (6 KiB [ править ] [ оригинальное исследование ] ) [8] в размере
- Кэш инструкций уровня 1 (L1) - 128 КБ [ необходима ссылка ] [ исходное исследование ] размером
- Уровень 1 (L1) Кэш данных - размер 128 КБ [ необходима ссылка ] [ исходное исследование ] . Наилучшая скорость доступа составляет около 700 ГБ / с [9].
- Уровень 2 (L2) Инструкция и данные (общие) - размер 1 MiB [ необходима ссылка ] [ оригинальное исследование ] . Наилучшая скорость доступа составляет около 200 ГБ / с [9].
- Уровень 3 (L3) Общий кеш - размер 6 МБ [ требуется ссылка ] [ исходное исследование ] . Наилучшая скорость доступа составляет около 100 ГБ / с [9]
- Уровень 4 (L4) Общий кеш - 128 МБ [ необходима ссылка ] [ исходное исследование ] размером. Наилучшая скорость доступа составляет около 40 ГБ / с [9].
- Основная память ( основное хранилище ) - размер ГиБ [ необходима ссылка ] [ исходное исследование ] . Лучшая скорость доступа составляет около 10 ГБ / с. [9] В случае машины NUMA время доступа может быть неодинаковым.
- Дисковое хранилище ( вторичное хранилище ) - размером в терабайты . По состоянию на 2017 год лучшая скорость доступа с потребительского твердотельного накопителя составляет около 2000 МБ / с [10].
- Непосредственное хранилище ( третичное хранилище ) - размером до эксабайт . По состоянию на 2013 год лучшая скорость доступа составляет около 160 МБ / с [11].
- Автономное хранилище
Более низкие уровни иерархии - от дисков вниз - также известны как многоуровневое хранилище . Формальное различие между оперативным, оперативным и автономным хранилищами: [12]
- Онлайн-хранилище немедленно доступно для ввода-вывода.
- Хранилище Nearline доступно не сразу, но может быть быстро подключено к сети без вмешательства человека.
- Автономное хранилище доступно не сразу, и для его подключения к сети требуется вмешательство человека.
Например, постоянно включенные вращающиеся диски находятся в режиме онлайн, в то время как вращающиеся диски с замедленным вращением, такие как массивный массив бездействующих дисков ( MAID ), находятся на стадии непосредственного подключения. Съемные носители, такие как ленточные картриджи, которые можно загружать автоматически, как в ленточной библиотеке , находятся рядом, в то время как картриджи, которые необходимо загружать вручную, находятся в автономном режиме.
Большинство современных ЦП настолько быстры, что для большинства программных рабочих нагрузок узким местом является локальность обращения к памяти и эффективность кэширования и передачи памяти между разными уровнями иерархии [ необходима цитата ] . В результате ЦП большую часть времени бездействует, ожидая завершения ввода-вывода памяти. Иногда это называют затратами на пространство , поскольку более крупный объект памяти с большей вероятностью переполнит небольшой / быстрый уровень и потребует использования большего / более медленного уровня. В результате чего нагрузка на использование памяти , как известно , как давление (соответственно зарегистрировать давление , давление кэша , и (главное) давление памяти ). Термины для данных, которые отсутствуют на более высоком уровне и должны быть извлечены с более низкого уровня, соответственно: переполнение регистров (из-за давления регистра: регистр в кеш), промах в кэше (кэш в основную память) и (аппаратная) ошибка страницы (основная память на диск).
Современные языки программирования в основном предполагают два уровня памяти: оперативную память и дисковое хранилище, хотя на языке ассемблера и встроенных ассемблерах на таких языках, как C , к регистрам можно обращаться напрямую. Оптимальное использование иерархии памяти требует сотрудничества программистов, оборудования и компиляторов (а также базовой поддержки со стороны операционной системы):
- Программисты несут ответственность за перемещение данных между диском и памятью посредством файлового ввода-вывода.
- Оборудование отвечает за перемещение данных между памятью и кешами.
- Оптимизирующие компиляторы отвечают за генерацию кода, который при выполнении заставляет оборудование эффективно использовать кеши и регистры.
Многие программисты предполагают один уровень памяти. Это работает нормально, пока приложение не упадет до предела производительности. Затем иерархия памяти будет оценена во время рефакторинга кода .
Смотрите также
- Иерархия кеша
- Использование пространственной и временной локальности: иерархическая память
- Буфер против кеша
- Иерархия кеша в современном процессоре
- Стена памяти
- Компьютерная память
- Иерархическое управление хранилищем
- Облачное хранилище
- Шаблон доступа к памяти
- Алгоритм избегания общения
Рекомендации
- ^ a b Игрушка, Крыло; Зи, Бенджамин (1986). Компьютерное аппаратное обеспечение / Архитектура программного обеспечения . Прентис Холл. п. 30 . ISBN 0-13-163502-6.
- ^ Комбинирование записи
- ^ «Иерархия памяти» . Корпорация Unitity Semiconductor. Архивировано из оригинального 5 -го августа 2009 года . Проверено 16 сентября 2009 года .
- ^ Падрайг Брэди. «Многоядерный» . Проверено 16 сентября 2009 года .
- ^ а б в ван дер Пас, Рууд (2002). «Иерархия памяти в системах на основе кэша» (PDF) . Санта-Клара, Калифорния: Sun Microsystems : 26. 817-0742-10. Цитировать журнал требует
|journal=
( помощь ) - ^ "Память и хранение - Хронология истории компьютеров - Музей истории компьютеров" . www.computerhistory.org .
- ^ Кротерс, Брук. «Анализ лучшей графики Intel в 15-дюймовом MacBook Pro от Apple - CNET» . News.cnet.com . Проверено 31 июля 2014 .
- ^ «Анализ архитектуры Intel Haswell: создание нового ПК и нового Intel» . AnandTech . Проверено 31 июля 2014 .
- ^ а б в г д «Зона SiSoftware» . Sisoftware.co.uk. Архивировано из оригинала на 2014-09-13 . Проверено 31 июля 2014 .
- ^ «Обзор твердотельного накопителя Samsung 960 Pro M.2 NVMe» . storagereview.com . Проверено 13 апреля 2017 .
- ^ «Ultrium - LTO Technology - Ultrium GenerationsLTO» . Lto.org. Архивировано из оригинала на 2011-07-27 . Проверено 31 июля 2014 .
- ^ Пирсон, Тони (2010). «Правильное употребление термина Nearline» . IBM Developerworks, Внутреннее хранилище системы . Архивировано из оригинала на 2018-11-27 . Проверено 16 августа 2015 .