В кэше второго уровня
Время загрузки данных из кэша второго уровня составляет порядка тактов процессора в пересчете на одну 32битную ячейку, где F.CACHE – частота работы кэша второго уровня, F.CPU – частота ядра, а N.BUS – разрядность локальной кэш-шины. Латентность кэш-контроллера и блока интерфейсов с шиной здесь не учитывается, т.к. при конвейерной обработке данный ей можно полностью пренебречь.
Таким образом, на процессоре K6-333/66 чтение блока, вылезающего за пределы кэш первого уровня, но еще умещающегося в кэш-памяти второго, должно осуществляться в приблизительно в 2.5 раз медленнее. В действительности же (особенно на неразвернутых циклах) разрыв в производительности будет даже меньшим, поскольку параллельно с загрузкой данных их кэша второго уровня процессор может выполнять другие команды, частично компенсируя тем самым падение быстродействия. И правда, судя по приведенному выше графику, скорость загрузки данных из кэша второго уровня уступает кэшу первого уровня где-то в полтора раза.
Совершенно иная ситуация складывается с записью данных. Действительно, если загруженные в кэш-память строки не были модифицированы, кэш-контроллер просто замещает их новыми, иначе же он вынужден предварительно выгружать их в кэшируемую память, что практически вдвое увеличивает время доступа к ячейке. Впрочем, этой задержке можно противостоять, например, введением специального буфера, расположенным между кэшем первого уровня и блоком интерфейсов в шиной. Процессор K6, однако, не имеет такого буфера и потому в данном случае время записи данных в кэш второго уровня составляет порядка тактов процессора, что и подтверждается графиком graph 1.
Вся беда в том, что при превышении размера последовательно записываемого блока все банки кэша начинают работать вхолостую. Т.е. кэш-контроллер четырех ассоциативного кэша вынужден делать четыре лишних выгрузки на каждую кэш-линейку, не умещающуюся в кэш-памяти. Отсюда и тормоза. И это еще что! На процессоре Pentium–II кэш второго уровня работает на половинной частоте ядра, вследствие чего торможение оказывается еще большим!