7.4.4.3.1. Организация кэш-памяти

 

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

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

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

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

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

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

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

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

 

 

HotLog

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий