- •7. Система памяти
- •7.1. Базовые концепции
- •7.2. Быстродействие, объем и стоимость
- •7.3.1. Функция отображения
- •7.3.2. Алгоритмы замещения
- •7.3.3. Примеры технологий отображения
- •7.3.4. Организация кэша в коммерческих процессорах
- •7.4. Производительность
- •7.4.1. Чередование операций
- •7.4.2. Частота попаданий и накладные расходы при промахах
- •7.4.3. Кэши на микросхеме процессора
- •7.4.4. Другие способы увеличения быстродействия
- •7.5. Виртуальная память
- •7.5.1. Преобразование адресов
- •7.6. Требования к управлению памятью
7.4.3. Кэши на микросхеме процессора
Когда информация пересылается между разными микросхемами, во входных и выходных вентилях микросхем происходят значительные задержки. Следовательно, самым оптимальным решением, способным увеличить скорость функционирования кэша, является размещение его на микросхеме процессора. Однако пространство на микросхеме процессора предназначается и для многих других функций, поэтому возможный размер кэша здесь очень ограничен.
Микросхемы всех высокопроизводительных процессоров содержат хотя бы небольшой кэш. Некоторые процессоры, и в частности процессоры 68040, Pentium III, Pentium 4, имеют по два отдельных кэша, один для команд, а другой для данных. К числу тех, которые ограничиваются единым кэшем, относится процессор ARM710T.
Комбинированный кэш для команд и данных может обеспечить более высокую частоту попаданий, поскольку он гибче в отношении размещения новых данных, но зато к раздельным кэшам возможен одновременный доступ, что также ведет к повышению производительности. Недостатком раздельных кэшей является сложность управляющих схем.
Обычно высокопроизводительные процессоры имеют два уровня кэш-памяти. Кэш L1 интегрируется в микросхему процессора, а кэш L2 чаще всего бывает внешним, имеет больший объем и реализуется на основе микросхемы SRAM. Случается, что и кэш второго уровня интегрируют в микросхему процессора, как в процессоре Pentiuin III версии Coppermine, в таком случае его объем несколько меньше, чем у внешнего кэша.
Если процессор имеет два уровня кэш-памяти, доступ к кэшу первого уровня должен выполняться предельно быстро, чтобы не задерживать работу процессора. Правда, доступ к кэшу не может осуществляться так же быстро, как к регистрам, поскольку кэш намного больше и сложнее по своей структуре. Поэтому доступ к кэшу обычно ускоряют путем параллельного доступа к нескольким словам, которые затем по очереди используются процессором. Эта технология применяется во многих современных процессорах.
Кэш второго уровня может быть более медленным, но он должен иметь больший объем, чтобы обеспечить высокую частоту попаданий. Скорость его функционирования имеет сравнительно небольшое значение, поскольку она влияет только на накладные расходы, связанные с промахами кэша L1. Типичная рабочая станция может содержать кэш первого уровня объемом в несколько десятков килобайтов и кэш второго уровня объемом в несколько мегабайтов.
Наличие кэша второго уровня значительно снижает влияние скорости основной памяти на производительность компьютера. Среднее время доступа к памяти, каким оно представляется процессору в системе с двухуровневым кэшем, рассчитывается следующим образом:
tave = h1C1 + (1 – h1)h2C2 + (1 – h1)(l – h2)M
где:
h1 — частота попаданий в кэш L1;
h2 — частота попаданий в кэш L2;
C1 — время доступа к информации в кэше L1;
C2— время доступа к информации в кэше L2;
M — время доступа к информации в основной памяти.
Количество промахов кэша L2, определяемое выражением (1 - h1)(1 – h2), должно быть предельно низким. Если значения h1 и h2 составляют порядка 90 %, то общее количество промахов, требующих обращения к основной памяти, составит менее 1 %. Таким образом, накладные расходы M с точки зрения производительности будут очень незначительны.