Alasir Enterprises
Main Page >  Articles >  Принципы работы кэш-памяти  

 
Main Page
 
 
Reviews
 
Articles
 
Software
 
Reference
 
Motley
 
 
About Us
 
 
Принципы работы кэш-памяти

Павел Болотов
 
Дата публикации: 20 апреля 2007
Дата последнего изменения: 5 мая 2007

Содержание:
in English

 
Многопортовость

Разные кэши могут обладать разным количеством портов. Фактически, их необходимое количество зависит от функциональных устройств процессора и числа их конвейеров. Обычная однопортовая кэш-память в состоянии обслужить один запрос на чтение или запись за такт. Что касается D-cache, то однопортовая реализация может быть приемлемой лишь для простого дизайна с одним или двумя исполнительными конвейерами. Большее количество конвейеров потребует большего количества данных для эффективной работы, а перспектива остановки какого-либо конвейера по причине несвоевременной доставки данных из D-cache мало привлекает. В то же время, добавление ещё одного порта является сложной задачей, которая может потребовать основательной перепроектировки подсистемы кэш-памяти.
 
Продолжим на примере. Рассмотрим суперскалярный RISC-процессор с 4 целочисленными исполнительными конвейерами (2 из которых в состоянии проводить расчёт виртуальных адресов) и 2 вещественными исполнительными конвейерами — DEC Alpha 21264. Выборка большинства инструкций на исполнительные конвейеры может быть осуществлена в течение одного такта, что предполагает максимальную нагрузку на I-cache и D-cache. Поскольку Alpha является RISC-архитектурой с командами фиксированной длины по 4 байта, параллельное и упреждающее декодирование команд может быть реализовано без особых проблем, что выгодно отличает её от CISC-архитектур в целом и x86 в частности. В общем, команды загрузки/сохранения составляют от 20% до 50% от общего потока команд, также наблюдается соотношение в виде 2 операндов загрузки на 1 операнд сохранения. Таким образом, коммерчески привлекательная конфигурация должна включать поддержку не менее 2 портов чтения для D-cache, а также весьма желательна возможность параллельного обслуживания хотя бы 1 запроса чтения при 1 запросе записи. Вопрос в том, как этого достичь?
 
Существует несколько способов организации многопортовых кэшей:
  • идеальная многопортовость (ideal multiporting);
  • временное уплотнение (time division multiplexing);
  • зеркалирование (клонирование) (mirroring, cloning);
  • чередование (interleaving).

Идеальная многопортовость предполагает нестандартную структуру ячеек кэш-памяти. В то время как обычная 1-портовая ячейка статической памяти состоит из 6 полевых транзисторов, для 2-портовой реализации потребуются дополнительные 2 транзистора. Такие 2-портовые ячейки являются более дорогими в производстве и не столь быстрыми, как 1-портовые. Ко всему прочему, они характеризуются более высоким энергопотреблением.
 
Временное уплотнение можно сравнить с разгоном кэш-памяти. Другими словами, если заставить кэш-память работать с удвоенной (утроенной, учетверённой) частотой процессора, то она будет в состоянии обслужить 2 (3, 4) запроса за один такт процессора. Хотя такая кэш-память и будет оставаться 1-портовой физически, её производительность будет соответствовать 2-портовой (3-портовой, 4-портовой) идеальной релаизации. Например, DEC Alpha 21264 обладает 64Кб D-cache, которая работает с удвоенной частотой процессора. Этот подход не увеличивает производственных затрат, но требует значительно более серьёзных инженерных усилий вследствие усложнённого электрического и температурного менеджмента. Не является секретом тот факт, что энергопотребление возрастает линейно с тактовой частотой при постоянном напряжении.
 
Зеркалирование (клонирование) предусматривает использование 2 (3, 4) одинаковых кэшей. Это означает, что они характеризуются тем же размером, устройством и хранят одну и ту же информацию. Этот подход позволяет получить 2 (3, 4) порта чтения, поскольку каждая кэш-часть может быть опрошена независимо от других. Однако, имеется лишь один порт записи, так как запись во все кэш-части происходит одновременно. Другим нежелательным фактором является невозможность чтения при осуществлении записи, так как каждая кэш-часть обладает только одним физическим портом, хотя теоретически существует возможность минимизации этого недостатка при наделении каждой кэш-части собственным буфером отложенной записи (delayed write buffer). В частности, DEC Alpha 21164 обладает 8Кб D-cache, состоящим физически из двух одинаковых 8Кб частей. Зеркалирование (клонирование) не представляет особых сложностей с инженерной точки зрения, но этот подход наименее привлекателен с точки зрения производственных затрат. Фактически, только небольшие кэши могут быть зеркалированы (клонированы).
 
Чередование основывается на логической сегментации кэш-памяти. Если имеется в наличии несколько сегментов, то должно быть возможно организовать их параллельный опрос. Например, MIPS R10000 обладает 32Кб D-cache с 2-канальной ассоциативностью, который поддерживает 2-канальное чередование. Это решение почти не отражается на производственных затратах, также не является сложным с инженерной точки зрения. Однако, на эффективность этого метода оказывают значительное влияние сегментные конфликты. Если два или более запроса направляются в один и тот же сегмент, то они будут обработаны последовательно, так как каждый сегмент обладает одним физическим портом.
 
Конечно же, все вышеперечисленные техники могут быть совмещены в конкретно взятых разработках. Хотя реальность такова, что промышленно производимые 2-портовые микросхемы статической памяти по сравнению с 1-портовыми при одинаковом технологическом процессе оказываются до 50% медленнее и/или до 120% потребляют больше энергии и/или до 150% занимают больше площади кремниевой подложки.
 
<< Предыдущая страница Следующая страница >>

Copyright (c) Болотов Павел Владимирович, 2007. Все права сохранены.
Полная или частичная перепечатка без разрешения автора запрещена.
 
Designed and maintained by Alasir Enterprises, 1999-2007
rhett from alasir.com, walter from alasir.com