- •Предисловие
- •Глава 1. Общие сведения о микропроцессорах
- •1.1 Классификация микропроцессоров
- •1.2 Характеристики микропроцессоров
- •1.2.1 Тактовая частота
- •1.2.2 Архитектура процессора
- •1.2.3 Технологический процесс производства
- •1.2.4 Частота системной шины
- •1.2.5 Размер кэша
- •1.3 Типы архитектур микропроцессоров
- •1.4 Структурная схема микропроцессоров
- •1.4.1 Микропроцессор Фон-Неймана
- •1.4.2 Конвейер
- •1.4.3 Зависимость между частотой и количеством ступеней конвейера
- •1.5 Представление информации в эвм
- •1.5.1 Двоичное представление целых чисел
- •1.5.2 Представление символьной информации
- •Глава 2. Архитектура микропроцессоров ia-32
- •2.1 Состав и функции регистров
- •2.1.1 Основные регистры
- •2.1.2 Регистры дополнительных функциональных модулей
- •2.2 Типы адресации
- •2.3 Система команд
- •2.3.1 Классификация команд
- •2.3.2 Формат команды
- •2.3.3 Однобайтовые команды
- •2.3.4 Непосредственно заданные операнды
- •2.3.5 Команды с регистровыми операндами
- •2.3.7 Команды с операндами, расположенными в памяти
- •Глава 3. Организация многоуровневой памяти
- •3.1 Принцип построения многоуровневой памяти
- •3.2 Организация кэш-памяти
- •3.3 Протоколы когерентности памяти микропроцессоров
- •3.4 Страничная организация памяти
- •Глава 4. Режимы работы процессоров ia-32
- •4.1 Обзор режимов работы
- •4.2 Реальный режим адресации
- •4.3 Защищённый режим
- •4.3.1 Дескрипторные таблицы
- •4.3.2 Дескрипторные регистры
- •4.3.3 Дескриптор
- •4.3.4 Односегментная модель памяти
- •4.3.5 Многосегментная модель памяти
- •Глава 5. Страничная организация памяти в процессорах ia‑32
- •5.1 Каталог страниц
- •5.2 Таблица страниц
- •5.3 Страничная переадресация
- •5.4 Диспетчер виртуальных машин системы Microsoft Windows
- •Глава 6. Архитектура процессоров с параллелизмом уровня команд
- •6.1 Подходы к использованию ресурса транзисторов в микропроцессорах
- •6.2 Суперскалярные процессоры и процессоры с длинным командным словом
- •6.3 Зависимости между командами, препятствующие их параллельному исполнению
- •6.4 Предварительная выборка команд и предсказание переходов
- •6.5 Условное выполнение команд в vliw-процессорах
- •6.6 Декодирование команд, переименование ресурсов и диспетчеризация
- •6.7 Исполнение команд
- •6.8 Завершение выполнения команды
- •6.9 Направления развития архитектуры процессоров с параллелизмом уровня команд
- •Глава 7. Мультитредовые микропроцессоры
- •7.1 Основы мультитредовой архитектуры
- •7.2 Выявление тредов
- •7.3 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы
- •7.3.1 Мультитредовая модель выполнения программы
- •7.3.2 Мультитредовые программы
- •7.3.3 Аппаратные средства мультитредовой архитектуры
- •7.3.4 Преимущества мультитредовой архитектуры
- •7.4 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы
- •7.5 Специфика мультитредовых моделей распараллеливания
- •Глава 8. Модуль обработки вещественных чисел
- •8.1 Представление чисел с плавающей запятой
- •8.2 Состав модуля fpu
- •Глава 9. Основы 64-разрядной архитектуры
- •9.1 Состав и назначение регистров микропроцессора ia-64
- •9.2 Особенности архитектуры epic
- •9.3 Архитектура x86-64
- •9.4 Структура одноядерного процессора
- •9.5 Многоядерные процессоры
- •9.6 Зачем нужны “лишние” разряды?
- •Глава 10. Современные 64-разрядные микропроцессоры корпораций Intel и amd
- •10.1 Архитектура Intel Core 2
- •10.1.1 Intel Wide Dynamic Execution
- •10.1.2 Intel Intelligent Power Capability
- •10.1.3 Intel Advanced Smart Cache
- •10.1.4 Intel Smart Memory Access
- •10.1.5 Intel Advanced Digital Media Boost
- •10.1.6 Логическая схема процессора
- •10.2 Архитектура Intel Core i7
- •10.2.1 Технология Hyper-Threading в архитектуре Nehalem
- •10.2.2 Иерархия кэш-памяти в архитектуре Nehalem
- •10.3 Хронология развития семейств микропроцессоров с архитектурой Nehalem
- •10.4 Архитектура amd Athlon 64
- •10.4.1 Ядро процессора
- •10.4.3 Контроллер памяти
- •10.4.4 Контроллер HyperTransport
- •10.5 Архитектура amd k10
- •10.4.1 Технология amd Memory Optimizer Technology
- •10.5.2 Ядро процессора
- •10.5.3 Предвыборка данных и инструкций
- •10.5.4 Выборка из кэша
- •10.5.5 Предсказание переходов и ветвлений
- •10.5.6 Процесс декодирования
- •10.5.7 Диспетчеризация и переупорядочение микроопераций
- •10.5.8 Выполнение микроопераций
- •10.5.9 Технологии энергосбережения
- •10.5.10 Шина HyperTransport 3.0
- •10.5.11 Семейство процессоров Barcelona
- •10.5.12 Семейство процессоров Phenom
- •Глава 11. Технологии, поддерживаемые современными микропроцессорами
- •11.1 Технологии тепловой защиты
- •11.1.1 Технология Thermal Monitor
- •11.1.2 Технология Thermal Monitor 2
- •11.1.3 Режим аварийного отключения
- •11.2 Технологии энергосбережения
- •11.2.1 Технология Enhanced Intel SpeedStep
- •11.2.2 Технология Cool'n'Quiet
- •11.3 Технология расширенной памяти
- •11.4 Технология антивирусной защиты
- •11.5 Технология виртуализации
- •11.6 Реализация технологий в современных микроархитектурах
- •11.6.2 Em64t – NetBurst
- •11.6.3 Intel Core
- •11.6.4 Intel Atom
- •11.6.5 Nehalem
- •11.6.6 Xeon
- •Глава 12. Графические микропроцессоры
- •12.1 Основные термины и определения
- •12.2 Технологии построения трёхмерного изображения
- •12.2.1 Технологии повышения реалистичности трехмерного изображения
- •12.3 Шейдерный процессор
- •12.4 Особенности современных графических процессоров
- •Глава 13. Однокристальные микроконтроллеры
- •13.1 Общая характеристика микроконтроллеров
- •13.2 Микроконтроллеры семейства avr
- •Почему именно avr?
- •13.3 Общие сведения об омк avr
- •13.4 Характеристики avr-микроконтроллеров
- •Глава 14. Технология производства микропроцессоров
- •14.1 Особенности производства процессоров
- •14.2 Новые технологические решения
- •14.3 Технология производства сверхбольших интегральных схем
- •I. Выращивание кристалла кремния
- •II. Создание проводящих областей
- •III. Тестирование
- •IV. Изготовление корпуса
- •V. Доставка
- •14.4 Перспективы производства сбис
- •Англо-русский словарь терминов и аббревиатур
- •Библиографический список
- •Интернет-ссылки
- •350072. Краснодар, ул. Московская, 2, кор. А.
10.4.3 Контроллер памяти
Контроллер памяти в процессорах AMD Athlon 64 интегрирован в сам процессор. Традиционно он располагается в северном мосте чипсета на материнской плате. Собственно, контроллер памяти – это основной функциональный блок северного моста. Недаром в чипсетах Intel этот мост называют МСН (Memory Controller Hub). Преимущество такого решения очевидно: контроллер памяти, интегрированный в процессор, обеспечивает низкую латентность при обращении к памяти. Контроллер памяти процессора поддерживает DDR2-память (DDR2-533/667/800) в двухканальном режиме работы и имеет ширину шины 64 бит.
Сам по себе контроллер памяти включает два функциональных блока: контроллер памяти МСТ и контроллер DRAM DCT. DCT – это физический интерфейс, зависящий от конкретного типа используемой памяти. МСТ – интерфейс согласования ядра процессора с DCT, не зависящий от типа используемой памяти.
10.4.4 Контроллер HyperTransport
Революционным новшеством процессора AMD Athlon 64 является поддержка шины HyperTransport – универсальной шины межчипового соединения.
В ее основу положены две концепции: универсальность и масштабируемость. Универсальность шины HyperTransport заключается в том, что она позволяет связывать между собой не только процессоры, но и другие компоненты материнской платы, о чем мы еще расскажем. Масштабируемость шины состоит в том, что она дает возможность наращивать пропускную способность в зависимости от конкретных нужд пользователя.
Устройства, связываемые по шине HyperTransport, соединяются по принципу «точка - точка» (peer-to-peer), что подразумевает возможность связывания в цепочку множества устройств без использования специализированных коммутаторов. Передача и прием данных могут происходить в асинхронном режиме, причем передача данных организована в виде пакетов длиной до 64 байт.
Масштабируемость шины HyperTransport обеспечивается посредством магистрали шириной 2, 4, 8, 16 и 32 бит в каждом направлении. Кроме того, предусматривается возможность работы на различных тактовых частотах. При этом передача данных происходит по обоим фронтам тактового импульса.
10.5 Архитектура amd k10
На базе данной архитектуры вышло целое семейство новых серверных и настольных микропроцессоров. Процессоры этой архитектуры, производимые по степпингам В2 и ВА, имели ошибку в контроллере памяти (так называемый TLB bug), которая приводила к нестабильной работе системы. Таким образом, первый выход в свет AMD K10 нельзя назвать гладким.
Обнаруженная ошибка была оперативно устранена программным путем, что не преминуло сказаться на производительности. Особенно это было заметно в системах, использующих ОС семейства Windows. Позже вышли новые ревизии процессоров, изготовленных по новым техпроцессам, где эта критическая ошибка была устранена.
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-битного, имеются и другие улучшения контроллера памяти. Так, оптимизирован алгоритм переупорядочения операций чтения/записи, что позволяет наиболее эффективно использовать шину памяти. Операции чтения имеют преимущество перед операциями записи, а данные, предназначенные для записи, откладываются в специальном буфере. Кроме того, контроллер памяти умеет анализировать последовательности запросов и делать соответствующую предвыборку.