Почему время доступа к ОЗУ (любого типа) так медленно уменьшается?


22

В этой статье показано, что DDR4 SDRAM имеет примерно в 8 раз большую пропускную способность DDR1 SDRAM. Но время от установки адреса столбца до момента доступности данных уменьшилось только на 10% (13,5 нс). Быстрый поиск показывает, что время доступа самое быстрое асинхронное. SRAM (18 лет) 7 нс. Почему время доступа к SDRAM так медленно уменьшается? Причина экономическая, технологическая или фундаментальная?


1
Может быть еще одна возможная причина в том, что это просто не нужно?
Себастьян ван ден Брук

Например, для ускорения поиска данных в памяти требуется меньшее время доступа.
Арсений

Я понимаю, что дополнительная скорость всегда хороша, но с точки зрения разработчика программного обеспечения, возможно, по сравнению со всеми другими операциями ввода-вывода и архитектурой (включая микросервисы, которые могут буквально работать в разных центрах обработки данных), скорость ОЗУ не так уж и узкое место больше. Иногда «достаточно хорошо» - это хорошо, или, по крайней мере, не гарантирует дополнительных НИОКР для его ускорения. Я хотел бы добавить это как потенциальную причину в вашем вопросе тоже.
Себастьян ван ден Брук

1
Согласно Википедии DDR3-2200 имеет задержку первого слова, равную 6,36 нс, то есть, сколько времени требуется для распространения сигнала около 3 футов на FR4, я бы сказал, что мы довольно близки к физическим пределам
Марк Омо

Ответы:


33

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

Адрес столбца должен быть декодирован, мультиплексоры выбирают, какие строки для доступа должны быть обработаны, и данные должны перемещаться через микросхему в выходные буферы. Это занимает немного времени, особенно с учетом того, что микросхемы SDRAM изготавливаются по процессу, предназначенному для высоких плотностей плунжера, а не для высоких логических скоростей. Чтобы увеличить пропускную способность, скажем, с помощью DDR (1, 2, 3 или 4), большая часть логики может быть расширена или передана по конвейеру и может работать с той же скоростью, что и в предыдущем поколении. Единственное, что должно быть быстрее - это драйвер ввода-вывода для выводов DDR.

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

Если вы сравните кэш-память ЦП с ОЗУ и жестким диском / твердотельным накопителем, существует обратная зависимость между объемом хранилища и быстродействием хранилища. L1 $ очень быстрый, но может содержать только от 32 до 256 КБ данных. Причина, по которой он так быстр, в том, что он маленький:

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

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


21
Отличный ответ. Я просто хочу подчеркнуть фактор физического расстояния: возможно, при 10 см для самой дальней памяти ОЗУ, от 1/3 до 1/2 скорости света в качестве скорости сигнала, плюс некоторую дополнительную длину для маршрутизации и соответствия дорожек печатной платы, вы могли бы легко быть в 2ns время поездки туда и обратно. Если ~ 15% вашей задержки вызвано нерушимым универсальным ограничением скорости ... вы, на мой взгляд, делаете очень хорошо.
Мбриг

1
L1 также организован уникально, находится непосредственно в ядре, которое его использует, и использует SRAM.
лес

@forest А также имеет довольно строгое ограничение по размеру - делайте его слишком большим, и нет способа сохранить его так быстро.
Луаан

Кэш L1d также может быть сильно оптимизирован для задержки, например, выборка тегов и данных параллельно для всех способов в наборе. Поэтому, когда совпадение тега просто мультиплексирует данные в выходной файл, вместо необходимости извлекать их из SRAM. Это также может происходить параллельно с поиском TLB старших битов адреса, если все биты индекса происходят из части адреса со смещением внутри страницы. (Так что это одно жесткое ограничение на размер, как упомянуто @Luaan: размер / ассоциативность <= размер страницы для этого VIPT = скорость работы PIPT . См. VIPT Cache: соединение между TLB и Cache? )
Питер Кордес

6

C_Elegans дает одну часть ответа - это сложно уменьшить общую задержку цикла памяти.

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

Это верно как для общих вычислений, где многие процессы / потоки выполняются параллельно, так и для встроенных систем. Например, в работе с HD-видео, которую я выполняю, меня не волнуют задержки порядка миллисекунд, но мне нужно несколько гигабайт в секунду пропускной способности.


И, безусловно, следует отметить, что программное обеспечение может быть спроектировано для «высокой» задержки довольно легко в большинстве случаев, по сравнению со сложностью и стоимостью уменьшения задержки. И процессоры, и их программное обеспечение в большинстве случаев очень хорошо устраняют эффективную задержку. В конце концов, вы не достигнете предела задержек так часто, как можете подумать, если не будете знать, как работает архитектура памяти, кэширование / предварительная выборка ЦП и т. Д. Простой подход обычно работает достаточно хорошо для большинства программ, особенно однопоточных.
Луана

