М. В. Ломоносова Факультет вычислительной математики и кибернетики В. Г. Баула Введение в архитектуру ЭВМ и системы программирования Москва 2003 Предисловие Данная книга

Вид материалаКнига

Содержание


5. Понятие семейства ЭВМ
6. Архитектура младшей модели семейства Intel 6.1. Память
6.2. Форматы данных
Символьные данные.
Массивы (строки).
Вещественные числа.
6.3. Вещественные числа
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   37

5. Понятие семейства ЭВМ


Компьютеры могут применяться в самых различных областях человеческой деятельности (эти области часто называются предметными областями). В качестве примеров можно привести область научно-технических расчётов (там много операций с вещественными числами), область экономи–ческих расчётов (там, в основном, выполняются операции над целыми числами и обработка символьной информации), мультимедийная область (обработка звука, изображения и т.д.), область управления различными сложными устройствами (ракетами, доменными печами и др.)

Компьютеры, архитектура которых ориентирована на какую-то одну предметную область, называются специализированными, в отличие от универсальных ЭВМ, которые более или менее успешно можно использовать во всех предметных областях. Мы в нашем курсе будем изучать архитектуру только универсальных ЭВМ.

Говорят, что компьютеры образуют семейство, если выполняются следующие требования:
  1. Одновременно выпускаются и используются несколько моделей семейства с различными производительностью и ценой (моделями называются компьютеры-члены семейства).
  2. Модели обладают программной совместимостью:
  1. снизу-вверх – старшие модели поддерживают все команды младших (любая программа, написанная для младшей модели, безошибочно выполняется и на старшей);
  2. сверху-вниз – на младших моделях выполняются программы, написанные для старших, если выполнены условия:
  • наличие у младшей модели достаточного количества ресурсов (например, памяти);
  • программа состоит только из поддерживаемых младшей моделью команд.
  1. Присутствует унификация устройств, то есть их аппаратная совместимость между моделями (например, печатающее устройство для младшей модели должно работать и на старшей).
  2. Модели организованы по принципу модульности, что позволяет в определённых пределах расширять возможности ЭВМ, увеличивая, например, объём памяти или повышая быстродействие центрального процессора.
  3. Стандартизировано системное программное обеспечение (например, компилятор с языка Турбо-Паскаль может работать на всех моделях семейства).

Большинство выпускаемых в наше время ЭВМ содержатся в каких-либо семействах. В нашем курсе для упрощения изложения будут рассматриваться в основном младшие модели семейства ЭВМ компании Intel. Соответственно все примеры программ должны выполняться для всех моделей этого семейства, поэтому мы ограничимся лишь архитектурой и системой команд самой младшей модели этого семейства [9].

6. Архитектура младшей модели семейства Intel

6.1. Память


Архитектура рассматриваемого компьютера является дробно-адресной, поэтому адресуемая память состоит из регистровой и основной памяти. В младшей модели семейства основная память имеет объём 220 ячеек по 8 бит каждая. Регистровая память будет рассмотрена немного позже.

6.2. Форматы данных

  • Целые числа.

Целые числа могут занимать 8 бит (короткое целое), 16 бит (длинное целое) и 32 бита (сверхдлинное целое). Длинное целое принято называть машинным словом (не путать с машинным словом в Учебной Машине!).

Как видим, в этой архитектуре есть многообразие форматов целых чисел, что позволяет писать более компактные программы. Для других архитектур это может оказаться несущественно, например, в некоторых современных супер-ЭВМ идёт работа с малым количеством целых чисел, поэтому вводится только один формат – сверхдлинное целое.
  • Символьные данные.

В качестве символов используются короткие целые числа, которые трактуются как неотрицательные (беззнаковые) числа, задающие номер символа в некотором алфавите.1 Заметим, что как таковой символьный тип данных (в смысле языка Паскаль) в Ассемблере отсутствует, а запись 'A' обозначает не символьный тип данных, а эквивалентна выражению языка Паскаль Ord('A').
  • Массивы (строки).

Массивы могут состоять из коротких или длинных целых чисел. Массив коротких целых чисел может рассматриваться как символьная строка. В машинном языке присутствуют команды для обработки элементов таких массивов, если такую команду поставить в цикл, то образуются удобное средство для работы с массивами.
  • Вещественные числа.

