Иерархия памяти: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
A5b (обсуждение | вклад) продолжаем |
|||
Строка 26:
# Регистры микропроцессора, организованные в [[регистровый файл]] — наиболее быстрый доступ (порядка 1 такта), но размером лишь в несколько сотен или, редко, тысяч байт.
# [[Кэш процессора]] 1го уровня (L1) — время доступа порядка нескольких тактов, размером в десятки килобайт
# Кэш процессора 2го уровня (L2) — большее время доступа (от
# Кэш процессора 3го уровня (L3) — время доступа около сотни тактов, размером в несколько мегабайт (в массовых процессорах используется с недавнего времени)
# ОЗУ системы — время доступа от сотен до, возможно, тысячи тактов, но огромные размеры в несколько гигабайт, вплоть до десятков. Время доступа к ОЗУ может варьироваться для разных его частей в случае комплексов класса [[NUMA]] (с неоднородным доступом в память)
# Дисковое хранилище — многие миллионы тактов, если данные не были закэшированны или забуферизованны заранее, размеры до нескольких терабайт
# Третичная память — задержки до нескольких секунд или минут, но практически неограниченные объемы (ленточные библиотеки).
Современные языки программирования обычно предполагают, что память делится на два уровня, оперативную память и дисковые накопители, хотя в ассемблерных языках и ассемблерно-совместимых (типа Си или Си--)
* Программисты отвечают за программирование пересылок данных между дисками и ОЗУ при помощи файлового ввода-вывода.
* Аппаратное обеспечение отвечает за прозрачное использование кэшей для работой с памятью.
* Оптимизирующие компиляторы отвечают за генерацию такого кода, который при исполнении приводит к эффективному использованию регистров и кэшей.
Многие программисты предполагают, что оперативная память является одним уровнем иерархии. Этот подход работает до тех пор,
== Примечания ==
|