Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Что такое кэш-память процессора

Школьник выходит к доске и получает задание написать, к примеру, «большой бурый медведь вытащил из воды серебристую рыбу». Берёт кусочек мела и пишет, не переспрашивая. Почему не переспрашивая? Потому что среднестатистический человек способен «кэшировать» в кратковременной памяти точные последовательности слов длиною до пятнадцати лексических единиц. И вот инженеры подумали, а почему бы не научить подобному кэшированию микропроцессоры.

Как всё начиналось

Согласно легендам, всё началось с чипов серии Intel 80386, появившихся в 1985-м. В эпоху, когда тактовая частота составляла смешные по нынешним меркам 20-25 мегагерц, решили сэкономить сотню наносекунд — прицепили дополнительную микросхему. Получилось неплохо.

«Да, функционирует быстрее! Поэтому в будущем без кэша не обойтись!» — решили разработчики. — «Значит, доведётся оформлять его прямо на кристалле чипа!» Так и сделали в 1989-м, когда появился Intel 80486.

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

Зачем это нужно

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

Дело в том, что для доступа к выделенным областям «оперативки» требуется время. Пусть несерьёзно малые доли секунды, но при миллионах операций они складываются в ощутимые задержки. Поэтому то, что обрабатывается непосредственно в определённый момент, целесообразно держать под рукой, как можно ближе. И не выбрасывать сразу, подождать, авось пригодится через минуту-другую.

Увидеть результат действия кэш-памяти процессора можно воочию. Открываем документ, например, в LibreOffice Writer. Наблюдаем, как запускается приложение. Вот появилась неторопливая заставка LibreOffice, затем отобразилось окно, после чего пред ясные очи предстало содержимое файла.

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

«Ага!» — подумал чип. — «Пользователь что-то открывает... Надо посмотреть в контроллере кэш-памяти, есть ли у меня это в запасе... Есть! Значит, обращаться к ОЗУ не придётся.»

Разновидности

В процессорном кэше могут присутствовать примерно такие функциональные подсистемы:

  1. кэш инструкций — в соответствии с весьма очевидным названием, это запас из машинного кода, команд, с которыми чип только что работал;
  2. буфер ассоциативной трансляции (Translation lookaside buffer, TLB) — облегчает взаимодействие виртуальной и физической памяти, удерживая соответствия адресных пространств;
  3. контроллер, уже упомянутый выше. Без него никак.

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

А ещё бывают такие подсистемы как Victim Cashe с хранением сведений о недавно вытесненном из процессорного кэша, Trace Cashe (в Intel Pentium 4) с декодированными трассами машинных инструкций, ну и прочие мелочи, интересные только специалистам.

Кроме того, кэш-память делится на уровни. Самый первый — небольшой ёмкости и быстрый. В него чип заглядывает в первую очередь, чтобы посмотреть, не припасены ли там данные. Нужного нет — тогда смотрит на второй уровень, более вместительный, но обладающий меньшим быстродействием. Нет и там — ну что ж, делать нечего, доведётся обращаться к ОЗУ.

Однако и тут не всё так просто. Не вдаваясь в подробности, кэширование бывает:

  1. инклюзивное (inclusive), когда одни и те же данные способны храниться и в первом уровне, и во втором;
  2. эксклюзивное (exclusive), когда используется только один уровень.

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

В реальной жизни

У современных процессоров обычно наблюдаются два-три уровня кэш-памяти. Говорят, иногда делают и четыре, но это мало кто видел.

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

В четырёхъядерных чипах могут быть общие вторые уровни для каждой пары кристаллов, а третий — для всех. Ну или вроде того.

В реальной жизни простому пользователю вникать в особенности не так уж сильно нужно. Главное — пользоваться хорошим, оптимизированным софтом, а не чем-то монструозным, тяжёлым, неповоротливым и «текущим памятью».

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

Главное условие эффективности использования памяти чипов — предсказуемость поведения приложений. То есть, их поведение в соответствии со следующими концепциями:

  1. временная локальность — приложение, обратившись к конкретной ячейке ОЗУ, наверняка будет повторять обращения к ней и впредь (а не бросит это место как замусоренное, продолжая протекать памятью в другом);
  2. пространственная локальность — заняв для своих нужд одну ячейку, приложение будет занимать соседние, а не какие попало.

Если приложение ведёт себя разумно, с легко предсказуемой закономерностью операций, то кэш-контроллеру работать с ним — одно удовольствие. А от этого выигрывают производительность и отзывчивость программы.

Автор: vanilinkin, специально для xBB.uz, 07.03.2013


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2013-03-07 14:49:00

Метки материала: процессор, что такое, память, кэш, что такое кэш, кэш-память, что такое кэш-память, кэш-память процессора, материнская плата, системная плата, компьютер, компьютерные технологии, процессоры, компьютерная техника, цифровые технологии, компьютерное железо

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.