Магда Юрий
Шрифт:
Мы будем рады узнать ваше мнение!
Все исходные тексты, приведенные в книге, вы можете найти по адресу http:// www. piter.com/download.
Подробную информацию о наших книгах вы найдете на веб-сайте издательства: http://www.piter.com.
Глава 1Базовая архитектура процессоров Intel x86
Успешное применение языка ассемблера невозможно без знания архитектуры процессоров Intel. Процессоры Intel в настоящее время доминируют на рынке, и многие архитектурные решения, на основе которых они построены, в той или иной степени используются и другими производителями процессоров. Поскольку все современные процессоры Intel базируются на архитектуре 8086, то обычно говорят об архитектуре Intel x86.
Вкратце рассмотрим эволюцию процессоров фирмы Intel. В 1979 г. фирма Intel первой выпустила 16-разрядный микропроцессор 8086, возможности которого были близки к возможностям процессоров мини-компьютеров 70-х годов. Микропроцессор 8086 стал базовым для целого семейства процессоров, которое называют семейством 80x86 или х86.
Чуть позже появился процессор 8088, архитектурно совместимый с процессором 8086 и имеющий 16-разрядные регистры, но оперирующий с внешними данными размером в 8 бит. В 1981 г. появились процессоры 80186/80188, наследующие базовую архитектуру процессоров 8086, но обладающие дополнительными возможностями. Это поколение включало дополнительные аппаратно-программные компоненты: контроллер прямого доступа к памяти, счетчик/таймер и контроллер прерываний. Кроме того, система команд этих процессоров была расширена. Несмотря на это, широкого распространения данные процессоры не получили.
Следующим этапом в разработке новых идей стал процессор 80286. В этой модели были использованы новые подходы, которые применялись в микрокомпьютерах и больших компьютерах. Процессор 80286 мог работать в двух режимах: в режиме реальных адресов (эмуляция процессора 8086) и в защищенном режиме виртуальных адресов (protected virtual address mode), который предоставлял новые возможности для программистов. В этом режиме можно было работать с расширенным адресным пространством памяти размером в 16 Мбайт, также поддерживались виртуальная память и мультизадачность.
Новый 32-разрядный процессор 80386 позволил успешно решить две основные задачи: он обеспечивал совместимость с предыдущими поколениями процессоров и одновременно повышал производительность выполнения программ. Совместимость с процессорами 8086 достигалась за счет включения в аппаратно-программную архитектуру режима реальной адресации (real address mode).
В этом режиме процессор 80386 мог выполнять 16-разрядный программный код процессора 80286 без каких-либо ограничений. В этом же режиме он мог запускать 32-разрядные программы, что повышало производительность системы. В 32-разрядном режиме были реализованы новые возможности процессора 80386: масштабированная индексная адресация памяти, ортогональное использование регистров общего назначения, новые команды и средства отладки. Адресное пространство памяти позволяло работать с 4 Гбайт данных.
По сравнению с предыдущими поколениями процессоров процессор 80386 обеспечивал большее быстродействие (3-4 миллиона операций в секунду) и возможность работы со страничной виртуальной памятью.
В 1989 г. фирма Intel выпустила процессор i486, содержащий более миллиона транзисторов в чипе. Являясь полностью программно совместимым с процессорами 386, он предоставлял новые возможности по обеспечению многозадачности систем и многоуровневого кэширования. Встроенная система тестирования позволяла проверять работоспособность аппаратной логики, кэш-памяти и аппаратного постраничного преобразования адресов памяти. Отладочные средства обеспечивали установку ловушек контрольных точек в исполняемом коде и во время доступа к данным. Процессор i486 имел встроенный аппаратный кэш для хранения 8 Кбайт команд и данных, что увеличивало быстродействие системы, одновременно уменьшая степень использования процессором внешней шины.
Следующим шагом в повышении производительности компьютерных систем стало появление процессоров Intel Pentium. По сравнению с процессором i486 был добавлен второй конвейер команд, что дало более высокую скорость выполнения команд. Оба конвейера команд, обозначаемые и и v, при совместной работе обеспечивают выполнение двух инструкций процессора за один машинный цикл.
Размер встроенного кэша первого уровня увеличен в два раза, при этом для команд и данных используется по 8 Кбайт памяти. В процессоре применяются более эффективные по сравнению с i486 алгоритмы прямой (write-through) и обратной записи (write-back).
В процессорах Intel Pentium впервые был использован так называемый алгоритм прогнозирования программных ветвлений и циклов (branch prediction). С помощью такого алгоритма обеспечивается более эффективное управление потоком команд программы. Адреса прогнозируемых переходов хранятся в аппаратно реализованной таблице ветвлений. Кроме этого, в Intel Pentium были внесены аппаратные расширения, позволяющие более эффективно работать в режиме виртуального процессора 8086 с адресным пространством в 4 Мбайт и размером страницы 4 Кбайт.
Основные регистры процессора остались 32-разрядными, но были добавлены внутренние шины передачи данных размерностью в 128 и 256 бит, что обеспечивает более быстрый обмен данными внутри процессора. Кроме того, внешняя шина данных в процессоре позволяет работать с 64-разрядными данными.
В процессоре Intel Pentium сочетаются высокая производительность, совместимость, интеграция данных и наращиваемость. Это достигается за счет того, что процессор обладает:
– суперскалярной архитектурой;