Книги в продаже (аннотация + содержание + отрывок)

В. Юров
ASSEMBLER: УЧЕБНИК ДЛЯ ВУЗОВ. 2-Е ИЗД..
Цена: 175 р.

Источник: Издательский дом 'ПИТЕР'
Разделы: Разное (общие вопросы использования ПК, компьютерная архитектура, пользовательский интерфейс, компьютерные системы и информационные ситемы)
Подробнее: Информация от издателя (открывается в новом окне)
Заказ: Оформление покупки (открывается в новом окне)
      В учебнике рассматриваются вопросы программирования на языке ассемблера для компьютеров на базе микропроцессоров фирмы Intel. Основу книги составляет материал, являющийся частью курса, читаемого автором в высшем учебном заведении и посвященного вопросам системного программирования. По сравнению с первым изданием, учебник существенно переработан. Исправлены ошибки и неточности. Добавлено описание команд для Intel-совместимых процессоров (до Pentium IV включительно). Книга будет полезна студентам вузов, программистам и всем желающим изучить язык Assembler. Допущ
      ено Министерством образования Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки дипломированных специалистов «Информатика и вычислительная техника».
     
     
      Содержание
      Предисловие
      Благодарности
      От издательства
      Глава 1. Организация современного компьютера
      Машинный язык и язык ассемблера
      История процессоров Intel
      Итоги
      Глава 2. Программно-аппаратная архитектура IA-32 процессоров Intel
      Архитектура ЭВМ
      Архитектура IA-32
      Варианты микроархитектуры процессоров Intel
      Программная модель IA-32
      Итоги
      Глава 3. Система команд процессора IA-32
      Формат машинных команд IA-32
      Поле префиксов
      Код операции
      Байт режима адресации mod r/m
      Байт масштаба, индекса и базы
      Поля смещения и непосредственного операнда
      Функциональная классификация машинных команд
      Итоги
      Глава 4. Системы счисления
      Двоичная система счисления
      Шестнадцатеричная система счисления
      Десятичная система счисления
      Перевод чисел из одной системы счисления в другую
      Перевод в десятичную систему счисления
      Перевод в двоичную систему счисления
      Перевод в шестнадцатеричную систему счисления
      Перевод дробных чисел
      Перевод чисел со знаком
      Итоги
      Глава 5. Синтаксис ассемблера
      Синтаксис ассемблера
      Операнды
      Операнды-выражения
      Директивы сегментации
      Простые типы данных ассемблера
      Итоги
      Глава 6. Первая программа
      Жизненный цикл программы
      Пример простой программы
      Процесс разработки программы
      Трансляция программы
      Компоновка программы
      Отладка программы
      Особенности разработки программ в MASM
      Особенности разработки программ в Microsoft Visual Studio
      Выбор пакета ассемблера
      Итоги
      Глава 7. Команды обмена данными
      Пересылка данных
      Ввод из порта и вывод в порт
      Работа с адресами и указателями
      Преобразование данных
      Работа со стеком
      Итоги
      Глава 8. Арифметические команды
      Обзор
      Целые двоичные числа
      Десятичные числа
      Арифметические операции над целыми двоичными числами
      Сложение двоичных чисел без знака
      Сложение двоичных чисел со знаком
      Вычитание двоичных чисел без знака
      Вычитание двоичных чисел со знаком
      Вычитание и сложение операндов большой размерности
      Умножение двоичных чисел без знака
      Умножение двоичных чисел со знаком
      Деление двоичных чисел без знака
      Деление двоичных чисел со знаком
      Вспомогательные команды для арифметических вычислений
      Команды преобразования типов
      Другие полезные команды
      Арифметические операции над двоично?десятичными числами
      Неупакованные BCD-числа
      Упакованные BCD-числа
      Итоги
      Глава 9. Логические команды и команды сдвига
      Логические данные
      Логические команды
      Команды сдвига
      Линейный сдвиг
      Циклический сдвиг
      Дополнительные команды сдвига
      Примеры работы с битовыми строками
      Рассогласование битовых строк
      Вставка битовых строк
      Извлечение битовых строк
      Пересылка битов
      Итоги
      Глава 10. Команды передачи управления
      Безусловные переходы
      Команда безусловного перехода
      Процедуры
      Условные переходы
      Команда сравнения
      Команды условного перехода и флаги
      Команды условного перехода и регистр ECX/CX
      Установка байта по условию
      Организация циклов
      Ограничение области видимости для меток
      Итоги
      Глава 11. Программирование типовых управляющих структур
      Условный оператор if-else
      Оператор выбора switch
      Операторы цикла
      Оператор цикла с предусловием while
      Операторы continue и break
      Оператор цикла с постусловием do-while
      Оператор итерационного цикла for
      Особенности пакета MASM
      Условная конструкция .IF
      Циклическая конструкция .REPEAT
      Циклическая конструкция .WHILE
      Конструкции .BREAK и .CONTINUE
      Комплексный пример
      Итоги
      Глава 12. Цепочечные команды
      Пересылка цепочек
      Команда MOVS
      Пересылка байтов, слов и двойных слов
      Сравнение цепочек
      Команда CMPS
      Сравнение байтов, слов и двойных слов
      Сканирование цепочек
      Команда SCAS
      Сканирование строки байтов, слов, двойных слов
      Загрузка элемента цепочки в аккумулятор
      Команда LODS
      Загрузка в регистр AL/AX/EAX байтов, слов, двойных слов
      Перенос элемента из аккумулятора в цепочку
      Команда STOS
      Сохранение в цепочке байта, слова, двойного слова из регистра AL/AX/EAX
      Работа с портами ввода-вывода
      Ввод элемента цепочки из порта ввода-вывода
      Вывод элемента цепочки в порт ввода-вывода
      Итоги
      Глава 13. Сложные структуры данных
      Массивы
      Описание и инициализация массива в программе
      Доступ к элементам массива
      Двухмерные массивы
      Типовые операции с массивами
      Структуры
      Описание шаблона структуры
      Определение данных с типом структуры
      Методы работы со структурами
      Объединения
      Записи
      Описание записи
      Определение экземпляра записи
      Работа с записями
      Дополнительные возможности обработки
      Итоги
      Глава 14. Макросредства языка ассемблера
      Псевдооператоры EQU и =
      Макрокоманды
      Макродирективы
      Директивы WHILE и REPT
      Директива IRP
      Директива IRPC
      Директивы условной компиляции
      Директивы компиляции по условию
      Директивы генерации ошибок
      Константные выражения в условных директивах
      Дополнительные средства управления трансляцией
      Директивы управления файлом листинга
      Итоги
      Глава 15. Модульное программирование
      Структурное программирование
      Процедуры в языке ассемблера
      Передача аргументов через регистры
      Передача аргументов через общую область памяти
      Передача аргументов через стек
      Использование директив EXTRN и PUBLIC
      Возврат результата из процедуры
      Связь ассемблера с языками высокого уровня
      Встраиваемый ассемблерный код
      Внешний ассемблерный код
      Команды ENTER и LEAVE
      C и ассемблер
      Итоги
      Глава 16. Создание Windows приложений на ассемблере
      Программирование оконных Windows?приложений
      Каркасное Windows-приложение на C/C++
      Каркасное Windows-приложение на ассемблере
      Стартовый код
      Главная функция
      Обработка сообщений в оконной функции
      Средства TASM для разработки Windows приложений
      Углубленное программирование на ассемблере для Win32
      Ресурсы Windows-приложений на языке ассемблера
      Меню в Windows-приложениях
      Перерисовка изображения
      Окна диалога в Windows-приложениях
      Программирование консольных Windows приложений
      Минимальная программа консольного приложения
      Организация высокоуровневого консольного ввода-вывода
      Пример программы консольного ввода-вывода
      Итоги
      Глава 17. Архитектура и программирование сопроцессора
      Архитектура сопроцессора
      Регистр состояния SWR
      Регистр управления CWR
      Регистр тегов TWR
      Форматы данных
      Двоичные целые числа
      Упакованные целые десятичные числа
      Вещественные числа
      Специальные численные значения
      Система команд сопроцессора
      Команды передачи данных
      Команды загрузки констант
      Команды сравнения данных
      Арифметические команды
      Команды трансцендентных функций
      Команды управления сопроцессором
      Исключения сопроцессора и их обработка
      Недействительная операция
      Деление на ноль
      Денормализация операнда
      Переполнение и антипереполнение
      Неточный результат
      Немаскируемая обработка исключений
      Использование отладчика
      Общие рекомендации по программированию сопроцессора
      Итоги
      Вместо заключения…
      Приложение. Система команд процессоров IA-32
      Целочисленные команды
      Команды сопроцессора
      Команды блока MMX
      Команды блока XMM (SSE и SSE2)
      Список литературы
      Алфавитный указатель
     
     
     
     
      ОТРЫВОК
     
     
     
      Глава 1.
      Организация современного компьютера
      Внешний вид типичного современного компьютера
      Структурная схема компьютера
      Место ассемблера
      Историческая ретроспектива процессоров Intel
      Современному человеку трудно представить свою жизнь без электронно-вычислительных машин (ЭВМ). В настоящее время любому желающему по силам собрать у себя на рабочем столе полноценный вычислительный центр, степень функциональности которого может быть ограничена только фантазией и финансовыми возможностями его обладателя.
      В минимальной комплектации типовой персональный компьютер состоит из компонентов, показанных на рис. 1.1.
      Из рисунка видно, что компьютер образуют несколько физических устройств, каждое из которых подключено к одному блоку, называемому системным. Если рассуждать логически, то ясно, что он играет роль некоторого координирующего устройства. Попытка открыть корпус и заглянуть внутрь системного блока, скорее всего, не приведет к удовлетворению жажды познания — непонятная совокупность разнообразных плат, блоков, индикаторов и соединительных проводов вряд ли даст однозначные ответы на возможные вопросы. Внутри монитора вы тем более ничего интересного не найд
      ете, за исключением возможности удовлетворить другую жажду — жажду приключений. Если хорошо поискать отверткой подходящий источник, то, в отличие от системного блока, можно довольно быстро получить разряд в несколько киловольт.
      Рассмотрим структурную схему типичного современного персонального компьютера. Она не претендует на безусловную точность и имеет целью лишь показать назначение, взаимосвязь и типовой состав его элементов.
      На рис. 1.2 показана функциональная схема системного блока компьютера на базе процессоров семейства Intel. На схеме представлены: центральный процессор, оперативная память, внешние устройства. Все компоненты соединены между собой через системную шину. Системная шина имеет дополнительную шину — шину расширения. В компьютерах на базе Pentium в качестве такой шины используется шина PCI (Peripheral Component Interface), к которой подсоединяются внешние устройства, а также шины более ранних стандартов, например ISA (Industry Standard Architecture).
      На рисунке показана самая общая схема сердца компьютера — процессора. Основу процессора составляют блок микропрограммного управления, исполнительное устройство, обозначенное как «конвейер», и регистры. Остальные компоненты процессора выполняют вспомогательные функции. Более подробный вариант этой схемы мы рассмотрим в следующей главе.
      Машинный язык и язык ассемблера
      Чтобы лучше понять принципы работы компьютера, давайте сравним его с человеком. У компьютера есть органы восприятия информации из внешнего мира — это клавиатура, мышь, накопители на магнитных дисках (на схеме они расположены под системными шинами). У компьютера есть органы, «переваривающие» полученную информацию, — это центральный процессор и оперативная память. И наконец, у компьютера есть органы речи, выдающие результаты переработки. Это также некоторые из устройств ввода-вывода, расположенные в нижней части схемы. Современным компьютерам, конечно, да
      леко до человека. Их можно сравнить с существами, взаимодействующими с внешним миром на уровне большого, но ограниченного набора безусловных рефлексов. Этот набор рефлексов образует систему машинных команд. На каком бы высоком уровне вы ни общались с компьютером, в конечном итоге все сводится к скучной и однообразной последователь-
      Каждая машинная команда является своего рода раздражителем для возбуждения того или иного безусловного рефлекса. Реакция на этот раздражитель всегда однозначна и «зашита» в блоке микропрограммного управления в виде микропрограммы. Эта микропрограмма и реализует действия по выполнению машинной команды, но уже на уровне сигналов, подаваемых на те или иные логические схемы компьютера, тем самым управляя различными подсистемами компьютера. В этом состоит так называемый принцип микропрограммного управления. Продолжая аналогию с человеком, отметим: для
      того чтобы компьютер правильно «питался», придумано множество операционных систем, компиляторов сотен языков программирования и т. д. Но все они являются, по сути, лишь блюдом, на котором по определенным правилам доставляется пища (программы) желудку (компьютеру). Только (вот досада!) желудок компьютера любит диетическую, однообразную пищу — подавай ему информацию структурированную, в виде строго организованных последовательностей нулей и единиц, комбинации которых и составляют машинный язык.
      Таким образом, внешне являясь полиглотом, компьютер понимает только один язык — язык машинных команд. Конечно, для общения и работы с компьютером необязательно знать этот язык, но практически любой профессиональный программист рано или поздно сталкивается с необходимостью его изучения. К счастью, при этом человеку не нужно пытаться постичь значение различных комбинаций двоичных чисел, так как еще в 50-е гг. программисты стали использовать для программирования символический аналог машинного языка, который назвали языком ассемблера. Этот язык точно отр
      ажает все особенности машинного языка. Именно поэтому, в отличие от языков высокого уровня, язык ассемблера для каждого типа компьютеров свой. Более того, бессмысленны разговоры о том, что ассемблер как язык программирования устарел и знать его необязательно. АССЕМБЛЕР ОБЪЕКТИВЕН, и подобные разговоры в определенной ситуации могут выглядеть довольно глупо (особенно для особо «продвинутых» программистов).
      На первый взгляд ассемблер кажется очень сложным, но это не так. Для освоения этого языка совершенно не нужно выучивать наизусть все его команды и директивы. Более того, в большинстве случаев для практической работы достаточно понимания основных концепций и идей, лежащих в основе языка ассемблера. Детали реализации той или иной команды всегда можно найти в справочнике команд, гораздо важнее понимать, какое место данная команда занимает в системе команд, в идеале хорошо было бы знать и цели, которые преследовали разработчики процессора, вводя данную ком
      анду в систему машинных команд. Одна из целей данного учебника — сформировать у читателя именно такое понимание языка ассемблера.
      Из всего сказанного напрашивается вывод о том, что самую эффективную программу можно написать только на ассемблере (при условии, что ее пишет квалифицированный программист), так как этот язык является «родным» для компьютера. Здесь есть одно маленькое «но»: это очень трудоемкий и требующий большого внимания и практического опыта процесс. Поэтому реально на ассемблере пишут в основном программы, которые должны обеспечить эффективную работу с аппаратной частью компьютера. Иногда на ассемблере пишутся критичные ко времени выполнения или расходованию пам
      яти фрагменты программы. Впоследствии они оформляются в виде подпрограмм и совмещаются с кодом на языке высокого уровня.
      В данном учебнике будут рассмотрены два фундаментальных для понимания логики функционирования компьютера вопроса: первый — архитектурные особенности процессора и основы его взаимоотношений с другими компонентами компьютера; второй — место и роль языка ассемблера во всем этом процессе. За основу в нашем рассмотрении будут взяты процессоры фирмы Intel. Необходимо отметить, что эти процессоры не являются единственными процессорами на рынке аппаратного обеспечения (hardware), хотя и занимают довольно большой сегмент этого рынка. Исторически сложилось так, чт
      о архитектура процессоров Intel полностью или частично поддерживается процессорами других фирм. Поэтому процессорам фирмы Intel приходится делить свой сегмент рынка с процессорами фирм AMD, VIA, Transmeta. Так как в своем сегменте рынка (Intel-совместимых процессоров) процессоры фирмы Intel являются стандартом де-факто, то в данном учебнике речь будет идти исключительно о них, однако все приводимые примеры программ будут работать и на Intel-совместимых процессорах процессорах других фирм.
      История процессоров Intel
      Процессоры Intel в своем развитии прошли довольно сложный и насыщенный различными событиями путь. Корпорация Intel была основана в 1968 г. Первый процессор i4004 был разработан Intel в 1969 г. Он представлял собой 4-разрядное параллельное вычислительное устройство с 2300 транзисторами. Его возможности были сильно ограничены — он выполнял всего лишь четыре основные арифметические операции. Поначалу i4004 применялся в карманных калькуляторах. Позднее сфера его использования была расширена за счет различных систем управления, в частности, систем управления светофорами.
      В 1972 г. был выпущен 8-разрядный процессор i8008 с адресацией внешней оперативной памяти размером 16 Кбайт. Неожиданный успех этого процессора подтолкнул разработчиков Intel к дальнейшим изысканиям. В 1974 г. был выпущен i8080, который, оставаясь 8-разрядным, мог адресовать 64 Кбайт оперативной памяти. Для того времени это было революцией, этот процессор был выпущен в миллионах экземпляров. Историю современных Intel-совместимых процессоров принято вести именно от i8080.
      Очередной революционный процессор Intel — i8086 — появился в 1978 г. Его основные характеристики — наличие 16-разрядных регистров, 16-разрядной шины данных. Поддержка сегментной организации памяти наряду с 20-разрядной шиной адреса позволяла организовать адресацию памяти в пределах 1 Мбайт при доступности адресного пространства размером 256 Кбайт. С целью занятия более широкой ниши на рынке Intel вскоре представила более дешевый вариант этого процессора — i8088. При внутренней 16-разрядной архитектуре i8086 он имел 8?разрядную шину данных, вследствие чего был менее произ
      водителен. Важно отметить, что дешевизна достигалась в основном не за счет дешевизны самого процессора, а за счет удешевления конечного продукта — компьютера на его основе. Другой причиной появления и широкого распространения i8088 было наличие большого количества 8-разрядных внешних устройств. 8-разрядная шина данных i8088 позволяла упростить процесс сопряжения с этими устройствами. Отметим, что одним из внешних устройств, поддерживаемых процессорами i8086/88, был математический сопроцессор i8087, который мог устанавливаться в специальный разъем материнской п
      латы. Это позволяло более эффективно выполнять операции с плавающей точкой в соответствии со стандартом IEEE-754. Важно также подчеркнуть, что, начиная с i8086/88, все процессоры Intel совместимы «снизу вверх». Следствием этого является гарантированная возможность запуска на современном процессоре Pentium практически любой программы, написанной для i8086/88 (естественно, при соответствующей поддержке системного программного обеспечения).
      Согласно известному закону, программное обеспечение (software), подобно газу, стремится заполнить весь доступный ему объем. Поэтому поначалу кажущиеся фантастическими возможности новых процессоров со временем становятся узами, тем самым подталкивая конструкторов процессоров искать новые архитектурные и технологические решения для перевода программ в новые, более свободные рамки существования. Оперативная память объемом 1 Мбайт — это много. Долгая жизнь процессоров i8086/88 подтверждает это. Но с течением времени даже такой объем памяти превратился в огран
      ичение, в связи с чем стали применяться различные технологии для обхода этого ограничения. Многие, наверное, еще помнят загрузку MS-DOS с драйверами расширенной памяти EMS (Expanded Memory Specification), с помощью которых через окно размером 64 Кбайт можно было обращаться к внешней дополнительной памяти размером до 32 Мбайт. Но это не могло продолжаться вечно, и в 1982 г. Intel представляет процессор i80286. И хотя он не решил окончательно проблему ограничения пространства памяти, в нем были реализованы определенные архитектурные изменения, благодаря которым последующие модели пр
      оцессоров позволили разрядить ситуацию с доступом к памяти. К главным нововведениям следует отнести расширение шины адреса до 24 битов, что позволило адресовать уже 16 Мбайт оперативной памяти, а также появление еще одного режима работы процессора — защищенного. В этом отношении данный процессор также можно считать революционным. До этого в процессорах Intel отсутствовала поддержка на процессорном уровне какой-либо защиты программ от взаимного влияния. Введение подобных средств в архитектуру процессоров Intel стимулировало производителей на разработку м
      ногозадачных операционных систем. Наиболее яркие примеры — Microsoft (OC Windows) и IBM (OS/2). Справедливости ради следует отметить, что доминирующей системой для i286 была MS-DOS, и данный процессор использовался как более быстрый вариант i8086/88. Для широкого распространения многозадачные системы должны были пройти определенный путь развития.
      Мощным стимулом к развитию многозадачных систем стали возможности, предоставляемые новым процессором i80386, выпущенным Intel в 1985 г. Это был первый 32-разрядный процессор, который положил начало семейству процессоров IA-32 (32-bit Intel Architecture). Главные отличительные особенности: 32-разрядные шины адреса и данных (адресация оперативной памяти — до 4 Гбайт); увеличенная до 32 битов разрядность внутренних регистров процессора; введение третьего режима работы процессора (режима виртуального процессора 8086); поддержка страничной адресации памяти, благодаря которой стало
      возможном за счет дисковой памяти виртуализировать доступ к оперативной памяти и теоретически расширить ее рамки вплоть до 4 Гбайт. Аналогично ситуации с i8086 и i8088, одновременно был выпущен более дешевый вариант процессора i80386 (i80386-DX) с 16-разрядной шиной данных — i80386-SX. При необходимости на материнскую плату можно было установить и математический сопроцессор i80387. Процессор i80386 первым из семейства процессоров Intel стал поддерживать возможность параллельного функционирования своих устройств: устройства шинного интерфейса (bus interface unit), блока предварительн
      ой выборки (code prefetch unit), блока декодирования команд (instruction decode unit), исполнительного блока (execution unit), блока сегментации (segment unit), блока страничной адресации (paging unit). Концепция параллельного функционирования устройств позже, а именно в i80486, стала основой другой концепции — конвейеризации вычислений.
      Процессор i80486 появился в 1989 г. Основные его характеристики — наличие встроенного математического сопроцессора, поддержка многопроцессорного режима работы и работы с двумя видами кэш-памяти — внутренней размером 8 Кбайт (1-го уровня L1) и внешней кэш-памятью (2-го уровня L2). Важные изменения в архитектуре процессора i80486 коснулись концепции параллельных вычислений. Они стали воплощением идей, лежащих в основе RISC-технологии разработки процессоров. Согласно им, машинные команды со сложным алгоритмом работы (Complete-Instuction-Set Computing, CISC) на микропрограммном уровне р
      еализовывались на основе более простых команд из ограниченного набора (Reduced Instruction Set Computer, RISC). Для выполнения CISC-команд требуется несколько тактов работы процессора, иногда несколько десятков. RISC-команды должны выполняться за один такт. Такое изменение внутреннего представления внешних команд, наряду с изменением последовательности их выполнения и режимов декодирования, позволило реализовать реальную конвейеризацию вычислений. В результате выполнение CISC-команды происходило за один такт процессора. Конвейер процессора i80486 состоял из 5 ступеней. Нач
      иная с процессора i80486 процессоры Intel поддерживают различные концепции энергосбережения. Интересно, что совершенствование процессора i80486 шло в ходе его промышленного производства. Вследствие этого по своим возможностям следующие по времени выпуска процессоры i80486 в большей или меньшей степени отличались от предыдущих.
      Ну и, наконец, ЭПОХА PENTIUM. Знаменитый своей ошибкой блока с плавающей точкой первый Pentium — Pentium-60 — был представлен в начале 1993 г. Благодаря суперскалярной архитектуре (с двумя конвейерами, известными как u и v) он мог выполнять две машинные инструкции за один такт. К внутреннему кэшу команд добавлен внутренний 8-килобайтный кэш данных. Реализована технология предсказания переходов (branch prediction). Для увеличения пропускной способности при обработке данных процессор Pentium поддерживает внутренние пути шириной 128 и 256 битов, внешняя шина данных увеличена до 64 битов.
      Добавлены средства для построения многопроцессорных систем, в частности расширенный программируемый контроллер прерываний (Advanced Programmable Interrupt Controller, APIC), дополнительные выводы и специальный режим дуальной обработки (dual processing), ориентированный на построение двухпроцессорных систем. Начиная с модели процессоров Pentium с тактовой частотой 133 МГц (1997 г.) в них был введен блок MMX-команд (MMX означает MultiMedia eXtensions). Реализованный на базе сопроцессора, данный блок поддерживал SIMD-технологию, которая предполагает обработку блока однородных данных одной машинной инст
      рукцией. Цель введения данного расширения — увеличение производительности приложений, обрабатывающих массивы однородных целочисленных данных. Примеры таких приложений — программы обработки изображений, звука, архивирования-разархивирования данных и др. Излишне говорить, что все эти нововведения резко подняли производительность процессора Pentium по сравнению с его предшественником — процессором i486 — и не оставили последнему особых альтернатив для существования.
      На сегодняшний день имеется три поколения, или семейства, процессоров Pentium — Pentium, P6 и Pentium IV с микроархитектурой NetBurst. К семейству Pentium относятся упоминавшиеся ранее процессоры Pentium и Pentium MMX. История семейства P6 началась в 1995 году с появлением процессора Pentium Pro. Несмотря на схожие названия, внутренние архитектуры процессоров двух семейств были совершенно разными. Не вдаваясь в новые схемотехнические решения, реализованные в процессоре Pentium Pro, отметим его основные архитектурные свойства. Процессор поддерживал работу трех конвейеров, то есть мог обрабатыв
      ать до трех команд за один такт. Для этого использовались особые технологии обработки потока команд, которые подробнее будут рассмотрены в следующей главе. Процессор Pentium Pro использовал новую технологию работы с кэш-памятью. Наряду с уже обычным внутренним кэшем первого уровня размером 8 Кбайт в одном корпусе (но не на одной микросхеме) с процессором располагалась кэш-память второго уровня размером 256 Кбайт, для связи с которой имелась специальная 64-разрядная шина, работающая на частоте процессора. Шина данных процессора Pentium Pro имела разрядность 36 бита, ч
      то позволяло при определенных условиях организовать адресацию памяти до 64 Гбайт.
      Процессор Pentium II, появившийся на свет в 1997 г., добавил к архитектуре процессора Pentium Pro поддержку MMX-команд. Кроме того, были увеличены размеры кэш-памяти всех уровней — кэш-память команд и данных первого уровня выросла до 16 Кбайт каждая, кэш-память второго уровня могла иметь величину 256, 512 Кбайт или 1 Гбайт. Кэш-память второго уровня могла работать на половине частоты работы процессора. Также процессор поддерживал множество технологий энергосбережения. Следующие две модели процессоров, выпущенные в 1998 г., — Celeron и Pentium II Xeon — были, соответственно, более «легкой
      » и более «тяжелой» модификациями процессора Pentium II. Celeron позиционировался как процессор для построения компьютерных систем массового использования. Pentium II Xeon предназначался для построения высокопроизводительных серверных систем.
      Последний процессор семейства P6 — Pentium III, — выпущен в 2000 г. Его основное отличие — поддержка дополнительного набора MMX-команд, называемых SSE-расширением (SSE — Streaming SIMD Extensions) основного набора команд процессора. Для этого в архитектуру процессора был введен специальный блок.
      На сегодняшний день последним 32-разрядным процессором является Pentium IV. Он позиционируется как процессор нового поколения с новым типом микроархитектуры, носящей название NetBurst. Подробнее основные архитектурные особенности процессора Pentium IV будут рассмотрены в следующей главе при обсуждении микроархитектуры NetBurst. Отметим лишь один важный в контексте нашего обсуждения момент — с появлением процессора Pentium IV система команд процессоров Intel пополнилась еще 144 новыми командами. В основном это команды для блока MMX с плавающей точкой, а также команды управлен
      ия кэшированием и памятью. Условное название этой группы команд — SSE2 (Streaming SIMD Extensions 2).
      Итоги
      Несмотря на значительные внешние различия структурно большинство современных компьютеров устроены примерно одинаково. В их состав обязательно входят центральный процессор, внешняя и оперативная память, устройства ввода-вывода и отображения информации.
      Работать компьютер заставляет некий «серый кардинал» — машинный язык. Пользователь может даже и не подозревать о его существовании. Общаться с компьютером пользователю помогают операционные системы, офисные пакеты, системы программирования и т. д. Современные технологии программирования позволяют создавать программы, не написав ни строчки кода. Но в «мозг» компьютера команды все же поступают на машинном языке.
      Машинный язык полностью отражает все архитектурные тонкости конкретного типа компьютеров. Следствием этого является его индивидуальность для каждого семейства ЭВМ. Чтобы эффективно использовать все возможности компьютера, применяют символический аналог машинного языка — язык ассемблера.
      Работать на компьютере можно и без знания ассемблера. Но элементом подготовки программиста-профессионала обязательно является изучение этого языка. Почему? Изучая ассемблер, человек обязательно попутно знакомится с архитектурой компьютера. А это, в свою очередь, позволяет ему в дальнейшем создавать более эффективные программы на других языках и объединять их при необходимости с программами на ассемблере.
      Процессоры Intel являются стандартом де-факто в своем сегменте рынка. За тридцать с лишним лет своего развития процессоры Intel из примитивных устройств, пригодных лишь для калькуляторов, превратились в сложные системы, содержащие более 7 000 000 транзисторов и поддерживающие работу высокопроизводительных приложений и многопроцессорных конфигураций.
     

Assembler: Учебник для вузов. 2-е изд.. / В. Юров - СПб: Питер, 2003. - 640 с.

Экономика и управление | Право/a> | Бухгалтерский учет и налоги |