Почему кэш-память процессора так быстро работает?


58

Что делает кэш-память процессора намного быстрее основной памяти? Я вижу некоторые преимущества в системе многоуровневого кэша. Это имеет смысл, что меньший кеш быстрее для поиска. Но должно быть что-то еще.


2
Что вы подразумеваете под основной памятью ?
Marcocs

1
@marcocs отредактировано для ясности. Я имею в виду кэш-память процессора и основную системную память, т.е. съемные диммеры на большинстве материнских плат.
ConditionRacer


2
@ratchetfreak Э-э ... ОП довольно ясно спрашивает о непосредственной причине, а не о конечной причине.
Кайл Стрэнд

1
Ух ты, я не думал, что когда-нибудь смогу использовать степень по компьютерной инженерии Принятый ответ на самом деле не является ответом. Это связано с тем, что кэш-память ЦП работает на гораздо более высокой тактовой частоте (тактовая частота процессора около 4 ГГц), а основная память - с тактовой частотой шины (около 1600 МГц). Кроме того, кэш процессора может считывать данные за 4 такта, а системная память может занимать 100 системных тактов. Кроме того, системная RAM имеет конфликт с другими периферийными устройствами, такими как диск или сеть, в то время как кэш-память ЦП выделена. Чем длиннее провод, тем ниже тактовая частота, на которой он может работать. tinyurl.com/zkdsstd
Хлоя

Ответы:


115

В случае с кэшем ЦП он работает быстрее, потому что он находится на том же кристалле, что и процессор. Другими словами, запрошенные данные не нужно передавать на процессор; это уже там.

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

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

Так что в основном это местность . Кэш исключает шаг передачи данных .

Локальность - это причудливый способ сказать, что данные «близки», как во времени, так и в пространстве. Кэширование с меньшей, более быстрой (но, как правило, более дорогой) памятью работает, потому что обычно относительно небольшой объем общих данных - это данные, к которым обращаются чаще всего.

Дальнейшее чтение
кеша (вычислений) в Википедии


29
Я думаю, что это хороший ответ. Однако, может быть, стоит добавить, что существует также иерархия затрат для кэширования: сетевое хранилище дешевле, чем локальный жесткий диск, который дешевле оперативной памяти, что намного дешевле, чем кэш-память на процессоре. Если бы не было этого, мы бы просто сделали процессоры с 120 ГБ встроенной памяти и покончили с этим.
Чарльз И. Грант

1
@ConditionRacer: Те же причины. L1 быстрее, но дороже, так что они дают вам немного очень дорогого L1 и больше менее дорогого, но более медленного L2. См. Также stackoverflow.com/questions/3699582/…
Роберт Харви

9
«Почему L1 быстрее, чем L2» - вопрос становится не по теме для Programmers.SE, и его следует задавать на Electronics.SE
mattnz

5
@ConditionRacer IIRC, это связано с технологией, используемой для реализации памяти. Я думаю, что L2 - это встроенная DRAM, тогда как L1 - это SRAM или что-то в этом роде; намного дороже, но намного быстрее. Прошло более десяти лет с тех пор, как я работал над проектированием ЦП ...
Донал Феллоуз

4
@ CharlesE.Grant: хотя иерархия затрат является хорошим примером, есть еще одна причина, по которой у нас нет 120 ГБ кэш-памяти на кристалле: для адресации большей памяти требуются большие адреса, поэтому либо большие инструкции, либо больше циклов ЦП. Таким образом, чтобы быть самым быстрым, количество регистров должно оставаться относительно небольшим. Конечно, помимо регистров может быть встроенная память , но самый быстрый уровень должен оставаться маленьким, иначе он уже не будет таким быстрым.
вс

33

Это быстрее, потому что и ближе, и потому что это SRAM, а не DRAM.

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

Находясь на одном кристалле или ближе к нему, процессор сокращает круговую передачу, и L1, и L2 быстрее, чем DRAM, с точки зрения доступа.

SRAM более быстрый доступ, чем яблоки DRAM, доставленные яблоками к яблокам, и кэши обычно находятся на чипе или ближе или на более быстрых шинах, чем DRAM, что также ускоряет время доступа.


1
SRAM также более энергоемкий на бит, поэтому вам придется добавить к нему радиаторы, и все, что от батареи будет страдать.
9000

1
Не говоря уже о том, что увеличение SRAM делает его намного медленнее.
Darkhogg

согласен, больше силы и медленнее по сравнению с другими срам. Я думаю, что это 4 транзистора на бит для sram и 1 на бит для драм. dram полагается на емкость в fet, где sram опирается на добрую старомодную логику. таким образом, вы должны постоянно подавать питание на все эти транзисторы, а не просто периодически накачивать заряд.
old_timer

4
SRAM в кешах обычно 6T, а не 4T. Кроме того, SRAM (конечно, вариант 6T) является более энергоэффективным. Реальное энергопотребление в DRAM - это цикл обновления, и SRAM просто не нуждается в этом. Транзисторы SRAM потребляют энергию при переключении, конденсатор DRAM постоянно протекает. Если вы заменяете крышку DRAM с утечкой, вы получаете EEPROM, но это не быстро: если утечка заряда затруднена, ее также трудно вывести обычным способом.
MSalters

