Общие сведения о кэше ЦП и строке кэша

Perl Программирования (созданный в соавторстве #22483 - хорошая работа Randal, у меня был мой для близости в 10 лет) был большим введением к Perl. Начиная с regex, режущий и ставя на карту массивы, ассоциативные массивы и т.д. Плюс whys и как имеет создание отчетов в Perl и ссылке на функцию.

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

24
задан chrisaycock 15 February 2011 в 17:57
поделиться

2 ответа

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

1) Да, теги занимают дополнительное место. Это является частью компромисса проекта - вы не хотите, чтобы он составлял большую часть общей площади, и почему размер строки не просто 1 байт или 1 слово. Кроме того, все теги для индекса доступны одновременно, и это может повлиять на эффективность и структуру, если существует большое количество способов. Размер немного больше, чем вы оцениваете. Также обычно есть несколько битов, чтобы отметить правильность, а иногда и подсказки. Большее количество путей и меньших строк требует большей доли, занимаемой тегами, поэтому обычно строки большие (32+ байта), а пути маленькие (4-16).

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

3) Теги не будут хранить младшие 5 бит, так как они не нужны для соответствия строке кэша. Они просто индексируются в отдельные строки.

В Википедии есть довольно хорошая, хотя и немного напряженная, запись кешей: http://en.wikipedia.org/wiki/CPU_cache - см. «Реализация». Есть диаграмма того, как данные и теги разделены. Я думаю, что все должны изучить этот материал, потому что вы действительно можете улучшить производительность кода, когда знаете, на что способна базовая машина.

17
ответ дан 29 November 2019 в 00:16
поделиться
  1. Метаданные кеша обычно не учитываются как часть самого кеша. Он может даже не храниться в той же части ЦП (это может быть в другом кэше, реализованном с использованием специальных регистров ЦП и т. Д.).
  2. Это зависит от того, будет ли ваш процессор извлекать невыровненные адреса. Если он будет выбирать только выровненные адреса, то приведенный вами пример будет верным. Если процессор выбирает невыровненные адреса, он может выбрать диапазон от 0xFFFF0008 до 0xFFFF0027.
  3. Байты индекса по-прежнему полезны, даже когда доступ к кэшу выровнен. Это дает ЦПУ сокращенный метод ссылки на байт в строке кэша, который он может использовать во внутренней бухгалтерии. Вы можете получить ту же информацию, зная адрес, связанный со строкой кэша, и адрес, связанный с байтом, но это намного больше информации для переноса.

Различные процессоры реализуют кэширование очень по-разному. Для лучшего ответа на ваш вопрос, пожалуйста, дайте некоторые дополнительные сведения о конкретном процессоре (тип, модель и т. Д.), О котором вы говорите.

3
ответ дан 29 November 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: