Понятие программной модели x86
Министерство образования Республики Беларусь
Учреждение образования
«Минский
государственный высший радиотехнический
колледж»
Кафедра
информатики
Реферат по дисциплине «Системное программирование»
на тему:
«ПОНЯТИЕ
ПРОГРАММНОЙ МОДЕЛИ Х86»
Выполнил
Проверил
2011
Содержание
Введение…………………………………………………………
1.Понятие программной
модели…………………………………………………………….
2.Программная
модель х86……………………………………………………
2.1 Особенности моделей x86…………………………………………………………………
2.2 Историческое развитие линейки процессоров x86……………….……………………..
Заключение……………………………………………………
Список используемых
источников……………………………………………………
Приложение А Словарь
терминов…………………………………………………………
Введение
На
современном компьютерном рынке
наблюдается большое
Различными
являются способы, средства и используемые
ресурсы, с помощью которых компьютер
функционирует как единый механизм.
Чтобы собрать воедино все
понятия, характеризующие компьютер
с точки зрения его функциональных
программно-управляемых
Впервые понятие архитектура ЭВМ стало упоминаться с появлением машин 3-го поколения для их сравнительной оценки.
К
изучению языка ассемблера любого компьютера
имеет смысл приступать только после
выяснения того, какая часть компьютера
оставлена видимой и доступной
для программирования на этом языке.
Это так называемая программная
модель компьютера, частью которой
является программная модель микропроцессора.
- Понятие программной модели
Программная модель процессора – это базовая совокупность систем и характеристик процессора "видимая" программистам, работающим на нижних, "машинных" уровнях программирования, например, на языке ассемблере.Обычно к программной модели процессора относят:
- виды используемых структур памяти по принципам размещения и поиска информации,
- организация оперативной памяти,
- структура и типы команд,
- состав программно-доступных регистров,
- режимы адресации,
- структура и типы данных,
- наборы реализованных операций.
- Программная модель х86
x86 (англ.Intel 80x86)—архитектура процессора c одноименным набором команд, впервые реализованная в процессорах компании Intell.
Название
образованно от двух цифр, которыми
заканчивались названия процессоров
Intel ранних моделей—8086,80186,80286(i286)
Помимо Intel, архитектура также была реализована в процессорах других производителей: AMD, VIA, Transmeta,IDT и др. В настоящее время для этой архитектуры существует еще одно название — IA-32(Intel Architecture — 32).
x86
— это CISC-архитектура. Доступ к памяти
происходит по «словам». «Слова» размещаются
по принципу little-endian, известному также
как Intel-формат. Современные процессоры
включают в себя декодеры команд x86 для
преобразования их в упрощённый внутренний
формат с последующим их выполнением.
- Особенности моделей х86
Сегментная организация памяти
Реальный режим (real mode)
Классический режим адресации, использованный в первых моделях семейства. Использует сегментированную модель памяти, организованную следующим образом: адресное пространство в 1 MiB разбивается на 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-
Также
в реальном режиме отсутствует защита
памяти и разграничение прав доступа,
поэтому он уже практически вышел
из употребления. Является режимом
по умолчанию для всех моделей
процессоров семейства x86.
Защищенный режим(protected mode)
Более совершенный режим, впервые появившийся в процессоре 80286 и в дальнейшем многократно улучшавшийся. Имеет большое количество подрежимов, по которым можно проследить эволюцию семейства ЦП. В этом режиме поддерживается защита памяти, контексты задач и средства для организации виртуальной памяти. Аналогично реальному режиму, тут также используется сегментированная модель памяти, однако уже организованная по другому принципу: деление на параграфы отсутствует, а расположение сегментов описывается специальными структурами (таблицами дескрипторов), расположенными в оперативной памяти. Помимо базового адреса сегмента дескрипторы содержат размер сегмента (точнее, максимально доступное смещение) и различные атрибуты сегментов, использующиеся для защиты памяти и определения прав доступа к сегменту для различных программных модулей. Существует два типа дескрипторных таблиц: глобальная и локальная. Глобальная таблица описывает сегменты операционной системы и разделяемых структур данных. Локальная таблица может быть определена для каждой конкретной задачи (процесса). Сегменты памяти также выбираются все теми же сегментными регистрами; однако вместо номера параграфа сегментный регистр содержит специальную структуру (селектор), содержащую индекс дескриптора в таблице. Сам же дескриптор загружается из памяти во внутренний программно недоступный регистр (кеш), привязанный к каждому сегментному регистру и автоматически загружаемый в момент его модификации.
Каждый программный модуль, выполняемый в защищенном режиме определяется его сегментом кода, описываемым регистром CS, который и определяет его привилегии по доступу к данным и другим модулям. Существует 4 уровня привилегий 0,1,2 и 3, называемых кольцами защиты. Кольцо 0 наиболее привилегированное. Оно предназначено для модулей ядра операционной системы. Кольцо 3 — наименее привилегированное, и предназначено для пользовательских программ. Кольца 1 и 2 используются лишь некоторыми операционными системами. Сегменты данных также имеют атрибуты прав доступа, дающие доступ только коду, имеющему такие же или более высокие привилегии. Система колец позволяет гибко распределять доступ к коду и данным.
Процессор 80386, появившийся в 1985 году, в отличие от своих предшественников стал 32-битным. В нем появилась возможность адресовать до 4 GiB памяти, что позволило создавать сегменты памяти размером во все адресное пространство. Поэтому новые операционные системы использовали вырожденную модель организации памяти, когда все сегменты начинаются с нулевого адреса. Такая модель получила название плоской (flat memory model), и адрес задается одним целым 32-разрядным числом (хотя по сути он является смещением внутри вырожденного сегмента), а сами сегменты используются исключительно для организации защиты по кольцам привилегий.
Режим виртуального 8086 (virtual 8086 mode, V86)
Является подрежимом защищенного, но использует адресную модель, аналогичную реальному режиму. Применяется для запуска старых программ 8086 в среде современных операционных систем. В отличие от реального режима, где все программы имеют доступ ко всей памяти (кольцо 0), в режиме V86 программа выполняется в кольце 3 (наименее привилегированном), а особые ситуации и прерывания обрабатываются обычными процедурами защищенного режима.
Смешанные режимы
Сегментно MMU современных процессоров, несмотря на кардинальные различия двух его основных режимов, в обоих работает схожим образом. Это позволяет организовывать нестандартные режимы не описанные в официальной документации, но иногда очень полезные при написании программ. Поскольку известно, что внутренние кэши дескрипторов используются во всех режимах, и именно они используются для адресации памяти, при понимании логики их работы возможна загрузка в них нестандартных значений для текущего режима. В частности, можно создать дескрипторную таблицу в реальном режиме, установить флаг PE, загрузить сегментные регистры уже в защищенном режиме, а потом тут же сбросить флаг PE. До следующей перезагрузки сегментного регистра его кеш дескриптора будет содержать значение, соответствующее защищенному режиму, и если он был загружен должным образом, появится возможность адресации до 4 GiB памяти. Подобные нестандартные режимы получили общее название Unreal mode и активно используются
BIOSами персональных компьютеров. Следует отметить, что в процессоре 80286 также была возможность загрузки нестандартных значений дескрипторного кеша при помощи недокументированной команды LOADALL; что было особенно актуально, поскольку процессор 80286 не позволял сбрасывать флаг PE (из защищенного режима выходили с помощью сброса процессора, что сказывалось на производительности).
Страничная организация памяти
В
процессорах начиная с 80386 появилось
мощное MMU, позволяющее организовать отображение
страниц памяти что было еще одним поводом
перехода на плоскую модель с приходом
32-разрядных вычислений. Используя трансляцию
страниц операционная система может создать
собственное линейное адресное пространство
для каждого процесса; также каждая страница
имеет атрибуты прав доступа. Только в
отличие от сегментов, таких уровней существует
только 2: пользователь и супервизор. Но
для большинства современных операционных
систем этого вполне достаточно. Следует
отметить, что страничное MMU доступно только
в защищенном режиме.
- Историческое развитие линейки процессоров х86
Эволюция микропроцессоров исторически подразумевала увеличение разрядности целочисленных регистров процессора, т.е. максимального числа бит, образующих числа, над которыми можно было выполнять элементарные арифметические действия путём исполнения соответствующих команд. Также от этого параметра зависит объём линейно (без всяческих ухищрений, замедляющих работу) адресуемой оперативной памяти, к которой может обращаться процессор.
Самый первый микропроцессор Intel 4004 был 4-битным, а основатель семейства x86, т.е. первый процессор, использующий наиболее популярный до сих пор базовый набор команд, Intel 8086 был 16-битным. Эпоха 32-битных микропроцессоров началась с 1985 года с процессором Intel 386, с тех пор вплоть до Intel Pentium4 и AMD AthlonXP включительно система команд процессоров только дополнялась (MMX, SSE/SSE2/SSE3, 3Dnow!), но, несмотря на увеличение разрядности внешних шин и шин кэшей вплоть до 256-бит в некоторых случаях, число разрядов целочисленных регистров общего назначения оставалось равным 32.
Тем
временем, практически все
Однако в 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 процессоров ликвидировал три принципиальных недостатка этой архитектуры:
- Удвоение числа целочисленных регистров общего назначения - по этому параметру все потомки Intel 386 очень сильно отставали от современных RISC и VLIW процессоров. Использование компилятором этих регистров позволяет заметно улучшить эффективность реализации многих алгоритмов.
- Использование для операций с плавающей точкой не стека, а регистров, используемых в наборе команд SSE2. Очень заметно отражается на производительности, но также требует перекомпиляции программного обеспечения.
- DEP - Data Execution Protection (защита от передачи на выполнение содержимого сегмента данных при возникновении ошибки переполнения), также называется EVP (Enhanced Virus Protection), сильно затрудняет работу определённых классов вредоносных программ, в первую очередь - червей и троянцев. Не требует перекомпиляции ПО, поддерживается и 32-битными ОС Microsoft, начиная с WindowsXP SP2 и Wndows 2003 Server SP1
Что нужно для работы 64-битных x86 приложений на моём ПК?
1)64-битный
x86 процессор. На момент
Дополнение от января 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/
3)Драйверы.
Все драйверы, работающие в ядре
системы должны быть 64-битными,
обратной совместимости не
Будут ли работать обычные приложения на 64-битной ОС Windows?
1)32-битные приложения для Microsoft Windows - да, будут, при этом в некоторых ситуациях возможен прирост производительности по сравнению с выполнением на том же компьютере, но под 32-битной ОC(особенно если приложение использует очень большие объёмы оперативной памяти), но при этом 32-битные приложения не могут обращаться к 64-битным DLL и элементам Active Controls и наоборот. (На практике это выразилось в том, что в составе 64-х битных Windows Internet Explorer оставлен 32-битным для корректной работы со страницами, содержащими ActiveX элементы.)
2)
16-битные приложения для
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
Сравнительная таблица ограничений по максимальному объёму используемой оперативной памяти и числу процессоров для 32 и 64-битных версий операционных систем от Microsoft:
Таблица 1.- Ограничения по максимальному объему используемой ОП
|
Продолжение таблицы 1
|
Заключение
В
заключение стоит отметить, что программная
модель x86 является сыграла немалую роль
в развитии информационных технологий.
По прошествии всех изменений, происходящий
с данной моделью на протяжении всех лет
ее исторического развития, архитектура
предстает на новом качественном уровне,
предлагаю набор различных расширенных
возможностей.
Список
используемых источников
- www.wikipedia.org . – Википедия – свободная энциклопедия;
- www.theory-a.ru;
Приложение А
Словарь
терминов
1.Программная модель процессора – это базовая совокупность систем и характеристик процессора "видимая" программистам, работающим на нижних, "машинных" уровнях программирования, например, на языке ассемблере.
2. x86 (англ.Intel 80x86)—архитектура процессора c одноименным набором команд, впервые реализованная в процессорах компании Intell
3. CISC (англ сomplex instruction set computing, или англ.complex instruction set computer — компьютер с полным набором команд) — концепция проектирования процессоров, которая характеризуется следующим набором свойств:

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