Чаще всего используются три формата вещественных чисел: короткие, длинные и сверхдлинные вещественные числа. Стоит отметить следующий важный факт. Если целые числа в различных ЭВМ по чисто историческим причинам иногда имеют разное внутреннее представление, то на момент массового выпуска ЭВМ с командами для работы с вещественными числами уже существовал определённый стандарт на внутреннее представление этих чисел – IEEE (Institute of Electrical and Electronics Engineers), и почти все современные машины этого стандарта придерживаются.

6.3. Вещественные числа


Рассмотрим представление короткого вещественного числа. Такое число имеет длину 32 бита и содержит три поля:



E

M

1 бит

8 бит

23 бита

Первое поле из одного бита определяет знак числа (знак "плюс" кодируется нулём, "минус" – единицей). Остальная биты, отведённые под хранение вещественного числа, разбивается на два поля: машинный порядок E и мантиссу M, которая по модулю меньше единицы. Каждое представимое вещественное число A (кроме числа 0.0) может быть записано в виде: A=1.M*2E127. Такие вещественные числа называются нормализованными: первый сомножитель удовлетворяет неравенству 1.0  1.M < 2.0. Нормализация необходимо для однозначного представления вещественного числа в виде двух сомножителей. Нулевое число представляется нулями во всех позициях, за исключением, быть может, первой позиции знака числа.

В качестве примера переведём десятичное число –13.25 во внутреннее машинное представление. Сначала переведём его в двоичную систему счисления:

–13.2510 = -1101.012

Затем нормализуем это число:

-1101.012 = -1.101012*23

Следовательно, мантисса будет иметь вид 101010000000000000000002 , осталось вычислить машинный порядок: 3 = E-127; E = 130 = 128 + 2 = 1000000102 . Теперь, учитывая знак, получаем вид внутреннего машинного представления числа –13.2510:

1100 0001 0101 0100 0000 0000 0000 00002 = C150000016

Шестнадцатеричные числа в языке Ассемблера принято записывать с буквой h на конце:

C150000016 = C1500000h

Таков формат короткого вещественного числа. Согласно его виду, E изменяется от 0 до 255, следовательно, диапазон порядков коротких вещественных чисел равен 2127..2128  1038..1038. Как и для целых чисел, машинное представление которых мы рассмотрим чуть позже, число представимых вещественных чисел конечно. Заметим также, что, в отличие от целых чисел, в представлении вещественных чисел используется симметричная числовая ось, то есть для любого положительного числа найдётся соответствующее ему отрицательное (и наоборот).

Некоторые комбинации нулей и единиц в памяти, отведённой под вещественное число, собственно числа не задают, а используются для служебных целей. В частности, E=255 обозначает специальное значение "не число" (NAN – not a number). При попытке производить арифметические операции над такими "числами" возникает аварийная ситуация. Например, значение "не число" может быть присвоено вещественной переменной при её порождении, если эта переменная не имеет начального значения (как говорят, не инициализирована). Такой приём позволяет избежать тяжёлых семантических ошибок, которые могут возникать при работе с неинициализированными переменными, которые при порождении, как правило, имеют случайные значения.

Отметим ещё две специальные комбинации нулей и единиц, которые будем обозначать . Эти значения присваиваются результату операции с вещественными числами, если этот результат, хотя и не равен нулю, но не представим в виде вещественного числа, то есть  меньше самого маленького представимого положительного вещественного числа и больше самого большого отрицательного.

Аналогично существуют комбинации битов, задающие специальные значения . Эти значения выдаются в качестве результата, если этот результат такой большой по абсолютной величине, что не представим среди множества машинных вещественных чисел.

Центральный процессор "разумно" (по крайней мере с точки зрения математика) производит арифметические операции над такими "числами". Например, пусть A любое представимое вещественное число, тогда

A   = A;  * A = ; A *  = ; и т.д. 1

Для любознательных студентов заметим, что существует нетрадиционное построение математического анализа, в котором, как и в нашей ЭВМ, бесконечно малые величины  определяются не в виде пределов, как в обычном анализе, а существуют в виде "настоящих" вещественных чисел. Изложение нетрадиционного анализа можно посмотреть в книгах [13,14].

При изучении архитектуры ЭВМ вещественные числа не будут представлять для нас большого интереса и поэтому (а также из-за недостатка времени) операции над вещественными числами мы изучать не будем.