Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
Гагарина Л. Г., Кононова А. И.
Архитектура
вычислительных систем
и Ассемблер
с приложением методических указаний
к лабораторным работам
Учебное пособие
СОЛОН-Пресс
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
Перед тем, как рассматривать архитектуру вычислительных систем, приведём определения из основных стандартов и справочной литературы.
Архитектура системы
Recommended Practice for Architectural Description of Software-Intensive Systems) определяется как фундаментальная организация системы, реализованная в её ком­понентах, их взаимоотношениях друг с другом и средой, а также в принципах, определяющих её конструкцию (проектирование, дизайн) и развитие [74].
Таким образом, архитектура вычислительной системы реализована в компонен­тах этой системы и их взаимоотношениях. Что же такое вычислительная система?
Вычислительная система
1.
Совокупность ЭВМ и средств программного обеспечения, предназначенная
для выполнения вычислительных процессов.
2. Любая автоматизированная система, основанная на использовании ЭВМ. Термин «автоматизированная система» (АС), в свою очередь, словарь Ворой-
ского также определяет двумя способами:
Совокупность управляемого объекта и автоматических управляющих устройств,
1. в которых часть функций управления выполняет человек-оператор. Комплекс технических, программных, др. средств и персонала, предназначен-
2. ный для автоматизации различных процессов.
в стандарте ANSI/IEEE Std 1471-2000 (IEEE
(ВС), согласно Воройскому [30], определяется как:
6 Глава 1. Понятие вычислительной системы (ВС)
В отличие от автоматической системы не может функционировать без участия человека. Если же обратиться к комплексу стандартов на автоматизированные систе-
мы [
32
], получим третье определение: автоматизированная система — система, состоящая из персонала и комплекса средств автоматизации его деятельности, реализующая информационную технологию выполнения установленных функций.
Таким образом, вычислительная система глобально может быть представ­лена как совокупность человека (оператора или программиста), технических средств (вычислительной машины, или компьютера) и связывающих их программ­ных средств.
Соответственно, архитектура вычислительной системы может быть описана двояко:
структурная декомпозиция
рассматривает ВС с точки зрения её аппарат­ных составляющих и физических связей между ними и позволяет выделить её функциональные компоненты, в том числе компоненты, предназначенные для хра­нения и обработки программ, и компоненты, взаимодействующие с пользователем;
иерархическая декомпозиция
рассматривает ВС с точки зрения её логиче­ско-информационной структуры и описывает языки взаимодействия программиста с программными и техническими средствами системы.
1.2. Структурная декомпозиция вычислительной системы
Кура дура процедура
карбюратор вентилятор
состоит из трёх частей:
и коробка скоростей!
Надпись на парте
Структурная декомпозиция применяется к аппаратной части ВС — вычисли-
тельной машине, то есть компьютеру.
Если посмотреть на персональный компьютер, то он, как правило, состоит из
и
стемного блока
внешних устройств,
устройства ввода-вывода,
предназначенные для взаимодействия с пользовате-
среди которых обязательно присутствуют
лем — экран, клавиатура, мышь и т. д.
Внутри системного блока находятся
внутренние устройства,
из которых ос-
новными являются:
– системная, или материнская плата; – центральный процессор;
си-
1.2. Структурная декомпозиция вычислительной системы 7
– оперативная память (оперативное запоминающее устройство — ОЗУ); – внешняя, или долговременная память (жёсткие диски, SSD и т. д.); – видеокарта;
– звуковая карта и т. д. Внутренние устройства защищены корпусом системного блока и получают посто­янный ток через блок питания.
Все компоненты компьютера связывает воедино системная плата (рис. 1.1). Важную роль играют входящие в её состав два мощных контроллера-концентра­тора — северный мост и южный мост, обеспечивающие согласование и передачу информационных потоков между различными компонентами системного блока и внешними устройствами.
Северный мост
определяет частоту системной шины, тем самым — вид и объ­ём ОЗУ, тип шины видеоадаптера (обычно это PCI Express или AGP), осуществляет обмен между центральным процессором и скоростными устройствами, это:
– оперативная память (ОЗУ); – видеокарта; – южный мост.
Южный мост
осуществляет обмен с устройствами по низкоскоростным ин-
терфейсам, это:
– часы; – энергозависимая память (ПЗУ); – контроллер SATA; – контроллер IDE; – контроллер прерываний; – контроллер USB;
– контроллер прямого доступа. Внутренняя шина, связывающая северный мост и южный мост, обеспечивает непре­рывность потоков информации.
Взаимосвязь различных элементов системной платы и устройств обеспечивают
различные системные шины (магистрали). Иногда
системной шиной
называют
только шину, связывающую процессор и северный мост.
Совокупность проводов системной магистрали можно разбить на четыре груп-
пы (рис. 1.2):
шина питания (так как по этой шине не передаётся никакой информации, её
часто опускают на схемах); – шина управления, используемая для организации обмена самой магистрали; – шина данных; – шина адреса.
Шины питания и управления связывают все устройства, в том числе
генератор,
предназначенный для синхронизации работы различных устройств си-
тактовый
стемной платы. Тактовый генератор задаёт частоту работы процессора как самого
8 Глава 1. Понятие вычислительной системы (ВС)
ЦПУ
Тактовый
Слот
графического
контроллера
генератор
Чипсет
Фронтальная шина
Слоты памяти
Шина графического
контроллера
Слоты PCI Express
Шина
PCI Express
Северный мост
(контроллер-
концентратор
Южный мост
(контроллер-
концентратор
ввода-вывода)
Шина LPC
ПЗУ
(BIOS)
памяти)
Внутренняя шина
SATA
USB
Ethernet
Аудио
Шина
памяти
Разъёмы
на системной
плате
Мульти-
контроллер
Клавиатура
Мышь
Рис. 1.1. Схема системной платы
быстрого устройства; частоты более медленных устройств являются делителями частоты процессора.
Кроме оперативной памяти в ВС имеется
ство (ПЗУ)
— энергонезависимая память, в которой записана неизменяемая ин-
постоянное запоминающее устрой-
формация, она сохраняется после отключения питания. Там хранится микропро­грамма управления вычислительной машиной. Она обязательно включает програм­мы начальной загрузки и самотестирования.
В постоянном запоминающем устройстве персонального компьютера записы-
вается BIOS (Basic Input/Output System — базовая система ввода/вывода), вклю-
1.2. Структурная декомпозиция вычислительной системы 9
Постоянное
запоминающее
устройство
Центральный процессор – АЛУ; – УУ; – регистры ЦПУ.
Долговременная
память
Устройства ввода-вывода
Принтер Клавиатура Монитор
Тактовый генератор
шина питания
шина управления
шина данных
шина адреса
Оперативная
память
Рис. 1.2. Структура системной шины
чающая, кроме загрузчика, также настройки и функции ввода/вывода с помощью программных прерываний. Ввод-вывод при помощи BIOS доступен только в реаль­ном режиме работы компьютера. Современные операционные системы сразу после загрузки переводят компьютер в защищённый режим и не используют BIOS.
Сама операционная система, как и загружаемые ею программы, располагается
в оперативной (энергозависимой) памяти.
Центральный процессор
(центральное процессорное устройство, ЦПУ) яв­ляется «мозгом» ВС. Он исполняет код программ. ЦПУ часто называют просто процессором, иногда — микропроцессором (МП). Исторически микропроцессор — это процессор, выполненный на одной микросхеме; сейчас другие варианты испол­нения нерентабельны и эти два термина стали синонимами. Ранее для специали­зированных процессоров, расширяющих функциональность ЦПУ, использовался термин «сопроцессор», но в настоящее время сопроцессоры либо вошли в состав ЦПУ (в частности, математический сопроцессор x87 входит в ядро современных ЦПУ семейства x86), либо получили иные названия (так, графический сопроцессор обычно называется видеокартой или графическим ускорителем).
Центральный процессор включает:
– арифметико-логическое устройство (АЛУ), выполняющее обработку данных;
10 Глава 1. Понятие вычислительной системы (ВС)
управляющее устройство (УУ), декодирующее поступающие в процессор ко­манды и формирующее на их основе сигналы для АЛУ; регистры — сверхбыструю память особой структуры и малого объёма, пред-
назначенную для временного хранения данных. Часть регистров может быть использована программистом по своему усмотрению (регистры общего назна-
чения), часть используется для специальных целей. Также современные процессоры содержат кеш-память (сверхоперативную память), предназначенную для прозрачного временного хранения фрагментов оперативной памяти. Время обращения к кеш-памяти больше, чем к регистрам, но меньше, чем к ОЗУ.
1.2.1. Единицы измерения
Нам в школе выдали линейку, Чтобы мерить объём головы.
Б. Б. Гребенщиков. Растаманы из глубинки
Базовой единицей измерения информации в современных ЭВМ является
бит
двоичный разряд.
В соответствии с характеристиками магистрали и регистров вводятся дополни­тельные платформозависимые единицы измерения:
– машинное слово — разрядность регистров процессора и/или шины данных; – байт — минимальный независимо адресуемый набор данных.
Понятие машинного слова возникло раньше понятия байта. Вначале минимально адресуемый блок памяти (байт) и блок, загружаемый или обрабатываемый за один раз (слово) всегда совпадали. В настоящее время машинное слово может быть как равно, так и кратно байту.
В настоящее время байт обычно составляет восемь бит, но существуют DSP­процессоры, для которых байт состоит из шестнадцати или двенадцати бит. На начальных этапах развития вычислительной техники размер байта вообще не был стандартизирован. Впервые термин «байт» был употреблён для совокупности шести битов.
Если необходимо описать именно восемь двоичных разрядов, используется термин
октет.
В частности, эта единица измерения используется при описании
сетевых протоколов.
В семействе процессоров x86 используется восьмибитный байт. Длина ма­шинного слова менялась от шестнадцати бит у первых моделей до шестидесяти четырёх у современных. При этом для совместимости документации термин «сло­во» остался за шестнадцатью битами. Тридцать два бита называют двойным словом, шестьдесят четыре — четверным и так далее.
Далее по тексту везде подразумевается, что байт состоит из восьми бит.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]