Что такое платформа x86. Современные десктопные процессоры архитектуры x86

(real mode)

Классический режим адресации, использованный в первых моделях семейства. Использует сегментированную модель памяти, организованную следующим образом: адресное пространство в 1MiB разбивается на 16-байтовые блоки, называемые параграфами. Всего параграфов в 1 MiB - 65536, что позволяет пронумеровать их 16-разрядными числами. Сегменты памяти имеют размер 65536 байт, и всегда начинаются на границе параграфа. Адрес ячейки памяти состоит их двух частей: номера параграфа, с которого начинается сегмент и смещения внутри сегмента и обычно записывается как SSSS:OOOO, где S и O - шестнадцатеричные цифры. SSSS называется сегментной компонентой адреса, а OOOO - смещением. Адрес ячейки, выдаваемый на шину, представляет собой сегментную компоненту умноженную на 16 плюс смещение. Сегментная компонента помещается в специальный регистр, называемый сегментным, а смещение в регистр IP(регистр инструкций). Микропроцессоры 8086/8088, 80186/80188 и 80286 имели четыре сегментных регистра, т.е могли работать одновременно с четырьмя сегментами памяти, имеющими определенное назначение. В 80386 добавили еще два, не имеющих специального назначения.

  • Сегментные регистры и их назначение:
    • CS - Сегмент кода. Используется для выборки команд программы;
    • DS - Сегмент данных. Используется по умолчанию для доступа к данным;
    • ES - Дополнительный сегмент. Является получателем данных в командах обработки строк;
    • SS - Сегмент стека. Используется для размещения программного стека;
    • FS - Дополнительный сегментный регистр. Специального назначения не имеет. Появился в процессоре 80386;
    • GS - Аналогично предыдущему, но в новых процессорах с 64-битной архитектурой имеет особый статус: может использоваться для быстрого переключения контекстов.

Несмотря на то, что сегментные регистры имеют специальные назначения, архитектура допускает при обращении к данным заменить один сегмент на любой другой. Сегменты кода, стека и получателя строк всегда используют регистры CS, SS и ES и не могут быть изменены. Общий объем памяти, адресуемый в реальном режиме составляет 1048576 байт (0000:0000-F000:FFFF(00000-FFFFF)-логический адрес(физический адрес) в шестнадцатеричной системе счисления). Сегментный подход позволяет разделить всю память на 16 сегментов, начинающихся с адресов, кратных 64 Кбайт. Эти 16 сегментов называют страницами памяти. Обычно деление на страницы используется для совместного функционирования устройств, интерфейсы которых отображены на адресное пространство памяти; тогда каждое такое устройство использует одну страницу памяти, и адрес ячейки в адресном пространстве устройства будет совпадать со смещением в сегменте памяти компьютера. Так в компьютерах IBM PC страницы c 11 по 15 используются как «видеопамять»(адресное пространство видеоадаптера), а шестнадцатая страница(размещающаяся в адресах FFFF:0000 - FFFF:FFFF) получила название «области верхней памяти» (High Memory Area), которую впоследствии MS-DOS использовала для размещения своего ядра и буферов ввода-вывода, оставив больше «обычной» памяти прикладным программам. Таким образом реально доступная пользователю память составляет 640 Кбайт(первые 10 страниц).

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

Защищённый режим (protected mode)

Более совершенный режим, первые появившийся в процессоре 80286 и в дальнейшем многократно улучшавшийся. Имеет большое количество подрежимов, по которым можно проследить эволюцию семейства ЦП. В этом режиме поддерживается защита памяти, контексты задач и средства для организации виртуальной памяти. Аналогично реальному режиму, тут также используется сегментированная модель памяти, однако уже организованная по другому принципу: деление на параграфы отсутствует, а расположение сегментов описывается специальными структурами (таблицами дескрипторов), расположенными в оперативной памяти. Помимо базового адреса сегмента дескрипторы содержат размер сегмента (точнее, максимально доступное смещение) и различные атрибуты сегментов, использующиеся для защиты памяти и определения прав доступа к сегменту для различных программных модулей. Существует два типа дескрипторных таблиц: глобальная и локальная. Глобальная таблица описывает сегменты операционной системы и разделяемых структур данных. Локальная таблица может быть определена для каждой конкретной задачи (процесса). Сегменты памяти также выбираются все теми же сегментными регистрами; однако вместо номера параграфа сегментный регистр содержит специальную структуру (селектор), содержащую индекс дескриптора в таблице. Сам же дескриптор загружается из памяти во внутренний программно недоступный регистр (кеш), привязанный к каждому сегментному регистру и автоматически загружаемый в момент его модификации.

Каждый программный модуль, выполняемый в защищенном режиме определяется его сегментом кода, опысываемым регистром CS, который и определяет его привилегии по доступу к данным и другим модулям. Существует 4 уровня привилегий 0,1,2 и 3, называемых кольцами защиты. Кольцо 0 наиболее привилегированное. Оно предназначено для модулей ядра операционной системы. Кольцо 3 - наименее привилегированное, и предназначено для пользовательских программ. Кольца 1 и 2 используются лишь некоторыми операционными системами. Сегменты данных также имеют атрибуты прав доступа, дающие доступ только коду, имеющему такие же или более высокие привилегии. Система колец позволяет гибко распределять доступ к коду и данным.

Процессор 80386, появившийся в 1985 году, в отличие от своих предшественников стал 32-битным. В нем появилась возможность адресовать до 4GiB памяти, что позволило создавать сегменты памяти размером во все адресное пространство. Поэтому новые операционные системы использовали вырожденную модель организации памяти, когда все сегменты начинаются с нулевого адреса. Такая модель получила название плоской (flat memory model), и адрес задается одним целым 32-разрядным числом (хотя по сути он является смещением внутри вырожденного сегмента), а сами сегменты используются исключительно для организации защиты по кольцам привилегий.

Режим виртуального 8086 (virtual 8086 mode, V86)

Является подрежимом защищенного, но использует адресную модель, аналогичную реальному режиму. Применяется для запуска старых программ 8086 в среде современных операционных систем. В отличие от реального режима, где все программы имеют доступ ко всей памяти (кольцо 0), в режиме V86 программа выполняется в кольце 3 (наименее привилегированном), а особые ситуации и прерывания обрабатываются обычными процедурами защищенного режима.

Смешанные режимы

Сегментное MMU современных процессоров, несмотря на кардинальные различия двух его основных режимов, в обоих работает схожим образом. Это позволяет организовывать нестандартные режимы не описанные в официальной документации, но иногда очень полезные при написании программ. Поскольку известно, что внутренние кэши дескрипторов используются во всех режимах, и именно они используются для адресации памяти, при понимании логики их работы возможна загрузка в них нестандартных значений для текущего режима. В частности, можно создать дескрипторную таблицу в реальном режиме, установить флаг PE, загрузить сегментные регистры уже в защищенном режиме, а потом тут же сбросить флаг PE. До следующей перезагрузки сегментного регистра его кеш дескриптора будет содержать значение, соответствующее защищенному режиму, и если он был загружен должным образом, появится возможность адресации до 4GiB памяти. Подобные нестандартные режимы получили общее название Unreal mode и активно используются BIOS "ами персональных компьютеров. Следует отметить, что в процессоре 80286 также была возможность загрузки нестандартных значений дескрипторного кеша при помощи недокументированной команды LOADALL; что было особенно актуально, поскольку процессор 80286 не позволял сбрасывать флаг PE (из защищенного режима выходили с помощью сброса процессора, что сказывалось на производительности).

