Страница 1 из 9 Все рассматриваемые процессоры имеют отдельные кэши 1-го уровня (L1-кэши) для инструкций и данных, и общий кэш 2-го уровня (L2-кэш) увеличенного размера. Кэши инструкций различаются по своей организации: в процессорах Intel P-III, P-M, P-M2, P8 и IBM PPC970 в них хранятся исходные машинные инструкции в неизменённом виде. В процессорах AMD K8 — исходные инструкции вместе с информацией об их разметке (предекодировании), а в процессоре Intel P-4 — полностью декодированные микрооперации (МОПы), организованные в виде трасс. Общее описание устройства кэшей инструкций было дано выше, в соответствующем разделе.
Oрганизация кэшей данных, внешние интерфейсы процессора, эволюция и ближайшие перспективы развития Организация кэшей данных, внешние интерфейсы процессора Устройство кэшей 1-го и 2-го уровня Организация кэшей данных 1-го уровня в целом соответствует организации классического кэша инструкций. Например, в процессорах P-M, P-M2 и P8 общая структура кэшей инструкций и данных полностью совпадает: размер составляет 32 Кбайт, уровень ассоциативности — 8, размер блока — 64 байта. Также совпадает структура кэшей в процессоре K8: размер — 64 Кбайт, ассоциативность — 2, блок — 64 байта. Как видим, в процессоре K8 кэши имеют вдвое больший размер, но весьма малый уровень ассоциативности, а связи с чем могут возникать конфликты по алиасингу и снижаться их эффективная вместимость. В процессоре PPC970 между кэшами есть различия: кэш инструкций имеет размер 64 Кбайт и ассоциативность 1, а кэш данных — размер 32 Кбайт и ассоциативность 2. Размер блока для обоих кэшей равен 128. Организация кэшей с увеличенным размером блока и очень низкой ассоциативностью существенно снижает их эффективный размер и ведёт к значительным потерям на фрагментацию. Для всех указанных процессоров время доступа к кэшу данных 1-го уровня составляет 3 такта. В процессоре P-4 кэш данных по своей организации несколько отличается от кэшей других процессоров. Он имеет небольшой размер (8 Кбайт при уровне ассоциативности 4) и очень низкое время доступа — всего 2 такта (это соответствует примерно 1.5 тактам в традиционных процессорах). Столь быстрый доступ к кэшу обеспечивается применением ряда приёмов: тесной интеграцией кэша с арифметико-логическим и адресным устройствами, удвоенной частотой работы этих устройств и использованием 16 младших разрядов программного (логического) адреса для спекулятивной выборки элемента данных. Для адресации требуемого набора в кэше используются соответствующие разряды адреса b10-5, а для «предварительного» нахождения блока в этом наборе — всего 5 следующих разрядов b15-11 (эти разряды называют мини-тэгом). Окончательная проверка старших разрядов адреса (ключа) на соответствие полному тэгу вместе с преобразованием программного адреса в физический производится позднее. Если при этой проверке выяснится, что данные были считаны неправильно, они помечаются как недействительные, и производится их считывание из L2-кэша (как и в случае ненахождения данных в L1-кэше). Использование мини-тэга для спекулятивного считывания данных порождает острую проблему алиасинга: в одном наборе кэша не может быть двух блоков данных с совпадающими мини-тэгами, то есть отстоящих друг от друга на расстоянии, кратном 64 Кбайт. Это делает такой кэш похожим на кэш с прямым отображением (то есть с ассоциативностью, равной 1). Кроме того, конфликт по мини-тэгу усложняет процедуру считывания корректных данных из L2-кэша и может значительно увеличить время этого считывания. Данная аномалия может приводить к чрезмерной работе системы реплея и к снижению производительности. В процессоре P-4E (Prescott) организация кэша данных изменилась. Его размер увеличился до 16 Кбайт, уровень ассоциативности — до 8, а время доступа выросло до 4 тактов (что соответствует примерно 3 тактам в традиционных процессорах). Изменение времени доступа связано с увеличением размера и уровня ассоциативности и с повышением разрядности мини-тэга, а также с удлинением на 0.5 такта этапа подготовки адреса. Размер мини-тэга был увеличен с 5 до 10 разрядов (b20-11), а кратность адресов по мини-тэгу — до 2 Мбайт, благодаря чему проблема алиасинга практически исчезла. В связи с этим резко снизились потери на неправильное считывание данных из L1-кэша, что частично компенсировало возросшее время доступа. Кэши 2-го уровня в рассматриваемых процессорах имеют примерно одинаковую общую организацию. Размер блока L2-кэша в современных процессорах составляет 64 или 128 байт. Кэш 2-го уровня соединён с L1-кэшами полночастотной шиной, ширина которой может достигать 32 байта (256 бит), а пропускная способность — 121.6 Гбайт/с (для процессора P-4E 3.8 ГГц). В процессоре K8 шина L2-кэша имеет ширину 16 байтов (128 бит) и пропускную способность 48 Гбайт/с (при частоте процессора 3.0 ГГц). Однако из-за необходимости копировать в L2-кэш данные, вытесняемые из L1-кэша (в связи с взаимно эксклюзивной организацией кэшей в этом процессоре), эффективный темп считывания из L2-кэша снижается вдвое. В двухъядерных процессорах P-M2 (Core Duo) и P8 (Core) используется L2-кэш, общий для обоих ядер. Размеры L2-кэшей очень сильно варьируются в пределах каждого семейства процессоров. Приведём максимальные размеры и значения уровней ассоциативности для различных семейств: P-III — 512K (8), P-M — 2M (8), P-M2 — 2M (8), P-4 — 512K (8), P-4E — 2M (8), P8 — 4M (16), K8 — 1M (16), PPC970 — 512K (8), PPC970MP — 1M. Время доступа к L2-кэшу не является однозначной величиной и в ряде случаев может зависеть от нагрузки (частоты обращений). В документации по процессорам обычно приводят «чистые» значения, которые бывает трудно воспроизвести в тестах. Можно дать следующие примерные оценки полного времени доступа к данным в L2-кэше в тактах (по результатам тестирования на сайте iXBT.com): P-III - 8, P-M — 10, P-4 — 19 (9), P-4E — 29 (22), P-M2 — 14, P8 — 14, K8 — 17 (12). Для процессоров P-4, P-4E и K8 в скобках показаны «минимальные» значения времени доступа, полученные с помощью специальных приёмов тестирования, когда производилась «разгрузка» шины L2-кэша. Отметим, что в процессорах P-4 и P-4E длина такта меньше, чем в других процессорах, и время доступа к их кэшам (без «разгрузки» шины), выраженное в «нормализованных» тактах с учётом соотношения 1:1.4, составит соответственно 14 и 21 такт. |