На современных процессорах Intel задержка памяти является ограничивающим фактором для одноядерной пропускной способности: пропускная способность не может превышать max_concurrency / latency, а одноядерное ядро ​​имеет ограниченную емкость для одновременных запросов вне ядра. Многоядерный Xeon (с более высокой задержкой некортера от большего количества скачков на кольцевой шине) имеет худшую пропускную способность одноядерного процессора, чем четырехъядерный настольный чип, несмотря на то, что имеет больше контроллеров DRAM. Почему Skylake намного лучше, чем Broadwell-E для однопоточной пропускной способности памяти? , Требуется намного больше потоков, чтобы насытить память B / W на многоядерном Xeon.
Питер Кордес

В целом, ваша основная мысль верна: большинство обращений попадают в кэш с низкой задержкой, чтобы избежать остановки неработающего сервера. Для предварительной выборки HW в основном требуется пропускная способность, чтобы не отставать от последовательного доступа и иметь данные, готовые в кеше, прежде чем ядру это понадобится. Задержка DRAM составляет сотни тактовых циклов ядра, поэтому необходимо настроить эффективное программное обеспечение так, чтобы оно использовало шаблоны доступа, которые не кэшировали пропуски, побеждая как пространственную / временную локальность, так и предварительную выборку HW. Особенно для нагрузок, поскольку буферы хранилища могут отделить задержку хранилища от остальной части неупорядоченного бэкенда.
Питер Кордес

Для дискового ввода / вывода задержки в миллисекундах имели бы значение, если бы у нас не было предварительной выборки для чтения в ожидании, чтобы скрыть ее для последовательного доступа. Но чем выше латентность, тем сложнее спрятаться. (Чем лучше должны быть ваши алгоритмы предварительной выборки, и тем более предсказуемыми должны быть ваши шаблоны доступа.) И тем больше запросов / байтов данных необходимо поддерживать в полете, чтобы получить желаемую пропускную способность.
Питер Кордес

2

У меня не так много идей, но я ожидаю, что это немного всего.

экономического

Для большинства компьютеров / телефонов скорость более чем достаточна. Для более быстрого хранения данных был разработан SSD. Люди могут использовать видео / музыку и другие задачи, требующие большой скорости, в (почти) реальном времени. Таким образом, нет необходимости в большей скорости (за исключением конкретных приложений, таких как прогноз погоды и т. Д.).

Другая причина заключается в обработке очень высокой скорости ОЗУ, требуются быстрые процессоры. И это связано с большим потреблением энергии. Поскольку тенденция их использования в устройствах с батарейным питанием (например, в мобильных телефонах) не позволяет использовать очень быструю оперативную память (и процессоры), что делает ее экономически нецелесообразной.

технический

С уменьшением размера микросхем / микросхем (теперь уровень нм) скорость возрастает, но незначительно. Чаще всего он используется для увеличения объема оперативной памяти, которая необходима сложнее (также экономическая причина).

основополагающий

В качестве примера (оба являются схемами): самый простой способ получить большую скорость (используется SSD) - это просто распределить нагрузку по нескольким компонентам, таким образом, скорость «обработки» также возрастает. Сравните, используя 8 USB-накопителей, считывающих данные одновременно и объединяющих результаты, вместо того, чтобы считывать данные с 1 USB-накопителя друг за другом (это занимает в 8 раз больше времени).


1
Какое отношение имеют SSD к задержке SDRAM?
C_Elegans

@C_Elegans они оба схемы, для этого «общего» вопроса, я не думаю, что есть такая большая разница.
Мишель Кейзерс

2
Время, необходимое для открытия страницы, на самом деле не сильно уменьшилось из-за цикла предварительной зарядки; количество требуемой энергии сегодня существенно не отличается от того, которое было десять лет назад. Это доминирует время доступа в моем опыте.
Питер Смит

5
@MichelKeijzers Несмотря на то, что они оба являются микросхемами, твердотельные накопители и SDRAM обслуживают очень разные случаи использования и используют разные методы для хранения данных. Кроме того, говорить о том, что процессорам на самом деле не требуется более быстрая оперативная память, не имеет особого смысла, поэтому большинство современных процессоров имеют 3 уровня кэширования, потому что их оперативная память не может быть сделана достаточно быстрой для обслуживания процессора.
C_Elegans

1
Вы сказали, что для большего хранилища есть SSD. Вы имели в виду быстрее ? В ssd стоит больше памяти, чем на hdd. Основным преимуществом твердотельных накопителей является скорость, а также шум и надежность. Что касается емкости, жесткие диски все еще лучше
user198712
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.