М. В. Ломоносова Факультет вычислительной математики и кибернетики В. Г. Баула Введение в архитектуру ЭВМ и системы программирования Москва 2003 Предисловие Данная книга
Вид материала | Книга |
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Кафедра математической, 6.81kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 172.6kb.
- Н. И. Лобачевского Факультет Вычислительной Математики и Кибернетики Кафедра иисгео, 4000.54kb.
- М. В. Ломоносова факультет Вычислительной Математики и Кибернетики Диплом, 49.56kb.
- Методы интеллектуального анализа данных и некоторые их приложения, 29.22kb.
- М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Кафедра Системного, 124.67kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 169.45kb.
- Московский Государственный Университет им. М. В. Ломоносова. Факультет Вычислительной, 104.35kb.
- М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Реферат, 170.54kb.
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Руденко Т. В. Сборник, 1411.4kb.
Московский Государственный Университет им. М.В. Ломоносова
Факультет вычислительной математики и кибернетики
В. Г. Баула
Введение в архитектуру ЭВМ и
системы программирования
Москва 2003
Предисловие
Данная книга представляет собой учебное пособие по архитектуре ЭВМ и системам программирования. Книга написана по читаемому автором лекционому курсу Архитектура ЭВМ и язык Ассемблера для студентов первого курса факультета Вычислительной математики и кибернетики МГУ им. М.В. Ломоносова. По данному курсу существует достаточно обширная литература, посвящённая программированию на Ассемблере, однако явно недостаточно учебной литературы собственно по архитектуре ЭВМ и системам программирования. Эта книга пособие призвано восполнить этот пробел.
В данном курсе вместе с архитектурой ЭВМ изучается и язык низкого уровня (Ассемблер). Это связано с тем обстоятельством, что ЭВМ является исполнителем алгоритма на машинном языке, поэтому знание языка низкого уровня необходимо для понимания архитектуры ЭВМ, на Ассемблере приводятся и все примеры, иллюстрирующие те ли иные особенности архитектуры. В то же время в изложении материала по архитектуре ЭВМ язык Ассемблера выполняет вспомогательную роль, основное внимание уделяется не изучению этого языка, а способам отображения конструкций языка высокого уровня (в основном Паскаля) на язык низкого уровня. Поэтому для достаточно полного изучения языка Ассемблер студентам совершенно необходимо знакомство с соответствующими курсами по этому языку (рекомендуется книга [5]).
Изложение материала по архитектуре ЭВМ проводится сначала по возможности в общем виде, безотносительно к конкретным компьютерам, а затем приводятся примеры, как та или иная особенность архитектуры реализована в современных ЭВМ. Так как в настоящее время в большинстве массовых ЭВМ используются процессоры фирмы Intel, то архитектура именно этого процессора (в основном его младшей модели) используются для изучения в первую очередь.
Большое внимание уделяется обоснованию тех или иных архитектурных решений, показывается необходимость появления определённых аппаратных возможностей, их нацеленность на решение встающих перед вычислительной техникой проблем. Показывается историческое развитие основных аппаратных решений, эволюция главных понятий от первых простых ЭВМ до современных компьютеров.
Изучение архитектуры ЭВМ неразрывно связано с выполнением машинных программ. Исходя из этого, в книге рассматриваются элементы системы программирования, показывается путь прохождения программы по всей цепочке от исходного текста, через объектный и загрузочный модули, до этапа счёта. Большое внимание приходится уделять модульному программированию, способам распределения памяти, статической и динамической загрузке и связыванию.
1. Понятие об архитектуре ЭВМ
Этот семестровый курс лекций называется Архитектура ЭВМ и язык Ассемблера, хотя правильнее было бы назвать его всего лишь введением в архитектуру ЭВМ, так как в нашем курсе мы будем изучать только основы этого сложного предмета. Сначала нам нужно определить, что мы будем понимать под архитектурой компьютера. Обычно, определяя это понятие, говорят, что архитектура – это компоненты компьютера, их устройство, выполняемые ими функции, а также взаимосвязи между этими компонентами. Нас такое поверхностное определение не будет удовлетворять.
Дело в том, что понятие архитектура чего-либо существует не само по себе, а только в паре с другим понятием. Вы уже встречались с такой ситуацией в курсе из прошлого семестра Алгоритмы и алгоритмические языки, где понятие алгоритм было неразрывно связано с понятием исполнитель алгоритма. При этом одна и та же запись для одного исполнителя была алгоритмом, а для другого – нет (например, если этот другой исполнитель не умел выполнять некоторые предписания в записи текста алгоритма).
Так и в нашем случае понятие архитектуры неразрывно связано с тем человеком (или теми людьми), которые изучают или рассматривают эту архитектуру. Ясно, что для разных людей архитектура одного и того же объекта может выглядеть совершенно по-разному. Так, например, обычный жилец многоэтажного дома видит, что этот дом состоит из фундамента, стен и крыши, имеет этажи, на каждом этаже есть квартиры, присутствует лестница, лифт и т.д. Совсем по-другому видит архитектуру этого же дома инженер, ответственный за его эксплуатацию. Он, например, знает, что некоторые перегородки между комнатами можно убрать при перепланировке квартиры, а другие перегородки являются несущими, если их убрать – дом рухнет. Инженер знает, где внутри стен проходят электрические провода, трубы водяного отопления, как обеспечивается противопожарная безопасность и многое другое.
Отсюда можно сделать вывод, что, изучая какой-либо объект, часто бывает удобно выделить различные уровни рассмотрения архитектуры этого объекта. Обычно выделяют три таких уровня: внешний, концептуальный и внутренний.1 В качестве примера рассмотрим архитектуру какого-нибудь всем хорошо известного объекта, например, легкового автомобиля, на этих трёх уровнях.
- Внешний уровень. На этом уровне видит архитектуру автомобиля обычный пассажир. Он знает, что машина имеет колёса, кузов, сиденья, мотор и другие части. Он понимает, что для работы автомобиля в него надо заливать бензин, знает назначение дворников на ветровом стекле, ремней безопасности и т.д. И этого эму вполне достаточно, чтобы успешно пользоваться машиной, главное – правильно назвать водителю нужный адрес.
- Концептуальный уровень. Примерно на этом уровне видит архитектуру машины её водитель. В отличие от пассажира он знает, что в его автомобиль нужно заливать вовсе не бензин, а дизельное топливо, кроме того, необходимо ещё заливать масло и воду. Водитель знает назначение всех органов управления машиной, марку топлива, температуру окружающего воздуха, ниже которой необходимо заливать в машину не обычную воду, а так называемый антифриз и т.д. Ясно, что водитель видит архитектуру автомобиля совсем иначе, нежели обычный пассажир.
- Внутренний уровень. На этом уровне автомобиль видит автомобиль инженер-конструктор, ответственный за его разработку. Он знает марку металла, из которого изготавливаются цилиндры двигателя, зависимость отдаваемой мотором мощности от вида топлива, допустимую нагрузку на отдельные узлы автомобиля, антикоррозийные свойства внешнего корпуса и многое другое.
Не надо думать, что один уровень видения архитектуры хороший, а другой – плохой. Каждый из них необходим и достаточен для конкретного применения рассматриваемого объекта. Знать объект на более глубоком уровне часто бывает даже вредно, так как получить эти знания обычно достаточно трудно, и все усилия пропадут, если в дальнейшем эти знания не понадобятся.
Необходимо, чтобы выпускники нашего университета, изучая какой-либо объект, достаточно ясно представляли себе, на каком уровне они его рассматривают и достаточен ли этот уровень для практической работы с этим объектом. При необходимости, разумеется, надо перейти на более глубокий уровень рассмотрения.
Перейдём теперь ближе к предмету нашего курса – архитектуре компьютеров. Все люди, которые используют компьютеры в своей работе, обычно называются пользователями. Ясно, что в зависимости от того, на каком уровне они видят архитектуру компьютера, всех пользователей можно разделить на уровни или группы. Как правило, в научной литературе выделяют следующие группы пользователей.
- Конечные пользователи (пользователи-непрограммисты). Обычно это специалисты в конкретных предметных областях – физики, биологи, лингвисты, финансовые работники и т.д., либо люди, использующие компьютеры в сфере образования, досуга и развлечений (они имеют дело с обучающими программами, компьютерными играми и т.д.). В своей работе все они используют компьютер, снабжённый соответствующим, как говорят, прикладным программным обеспечением. Это различные базы данных, текстовые редакторы, пакеты прикладных программ, системы автоматического перевода, обучающие, игровые и музыкальные программы. Этим пользователям достаточно видеть архитектуру компьютеров на внешнем уровне, их абсолютное большинство, примерно 90% от общего числа. Вообще говоря, компьютеры разрабатываются и выпускаются для нужд этих пользователей.
- Прикладные программисты. Эти пользователи разрабатывают для конечных пользователей прикладное программное обеспечение. В своей работе они используют различные языки программирования высокого уровня (Паскаль, Фортран, Си, языки баз данных и т.д.) и соответствующие системы программирования (с этим понятием мы будем знакомиться в нашем курсе). Прикладным программистам достаточно видеть архитектуру компьютеров на концептуальном уровне. Можно примерно считать, что прикладных программистов примерно 8–9% от числа всех пользователей.
- Системные программисты. Это самая небольшая (порядка 1%) группа пользователей, которая видит архитектуру ЭВМ на внутреннем уровне. Основная деятельность системных программистов заключается в разработке системного программного обеспечения. Курс лекций по системному программному обеспечению будет у Вас в следующем семестре, пока достаточно знать, что сюда относятся и системы программирования – тот инструмент, с помощью которого прикладные программисты пишут свои программы для конечных пользователей.
Разумеется, можно выделить и другие уровни видения архитектуры компьютера, не связанные с его использованием. В качестве примера можно указать уровень инженера-разработчика аппаратуры компьютера, уровень физика, исследующего новые материалы для построения схем ЭВМ и т.д. Эти уровни изучаются на других специальностях, и непосредственно нас интересовать не будут. В нашем курсе изучаются в основном первые три уровня, но иногда, в качестве примеров, мы совсем немного будем рассматривать и эти другие уровни видения архитектуры ЭВМ.
Далее укажем те способы, с помощью которых мы будем описывать архитектуру компьютера в нашем курсе. Можно выделить следующие основные способы описания архитектуры ЭВМ.
- Словесные описания, использование чертежей, графиков, блок-схем и т.д. Именно таким способом в научной литературе описывается архитектура ЭВМ для пользователей.
- В качестве другого способа описания архитектуры компьютера на внутреннем уровне можно с успехом использовать язык машины и близкий к нему язык Ассемблера. Дело в том, что компьютер является исполнителем алгоритма на языке машины и архитектуру компьютера легче понять, если знать язык, на котором записываются эти алгоритмы. В нашем курсе мы будем изучать язык Ассемблера в основном именно для лучшего понимания архитектуры ЭВМ. Для этого нам понадобится не полный язык Ассемблера, а лишь относительно небольшое подмножество этого языка.
- Можно проводить описание архитектуры ЭВМ и с помощью формальных языков. Из курса предыдущего семестра Вы знаете, как важна формализация некоторого понятия, что позволяет значительно поднять строгость его описания и устранить различное понимание этого понятия разными людьми. В основном формальные языки используются для описания архитектуры ЭВМ на инженерном уровне, эти языки весьма сложны и их изучение выходит за рамки нашего предмета. Мы, однако, попробуем дать почти формальное описание архитектуры, но не настоящего компьютера, а некоторой учебной ЭВМ. Эта ЭВМ будет, с одной стороны, достаточно проста, чтобы её формальное описание не было слишком сложным, а, с другой стороны, она должна быть универсальной (т.е. пригодной для реализации любых алгоритмов, для выполнения которых хватает аппаратных ресурсов компьютера).
Вы, конечно, уже знаете, что сейчас производятся самые разные компьютеры. Определим теперь, архитектуру каких именно ЭВМ мы будем изучать в нашем курсе.
- Сначала мы рассмотрим архитектуру некоторой абстрактной машина (машины фон Неймана).
- Далее мы изучим специальную учебную ЭВМ, которая по своей архитектуре близка к самым первым из выпускавшихся компьютеров.
- Затем мы достаточно подробно изучим архитектуру первой модели того конкретного компьютера, на котором Вы работаете в терминальном классе.
- В заключение нашего курса мы проведём некоторый достаточно простой сравнительный анализ архитектуры основных классов универсальных ЭВМ.