Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам
Покупка
Новинка
Основная коллекция
Издательство:
СОЛОН-Пресс
Год издания: 2024
Кол-во страниц: 368
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-91359-321-4
Артикул: 849050.01.99
В пособии представлен систематизированный курс одной из основной дисциплин специализированной подготовки бакалавров по направлениям 09.03.04 «Программная инженерия» и 01.03.04 «Прикладная математика» с точки зрения прикладного программирования и парадигмы кроссплатформенности. Рассмотрены основы архитектуры вычислительных систем как системной дисциплины. Представлен обзор архитектуры популярных процессоров семейства х86, в том числе шестидесятичетырёхбитных, представление основных типов данных в памяти компьютера, основные команды набора х86 и синтаксис AT&T. Обозначена проблематика прикладного кроссплатформенного программирования, объединяющего язык высокого уровня и язык Ассемблера. Строгий стиль изложения сопровождается доступными для понимания пояснениями и многочисленными примерами, а также контрольными вопросами к каждой главе, необходимыми для глубокого усвоения материала. Книга адресована студентам технических специальностей, соискателям степени бакалавра по указанным направлениям, слушателям институтов повышения квалификации, может быть использована для самообразования. Приложение А содержит методические указания к лабораторным работам.
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 621: Общее машиностроение. Ядерная техника. Электротехника. Технология машиностроения в целом
ОКСО:
- ВО - Бакалавриат
- 01.03.04: Прикладная математика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Гагарина Л. Г., Кононова А. И. Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам Учебное пособие СОЛОН-Пресс Москва 2024
УДК 621.382, 004.43 (076) ББК 31.27-02, 32.97 Г 12 Гагарина Л. Г., Кононова А. И. Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам. Учебное пособие. — М.: СОЛОН-Пресс, 2024. — 368 с.: ил. ISBN 978-5-91359-321-4 В пособии представлен систематизированный курс одной из основной дисциплин специализированной подготовки бакалавров по направлениям 09.03.04 «Программная инженерия» и 01.03.04 «Прикладная математика» с точки зрения прикладного программирования и парадигмы кроссплатформенности. Рассмотрены основы архитектуры вычислительных систем как системной дисциплины. Представлен обзор архитектуры популярных процессоров семейства x86, в том числе шестидесятичетырёхбитных, представление основных типов данных в памяти компьютера, основные команды набора x86 и синтаксис AT&T. Обозначена проблематика прикладного кроссплатформенного программирования, объединяющего язык высокого уровня и язык Ассемблера. Строгий стиль изложения сопровождается доступными для понимания пояснениями и многочисленными примерами, а также контрольными вопросами к каждой главе, необходимыми для глубокого усвоения материала. Книга адресована студентам технических специальностей, соискателям степени бакалавра по указанным направлениям, слушателям институтов повышения квалификации, может быть использована для самообразования. Приложение А содержит методические указания к лабораторным работам. По вопросам приобретения обращаться: ООО «СОЛОН-Пресс» Тел: (495) 617-39-64, (495) 617-39-65 E-mail: kniga@solon-press.ru, www.solon-press.ru ISBN 978-5-91359-321-4 © «СОЛОН-Пресс», 2024 © Гагарина Л. Г., Кононова А. И., 2024
Введение Красота — это страшная сила И нет слов, чтобы это сказать. Красота — это страшная сила, Но мне больше не страшно, я хочу знать. Б. Б. Гребенщиков. Красота (это страшная сила) Программирование на языке Ассемблера в этой книге описано на примере наиболее известной и доступной для экспериментов архитектуры — линейки x86. Исторически сложилось так, что разработчик данной архитектуры — компания Intel — использует один синтаксис языка Ассемблера (он так и называется — синтаксис Intel), а большая часть операционных систем, происходя от больших Unix’ов, предпочитает другой, так называемый синтаксис AT&T. Синтаксис AT&T по умолчанию использует GNU Assembler (GAS) — неотъемлемая часть коллекции компиляторов GCC, используемая в процессе компиляции с различных языков высокого уровня, в частности, C, C++ и Фортран. GAS вместе с коллекцией GCC портирован более чем на 45 платформ, в том числе — на операционную систему Microsoft Windows для x86-совместимых процессоров (исторически этот порт носит название MinGW), так что распространённое мнение «AT&T— это только под Linux» в корне неверно. Напротив, использование GCC и AT&T позволяет сделать программу с ассемблерными вставками в код C++ столь же переносимой между операционными системами, как и чистый C++, а также облегчает переход на неинтеловские архитектуры. Существующая на сегодняшний день литература по Ассемблеру x86 на русском языке в основном описывает синтаксис Intel, при этом практически отсутствует русскоязычная литература по синтаксису AT&T. Данное пособие призвано заполнить этот пробел. В результате изучения курса «Архитектура вычислительных систем» студент будет: – знать и понимать особенности архитектуры и принципы построения вычислительных систем; – уметь применять язык низкого уровня Assembler, а также ассемблировать и отлаживать готовые программы на языке ассемблера IBM PC; – владеть разработкой процедур и ассемблерных модулей в программах на языках высокого уровня. Учебное пособие адресовано студентам бакалавриата по направлению подготовки 09.03.04 «Программная инженерия».
Особая благодарность группам «Аквариум» (Б. Б. Гребенщиков) и «Оргия праведников» (С. А. Калугин), а также писателям А. В. Жвалевскому и И. Е. Мытько за разрешение использовать цитаты из их произведений в эпиграфах. Вы делаете этот мир ещё прекраснее!
Глава 1. Понятие вычислительной системы (ВС) Это требует, чтобы о нём написать. И напишу. В. В. Маяковский. Я сам Вычислительная система описывается как компонентами этой системы, так и языком программирования, предназначенным для взаимодействия с вычислительной машиной. В данной главе обе точки зрения рассматриваются на примере семейства x86, а также в разрезе истории развития вычислительной техники. 1.1. Терминология — ...Дамы и господа! Вашему вниманию предлагается магический компьютер, сокращённо «магокомпьютер». Это новое слово в технологиях. Сен напряг память, но был вынужден согласиться, что слово «магокомпьютер» — действительно новое. А. В. Жвалевский, И. Е. Мытько. Девять подвигов Сена Аесли. Подвиги 5-9 Перед тем, как рассматривать архитектуру вычислительных систем, приведём определения из основных стандартов и справочной литературы. Архитектура системы в стандарте ANSI/IEEE Std 1471-2000 (IEEE Recommended Practice for Architectural Description of Software-Intensive Systems) определяется как фундаментальная организация системы, реализованная в её компонентах, их взаимоотношениях друг с другом и средой, а также в принципах, определяющих её конструкцию (проектирование, дизайн) и развитие [74]. Таким образом, архитектура вычислительной системы реализована в компонентах этой системы и их взаимоотношениях. Что же такое вычислительная система? Вычислительная система (ВС), согласно Воройскому [30], определяется как: 1. Совокупность ЭВМ и средств программного обеспечения, предназначенная для выполнения вычислительных процессов. 2. Любая автоматизированная система, основанная на использовании ЭВМ. Термин «автоматизированная система» (АС), в свою очередь, словарь Воройского также определяет двумя способами: 1. Совокупность управляемого объекта и автоматических управляющих устройств, в которых часть функций управления выполняет человек-оператор. 2. Комплекс технических, программных, др. средств и персонала, предназначенный для автоматизации различных процессов.
Глава 1. Понятие вычислительной системы (ВС) В отличие от автоматической системы не может функционировать без участия человека. Если же обратиться к комплексу стандартов на автоматизированные системы [32], получим третье определение: автоматизированная система — система, состоящая из персонала и комплекса средств автоматизации его деятельности, реализующая информационную технологию выполнения установленных функций. Таким образом, вычислительная система глобально может быть представлена как совокупность человека (оператора или программиста), технических средств (вычислительной машины, или компьютера) и связывающих их программных средств. Соответственно, архитектура вычислительной системы может быть описана двояко: – структурная декомпозиция рассматривает ВС с точки зрения её аппаратных составляющих и физических связей между ними и позволяет выделить её функциональные компоненты, в том числе компоненты, предназначенные для хранения и обработки программ, и компоненты, взаимодействующие с пользователем; – иерархическая декомпозиция рассматривает ВС с точки зрения её логическо-информационной структуры и описывает языки взаимодействия программиста с программными и техническими средствами системы. 1.2. Структурная декомпозиция вычислительной системы Кура дура процедура состоит из трёх частей: карбюратор вентилятор и коробка скоростей! Надпись на парте Структурная декомпозиция применяется к аппаратной части ВС — вычислительной машине, то есть компьютеру. Если посмотреть на персональный компьютер, то он, как правило, состоит из системного блока и внешних устройств, среди которых обязательно присутствуют устройства ввода-вывода, предназначенные для взаимодействия с пользователем — экран, клавиатура, мышь и т. д. Внутри системного блока находятся внутренние устройства, из которых основными являются: – системная, или материнская плата; – центральный процессор;
1.2. Структурная декомпозиция вычислительной системы 7 – оперативная память (оперативное запоминающее устройство — ОЗУ); – внешняя, или долговременная память (жёсткие диски, SSD и т. д.); – видеокарта; – звуковая карта и т. д. Внутренние устройства защищены корпусом системного блока и получают постоянный ток через блок питания. Все компоненты компьютера связывает воедино системная плата (рис. 1.1). Важную роль играют входящие в её состав два мощных контроллера-концентратора — северный мост и южный мост, обеспечивающие согласование и передачу информационных потоков между различными компонентами системного блока и внешними устройствами. Северный мост определяет частоту системной шины, тем самым — вид и объём ОЗУ, тип шины видеоадаптера (обычно это PCI Express или AGP), осуществляет обмен между центральным процессором и скоростными устройствами, это: – оперативная память (ОЗУ); – видеокарта; – южный мост. Южный мост осуществляет обмен с устройствами по низкоскоростным интерфейсам, это: – часы; – энергозависимая память (ПЗУ); – контроллер SATA; – контроллер IDE; – контроллер прерываний; – контроллер USB; – контроллер прямого доступа. Внутренняя шина, связывающая северный мост и южный мост, обеспечивает непрерывность потоков информации. Взаимосвязь различных элементов системной платы и устройств обеспечивают различные системные шины (магистрали). Иногда системной шиной называют только шину, связывающую процессор и северный мост. Совокупность проводов системной магистрали можно разбить на четыре группы (рис. 1.2): – шина питания (так как по этой шине не передаётся никакой информации, её часто опускают на схемах); – шина управления, используемая для организации обмена самой магистрали; – шина данных; – шина адреса. Шины питания и управления связывают все устройства, в том числе тактовый генератор, предназначенный для синхронизации работы различных устройств системной платы. Тактовый генератор задаёт частоту работы процессора как самого
Глава 1. Понятие вычислительной системы (ВС) ЦПУ Тактовый генератор Фронтальная шина Чипсет Слот графического контроллера Слоты памяти Шина памяти Шина графического контроллера Северный мост (контроллерконцентратор памяти) Внутренняя шина Слоты PCI Express Южный мост (контроллерконцентратор ввода-вывода) Шина PCI Express SATA USB Ethernet Аудио Разъёмы на системной плате Шина LPC Мультиконтроллер ПЗУ (BIOS) Клавиатура Мышь Рис. 1.1. Схема системной платы быстрого устройства; частоты более медленных устройств являются делителями частоты процессора. Кроме оперативной памяти в ВС имеется постоянное запоминающее устройство (ПЗУ) — энергонезависимая память, в которой записана неизменяемая информация, она сохраняется после отключения питания. Там хранится микропрограмма управления вычислительной машиной. Она обязательно включает программы начальной загрузки и самотестирования. В постоянном запоминающем устройстве персонального компьютера записывается BIOS (Basic Input/Output System — базовая система ввода/вывода), вклю
1.2. Структурная декомпозиция вычислительной системы 9 Тактовый генератор Постоянное запоминающее устройство шина питания шина управления шина данных шина адреса Оперативная память Центральный процессор – АЛУ; – УУ; – регистры ЦПУ. Устройства ввода-вывода Долговременная память Принтер Клавиатура Монитор Рис. 1.2. Структура системной шины чающая, кроме загрузчика, также настройки и функции ввода/вывода с помощью программных прерываний. Ввод-вывод при помощи BIOS доступен только в реальном режиме работы компьютера. Современные операционные системы сразу после загрузки переводят компьютер в защищённый режим и не используют BIOS. Сама операционная система, как и загружаемые ею программы, располагается в оперативной (энергозависимой) памяти. Центральный процессор (центральное процессорное устройство, ЦПУ) является «мозгом» ВС. Он исполняет код программ. ЦПУ часто называют просто процессором, иногда — микропроцессором (МП). Исторически микропроцессор — это процессор, выполненный на одной микросхеме; сейчас другие варианты исполнения нерентабельны и эти два термина стали синонимами. Ранее для специализированных процессоров, расширяющих функциональность ЦПУ, использовался термин «сопроцессор», но в настоящее время сопроцессоры либо вошли в состав ЦПУ (в частности, математический сопроцессор x87 входит в ядро современных ЦПУ семейства x86), либо получили иные названия (так, графический сопроцессор обычно называется видеокартой или графическим ускорителем). Центральный процессор включает: – арифметико-логическое устройство (АЛУ), выполняющее обработку данных;
Глава 1. Понятие вычислительной системы (ВС) – управляющее устройство (УУ), декодирующее поступающие в процессор команды и формирующее на их основе сигналы для АЛУ; – регистры — сверхбыструю память особой структуры и малого объёма, предназначенную для временного хранения данных. Часть регистров может быть использована программистом по своему усмотрению (регистры общего назначения), часть используется для специальных целей. Также современные процессоры содержат кеш-память (сверхоперативную память), предназначенную для прозрачного временного хранения фрагментов оперативной памяти. Время обращения к кеш-памяти больше, чем к регистрам, но меньше, чем к ОЗУ. 1.2.1. Единицы измерения Нам в школе выдали линейку, Чтобы мерить объём головы. Б. Б. Гребенщиков. Растаманы из глубинки Базовой единицей измерения информации в современных ЭВМ является бит — двоичный разряд. В соответствии с характеристиками магистрали и регистров вводятся дополнительные платформозависимые единицы измерения: – машинное слово — разрядность регистров процессора и/или шины данных; – байт — минимальный независимо адресуемый набор данных. Понятие машинного слова возникло раньше понятия байта. Вначале минимально адресуемый блок памяти (байт) и блок, загружаемый или обрабатываемый за один раз (слово) всегда совпадали. В настоящее время машинное слово может быть как равно, так и кратно байту. В настоящее время байт обычно составляет восемь бит, но существуют DSPпроцессоры, для которых байт состоит из шестнадцати или двенадцати бит. На начальных этапах развития вычислительной техники размер байта вообще не был стандартизирован. Впервые термин «байт» был употреблён для совокупности шести битов. Если необходимо описать именно восемь двоичных разрядов, используется термин октет. В частности, эта единица измерения используется при описании сетевых протоколов. В семействе процессоров x86 используется восьмибитный байт. Длина машинного слова менялась от шестнадцати бит у первых моделей до шестидесяти четырёх у современных. При этом для совместимости документации термин «слово» остался за шестнадцатью битами. Тридцать два бита называют двойным словом, шестьдесят четыре — четверным и так далее. Далее по тексту везде подразумевается, что байт состоит из восьми бит.