Иерархия памяти: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Іванко1 (обсуждение | вклад) м интервики |
A5b (обсуждение | вклад) м стилевые правки |
||
Строка 1:
[[Файл:ComputerMemoryHierarchy.svg|thumb|right|256px|Пирамида иерархии памяти. По левой грани обозначены размер и емкость, по центру — требование постоянного электропитания и длительность хранения, справа — пример памяти данного уровня, скорость и стоимость.]]
'''[[Иерархия]] памяти''' — термин, используемый в [[Вычислительная_техника|вычислительной технике]] при проектировании и
При проектировании высокопроизводительных компьютеров и систем необходимо решить множество компромиссов, например, размеры и технологии для каждого уровня иерархии. Можно рассматривать набор различных памятей (m<sub>1</sub>,m<sub>2</sub>,…,m<sub>n</sub>), находящихся в иерархии, то есть каждый m<sub>i</sub> уровень является как бы подчиненным для m<sub>i-1</sub> уровня иерархии. Для уменьшения времени ожидания на более высоких уровнях, низшие уровни могут подготавливать данные укрупненными частями с буферизацией и, по наполнению буфера, сигнализировать верхнему уровню о возможности получения данных.
Строка 32:
Большинство программистов обычно предполагает, что память делится на два уровня, оперативную память и дисковые накопители, хотя в [[ассемблер|ассемблерных]] [[Языки программирования|языках]] и ассемблерно-совместимых (типа [[Си_(язык_программирования)|C]]) существует возможность непосредственной работы с регистрами. Получение преимуществ от иерархии памяти требует совместных действий от программиста, аппаратуры и компиляторов (а также базовая поддержка в операционной системе):
* Программисты отвечают за организацию передачи данных между дисками и памятью ([[ОЗУ]]), используя для этого [[файл|файловый]] [[ввод-вывод]]; Современные ОС также реализуют это как [[свопинг]].
* [[Аппаратное обеспечение]] отвечает за организацию передачи данных между памятью и кэшами.
* Оптимизирующие [[Компилятор|компиляторы]] отвечают за генерацию кода, при исполнении которого аппаратура эффективно использует регистры и кэш процессора.
Многие программисты не учитывают многоуровневость памяти при программировании. Этот подход работает пока приложение не столкнется с падением производительности из-за
== Литература ==
|