Почему размер кэша L1 не сильно увеличился за последние 20 лет?
Intel i486 имеет 8 КБ кэш-памяти первого уровня. Intel Nehalem имеет 32 КБ кэш-памяти L1 и 32 КБ кэш-памяти L1 на ядро.
Объем кэша L1 не увеличился почти со скоростью, на которой увеличилась тактовая частота.
Почему бы и нет?
7 ответов
30K текста из Википедии не так полезны, как объяснение того, почему слишком большой кэш менее оптимален. Когда кэш становится слишком большим, задержка для поиска элемента в кэше (с учетом пропусков в кэше) начинает приближаться к задержке поиска элемента в основной памяти. Я не знаю, к каким пропорциям стремятся разработчики ЦП, но я бы подумал, что это что-то аналогичное рекомендации 80-20: вы хотели бы найти ваши самые распространенные данные в кеше 80% времени, а остальные 20% времени вам придется идти в основную память, чтобы найти его. (или какими-либо предполагаемыми пропорциями проектировщиков ЦП.)
РЕДАКТИРОВАТЬ: Я уверен, что это далеко не 80%/20%, поэтому замените X и 1-X.:)
Одним из факторов является то, что выборки L1 начинаются до завершения трансляций TLB, чтобы уменьшить задержку. При достаточно малом кеше и достаточно высоком пути биты индекса для кеша будут одинаковыми между виртуальными и физическими адресами. Это, вероятно, снижает стоимость поддержания согласованности памяти с виртуально индексируемым, физически помеченным кешем.
Размер кэша зависит от многих факторов:
Скорость электрических сигналов (должна быть, если не скорость света, примерно того же порядка):
- 300 метров за одну микросекунду.
- 30 сантиметров за одну наносекунду.
Экономическая стоимость (схемы на разных уровнях кеша могут отличаться, а определенные размеры кеша могут не стоить)
- Удвоение размера кеша не удваивает производительность (даже если физика позволила этому размеру работать), для маленьких размеров удвоение дает намного больше, чем удвоение производительности, для больших размеров удвоение размера кеша практически не дает дополнительной производительности.
- В википедии вы можете найти диаграмму, показывающую, например, как нецелесообразно делать кэши размером более 1 МБ (на самом деле кэши больше, но вы должны учитывать, что это многопроцессорные ядра).
- Для кэшей L1 должны быть некоторые другие диаграммы (которые не демонстрируются поставщиками), в которых размер 64 Кбайт удобен.
Если размер кэша L1 не изменился после 64 КБ, это потому, что он больше не стоил. Также обратите внимание, что теперь существует большая "культура" в отношении кеша, и многие программисты пишут "дружественный к кешу" код и / или используют предпочтительные инструкции для уменьшения задержки.
Однажды я попытался создать простую программу, которая обращалась к случайным местам в массиве (из нескольких мегабайт): эта программа почти зависала на компьютере, потому что при каждом случайном чтении вся страница перемещалась из ОЗУ в кэш, и так как это делалось очень часто, то просто Программа истощала всю полосу пропускания, оставляя действительно мало ресурсов для ОС.
Я считаю, что это можно подытожить, просто заявив, что чем больше кэш, тем медленнее будет доступ. Так что больший кеш просто не помогает, так как кеш предназначен для уменьшения медленной связи шины с оперативной памятью.
Поскольку скорость процессора быстро увеличивается, кэш-память того же размера должна работать быстрее и быстрее, чтобы не отставать от него. Таким образом, кэши могут быть значительно лучше (с точки зрения скорости), но не с точки зрения хранения.
(Я парень по программному обеспечению, надеюсь, это не так печально)
Из кэша L1:
Кэш 1-го уровня, или основной кэш, находится на ЦП и используется для временного хранения инструкций и данных, организованных в блоки по 32 байта. Первичный кеш - это самая быстрая форма хранения. Поскольку он встроен в микросхему с нулевым интерфейсом состояния ожидания (задержки) к исполнительному блоку процессора, он имеет ограниченный размер.
SRAM использует два транзистора на бит и может хранить данные без внешней помощи до тех пор, пока на схему подается питание. Это противопоставлено динамическому ОЗУ (DRAM), которое необходимо обновлять много раз в секунду, чтобы хранить содержимое данных.
Процессор Intel P55 MMX, выпущенный в начале 1997 года, примечателен увеличением размера кэша 1-го уровня до 32 КБ. Чипы AMD K6 и Cyrix M2, выпущенные позднее в этом году, подняли ставку еще больше, предоставив кэш-память первого уровня объемом 64 КБ. 64 Кбайт остается стандартным размером кэша L1, хотя различные многоядерные процессоры могут использовать его по-разному.
РЕДАКТИРОВАТЬ: Обратите внимание, что этот ответ с 2009 года, и ЦП сильно эволюционировали за последние 10 лет. Если вы прибыли на этот пост, не принимайте все наши ответы здесь слишком серьезно.
Поскольку плотность транзисторов в интегральных схемах становилась все выше и выше, стало возможным создавать кэши большего размера без увеличения задержки, а кэши того же размера можно создавать с гораздо меньшей задержкой. Но поскольку процессоры стали быстрее, требуется меньшая задержка кэша L1. Эти два требования столкнулись друг с другом, в результате чего оптимальный размер кэша уровня 1 оказался примерно одинаковым.
Увеличение размера кэша уровня 1 может немного улучшить общую производительность, позволяя приложениям, которые будут использовать кэш большего размера, работать быстрее, но это также приведет к тому, что приложения, которые используют только кэш L1 меньшего размера, будут работать немного медленнее из-за более высокой задержки. . Но есть решение этой проблемы, которое позволит приложениям, которые оптимально работают как с небольшим кешем с низкой задержкой, так и с большим кешем с более высокой задержкой, работать быстро. Это достигается за счет сохранения одинакового размера 32 КБ данных L1 и кэша инструкций с низкой задержкой. Большие кэши L2 с высокой задержкой, имеющиеся в процессорах Pentium M (с кэшем L2 объемом 2 МБ) и Core2Duo (с кэшем L2 объемом 6 МБ), преобразованы в кэш третьего уровня. Затем к ЦП добавляется новый кэш второго уровня меньшего размера и с меньшей задержкой размером от 256 КБ до 1 МБ.
Процессоры AMD Athlon и Athlon 64 имели большой кэш-память первого уровня объемом 128 КБ (64 КБ данных и 64 КБ инструкций). Эти процессоры имеют эксклюзивную конструкцию кэша, что означает, что вторая копия данных из кэша L1 НЕ хранится в кэше L2, что экономит место для хранения других данных в кэше L2. AMD продала много бюджетных процессоров с размером кэша L2 всего 128 КБ, поэтому наличие 128 КБ кэша L1 с эксклюзивной конструкцией кэша означало, что фактический размер кэша ЦП с кэшем L1 128 КБ и 128 КБ L2 составлял всего 256 КБ. Эксклюзивный дизайн кэша означал, что больший кэш L1 можно было использовать в сочетании с небольшим кэшем L2, не тратя впустую мало доступного пространства в кэше L2, как это произошло бы с инклюзивным кэшем. Благодаря инклюзивной конструкции кэша, присутствующей в процессорах Intel, больший кэш L1 не только увеличивает задержку, но и уменьшает полезный размер кэша L2, что является дополнительной причиной не иметь кэш L1 большего размера, особенно на рынке бюджетных процессоров. .
На самом деле размер кэша L1 является самым большим узким местом для скорости в современных компьютерах. Патетически крошечные размеры кэша L1 могут быть ценой, но не производительностью. Доступ к кэш-памяти L1 возможен на частотах ГГц, так же, как и при работе процессора, в отличие от доступа к ОЗУ в 400 раз медленнее. Это дорого и сложно реализовать в современном двухмерном дизайне, однако это технически выполнимо, и первая компания, которая сделает это успешно, будет иметь компьютеры в 100 раз быстрее и по-прежнему работать круто, что может привести к серьезным инновациям во многих поля и доступны только через дорогие и сложные в программировании конфигурации ASIC/FPGA. Некоторые из этих проблем связаны с проприетарными / интеллектуальными проблемами и корпоративной жадностью, охватывающей нынешние десятилетия, когда крошечные и неэффективные кадры инженеров - единственные, кто имеет доступ к внутренним разработкам, и которым в основном выдают походные приказы, чтобы выжать затраты. эффективная запутанная протекционистская чушь. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и вскоре станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели.