Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Процессорная архитектура x86 64

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

Эволюция микропроцессоров исторически подразумевала увеличение разрядности целочисленных регистров процессора, т.е. максимального числа бит, образующих числа, над которыми можно было выполнять элементарные арифметические действия путём исполнения соответствующих команд. Также от этого параметра зависит объём линейно (без всяческих ухищрений, замедляющих работу) адресуемой оперативной памяти, к которой может обращаться процессор.
Самый первый микропроцессор Intel 4004 был 4-битным, а основатель семейства x86, т.е. первый процессор, использующий наиболее популярный до сих пор базовый набор команд, Intel 8086 был 16-битным. Эпоха 32-битных микропроцессоров началась с 1985 года с процессором Intel 386, с тех пор вплоть до Intel Pentium4 и AMD AthlonXP включительно система команд процессоров только дополнялась (MMX, SSE/SSE2/SSE3, 3Dnow!), но, несмотря на увеличение разрядности внешних шин и шин кэшей вплоть до 256-бит в некоторых случаях, число разрядов целочисленных регистров общего назначения оставалось равным 32.
Тем временем, практически все высокопроизводительные процессоры более поздних, нежели x86, архитектур (преимущественно — варианты RISC) уже давно были 64-битными. (Первый такой процессор, MIPS R3000, появился в 1994 году и был известен в основном по рабочим станциям и серверам SGi). Более того, Intel продвигала уже второе поколение собственных изначально 64-битных процессоров с архитектурой IA64(базирующейся на технологии VLIW) с коммерческим названием Itanium, не обладавших программной x86-совместимостью.
Однако в 2002 году компания AMD представила развитие архитектуры x86 под названием AMD64, представляющее собой очередное расширение набора команд x86, но рассчитанное на работу с 64-битными целочисленными регистрами общего назначения. В «железе» этот набор команд впервые был реализован на процессорах семейства AMD K8: Opteron/Athlon64, полностью программно совместимых и с обычными x86 процессорами.
В течении последующих двух лет стало ясно, что полная реализация потенциала этих процессоров возможна только при работе в операционной системе, использующей соответствующий набор команд и 64-битную адресацию памяти, что, в первую очередь, позволяло без всяких ограничений работать с линейными массивами данных объемом более 4Гб.
В первую очередь на новые процессоры были портированы ОС семейства Linux вместе с достаточно представительным набором критичных к скорости процессора и требующих больших объёмов памяти приложений. Скорость и стабильность работы новых процессоров, а также принципиальные трудности с созданием настольного процессора с архитектурой Intel IA64 сподвигли компанию Microsoft заняться портированием своих ОС на эту платформу.
С этого момента стало ясно, что набор команд AMD64 станет новым индустриальным стандартом, и Intel не осталось ничего другого, как добавить в свои процессоры полный аналог набора команд AMD64, в реализации Intel названный EM64T (Extended Memory 64-bit Technology).

Чем принципиально 64-битные x86 процессоры отличаются от 32-битных?
Помимо возможности быстрой работы с целыми 64-битными числами и прямой адресации несравнимо больших объёмов как виртуальной, так и физической памяти, новый индустриальный стандарт для x86 процессоров ликвидировал три принципиальных недостатка этой архитектуры:
1)Удвоение числа целочисленных регистров общего назначения — по этому параметру все потомки Intel 386 очень сильно отставали от современных RISC и VLIW процессоров. Использование компилятором этих регистров позволяет заметно улучшить эффективность реализации многих алгоритмов.
2)Использование для операций с плавающей точкой не стека, а регистров, используемых в наборе команд SSE2. Очень заметно отражается на производительности, но также требует перекомпиляции программного обеспечения.
3)DEP — Data Execution Protection (защита от передачи на выполнение содержимого сегмента данных при возникновении ошибки переполнения), также называется EVP (Enhanced Virus Protection), сильно затрудняет работу определённых классов вредоносных программ, в первую очередь — червей и троянцев. Не требует перекомпиляции ПО, поддерживается и 32-битными ОС Microsoft, начиная с WindowsXP SP2 и Wndows 2003 Server SP1.

