Сравнительная характеристика основных типов оперативной памяти
С точки зрения пользователя обычного компьютера главная характеристика памяти - это скорость или, выражаясь другими словами, ее быстродействие.
Время доступа к памяти непостоянно и в зависимости от ряда обстоятельств варьируется в очень широких пределах. Наибольшая скорость достигается при последовательном чтении, а наименьшая - при произвольном чтении.
Современные модули памяти имеют несколько независимых банков и потому могут обрабатывать более одного запроса одновременно. Таким образом, несмотря на то, что выполнение каждого отдельно взятого запроса по-прежнему будут занимать весьма внушительное время (конденсаторное ядро так ведь и не было переработано), запросы могут следовать непрерывно. А раз так, - непрерывно будут приходить и ответы.
Теоретически все так и есть, но на практике возникает множество затруднений. Основной камень преткновения - фундаментальная проблема зависимости по данным. Рассмотрим следующую ситуацию. Пусть ячейка N1 хранит указатель на ячейку N2, содержащую обрабатываемые данные. Пока не будет получено содержимое ячейки N1, нельзя послать запрос на чтение ячейки N2, поскольку, еще не известен ее адрес. Следовательно, производительность памяти в данном конкретном случае будет определяться не пропускной способностью, а ее задержкой (латентностью), т.е. полным временем доступа к одной ячейке.
Причем, описываемый случай, отнюдь не является надуманным, скорее наоборот. Это - типичная ситуация. Базовые структуры данных - деревья и списки - имеют ярко выраженную зависимость по данным, т.к. объединяют свои элементы именно посредством указателей, что сводит на нет весь выигрыш от параллелизма. Большинство функций штатных библиотек Си/Си++ также имеют зависимость по данным и не могут обрабатывать их параллельно.
Маскировать задержки (латентность) позволяют лишь очень немногие алгоритмы, да и то не без помощи специальных команд предвыборки. Команды предвыборки, во-первых, есть не во всех процессорах предыдущих поколений. Во-вторых, они чрезвычайно аппаратно зависимы и требуют реализовать программу как минимум в двух вариантах - с этими командами и без них.
Наконец, в-третьих, команды предвыборки до сих пор не поддерживаются ни одним оптимизатором, и вряд ли будут поддерживаться в ближайшем будущем. Ручная же оптимизация - слишком сложна и трудоемка, чтобы стать массовой.
Короче говоря, теоретическая пропускная способность памяти, заявленная производителями, совсем не то же самое, что и реальная производительность.
Контрольные вопросы
1. Как работает динамическая память (DRAM)?
2. Как логически организованы микросхемы памяти?
3. Интерфейс микросхемы памяти
Дата добавления: 2015-09-29; просмотров: 1393;