Страничная организация памяти

В процессорах начиная с 80386 появилось мощное MMU , позволяющее организовать отображение страниц памяти , что было еще одним поводом перехода на плоскую модель с приходом 32-разрядных вычислений. Используя трансляцию страниц операционная система может создать собственное линейное адресное пространство для каждого процесса; также каждая страница имеет атрибуты прав доступа. Только в отличие от сегментов, таких уровней существует только 2: пользователь и супервизор. Но для большинства современных операционных систем этого вполне достаточно. Следует отметить, что страничное MMU доступно только в защищенном режиме.

Расширения

PAE

В более поздних 32-разрядных процессорах (начиная с Pentium Pro) появилось PAE (Physical Address Extension) - расширение адресов физической памяти до 36 бит (возможность адресации 64 Гбайт ОЗУ). Это изменение не затронуло разрядности задач - они остались 32-битными.

MMX

Дополнительный «мультимедийный» (англ. Multi-Media eXtensions ) набор инструкций, выполняющих по несколько характерных для процессов кодирования/декодирования потоковых аудио/видеоданных действий за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Обеспечивает только целочисленные вычисления.

SSE

3DNow!

Набор инструкций для потоковой обработки вещественных чисел одинарной точности. Поддерживается процессорами AMD начиная с K6-2. Процессорами Intel не поддерживается.

Инструкции 3DNow! используют регистры MMX в качестве операндов (в один регистр помещается два числа одинарной точности), поэтому, в отличие от SSE, при переключении задач не требуется отдельно сохранять контекст 3DNow!.

64-битный режим

К началу 2000-х годов стало очевидно, что 32-битное адресное пространство архитектуры x86 ограничивает производительность приложений, работающих с большими объёмами данных. 32-разрядное адресное пространство позволяет процессору осуществлять непосредственную адресацию лишь 4 Гб данных, этого может оказаться недостаточным для некоторых приложений, связанных, например, с обработкой видео или обслуживанием баз данных.

Для решения этой проблемы Intel разработала новую архитектуру IA-64 - основу семейства процессоров Itanium . Для обеспечения обратной совместимости со старыми приложениями, использующими 32-разрядный код, в IA-64 был предусмотрен режим эмуляции. Однако на практике данный режим работы оказался чрезвычайно медленным. Компания AMD предложила альтернативное решение проблемы увеличения разрядности процессора. Вместо того, чтобы изобретать совершенно новую систему команд, было предложено ввести 64-разрядное расширение к уже существующей 32-разрядной архитектуре x86. Первоначально новая архитектура называлась x86-64, позже она была переименована в AMD64 . Первоначально новый набор инструкций поддерживался процессорами семейств Opteron , Athlon 64 и Turion 64 компании AMD. Успех процессоров, использующих технологию AMD64, наряду с вялым интересом к архитектуре IA-64, побудили Intel лицензировать набор инструкций AMD64. При этом был добавлен ряд специфических инструкций, не присутствовавших в изначальном наборе AMD64. Новая версия архитектуры получила название EM64T .

В литературе и названиях версий своих продуктов компании Microsoft и Sun используют объединённое именование AMD64/EM64T, когда речь заходит о 64-разрядных версиях их операционных систем Windows и Solaris соответственно. В то же время, поставщики программ для операционных систем GNU/Linux , BSD используют метки «x86-64» или «amd64», Mac OS X использует метку «x86_64», если необходимо подчеркнуть, что данное ПО использует 64-разрядные инструкции.

Виртуализация

Процессоры

Процессоры Intel

16-разрядный процессор i8086, был создан в июне 1978 года. Сначала работал на частотах 4,77 МГц, затем на 8 и 10 МГц. Изготавливался по технологии 3 мкм и имел 29 000 транзисторов.

Чуть позже, в 1979 году, был разработан i8088, который работал на тех же частотах, что и i8086, но использовал 8-разрядную шину данных (внутренняя шина процессора осталась 16-разрядной) для обеспечения большей совместимости с имевшейся в то время в ходу периферией. Благодаря более низкой цене, широко использовался в ранних системах IBM PC вместо 8086.

/80188

Кроме того, в ядро Pentium II был добавлен блок MMX.

Celeron

Celeron - упрощённая модификация процессоров Pentium II / III / IV / Core / Core 2 для построения недорогих компьютеров. Первый Celeron (ядро Covington, частоты 266/300 МГц) представлял собой Pentium II, лишенный кеша второго уровня и пластикового картриджа. Печатная плата также была упрощена. Такая упаковка получила название SEPP (Sinlge Edge Processor Package). В результате эти процессоры демонстрировали удручающе низкую производительность, хотя стоили очень недорого и легко прибавляли до 50 % частоты при разгоне. Все последующие варианты этого процессора имели интегрированный полночастотный кеш второго уровня. Основные отличия процессоров Celeron в объёме этого кэша и частоте шины, а также часто в увеличенной латентности доступа к кэш-памяти по отношению к оригинальному процессору.

Любопытный факт: вторая модификация Celeron (ядро Mendochino, частоты 300..533 МГц) на многих задачах демонстрировала более высокую производительность, чем равночастотный Pentium II. Это объяснялось тем, что маленький (128 Кбайт) кеш Mendochino располагался на одном кристалле с ядром и работал на частоте ядра, в то время как большой (512 Кбайт) кеш Pentium II находился достаточно далеко от ядра и работал на половинной частоте. Больше таких промашек фирма Intel не допускала, и все последующие Celeron гарантированно медленнее полноценных процессоров того же поколения.

Pentium III (i686)

Pentium III, изготовленный изначально по технологическому процессу 0,18 мкм, отличается от P2 главным образом добавлением инструкций SSE . Поздние процессоры этой серии изготавливались по технологическому процессу 0,13 мкм, получили интегрированную в кристалл ядра полночастотную кэш-память (сначала 256 Кбайт, затем - 512 Кбайт) и послужили прообразом процессоров архитектуры Pentium M . Выпускались в конструктивах как SECC/SECC2 (Slot 1), так и FCPGA-370 (PGA-370).

Pentium 4

Принципиально новый процессор с гиперконвейеризацией (hyperpipelining) - с конвейером, состоящим из 20 ступеней. Согласно заявлениям Intel, процессоры, основанные на данной технологии, позволяют добиться увеличения частоты примерно на 40 процентов относительно семейства P6 при одинаковом технологическом процессе (при «правильной» загрузке процессора). На практике же, первые модели работали даже медленнее, чем Pentium III. Позже дополнены поддержкой 64-битного кода.

Core / Core 2

После провала последнего поколения процессоров Pentium 4 на ядре Tejas, было решено обратиться к другой ветви продукции. В основе новых процессоров лежит переработанное ядро Pentium M . Таким образом, ядро P6, использованное ещё в процессорах Pentium Pro , продолжило свою эволюцию, нарастив частоту со 150 МГц до 3,2 ГГц и обзаведясь новой системной шиной, поддержкой многоядерности, мультимедийных инструкций.

Процессоры Core - это решение для ноутбуков, одно- и двухъядерное, исполняющее 32-битный код.

Процессоры Core 2 выпускаются как в настольном, так и мобильном исполнении, включают ряд микроархитектурных улучшений и способны исполнять 64-битный код. Количество ядер варьируется от одного до четырёх.

Core i3/Core i5/Core i7 /Core i9

Дальнейшее развитие идей, заложенных в процессорах Core 2. Сохранив основную конструкцию процессорных ядер, появившийся первым Core i7 получил модульную структуру, позволяющую легко варьировать их количество, встроенный контроллер памяти (трёхканальной DDR3 в высшем сегменте и двухканальной DDR3 в массовом) и новую шину, соединяющую процессор с чипсетом. Микроархитектурные улучшения позволяют Core i7 показывать повышенную производительность в сравнении с Core 2 на равных частотах. Большое внимание было уделено вопросу энергоэффективности нового процессора.

Позже появились более дешевые Core i5/i7 с двухканальным контроллером памяти и четырьмя ядрами, затем - Core i3/i5 с двумя ядрами и встроенным видеоядром. Ожидается и анонс более мощных процессоров с трехканальным контроллером памяти и шестью ядрами - Core i9.

Atom

Недорогие сверхэкономичные одно- и двухядерные процессоры, предназначенные для использования в так называемых сетевых компьютерах - нетбуках и неттопах (компьютерах, в которых вычислительная мощность пожертвована в пользу экономичности, бесшумности и малогабаритности). В основе - модифицированное ядро от первых Pentium, которое адаптировали под новый техпроцесс, добавили возможность исполнения 64-битного кода и мультимедийных инструкций, а также кэш-память второго уровня и поддержку многопоточного исполнения (SMT, аналог Hyper Threading). Для упрощения конструкции было решено отказаться от внеочередного исполнения команд, что не лучшим образом сказалось на производительности.

Xeon

Семейство процессоров, ориентированных на серверы и многопоточные вычисления .

Первый представитель этого семейства базировался на архитектуре Pentium II, представлял собой картдридж с печатной платой, на которой монтировались ядро, кэш-память второго уровня и тег кэша. Монтировался в гнездо Slot 2.

Современные Xeon-ы базируются на архитектуре Core2/Core i7.

Процессоры AMD

Am8086 / Am8088 / Am186 / Am286 / Am386 / Am486

Клоны соответствующих процессоров от Intel. Обычно выпускались с максимальной частотой на ступеньку выше, чем у оригинала. Так, Am386DX выпускался с максимальной частотой 40 МГц, тогда как i386DX - 33 МГц. Вплоть до 486DX2-66 других различий между процессорами не было. Программно отличить эти процессоры было невозможно.

5x86

Клон i486. В то время, как Intel для i486 остановился на частоте 100 МГц, AMD выпускала процессоры с частотами до 133 МГц. Также они отличались увеличенным объёмом кэша первого уровня (16 Кбайт) и множителем (×4).

Аналоги Pentium. Первые процессоры, разработанные фирмой AMD самостоятельно. Несмотря на превосходство в целочисленных операциях над аналогами от Intel (в ядре данного процессора применялся ряд технологий шестого поколения), производительность блока вычислений с плавающей запятой значительно уступала по производительности процессорам Pentium с аналогичной тактовой частотой. Кроме того, наблюдалась плохая совместимость с ПО некоторых производителей. Недостатки K5 были чрезвычайно преувеличены в различных сетевых и других неформальных обсуждениях и на долгое время способствовали (в целом - несправедливому) ухудшению репутации продукции AMD у пользователей.

Выпущен в апреле 1997 года. Принципиально новый процессор AMD, основанный на ядре, приобретённом у NexGen. Данный процессор имел конструктив пятого поколения, однако относился к шестому поколению и позиционировался как конкурент Pentium II . Включал в себя блок MMX и несколько переработанный блок FPU . Однако данные блоки всё равно работали на 15-20 % медленнее, чем у аналогичных по частоте процессоров Intel. Процессор имел 64 Кбайт кэша первого уровня.

В целом сравнимая с Pentum II производительность, совместимость со старыми материнскими платами и более ранний старт (AMD представила К6 на месяц раньше, чем Intel представила P-II) сделали его достаточно популярным, однако проблемы с производством у AMD значительно испортили репутацию данного процессора.

K6-2

Дальнейшее развитие ядра К6. В этих процессорах была добавлена поддержка специализированного набора команд 3DNow! . Реальная производительность, однако, оказалась существенно ниже, чем у аналогичных по частоте Pentium II (это было вызвано тем, что прирост производительности с ростом частоты у P-II был выше благодаря внутреннему кэшу) и конкурировать К6-2 смогли лишь с Celeron. Процессор имел 64 Кбайт кэша первого уровня.

K6-III

Более успешная в технологическом плане, чем K6-2, попытка создания аналога Pentium III . Однако маркетингового успеха не имела. Отличается наличием 64 Кбайт кэша первого уровня и 256 Кбайт кэша второго уровня в ядре, что позволяло ему на равной тактовой тактовой частоте обгонять по производительности Intel Celeron и не очень существенно уступать ранним Pentium III.

Аналог K6-III с технологией энергосбережения PowerNow! . Изначально предназначался для ноутбуков , но устанавливался и в настольные системы.

Аналог К6-III+ с урезанным до 128 Кбайт кэшем второго уровня.

Athlon

Очень успешный процессор, благодаря которому фирма AMD сумела восстановить почти утраченные позиции на рынке микропроцессоров. Кэш первого уровня - 128 Кбайт. Первоначально процессор выпускался в картридже с размещением кэша второго уровня (512 Кбайт) на плате и устанавливался в разъём Slot A , который механически, но не электрически совместим с интеловским Slot 1 . Затем устанавливался в разъём Socket A и имел 256 Кбайт кэша второго уровня в ядре. По быстродействию - примерный аналог Pentium III.

Duron

Конкурент Celeron поколений Pentium III / Pentium 4. Отличается от Athlon объёмом кэша второго уровня (всего 64 Кбайт), зато интегрированным в кристалл и работавшем на частоте ядра. Производительность заметно выше, чем у аналогичных Celeron, и при выполнении многих задач соответствует Pentium III.

Athlon XP

Продолжение развития архитектуры Athlon. По быстродействию - аналог Pentium 4. По сравнению с обычным Athlon, добавлена поддержка инструкций SSE.

Sempron

Более дешёвый (за счёт уменьшенного кэша второго уровня) вариант процессоров Athlon XP и Athlon 64.

Первые модели Sempron являлись перемаркированными чипами Athlon XP на ядре Thoroughbred и Thorton, имевшими 256 Кбайт кэша второго уровня, и работавшими на 166 (333 DDR) шине. Позднее под маркой Sempron выпускались (и выпускаются) урезанные версии Athlon 64/Athlon II, позиционируемые как конкуренты Intel Celeron. Все Sempron имеют урезанный кеш 2-го уровня; младие модели Socket 754 имели заблокированные Cool&quiet и x86-64 ; Socket 939 модели имели заблокированный двухканальный режим работы памяти.

Opteron

Первый процессор, поддерживающий архитектуру x86-64 .

Athlon 64

Первый несерверный процессор, поддерживающий архитектуру x86-64.

Athlon 64 X2

Продолжение архитектуры Athlon 64, имеет 2 вычислительных ядра.

Athlon FX

Имел репутацию «самого быстрого процессора для игрушек». Является, по сути, серверным процессором Opteron 1xx на десктопных сокетах без поддержки registered-memory. Выпускается малыми партиями. Стоит значительно дороже своих «массовых» собратьев.

Phenom

Дальнейшее развитие архитектуры Athlon 64, выпускается в вариантах с двумя (Athlon 64 X2 Kuma), тремя (Phenom X3 Toliman) и четырьмя (Phenom X4 Agena) ядрами.

Phenom II

Первый выпуск - на базе ядра Joshua, доставшегося VIA вместе с командой разработчиков Cyrix .

Второй выпуск - с ядром Samuel, разработанным на базе так и не вышедшего IDT WinChip -3. Отличался отсутствием кэш-памяти второго уровня и, соответственно, крайне низким уровнем производительности.

Третий выпуск - с ядром Samuel-2, улучшенной версией предыдущего ядра, оснащённой кэш-памятью второго уровня. Процессор выпускался по более тонкой технологии и имел сниженное энергопотребление. После выпуска этого ядра бренд «VIA Cyrix III» окончательно уступил место «VIA С3».

Четвёртый выпуск - с ядром Ezra. Был также вариант Ezra-T, адаптированный для работы с шиной, предназначенной для процессоров Intel с ядром Tualatin . Дальнейшее развитие в направлении энергосбережения.

VIA C7

Дальнейшее развитие VIA C3. Ядро Esther (C5J), корпусировка - nanoBGA2 (21×21 мм), впаивается прямо на плату . Добавлены аппаратная поддержка Secure Hash SHA-1 и SHA-256 и шифрования RSA , поддержка NX-bit , поддерживаются MMX , SSE , SSE2 и SSE3 . Дальнейшее снижение энергопотребления при рабочих частотах до 2 ГГц. Собственная системная шина (VIA V4 800 МГц) для связи с чипсетом. Выпускается также в мобильном (VIA C7-M) и десктопном (VIA C7-D) исполнении.

VIA Eden ESP

Интегрированное решение, включающее в себя процессор VIA C3 c ядром Nehemiah C5P и северный мост чипсета со встроенной UMA-графикой. Отличается крайне низким энергопотреблением (до 7 Вт при частоте 1 ГГц). Выпускается с частотами от 300 МГц (VIA Eden ESP 3000) до 1 ГГц (VIA Eden ESP 10000). Совместимые южные мосты - VT8235M, VT8237R+ (с поддержкой SATA), VT8251 (2×1 PCI-E) и VIA 686B.

VIA CoreFusion

Дальнейшее развитие идей VIA Eden ESP. Выпускается в двух вариантах - VIA Mark и VIA Luke, отличающихся интегрированным видеоядром, поддерживаемым типом памяти и рабочими частотами. Для VIA Mark - это S3 Graphics ProSavage4 / SDR PC133 / 533/800 МГц, а для VIA Luke - VIA UniChrome Pro / DDR PC3200 / 533/800/1000 МГц. Совместимые южные мосты: VT8235M, VT8237R+ (с поддержкой SATA), VT8251 (2×1 PCI-E) и VIA 686B.

VIA Nano

Первый x86-64 процессор VIA на ядре Isaiah. Контактно-совместим с VIA C7. Выпускается с частотами от 1 ГГц до 1,8 ГГц. Энергопотребление модели 1,6 ГГц - до 17 Вт при полной загрузке. Среди нововведений - внеочередное исполнение инструкций. Позиционируется как конкурент Intel Atom .

Процессоры NEC

Выпускала серию процессоров, часть из которых (ядро V20/V30) была программно совместима как с , так и с . Переключение между режимами работы осуществлялось при помощи трёх дополнительных инструкций. Аппаратно они выглядели как сильно ускоренная версия или .

Процессоры на основе ядра V33 не имели режима эмуляции 8080, зато поддерживали, при помощи двух дополнительных инструкций, расширенный режим адресации.

Процессоры NexGen

Nx586

В марте 1994 был представлен процессор NexGen Nx586. Он позиционировался как конкурент Pentium, однако изначально не имел встроенного сопроцессора. Использование собственной шины повлекло за собой необходимость применения собственных чипсетов, NxVL (VESA Local Bus) и NxPCI 820C500 (PCI), и ни с чем несовместимого процессорного гнезда. Чипсеты разрабатывались совместно с VLSI и Fujitsu. Nx586 был суперскалярным процессором и мог исполнять по две инструкции за такт. Кэш L1 был раздельным (16 Кбайт под инструкции + 16 Кбайт под данные). Контроллер кэша L2 был интегрирован в процессор, сам же кэш находился на материнской плате. Так же, как и Pentium Pro, Nx586 внутри был RISC-процессором. Отсутствие поддержки инструкций CPUID в ранних модификациях этого процессора приводило к тому, что программно он определялся как быстрый 386 процессор. С этим же было связано то, что Windows 95 отказывался устанавливаться на компьютеры с такими процессорами. Для решения этой проблемы применялась специальная утилита (IDON.COM), представлявшая Nx586 для Windows как 586 class CPU. Nx586 выпускался на мощностях IBM.

Был также разработан сопроцессор Nx587 FPU, который монтировался на заводе поверх кристалла процессора. Такие «сборки» получили маркировку Nx586Pf. При обозначении производительности Nx586 использовался P-rating - c PR75 (70 МГц) до PR120 (111 МГц).

Следующее поколение процессоров NexGen, которое так и не было выпущено, однако послужило основой для AMD K6.

Для многих пользователей операционной системы Windows не секрет, что существует две ее версии по типу разрядности. Это 32 битная и 64. Знать разрядность своей операционной системы нужно каждому, ведь при поиске и скачивании драйверов, программ и игр она учитывается.

Но с обозначениями разрядности системы, а также драйверов и программ существует некоторая путаница. Есть три обозначения двух разрядностей — x32, x64 и x86. По этой причине часто возникает вопрос 32 разрядная версия это x64 или x86?

Ответ на данный вопрос вы найдете в этой статье.

Второе обозначение 32 разрядной версии ПО

Чтобы впредь исключить путаницу обозначений разрядности программного обеспечения, к которому относится операционная система, драйвера, программы и игры, запомните, что существует две основные версии разрядности ПО — это 32 бита и 64 бита. 64 битная версия может обозначаться только как x64, а вот 32 битная может обозначаться как x32, так и x86.

Вот пример обозначения 64 битной версии драйвера для ноутбука на его официальном сайте:

А вот возможные варианты обозначения 32 битной версии:

Обозначение разрядности на сайте с драйверами

Обозначение разрядности в описании программы

Из всего вышеописанного можно сделать вывод, что 32 разрядная версия ПО это x86.

x64 обозначается 64 битная версия какого — либо программного обеспечения. Учтите это при подборе версии драйверов и любых других программ.

Для того, чтобы просмотреть какая у вас разрядность операционной системы, достаточно нажать правой кнопкой мыши по значку «Компьютер» на рабочем столе и выбрать «Свойства».

Сегодня уже никто не удивится тому факту, что любимая семейная фотография, хранимая и оберегаемая от коварных неожиданностей в виде, например, воды от незадачливых соседей с верхнего этажа, забывших закрыть кран, может представлять собой какой-то непонятный набор цифр и, вместе с тем, оставаться семейной фотографией. Домашний компьютер стал столь же банальной вещью, что и «ящик» с голубым экраном. Не удивлюсь, если скоро домашний ПК будет приравниваться к бытовой электротехнике. Кстати, «двигатель прогресса», всем знакомая Intel, это нам и пророчит, продвигая идею цифрового дома.
Итак, персональный компьютер занял свою нишу во всех сферах жизни человека. Его появление и становление как неотъемлемого элемента уклада жизни уже стало историей. Когда мы говорим о ПК, то имеем в виду IBM PC-совместимые системы, и вполне справедливо. Мало кто из читателей вообще своими глазами видел не IBM PC-совместимую систему, тем более пользовался такой.

Все компьютеры IBM PC и совместимые с ними основываются на процессорах с архитектурой х86. Честно говоря, иногда мне кажется, что это не только процессорная архитектура, а архитектура всего ПК, вроде идеологии строения системы в целом. Сложно сказать, кто кого тянул за собой, то ли разработчики периферийного оборудования и конечных продуктов подстраивались под архитектуру х86, или, наоборот, они прямо или косвенно формировали пути развития х86 процессоров. История х86 — не ровная асфальтированная дорожка, а совокупность различных по «степени тяжести» и гениальности шагов разработчиков, сильно переплетающихся с экономическими факторами. Знание истории процессоров х86 вовсе не обязательно. Сравнивать процессор сегодняшней реальности с его давними предками попросту бессмысленно. Но чтобы отследить общие тенденции развития и попытаться сделать прогноз, экскурс в историческое прошлое архитектуры х86 необходим. Конечно, серьезный исторический труд может занять не один том, и претендовать на объективный и широкий охват темы бессмысленно. Поэтому вдаваться в перипетии «лайф-тайма» каждого поколения процессоров х86 не будем, а ограничимся важнейшими событиями во всей эпопее х86.

1968 год
Четверо сотрудников компании Fairchild Semiconductor: Боб Нойс, менеджер и изобретатель интегральной микросхемы в 1959 году, Гордон Мур, возглавлявший научные исследования и конструкторские разработки, Энди Гроув, специалист в области химических технологий, и Артур Рок, осуществлявший финансовую поддержку, основали фирму Intel. Это название образовано от Integral Electronic.


1969 год
Бывшим директором маркетингового отдела Fairchild Semiconductor Джерри Сандерсом и несколькими его единомышленниками была основана фирма AMD (Advanced Micro Devices), занявшаяся производством микроэлектронных устройств.

1971 год
При выполнении одного из заказов на микросхемы оперативной памяти сотрудник Intel Тед Хофф предложил создать универсальную «умную» ИМС. Разработку возглавил Федерико Феджин. В итоге родился первый микропроцессор Intel 4004.

1978 год
Весь период до этого — предыстория, хотя и неотрывная от случившихся далее событий. В этом году началась эра х86 — фирмой Intel был создан микропроцессор i8086, который имел частоты 4.77,8 и 10MHz. Смешные частоты? Да, это частоты современных калькуляторов, но с них все начиналось. Чип изготавливался по 3-мкм технологии и имел внутренний 16-битный дизайн и 16-битную шину. То есть появились 16-битная поддержка и, следовательно, 16-разрядные операционные системы и программы.
Чуть позже, в том же году, был разработан i8088, основным отличием которого являлась 8-разрядная внешняя шина данных, обеспечивавшая совместимость с 8-разрядной обвязкой и памятью, использовавшейся ранее. Также доводом в его пользу была совместимость с i8080/8085 и Z-80, относительно низкая цена. Как бы там ни было, но в качестве ЦП для своего первого ПК IBM выбрала i8088. С тех пор процессор Intel станет неотъемлемой частью персонального компьютера, а сам компьютер долго будут именовать IBM PC.

1982 год
Объявлен i80286. «Двести восемьдесят шестой» стал первым процессором х86, проникшим на советское и постсоветское пространство большим количеством. Тактовые частоты 6, 8, 10 и 12 МГц, производился по 1.5-мкм техпроцессу и содержал около 130000 транзисторов. Данный чип имел полную 16-битную поддержку. Впервые с появлением i80286 появилось такое понятие, как «защищенный режим», но тогда еще разработчики программного обеспечения не использовали его возможности в полной мере. Процессор мог адресовать более 1 Мб памяти, переключившись в защищенный режим, но назад вернуться можно было после полного перезапуска, а сегментированная организация доступа к памяти требовала значительных дополнительных усилий при написании программного кода. Из этого вытек тот факт, что i80286 использовался скорее как быстрый i8086.

Производительность чипа по сравнению с 8086 (а особенно по сравнению с i8088) увеличилась в несколько раз и достигала 2.6 миллионов операций в секунду. В те годы производители стали активно использовать открытую архитектуру IBM PC. Тогда же начался период клонирования процессоров архитектуры х86 от Intel сторонними производителями. То есть чип выпускался другими фирмами в виде точной копии. Intel 80286 стал основой новейшего по тем меркам ПК IBM PC/AT и его многочисленных клонов. Основными преимуществами нового процессора оказались повышенная производительность и дополнительные режимы адресации. И главное — совместимость с существующим программным обеспечением. Естественно, процессор был также лицензирован сторонними производителями…
В том же году фирма AMD заключает с Intel лицензионное соглашение и на его основе начинает производство клонов процессоров x86.

1985 год
В этом году произошло, наверное, самое значительное событие в истории процессоров с архитектурой х86 — компанией Intel был выпущен первый процессор i80386. Он стал, можно сказать, революционным: 32-разрядный многозадачный процессор с возможностью одновременного выполнения нескольких программ. В сущности, самые современные процессоры представляют собой ничто иное, как быстрые 386-е. Современное программное обеспечение использует ту же архитектуру 386, просто современные процессоры делают то же самое, только быстрее. Intel 386™ стал большим шагом вперед по сравнению с i8086 и i80286. В сущности, самые современные процессоры представляют собой ничто иное, как быстрые 386-е. Современное программное обеспечение использует ту же архитектуру 386, просто современные процессоры делают то же самое, только быстрее. Intel 386™ стал большим шагом вперед по сравнению с i8086 и i80286. Intel 386™ имел значительно улучшенную систему управления памятью по сравнению с i80286, а встроенные средства многозадачности позволили разработать операционную систему Microsoft Windows и OS/2.

В отличие от i80286 Intel 386™ мог свободно переключаться из защищенного режима в реальный и обратно и имел новый режим — виртуальный 8086. В этом режиме процессор мог выполнять несколько различных программных нитей одновременно, так как каждая из них выполнялась на изолированной «виртуальной» 86-й машине. В процессоре были введены дополнительные режимы адресации памяти с переменной длиной сегмента, что значительно упростило создание приложений. Процессор производился по 1-мкм технологическому процессу. Впервые процессор Intel был представлен несколькими моделями, которые образовали семейство 386-х. Здесь и начинается знаменитая маркетинговая игра компании Intel, позднее вылившаяся в разделение одного разработанного ядра на два торговых варианта, в некотором круге пользователей и специалистов называемое: «Pentium для богатых, Celeron для бедных». Хотя что здесь плохого — и волки сыты, и овцы целы.
Были выпущены следующие модели:

386DX с частотой 16, 20, 25 и 33 МГц имел 4 ГБ адресуемой памяти;
386SX с частотой 16, 20, 25 и 33 МГц в отличие от 386DX имел 16, а не 32-битную шину данных, и соответственно 16 Мб адресуемой памяти (подобным образом в свое время процессор i8088 был «создан» из i8086 за счет уменьшения разрядности внешней шины для обеспечения совместимости с имеющимися внешними устройствами);
386SL в октябре 1990 года — мобильная версия процессора Intel 386SX с частотой 20 и 25MHz.

1989 год
Корпорация Intel выпускает свой очередной процессор — Intel 486™ DX с частотой 25, 33 и 50 МГц. Intel 486 ™ DX стал первым процессором в семействе 486 и имел значительный (более чем в 2 раза при той же частоте) прирост производительности по сравнению с семейством 386. У него появился кэш первого уровня объемом 8 Кб, интегрированный в чип, а максимальный размер L2-кэша увеличился до 512 Kb. В i486DX был интегрирован блок вычислений с плавающей точкой (FPU — Floating Point Unit), который раньше выполнялся в виде внешнего математического сопроцессора, устанавливаемого на системную плату. Кроме того, это первый процессор, ядро которого содержало пятиступенчатый конвейер. Таким образом, команда, прошедшая первую ступень конвейера, продолжая обрабатываться на второй, высвобождала первую для следующей инструкции. По своей сути, процессор Intel 486™DX представлял собой быстрый Intel 386DX™, объединенный с математическим сопроцессором и 8 кБ кэш-памяти на одном кристалле. Такая интеграция позволила увеличить скорость коммуникаций между блоками до очень высоких значений.
Фирмой Intel была развернута рекламная кампания с лозунгом «Intel: The Computer Inside». Пройдет время, и она превратится в знаменитую рекламную кампанию «Intel Inside».

1991 год
Был создан собственный процессор фирмы AMD — Am386™. Этот был частично построен под действием лицензии, частично по собственной разработке и работал на максимальной частоте 40 МГц, что превышало аналогичный показатель процессора Intel.
Немного ранее произошли первые судебные разбирательства между Intel и AMD по поводу намерения AMD продавать свой клон Intel 386™. Крепко укрепившая свои позиции Intel перестала нуждаться в раздаче лицензий сторонним производителям и делиться пирогом собственного приготовления ни с кем не собиралась. В результате AMD впервые вступила на рынок х86 процессоров как конкурент. За ней последовали и другие компании. Так началось продолжающееся до сих пор великое противостояние двух гигантов (остальные конкуренты сошли с дистанции), которое дало миру много хорошего. Негласным лозунгом конкурентов Intel стала фраза: «то же, что у Intel, но за меньшую цену».
В то же время Intel выпускает i486SX, в котором для удешевления продукта отсутствует блок FPU (интегрированный сопроцессор), что, конечно же, негативно сказалось на производительности. Других отличий от i486DX не было.

1992 год
С выходом процессора Intel 486DX2 впервые был использован коэффициент умножения частоты шины. До этого момента внутренняя частота ядра была равна частоте внешней шины данных (FSB), но появилась проблема ее наращивания, так как локальные шины периферии (в то время VESA VL-bus), да и сами периферийные устройства проявляли нестабильность работы при частоте, превышающей 33 МГц. Теперь при частоте шины FSB 33 МГц тактовая частота ядра составляла 66 МГц за счет умножения на 2. Такой прием надолго вошел в историю и используется поныне, только множитель в современных CPU может превышать 20. Intel 486™ DX2 надолго стал популярным процессором и продавался в огромных количествах, впрочем, как и его клоны от конкурентов (AMD, Cyrix и другие), которые теперь уже имели некоторые отличия от «интеловского оригинала».

1993 год
В свет вышел первый суперскалярный процессор х86, то есть способный выполнять более одной команды за такт — Pentium (кодовое название P5). Это достигалось наличием двух независимых параллельно работающих конвейера. Первые процессоры имели частоту 60 и 66 МГц и получили 64-разрядную шину данных. Впервые кэш-память первого уровня была разделена на две части: отдельно для инструкций и данных. Но одним из самых значительных нововведений был полностью обновленный блок вычислений с плавающей точкой (FPU). Фактически до этого на платформе x86 еще не было настолько мощного FPU, и лишь через многие годы после выхода Intel Pentium конкуренты смогли достичь его уровня производительности. Также впервые в процессор был включен блок предсказания ветвлений, с тех пор активно развивающийся инженерами.

Суть заключается в следующем: в любой программе присутствует множество условных переходов, когда в зависимости от условия выполнение программы должно пойти по тому или иному пути. В конвейер можно поместить только одну из нескольких ветвей перехода, и если он оказывается заполненным кодом не той ветви, то его приходится очищать и заполнять заново несколько тактов (в зависимости от количества ступеней конвейера). Для решения этой проблемы и используются механизмы предсказания ветвлений. Процессор содержал 3,1 млн. транзисторов и изготавливался по 0.8-мкм процессу. Все эти изменения позволили поднять производительность нового процессора на недосягаемую высоту. В действительности же оптимизация кода «под процессор» первое время была редкой и требовала применения специальных компиляторов. И еще долго новейшему процессору приходилось выполнять программы, предназначенные для процессоров семейств 486 и 386.
В том же году появилось второе поколение Pentium на ядре P54, в котором были устранены все недостатки Р5. При изготовлении использовались новые технологические процессы 0.6, а позднее и 0.35-мкм. До 1996 года новым процессором были охвачены тактовые частоты от 75 до 200 МГц.
Первый Pentium сыграл важную роль в переходе на новые уровни производительности персонального компьютера, дал толчок и определил ориентиры развития на будущее. Но при большом рывке в производительности он не привнес никаких кардинальных изменений в архитектуру х86.

1994 год
Появившиеся Intel 486™DX4, AMD Am486DX4 и Cyrix 4х86 продолжили линейку 486-х и использование умножения частоты шины данных. Процессоры имели утроение частоты. Процессоры DX4 от Intel работали на 75 и 100 МГц, а Am486DX4 от AMD достиг 120 МГц. В процессорах стала широко применяться система управления энергопотребления. Других принципиальных отличий от 486DX2 не обнаружилось.

1995 год
Анонсирован Pentium Pro (ядро P6). Новая процессорная шина, три независимых конвейера, оптимизация под 32-битовый код, от 256 Kb до 1 Mb L2-кэша, интегрированного в процессор, причем работающего на частоте ядра, усовершенствованный механизм предсказания ветвлений — по количеству нововведений новый процессор чуть ли не бил рекорды, ранее установленные Intel Pentium.

Процессор позиционировался на использование в серверах и имел очень высокую цену. Самое примечательное, что вычислительное ядро Pentium Pro фактически не было ядром архитектуры х86. Машинные коды x86, поступающие в CPU, внутри декодировались в RISC-подобный микрокод, и уже именно его исполняло ядро процессора. Набор CISC-команд, как набор команд процессора х86, подразумевал переменную длину команд, что определяло сложность нахождения каждой отдельной команды в потоке и, следовательно, создавало трудности в разработке программ. CISC-команды являются сложными и комплексными. RISC-команды упрощенные, короткие, требующие значительно меньшее время на выполнение команды с фиксированной длиной. Использование RISC-команд позволяет значительно увеличить распараллеливание процессорных вычислений, то есть использовать больше конвейеров и, следовательно, уменьшать время исполнения команд. Ядро P6 легло в основу трех следующих процессоров Intel — Pentium II, Celeron, Pentium III.
В этом году состоялось также знаковое событие — компания AMD купила фирму NexGen, имеющую к тому времени передовые архитектурные разработки. Слияние двух инженерных команд позже принесет миру процессоры х86 с отличной от Intel микроархитектурой и даст толчок новому витку жестокой конкуренции.
На Микропроцессорном Форуме впервые был представлен новый процессор MediaGX от Cyrix, и его отличительной особенностью являются интегрированные контроллер памяти, графический ускоритель, интерфейс шины PCI и производительность, соизмеримая с производительностью Pentium. Это была первая попытка такой плотной интеграции устройств.

1996 год
Появился новый процессор AMD К5 с суперскалярным RISC-ядром. Однако RISC-ядро с его набором команд (ROP-команд) скрыты от программного обеспечения и конечного пользователя, а команды х86 преобразуются в RISC-команды. Инженеры AMD использовали уникальное решение — команды х86 частично преобразуются еще во время помещения в кэш-память процессора. В идеале процессор K5 может выполнять до четырех команд х86 за один такт, но на практике в среднем за такт обрабатываются только 2 инструкции.

Кроме того, традиционные для RISC-процессоров изменения порядка вычислений, переименование регистров и другие «приемы» позволяют увеличить производительность. Процессор К5 явился детищем объединенной команды инженеров AMD и NexGen. Максимальная тактовая частота так и не превысила 116 МГц, но производительность К5 была выше, чем у процессоров Pentium с такой же тактовой частотой. Поэтому в маркетинговых целях впервые в практике маркировки CPU был использован рейтинг производительности (Performance Rating), который явно противопоставлялся тактовой частоте равных по производительности Pentium. Но процессор все-таки не мог достойно потягаться с ним, так как Pentium уже тогда достиг частоты 166 МГц.
В том же году увидел свет Intel Pentium MMX. Главное нововведение процессора P55C — дополнительные команды MXX к набору команд, который почти не претерпевал изменений со времен создания процессоров третьего поколения. Технология MMX — это использование команд, ориентированных на работу с мультимедиаданными. Специальный набор команд SIMD (Single Instruction — Multiple Data — одна команда — множественные данные) повышает производительность при выполнении векторных, циклических команд и обработке больших массивов данных — при применении графических фильтров и различных спецэффектов.

По сути это 57 новых инструкций, призванных ускорить обработку видео и звука. Остальными изменениями ядра стали уже типичные увеличение объема кэш-памяти, улучшение схем работы кэш-памяти и других блоков. Производился процессор по 0.35-мкм процессу, 4.5 млн. транзисторов. Максимальная частота 233 МГц.
Начался выпуск суперскалярных процессоров Cyrix 6х86 на ядре М1, который на самом деле являлся процессором 5-го поколения, отличительной особенностью которого были «глубокие» конвейеры и использование классических х86 команд без каких-либо дополнительных наборов инструкций.
В конце года, пока в Intel велась разработка PentiumII, снова заявила о себе AMD, выпустив процессор шестого поколения К6. В основу AMD-K6 легло ядро, разработанное инженерами компании NexGen для процессора Nx686 и существенно доработанное в AMD. Как и К5, ядро К6 оперировало не х86 инструкциями, а RISC-подобным микрокодом. Процессор поддерживал команды MMX и 100-мегагерцевую системную шину и имел увеличенный до 64 Кб объем кэш-памяти первого уровня. Вскоре стало ясно, что PentiumII окажется К6 не по зубам.

с 1997 года до наших дней…
К 1997 году уже сложились направления инженерных разработок архитектуры х86 ведущих производителей. Следующий этап в развитии процессоров x86 можно охарактеризовать как противостояние архитектур, которое продолжается и поныне. На дистанцию по крупному счету вышли: захватившая 90 % рынка Intel, упорно с ней бьющаяся AMD, многократно проигрывающая в производственных мощностях, и Cyrix, которая впоследствии будет куплена компанией VIA, а затем и вовсе, не выдержав конкуренции, канет в неизвестность. Остальные производители не смогут достойно конкурировать и будут вынуждены искать другие ниши на рынке. Намечен переход от CISC к RISC-подобным микрокомандам в меньшей степени у Intel, в большей у AMD. Причем на вход и выход процессоров х86 по-прежнему поступают CISC-команды. А почему, собственно, стали вводить в х86 процессоры с родной ей CISC-архитектурой внутреннюю RISC-архитектуру, позволяющую углублять распараллеливание выполнения команд? Да просто из CISC-архитектуры х86 еще во времена четвертого поколения было выжато все, и способов повышать производительность на уровне базисных наборов команд не осталось.

Принципиально новых изменений и прорывов в развитии архитектуры с тех пор не было, хотя современные процессоры быстрее, например, «386-го» в сотни раз. Инженеры оттачивают и совершенствуют уже существующие микроархитектуры ядер, а новые представляют собой лишь переработанные старые. Все усовершенствования и попытки повысить производительность сводятся к оптимизации существующих решений, введению различных исправлений и «костылей» для хромающих FPU, системы организации конвейеров и кэшей. Избитыми, но все же действенными средствами является постоянное увеличение объема кэш-памяти и частоты шины FSB. Современные процессоры имеют до 2 Мб кэш-памяти, работающей на частоте ядра, а частоты системных шин достигают 800 МГц, и то с использованием множителя, так как реальная генерируемая частота всего 200 МГц. За последние 7 лет в процессоры х86 были введены следующие «новшества-подпорки»: кэш-память окончательно переехала на кристалл процессора и переведена на частоту ядра, введены и постоянно совершенствуются блоки предсказания ветвлений как компенсация увеличению длины (количества стадий) конвейера, механизм динамического изменения порядка исполнения инструкций, уменьшающий количество холостых тактов, механизм предвыборки данных для более рационального использования кэш-памяти. Множатся дополнительные наборы команд: SSE, SSE2, SSE3, 3DNow!, 3DNow Professional. Если MMX еще можно было с натяжкой назвать дополнительным набором инструкций х86, то все последующие наборы вряд ли, так как к командам х86 добавлять уже нечего. Смысл же появления этих наборов заключается в попытке как можно меньше использовать блок вычислений с плавающей точкой (FPU) в таком виде, в каком он есть, так как, обладая высокой производительностью, он отличается малой приспособленностью для высокоточных вычислений, капризностью внутренней архитектуры и ее непредсказуемостью, что усложняет жизнь программистам. То есть фактически ввели специализированный расчетный блок, ориентированный не на вычисления вообще, а на реальные, часто встречающиеся задачи, выполнять которые предлагается в обход классического FPU.

Как-то это больше похоже на борьбу с последствиями интеграции математического сопроцессора в CPU в далеком 1989 году. Во всяком случае, если задуматься и подсчитать, то большую часть времени процессор тратит «на себя» — на всевозможные преобразования, предсказания и многое другое, а не на выполнение программного кода.
Глядя назад, видно, что не все было гладко. Введение коэффициента умножения и полученная в итоге асинхронность, а также увеличение количества стадий конвейера — все это палки о двух концах. С одной стороны, это позволило увеличить тактовые частоты процессора почти до 4 ГГц (и это еще не предел), с другой — получили узкое место в виде шины FSB и проблему с условными переходами. Но всему свое время, и тогда, видимо, это были разумные решения, так как всегда присутствует очень злой экономический фактор.
Нельзя не отметить, что по-настоящему блистательных успехов за последние годы добились в области полупроводникового производства. Уже освоен 90-нанометровый технологический процесс изготовления процессоров х86, который позволяет достигать близких к СВЧ-диапазону тактовых частот, а количество транзисторов в кристалле достигает 170 млн (Pentium 4 EE).
Мы привыкли считать, что процессор — это главное устройство в ПК и что именно он задает тон глобальной компьютеризации. А ведь победоносное шествие архитектуры х86, длящееся более четверти века, началось не конкретно с процессора, а с конечного пользовательского устройства в целом — IBM PC. Тогда еще в компании IBM не догадывались, какое блистательное будущее ждет этот ПК и, не придав проекту никакого значения, сделали его открытым для всех. Именно открытости концепции, успеху программного обеспечения и MS DOS обязан успех IBM PC. А процессор в нем мог стоять любой архитектуры, но так уж получилось, что IBM выбрала i8088 и i8086, а потом уже все закрутилось, завертелось… Но из процессора х86 в итоге не получилось эдакого универсального вычислителя на все случаи жизни или «умного» устройства, вездесущего и все способного сделать, как об этом мечтали раньше. Да и «закон» Гордона Мура (каждые 2 года количество транзисторов в кристалле процессора будет увеличиваться вдвое) стал законом только для Intel, которая поставила его на острие своей маркетинговой политики, а отказываться от данного слова ей неудобно, видимо.

Сегодня можно уже твердо сказать, что архитектура х86 зашла в тупик. Вклад ее в популяризацию компьютера как устройства огромен, и с этим никто не спорит. Однако нельзя быть актуальной вечно. Молодой и сильный некогда жеребец стал старой клячей, которую продолжают запрягать в телегу. Аппетиты пользователей ненасытны, и вскоре архитектура х86 не сможет их удовлетворить. Конечно, переход связан с титаническими усилиями в связи с тем, что многомиллионный мировой парк ПК в своем почти абсолютном большинстве использует процессоры архитектуры х86, и что самое важное, использует программное обеспечение для х86 кода. Одним днем все не перевернуть, нужны годы. Но разработки 64-битных процессоров и программ набирают обороты с завидной скоростью, Intel представила Itanium2, а AMD уже почти год выпускает свои Athlon 64, которые имеют совсем не х86 архитектуру, хотя и полностью совместимы с ней и еще могут выполнять все старые программы. Таким образом, можно сказать, что AMD Athlon 64 положил начало уходу от архитектуры х86 и тем самым открыл переходный период.
Как видите, заявления о том, что процессор — самый быстро развивающийся компонент ПК, далеко не беспочвенны. Представьте себе, какими процессорами будут оснащаться компьютеры наших детей. Подумать страшно!

В Одноклассники

Так что теперь у вас есть проблема, если вы пишете библиотеку, которая будет использоваться как кодом старой школы, написанным с wchar_t , определённым как псевдоним для unsigned short , так и кодом новой школы, написанным с wchar_t как отдельным внутренним типом. Какой тип данных вам нужно использовать для строковых параметров?

Это перевод The sad history of Unicode printf-style format specifiers in Visual C++ .

Windows реализовала Unicode раньше, чем большинство других операционных систем. В результате решения Windows для многих проблем отличаются от решений, принятых теми, кто подождал, когда пыль осядет¹. Самым ярким примером этого является использование Windows UCS-2 в качестве кодировки Unicode. Тогда это была кодировка, рекомендованная консорциумом Unicode, потому что Unicode 1.0 поддерживал только 65"536 символов². Консорциум Unicode передумал пять лет спустя, но к тому времени было уже слишком поздно для Windows, которая уже выпустила Win32s, Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95 - все из которых использовали UCS-2³.

Но сегодня мы поговорим о строках формата в стиле printf .

Это перевод If FlushInstructionCache doesn’t do anything, why do you have to call it, revisited .

Предполагается, что вы будете вызывать функцию FlushInstructionCache , когда вы генерируете или модифицируете исполняемый код в run-time - чтобы процессор при выполнении вашего сгенерированного/модифицированного кода читал бы написанные вами инструкции, а не старые инструкции, которые могут остаться в кеше команд процессора.

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

Но в Windows NT функция FlushInstructionCache выполняет реальную работу, поскольку ей необходимо уведомить все остальные процессоры о необходимости очищать их кэши.

Однако если вы посмотрите на Windows 10, то вы обнаружите, что функция FlushInstructionCache выглядит как версия для Windows 95: она ничего не делает .

В чём тут дело?

Когда-то я очень путался, увидев в описании программ x86 или x64 и не мог понять, почему если для 64-битной указывают x64, то для 32-битной x86, а не x32. Последнее должно быть намного привычнее и логичнее, а x86 не то что бы не запомнить, логике эта цифра не поддаётся: математически 86 больше чем 64, а на деле оказывается меньше в два раза. Из чисел "x86 x64 x32" таким образом можно даже загадку сделать. А ведь на самом деле...

x86 равна x32, а также равна и x64

При всей этой путанице на деле оказывается всё просто и как всегда ошибка идет за теми авторами, кто пишет вместе связку x86 и x64. Это попросту неправильно, несмотря на то, что так пишут практически все.

Дело в том, что x86 - это архитектура микропроцессора и аппаратная платформа, которая применима к тридцати двух битным и к шестидесяти четырех битным программам. Название x86 получено от наименования первого процессора intel i8086 и ряда последующих, в которых в конце всегда приписывалась 86. Через какое-то время цифровые обозначения новых процессоров стали заменяться именами, так публика узнала о Pentium и Celeron, но платформа x86 не изменилась до наших дней.

Значения два, а обозначения три? x86, x32 и x64 - как правильно писать?

И если x86 это архитектура процессора, то x32 и x64 это его разрядность – адресное пространство, а также количество информации, которую процессор в силах обработать за один такт.

Когда же пишут о совместимости программ указывая разрядность x86, подразумевая 32-битную платформу, это неправильно и только вводит в заблуждение. Правильно указывать х86_32bit или х86_64bit. Либо сокращенно интуитивно понятные x32 или x64.

Так что можно подытожить: сейчас x86 указывают по старинке (даже Майкрософт этим грешит), когда эта платформа была в единственном числе и 64-битных еще никто не знал. При появлении платформы x64 её стали указывать как есть, а прежняя 32-битная так и осталась в большинстве случаев как x86. И сейчас это не актуально, ошибочно и сбивает с толку тех, кто не понимает суть. А вы её теперь понимаете. :)

x32 или x64? Что выбрать? Что лучше?

Очень часто возникает вопрос, выбрать операционную систему x32 или x64? То есть тридцати двух битную или шестидесяти четырех битную?
Это вопрос риторический, теоретический и спорный. Очевидно, что x64 лучше, но не всегда и не в случае, если вы пользуетесь Windows. Нет, любая Windows x64 работает чуть шустрее чем Windows x32, но только если есть все программы и все драйвера под 64-битную систему. Очень часто, если компьютер современный, все системные драйвера к комплектующим у него обычно есть. Но проблема кроется тогда в программах и особенно видео и аудио кодеках. Обязательно чего-то да не будет. И если тридцати двух битные программы могут работать в системе x64, то драйвера и кодеки к ней обязательно нужны тоже x64. Год от года эта проблема исчезает, но до сих пор она не развеяна полностью. С системами x32 таких проблем нет и для дома лучше выбирать именно такую.
p.s. до 2010 года действительно существовала дилемма выбора 32-битной или 64-битной операционной системы. Причины описаны абзацем выше. Прошло с тех пор пять лет и такой проблемы уже не наблюдается. Безусловно, лучше поставить 64-битную даже не задумываясь, если, конечно же, не существует каких-то особых важных причин в пользу 32-битности.