Что нужно для работы 64-битных x86 приложений на моём ПК?
1)64-битный x86 процессор. На момент написания FAQ это были процессоры AMD с поддержкой технологии AMD64 и Intel c EM64T, соответственно. Конкретно речь идёт о AMD Opteron/Athlon64/Turion 64(мобильный аналог Athlon64)/Sempron 64/Phenom64. У Intel поддержка EM64T присутствует у процессоров Celeron D 3X1/3X6, Pentium4 5X1/5X6/6XX, Pentium D, Pentium XE (не Pentium4 XE!), всех Xeon DP с 800МГц с шиной и XeonMP c 667МГц шиной, а также у большинства будущих процессоров Intel за исключением Pentium M и Сeleron M.

Дополнение от января 2008 года — на данный момент набор команд AMD64/EM64T окончательно стал стандартом для всех производимых мобильных, настольных и серверных x86 процессоров Intel и AMD.

Также надо убедиться, что процессор корректно опознаётся BIOS’ом материнской платы (это означает, что в него загружен необходимый микрокод, несоблюдение этого условия может привести к серьёзным проблемам в работе компьютера). В некоторых ситуациях может потребоваться обновление BIOS материнской платы. В первую очередь это касается процессоров Intel, поскольку не все LGA775-материнские платы изначально поддерживали такие процессоры.
2)Операционная система.
На момент написания FAQ доступны следующие ОС:
Microsoft Windows XP Professional x64 Edition, Microsoft Windows 2003 Server x64 Editions (Standart/Enterprise/Datacenter), Windows Server 2008, также на платформу AMD64 перенесены Sun Solaris и различные варианты Linux и FreeBSD,(детальное рассмотрение особенностей unix-подобных ОС выходит за рамки данного FAQ), Windows Vista также имеет x64 версии всех редакций кроме начальных.
3)Драйверы. Все драйверы, работающие в ядре системы должны быть 64-битными, обратной совместимости не предусмотрено. Для наиболее распространённых комплектующих (видеокарты nVidia GeForce и ATi Radeon, чипсеты и дисковые контроллеры Intel, VIA, nVidia) такие драйверы уже написаны.

Будут ли работать обычные приложения на 64-битной ОС Windows?
1)32-битные приложения для Microsoft Windows — да, будут, при этом в некоторых ситуациях возможен прирост производительности по сравнению с выполнением на том же компьютере, но под 32-битной ОC(особенно если приложение использует очень большие объёмы оперативной памяти), но при этом 32-битные приложения не могут обращаться к 64-битным DLL и элементам Active Controls и наоборот. (На практике это выразилось в том, что в составе 64-х битных Windows Internet Explorer оставлен 32-битным для корректной работы со страницами, содержащими ActiveX элементы.)
2) 16-битные приложения для Microsoft Windows — нет, за исключением нескольких программ-инсталляторов.
3) DOS-приложения — нет. (На момент написания FAQ стало известно о портировании на 64-битные версии Windows прекрасно зарекомендовавшего себя OpenSource эмулятора DosBox, что почти полностью снимает возможные проблемы)
4)Приложения Windows для IA64(Itanium) — нет.

Что всё это даст мне в данный момент и что это может дать в будущем?
Для обычных пользовательских повседневных программ перенос их в данный момент на 64-битную платформу не даёт какого-либо качественно скачка в производительности. Исключением, (да и то относительным) являются только некоторые новейшие высокотехнологичные игры.
Наибольшую пользу от перехода на 64-бита получают программы для работы с базами данных, причём чем больше объём используемых данных, тем более заметен выигрыш, программы для CAD/CAE (автоматизированное проектирование, моделирование и т.п.), а также программы для создания цифрового контента (обработка изображений, звука, видео), более подробную информацию уже, как правило, можно узнать на сайте фирмы-разработчика используемого вами ПО — как правило, из сроков готовности 64-битных версий секретов никто не делает.
Из программ, портирование которых на 64-бит Windows завершено или близится к завершению стоит упомянуть Microsoft SQL Server 2000 и 2005, Cakewalk Sonar 4.0, CryTek FarCry, Epic Unreal Tournament 2004, SiSoft Sandra 2005 Полный список ПО, которое находится на разных стадиях переноса под Windows x64 можно найти здесь.

