logo
Методичка

10.4.1 Технология amd Memory Optimizer Technology

Первые упоминания о архитектуре следующего поколения, которая должна была прийти на смену архитектуре AMD K8, появились в далеком 2003 году. В частности, на форуме Microprocessor Forum 2003 отмечалось, что новая архитектура будет положена в основу многоядерных процессоров, которые будут работать с тактовыми частотами до 10 ГГц. Позднее, конечно, иллюзии относительно заоблачных тактовых частот прошли, а новая архитектура стала постепенно приобретать все более конкретные очертания. Так, летом 2006 года появились планы по выходу процессоров на ее базе. Правда, тогда новая архитектура значилась под кодовым наименованием K8L, и только в феврале 2007 года ей было дано название AMD К10.

Итак, что же нового в архитектуре AMD K10? Четырёхъядерные процессоры на базе новой архитектуры имеют площадь кристалла 291 мм2 и содержат порядка 463 млн. транзисторов (рис. 10.11). Они выполняются по 65-нанометровому техпроцессу и содержат 11 слоев.

Одно из существенных нововведений в архитектуре AMD K10 – это новый контроллер памяти. В процессорах AMD K8 использовался один 128-битный контроллер памяти, который можно рассматривать как два спаренных 64-битных контроллера. В архитектуре AMD K10 применяются два независимых 64-битных контроллера памяти, что позволяет существенно ускорить доступ к памяти.

Чтобы понять, почему использование двух независимых 64-битных контроллеров памяти более эффективно, чем применение одного 128-битного контроллера, давайте вспомним, что современные модули памяти являются именно 64-битными. Для увеличения пропускной способности подсистемы памяти используется одновременный доступ к двум различным модулям памяти по двум 64-битным каналам (двухканальный режим работы). Это позволяет теоретически в два раза увеличить пропускную способность подсистемы памяти, поскольку за каждый такт работы контроллера памяти можно считывать две порции данных объемом по 64 бита, то есть всего 128 бит.

Однако применение двухканальной схемы работы контроллера памяти имеет и свои нюансы. Проблема заключается в том, что если процессору потребовались 64 бита данных (данные А), хранящиеся по адресу #1, то вместе с ними одновременно будут считаны и 64 бита данных (данные В), хранящихся по соседнему адресу #2 в другом модуле памяти. В операциях линейного чтения больших объемов данных такая ситуация лишь удваивает пропускную способность памяти. Однако может оказаться так, что процессору не нужны считанные данные В, а нужны только данные А. В этом случае двухканальный режим работы памяти не позволяет получить выигрыш в производительности, и соответственно 128-битный контроллер памяти будет функционировать с эффективностью одного 64-битного.

Применение двух независимых 64-битных контроллеров памяти, как в архитектуре AMD K10, позволяет одновременно загружать блоки данных с произвольными адресами из различных модулей памяти.

Предположим, к примеру, что процессору необходимо произвести операцию умножения двух чисел. Первое число – это Data А, которое имеет адрес .#1, а второе число – Data D, имеющее адрес #4. Пусть Data А хранится в первом модуле памяти, a Data В – во втором. В случае использования 128-битного контроллера памяти придется сначала загрузить 64 бита данных по адресу #1 (Data А) из первого модуля памяти и одновременно с этим 64 бита данных по адресу #2 (Data В), которые процессору не нужны. Далее будут загружены 64 бита данных по адресу #3 (Data С), которые также не нужны процессору, и 64 бита данных по адресу #4 (Data D). Как видите, применение 128-битного контроллера памяти в данном случае малоэффективно. Если же используются два независимых 64-битных контроллера памяти, то за один такт загружается 64 бита данных по адресу #1 (Data A) и 64 бита данных по адресу #4 (Data D).

Новая технология доступа к памяти называется AMD Memory Optimizer Technology.

Кроме применения двух независимых 64-битных контроллеров памяти вместо одного 128-битного, имеются и другие улучшения контроллера памяти. Так, оптимизирован алгоритм переупорядочения операций чтения/записи, что позволяет наиболее эффективно использовать шину памяти. Операции чтения имеют преимущество перед операциями записи, а данные, предназначенные для записи, откладываются в специальном буфере. Кроме того, контроллер памяти умеет анализировать последовательности запросов и делать соответствующую предвыборку.