@dwelch КМОП-транзисторы не потребляют энергию, если они находятся в открытом или закрытом состоянии, поэтому аргумент о потреблении энергии недопустим. Более того, именно логическая коммутация CMOS заставляет процессоры расходовать большую часть своей мощности - пики тока в промежуточном состоянии (не 1 и не 0), поэтому ситуация обратная тому, что вы говорите :)
Руслан,

21

Одна вещь, которая должна быть упомянута явно, - это влияние скорости света. В этом видео Грейс Хоппер показывает кусок провода длиной около фута, который показывает, как далеко электрический сигнал может пройти за одну наносекунду *. Если процессор работает на частоте 3 ГГц, то это подразумевает расстояние 4 дюйма за такт. Это жесткое физическое ограничение скорости доступа к памяти. Это большая часть того, почему близость к процессору (как кэш L1) позволяет память будет быстрее.

РЕДАКТИРОВАТЬ * на самом деле, насколько свет может распространяться в вакууме, расстояние через медь / кремний меньше.


2
Жесткий предел для меди. Это хороший момент, хотя я не задумывался о том, насколько смехотворно быстры современные процессоры.
ConditionRacer

@ConditionRacer Я только что добавил поправку, 11,8 дюйма - это свет в вакууме.
Мэтью Финлей

2
Вам нужно вдвое уменьшить это число, так как вам нужно туда и обратно, чтобы восстановить память. Так что это всего лишь 5 см, а не 10 см за цикл задержки в вакууме .
CodesInChaos

2
Скорость света - вот почему часы шины основной памяти перестали работать быстрее несколько лет назад (2000-й?). Это не прямой эффект - это связано с тем, что логические сигналы CMOS больше не являются идеальными прямоугольными волнами на частотах шины - но c показывает заметно в математике.
Звол

5

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

Один бит, который был пропущен и только что упомянут в комментарии Darkhogg: большие кэши имеют более высокую частоту обращений, но большую задержку. Множество уровней кэша были введены также для решения этой проблемы.

На этот счет есть отличный вопрос и ответ по электронике SE.

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

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


5

В других ответах есть много хороших моментов, но один фактор, по-видимому, отсутствует: задержка декодирования адреса.

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

Когда процессору необходимо получить доступ к памяти, он отправляет команду микросхеме памяти, чтобы выбрать конкретное слово, которое он хочет использовать. Эта команда называется выбором адреса столбца (пока мы будем игнорировать адреса строк). Чип памяти теперь должен активировать запрошенный столбец, что он делает, отправляя адрес по каскаду логических элементов, чтобы сделать одну запись, которая соединяется со всеми ячейками в столбце. В зависимости от того, как это реализовано, будет определенная задержка для каждого бита адреса, пока результат не выйдет на другом конце. Это называется задержкой CAS памяти. Поскольку эти биты должны проверяться последовательно, этот процесс занимает намного больше времени, чем цикл процессора (который обычно имеет только несколько транзисторов в последовательности, ожидающих). Это также занимает намного больше времени, чем цикл шины (который обычно в несколько раз медленнее, чем цикл процессора). Команда CAS на типичном чипе памяти, вероятно, будет принимать порядок 5 нс (IIRC - это было давно, так как я смотрел на тайминги), что более чем на порядок медленнее, чем цикл процессора.

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

Кэш процессора, однако, не имеет этой проблемы. Мало того, что он намного меньше, так что преобразование адресов - более легкая работа, на самом деле ему не нужно переводить больше, чем небольшой фрагмент адреса (в некоторых вариантах, вообще никакого), потому что он ассоциативный. Это означает, что вдоль каждой кэшированной строки памяти есть дополнительные ячейки памяти, в которых хранится часть (или вся) адреса. Очевидно, что это делает кэш еще более дорогим, но это означает, что все ячейки могут быть запрошены, чтобы увидеть, есть ли у них определенная строка памяти, которую мы хотим одновременно, и тогда единственная (надеюсь), которая имеет правильные данные, сбросит ее на шину, которая соединяет всю память с ядром основного процессора. Это происходит менее чем за цикл, потому что это намного проще.


-2

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

Передача данных с диска -> основная память (RAM) (временное хранилище) -> кэш-память ЦП (меньшее временное хранилище рядом с ЦП для часто используемых данных) -> ЦП (обработка).

Кэш-память ЦП - это меньшая, более быстрая область памяти, в которой хранятся копии данных из самых последних использованных областей основной памяти.

Буферный кеш - это основная область памяти, в которой хранятся копии данных с самых последних использованных дисковых локаций.

Кеш браузера - это каталог или аналогичное пространство, в котором хранятся копии данных с самых последних посещенных веб-сайтов пользователями.

Ссылка: Как работает память компьютера


«философия операционных систем - это ...» - это только ваше мнение или вы можете как-то это подтвердить?
комнат

Об этом учил во время изучения Unix Морис Бах. К сожалению, нет подтверждающей документации. Отредактировано ..
roshan4074

5
Как известно, howstuffworks ненадежен для получения надежной технической информации. Они хороши для грубых упрощений, которые могут понять обычные Джо и Джейн, но это все.
С
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.