Сравнительная таблица ограничений по максимальному объёму используемой оперативной памяти и числу процессоров для 32 и 64-битных версий операционных систем от Microsoft:

x86, x32, x64 — Что это всё значит?

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

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

Откуда есть пошло

Вам ещё не надоел этот подзаголовок? 🙂

Читать еще:  Виды архитектуры клиент сервер

В далёком 1978 году был выпущен первый в мире 16-разрядный микропроцессор, Intel 8086 . В последующие два десятилетия компанией Intel было создано множество моделей процессоров, которые объединяло две вещи:

1. Полная совместимость с 8086 на уровне команд 2. Число 86 в конце названия

Из этих двух признаков и было выведено наименование x86 . Это не название архитектуры процессора, нет. Это лишь указание на то, что процессор поддерживает все команды, которые поддерживал старичок 8086, умеет исполнять 16-разрядный код и может работать в так называемом реальном режиме доступа к памяти, а не только в защищённом.

Несложно понять, что под понятие x86 подходят не только реликтовые 16-разрядные экземпляры, но и более современные 32, 64, да хоть миллионо-разрядные. И это стало проблемой, ведь для использования преимуществ 32 и 64-битных процессоров необходимо писать программы именно под эти разрядности. Поначалу проблем не возникало из-за того, что на 32 битах работали уже другие операционные системы, такие как Windows, а 16 бит остались уделом старичка DOS и его ровесников. Поэтому и 16, и 32-битное ПО маркировали как написанное для x86.

Тем не менее, Intel соизволила дать архитектуре своих 32-битных процессоров официальное название: IA-32 . К тому времени на горизонте уже замаячила 64-битная архитектура, которую вполне логично было назвать IA-64 . Intel так и сделала. Как потом стало ясно, зря.

И куда пришло

Ещё один замыливший глаза подзаголовок.

Первые в мире серийно выпускаемые 64-битные процессоры продавались под маркой Intel Itanium. Архитектуре этой серии дали официальное название IA-64. Предназначались они только для серверов. Возможно, в дальнейшем предполагалось выпускать варианты Itanium’ов и для домашних ПК, но если такие планы и были, то сбыться не могли. А всё почему?

Программы, собранные специально для IA-64, работали на этих процессорах замечательно, все преимущества 64 бит были в наличии. Вот только мало их было, таких программ, до смешного мало. Зато для IA-32 их было уже очень много. Никто не станет закупать процессоры, на которых нужные программы не будут работать, а разработчики большинства нужных программ ленивы, и не станут переписывать свои творения под архитектуру, которой никто не пользуется. Получается замкнутый круг, разорвать который может лишь разработчик этого нового процессора, добавив возможность выполнять на нём не только новые, но и старые программы. Потому ведь и с 8086 совместимость сохраняется до сих пор.

Но с IA-64 вышла неудача. Она кардинально отличалась от IA-32 (настолько, что ARM и IA-32 на её фоне кажутся близнецами), и для совместимости со старым ПО использовала режим эмуляции. Очень, очень медленный режим. Достаточно медленный, чтобы даже самые толерантные к медленному софту компании думали трижды перед покупкой сервера на базе Itanium. Было и множество других проблем: слишком горячие (требуется мощное охлаждение), слишком прожорливые (в плане электроэнергии), и так далее. Серия провалилась с треском.

И вот мы подошли к ключевой точке этой истории, с которой и началась подлинная чехарда названий. В 2003 году давний конкурент Intel, компания AMD представила собственный вариант 64-битного процессора. В отличие от Itanium’ом, их архитектура не содержала чего-то кардинально нового, это была та же IA-32, но дополненная новыми командами, и работающая с 64-битными числами. Точно так же сама Intel когда-то расширила x86, превратив её в IA-32.

AMD, не долго думая, дала своей новой архитектуре название AMD64 . Ей сопутствовал большой коммерческий успех, ведь 32-битные программы выполнялись так же быстро, как на IA-32. Правда, памяти потребляли гораздо больше, но это было не так важно.

Intel в этот раз не стала изобретать велосипед, а просто взяла AMD64, и с некоторыми упрощениями реализовала в своих новых процессорах.

Но появилась проблема: как называть эту архитектуру в документации? IA-64 — занято провальными Itanium. AMD64 — для Intel несолидно. И понеслась фантазия.

Един во многих лицах

Сама Intel меняла названия новой архитектуры несколько раз. Разработчики ПО и журналисты вносили ещё большую путаницу — редко кто использовал последнее официальное название, часто встречались старые или даже взятые с потолка. По итогам прошедших лет мы имеем:

AA-64 AMD64 x86-64 x86_64 x64 IA-32e EM64T Intel64 Что-то мне подсказывает, что список неполный.

На сегодня официальным названием является Intel64 . Таким образом, главная причина смены названий всё ещё не решена: и AMD64, и Intel64 вводят пользователя в заблуждение. Он ведь не обязан знать, что эти две архитектуры совместимы в обе стороны. Вполне логично предположить, что программа для AMD64 будет работать лишь на процессорах AMD, а на Intel не будет. И наоборот. Но по факту это не так.

Кто есть кто

Вся статья задумана ради этого списка 🙂

x86 — совместимые с Intel 8086 , но обычно имеют в виду IA-32 IA-32, x86-32 — 32-битное подмножество x86 i386 — совместимый с Intel 80386 , (первым 32-битным для IBM PC), синоним IA-32 i486 — совместимый с Intel 80486 , подмножество IA-32 i586 — совместимый с Pentium , подмножество IA-32 i686 — совместимый с Pentium Pro , подмножество IA-32 AMD64, Intel64, x86-64, x86_64, x64, AA-64, IA-32e, EM64T — 64-битное подмножество x86 IA-64 — 64-битная архитектура линейки Intel Itanium, процессоры совместимы с программами IA-32, но не наоборот

На этом пока всё. Подписывайтесь на канал, ставьте лайки, делитесь в соцсетях — будет стимул писать дальше.

Есть вопрос, замечание, предложение, возмущение? Не держите в себе, оставьте комментарий!

Процессоры изнутри

Вопрос: Архитектура процессора — что это?
Ответ: Термин «архитектура процессора» в настоящее время не имеет однозначного толкования. С точки зрения программистов, под архитектурой процессора подразумевается его способность исполнять определенный набор машинных кодов. Большинство современных десктопных CPU относятся к семейству x86, или Intel-совместимых процессоров архитектуры IA32 (архитектура 32-битных процессоров Intel). Ее основа была заложена компанией Intel в процессоре i80386, однако в последующих поколениях процессоров она была дополнена и расширена как самой Intel (введены новые наборы команд MMX, SSE, SSE2 и SSE3), так и сторонними производителями (наборы команд EMMX, 3DNow! и Extended 3DNow!, разработанные компанией AMD). Однако разработчики компьютерного железа вкладывают в понятие «архитектура процессора» (иногда, чтобы окончательно не запутаться, используется термин «микроархитектура») несколько иной смысл. С их точки зрения, архитектура процессора отражает основные принципы внутренней организации конкретных семейств процессоров. Например, архитектура процессоров Intel Pentium обозначалась как Р5, процессоров Pentium II и Pentium III — Р6, а популярные в недавнем прошлом Pentium 4 относились к архитектуре NetBurst. После того, как компания Intel закрыла архитектуру Р5 для сторонних производителей, ее основной конкурент — компания AMD была вынуждена разработать собственную архитектуру — К7 для процессоров Athlon и Athlon XP, и К8 для Athlon 64.

Вопрос: Какие процессоры лучше, 64-битные или 32-битные? И почему?
Ответ: Достаточно удачное 64-битное расширение классической 32-битной архитектуры IA32 было предложено в 2002 году компанией AMD (первоначально называлось x86-64, сейчас — AMD64) в процессорах семейства К8. Спустя некоторое время компанией Intel было предложено собственное обозначение — EM64T (Extended Memory 64-bit Technology). Но, независимо от названия, суть новой архитектуры одна и та же: разрядность основных внутренних регистров 64-битных процессоров удвоилась (с 32 до 64 бит), а 32-битные команды x86-кода получили 64-битные аналоги. Кроме того, за счет расширения разрядности шины адресов объем адресуемой процессором памяти существенно увеличился.

И. все. Так что те, кто ожидает от 64-битных CPU сколь-нибудь существенного прироста производительности, будут разочарованы — их производительность в подавляющем большинстве современных приложений (которые в массе своей заточены под IA32 и вряд ли в обозримом будущем будут перекомпилированы под AMD64/EM64T) практически та же, что и у старых добрых 32-битных процессоров. Весь потенциал 64-битной архитектуры может раскрыться лишь в отдаленном будущем, когда в массовых количествах появятся (а может, и не появятся) приложения, оптимизированные под новую архитектуру. В любом случае, наиболее эффективен переход на 64-бита будет для программ, работающих с базами данных, программ класса CAD/CAE, а также программ для работы с цифровым контентом.

Читать еще:  Suse linux enterprise server for sap applications

Вопрос: Что такое процессорное ядро?
Ответ: В рамках одной и той же архитектуры различные процессоры могут достаточно сильно отличаться друг от друга. И различия эти воплощаются в разнообразных процессорных ядрах, обладающих определенным набором строго обусловленных характеристик. Чаще всего эти отличия воплощаются в различных частотах системной шины (FSB), размерах кэша второго уровня, поддержке тех или иных новых систем команд или технологических процессах, по которым изготавливаются процессоры. Нередко смена ядра в одном и том же семействе процессоров влечет за собой замену процессорного разъема, из чего вытекают вопросы дальнейшей совместимости материнских плат. Однако в процессе совершенствования ядра, производителям приходится вносить в него незначительные изменения, которые не могут претендовать на «имя собственное». Такие изменения называются ревизиями ядра и, чаще всего, обозначаются цифробуквенными комбинациями. Однако в новых ревизиях одного и того же ядра могут встречаться достаточно заметные нововведения. Так, компания Intel ввела поддержку 64-битной архитектуры EM64T в отдельные процессоры семейства Pentium 4 именно в процессе изменения ревизии.

Вопрос: В чем заключается преимущество двухъядерных процессоров перед одноядерными?
Ответ: Самым значимым событием 2005 года стало появление двухъядерных процессоров. К этому времени классические одноядерные CPU практически полностью исчерпали резервы роста производительности за счет повышения рабочей частоты. Камнем преткновения стало не только слишком высокое тепловыделение процессоров, работающих на высоких частотах, но и проблемы с их стабильностью. Так что экстенсивный путь развития процессоров на ближайшие годы был заказан, и их производителям волей-неволей пришлось осваивать новый, интенсивный путь повышения производительности продукции. Самой расторопной на рынке десктопных CPU, как всегда, оказалась Intel, первой анонсировавшая двухъядерные процессоры Intel Pentium D и Intel Extreme Edition. Впрочем, AMD с Athlon64 X2 отстала от конкурента буквально на считанные дни. Несомненным достоинством двухъядерников первого поколения, к которым относятся вышеназванные процессоры, является их полная совместимость с существующими системными платами (естественно, достаточно современными, на которых придется только обновить BIOS). Второе поколение двухъядерных процессоров, в частности, Intel Core 2 Duo, «требует» специально разработанных для них чипсетов и со старыми материнскими платами не работает.

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

Впрочем, если сегодня стоит вопрос выбора процессора для игрового ПК среднего или верхнего ценового диапазона, то, в любом случае, лучше предпочесть двухъядерный, а то и 4-ядерный процессор чуть более высокочастотному одноядерному аналогу, так как рынок неуклонно движется в сторону мультиядерных систем и оптимизированных параллельных вычислений. Такая тенденция будет господствующей в ближайшие годы, так что доля ПО, оптимизированного под несколько ядер, будет неуклонно возрастать, и очень скоро может наступить момент, когда мультиядерность станет насущной необходимостью.

Вопрос: Что такое кэш?
Ответ: Во всех современных процессорах имеется кэш (по-английски — cache) — массив сверхскоростной оперативной памяти, являющейся буфером между контроллером сравнительно медленной системной памяти и процессором. В этом буфере хранятся блоки данных, с которыми CPU работает в текущий момент, благодаря чему существенно уменьшается количество обращений процессора к чрезвычайно медленной (по сравнению со скоростью работы процессора) системной памяти. Тем самым заметно увеличивается общая производительность процессора.

При этом в современных процессорах кэш давно не является единым массивом памяти, как раньше, а разделен на несколько уровней. Наиболее быстрый, но относительно небольшой по объему кэш первого уровня (обозначаемый как L1), с которым работает ядро процессора, чаще всего делится на две половины — кэш инструкций и кэш данных. С кэшем L1 взаимодействует кэш второго уровня — L2, который, как правило, гораздо больше по объему и является смешанным, без разделения на кэш команд и кэш данных. Некоторые десктопные процессоры, по примеру серверных процессоров, также порой обзаводятся кэшем третьего уровня L3. Кэш L3 обычно еще больше по размеру, хотя и несколько медленнее, чем L2 (за счет того, что шина между L2 и L3 более узкая, чем шина между L1 и L2), однако его скорость, в любом случае, несоизмеримо выше, чем скорость системной памяти.

Кэш бывает двух типов: эксклюзивный и не эксклюзивный кэш. В первом случае информация в кэшах всех уровней четко разграничена — в каждом из них содержится исключительно оригинальная, тогда как в случае не эксклюзивного кэша информация может дублироваться на всех уровнях кэширования. Сегодня трудно сказать, какая из этих двух схем более правильная — и в той, и в другой имеются как минусы, так и плюсы. Эксклюзивная схема кэширования используется в процессорах AMD, тогда как не эксклюзивная — в процессорах Intel.

Вопрос: Что такое процессорная шина?
Ответ: Процессорная (иначе — системная) шина, которую чаще всего называют FSB (Front Side Bus), представляет собой совокупность сигнальных линий, объединенных по своему назначению (данные, адреса, управление), которые имеют определенные электрические характеристики и протоколы передачи информации. Таким образом, FSB выступает в качестве магистрального канала между процессором (или процессорами) и всеми остальными устройствами в компьютере: памятью, видеокартой, жестким диском и так далее. Непосредственно к системной шине подключен только CPU, остальные устройства подсоединяются к ней через специальные контроллеры, сосредоточенные в основном в северном мосте набора системной логики (чипсета) материнской платы. Хотя могут быть и исключения — так, в процессорах AMD семейства К8 контроллер памяти интегрирован непосредственно в процессор, обеспечивая, тем самым, гораздо более эффективный интерфейс память-CPU, чем решения от Intel, сохраняющие верность классическим канонам организации внешнего интерфейса процессора. Основные параметры FSB некоторых процессоров приведены в табл

Взгляд в будущее: процессоры AMD Hammer и технология x86-64


Введение

Некоторое время тому назад мы узнали о том, что AMD готовит к выпуску новое процессорное ядро, называемое тогда еще K8 (K7 — Athlon). Тогда вообще мало кто чего знал об этом ядре. Со временем стали выясняться подробности, одна из которых была просто-таки шокирующей — K8 оказался 64-битным процессором. Удивление это вызывало потому, что единственным на то время 64-битным процессором, о котором имелись сведения, был Intel Itanium — монстр, построенный из огромного количества транзисторов, обладающий не-x86 архитектурой и стоящий бешеных денег. Возник вопрос — неужели AMD готовит нечто подобное? Как выяснилось со временем — совсем нет. Процессор K8, позже названный Hammer, в общем-то, похож на существующий Athlon XP, но в то же время отличается от него весьма значительно. Всплыло и название архитектуры, которую применила AMD в Hammer — «x86-64», то есть 64-битная x86 (по аналогии с x86-32). В данной статье мы попробуем разобраться, что такое x86-64, Hammer и чем он отличается от Athlon, от Pentium 4 и Itanium.

Но для начала зададимся вопросом — а зачем вообще нужны 64-битные процессоры? Ответ прост — современные приложения порой стали ставить перед вычислительной техникой чрезвычайно ресурсоемкие задачи. В частности, оперативная память в 4 Гбайт уже перестает быть чем-то недостижимо огромным. Почему именно 4 Гбайта? Очень просто — 32-битный процессор и адресовать память может только 32 разрядами, то есть максимальный объем памяти в современных x86 системах составляет 2 32 = 4 297 967 296 байт = 4 Гбайта. Тут надо заметить, что Xeon’ы могут эмулировать 36-битную адресацию, то есть адресовать до 64 Гбайт, однако такие ухищрения не лучшим образом сказываются на производительности, к тому же максимальная память, которую может использовать один поток приложения составляет все те же 4 Гбайта. В частности для того, чтобы преодолеть это ограничение, люди и стали задумываться о построении 64-битных процессоров.

Читать еще:  Классическая архитектура ос

Основные принципы x86-64 архитектуры

x86-64 — 64-битная архитектура, разработанная AMD для своих процессоров семейства Hammer. В отличие от 64-битной архитектуры IA64, примененной в процессорах Intel Itanium, x86-64 базируется на существующей архитектуре x86-32. Следовательно, процессор, построенный на основе x86-64, может безо всяких проблем исполнять существующие 32-битные приложения, которых написано на текущий момент, как вы понимаете, просто немеряно (и в них, кстати, зачастую вложены очень большие деньги). Причем, эти приложения могут выполняться без каких бы то ни было потерь в производительности в отличие от того же Intel Itanium, где x86-32 систему команд приходится эмулировать. Таким образом, для того, чтобы начать эксплуатировать Hammer-системы, не придется ждать, когда производители программного обеспечения соблаговолят перекомпилировать свои продукты для новой платформы. Наоборот, новый процессор AMD имеет все преимущества своих предшественников, однако добавляет к ним некоторые дополнительные возможности, которые можно будет задействовать впоследствии.

Данная стратегия выбрана AMD не случайно — в отличие от Intel, который может чуть ли не силой навязывать переход на нечто новое (вспомним Rambus или многообразие Socket’ов, одновременно поддерживаемых этой компанией), AMD сохраняет совместимость со старыми продуктами (вспомним опять же, срок жизни Socket A). Примерно такой же подход применен AMD и при разработке своей 64-битной архитектуры.

Как же реализуется 64-битность в Hammer? Очень просто: в этом процессоре к имеющейся системе регистров будет добавлено несколько новых регистров, а существующие — расширены:

Как видите, привычные регистры общего назначения (GPR) дополнены еще 8 регистрами R8-R15, используемыми в 64-битном режиме (то есть для их задействования потребуется перекомпиляция программ), а существующие EAX, EBX и т.д. расширены с 32 до 64 бит. Также, 8 новых регистров добавлено в блок SSE, что обеспечит поддержку SSE2. Увеличение количества регистров призвано повысить производительность ресурсоемких приложений, например, в программах научных расчетов (кстати, это вообще сильное место процессоров AMD, начиная с K7).

Расширение существующих регистров показано на вот этом рисунке:

Как видите, расширение EAX до RAX — то же самое, что расширение AX до EAX — процесс, который мы имели возможность наблюдать 15 лет назад, когда был выпущен процессор i386. Как вы помните, i386 замечательно справлялся с 16-битными приложениями, написанными для i286 — предыдущего поколения микропроцессоров Intel. Примерно так же Hammer будет справляться с 32-битным кодом: просто в этом случае процессор будет работать, что называется «не в полную силу».

Для реализации одновременной работы как с 32-битным, так и с 64-битным кодом и регистрами x86-64 предполагает поддержку процессором 2-х режимов: Long Mode, «длинного» режима с двумя подрежимами — 64-битным и Compatibility mode (режим совместимости) и Legacy Mode (наследственного режима). Что они собой представляют, можно понять из таблицы:

Виды популярных архитектур процессоров

    Статьи, 16 июля 2018 в 16:30

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

С программной точки зрения архитектура процессора — это совместимость с определённым набором команд (Intel x86), их структуры (система адресации, набор регистров) и способа исполнения (счётчик команд).

Говоря простым языком, это способность программы, собранной для архитектуры x86, работать практически на любой x86-совместимой системе. При этом такая программа не будет работать, например, на ARM системе.

С аппаратной точки зрения архитектура процессора — это некий набор свойств и качеств, присущий целому семейству процессоров (Skylake – процессоры Intel Core 5 и 6 поколений).

Виды архитектур

В этой статье мы рассмотрим самые распространенные и актуальные архитектуры с программной точки зрения, кроме узкоспециализированных (графических, математических, тензорных).

CISC (англ. Complex Instruction Set Computer — «компьютер с полным набором команд») — тип процессорной архитектуры, в первую очередь, с нефиксированной длиной команд, а также с кодированием арифметических действий в одной команде и небольшим числом регистров, многие из которых выполняют строго определенную функцию.

Самый яркий пример CISC архитектуры — это x86 (он же IA-32) и x86_64 (он же AMD64).

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

RISC (англ. Reduced Instruction Set Computer — «компьютер с сокращённым набором команд») — архитектура процессора, в котором быстродействие увеличивается за счёт упрощения инструкций: их декодирование становится более простым, а время выполнения — меньшим. Первые RISC-процессоры не имели даже инструкций умножения и деления и не поддерживали работу с числами с плавающей запятой.

По сравнению с CISC эта архитектура имеет константную длину команды, а также меньшее количество схожих инструкций, позволяя уменьшить итоговую цену процессора и энергопотребление, что критично для мобильного сегмента. У RISC также большее количество регистров.

Примеры RISC-архитектур: PowerPC, серия архитектур ARM (ARM7, ARM9, ARM11, Cortex).

В общем случае RISC быстрее CISC. Даже если системе RISC приходится выполнять 4 или 5 команд вместо одной, которую выполняет CISC, RISC все равно выигрывает в скорости, так как RISC-команды выполняются в 10 раз быстрее.

Отсюда возникает закономерный вопрос: почему многие всё ещё используют CISC, когда есть RISC? Всё дело в совместимости. x86_64 всё ещё лидер в desktop-сегменте только по историческим причинам. Так как старые программы работают только на x86, то и новые desktop-системы должны быть x86(_64), чтобы все старые программы и игры могли работать на новой машине.

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

MISC (англ. Minimal Instruction Set Computer — «компьютер с минимальным набором команд»).

Ещё более простая архитектура, используемая в первую очередь для ещё большего уменьшения итоговой цены и энергопотребления процессора. Используется в IoT-сегменте и недорогих компьютерах, например, роутерах.

Для увеличения производительности во всех вышеперечисленных архитектурах может использоваться “спекулятивное исполнение команд”. Это выполнение команды до того, как станет известно, понадобится эта команда или нет.

VLIW (англ. Very Long Instruction Word — «очень длинная машинная команда») — архитектура процессоров с несколькими вычислительными устройствами. Характеризуется тем, что одна инструкция процессора содержит несколько операций, которые должны выполняться параллельно.

По сути является архитектурой CISC со своим аналогом спекулятивного исполнения команд, только сама спекуляция выполняется во время компиляции, а не во время работы программы, из-за чего уязвимости Meltdown и Spectre невозможны для этих процессоров. Компиляторы для процессоров этой архитектуры сильно привязаны к конкретным процессорам. Например, в следующем поколении максимальная длина «очень длинной команды» может из условных 256 бит стать 512 бит, и тут приходится выбирать между увеличением производительности путём компиляции под новый процессор и обратной совместимостью со старым процессором. Опять же, Open Sourсe позволяет простой перекомпиляцией получить программу под конкретный процессор.

Примеры архитектуры: Intel Itanium, Эльбрус-3.

Виртуальные архитектуры

Но раз нельзя запустить программу одной архитектуры на другой, то откуда берутся магические JAR-файлы, которые можно запустить на любой машине? Это пример виртуальной JVM-архитектуры, которая, по сути, эмулируется на целевой реальной машине. Поэтому достаточно JVM-машины для целевой архитектуры для запуска на ней любой Java-программы. Другим примером виртуальной архитектуры является .NET CIL.

Из минусов виртуальных архитектур можно выделить меньшую производительность по сравнению с реальными архитектурами. Этот минус нивелируется с помощью JIT- и AOT-компиляции. Однако большим плюсом будет кроссплатформенность.

Дальнейшим развитием этих архитектур стали гибридные архитектуры. Например современные x86_64 процессоры хотя и CISC-совместимы, но являются процессорами с RISC-ядром. В таких гибридных CISC-процессорах CISC-инструкции преобразовываются в набор внутренних RISC-команд. Какое дальнейшее развитие получат архитектуры процессора, покажет только время.

Ссылка на основную публикацию
Adblock
detector