Понятие архитектуры
Архитектура как совместимость с кодом
Наверняка вы часто встречались с термином «x86», или «Intel-совместимый процессор» (или «IBM PC compatible» — но это уже по отношению к компьютеру). Иногда также встречается термин «Pentium-совместимый» (почему именно Pentium — вы поймете сами чуть позже). Что за всеми этими названиями скрывается на самом деле? На данный момент наиболее корректно с точки зрения автора выглядит следующая простая формулировка: современный x86-процессор — это процессор, способный корректно исполнять машинный код архитектуры IA32 (архитектура 32-битных процессоров Intel). В первом приближении это код, исполняемый процессором i80386 (известным в народе как «386-й»), окончательно же основной набор команд IA32 сформировался с выходом процессора Intel Pentium Pro. Что означает «основной набор» и какие есть еще? Для начала ответим на первую часть вопроса. «Основной» в данном случае означает то, что с помощью исключительно этого набора команд, может быть написана любая программа, которая вообще может быть написана для процессора архитектуры x86 (или IA32, если вам так больше нравится).
Кроме того, у архитектуры IA32 существуют «официальные» расширения (дополнительные наборы команд) от разработчика самой архитектуры, компании Intel: MMX, SSE, SSE2 и SSE3. Также существуют «неофициальные» (не от Intel) расширенные наборы команд: EMMX, 3DNow! и Extended 3DNow! — их разработала компания AMD. Впрочем, «официальность» и «неофициальность» в данном случае понятие относительное — де-факто все сводится к тому, что некоторые расширения набора команд Intel как разработчик изначального набора признает, а некоторые — нет, разработчики же программного обеспечения используют то, что им лучше всего подходит. В отношении расширенных наборов команд существует одно простое правило хорошего тона: прежде чем их использовать, программа должна проверить, поддерживает ли их процессор. Иногда отступления от этого правила встречаются (и могут приводить к неправильному функционированию программ), но объективно это является проблемой некорректно написанного программного обеспечения, а не процессора.
Для чего предназначены дополнительные наборы команд? В первую очередь — для увеличения быстродействия при выполнении некоторых операций. Одна команда из дополнительного набора, как правило, выполняет действие, для которого понадобилась бы небольшая программа, состоящая из команд основного набора. Опять-таки, как правило, одна команда выполняется процессором быстрее, чем заменяющая ее последовательность. Однако в 99% случаев, ничего такого, чего нельзя было бы сделать с помощью основных команд, с помощью команд из дополнительного набора сделать нельзя. Таким образом, упомянутая выше проверка программой поддержки дополнительных наборов команд процессором, должна выполнять очень простую функцию: если, например, процессор поддерживает SSE — значит, считать будем быстро и с помощью команд из набора SSE. Если нет — будем считать медленнее, с помощью команд из основного набора. Корректно написанная программа обязана действовать именно так. Впрочем, сейчас практически никто не проверяет у процессора наличие поддержки MMX, так как все CPU, вышедшие за последние 5 лет, этот набор поддерживают гарантированно. Для справки приведем табличку, на которой обобщена информация о поддержке различных расширенных наборов команд различными десктопными (предназначенными для настольных ПК) процессорами.
Процессор |
MMX |
EMMX |
3DNow! |
SSE |
E3DNow! |
SSE2 |
SSE3 |
Intel Pentium II |
+ |
|
|
|
|
|
|
Intel Celeron до 533 MHz |
+ |
|
|
|
|
|
|
Intel Pentium III |
+ |
|
|
+ |
|
|
|
Intel Celeron 533—1400 MHz |
+ |
|
|
+ |
|
|
|
Intel Pentium 4 |
+ |
|
|
+ |
|
+ |
+/—* |
Intel Celeron от 1700 MHz |
+ |
|
|
+ |
|
+ |
|
Intel Celeron D |
+ |
|
|
+ |
|
+ |
+ |
Intel Pentium 4 eXtreme Edition |
+ |
|
|
+ |
|
+ |
+/—* |
Intel Pentium eXtreme Edition |
+ |
|
|
+ |
|
+ |
+ |
Intel Pentium D |
+ |
|
|
+ |
|
+ |
+ |
AMD K6 |
+ |
+ |
|
|
|
|
|
AMD K6-2 |
+ |
+ |
+ |
|
|
|
|
AMD K6-III |
+ |
+ |
+ |
|
|
|
|
AMD Athlon |
+ |
+ |
+ |
|
+ |
|
|
AMD Duron до 900 MHz |
+ |
+ |
+ |
|
+ |
|
|
AMD Athlon XP |
+ |
+ |
+ |
+ |
+ |
|
|
AMD Duron от 1000 MHz |
+ |
+ |
+ |
+ |
+ |
|
|
AMD Athlon 64 / Athlon FX |
+ |
+ |
+ |
+ |
+ |
+ |
+/—* |
AMD Sempron |
+ |
+ |
+ |
+ |
+ |
+/—* |
+/—* |
AMD Athlon 64 X2 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
VIA C3 |
+ |
+ |
+/—* |
+/—* |
|
|
|
* в зависимости от модификации
На данный момент всё популярное десктопное программное обеспечение (операционные системы Windows и Linux, офисные пакеты, компьютерные игры, и прочее) разрабатывается именно для x86-процессоров. Оно выполняется (за исключением «дурно воспитанных» программ) на любом x86-процессоре, независимо от того, кто его произвел. Поэтому вместо ориентированных на разработчика изначальной архитектуры терминов «Intel-совместимый» или «Pentium-совместимый», стали употреблять нейтральное название: «x86-совместимый процессор», «процессор с архитектурой x86». В данном случае под «архитектурой» понимается совместимость с определённым набором команд, то есть, можно сказать, «архитектура процессора с точки зрения программиста». Есть и другая трактовка того же термина.
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!