Что делает кэш-память процессора намного быстрее основной памяти? Я вижу некоторые преимущества в системе многоуровневого кэша. Это имеет смысл, что меньший кеш быстрее для поиска. Но должно быть что-то еще.
Что делает кэш-память процессора намного быстрее основной памяти? Я вижу некоторые преимущества в системе многоуровневого кэша. Это имеет смысл, что меньший кеш быстрее для поиска. Но должно быть что-то еще.
Ответы:
В случае с кэшем ЦП он работает быстрее, потому что он находится на том же кристалле, что и процессор. Другими словами, запрошенные данные не нужно передавать на процессор; это уже там.
В случае кеша на жестком диске он работает быстрее, потому что он находится в твердотельной памяти, а не на вращающихся дисках.
В случае кеша на веб-сайте это происходит быстрее, потому что данные уже были извлечены из базы данных (которая в некоторых случаях может находиться в любой точке мира).
Так что в основном это местность . Кэш исключает шаг передачи данных .
Локальность - это причудливый способ сказать, что данные «близки», как во времени, так и в пространстве. Кэширование с меньшей, более быстрой (но, как правило, более дорогой) памятью работает, потому что обычно относительно небольшой объем общих данных - это данные, к которым обращаются чаще всего.
Дальнейшее чтение
кеша (вычислений) в Википедии
Это быстрее, потому что и ближе, и потому что это SRAM, а не DRAM.
SRAM является и может быть значительно быстрее, чем DRAM, значения хранятся статически (S в S RAM), поэтому их не нужно обновлять, что убирает циклы. DRAM динамичен, как крошечные перезаряжаемые батареи, вы должны регулярно перезаряжать их, чтобы они не истощались и не становились нулями. Это крадет время цикла в дополнение к тому, как вам нужно получить доступ к битам и т. Д.
Находясь на одном кристалле или ближе к нему, процессор сокращает круговую передачу, и L1, и L2 быстрее, чем DRAM, с точки зрения доступа.
SRAM более быстрый доступ, чем яблоки DRAM, доставленные яблоками к яблокам, и кэши обычно находятся на чипе или ближе или на более быстрых шинах, чем DRAM, что также ускоряет время доступа.
Одна вещь, которая должна быть упомянута явно, - это влияние скорости света. В этом видео Грейс Хоппер показывает кусок провода длиной около фута, который показывает, как далеко электрический сигнал может пройти за одну наносекунду *. Если процессор работает на частоте 3 ГГц, то это подразумевает расстояние 4 дюйма за такт. Это жесткое физическое ограничение скорости доступа к памяти. Это большая часть того, почему близость к процессору (как кэш L1) позволяет память будет быстрее.
РЕДАКТИРОВАТЬ * на самом деле, насколько свет может распространяться в вакууме, расстояние через медь / кремний меньше.
Другие ответы уже охватывали все соответствующие биты: локальность (и связанные с этим затраты на передачу данных, ширину шины и часы и т. Д.); скорость света (опять же, связана с расходами на передачу, шириной и пропускной способностью шины); различные технологии памяти (SRAM против DRAM). Все это видно в свете соотношения цена / качество .
Один бит, который был пропущен и только что упомянут в комментарии Darkhogg: большие кэши имеют более высокую частоту обращений, но большую задержку. Множество уровней кэша были введены также для решения этой проблемы.
На этот счет есть отличный вопрос и ответ по электронике SE.
Из ответов мне кажется, что следует подчеркнуть следующее: логика, которая выполняет все необходимые операции для чтения из кэша, не так проста (особенно, если кэш ассоциативно задан, как большинство современных кэшей). Требуются ворота и логика. Таким образом, даже если мы исключаем стоимость и умираем место
Если кто-то попытается реализовать смехотворно большой кэш L1, логика, которая выполняет все необходимые операции для чтения из кэша, также станет большой. В какой-то момент задержка распространения по всей этой логике будет слишком большой, и операции, для которых заранее потребовался всего один такт, должны быть разбиты на несколько тактов. Это увеличит время ожидания.
В других ответах есть много хороших моментов, но один фактор, по-видимому, отсутствует: задержка декодирования адреса.
Ниже приводится упрощенное описание того, как работает декодирование адресов памяти, но оно дает хорошее представление о том, почему большие микросхемы DRAM в целом работают довольно медленно.
Когда процессору необходимо получить доступ к памяти, он отправляет команду микросхеме памяти, чтобы выбрать конкретное слово, которое он хочет использовать. Эта команда называется выбором адреса столбца (пока мы будем игнорировать адреса строк). Чип памяти теперь должен активировать запрошенный столбец, что он делает, отправляя адрес по каскаду логических элементов, чтобы сделать одну запись, которая соединяется со всеми ячейками в столбце. В зависимости от того, как это реализовано, будет определенная задержка для каждого бита адреса, пока результат не выйдет на другом конце. Это называется задержкой CAS памяти. Поскольку эти биты должны проверяться последовательно, этот процесс занимает намного больше времени, чем цикл процессора (который обычно имеет только несколько транзисторов в последовательности, ожидающих). Это также занимает намного больше времени, чем цикл шины (который обычно в несколько раз медленнее, чем цикл процессора). Команда CAS на типичном чипе памяти, вероятно, будет принимать порядок 5 нс (IIRC - это было давно, так как я смотрел на тайминги), что более чем на порядок медленнее, чем цикл процессора.
К счастью, мы разбиваем адреса на три части (столбец, строка и банк), что позволяет каждой части быть меньше и обрабатывать эти части одновременно, в противном случае задержка будет еще больше.
Кэш процессора, однако, не имеет этой проблемы. Мало того, что он намного меньше, так что преобразование адресов - более легкая работа, на самом деле ему не нужно переводить больше, чем небольшой фрагмент адреса (в некоторых вариантах, вообще никакого), потому что он ассоциативный. Это означает, что вдоль каждой кэшированной строки памяти есть дополнительные ячейки памяти, в которых хранится часть (или вся) адреса. Очевидно, что это делает кэш еще более дорогим, но это означает, что все ячейки могут быть запрошены, чтобы увидеть, есть ли у них определенная строка памяти, которую мы хотим одновременно, и тогда единственная (надеюсь), которая имеет правильные данные, сбросит ее на шину, которая соединяет всю память с ядром основного процессора. Это происходит менее чем за цикл, потому что это намного проще.
Одной из философий, которые я изучал, было движение «получить максимальную пропускную способность в минимуме» оборудования, когда мы говорим о любой кэш-памяти, будь то кэш-память ЦП, буферный кэш или кэш-память для этой цели. Основной мотив достигается тогда, когда для извлечения / чтения / записи данных имеется наименьшее количество движений или нет движения оборудования, и операция завершается быстрее.
Передача данных с диска -> основная память (RAM) (временное хранилище) -> кэш-память ЦП (меньшее временное хранилище рядом с ЦП для часто используемых данных) -> ЦП (обработка).
Кэш-память ЦП - это меньшая, более быстрая область памяти, в которой хранятся копии данных из самых последних использованных областей основной памяти.
Буферный кеш - это основная область памяти, в которой хранятся копии данных с самых последних использованных дисковых локаций.
Кеш браузера - это каталог или аналогичное пространство, в котором хранятся копии данных с самых последних посещенных веб-сайтов пользователями.
Ссылка: Как работает память компьютера