Надо Знать

добавить знаний



x86



План:


Введение

x86 или 80x86 является общим названием микропроцессорной архитектуры, которая была впервые реализована в процессорах компании Intel. Архитектура x86 сейчас доминирует на рынке настольных и мобильных компьютеров и малых серверов.

Название x86 происходит от последних цифр в названиях первых моделей ( 8086, 80186, 80286, 80386, 80486 и т.д.) рода процессоров.

Кроме Intel, эта архитектура также была реализована в процессорах других производителей: AMD, VIA, Transmeta, IDT и другие. На данный момент для этой архитектуры существует еще одно название - IA-32 (Intel Architecture - 32).


1. История

В таблице ниже приведены бренды процессоров, которые сгруппированы по поколениям и важны в истории x86.

Поколения Впервые представленный Известные бренды процессоров Линейная / физическая адреса пространства
1 1978 Intel 8086, Intel 8088 и клоны Первые x86 микропроцессоры
1982 Intel 80186, Intel 80188 и клоны, NEC V20/V30
2 Intel 80286 и клоны 16-bit (30-bit виртуальные) / 24-bit (сегментированные)
3 ( IA-32) 1985 Intel 80386 и клоны, AMD Am386 32-bit (46-bit виртуальные) / 32-bit
4 (FPU) 1989 Intel486 и клоны, AMD Am486/Am5x86
4/5 1997 IDT/Centaur-C6, Cyrix III-Samuel, VIA C3 -Samuel2 / VIA C3-Ezra (2001), VIA C7 (2005)
5 1993 Pentium, Pentium MMX, Cyrix 5x86, Rise mP6
5/6 1996 AMD K5, Nx586 (1994)
6 1995 Pentium Pro, Cyrix 6x86, Cyrix MII, Cyrix III-Joshua (2000) 36-bit физическая (PAE)
1997 AMD K6/-2/3, Pentium II / III
2003 Pentium M, Intel Core (2006)
7 1999 Athlon, Athlon XP
2000 Pentium 4
7/8 2000 Transmeta Crusoe, Efficeon
2004 Pentium 4 Prescott
2006 Intel Core 2
2008 VIA Nano
8 ( x86-64) 2003 Athlon 64, Opteron
8/9 2007 AMD Phenom 48-bit физическое для AMD Phenom
2008 Intel Core i3/i5/i7, AMD Phenom II
Intel Atom
2011 AMD Bobcat, Llano
9 (GPU) 2011 Intel Sandy Bridge / Ivy Bridge, AMD Bulldozer and Trinity
2013 Intel Larrabee
2014 Intel Haswell

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

x86 является CISC архитектурой с переменной длиной команд. Совместимость новых моделей процессоров с предыдущими была ключевой в развитии архитектуры x86. Архитектура дважды расширялась до большего размера машинного слова. Первые x86 процессоры были 16-битными. В 1985 Intel выпустила 32-битный процессор 80386, его архитектуру назвали x86-32 или IA-32 (Intel Architecture, 32 bits). В 2003, AMD выпустила Athlon 64, в котором реализовано расширение архитектуры до 64 бит, которое называют AMD64 (AMD), EM64T (Intel) или x64 ( Microsoft). Новая архитектура x64 заменила x86 и начиная с 2003 года стала новым индустриальным стандартом при производстве всех новых процессоров (за исключением процессоров типа ARM, что сейчас широко используются в мобильных телефонах, смартфонах и нетбуках).

Разрешено невыровненным по машинному слову доступ к памяти. Порядок байтов в слове - little-endian (наименее значимый байт имеет меньшую адрес). Современные x86 процессоры переводят набор команд x86 на RISC -подобные микрокоманды для эффективного их выполнения.


2.1. Реальный режим (real mode)

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

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

Несмотря на то, что сегментные регистры имеют специальные назначения, архитектура предполагает при обращении к данным изменить один сегмент на другой. Сегменты кода, стека и получателя строк всегда используют регистры CS, SS и ES и не могут быть изменены. Общий объем памяти, которая адресуется в реальном режиме составляет 1048576 байт (ОООО: ОООО-FOOO: FFFF (OOOOO-FFFFF)-логическая (физическое) адрес в шестнадцатеричной системе счисления). Сегментный подход позволяет разделить всю память на 16 сегментов, которые начинаются с адресов, кратных 64 Кбайт. Эти 16 сегментов называют страницами памяти. Обычно деление на страницы используется для совместного функционирования устройств, интерфейсы которых отражены на адресное пространство памяти, тогда каждый такой устройство использует одну страницу памяти, и адрес ячейки в адресном пространстве устройства будет совпадать со смещением в сегменте памяти компьютера . Также в реальном режиме отсутствует защита памяти и разграничение прав доступа, поэтому он уже практически вышел из употребления. Является режимом по умолчанию для всех моделей процессоров x86.


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

Более безупречный режим, который впервые появился в процессоре 80286 и в дальнейшем многократно улучшался. Имеет большее количество пидрежимив, по которым можно проследить эволюцию семейства ЦБ. В этом режиме поддерживается защиту памяти. Аналогичном реальном режима, здесь также используется сегментированная модель памяти, но уже организована по другому принципу: деление на параграфы отсутствует, а расположение сегментов описывается специальными структурами, которые расположены в оперативной памяти. Существует два типа дескрипторных таблиц: глобальная и локальная. Глобальная таблица описывает сегменты операционной системы и разделяет структуры данных. Локальная таблица может быть определена для каждого процесса. Дескриптор загружается из памяти в кэш, который является привязанным к кожногосегментного регистра и автоматически загружается в момент его модификации. Каждый программный модуль, который выполняется в защищенном режиме определяется его сегментом кода, описанным регистром CS, который и определяет его привилегии по доступу к данным и другим модулям. Процессор 80386, появившийся в 1985 году, в отличие от своих предшественников стал 32-битным. В нем появилась возможность адресоваться до 4 ГБ памяти, что позволило создавать сегменты памяти размером с весь адресное пространство. Поэтому новые операционные системы использовали вырожденного модель организации памяти, когда все сегменты начинаются с нуля. Такая модель получила название плоской, и адрес задается одним целым 32 - разрядным числом.


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

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


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

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


код для вставки
Данный текст может содержать ошибки.

скачать

© Надо Знать
написать нам