31

Intel i486 имеет 8 КБ кэш-памяти первого уровня. Intel Nehalem имеет 32 КБ кэш-памяти L1 и 32 КБ кэш-памяти L1 на ядро.

Объем кэша L1 не увеличился почти со скоростью, на которой увеличилась тактовая частота.

Почему бы и нет?

6 ответов6

15

30K текста из Википедии не так полезны, как объяснение того, почему слишком большой кэш менее оптимален. Когда кэш становится слишком большим, задержка для поиска элемента в кэше (с учетом пропусков в кэше) начинает приближаться к задержке поиска элемента в основной памяти. Я не знаю, к каким пропорциям стремятся разработчики ЦП, но я бы подумал, что это что-то аналогичное рекомендации 80-20: вы хотели бы находить ваши самые распространенные данные в кеше 80% времени, а остальные 20 % времени вам придется идти в основную память, чтобы найти его. (или какими-либо предполагаемыми пропорциями проектировщиков ЦП.)

РЕДАКТИРОВАТЬ: Я уверен, что это далеко не 80%/20%, поэтому заменить X и 1-X. :)

10

Одним из факторов является то, что выборки L1 начинаются до завершения трансляций TLB, чтобы уменьшить задержку. С достаточно маленьким кешем и достаточно высоким способом биты индекса для кеша будут одинаковыми между виртуальными и физическими адресами. Это, вероятно, снижает стоимость поддержания согласованности памяти с виртуально индексируемым, физически помеченным кешем.

7

Размер кэша зависит от многих факторов:

  1. Скорость электрических сигналов (должна быть, если не скорость света, примерно того же порядка):

    • 300 метров за одну микросекунду.
    • 30 сантиметров за одну наносекунду.
  2. Экономическая стоимость (схемы на разных уровнях кеша могут отличаться, а определенные размеры кеша могут не стоить)

    • Удвоение размера кеша не удваивает производительность (даже если физика позволила этому размеру работать) для малых размеров удвоение дает намного больше, чем удвоение производительности, для больших размеров удвоение размера кеша практически не дает дополнительной производительности.
    • В википедии вы можете найти диаграмму, показывающую, например, как нецелесообразно делать кэши размером более 1 МБ (на самом деле существуют большие кэши, но вы должны учитывать, что это многопроцессорные ядра).
    • Для кэшей L1 должны быть другие диаграммы (которые производители не показывают), в которых размер 64 Кбайт удобен.

Если размер кэша L1 не изменился после 64 КБ, это потому, что он больше не стоил. Также обратите внимание, что теперь существует большая "культура" в отношении кеша, и многие программисты пишут "дружественный к кешу" код и / или используют предпочтительные инструкции для уменьшения задержки.

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

6

Я полагаю, что это можно подвести, просто заявив, что чем больше кэш, тем медленнее будет доступ. Так что больший кеш просто не помогает, так как кеш предназначен для уменьшения медленной связи шины с оперативной памятью.

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

(Я парень по программному обеспечению, надеюсь, это не так печально)

3

Из кэша L1:

Кэш 1-го уровня, или основной кэш, находится на ЦП и используется для временного хранения инструкций и данных, организованных в блоки по 32 байта. Первичный кеш - это самая быстрая форма хранения. Поскольку он встроен в микросхему с нулевым интерфейсом состояния ожидания (задержки) к исполнительному блоку процессора, он имеет ограниченный размер.

SRAM использует два транзистора на бит и может хранить данные без внешней помощи до тех пор, пока на схему подается питание. Это противопоставлено динамическому ОЗУ (DRAM), которое должно обновляться много раз в секунду, чтобы содержать его содержимое данных.

Процессор Intel P55 MMX, выпущенный в начале 1997 года, примечателен увеличением размера кэша 1-го уровня до 32 КБ. Чипы AMD K6 и Cyrix M2, выпущенные позднее в этом году, еще больше повысили ставку, предоставив кэш-память первого уровня объемом 64 КБ. 64 Кбайт остается стандартным размером кэша L1, хотя различные многоядерные процессоры могут использовать его по-разному.

РЕДАКТИРОВАТЬ: Обратите внимание, что этот ответ с 2009 года, и ЦП сильно эволюционировали за последние 10 лет. Если вы прибыли на этот пост, не принимайте все наши ответы здесь слишком серьезно.

-4

На самом деле размер кэша L1 является самым большим узким местом для скорости в современных компьютерах. Патетически крошечные размеры кеша L1 могут быть ценой, но не производительностью. Доступ к кэш-памяти L1 возможен на частотах ГГц, так же, как и при работе процессора, в отличие от доступа к ОЗУ в 400 раз медленнее. Это дорого и сложно реализовать в современном двухмерном дизайне, однако это технически выполнимо, и первая компания, которая сделает это успешно, будет иметь компьютеры в 100 раз быстрее и по-прежнему работать круто, что приведет к серьезным инновациям во многих поля и доступны только через дорогие и сложные для программирования конфигурации ASIC/FPGA. Некоторые из этих проблем связаны с проприетарными / интеллектуальными проблемами и корпоративной жадностью, охватывающей нынешние десятилетия, когда крошечные и неэффективные кадры инженеров - единственные, кто имеет доступ к внутренним разработкам, и которым в основном дают приказы на марш, чтобы выжать затраты эффективная запутанная протекционистская чушь. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и скоро станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Разработчикам не составит труда создать гораздо более крупные кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .