Почему 32 битная система называется x86

от admin

Почему 32 битная система называется x86

Когда-то я очень путался, увидев в описании программ 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.

И сейчас это не актуально, ошибочно и сбивает с толку тех, кто не понимает суть. А вы её теперь понимаете.

Почему 32 битная система называется x86

Архитектура x86 — это победа маркетинга над здравым смыслом.

x86 (aka i80x86, IA-32 и даже x86-64 aka amd64/intel64) — довольно распространенная архитектура процессоров для персональных компьютеров и серверов, благодаря которым ты, да-да, лично ты читаешь этот текст. По совместительству — самая популярная архитектура процессоров для ПеКа, также абсолютный рекордсмен по архитектурным излишествам, их рудиментам и связанным с ними аппаратно-программным изыскам. В последнее время постепенно сдувается под прессом совсем уж бессмысленной и беспощадной платформы — ARM.

Содержание

Исторический очерк. Луркмор образовательный. [ править ]

Предыстория [ править ]

Семидесятые. Компания Intel молода, быстро развивается, а после выпуска нескольких своих первых процессоров, таки запиливает в 1974 году настоящий хит того времени — Intel 8080, который имел шину адреса в 16 бит и без особых ухищрений мог адресовать 64 кб, загружая по 8 бит за одно обращение к памяти. Немного спустя его рождение привело к явлению миру и городу первого (персонального) микрокомпьютера Altair 8800 с первым же коммерческим программным продуктом полуподвальной, еще малоизвестной тогда конторки Micro-Soft, состоящей из нескольких друзей-студентов. Ага.

Вскоре после начала производства 8080, группа работников Intel уволилась и создала свой православный аналог 8080, с дополнительными командами и регистрами, полностью бинарно совместимый с 8080. Звался он Z80 и был популярен в домашних компьютерах аж до начала 90-х, успешно конкурируя с MOS 6502.

Прогрессивная совковая промышленность, отвечая Интелу, затрещала, но выдержала, родив из своих недр микросхему КР580ВМ80А с тактовой частотой аж в 2.5 МГц. ИЧСХ, под микроскопом сбоку от точки подвеса первой ноги можно лицезреть остатки интеловской маркировки — i80. По мнению совкодрочеров, такой проеб особенно обиден, ибо в почтовых ящиках, НИИ и на оборонных заводах была проделана работа по всесторонней модернизации исходного проца, да так успешно, что новый продукт был лишь функциональным аналогом оригинала. Впрочем, серийное производство освоили лишь в 1977 году, но через год уже вышел 8086 — собственно, первый x86 процессор.

Появление [ править ]

Род x86 начинается с процессора 8086, который представлял собой 16-разрядный процессор с адресным пространством памяти в 1Мб. Адресная шина в 20 бит при этом использовалась специфически: программисту выдавался на руки виртуальный 32-битный адрес, разрубленный на две половины — 16 бит на сегмент, по биту через жопу сдвинутые на 4 разряда влево плюс 16 бит на смещение в сегменте формируют полный адрес. Выражаясь языком Си, real_address=(segment_register<<4)+address_register. 16-разрядное ОЗУ для 8086 стоило дорого, потому в тираж кроме него пошел и наполовину восьмибитный 8088, загружавший 16-битное слово за два обращения к памяти.

Фокус с громоздкой адресацией придумали дабы 8086 умел адресовать больше памяти — расово новоанглийский LSI-11 при переползании с родных 16 адресных бит на 22 к концу своей истории потребовал переписывания или в лучшем случае перекомпиляции софта, а в своей 32-разрядной (AKA VAX) ипостаси вообще утратил совместимость с предком, тогда как х86 пережил переход на 24-, а затем и на 32-битные адреса совершенно безболезненно. При этом для сохранения совместимости, на которую в «Интеле» и по сей день яростно дрочат, с уже имеющимся софтом для 8086, он исполнялся его через «окошко» в те же самые 64 кб с последующим «наращиванием» в CS:IP первой цифры, что сдвигало «окошко» на 1/256 страницы.

8086 был несовместим с 8080 как по выводам, так и по системе команд, что не помешало японской компании NEC выпустить свой процессор v20, который таки был совместим с 8086, но умел выполнять и код для 8080. Применялся он в расово японском компьютере PC-88.

Начало восьмидесятых. IBM между делом разрабатывает настольный персональный компьютер. Ведущий инженер проекта Дон Эстридж хочет использовать собственную МежДелМашевскую разработку — ROMP, но узнав, что боевые слоупоки из процессорного отдела опять кормят его завтраками, поменял процессор на 68000-й мотороллер — тот самый, на котором через пять лет был построен «Мак». Однако у мотороллеров на тот момент (1980 год) были неиллюзорные проблемы с производством, да и обвязка на 68000 стоила как самолёт, поэтому разработчики опять передумали, и остановились на интеловском 8088, который был дёшев, производился массово (IBM даже настояла на продаже «Интелом» лицензии на его производство AMD), да вдобавок прекрасно работал с копеечной 8-битной обвязкой от 8085. Заслоупоченный же ROMP, когда его наконец доделали, превратился в знаменитую POWER-архитектуру — ту самую, на которую потом перешли в Apple вместо 680х0.

Отечественный производитель отметился и тут, и в той стране имел известность в определенных кругах как КР1810ВМ86, что кагбэ намекает на 8086, но запил оказался немного не торт, и почти ниасилил.

Развитие [ править ]

Развитием 8086 стал процессор 80186, не достигший значимых успехов на рынке ПеКа, хотя и бывший длительное время весьма популярным для встраиваемой электроники, в связи с чем на рынок были выпущены SoC-версии данного процессора. Архитектурных отличий нет, так, несколько новых команд и немного другой механизм обработки прерываний.

Следующим был 80286. Несмотря на всю его неуклюжесть, для своего времени (1982 г.) являлся значительным шагом вперед благодаря появлению преждевременным родам защищенного режима. При возможности подключения к шине 16 мегабайт, мог адресовать в защищенном режиме гигабайт памяти, что приходилось делать весьма нетривиальным способом. Вернуться же из защищенного режима было невозможно без перезагрузки, поэтому толком использовать больше 1 мб реально умел лишь Microsoft Xenix, и, возможно, Minix (однозадачная unix-подобная ОС). Вообще, конечно, были и маньяки, умудрявшиеся на AT 16 MHz и фряху поднять, но пруфлинков на это не осталось. Хотя один релкомовский сервер именно на таком железе в лапки попадался и довольно долго проработал. Это можно было сделать, но это была вещь в себе.

Новое революционное достижение Intel — 32-разрядный процессор 80386, родоначальник архитектуры IA-32. Имел полноценное страничное MMU для организации виртуальной памяти. Адресуемое пространство памяти — 4Gb, а с перезагрузкой сегментных регистров — чуть меньше 8 Gb, но это не важно, поскольку адресных линий у i386DX было всего 32, а у облегчённого SX — и вовсе 24, как у 286. Умопомрачительная величина для эпохи MS-DOS. Архитектуру оценили сразу и массово, уже вскоре появились DOS-оболочки (DESQview, Windows 2.0 for 386) и полноценные ОС (OS/2, BSD, Linux…) с поддержкой 32-битной архитектуры. Значимых изменений архитектуры в целом больше не будет вплоть до настоящего времени, если не считать таковым внедрение 64-битного расширения в 2003 году.

На этом революции заканчиваются и начинается эволюция. В 80486 появилась трансляция внешних CISC инструкций во внутренние RISC, была добавлена встроенная кэш-память, а в модели DX — и встроенный сопроцессор. В Pentium — конвейерная архитектура с предсказанием ветвлений. Начинается внедрение расширений — MMX, SSE, SSE2, SSE3, Тысячи их! В Pentium Pro появилась возможность адресовать посредством PAE до 64GB памяти и встроенная поддержка многопроцессорности. В Pentium II интеловцы решили отказаться от многоногих сокетов в пользу слотов. В Pentium III они же поняли, что сфейлили и вернулись обратно к сокетам. Немного опередил время Pentium III Tualatin, имея производительность выше, чем у Pentium IV и энергопотребление ниже, чем у Pentium III Coppermine, но был незаслуженно отброшен маркетологами в гонке за 2 ГГц, но потом наработки из него вернулись в Core2 и Atom.

AMD тоже не зевала: в 2000 году её процессор Athlon преодолел планку в гигагерц раньше интеловских поделий, а годом спустя компания выпустила спецификацию AMD64. Несколько позже Intel, эпично сфейлившись со своим Itanium, который был плохо совместим с x86, подхватила эту концепцию как EM64T, впоследствии переименовав ее в x86-64. Этот стандарт привнёс в архитектуру 64-битные расширения, попутно выпилив часть рудиментов, а также, как потом выяснилось, и полезных фич. Это может означать полную победу x86: если ей и предрекали смерть вместе с 32-разрядыми вычислениями, то теперь она фактически обрела новую жизнь, на горе конкурентам и здравому смыслу. Первые 64-разрядные процессоры появились в 2003 году.

Кроме Intel и AMD, производством x86-процессоров для ПК занимались UMC, IDT, VIA, Cyrix, Texas Instruments и ещё более десятка компаний, но к настоящему времени одни из них безнадёжно отстали от лидеров и бросили это дело, а другие остановились на узкоспециализированных решениях не для массового рынка.

В 2006 году предпоследний оплот не-интеловских десктопов, Apple, забил на PowerPC к великой скорби PowerPC-фагов, и стали выпускать основанные на интеловских процессорах десктопы и ноутбуки. В первую очередь потому, что очередное поколение РРС, при всей его производительности оказалось настолько неиллюзорной кофеваркой, что на десктопные маки пришлось запиливать едва ли не первую в мире официальную искароппки систему жидкостного охлаждения. О том, чтобы ставить эдакую хуиту в ноутбуки или компактные машины типа iMac’ов не могло быть и речи, поэтому вместо процессоров G5 мобильные и компактные Маки комплектовались камнями G4, а то и G3, через что стали неиллюзорно делать сасай у Glorious PC Master Race. Учитывая же, что к тому моменту основную прибыль Эпплу приносили именно ноуты, результат немного предсказуем. Так что теперь на этот ваш Мак можно невозбранно заливать самую передовую в мире версию Windows, а на все остальные унылые компы, хоть и не без изъебств, но таки заливать священную Макось на радость нищебродам и копирастам в назидание.

Наиболее известные костыли [ править ]

Флаг защищенного режима [ править ]

Первый архитектурный геморрой. Имел место в процессоре 80286. Достаточно эпичен. Заключается в том, что установкой этого флага процессор переводится в режим, в котором доступны все его новые фички (включая доступ к памяти до 16 Mb), но при этом он теряет совместимость с 8086, а сбросить этот флаг можно только полным ресетом процессора. А поскольку ко времени появления компьютеров PC AT с этим процессором существовало более 9000 программ под MS-DOS, которая была гвоздями прибита к 8086, то новые возможности процессора оставались невостребованными. Для решения проблемы был придуман костыль: для возврата в реальный режим выполнялся сброс процессора через контроллер клавиатуры, что само по себе было операцией небыстрой. Поэтому использовать память свыше 1 Мб было можно только для виртуальных дисков, кеш-буферов и временных хранилищ [1] . Windows и OS/2, работая в защищенном режиме, пользовались этим костылем для обработки прерываний и запуска программ DOS. Начиная с процессора 80386 флаг защищенного режима сбрасывать было уже можно, но костыль с контроллером клавиатуры таскают и до сей поры, дабы обеспечить совместимость. Также в 80386 появился режим виртуального 8086, что тоже в какой-то степени решало проблему совместимости с DOS.

Адресная линия A20 [ править ]

Второй по значимости костыль. Дело в том, что ряд нерадивых программистов использовали тот факт, что адреса в сегменте FFFFh процессором 8086 заворачивались на первые 64k памяти.

Дело в том, что ещё при проектировании 8086 процессора для совместимости, а точнее для простоты портирования старого 8-битного кода с 8080 и Z80, физический 20-битный адрес было решено от программиста спрятать. Взамен ему выдали виртуальный 32-битный адрес, состоящий из 2-х 16-битных полей — сегмента (точнее номера сегмента, см. ниже, ещё точнее — сегмента с 16-битной гранулярностью, а не номера-дескриптора) и смещения. Если программист со всем своим кодом, данными и стеком влезал в 64К памяти, то он мог писать по-старинке, если же ему требовалось больше — вот тут-то и начиналось веселье. Дело в том, что на обе половины адреса было отведено по своему отдельному набору регистров, и при трансляции виртуального адреса в физический процессор брал сперва содержимое сегментного регистра, умножал его на 16 (т.н. «гранулярность памяти»), и прибавлял к полученной величине содержимое регистра смещения. Но поскольку сегментный регистр мог содержать от 0h до FFFFh, то максимальным значением адреса при таком алгоритме получалось 10FFEFh, что, разумеется, превышало максимально адресуемые FFFFFh. Поэтому старший бит адреса попросту обрезался, что и приводило к тому, что у любого сегмента с номером, большим F000h, старшие адреса начинали заворачиваться на сегмент 0000h.

В 80286, имевшем 24-битовый физический адрес, старшие биты больше не обрезались, и поэтому такие адреса указывали в расширенную память, а в результате такие хитровыебанные программы на этом процессоре не работали. Решили эту проблему, сделав 20-ю адресную линию отключаемой, заведя управление ею на вышеупомянутый контроллер клавиатуры. Костыль также таскают по сей день [2] , хотя уже и о программах-то тех, наверное, давно забыли, как и о самой MS-DOS вспоминают лишь ностальгисты да олдфаги. Область расширенной памяти, адресуемая в реальном режиме (размером в 65520 байт), получила название High Memory Area (HMA), которую, впоследствии, MS-DOS использовала для размещения своего ядра, естественно, при этом потеряв совместимость с A20-зависимыми программами (тем не менее, для их запуска можно было грузить DOS в обычные нижние адреса памяти). Тут следует сделать важное замечание для людей, которые не совсем понимают нафига всё это сделано. Отключать А20 придумали в ibm действительно для совместимости. Если забыть о том, что линии можно(нужно?) отключать и ебанутых долбоёбах, которые использовали memory wrap, то нововведение дескрипторов сегмента не кажется такой плохой идеей, так как вместе с защищенным режимом уже в 286 позволило говорить о какой-никакой многозадачности. Также следует не забывать что в компьютерах 21-го века, управление 20-й адресной линией производится как правило более быстрыми способами, чем через контроллер клавиатуры (опция в BIOS «Gate a20 option», где normal — использование контроллера клавиатуры, а Fast — уже что-то реализуемое через сам чипсет)

Команда LOADALL [ править ]

Недокументированная команда, имевшаяся в процессоре 80286, которую использовали для обращения к памяти выше 1Мб в реальном режиме. Использовалась драйвером HIMEM.SYS. Говорят, что был выигрыш в скорости, по сравнению с переключением через клавиатурный контроллер. Других преимуществ нет. Маньяки из IBM даже пытались реализовать через нее что-то наподобие виртуальной машины, но сфейлили из-за невысокой скорости работы.

Архитектурный пиздец эволюции [ править ]

Благодаря своей давней истории и стремлению Интела к сохранению совместимости, сабжевый процессор являет нам ярчайший пример свалки исторического мусора, напоминая тем самым ДНК. Начнём с того, что x86 является чуть ли не единственным современным CISC’ом. А это означает множество режимов адресации, избыточную, неортогональную и не единообразную систему команд, совершенно ебанутую систему префиксов команд и смехотворное количество регистров общего назначения (с последним пунктом в X86-64 дела обстоят несколько в два раза лучше), правда, от последнего помогает условное выполнение и переименование регистров. Въедливый нерд же, ознакомившись со структурой сегментного дескриптора, моментально фалломорфирует от того, что первые 24 бита поля base address хранятся отдельно от последних 8-ми. Может показаться, что причина этого кроется в том, что процессор проектировали конченые укурки, но на самом деле всё много прозаичней: в процессоре 80286 это поле было 24-х разрядным. А когда потребовалось расширить его до 32-х разрядов, старшие 8 бит приткнули куда получилось. И вот из такого леденящего душу пиздеца состоит наш любимый x86 чуть более, чем полностью.

«Расширенный» реальный режим [ править ]

Также известный как Unreal mode (по аналогии с реальным режимом, real mode). Очень интересный костыль, связанный с наличием т. н. «теневой части» сегментного регистра aka дескрипторного кеша. Впервые появился в 80386, с возможностью возвращаться из защищённого режима в реальный. Нехитрый трюк позволяет модифицировать реальный режим так, что в нём становится можно обращаться ко всем четырем гигабайтам адресного пространства. Недокументированная, но вполне полезная и юзабельная в некоторых ситуациях фича. То есть, была полезной, когда кто-то ещё использовал для чего-то полезного реальный режим. Сейчас эта фича используется в основном в BIOS-ах, и то только из-за лени программистов.

Turbo-режим (и соответствующая кнопка) [ править ]

Некоторые криворукие разработчики использовали частоту процессора для тайминга в своих приложениях, для совместимости с ними был запилен такой костыль, понижающий частоту ЦП до 4.77 мГц (как 8088). Лулз еще в том, что название кнопки противоположно ее действию. Особенность не самого процессора x86, а скорее самой платформы. Использовалась начиная с 286 и порой аж до 486 и первых Pentium, позже была предана анафеме, хотя кнопку можно было встретить и на более новых корпусах. Программные реализации применяются и ныне — ограничение скорости ЦП есть в DOSBox и VirtualBox.

SMM (System Management Mode) [ править ]

Несмотря на «4-уровневую» систему колец защиты (от наиболее высокого 0-го уровня, где, по идее, работает менеджер Операционной системы, который имеет наиболее высокий приоритет до 3-го, наименее привилегированного), имеется еще один «надуровень» который имеет… еще более высокие привилегии! Точнее, это программный код который вообще никому не виден и который (когда процессор передает ему управление по сигналу #SMI) имеет полный и неограниченный доступ абсолютно ко всем ресурсам системы.

Более того, в архитектуре предусмотрен специальный бит, и если обработчик этого режима (SMI Handler) установит его, то OS даже если и сильно захочет, не сможет не то что блокировать его, но и даже прочитать!

Вообще, всё задумывалось как лучше — SMI-обработчик это на самом деле часть BIOS и управление ему передаётся по сигналу от чипсета при наступлении каких-то событий (например, запись в некоторые порты или сигнал о перегреве) совершенно прозрачно для операционной системы, за исключением потраченного на выполнение этого обработчика времени. То есть, BIOS обеспечивает поддержку или эмуляцию некоторых девайсов чипсета, освобождая ОС от необходимости делать это самой, что даёт нам шансы в старости снова увидеть DOS (да-да, там в 90% случаев было примерно так же: Onboard BIOS Extensions эмулировали сферовакуумное оборудование, а софт работал прямо с этим «оборудованием» без дров).

Хорошо? Хорошо, но не совсем: во-первых, для SMМ нужна поддержка в железе: в чипсете и в процессоре (аж целый специальный режим).

Во-вторых, SMI-обработчики беспардонно отнимают время у задач операционной системы, никак не прерываемы, не откладываемы и приходят ВНЕЗАПНО

В-третьих, факт наличия SMM, именуемого иногда Ring −2, вызывает небеспочвенные опасения у специалистов касательно появления руткитов и прочих троянов, которые не будут брезговать добавлять в BIOS свой резидентный модуль — имея с этого профит в виде повышенной живучести и скрытности, так как выпилить их можно будет только перешивкой биоса, причем — только на программаторе. И совершенно ненапрасно, поскольку первый такой V2P был написан ещё в 1998-ом… И очень интересно глючил систему, «зануляя» по байту с конца массива флэшки за каждую перезагрузку. Отчего порты на матери поражённой такой заразой начинали друг за другом довольно экзотично отмирать даже после того, как антивирь вычищал код-инсталлятор.

В-четвёртых, мысль сумрачных гениев из компании Интел не стоит на месте, и SMM-у ещё в середине девяностых придумали более продвинутую замену: ACPI. Идея ACPI в том, что BIOS всё равно предлагает обработчики для событий чипсета, но в виде аккуратно сложенного в доступную операционной системе табличку байткода. ОС содержит интерпретатор байткода и при необходимости вызывает эти обработчики в своём контексте когда и как хочет. Все довольны. SMМ можно выкидывать на помойку.

Но не тут-то было. Несмотря на моральное устарение, SMM жив даже в последних моделях x86 процессоров и чипсетов. Помереть SMM-у мешает тот факт, что через него реализовано несколько других уродливых костылей, из которых самый главный — эмуляция PS/2 клавиатуры через USB, и вообще эмуляция доисторических клавиатурных портов, которые, помимо своего прямого назначения, позволяют невозбранно ресетить систему и используются для этого многими олдфажными ОС-ями. Алсо, во многих системах SMM управляет кулером процессора, без чего может наступить Пиздец. Все эти костыли опциональны; то есть, если ОС поддерживает ACPI, она при загрузке отключает SMM и дальше делает всё сама через ACPI. ACPI поддерживают все выпущенные за последний десяток лет мейнстримные ОСи (винды, линух, фрибсдя, макось, и другие). Но убрать костыль, как все уже догадались, не позволяет желание сохранить обратную совместимость с доисторическим софтом, а также предпочтением мобильных камушков — управлять собственным кулером самостоятельно, игноря эту директиву (большинство буков Lenovo, Samsung-и почти все, словивший эпичный пиздец на этом эффекте Fujitsu-Siemens и т. п.).

Аппаратная мультизадачность [ править ]

В процессорах начиная с 80286 был введен механизм аппаратного переключения контекстов задач, но практически не использовался разработчиками по причине неуклюжей реализации, и поэтому из x86-64 был выпилен [3] [4] .

Система команд [ править ]

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

Длинный режим [ править ]

Упомянутое выше архитектурное расширение до 64 бит представляет собой еще один режим работы, несовместимый с реальным режимом, но немного совместимый с защищенным. В этом режиме доступны шестнадцать 64-битных регистров общего назначения и Over 9000 адресного пространства.

Примечателен тем, что разработчиком этой архитектуры была AMD, в то время как Intel скопипиздила переделала технологию [5] (кое-что не доделав), изменив неполиткорректное вражеское название AMD64 на нейтральное EM64T. Сей факт несколько нетипичен, так как крайне редко Intel что-то так дословно копипастила у AMD, обычно все было наоборот. Скопипиздили, кстати, довольно коряво, и первые 64-битные зионы, например, бодро рапортовали о 40 битах физического адреса, имея всего 36. Однако ты, Анон, должен помнить — никто просто так ничего без последствий не пиздит. Вся загогулина есть в том, что существует соглашение о перекрёстном лицензировании технологий, по условиям которого эти две конторки обязаны(. ) делиться подобными технологиями. Отак-то!

Несмотря на свою молодость, даже этот режим уже пару раз перепилили по всё той же набившей оскомину причине: совместимость с быдлокодом. Дело в том, что так увлекшись избавлением от атавизма сегментной адресации, инженегры AMD заодно выпилили две древнючие команды: LAHF и SAHF, использовавшиеся в основном для анализа флагов состояния не менее древнючего куска кремния по имени 8087(fstsw ax+sahf). Эти команды существовали со времён дедушки 8086, и занимались пересылкой нижнего байта регистра флагов в аккумулятор и обратно. Начиная с Пня-2, эту команду перестали указывать в документации, тщетно надеясь, что быдло-погромисты забудут этот уродливый костыль, и будут пользоваться богоугодными pushfd+pop reg/push reg+popfd, работающими на новых процах с нулевым начислением обращений в память благодаря хитрожопой штуке «очередь записи», но не тут-то было. Оборзевшие от безнаказанности x86-фаги продолжали совать эти команды везде, до куда добирались, в частности — в софт для виртуализации. Ну а дальше приключилась стандартная история для х86-архитектуры: вместо того, чтобы показать быдлокодерам писю, в архитектуру вставили очередной костыль. Да, мой юный друг, на ранних Athlon 64 и соответствующих им интелах невозможно было запустить 64-битного гостя даже если хост был тоже 64-битный. Такие дела.

VEX префикс [ править ]

Революционная идея — выпилить старые костыли методом запила новых — пришла на ум инженерам Intel после очередного сеанса раскуривания какого-то нового типа веществ. Однажды, когда в очередной раз стало подходить к концу пространство опкодов, интелевцы задумались: до коих пор, мать твою, нам городить мелкие костыли, не пора ли запилить такой, чтобы хватило лет этак на десяток? И им пришла в голову гениальная мысль, суть которой в следующем. Давно известно, что размер опкода в x86 — всего один байт. Ну так вот исторически сложилось. И возможных инструкций можно закодировать всего 256. Поначалу (8086) этого хватало даже с лихвой: можно было, не боясь исчерпать опкодовое пространство, для самых частоиспользуемых операций кодировать индекс регистра непосредственно в коде инструкции: ведь команда занимает всего один байт, а память в те времена была по цене золота. Также среди этих кодов существовали так называемые префиксы, сами не кодирующие никакой операции, но немного (или много) меняющие смысл следующего опкода, грубо говоря, рассматривались с ним как единый целый опкод. И таким, и только таким способом можно было расширять однобайтное пространство. О первом глобальном расширении задумались при разработке 80286: тогда в префикс превратили команду «POP CS» за номером 15, доставив баттхёрта некоторым авторам вирусов, активно её использовавшим. Пространство расширилось еще на 255 кодов. Пиздец же начался с эпохи великого и ужасного SSE, когда новые команды стали расти как грибы после дождя. В дело пошло переопределение префиксов REPNE/REPE и OPSIZE. Появились трехбайтовые команды с длинной цепочкой префиксов (и постфиксов). Когда амдшники создавали свой AMD64, они в порыве энтузиазма расправились с однобайтовыми INC/DEC, превратив их в префикс REX. Код стал состоять из префикс-байтов чуть менее, чем наполовину. И вот, свершилось. Вместо этой цепочки переопределенных однобайтных префиксов решили сделать один многобайтный универсальный. В общем — разумное решение. Но! Где взять для него опкод? Ведь однобайтовое пространство уже давно занято. Но ведь гений костылестроения Intel не знает границ! Решили просто: взяли две, уже не совсем нужные в 10-х годах XXI века команды LES и LDS, вспомнив, что они, помимо всего прочего имеют еще и байт-описатель адресации и не могут использовать регистровый операнд. Дырка найдена! Теперь берём команду LES или LDS, кодируем регистровый операнд, а остальные биты — в нашем распоряжении. Выпиливаем все лишние префиксы и ставим вместо них VEX. Можно даже уподобиться RISC’ам и закодировать трех-, четырёх-, и пятиоперандные команды, битов в префиксе хватит (он бывает двух- и трех-байтовым). Правда, некоторые биты приходится делать инверсными, ибо иначе получится LDS или LES, но разве это костыль против такой революции?

Наиболее известные баги [ править ]

Двойная сигма [ править ]

Древняя бага, поражала 80386 еще в те времена, когда они не разделились на 386DX и 386SX. Заключалась в том, что ранние 80386 зависали на 32-битном коде. Лулз заключался в том, что даже Intel могла отличить плохой проц от нормального только после тестирования. Была объявлена программа замены, а дабы не терять PROFIT, Intel оттестировала возвращенные б/у процы и повторно выпустила их в продажу, причем хорошие маркировались расовыми буквами ΣΣ (дабл-сигма), а плохие «16 BIT S/W ONLY» (в те времена на 32-битный код многим было похуй). Нынче и то и другое весьма ценится у коллекционеров пруфлинк.

F00F bug [ править ]

Одним из эпичнейших фейлов Intel была ошибка в процессоре Пентиум в реализации инструкции lock cmpxchg8b с регистровым аргументом (также известная как F00F bug, по первым байтам команды). Заключалась она в том, что любая пользовательская программа могла запросто завесить всю систему. По идее, любая операция с префиксом lock, не обращающаяся к памяти, бессмысленна, и пень это понимал. Но в случае команды cmpxchg8b он тупил, забывая снять блокировку шины, и подвисал после получения адреса обработчика прерывания, так как операции записи не происходило и опаньки. Для преодоления этой проблемы разработчикам ОС приходилось прибегать к нетривиальным изъебствам. Если у вас есть Pentium с ОС Linux вы можете увидеть при загрузке строки «FOOF bug detected, installing workaround», что означает, что вы обладаете бажным процессором Pentium. Фрюха тоже запускает воркараунд, обнаружив первопень.

Арифметический баг Pentium [ править ]

—Сколько инженеров Intel нужно, чтобы заменить лампочку?
— 1.9999367, но это вполне приемлемая точность.

Кроме того, первые серии Pentium 60/66 MHz (о, веселые 90-е!) весьма пренебрежительно относились к арифметике — а именно, в некоторых случаях операция деления давала неточный результат. Хотя и утверждалось, что ошибка проявляется в одном случае из 9 миллиардов, Интелу пришлось смириться и массово заменить бажные процессоры (предварительно повыебывавшись: дескать, докажите, что вам нужна такая точность).

Ошибка породила немало лулзов, объясняющих, например, переход от численного именования процессоров (80286, 80386) к именам типа «Pentium» и т. д. Путем нехитрых вычислений можно понять, что номер каждого следующего поколения процессоров получался путем сложения номера предыдущего и числа 100. По логике Intel же 486.0 + 100.0 = 585.999996347. Выпускать процессор 585.999996347 Intel не захотели и дали ему имя «Pentium».

… А если серьёзней, в те далекие, лихие времена, Intel-подобные камни выпускали все кому не лень, при этом оставляли даже систему именования, увеличивая местами циферки — у AMD был Am486, у Cyrix — Cx486 и так далее. По версии Intel такое поведение сторонних фирм негативно отражалось на доходах — гоп-фирмы как бы пользовались этим [6] и выходили в «плюс», а Intel соответственно, в «минус». Жадные до денег манагеры Intel, думали-думали и придумали — раз нельзя сделать циферки торговой маркой, то давайте наш абортарий будет давать имена высерам наших рабов-инженеров. И понеслось…

Народные названия компьютеров и процессоров [ править ]

  • IBM PC — по правде говоря, в тогдашние 80-е годы он почти всегда назывался Персональный Компьютер, с придыханием, ибо стоил в СССР дороже в два раза, чем новые Жигули;
  • IBM PC XT — Эксти, Иксти, ХаТэ, Икстишка;
  • IBM PC PS/2 — ПиЭс Пополам, Писипополам, P.S. Постскриптум, Полупись (по аналогии с полуосью — OS/2); PS/1 тоже был, но мало (хотя и по-своему эпично), поэтому народное название не сложилось;
  • IBM PC AT — Эйти, Айти, Айтишка, Эйтишка, А-Тэ, Атэшка;
  • 286 — Двойка, Двушка;
  • 386 — Тройка, Трешка;
  • 486 — Четвёрка;
  • Pentium — Пень, Пентюх, Пенёк, Первопень, Пент;
      • Также Pentium-ы II, . и 4 в народе иногда именуются «Двойкой», «Трешкой», «Четверкой», уже забыв про их тезок-предков 80×86; или просто «пеньком» или пренебрежительно — писюком.
      • Celeron — Селерон, Целерон (Целерон два), Целка, Целер, Кселерон, Целик, Селик, Селика, Сельдерей, Цэл. (Значительно реже: Келерон, Суслерон, Соплерон, Лохотрон, Дохлерон, Карлсон, Селекон, Саурон, Селика, Калорон, Затычка для сокета, заглушка для материнки, эмулятор процессора). Процессор с урезанным относительно старшего ядра функционалом, например кэш меньшего объема, и т. д.;
      • Pentium 4 — Четвертый пень, Пэ-четыре, квадропень. Было их под одной циферкой аж 4 поколения:
        • Первое Williamtte. Сокет 423, ничем непримечательно, «трешки» рвали их как грелку.
        • Второе — Northwood. Появились где-то в районе ввода сокета «478 ног». Рулили и педалили. Выигрывали в большинстве задач у Prescott-ов хотя бы из-за удачности тепловыброса. Анонимусом замечены даже в ноутбуках (sic!)
        • Третье — Prescott. В народе — Печка, Духовка, Scott-ина (до сих пор Linux на таком проце сразу при включении готов заорать «TEMPERATURE ABOVE THRESHOLD. »).
        • Четвертое — Cedar Mill, «сидор», «цезарь», «мель», 65-нанометровый апгрейд Prescott-а. Тепловыделение чуть ниже, но грабли те же.
          • Prescott/Cedar Mill — лютый фейл штеуда: За каким-то хреном сильно растянут конвейер и добавлен второй виртуальный поток [7] , в теории призванный увеличить производительность от 30% до 50% (в кукурузных тестах) по сравнению с однопоточным ядром. В итоге процессор получил очень сильно возросшее тепловыделение и энергопотребление, а во многих задачах из-за длинного конвейера люто сливал своему предшественнику. Еще один серьезный косяк Intel-а, допущенный при выпуске сабжа — слепая гонка гигагерцев: невообразимые тогда 3.4 ГГц у топового Прескотта на S478 и вплоть до 3.8 ГГц — на LGA775. В настольно-бытовом сегменте Prescott пришелся не ко двору, поскольку в 2005 году многопоточных приложений практически не было, а эта ваша любимая Windows XP сама распределять задачи между потоками практически не умела (фигли, выпущена в 2001 году, когда о пользовательских многоядерных системах и думать не могли), поэтому они либо тупо выполнялись на одном потоке, либо постоянно прыгали с одного потока на другой, но при этом занять одновременно оба потока было архисложно. В какой-то мере ситуацию спасает кэш L2, увеличенный до целого мегабайта, а чуть позднее — и до двух;
          • Pentium D — ПечкаДэ. Первый честный двухъядерник для народа, впрочем проблема двухъядерности решена крайне радикально: два кристалла Prescottины/Cedar Mill под одной крышкой с соответствующим энергопотреблением и тепловыделением — ни много, ни мало, а заявлено 130 ватт, причем чтобы влезть в рамки оговоренного TDP, у Prescott-a пришлось урезать частоту вплоть до гигагерца (для топовых камней) и отрубить многопоточность к хренам; Cedar Mill, будучи несколько более холодным, лишился только многопоточности. Продолжение фейла образующих данный проц ядер, только в квадрате. Очень веселым квестом был подбор матери, способной без вреда для себя вдуть в сокет ток под 100 ампер. Особенно убого ПечкаДэ стала выглядеть на фоне Аллендейла Е4300, который был в 2,5 раза холоднее и на четверть быстрее в тех же играх при своих 1,8ГГц.
          • Celeron на ядре Tualatin (P3) — Туалерон, Целерон три;
          • Xeon — Ксеон, Зеон, Ксенон, Неонка;
          • Intel Core — Кора, Корка, Корь;
          • Intel Core 2 Duo — Кор(е) два дуо, Коре Дует, Кора дура, Два дула, Двустволка, Кора дуба, Кора ясеня (Core 2 Duo E7xxx), Дупло, Конура (по названию ядра — Conroe), Интел Горо-д-в-а-ду;
          • Intel Core 2 Quad — Квад, Квадро, Квадрик, Кор(е) два квад, Квадрат, Кора кедра; логическое продолжение Core 2 Duo, Intel пошла по пути создания Pentium D — так же запихала два кристалла под одну крышку, но на сей раз уже двухъядерные Core2Duo, в плане нагрева тоже получилась печка (TDP — те же 130 ватт), но хотя бы умеющая толково задействовать все потоки и снижать частоту в простое.
          • Intel Core i7 — Кор(е) аи семь, и-семь, айс, кор топор, ай сэвэн, айседьмой, йаСемерко;
          • Intel Core i5 — Кор(е) ай пять, айпятый, и-пять, ай-блять;
          • AMD Duron — Дурон, Дюрон, Лохотрон, Дурень, Дурка, Дурик, Дурдом;
          • AMD Sempron — Затычка, Лохотрон, Косарь (цена 1000 рублей), Тормоз;
          • AMD Athlon — Атлон, Аслон, Атхлон, Афлон, Эшлон (sic!). А так же: Печь, Утюг, Утюговый Атлон, Калорифер (Анонимус не забывает, что первые атлоны сильно грелись (ага-ага, смотря что с чем сравнивать — если 32 ватта у Tualatin 1400(Coppermine 1133) с 72 ваттами у Thunderbird 1400B(C) или Palomino XP 2100+, то, конечно, утюг, но если вспомнить про 100 ватт у Willamette 2ГГц (66 ватт у народных Celeron Willamette 1,7 ГГц) …).
            • Athlon Thunderbird именовались Громокряками;

            Цитаты [ править ]

            Каждый следующий процессор от интел все более и более алиеноподобен по своей логике. К пентиуму людей в интел уже не осталось.

            Процессоры бывают двух типов: интел и пентиум.

            Отгрохал новый русский особняк. Позвал гостей. Водит, показывает — все в шоке — всё круто. И тут доходят до ванной, и один из гостей спрашивает:

            — Чо у тя в ванной за плитка? Какая-то непонтовая!
            — Да ты знаешь сколько я за нее бабла отвалил?!
            — Нет! а скока?
            Хозяин шепнул ему на ухо сумму. Тот, сделав удивленное лицо, говорит:
            — Фигасе! Платиновая что ли!? А кто делает?

            Если Вам приспичило иметь PC, покупайте это. Я не буду пытаться отговорить Вас. Я просто отказываюсь рекомендовать изначально ущербные концепции (как аппаратуры, так и программного обеспечения). Я отказываюсь далее способствовать обогащению фирмы Microsoft. Микросхемы Intel убоги по своей сути, и ничего тут поделать невозможно. Такими они и были задуманы. На PC Вы сталкиваетесь с заранее запланированным убожеством каждые несколько лет -то новые программы не годятся для старой аппаратуры, то новая аппаратура не годится для старых прорамм… По какому же заколдованному кругу вы путешествуете, господа пользователи PC? Продолжайте выбрасывать деньги на более быструю аппаратную часть с каждой новой версией ОС и прикладных программ, которые становятся все более медленными и раздутыми. Единственное, на что остается надеятся, так это на то, что ваша техника когда нибудь будет работать, как Амига в 1987 году, да и то вряд ли эти надежды сбудутся…

            Почему 32 битная система называется x86

            x86 (Intel 80×86) — аппаратная платформа: архитектура микропроцессора и соответствующий набор инструкций, как разработанных и выпускаемых компанией Intel, так и совместимых с ними процессоров других производителей (AMD, VIA, Transmeta, WinChip и т. д.).

            Такое имя закрепилось за семейством этих микропроцессоров, так как названия ранних моделей процессоров Intel заканчивались на число 86 — 8086, 80186, 80286 (i286), 80386 (i386), 80486 (i486). Более поздние модели стали называть именами собственными (например, Pentium), чтобы иметь возможность зарегистрировать их как торговую марку.

            Другое название для архитектуры этого типа — IA (Intel Architecture) или же IA-32.

            Содержание

            История

            Основные особенности архитектуры

            x86 — это CISC-архитектура. Доступ к памяти происходит по «словам». «Слова» размещаются по принципу little-endian. Современные процессоры включают в себя декодеры команд 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 доступно только в защищенном режиме.

              Расширения

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

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

              SSE (англ. Streaming SIMD Extensions  — потоковое SIMD-расширение) — это SIMD (англ. Single Instruction, Multiple Data  — «одна инструкция — множество данных») набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III. Поддерживает вычисления с плавающей точкой. SSE состоит из восьми 128-битных регистров (с xmm0 до xmm7). Каждый регистр определяет 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя инструкции, которые производят операции со скалярными и упакованными типами данных.

              Улучшенное расширение SSE. Появилось в процессорах Pentium 4. Производит потоковые вычисления с вещественными числами двойной точности (2 числа по 64 бита в одном регистре SSE). Кроме того, добавлены инструкции, аналогичные расширению MMX, работающие с регистрами SSE (16 байт, 8 слов, 4 двойных слова или 2 учетверённых слова в одном регистре). SSE2 включает в себя ряд команд управления кэшем, предназначенных для минимизации загрязнения кэша при обработке неопределенных потоков информации.

              Продолжение SSE и SSE2, появилось в процессорах Prescott. Набор SSE3 содержит 13 инструкций: FISTTP (x87), MOVSLDUP (SSE), MOVSHDUP (SSE), MOVDDUP (SSE2), LDDQU (SSE/SSE2), ADDSUBPD (SSE), ADDSUBPD (SSE2), HADDPS (SSE), HSUBPS (SSE), HADDPD (SSE2), HSUBPD (SSE2), MONITOR (нет аналога в SSE3 для AMD), MWAIT (нет аналога в SSE3 для AMD). Наиболее заметное изменение — возможность горизонтальной работы с регистрами. Если говорить более конкретно, добавлены команды сложения и вычитания нескольких значений, хранящихся в одном регистре. Эти команды упростили ряд DSP и 3D-операций. Существует также новая команда для преобразования значений с плавающей точкой в целые без необходимости вносить изменения в глобальном режиме округления.

              SSSE3

              Дополнение к SSE3 для работы с упакованными целыми. Новыми в SSSE3, по сравнению с SSE3, являются 16 уникальных команд, работающих с упакованными целыми. Каждая из них может работать как с 64-х битными (MMX), так и с 128-ми битными (XMM) регистрами, поэтому Intel в своих материалах ссылается на 32 новые команды. Категории новых инструкций: работа со знаком, сдвиги, перемешивание байт, умножения, горизонтальные сложения и вычитания целых.

              Новый набор команд Intel, впервые реализованный в процессорах серии Penryn.

              SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (они есть только в процессорах Penryn). Ожидается, что полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) будет доступен в процессорах Nehalem. Ни одна из SSE4 инструкций не работает с 64-битными mmx регистрами, только со 128-битными xmm0-15. Может оказаться, что не будет выпущено 32-битных процессоров с SSE4, только 64-битные — с EM64T. Добавлены инструкции, ускоряющие компенсацию движения в видеокодеках, быстрое чтение из USWC памяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32, popcnt. Впервые в SSE4 регистр xmm0 стал использоваться как неявный аргумент для некоторых инструкций. Новые инструкции SSE4.1 включают ускорение видео, работу с векторными примитивами, вставки/извлечения, скалярное умножение векторов, смешивания, проверки бит, округления, чтение WC-памяти. Новые инструкции SSE4.2 включают обработку строк, подсчёт CRC32, подсчет популяции единичных бит, работу с векторными примитивами.

              Новое расширение x86 инструкций от AMD, названное SSE5. Этот абсолютно новый набор SSE инструкций, созданный специалистами AMD, станет поддерживаться перспективными CPU компании, начиная с 2009 года. SSE5 привносят в классическую x86 архитектуру некоторые возможности, доступные ранее исключительно в RISC процессорах. Набор инструкций SSE5 определяет 47 новых базисных команд, призванных ускорить однопоточные вычисления благодаря увеличению «плотности» обрабатываемых данных. Среди новых инструкций выделяется две основные группы. В первую входят инструкции, аккумулирующие результаты умножения. Инструкции такого типа могут быть полезны для организации итерационных вычислительных процессов при рендеринге изображений или при создании трёхмерных аудио эффектов. Вторая группа новых команд включает инструкции, оперирующие с двумя регистрами и сохраняющие результат в третьем. Это нововведение может позволить разработчикам обойтись без лишних пересылок данных между регистрами в вычислительных алгоритмах. Также, SSE5 содержит и несколько новых инструкций для сравнения векторов, для перестановки и перемещения данных, а также для изменения точности и округления. Основными применениями для SSE5 AMD видит расчётные задачи, обработку мультимедиа контента и средства шифрования. Ожидается, что в счётных приложениях, использующих матричные операции, использование SSE5 может дать 30-процентрый прирост производительности. Мультимедийные задачи, требующие выполнения дискретного косинусного преобразования, могут получить 20-процентное ускорение. А алгоритмы шифрования благодаря SSE5 способны получить пятикратный выигрыш в скорости обработки данных.

              Следующий набор расширений от Intel.

              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.

              В 1982 году были выпущены 80186 и 80188, которые первоначально не получили широкого распространения из-за того, что IBM не стала использовать их в своих персональных компьютерах. Впрочем, некоторые производители «клонов» сделали это, выпустив ускоренные варианты IBM PC/XT. В то же время, эти процессоры оказались чрезвычайно удачными для использования во встроенных системах и в различных модификациях выпускаются до настоящего времени [1] . В эти процессоры были первоначально добавлено несколько новых команд, повышена тактовая частота. Впоследствии появились модификации, содержащие дополнительные аппаратные средства, такие, как интегрированные контроллеры последовательного порта.

              Объявлен в 1982 году. Работал на частотах 6, а затем 8, 10, 12, 16, 20 МГц. Производился по техпроцессу 1,5 мкм и содержал около 134 тысяч транзисторов. С его появлением появилось такое понятие, как защищённый режим (protected mode) и виртуальная память. Производительность процессора по сравнению с 8086 увеличилась в несколько раз (0,99-2,6 млн операций в секунду).

              Первый 32-разрядный процессор, работал на частотах 16-40 МГц. Появился в 1985 году. Знаменовал собой революцию в мире процессоров x86. Основные принципы, заложенные в этом чипе, без кардинальных изменений дожили и до наших дней (за всё это время изменения касались, в основном, повышения производительности, расширения набора команд, увеличения разрядности). Первые 386 процессоры содержали серьезную ошибку, приводящую к невозможности функционирования в защищенном режиме. Исправленная версия называлась 386DX. Так же выпускались более дешевые процессоры i386SX с урезанной до 16 бит внешней шиной данных и 24 бит шиной адреса. Для встроенного применения выпускался процессор i386EX. 386 — первый процессор, использовавшийся совместно с кеш-памятью (внешней).

              Процессор i486 (1989 год) является усовершенствованным 386 процессором и первым скалярным процессором Intel (ряд операций выполнялись за один такт). Имел встроенный FPU (Floating Point Unit — блок вычислений с плавающей запятой) и впервые — встроенную кэш-память (8 Кбайт). 80486 — первый процессор Intel, для которого была применена технология умножения частоты шины FSB (в моделях DX2-50, DX2-66, DX4-75 и DX4-100).

              Для ноутбуков и встраиваемых систем в начале 1990-х была выпущена «облегченная» модификация i486SX без встроенного блока FPU.

              Существовала также модификация для встроенных применений — i486GX. Она представляла собой низковольтный 486SX с шиной данных, урезанной до 16-ти бит. Корпусировка i486GX — TQFP-176, частоты — от 16 МГц при Vcore = 2,0 В до 33 МГц при 2,7 В.

              Модификация 486, набор из двух микросхем. Основная устанавливалась в разьем 386DX и представляла собой 486DX без кэша L1, но с сопроцессором. Дополнительная микросхема была заглушкой для гнезда 387DX и служила для обработки сигнала FERR.

              Intel486 OverDrive (P23T) — микропроцессор, предназначенный для модернизации систем на базе микропроцессоры Intel 486.

              Pentium (1993 год. Intel отказалась от ix86 названий, потому что не могла запатентовать числа.) — первый суперскалярный и суперконвейерный процессор Intel. Суперскалярность — термин, означающий, что процессор позволяет выполнять более одной операции за один такт. Суперконвейерность означает, что процессор имеет несколько вычислительных конвейеров. У Pentium их два, что позволяет ему при одинаковых частотах в идеале быть вдвое производительней 486, выполняя сразу 2 инструкции за такт. Кроме того, особенностью процессора Pentium являлся полностью переработанный и очень мощный на то время блок FPU, производительность которого оставалась недостижимой для конкурентов вплоть до конца 1990-х годов.

              Pentium OverDrive — микропроцессор, предназначенный для модернизации систем на базе микропроцессоров Intel 486. Устанавливался в Socket 3, имел удвоенный объём кэша L1 с организацией Write-Thru, встроенный стабилизатор питания, умножение ×2.5 и частоты 63 и 83 МГц.

              CPU Pentium Pro.jpg

              Pentium Pro (1995 год) — первый процессор шестого поколения. Идеи и технологии, заложенные в данный чип, определили архитектуры всех современных x86-процессоров: блоки предсказания ветвлений, переименование регистров, RISC-ядро, интегрированная в один корпус с ядром кэш-память второго уровня. Однако технологическая сложность ядра данного процессора привела к сравнительно невысокому выходу годных чипов при технологиях того времени, что сказалось на высокой цене Pentium Pro. При этом процессор обладал достаточно низкой производительностью при исполнении 16-разрядного кода. Поэтому данный процессор применялся только в High-End системах и серверах.

              Pentium MMX (январь 1997 года) — процессор пятого поколения, и, по сути, просто модификация ядра Pentium. Был добавлен новый блок целочисленных матричных вычислений MMX и увеличен до 32 Кбайт объём кэш-памяти первого уровня.

              Pentium II (май 1997 года) — модификация ядра Pentium Pro с целью сделать его более доступным. Интегрированный кэш и тег кэша были вынесены на отдельные микросхемы с пониженной в два раза частотой. Это упростило и удешевило процессор, хотя и сделало его более медленным, чем Pentium Pro.

              Первые процессоры Pentium II выпускались с кэш-памятью второго уровня емкостью 256 Кбайт , затем её объём был увеличен до 512 Кбайт.

              Новая конструкция процессора потребовала размещения элементов на печатной плате, что, в свою очередь, привело к изменению конструктива процессора. Данные ЦПУ выпускались в виде картриджей SECC, устанавливающихся в специальный разъём на плате (Slot 1).

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

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

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

              После провала последнего поколения процессоров 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.

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

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

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

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

              Процессоры AMD

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

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

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

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

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

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

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

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

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

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

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

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

              Более дешёвый (за счёт уменьшенного кэша второго уровня) вариант процессоров 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 модели имели заблокированный двухканальный режим работы памяти.

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

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

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

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

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

              Модификация Phenom. Небольшие архитектурные изменения, переход на более тонкий технологический процесс и добавление кэша L3 объёмом от 4 до 6 Мбайт позволили нарастить производительность этих процессоров на 10-20 % по сравнению с предшественниками. Выпускаются в конструктивах Socket AM2+ и Socket AM3. При этом первые могут работать только с памятью DDR2, а вторые — как с DDR2, так и с DDR3.

              Phenom II c урезанным кешем и количеством ядер.

              Мобильная версия Athlon 64 с пониженным энергопотреблением и расширенными средствами управления питанием. Выпускается в вариантах с одним и двумя ядрами.

              Интегрированное решение (SoC), включающее в себя функции северного моста чипсетов. Модели с наименованием SCxxxx объединяют в одном корпусе ядро процессора, контроллер памяти, графический адаптер и устройство ввода-вывода. Процессоры предназначены для построения тонких клиентов, пользовательских приставок и встроенных контроллеров. Вся серия обладает небольшой потребляемой мощностью и стоимостью.

              Первые модели выпускались фирмой Cyrix под названием MediaGX и имели ядро Cyrix 6×86. После поглощения Cyrix компанией National Semiconductor и перепродажи торговой марки компании VIA, процессор был переименован в Geode, разработка процессора была продолжена инженерами National Semiconductor. Впоследствии чип и все наработки были проданы компании AMD. Сейчас Geode выпускается фирмой AMD в трех вариантах. Geode LX и Geode GX основаны на старом ядре Cyrix 6×86. Geode NX имеет ядро Athlon XP. Развитие этого семейства прекратилось ещё в 2006 году, однако чипы будут продолжать выпускаться до тех пор, пока на них есть спрос.

              Процессоры Harris Semiconductor

              Harris Semiconductor производила клоны i8086/88 [3]  — Harris HS80C86/883 и HS80C88/883.

              Harris Semiconductor выпускала самые быстрые по частоте клоны процессора 80286 — максимальная частота HS80C286 составляла 25 МГц (вся линейка — 12, 16, 20 и 25 МГц). Ядро процессоров было точной копией i80286, как и у большинства других клонов.

              Процессоры Cyrix

              Процессоры, предназначенные для установки в гнездо 386SX. Обладали кэш-памятью первого уровня размером 1 Кбайт и набором команд 486 процессоров. Встроенного сопроцессора не имели. В дальнейшем также выпускались модели с удвоением частоты (Cx486SRx²). Предназначались в основном для дешевого апгрейда компьютеров с процессором 386SX.

              Процессоры, предназначенные для установки в гнездо 386DX. Обладали кэш-памятью первого уровня размером 4 Кбайт и набором команд 486 процессоров. Встроенного сопроцессора не имели. В дальнейшем также выпускались модели с удвоением частоты (Cx486DRx²). Предназначались в основном для дешевого апгрейда компьютеров с процессором 386DX.

              Аналог i486SX собственной разработки Cyrix. Слегка уступал по производительности аналогам от Intel и Amd.

              Аналог i486DX собственной разработки Cyrix. Слегка уступал по целочисленной производительности аналогам от Intel и Amd, однако превосходил их в вычислениях с плавающей точкой (сказалось то, что разработанные Cyrix математические сопроцессоры для 386 были одними из лучших).

              «Побочный продукт» разработки M1 — «M1 scalar», упрощенная его версия для гнезда 486. Был выпущен, чтобы как-то противостоять Intel в борьбе с Pentium. В нём использовались особенности архитектуры, присущие пятому поколению процессоров — конвейеризованный АЛУ, блок предсказания переходов, декодирование и исполнение инструкций за один такт. Общий для инструкций и данных кэш с обратной записью имел объём 16 Кбайт. Процессор оказался достаточно удачным, но особого распространения получить не успел. Выпускался с частотами 100 и 120 МГц.

              Клоны процессоров Cyrix выпускались также IBM, Texas Instruments, SGS Thompson.

              На базе ядер Cyrix производятся или производились процессоры VIA, AMD, National Semiconductor.

              Процессоры IDT

              Процессор разработан Centaur Technology — подразделением IDT. Являясь процессором под Socket 7, по архитектуре он был гораздо ближе к процессорам 80486. Один 4-стадийный целочисленный конвейер, операции сопроцессора не конвейеризовались. Также отсутствовали внеочередное исполнение, предсказание ветвлений и переименование регистров. При этом процессор имел блок исполнения инструкций MMX, хотя и вдвое более медленный, чем у Pentium MMX. За счёт этого ядро процессора было очень простым, небольшим по количеству транзисторов, габаритам и энергопотреблению. Процессоры выпускались с частотами 180, 200, 225 и 240 МГц и не требовали двойного питания.

              Улучшенный вариант предыдущего процессора. Сопроцессор стал конвейеризуемым, удвоена производительность блока MMX, появилась поддержка инструкций 3DNow!. Частоты — 200—250 МГц.

              Всё то же, но по более тонкой технологии. Как следствие — потребность в двойном питании (2,8 / 3,3 В).

              Планировался как улучшенная версия предыдущей модели. Основное улучшение — удвоенный размер кэш-памяти. Однако выпущен он так и не был. Centaur Technology в полном составе была продана VIA и на базе этой разработки был сделан VIA C3 с ядром Samuel.

              Процессоры OKI

              Клон 8086. Выпускался в корпусах типа DIP и QFP.

              Клон 8088. Выпускался в корпусах типа DIP и QFP.

              Процессоры Rise Technology

              Процессор для Socket 7 с поддержкой инструкций MMX. Отличался низким энергопотреблением и невысокой производительностью. Выпускался с частотами 150, 166, 190, 200, 250 МГц. Особого распространения не получил и ядро mP6 было продано компании SiS.

              Процессоры VIA

              Первый процессор, выпущенный под маркой VIA. Выпускался с разными ядрами от разных команд разработчиков. Разъём Socket 370.

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

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

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

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

              Пятый выпуск — с ядром Nehemiah (C5P). Это ядро наконец получило полноскоростной сопроцессор, поддержку инструкций SSE, а также поддержку шифрования AES и аппаратный генератор случайных чисел. При этом процессор потерял поддержку инструкций 3DNow!.

              Дальнейшее развитие 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 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 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.

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

              Процессоры NEC

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

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

              Процессоры NexGen

              В марте 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.

              Процессоры SiS

              Семейство SoC SiS550 базируется на лицензированном ядре Rise mP6 и выпускается с частотами от 166 до 266 МГц. При этом самые скоростные решения потребляют всего 1,8 Вт. У ядра три целочисленных 8-ступенчатых конвеера. Кэш L1 раздельный, 8+8 Кбайт. Встроенный сопроцессор конвееризован. В состав SiS550 кроме стандартного набора портов входят 128-битное UMA видеоядро AGP 4x, 5.1-канальный звук, поддержка 2-х DIMM (до 1 Гбайт ОЗУ), поддержка софт-модема и UDMA100 IDE контроллер.

              В SiS551 так же добавлен встроенный контроллер Smart Card и Memory Stick, а в SiS552 — декодер MPEG2, акселерация проигрывания DVD и VCD.

              Также клон SiS551 выпускается Jan Yin Chan Electronics Co., LTD (DM&P) под торговой маркой Vortex86 (чип маркируется как M6127D) и Xcore Corporation Ltd. под торговой маркой Xcore86.

              Процессоры Transmeta

              Строго говоря, Crusoe не является x86-процессором. Для исполнения x86-кода используется программная трансляция во внутренние 128-битные VLIW-инструкции. Это позволяет адаптировать процессор к любому набору команд и улучшает энергоэффективность, но производительность такого решения заведомо меньше, чем у процессоров с родной системой команд x86.

              Транслятор команд называется Code Morphing Software.

              Развитие идеи сочетания VLIW-процессора и Code Morphing Software. Основное отличие от предыдущего решения — VLIW-инструкции стали 256-битными.

              Процессоры UMC

              U5 — семейство микропроцессоров класса 80486. Имели несколько вариантов маркировки, как то: U5SB-40, U5S-Super33 и т. п. Основной изюминкой был значительно оптимизированный микрокод и полностью статический дизайн, в результате чего эти процессоры имели выдающуюся по тем временам производительность (некоторые недобросовестные продавцы даже продавали их как процессоры с удвоением частоты — U5S-33 как SX2-66 и U5S-40 как SX2-80). Модели U5S не имел математического сопроцессора, а варианты с сопроцессором должны были называться U5D, но так и не были выпущены.

              Intel добилась судебного запрета на продажу Green CPU в США, обосновав это тем, что UMC использовала в своих процессорах микрокод Intel, не имея лицензии. Существовали некоторые проблемы с ПО. Например, игра Doom отказывалась запускаться на этом процессоре без правки конфигурации, а Windows 95 время от времени зависала. Это было связано с тем, что программы находили в U5S отсутствующий сопроцессор и попытки обращения к нему заканчивались крахом.

              Процессоры, выпускавшиеся в СССР [5]

              Аналог 80286. Выпускался заводом Ангстрем.

              Процессоры МЦСТ

              Компанией ЗАО «МЦСТ» выпущен первый процессор «Эльбрус» и вычислительный комплекс на его базе — «Эльбрус-3М1», позволяющий работать в режиме двоичной совместимости с разными процессорами, в том числе с семейством x86. Однако достоверных данных, позволяющих оценить его производительность, как и независимых результатов тестирования, все еще нет.

              Производители

              Процессоры архитектуры x86 выпускались и выпускаются несколькими компаниями, в том числе:

              • Kruger Electronics
              • National Semiconductor
              • NexGen
              • OKI
              • Rise Technologies

              См. также

              Примечания

              1. http://oemstrade.com/search/80C186XL2
              2. http://www.fdd5-25.net/amdcpu.php
              3. http://www.opennet.ru/docs/FAQ/hardware/chiplist-part1.html
              4. http://datasheets.chipdb.org/SiS%20550/presentation.pdf
              5. http://www.inp.nsk.su/

              Ссылки

                в DMOZ (рус.) (коллекция статей) (рус.)
                (англ.) (англ.) (англ.) (англ.) (SSE) (англ.) (FPU, MMX) (англ.) (от AMD) (англ.)
                (рус.) (рус.)

              Wikimedia Foundation . 2010 .

              Полезное

              Смотреть что такое «X86» в других словарях:

              X86-64 — is a superset of the x86 instruction set architecture. x86 64 processors can run existing 32 bit or 16 bit x86 programs at full speed, but also support new programs written with a 64 bit address space and other additional capabilities.The x86 64… … Wikipedia

              X86-64 — Saltar a navegación, búsqueda x86 64 es una arquitectura basada en la extensión del conjunto de instrucciones x86 para manejar direcciones de 64 bits. Además de una simple extensión contempla mejoras adicionales como duplicar el número y el… … Wikipedia Español

              x86-64 — es una arquitectura basada en la extensión del conjunto de instrucciones x86 para manejar direcciones de 64 bits. Además de una simple extensión contempla mejoras adicionales como duplicar el número y el tamaño de los registros de uso general y… … Wikipedia Español

              X86-64 — (также x64/AMD64/Intel64/EM64T) 64 битная аппаратная платформа: архитектура микропроцессора и соответствующий набор инструкций и чипсет, разработанные компанией AMD. Это расширение архитектуры x86 с полной обратной совместимостью. Набор… … Википедия

              X86 — Un processeur Intel 80486 SX 25 x86 est la dénomination de la famille de microprocesseurs compatibles avec le jeu d instructions de l Intel 8086. Les différents constructeurs de microprocesseurs pour PC se doivent de maintenir une compatibilité… … Wikipédia en Français

              X86 32 — x86 Un processeur Intel 80486 SX 25 x86 est la dénomination de la famille de microprocesseurs compatibles avec le jeu d instructions de l Intel 8086. Les différents constructeurs de microprocesseurs pour PC se doivent de maintenir une… … Wikipédia en Français

              X86 — Saltar a navegación, búsqueda Intel Pentium 4 Northwood x86 es la denominación genérica dada a ciertos microprocesadores de la familia Intel, sus compatibles y la arquitectura básica a la que estos procesadores pertenecen, por la terminación de… … Wikipedia Español

              X86 — es la denominación genérica dada a ciertos procesadores de la familia Intel, sus compatibles y a la arquitectura básica de estos procesadores, por la terminación de sus nombres: 8086, 80286, 80386 y 80486. Los sucesores del 80486 pasarán a ser… … Enciclopedia Universal

              x86 — (80×86), Bezeichnung für diejenige Familie von Intel Prozessoren, die mit dem PC weite Verbreitung gefunden hat. Sie reicht vom Intel 80186 über 80286, 80386 und 80486 bis hin zu den Pentium Typen (I bis 4). Als x86 wird gelegentlich auch der… … Universal-Lexikon

              x86 — This article is about Intel microprocessor architecture in general. For the 32 bit generation of this architecture which is also called x86 , see IA 32. x86 Designer Intel, AMD Bits 16 bit, 32 bit, and/or 64 bit Introduced 1978 Design … Wikipedia

              x86 это 32 или 64 битная Windows? — История CPU

              Всем доброго времени суток дорогие посетители блога айтишнега… У меня довольно часто интересуются — x86 это 32 или 64 битная Windows? Поддаваясь логике — можно предположить что x86 явно больше чем x64, но на практике оказывается что x86 равно x32… но тогда почему так пишут и кому надо ударить по голове, чтобы такой путаницы не было?

              x86 это 32 или 64

              А теперь давайте я просто взорву вам мозг — x86 равно x32, и внимание, равна x64 — вы были к такому готовы? — думаю нет… теперь давайте разбираться что, как и куда! Чтобы ответить на этот не самый простой вопрос нам нужно вернуться на несколько десятилетий назад, именно оттуда и идет вся эта заварушка.

              По голове надо настучать авторам, которые пишут в требованиях к компьютеру x86 и x64 в связке. Писать такое — грубая ошибка, но этим грешат все… x86 — это архитектура процессора, которая отлично себя чувствует и на 64 битных процессорах и на 32 битных! Маркировка x86 пошла от названия первого процессора от компании Intel i8086 и более новых моделей. Потом первые цифры менялись и сокращенно их объединяли x86 на конце модели — этакая линейка процессоров. Конечно же это было очень давно и процессоры маркируются совершенно по другому, но x86 прочно засела в документации и частенько вводит людей в путаницу… которые особо то не интересовались архитектурой процессоров и не вникали в историю их создания

              x86 это 32 или 64 битная Windows?

              x86 — это не разрядность, а архитектура… но как показала практика — x86 приравняли к 32 битной операционной системе. Если пренебречь всеми правилами, то можно сказать да, x86 равна 32 битной системе в большинстве случаев.

              Правильный вариант обозначения выглядел бы примерно так для 32 разрядной операционной системы (OS_WINDOWS_x86_32bit) или так для 64 битной (OS_WINDOWS_x86_64bit), но у нас все поперепутали!

              Тут еще нюанс в том, что 32 битные процессоры уже очень и очень продолжительное время были единственными на рынке, и они были архитектуры x86… а когда вышли 64 разрядные — их стали обозначать x64, а для 32 биток оставили все как есть!

              x32 или x64 — Что лучше?

              В плане производительности конечно же 64 разрядная операционная система имеет явное преимущество, а вот 32 разрядная ОС очень ужата в ресурсах оперативной памяти. 32 битка не может адресовать более 4 гигабайт оперативной памяти, но по факту она видит не более 3,25 гигабайт из четырех! Однако некоторые приложения могут не запуститься на 64 битной WIndows — что и является сдерживающим фактором перехода но новую ОС.

              x86 это 32 или 64 битная Windows? — теперь вы можете сами ответить на этот вопрос… главное знать что и куда, а применить знания можно уже в конкретном случае — тут правильность вашего видения может оказаться ошибочным…

              Читать:
              Xlsx чем открыть mac os

Related Posts