Процессоры изнутри. Процессоры изнутри Конструкция системной платы ЭВМ

В настоящее время основную долю рынка универсальных микропроцессоров занимают 32-битные и 64-битные микропроцессоры. Данная глава содержит описание микропроцессоров корпорации Intel с 32-битной архитектурой, которые составляют семейство IA-32 (Intel Architecture-32). Эта архитектура составляет основу 64-разрядной архитектуры x86‑64 корпорации Intel и архитектуры AMD-64 корпорации AMD.

2.1 Состав и функции регистров

Регистрами называют высокоскоростную память, расположенную внутри ЦПУ и предназначенную для оперативного хранения данных и быстрого доступа к ним со стороны внутренних компонентов процессора. Например, при выполнении оптимизации циклов программы по скорости, переменные, к которым выполняется доступ внутри цикла, располагают в регистрах процессора, а не в памяти. Совокупность всех таких регистров иногда называют сверхоперативной памятью (СоЗУ).

2.1.1 Основные регистры

На рисунке 2.1 изображена структура основных регистров и их названия. Существует 8 регистров общего назначения (РОН), 6 сегментных регистров, регистр флагов, регистр указателя команд, а также системные регистры, регистры отладки и тестирования.

Регистры общего назначения (РОНы) . Эти регистры используются в основном для выполнения арифметических операций и пересылки данных. К каждому РОНу можно обратиться как к 32-разрядному или как к 16-разрядному регистру. К некоторым регистрам можно обращаться как к 8-разрядным. Например, регистр ЕАХ является 32-разрядным, однако его младшие 16-разрядов называются регистром АХ. Старшие 8-разрядов регистра АХ называются АН, а младшие 8-разрядов – AL. 16-разрядные части индексных регистров и регистров-указателей обычно используются только при написании программ для реального режима адресации, т.е. для MS-DOS или её эмуляции в Windows.

Значение аббревиатур имён регистров:

Префикс E в начале имён регистров – expanded (расширенный).

Постфикс X в конце имён регистров означает, собственно, регистр.

AX – Accumulator (накопитель).

BX – Base register (регистр базы).

CX – Counter (счётчик).

DX – Data (данные).

AL – Accumulator low (младшая половина регистра AX).

AH – Accumulator high (старшая половина регистра AX).

BL – Base low (младшая половина регистра BX).

BH – Base high (старшая половина регистра BX).

CL – Counter low (младшая половина регистра CX).

CH – Counter high (старшая половина регистра CX).

DL – Data low (младшая половина регистра DX).

DH – Data high (старшая половина регистра DX).

SI – Source index (индекс источника). Содержит текущий адрес источника.

DI – Destination index (индекс получателя). Содержит текущий адрес приемника.

BP – Base pointer (указатель базы). Для произвольного доступа к данным внутри стека

SP – Stack pointer (указатель стека). Содержит указатель вершины стека.

CS – Code segment (сегмент кода).

DS – Data segment (сегмент данных).

ES – Extra Data segment (дополнительный сегмент данных).

FS – Extended Data segment (дополнительный сегмент данных).

GS – Extended Data segment (дополнительный сегмент данных).

SS – Stack segment (сегмент стека).

IP – Instruction pointer (указатель команд или счётчик команд).

F – Flags (регистр флагов).

GDTR – Global descriptor table register (регистр глобальной таблицы дескрипторов).

IDTR – Interruption descriptor table register (регистр таблицы дескрипторов прерываний).

TR – Task register (регистр задач).

LDTR – Local descriptor table register (регистр локальной таблицы дескрипторов).

DR – Debug register (регистр отладки).

TR – Test register (регистр тестирования).

CR – Control register (управляющий регистр).

Особенности использования регистров. При выполнении команд процессором часть регистров общего назначения имеют специальное предназначение.

    Содержимое регистра ЕАХ автоматически используется при выполнении команд умножения и деления. Поскольку этот регистр обычно связан с выполнением арифметических команд, его часто называют расширенным регистром аккумулятора (expanded accumulator ).

    Регистр ЕСХ автоматически используется процессором в качестве счетчика цикла.

    С помощью регистра ESP происходит обращение к данным, хранящимся в стеке. Стек – это системная область памяти, обращение к которой осуществляется по принципу FILO (First input – last output) "первым записали, последним прочитали". Этот регистр обычно никогда не используется для выполнения обычных арифметических операций и команд пересылки данных. Его часто называют расширенным регистром указателя стека (expanded stack pointer ). Регистр ESP указывает на адрес вершины стека (адрес, куда будет заноситься следующая переменная командой PUSH).

    Регистры ESI и EDI обычно используют для команд высокоскоростной пересылки данных из одного участка памяти в другой. Поэтому их иногда называют расширенными индексными регистрами источника и получателя данных (expanded source index и expanded destination index ). Регистр ESI – адрес источника, и содержит адрес начала блока информации для операции "переместить блок" (полный адрес DS:ESI), а регистр EDI – адрес назначения (полный адрес ES:EDI).

    Регистр EBP обычно используется компиляторами языков программирования высокого уровня для обращения к параметрам функции и для ссылок на локальные переменные, размещенные в стеке. Он не должен использоваться для выполнения обычных арифметических операций или для перемещения данных, за исключением случаев применения особых методик программирования опытными программистами. Его часто называют расширенным регистром указателя стекового фрейма (expanded frame pointer ). Регистр ЕВР содержит адрес, начиная с которого в стек вносится или забирается информация (или "глубина" стека). Параметры функций имеют положительный сдвиг относительно ЕВР, локальные переменные – отрицательный сдвиг, а полный адрес этого участка памяти хранится в регистровой паре SS:EBP.

    Регистр EIP хранит смещение (offset) адреса команды. Полный адрес на следующую исполняемую команду хранится в регистровой паре CS:ЕIP.

    Регистры ESP, EBP, ESI, EDI хранят смещение адреса данных.

Сегментные регистры. Эти регистры используются в качестве базовых при обращении к заранее распределенным областям оперативной памяти, которые называются сегментами. Существует три типа сегментов и, соответственно, сегментных регистров:

    кода (CS), в них хранятся только команды процессора, т.е. машинный код программы;

    данных (DS, ES, FS и GS), в них хранятся области памяти, выделяемые под переменные программы и под данные;

    стека (SS), в них хранится системная область памяти, называемая стеком, в которой распределяются локальные (временные) переменные программы и параметры, передаваемые функциям при их вызове.

Сегментные регистры загружаются селекторами сегментов, которые являются смещениями либо глобальной таблицы дескрипторов (GDT – Global Descriptor Table), либо локальной таблицы дескрипторов (LDT – Local Descriptor Table).

Биты сегментных регистров содержат следующую информацию:

0 – 1. RPL – Requested Privilege Level. Уровень запрашиваемых привилегий.

2. TI – Table Indicator. Бит таблицы индикаторов. Указывает процессору где искать указанный селектор. Если бит установлен, то процессор читает селектор из таблицы локальных дескрипторов. Если бит сброшен, то процессор читает селектор из таблицы глобальных дескрипторов.

3 – 15. В этих битах хранится индекс глобальной или локальной таблицы дескрипторов.

Регистр CS слишком мал для хранения сегмента кода, поэтому он должен быть установлен на исполнимый сегмент. Регистр SS слишком мал для хранения сегмента стека, поэтому он должен быть установлен на разрешённый по записи сегмент данных.

Уровень привилегий, установленный в сегментный регистр CS является уровнем привилегий запущенной программы, и называется текущим уровнем привилегий (CPL – Current privilege level). Сегментные регистры DS, ES, FS, GS предназначены для данных и должны быть установлены на сегмент данных с разрешением записи. Уровни привилегий, требуемые каждым из этих селекторов, должен быть больше, чем текущий уровень привилегий CPL.

С каждым из шести сегментных регистров связаны теневые регистры дескрипторов. В теневые регистры в защищённом режиме переписываются 32-разрядный базовый адрес сегмента, 20-разрядный предел и атрибуты (права доступа) из дескрипторных таблиц.

Регистр указателя команд. В регистре EIP хранится смещение относительно начала программы (offset) следующей выполняемой команды. В процессоре есть несколько команд, которые влияют на содержимое этого регистра. Изменение адреса, хранящегося в регистре ЕIP, вызывает передачу управления на новый участок программы.

Регистр флагов EF (EFLAGZ ) . Биты этого регистра называются флагами и отвечают либо за особенности выполнения некоторых команд CPU, либо отражают результат выполнения команд блоком ALU. Флаги регистра перечислены в таблице 2.1. Биты с 22 по 31 включительно – зарезервированы.

Таблица 2.1 Регистр флагов

Для анализа битов этого регистра предусмотрены специальные команды процессора. Говорят, что флаг установлен, когда бит флага равен 1, и что флаг сброшен, когда значение его бита равно 0. Кроме этого расширенный регистр EF по сравнению с регистром F содержит пять новых флагов.

Управляющие флаги. Состояние битов регистра EFLAGS, соответствующих управляющим флагам, программист может изменить с помощью специальных команд процессора. Эти флаги (DF, IF,TF) управляют процессом выполнения некоторых команд CPU:

8. TF – Trap flag. Флаг трассировки (пошагового режима). При его установке (TF=1) после выполнения каждой команды вызывается внутреннее прерывание INT 1, которое останавливает вычислительный процесс, давая возможность проверить содержимое регистров.

9. IF – Interrupt-enable flag. Флаг разрешения прерывания. При IF=1 разрешается выполнение маскированных аппаратных прерываний. При IF=0 – запрещается.

10. DF – Direction flag. Флаг управления направлением обработки массивов в строковых командах. При DF=1 индексные регистры SI, DI, которые принимают участие в строковых командах, автоматически декрементируются на количество байт операнда, осуществляя тем самым обработку строк с конца в начало. При DF=0 – инкрементируются, осуществляя обработку с начала в конец строки.

Флаги состояния . Эти флаги отражают различные признаки результата выполнения арифметических и логических команды CPU:

0. CF – Carry flag. Флаг переноса устанавливается в случае, если при выполнении беззнаковой арифметической операции получается число, разрядность которого превышает разрядность выделенного для него поля результата. В командах сдвига флаг CF фиксирует значение старшего бита.

2. PF – Parity flag. Флаг четности/паритета устанавливается при чётном количестве единиц в результате.

4. AF – Auxiliary Carry. Флаг дополнительного переноса/заёмаиз младшей тетрады в старшую (из третьего в четвёртый разряд). Используется в командах обработки 8-битных данных, чаще всего – двоично-десятичных чисел.

6. ZF – Zero flag. Флаг нуля устанавливается, если при выполнении арифметической или логической операции получается число, равное нулю (т.е. все биты результата равны 0).

7. SF – Sign flag. Флаг знакадублирует значение старшего бита результата. SF=0 для положительного результата, SF=1 для отрицательного.

11. OF – Overflow flag. Флаг переполнения, или) устанавливается в случае, если при выполнении арифметической операции со знаком получается число, разрядность которого превышает разрядность выделенного для него поля результата.

Флаги , добавленные в регистр EF:

12-13. IOPL – I/O Privilege Level. Флаг уровня привилегий ввода-вывода. Используется в защищенном режиме работы микропроцессора для контроля доступа к командам ввода-вывода в зависимости от привилегированности задачи.

14. NT – Nested task flag. Флаг вложенности задачи. Используется в защищенном режиме работы микропроцессора для фиксации того факта, что одна задача вложена в другую.

16. RF – Resume flag. Флаг возобновления. В режиме отладки единичное значение RF позволяет осуществить рестарт команды после прерываний. Используется совместно с регистрами точек отладочного останова.

17. VM – Virtual Mode flag. Флаг виртуального режима. Признак работы микропроцессора в режиме виртуального 8086. 1 – процессор работает в режиме виртуального 8086; 0 – процессор работает в реальном или защищенном режиме.

18. AC – Alignment Check. Флаг режима работы процессора, при котором происходит контроль выравнивания. Используется только на уровне привилегий 3. Если AC=1 и AM=1 (AM – бит в регистре управления CR0), то в случае обращения к операнду, не выровненному по соответствующему пределу (2 или 4 или 8) байт, будет вызвано исключение 17. Выравнивание операнда по пределам 2,4,8 означает, что адрес операнда кратен соответственно 2,4,8.

19. VIF – Virtual Interrupt Flag. Флаг разрешения прерывания в виртуальном режиме работы процессора.

20. VIP – Virtual Interrupt Pending. Флаг задержки прерывания в виртуальном режиме работы процессора.

21. ID – CPU Identification. Флаг идентификации процессора. Флаг может быть изменён, если процессор поддерживает команду CPUID.

В управляющих регистрах CR0-CR3 хранятся признаки состояния процессора, общие для всех задач. Регистр CR0 имеет следующие биты:

0. PE – Protection Enable. Флаг защищённого режима. Если PE=1, то режим работы процессора – защищённый.

1. MP – Mathematic present. Флаг наличия математического сопроцессора. Если MP=1, то математический сопроцессор присутствует.

2. EM – Emulate Numeric Extension. Флаг эмуляции команд над числами с плавающей запятой. Когда флаг установлен, то команды для работы с вещественными числами могут быть эмулированы программно.

3. TS – Task Switched. Флаг переключения задач. Флаг устанавливается после того, как задача переключена.

4. ET – Extension Type. Флаг типа расширения. Устанавливается, если присутствует арифметический сопроцессор 387 и выше.

5. NE – Numeric Error Enable. Флаг разрешения ошибки сопроцессора. Если флаг установлен, то в случае ошибки в сопроцессоре генерируется исключительная ситуация 16.

16. WP – Write Protect. Флаг защиты от записи. Если флаг установлен, то ядру операционной системы назначаются страницы памяти в режиме read-only (только чтение).

18. AM – Alignment Mask. Флаг маскирования выравнивания. Когда флаг установлен, то в случае обращения к невыровненным операндам будет генерироваться исключительная ситуация 17. Если флаг сброшен, то такая исключительная ситуация маскируется.

29. NW – Not Write-Through. Флаг запрета сквозной записи.

30. CD – Cache Disable. Флаг запрета кэширования.

31. PG – Paging Enable. Флаг режима страничной организации памяти. Когда флаг установлен, операционная система работает в режиме страничной организации памяти.

Остальные биты регистра CR0 зарезервированы.

Регистр CR1 зарезервирован. В регистре CR2 хранится 32-разрядный линейный адрес, по которому получен отказ страницы памяти. В 20 старших разрядах регистра CR3 хранится физический базовый адрес таблицы каталога страниц и биты управления кэш-памятью. Регистр CR4 содержит биты разрешения архитектурных расширений МП. В целом, эти регистры используются в системном программировании и устанавливают режим работы процессора (нормальный, защищенный и т.д.), постраничное распределение памяти и т.д.

Системные адресные регистры. В системных регистрах-указателях глобальной дескрипторной таблицы GDTR и таблицы прерываний IDTR хранятся 32-разрядные базовые адреса и 16-разрядные пределы таблиц соответственно. Системные сегментные регистры задач TR и локальной дескрипторной таблицы LDTR являются 16-разрядными селекторами. Им соответствуют теневые регистры дескрипторов, которые содержат 32-разрядный базовый адрес сегмента, 20-разрядный предел и байт права доступа.

В регистрах отладки DR0-DR3 содержатся 32-разрядные адреса точек останова в режиме отладки; DR4–DR5 зарезервированы и не используются; DR6 отображает состояние контрольной точки; DR7 – руководит размещением в программе контрольных точек.

Регистры тестирования TR входят в группу модельно-специфических регистров, их состав и количество зависят от типа процессора: в МП 386 используются два регистра TR6 и TR7 для контроля постраничной системы распределения памяти операционной системой. В Pentium II и выше используется двенадцать регистров TR1–TR12. Эта группа регистров содержит также результаты тестирования МП и кэш-памяти.

Статья раскрывает смысл термина «64 бита». В статье кратко рассмотрена история развития 64-битных систем, описаны наиболее распространенные на данный момент 64-битные процессоры архитектуры Intel 64 и 64-битная операционная система Windows.

Введение

В рамках архитектуры вычислительной техники под термином «64-битный» понимают 64-битные целые и другие типы данных, имеющих размер 64 бита. Под «64-битными» системами могут пониматься 64-битные архитектуры микропроцессоров (например, EM64T, IA-64) или 64-битные операционные системы (например, Windows XP Professional x64 Edition). Можно говорить о компиляторах, генерирующих 64-битный программный код.

В данной статье будут рассмотрены различные моменты, связанные с 64-битными технологиями. Статья предназначена для программистов, желающих начать разрабатывать 64-битные программы , и ориентирована на Windows-разработчиков, поскольку для них вопрос знакомства с 64-битными системами наиболее актуален.

История 64-битных систем

64-битность только недавно вошла в жизнь большинства пользователей и прикладных программистов. Однако работа с 64-битными данными имеет уже длинную историю.

1961: IBM выпускает суперкомпьютер IBM 7030 Stretch, в котором используются 64-битные слова данных, 32-битные или 64-битные машинные инструкции.

1974: Control Data Corporation запускает векторный суперкомпьютер CDC Star-100, в котором используется архитектура 64-битных слов (предыдущие системы CDC имели 60-битную архитектуру).

1976: Cray Research выпускает первый суперкомпьютер Cray-1, в котором реализована архитектура 64-битных слов и который послужит основой для всех последующих векторных суперкомпьютеров Cray.

1985: Cray выпускает UNICOS - первую 64-битную реализацию операционной системы Unix.

1991: MIPS Technologies производит первый 64-битный процессор, R4000, в котором реализована третья модификация разработанной в их компании архитектуры MIPS. Этот процессор используется в графических рабочих станциях SGI начиная с модели IRIS Crimson. Kendall Square Research выпускает свой первый суперкомпьютер KSR1, построенный на основе их собственной запатентованной 64-битной архитектуры RISC под операционной системой OSF/1.

1992: Digital Equipment Corporation (DEC) представляет полностью 64-битную архитектуру Alpha - детище проекта PRISM.

1993: DEC выпускает 64-битную Unix-подобную операционную систему DEC OSF/1 AXP (позже переименованную в Tru64 UNIX) для своих систем, построенных на архитектуре Alpha.

1994: Intel объявляет о своих планах по разработке 64-битной архитектуры IA-64 (совместно с компанией Hewlett-Packard) - преемника их 32-битных процессоров IA-32. Дата выпуска назначена на 1998-1999 годы. SGI выпускает IRIX 6.0 с 64-битной поддержкой чипсета R8000.

1995: Sun запускает 64-битный процессор семейства SPARC UltraSPARC. HAL Computer Systems, подчиненная Fujitsu, запускает рабочие станции, созданные на основе 64-битного процессора SPARC64 первого поколения, независимо разработанного компанией HAL. IBM выпускает микропроцессоры A10 и A30, а также 64-битные процессоры PowerPC AS. IBM также выпускает 64-битное обновление для системы AS/400, способное преобразовывать операционную систему, базы данных и приложения.

1996: Nintendo представляет игровую консоль Nintendo 64, созданную на основе более дешевого варианта MIPS R4000. HP выпускает реализацию 64-битной 2.0 версии собственной архитектуры PA-RISC PA-8000.

1997: IBM запускает линейку RS64 64-битных процессоров PowerPC/PowerPC AS.

1998: Sun выпускает Solaris 7 с полной 64-битной поддержкой UltraSPARC.

1999: Intel выпускает набор команд для архитектуры IA-64. AMD публично объявляет о своем наборе 64-битных расширений для IA-32, который был назван x86-64 (позже переименован в AMD64).

2000: IBM выпускает свой первый 64-битный мэйнфрейм zSeries z900, совместимый с ESA/390, а также новую операционную систему z/OS.

2001: Intel наконец запускает линейку 64-битных процессоров, которые теперь получают название Itanium и рассчитаны на высокопроизводительные серверы. Проект не соответствует ожиданиям из-за многочисленных задержек при выпуске IA-64 на рынок. NetBSD становится первой операционной системой, которая запускается на процессоре Intel Itanium после его выхода. Кроме того, Microsoft также выпускает Windows XP 64-Bit Edition для архитектуры IA-64 семейства Itanium, хотя в ней сохраняется возможность запускать 32-битные приложения при помощи прослойки WoW64.

2003: AMD представляет линейки процессоров Opteron и Athlon 64, созданные на основе архитектуры AMD64, которая является первой 64-битной процессорной архитектурой, основанной на архитектуре x86. Apple начинает использовать 64-битный процессор «G5» PowerPC 970 производства IBM. Intel утверждает, что процессорные чипы семейства Itanium останутся единственными 64-битными процессорами, разработанными в их компании.

2004: В ответ на коммерческий успех AMD, Intel признается, что они разрабатывали клон расширений AMD64, которому дали название IA-32e (позже переименован в EM64T, и затем еще раз в Intel 64). Intel также выпускает обновленные версии семейств процессоров Xeon и Pentium 4 с поддержкой новых команд.

2004: VIA Technologies представляет свой 64-битный процессор Isaiah.

2005: 31 января Sun выпускает Solaris 10 с поддержкой процессоров AMD64 / Intel 64. 30 апреля Microsoft выпускает Windows XP Professional x64 Edition для процессоров AMD64 / Intel 64.

2006: Sony, IBM и Toshiba начинают выпуск 64-битного процессора Cell для PlayStation 3, серверов, рабочих станций и других устройств. Microsoft выпускает Windows Vista с включенной 64-битной версией для процессоров AMD64 / Intel 64, которая поддерживает 32-битную совместимость. Все Windows-приложения и компоненты являются 64-битными, однако многие из них имеют 32-битные версии, включенные в систему в виде плагинов в целях совместимости.

2009: Как и Windows Vista, Windows 7 компании Microsoft включает полную 64-битную версию для процессоров AMD64 / Intel 64, и на большинство новых компьютеров по умолчанию устанавливается 64-битная версия. Выходит операционная система компании Apple Mac OS X 10.6, «Snow Leopard» которая имеет 64-битное ядро и предназначена для процессоров AMD64 / Intel 64, однако по умолчанию эта система устанавливается только на некоторые из последних моделей компьютеров компании Apple. Большинство приложений, поставляемых с Mac OS X 10.6, теперь также являются 64-битными.

Более подробно с историей развития 64-битных систем можно познакомиться в статье Джона Машей "Долгая дорога к 64 битам " и в энциклопедической статье в Wikipedia "64-bit " .

Прикладное программирование и 64-битные системы

На момент написания статьи в 2010 году, наиболее известными и распространенными являются две 64-битные архитектуры микропроцессоров: IA64 и Intel 64.
  1. IA-64 64-битная микропроцессорная архитектура, разработанная совместно компаниями Intel и Hewlett Packard. Реализована в микропроцессорах Itanium и Itanium 2. Для более подробного знакомства с архитектурой IA-64 можно обратиться к следующим статьям в Wikipedia: "IA-64 ", "Itanium ", "Itanium 2 ". Архитектуру Itanium поддерживает большое количество производителей серверов: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI и Unisys. Эти производители присоединились к Intel и множеству разработчиков ПО для создания Itanium Solutions Alliance , с целью продвижения архитектуры и ускорения темпов портирования ПО.
  2. Intel 64 (AMD64 / x86-64 / x64 / EM64T) - данная архитектура представляет собой расширение архитектуры x86 с полной обратной совместимостью. Существует множество вариантов названия данной архитектуры, что приводит к путанице, хотя, по сути, все эти названия обозначают одно и тоже: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e, Intel 64, x64. Более подробно узнать о том, как появилось так много названий, можно в статье из Wikipedia: "X86-64 ". Процессоры с архитектурой Intel 64 нашли широкое распространение персональных компьютерах. И скорее всего ваш компьютер оснащен именно процессором с данной архитектурой.
Важно понимать, что IA-64 и Intel 64 (AMD64) это совершенно разные, несовместимые друг с другом, микропроцессорные архитектуры. Далее в статье мы будем рассматривать только архитектуру Intel 64 (x64 / AMD64), как более популярную среди разработчиков прикладного программного обеспечения для операционной системы Windows. Для краткости программную модель Intel 64, доступную программисту в 64-битной системе Windows, называют Win64 .

Архитектура Intel 64 (AMD64)

Рассматриваемая архитектура Intel 64 простое, но в то же время мощное обратно совместимое расширение устаревшей промышленной архитектуры x86. Она добавляет 64-битное адресное пространство и расширяет регистровые ресурсы для поддержки большей производительности перекомпилированных 64-битных программ. Архитектура обеспечивает поддержку устаревшего 16-битного и 32-битного кода приложений и операционных систем без их модификации или перекомпиляции.

Отличительной особенностью Intel 64 является поддержка шестнадцати 64-битных регистров общего назначения (в x86-32 имелось восемь 32-битных регистров). Поддерживаются 64-битные арифметические и логические операции над целыми числами. Поддерживаются 64-битные виртуальные адреса. Для адресации новых регистров для команд введены «префиксы расширения регистра», для которых был выбран диапазон кодов 40h-4Fh, использующихся для команд INC <регистр> и DEC <регистр> в 32- и 16-битных режимах. Команды INC и DEC в 64-битном режиме должны кодироваться в более общей, двухбайтовой форме.

Регистры:

16 целочисленных 64-битных регистра общего назначения (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
8 80-битных регистров с плавающей точкой (ST0 - ST7),
8 64-битных регистров Multimedia Extensions (MM0 - MM7, имеют общее пространство с регистрами ST0 - ST7),
16 128-битных регистров SSE (XMM0 - XMM15),
64-битный указатель RIP и 64-битный регистр флагов RFLAGS.

Необходимость 64-битной архитектуры определяется приложениями, которым необходимо большое адресное пространство. В первую очередь это высокопроизводительные серверы, системы управления базами данных, САПР и, конечно, игры. Такие приложения получат существенные преимущества от 64-битного адресного пространства и увеличения количества регистров. Малое количество регистров, доступное в устаревшей x86 архитектуре, ограничивает производительность в вычислительных задачах. Увеличенное количество регистров обеспечивает достаточную производительность для многих приложений.

Подчеркнем основные достоинства архитектуры x86-64:

  • 64-битное адресное пространство;
  • расширенный набор регистров;
  • привычный для разработчиков набор команд;
  • возможность запуска старых 32-битных приложений в 64-битной операционной системе;
  • возможность использования 32-битных операционных систем.

64-битные операционные системы

Практически все современные операционные системы сейчас имеют версии для архитектуры Intel 64. Например, Microsoft предоставляет Windows XP x64. Крупнейшие разработчики UNIX систем также поставляют 64-битные версии, как например Linux Debian 3.5 x86-64. Однако это не означает, что весь код такой системы является полностью 64-битным. Часть кода ОС и многие приложения вполне могут оставаться 32-битными, так как Intel 64 обеспечивает обратную совместимость с 32-битными приложениями. Например, 64-битная версия Windows использует специальный режим WoW64 (Windows-on-Windows 64), который транслирует вызовы 32-битных приложений к ресурсам 64-битной операционной системы.

WoW64

Windows-on-Windows 64-bit (WoW64) - подсистема операционной системы Windows, позволяющая запускать 32-битные приложения на всех 64-битных версиях Windows.

Подсистема WoW64 не поддерживает следующие программы:

  • программы, скомпилированные для 16-разрядных операционных систем;
  • программы режима ядра, скомпилированные для 32-разрядных операционных систем.
Существуют различия WoW64 в зависимости от архитектуры процессора. Например, 64-битная версия Windows разработанная для процессора Intel Itanium 2 использует WoW64 для эмуляции x86 инструкций. Такая эмуляция весьма ресурсоемка по сравнению с WoW64 для архитектуры Intel 64, так как происходит переключение с 64-битного режима в режим совместимости, при выполнении 32-битных программ.

WoW64 на архитектуре Intel 64 (AMD64 / x64) не требует эмуляции инструкций. Здесь подсистема WoW64 эмулирует только 32-битное окружение, за счет дополнительной прослойки между 32-битным приложением и 64-битным Windows API. Где-то эта прослойка тонкая, где-то не очень. Для средней программы потери в производительности из-за наличия такой прослойки составят около 2%. Для некоторых программ это значение может быть больше. Два процента это немного, но следует учитывать, что 32-битные приложения работают немного медленнее под управлением 64-битной операционной системы Windows, чем в 32-битной среде.

Компиляция 64-битного кода не только исключает необходимость в WoW64, но и дает дополнительный прирост производительности. Это связано с архитектурными изменениями в микропроцессоре, такими как увеличение количества регистров общего назначения. Для средней программы можно ожидать в пределах 5-15% прироста производительности от простой перекомпиляции.

Из-за наличия прослойки WoW64 32-битные программы работают менее эффективно в 64-битной среде, чем в 32-битной. Но все-таки, простые 32-битные приложения могут получить одно преимущество от их запуска в 64-битной среде. Вы, наверное, знаете, что программа, собранная с ключом /LARGEADDRESSAWARE:YES может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB).

Подсистема WoW64 изолирует 32-разрядные программы от 64-разрядных путем перенаправления обращений к файлам и реестру. Это предотвращает случайный доступ 32-битных программ к данным 64-битных приложений. Например, 32-битное приложение, которое запускает файл DLL из каталога %systemroot%\System32, может случайно обратиться к 64-разрядному файлу DLL, который несовместим с 32-битной программой. Во избежание этого подсистема WoW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление позволяет предотвратить ошибки совместимости, поскольку при этом требуется файл DLL, созданный специально для работы с 32-разрядными приложениями.

Подробнее с механизмами перенаправления файловой системы и реестра можно познакомиться в разделе MSDN "Running 32-bit Applications ".

Программная модель Win64

Также как и в Win32 размер страниц в Win64 составляет 4Кб. Первые 64Кб адресного пространства никогда не отображаются, то есть наименьший правильный адрес это 0x10000. В отличие от Win32, системные DLL загружаются выше 4Гб.

Особенность компиляторов для Intel 64 в том, что они могут наиболее эффективно использовать регистры для передачи параметров в функции, вместо использования стека. Это позволило разработчикам Win64 архитектуры избавиться от такого понятия как соглашение о вызовах (calling convention). В Win32 можно использовать разные соглашения: __stdcall, __cdecl, __fastcall и так далее. В Win64 есть только одно соглашение о вызовах. Рассмотрим пример, как передаются в регистрах четыре аргумента типа integer:

  • RCX: первый аргумент
  • RDX: второй аргумент
  • R8: третий аргумент
  • R9: четвертый аргумент
Аргументы после первых четырех integer передаются на стеке. Для float аргументов используются XMM0-XMM3 регистры, а также стек.

Разница в соглашениях о вызове приводит к тому, что в одной программе нельзя использовать и 64-битный, и 32-битный код. Другими словами, если приложение скомпилировано для 64-битного режима, то все используемые библиотеки (DLL) также должны быть 64-битными.

Передача параметров через регистры является одним из новшеств, делающих 64-битные программы более производительными, чем 32-битные. Дополнительный выигрыш в производительности можно получить, используя 64-битные типы данных.

Адресное пространство

Хотя 64-битный процессор теоретически может адресовать 16 экзабайт памяти (2^64), Win64 в настоящий момент поддерживает 16 терабайт (2^44). Этому есть несколько причин. Текущие процессоры могут обеспечивать доступ лишь к 1 терабайту (2^40) физической памяти. Архитектура (но не аппаратная часть) может расширить это пространство до 4 петабайт (2^52). Однако в этом случае необходимо огромное количество памяти для страничных таблиц, отображающих память.

Помимо перечисленных ограничений, объем памяти, который доступен в той или иной версии 64-битной операционной системе Windows зависит также от коммерческих соображений компании Microsoft. Ниже приведена информация по объему памяти, поддерживаемой различными версиями 64-биными версиями Windows:

Windows XP Professional - 128 Gbyte;
Windows Server 2003, Standard - 32 Gbyte;
Windows Server 2003, Enterprise - 1 Tbyte;
Windows Server 2003, Datacenter - 1 Tbyte;
Windows Server 2008, Datacenter - 2 Tbyte;
Windows Server 2008, Enterprise - 2 Tbyte;
Windows Server 2008, Standard - 32 Gbyte;
Windows Server 2008, Web Server - 32 Gbyte;
Vista Home Basic - 8 Gbyte;
Vista Home Premium - 16 Gbyte;
Vista Business - 128 Gbyte;
Vista Enterprise - 128 Gbyte;
Vista Ultimate - 128 Gbyte;
Windows 7 Home Basic - 8 Gbyte;
Windows 7 Home Premium - 16 Gbyte;
Windows 7 Professional - 192 Gbyte;
Windows 7 Enterprise - 192 Gbyte;
Windows 7 Ultimate - 192 Gbyte;

Разработка 64-битных приложений

Наиболее полно вопросы разработки 64-битных приложений рассмотрены в курсе "

В 1985 году фирма Intel выпустила 32-разрядный микропроцессор, ставший родоначальником семейства IA-32 . Развитие этого семейства прошло ряд этапов, среди которых можно выделить следующие: реализация блока обработки чисел с плавающей запятой непосредственно на кристалле МП (микропроцессор I486 ), введение MMX -технологии обработки данных с фиксированной точкой по принципу SIMD - singl instruction multi data (один поток команд - множество потоков данных) в микропроцессоре Pentium MMX и развитие этой технологии на числа с плавающей запятой (SSE - streaming SIMD Extention ), появившееся впервые в МП Pentium III . Однако основные черты этой архитектуры вплоть до настоящего времени остаются неизменными.

Архитектура 32-разрядного микропроцессора существенно отличается от архитектуры 16-разрядного. Некоторые из этих отличий чисто количественные, другие носят принципиальный характер.

Главное внешнее отличие - увеличение разрядности шины данных и шины адреса до 32 бит. Это, в свою очередь, связано с изменениями в разрядности внутренних элементов микропроцессора и в механизме выполнения некоторых процессов, например, формирования физического адреса.

Регистры блока обработки чисел с фиксированной точкой стали 32-разрядными. К каждому из них можно обращаться как к одному двойному слову (32 разряда). К младшим 16 разрядам этих регистров можно обращаться так же, как и в 16-разрядном микропроцессоре.

В блоке сегментных регистров произошли как количественные, так и качественные изменения. К используемым в реальном режиме четырем регистрам CS, DS, SS и ES добавлены еще два: FS и GS. Хотя разрядность регистров этого блока осталась прежней (каждый по 16 бит), в формировании физического адреса оперативной памяти они используются по-другому. При работе микропроцессора в так называемом защищенном режиме они предназначаются для поиска дескриптора (описателя) сегмента в соответствующих системных таблицах, а уже в дескрипторе хранится базовый адрес и атрибуты сегмента. Формирование адреса в этом случае выполняет блок сегментации диспетчера памяти.

Если помимо сегментов память разбита еще и на страницы, то окончательное вычисление физических адресов выполняет блок управления страницами.

Начиная с микропроцессора I486, в состав кристалла микропроцессора входит блок обработки чисел с плавающей запятой, включающий в себя восемь 80-разрядных регистров для представления знаков, мантисс и порядков таких чисел.

На кристалле микропроцессора располагается также внутренняя кэш-память, которая представляет собой особым образом организованную быстродействующую буферную память, предназначенную для хранения наиболее часто используемой информации (команд и данных). В различных моделях микропроцессоров объем кэш-памяти составляет от 8 Кбайт до 512 Кбайт.

Микропроцессор на аппаратном уровне поддерживает мультипрограммный режим работы ЭВМ, то есть возможность иметь в памяти одновременно несколько готовых к выполнению программ, запуск которых осуществляется операционной системой в соответствии с алгоритмами ее функционирования либо в зависимости от особых ситуаций, складывающихся в работе внешних устройств.

С этой возможностью неразрывно связаны средства защиты памяти, которые обеспечивают контроль над неразрешенными взаимодействиями между отдельными программами. Они включают в себя защиту при управлении памятью и защиту по привилегиям.

Главные особенности расширенного формата команды - возможность использовать любой из регистров общего назначения в любом из режимов адресации, а также добавление еще одного режима адресации - относительного базового индексного с масштабированием. При этом эффективный адрес формируется следующим образом:

ЭА = (base) + (index) · scale + disp,

где (base) - значение базового регистра; (index) - значение индексного регистра; scale - величина масштабного множителя (scale = 1,2,3,4); disp - значение смещения, закодированного в самой команде.

Отметим, что в 32-разрядной архитектуре эффективный адрес обычно называют смещением (offset), в то же время отличая его от смещения, кодируемого в самой команде (displacement).

Разрядная архитектура ПЭВМ.

Win64-код объединяет в себе основные возможности 32-разрядного кода, а также включает изменения, связанные с повышением разрядности. В распоряжении программиста оказываются:

· 64-разрядные указатели;

· 64-разрядные типы данных;

· 32-разрядные типы данных;

· интерфейс Win64 API.

Обратите внимание, что 32-разрядные типы данных не исчезли при повышении разрядности платформы (как было с 16-разрядными типами данных при переходе к Win32). Это связано с тем, что даже в 64-разрядных приложениях в большинстве случаев переменные не требуют объема памяти в 8 байт, поэтому использование 64-разрядных типов в таких случаях оказалось бы крайне неэффективным. Операционной системе пришлось бы дописывать нули в старшие разряды, чтобы увеличить размер данных до 8 байт (такие данные к тому же очень неудобно считывать). Это привело бы к снижению производительности.

Иная участь постигла 32-разрядные указатели: они полностью исчезли. Дело в том, что использование 32-разрядных указателей накладывает ограничение на объем адресуемой памяти. Например, одним из главных преимуществ плоской модели памяти (она является основной для программирования 32-разрядных приложений для платформы NT), использующей 32-разрядные указатели, является возможность создания сегментов объемом до 4 Гбайт. Новые 64-разрядные указатели обеспечивают возможность адресации до 16 Тбайт памяти (1 Тбайт = 1012 Мбайт). Современными бизнес-приложениями этот объем вполне востребован.

Функции в Win64 API претерпели незначительные изменения. Только названия некоторых из них были изменены так, чтобы отразить принадлежность к 64-разрядной платформе. В большинстве случаев изменениям подверглись лишь типы параметров, являющихся аргументами вызова функций. Все остальные преимущества (возможность отказаться от использования файлов подкачки и т. д.) связаны либо с увеличившимся объемом адресации, либо с новыми типами данных.

Конструктивное исполнение системных плат. Форм фактор

Конструкция системной платы ЭВМ

Матери́нская пла́та (англ. motherboard, MB, также используется название англ. mainboard - главная плата; сленг. мама, мать, материнка) - это сложная многослойная печатная плата, на которой устанавливаются основные компоненты персонального компьютера (центральный процессор, контроллер ОЗУ и собственно ОЗУ, загрузочное ПЗУ, контроллеры базовых интерфейсов ввода-вывода). Как правило, материнская плата содержит разъёмы (слоты) для подключения дополнительных контроллеров, для подключения которых обычно используются шины USB, PCI и PCI-Express.

Центральный процессор

Набор системной логики (англ. chipset) - набор микросхем, обеспечивающих подключение ЦПУ к ОЗУ и контроллерам периферийных устройств. Как правило, современные наборы системной логики строятся на базе двух СБИС: «северного» и «южного мостов».

Северный мост (англ. Northbridge), MCH (Memory controller hub), системный контроллер - обеспечивает подключение ЦПУ к узлам, использующим высокопроизводительные шины: ОЗУ, графический контроллер.

Для подключения ЦПУ к системному контроллеру могут использоваться такие FSB-шины, как Hyper-Transport и SCI.

Обычно к системному контроллеру подключается ОЗУ. В таком случае он содержит в себе контроллер памяти. Таким образом, от типа применённого системного контроллера обычно зависит максимальный объём ОЗУ, а также пропускная способность шины памяти персонального компьютера. Но в настоящее время имеется тенденция встраивания контроллера ОЗУ непосредственно в ЦПУ (например, контроллер памяти встроен в процессор в AMD K8 и Intel Core i7), что упрощает функции системного контроллера и снижает тепловыделение.

В качестве шины для подключения графического контроллера на современных материнских платах используется PCI Express. Ранее использовались общие шины (ISA, VLB, PCI) и шина AGP.

Южный мост (англ. Southbridge), ICH (I/O controller hub), периферийный контроллер - содержит контроллеры периферийных устройств (жёсткого диска, Ethernet, аудио), контроллеры шин для подключения периферийных устройств (шины PCI, PCI-Express и USB), а также контроллеры шин, к которым подключаются устройства, не требующие высокой пропускной способности (LPC - используется для подключения загрузочного ПЗУ; также шина LPC используется для подключения мультиконтроллера (англ. Super I/O) - микросхемы, обеспечивающей поддержку «устаревших» низкопроизводительных интерфейсов передачи данных: последовательного и параллельного интерфейсов, контроллера клавиатуры и мыши).

Как правило, северный и южный мосты реализуются в виде отдельных СБИС, однако существуют и одночиповые решения. Именно набор системной логики определяет все ключевые особенности материнской платы и то, какие устройства могут подключаться к ней.

Оперативная память (также оперативное запоминающее устройство, ОЗУ) - в информатике - память, часть системы памяти ЭВМ, в которую процессор может обратиться за одну операцию (jump, move и т. п.). Предназначена для временного хранения данных и команд, необходимых процессору для выполнения им операций. Оперативная память передаёт процессору данные непосредственно, либо через кэш-память. Каждая ячейка оперативной памяти имеет свой индивидуальный адрес.

ОЗУ может изготавливаться как отдельный блок или входить в конструкцию однокристальной ЭВМ или микроконтроллера.

Загрузочное ПЗУ - хранит ПО, которое исполняется сразу после включения питания. Как правило, загрузочное ПЗУ содержит BIOS, однако может содержать и ПО, работающие в рамках EFI.

Особенности архитектуры 64 – разрядных МП


5.1. Itanium 2 Intel

Процессор разрабатывался с нуля, причем, параллельно сразу в двух версиях: инженерами Intel и Hewlett-Packard. Впро-чем, в основе обоих чипов лежали, естественно, одни и те же идеи, поскольку создавались они все же совместно, и должны были оба стать родоначальниками одного и того же семейства. Цементирующим составом были, естественно, единая идеология, при-шедшая на смену CISC - EPIC (Explicitly Parallel Instruction Computing), и новая архитектура - IA-64, включающая в себя на-бор инструкций, описание регистров, и прочие подобные вещи. Впрочем, архитектура как раз - вещь изменчивая, достаточно вспомнить как отличаются между собой такие CISC процессоры, как 8086 и i80486, оба созданные на базе 80x86.
Точно так же и с Merced и McKinley, Itanium и Itanium 2 - оба построены на базе одной идеологии, но в разных разновидно-стях архитектуры. В свое время та же история, в общем то, была и с Pentium и Pentium Pro. Впрочем, общие черты были и у тех, есть и у этих, за это "отвечает" EPIC. В первую очередь речь идет о полноценной масштабной суперскалярности, то есть, способности выполнять одновременно несколько инструкций. Для чего, естест-венно, процессор содержит исполнительные модули - для опера-ций с целыми числами, с числами с плавающей запятой, и т.д.
В отличие от Pentium и его последователей, разбирающихся в коде самостоятельно, EPIC-процессоры сильно полагаются на компилятор, который должен сам проанализировать код на пред-мет нахождения оптимальных мест для распараллеливания его вы-полнения, и снабдить процессор этой информацией. Поэтому и используется «explicitly» - процессор не должен сам пытаться по-нять, что можно исполнять параллельно, а что нет, и т.д. - все это ему уже заранее объяснит компилятор. Плюс, мощные механизмы по предсказанию переходов, предварительному выполнению кус-ков кода, предварительной загрузке данных, и тому подобные ве-щи - загрузка исполнительных блоков должна быть распределена максимально равномерно.
Кардинально решен вопрос с регистрами, количество кото-рых увеличено в несколько раз: у Itanium их количество составляет 128 общего назначения (рис.1), 128 - для хранения чисел с пла-вающей запятой, 8 регистров переходов, и 64, отвечающих за ра-боту механизмов предсказания. Здесь все очевидно - такого коли-чества регистров, да еще реально 64-битных, хватит для хранения любых требуемых чисел для любого разумного количество испол-нительных модулей. У Itanium, первого представителя семейства, таких регистров всего пять - два целочисленных, два для операций с памятью и четыре - для операций с плавающей точкой. Физи-ческая память адресуется 44-бит числами, что на самом деле огра-ничивает ее объем "всего лишь" 17.6 Терабайт, блоки для опера-ций с плавающей точкой работают с числами в 82-бит представлении.

От идеи реализовать 32-бит 80x86 ядро в аппаратном виде Intel отказался, сочтя это слишком неэффективным использовани-ем площади кристалла. Так что для того, чтобы получить возмож-ность исполнения Itanium 80х86 кода, была создана система трансляции, которая на лету преобразует 80x86 код в IA-64.
Очевидно, что при прочих равных, производительность подобного решения будет ниже, чем чистого x86, работающего на той же частоте. Впрочем, никто и не ждал от Itanium скоростного исполнения x86 программ - поддержка этой архитектуры относит-ся скорее к издержкам переходного периода. Тем не менее, факт остается фактом: это семейство для решения 32-бит задач не при-способлено. Впрочем, вряд ли кто-то будет использовать Itanium для подобных целей при наличии полноценного 64-битного ПО..
Вдобавок, сам по себе Itanium был в значительной степени пилотным проектом, как и Pentium Pro, так что процессор вообще стоит рассматривать больше как демонстрацию возможностей ар-хитектуры. Характерный штрих - чипсет для Itanium, 460GX, под-держивает в качестве памяти всего лишь PC100 SDRAM, это кое-что говорит о скорости, с которой способен переваривать данные процессор. С другой стороны, однако, в какой-то мере не слишком быстрый интерфейс с оперативной памятью компенсируется очень большой кэш-памятью L3 - 2 или 4 Мбайт, работающей на полной частоте процессора (733 или 800 МГц) с пропускной способно-стью до 12.8 Гбайт/с.
Еще одной задачей Itanium было решить вопрос с компиля-торами - ведь EPIC-процессоры, как уже упоминалось, очень сильно от них зависят. В отличие от компиляторов для 80x86 про-цессоров, которые на их производительность почти не влияли, здесь компиляторы являются полноправными партнерами процес-сора - ведь они снабжают его крайне необходимой для работы ин-формацией, и от того, насколько качественной она будет, будет за-висеть скорость исполнения этой программы процессором.
Itanium 2 является уже куда более коммерчески интересным продуктом. Созданный Hewlett-Packard, набившей руку на создании 64-бит процессоров серии PA-RISC, чип получился куда более совершенным. С несколько меньшим количеством L3 (1.5 или 3 Мбайт) и несколько более высокой частотой, 900 МГц или 1 ГГц, он обеспечивает в пол-тора-два раза большую производительность на тех же задачах, что и Itanium. Он является, фактически, первым представителем архи-тектуры IA-64.
Дальше планируется еще большее распараллеливание мак-симально модным на сегодняшний день путем: процессор должен будет перейти на два физических ядра, что позволит практически удвоить производительность по достаточно приемлемой цене - по крайней мере, результат получится куда более дешевым, чем если бы того же количества исполнительных модулей, регистров, и т.д., пытались достичь на едином кристалле.

5.2. Athlon 64 AMD

В первую очередь заметим, что процессор Athlon 64 – это именно тот 64-битный процессор для настольных систем, который изначально планировала выпустить AMD. Впоследствии, в свете выхода скоростных процессоров Pentium 4, появления в них 800-мегагерцовой шины и технологии Hyper-Threading, AMD в сроч-ном порядке решила нацелить на рынок настольных систем и од-нопроцессорный Opteron, дав ему имя Athlon 64 FX. Однако Athlon 64 FX в силу своего серверного происхождения оказался дорогим и малораспространенным. По настоящему же продвинуть архитектуру AMD64 для массового использования должен именно Athlon 64.
Ниже представлена таблица 1 со спецификациями 64 - раз-рядных МП Athlon 64 3200+, Athlon 65 FX-51 и Athlon XP 3200+:

Таблица 1

* Заметим, что память в Athlon 64 и Athlon 64 FX такту-ется относительно частоты ядра, поэтому реальные час-тоты для памяти в этом случае составляют 129.4, 157.1 и 200 МГц.
Фактически, Athlon 64 отличается от своего старшего собра-та Athlon 64 FX, помимо формы и размеров корпуса, только лишь контроллером памяти. Хотя, при этом, и тот и другой процессоры производятся из одних и тех же кристаллов. Контроллер памяти в Athlon 64 одноканальный и в этом заключается как его слабость, так и преимущество по сравнению с Athlon 64 FX. Недостаток од-ноканального контроллера памяти в Athlon 64 очевиден: это более низкая теоретическая пропускная способность.
Учитывая, что Athlon 64 способен работать с DDR400 памя-тью, максимальная пропускная способность встроенного в CPU контроллера памяти составляет 3.2 Гбайт в секунду. Это в два раза меньше, чем аналогичная характеристика Athlon 64 FX. Преиму-щество же контроллера памяти Athlon 64 заключается в том, что он, в отличие от контроллера Athlon 64 FX, поддерживает обыч-ные нерегистровые модули памяти. Такие модули по сравнению с регистровыми более дешевы, имеет более агрессивные тайминги и работают быстрее, даже при одинаковых с регистровыми модуля-ми настройках. То есть при более низкой пропускной способности, обеспечиваемой контроллером памяти Athlon 64, подсистема памяти, его использующая, имеет более низкую латентность, что мы и покажем ниже.
АMD Athlon 64 по внешнему виду похож на Opteron и Athlon 64 FX.
Отличия обнаруживаются только лишь в маркировке и в меньшем числе ножек на обратной стороне, поскольку процессоры Athlon 64 устанавливаются в материнские платы с Socket 754 и не совместимы с Socket 940 платами, предназначенными для CPU се-мейств Athlon 64 FX и Opteron.
Помимо перечисленных выше особенностей, есть в новых процессорах Athlon 64 и еще одна. Эти процессоры обладают под-держкой технологии Cool’n’Quiet, фактически пришедшей в них из мобильных вариантов МП. По сути, Cool’n’Quiet представляет собой некое подобие технологии энергосбережения PowerNow!, уже давно используемой в мобильных МП от AMD. Но теперь эта технология, наконец, пришла и в настольные процессоры ком-пании. Поддержка Cool’n’Quiet – еще одно преимущество Athlon 64 над Athlon 64 FX/Opteron, не имеющих пока никаких подобных технологий. Компания AMD достаточно давно уделяет присталь-ное внимание понижению уровня тепловыделения своих настоль-ных процессоров.
Надо сказать, что в этом компания уже давно превосходит Intel: старшие модели процессоров AMD при максимальной на-грузке выделяют значительно меньше тепла, чем старшие модели Pentium 4. Также, в процессорах применяются технологии, пони-жающие тепловыделение и при низкой нагрузке. Еще МП семей
ства Athlon XP имели возможность перехода в «ждущий ре-жим» (Halt/Stop Grant) при выполнении команды HALT, что выли-валось в понижение температуры процессора при его загрузке ни-же 100%. Однако теперь AMD пошла еще дальше. В новых про-цессорах Athlon 64 реализована еще более интеллектуальная схема понижения тепловыделения.
В дополнение к состояниям Halt/Stop Grant, Athlon 64 умеет сбрасывать свою тактовую частоту и напряжение питания для еще более сильного снижения тепловыделения. В работе с использова-нием этой технологии тактовой частотой МП управляет драйвер процессора, который сбрасывает или повышает ее, основываясь на данных о его загрузке. Действительно, если процессор полностью справляется с возлагаемой на него работой и его загрузка сильно меньше 100%, то можно без ущерба для функционирования систе-мы в целом снизить его тактовую частоту: на работе системы это никак не скажется. Например, при простоях, работе в офисных приложениях, просмотре видео, дефрагментации дисков и в по-добных задачах мощности процессора в полной мере не использу-ются. Именно в таких случаях процессорный драйвер переводит Athlon 64 на меньшую тактовую частоту. Когда же от процессора требуется полная отдача, например, в играх, при решении вычис-лительных задач, в задачах кодирования данных и т.п., частота процессора поднимается до номинала. Именно таким образом и работает технология Cool’n’Quiet.
На практике это выглядит следующим образом. В обычных условиях, при минимальной загрузке МП процессорный драйвер сбрасывает частоту Athlon 64 3200+ со штатных 2 ГГц до 800 МГц. Напряжение питания процессора при этом понижается до 1.3В. Как видим, снижение тактовой частоты обеспечивается за счет уменьшения множителя процессора до 4x. Это, кстати, обу-славливает и тот факт, что процессоры Athlon 64 3200+ поставля-ются с незафиксированным коэффициентом умножения. В таком режиме процессор продолжает работать до тех пор, пока его за-грузка не превысит 70-80%. В частности, мы смогли запустить од-новременно дефрагментацию диска, проигрывание файлов с рас-ширением mp3 (аудифайлов) и просмотр MPEG-4 (видеофайлов) ролика, в то время как процессор продолжал работать на часто-те 800 МГц.
Когда же загрузка процессора Athlon 64 при частоте 800 МГц превышает допустимый предел, МП переводится драйвером в следующее состояние, при котором частота Athlon 64 3200+ со-ставляет 1.8 ГГц, а напряжение питания 1.4В. Достигается это вновь за счет уменьшения множителя, на этот раз до 9x. И только если в данном случае нагрузка процессора вновь оказывается чрезмерно высокой, драйвер переводит МП в штатный режим: частота 2 ГГц, напряжение питания – 1.5В.
Отметим, что в режимах с пониженным питанием и часто-той тепловыделение процессора Athlon 64 3200+ резко падает. Для сравнения приведем таблицу 4 с тепловыделением этого процес-сора в основных режимах.

Таким образом, использование технологии Cool’n’Quiet по-зволяет значительно снизить температуру процессора не только в моменты простоя, но и во время выполнения ряда задач, не тре-бующих от МП максимальной производительности. Что немало-важно, быстродействие МП в задачах, требовательных к процес-сорным ресурсам, при этом совершенно не снижается. В итоге, при применении систем охлаждения с вентиляторами с перемен-ной скоростью, использование технологии Cool’n’Quiet может по-зволить значительно снизить уровень шума.