МИНИСТЕРСТВО ОБРАЗОВАНИЯРОССИЙСКОЙ ФЕДЕРАЦИИВОСТОЧНО-СИБИРСКИЙ ГОСУДАРСТВЕННЫЙТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТВыполнение арифметических операций в АЛУПрактическое пособие
Составители: Базарова С. Б-М.,
Чемерисюк А. С.,
Тулохонов Э. А.,
Гомбоев Е. Ш.
г. Улан-Удэ
2002 г.
ББК 32.97
УДК 796. 32 (075.5)
Б 173
Печатаетсяпо решению ИПЦ ВСГТУ
Рецензенты:
к.т.н.,доц. Белоплотов А. Е.,
к.т.н.,доц. Осипов И. С.
Базарова С. Б-М.,Чемерисюк А. С.,
Тулохонов Э. А.,Гомбоев Е. Ш.
Рассмотрены основные алгоритмы выполненияарифметических операций для чисел с фиксированной и плавающей запятой.Приведены примеры выполнения операций в многофункциональном АЛУ. Показаныалгоритмы функционирования АЛУ для чисел с плавающей запятой. Практическое пособиепредназначено для применения в учебном процессе при изучении курсов «Теорияпроектирования ЭВМ» и «Организация ЭВМ».
ISBN5-85213-067-2
ã Базарова С. Б-М., Чемерисюк А. С., Тулохонов Э. А.,
Гомбоев Е. Ш.
Глава 1. Форма представления чисел вЭВМ
1.1. Представлениечисла в форме
с фиксированной запятой
В ЭВМ применяют две формы представления чисел: сфиксированной запятой (точкой) и с плавающей запятой (точкой). Эти формыназывают также соответственно естественной и полулогарифмической. В ЭВМиспользуются двоичная, восьмеричная ишестнадцатеричная системы счисления.
При представлении чисел с фиксированной запятойположение запятой фиксируется в определенном месте относительно разрядов числа.Обычно подразумевается, что запятая находится или перед старшим разрядом, илипосле младшего. В первом случае могут быть представлены только числа, которыепо модулю меньше 1, во втором – только целые числа. Используют два вариантапредставления целых чисел: со знаком и без знака. В последнем случае всеразряды разрядной сетки служат для представления модуля числа. Припредставлении числа со знаком для кода знака выделяется «знаковый» разряд(обычно крайний слева). В этом разряде 0 соответствует положительному числу, а1 – отрицательному числу.
По сложившейся в вычислительной технике традициинумерация разрядов (бит) в разрядной сетке микропроцессоров персональныхкомпьютеров (ПК) и микро-ЭВМ ведется справа налево, а в машинах общегоназначения (ЕС ЭВМ) – слева направо.
На рис. 1.1, а, в показаны примеры форматов данных дляпредставления двоичных чисел со знаком и без знака с фиксированной точкой для32-разрядных микропроцессоров (МП) семейства x86, а на рис. 1.1, б, г — представление чисел в машинах общего назначения. На разрядной сетке вверхууказаны веса разрядов, а внизу – нумерация разрядов.
30 229 .. . 21 20 Знак 230229 .. . 21 20
31 30 29 .. . 1 0 0 1 2 .. . 30 31
а) б)
231 230 229 ... 21 20 231230 229 .. . 21 20
31 30 29 .. . 1 0 0 1 2 .. . 30 31
в) г)
Рис. 1.1. Форматы данных для представления целыхдвоичных чисел в процессорах:
а) – формат 32-разрядного знакового слова МП семейства х86; б) – формат 32-разрядного знаковогослова процессора ЕС ЭВМ; в) – формат 32-разрядного беззнакового слова МП семейства х86; г) – формат 32-разрядного беззнаковогослова процессора ЕС ЭВМ.
Если запятая фиксирована справа от младшего разряда,то в n-разрядной сетке знаковыхцелых чисел можно представлять положительные и отрицательные целые двоичныечисла, модуль которых
1≤ ∣ X∣ ≤ 2 n-1 – 1,
что при n=32соответствует диапазону абсолютных десятичных чисел от 1 до 2,1´109.
Числа (правильные дробимогут быть с точностью до 2 -(n-1) представлены в диапазоне:
2 -(n-1) ≤ ∣X∣ ≤ 1 – 2 -(n-1).
Формат дробных чиселпредставлен на рис. 1.2.
Первые ЭВМ были машинами сфиксированной запятой, причем запятая фиксировалась перед старшим разрядомчисла.
В настоящее время в ПК, как правило, форму с фиксированнойзапятой применяют для представления целых чисел (запятая фиксирована послемладшего разряда).
Существуют следующие форматы представления чисел с фиксированной запятой:байт со знаком (8 бит), байт баз знака (8 бит), слово со знаком (16 бит), словобез знака (16 бит), двойное слово со знаком (32 бита), двойное слово без знака(32 бита), учетверенное слово со знаком (64 бита), учетверенное слово без знака(64 бита).
Рис. 1.2. Формат данных для дробных знаковых чисел
Знак 2-1 2-2 2-3 ... 2-(n-2) 2-(n-1)
0 1 2 3 .. . n-2 n-1
1.2. Представление числа в форме
с плавающейзапятой
В машинах, предназначенныхдля решения широкого круга вычислительных задач, основным является представлениечисел с плавающей запятой.
Представление числа с плавающей запятой в общемслучае имеет вид:
; êmXú где mX – мантиссачисла X;
pX–порядок;
S– основание характеристики (обычно целая степень числа 2).
Форма представления числа с плавающей запятойназывается также полулогарифмической, так как часть числа – характеристика –выражена в логарифмической форме.
Мантисса (правильная дробь со знаком) ипорядок (целое число со знаком) представляются в системе счисления с основанием,равным S (в соответствующейдвоично-кодированной системе). Знак числа совпадает со знаком мантиссы.
Порядок p,который может быть положительным или отрицательным целым числом, определяет положениезапятой в числе X.
Арифметические действия над числами сплавающей запятой требуют выполнения, помимо операций над мантиссами,определенных операций над порядками (сравнение, вычитание и др.). Для упрощенияопераций над порядками их сводят к действиям над целыми положительными числами(целыми числами без знаков), применяя представление чисел с плавающей запятойсо «смещенным порядком».
В случае представления числас плавающей запятой со смещенным порядком к его порядку p прибавляется целое число – смещение N= 2 q, где q – число двоичных разрядов, используемых длямодуля порядка.
Для удобства выполнения операций надпорядками они обычно кодируются следующим образом. Если для размещения кодовпорядков в разрядной сетке отводится q+1 разряд, то отрицательные и положительные порядкипредставляются увеличенными на 2 q, т.е. pсм = p+ 2 q.
В результате порядки в диапазоне:
-2 q£p£2 q–1
преобразуются в pсм, диапазон которых:
0 £pсм £2 q+1–1
(происходитувеличение порядка на 2 q).
Диапазон представимых вмашине чисел с плавающей запятой зависит от основания системы счисления и числаразрядов, выделенных для изображения порядка. В двоичной системе счисления для32-разрядных чисел для кодировки порядка используется семь битов: шесть битов –на значение порядка, один бит – на знак порядка. Коды отрицательных порядковбудут иметь бит 0 в старшем разряде 7-разрядногодвоичного кода, положительных – бит 1; нулевому порядку будетсоответствовать код 1000000 b.Во избежание путаницы смещенный порядок называют характеристикой числа.
Знак Смещеннный Модуль мантиссы
числа порядок
pсм
m
0 1 7 8 31
Рис.1.3. Пример машинного кода числа в форме
сплавающей запятой со смещенным порядком
Значения модулей порядковдля 32-разрядных чисел лежат в диапазоне –64 (1000000 b) ¸+63 (0111111 b).Тогда в смещенном виде (порядок увеличивается на 64 разряда) порядки будуткодироваться положительными числами, причем значению порядка –64 будет соответствовать код 0000000 b, а значению +63 – код 1111111 b. Таким образом, при кодировании положительных порядков и нуля встаршем разряде порядка всегда будет присутствовать 1.
Например: порядку +2 будет соответствовать код 1000010b.
Точность вычислений чисел сплавающей запятой определяется числом разрядов мантиссы. С увеличением числаразрядов мантиссы увеличивается точность вычислений, но увеличивается и времявыполнения арифметических операций.
Любое число в формате сплавающей запятой должно быть представлено в ЭВМ в нормализованном виде дляповышения точности отображения числа. Число называется нормализованным, если мантисса mХудовлетворяет условию:
≤ êmXúт.е. в двоичной системесчисления старший разряд мантиссы отличен от нуля. В процессе вычислений можетполучиться ненормализованное число. В этом случае ЭВМ, если это предписанокомандой, автоматически нормализует его («нормализация результата» операции).
Пусть мантисса S-ричного числа содержитв r старших разрядах нули. Тогданормализация заключается в сдвиге мантиссы на r разрядов влево и уменьшении порядка на r единиц, при этом в младшие r разрядов мантиссы записывается 0.При нулевой мантиссе нормализация невозможна.Задачи, решаемые на ЭВМ, предъявляютразличные требования к точности вычислений. Поэтому во многих машинахиспользуется несколько форматов с плавающей запятой с различным числом разрядовмантиссы.
Существуютследующие форматы представления чисел с плавающей запятой: число с плавающейзапятой одинарной точности (32 бита; порядок – 8 бит, мантисса – 23 бита),число с плавающей запятой двойной точности (64 бита; порядок – 11 бит, мантисса– 52 бита), число с плавающей точкой повышенной точности (80 бит; порядок – 15бит, мантисса – 64 бита).
Пример. Пусть X= 24,5. Перевести число Xв формат числа с плавающей запятой, .
Для модуля порядка выделим 7 разрядов (разряды [1¸7]), а для мантиссы выделим10 разрядов (разряды [8¸17]). Нулевой разрядявляется знаковым для числа, а первый разряд является знаковым для порядка. Таккак нулевой и первый разряды определяют соответственно знак мантиссы и знакпорядка, то разряды [2¸7] будут определять модульпорядка, а разряды [8¸17] — модуль мантиссы. Формат данного числа изображенна рис. 1.4.
разряды
[0]
[1]
[2¸7]
[8¸17]
биты
x
x
x x x x x x
x x x x x x x x x x
зн.мант.
зн.пор.
модуль порядка
модуль мантиссы
Рис. 1.4. Формат представлениячисла с плавающей
запятой с несмещённым порядком
Определим мантиссу числа mX. Для этого представим в двоичном виде целую и дробную части числа.Алгоритм перевода целого десятичного числа в двоичный вид широко описан в техническойлитературе и в данном пособии не приводится. Целая часть (24) в десятичном виде соответствует двоичному числу 11000 b. Для отображения целой части X необходимо5 битов. Результат целой части числа занесём в соответствующие разряды мантиссыmX. Определим двоичный вид дробнойчасти числа X с помощью нижеприведенного алгоритма.
В общем случае алгоритм преобразования дробной части числа к двоичному виду можноразбить на следующие этапы:
1. Вычесть из исходного числа его целуючасть. Результат занести в число R.
2. Умножить число R на 2.
3. Если R³1, то:
а) очередная цифра дробной части в двоичномвиде равна 1;
б) изчисла R вычесть 1.
Если же R
4. Пункты 2 и 3 повторяются дополучения необходимого числа разрядов.
Итак, представим двоичный вид дробнойчасти числа X согласно вышеприведенному алгоритму, описанномувыше:
1. R = 24,5 – 24 = 0,5.
2. R = R´2 = 0,5 ´2 = 1.
3. Так как R³1, то:
a) очередная цифра дробной части вдвоичном виде равна 1;
б) R =R – 1 = 1 – 1 = 0.
2. R´2 = 0 ´2 = 0.
3. Так как R2. R´2 = 0 ´2 = 0.
3. Так как R2. R´2 = 0 ´2 = 0.
3. Так как R2. R´2 = 0 ´2 = 0.
3. Так как R Согласно алгоритму преобразования, дробнаячасть числа X в двоичном виде представляется как 0,10000 b. Количество итераций алгоритма (количествополученных цифр дробной части) зависит от разрядности мантиссы. Для данногопримера разрядность мантиссы равна 10.Для целой части числа X необходимо 5битов, на дробную часть числа X также выделяется 5 разрядов. Дробная часть числа в двоичном видедописывается в мантиссу mXпосле разрядов целой частичисла. Таким образом, мантисса числа X имеет вид mX= 1100010000 b.
Определим порядок числа pX.В общем случае порядок pXравен числу разрядов, использовавшихся для представления целой части числа. Тоесть pX= 5, или в двоичном виде в даннойразрядной сетке pX= 0000101 b.
Возвращаясь кполулогарифмической форме представления числа с плавающей запятой, запишем:
X= mX´´25,
где mX– нормализованная мантисса числа, представленная как число с запятой перед старшим разрядом, mX = 1100010000;
pX = 5– порядок числа.
Число Xсфиксацией запятой после целой части будет иметь следующий двоичный вид: 11000,10000.
Чтобы убедиться в правильности представления числа вформате с плавающей запятой, произведём обратное преобразование с учетом весовразрядов целой и дробной части числа:
11000,10000 = 1 ´24 + 1 ´23 + 0 ´22 + 0 ´21 +
+ 0 ´20+ 1 ´2-1 + 0 ´2-2 + 0 ´2-3 + 0 ´2-4 + 0 ´2-5 = 24,5.
Представим порядок pX как смещённый порядок. Для этогок порядку pXприбавим целое число – смещение N= 2q, где q – число двоичных разрядов,используемых для модуля порядка (см. рис. 1.4).В данной разрядной сетке q= 6, Следовательно, N=26 = 64 (N =1000000 b). Таким образом, смещённый порядок числа X равен: pXсм= 1000101 b.
Так как число Xположительное, то егознаковый разряд равен 0. Число X в форматес плавающей запятой со смещенным порядком приведено на рис.1.5.
Веса разрядов
26
25
24
23
22
21
20
24
23
22
21
20
2-1
2-2
2-3
2-4
2-5
1
1
1
1
1
1
знак
смещённый порядок
мантисса
Рис. 1.5. Формат представления числа X= 24,5 вформате сплавающей запятой со смещённым порядкомГлава 2. Арифметико-логические устройства
2.1.Классификация АЛУ
Арифметико-логическое устройство (АЛУ) служит для выполненияарифметических и логических преобразований над словами, называемыми в этом случае операндами. Выполняемые в АЛУ операции можно разделить наследующие группы:
- операции двоичной арифметики для чиселс фиксированной запятой;
- операции двоичной арифметики для чиселс плавающей запятой;
- операции десятичной арифметики;
- операции индексной арифметики (примодификации адресов команд);
- операции специальной арифметики;
- операции над логическими кодами (логическиеоперации);
- операции над алфавитно-цифровымиполями.
К арифметическим операциям относятся сложение, вычитание, вычитаниемодулей («короткие операции») и умножение и деление(«длинные операции»). Группу логических операций составляютоперации дизъюнкции (логическое ИЛИ) и конъюнкции (логическое И) над многоразрядными двоичными словами, сравнение кодов наравенство.
Специальные арифметические операции включают в себя нормализацию,арифметический сдвиг (сдвигаются только цифровые разряды,знаковый разряд остается на месте), логический сдвиг(знаковый разряд сдвигается вместе с цифровыми разрядами).
Можно привести следующую классификацию АЛУ.
По способу действия над операндами АЛУделятся следующие группы:
- последовательные;
- параллельные.
В последовательных АЛУ операндыпредставляются в последовательном коде, а операциипроизводятся последовательно во времени над их отдельными разрядами. В параллельных АЛУ операнды представляются параллельным кодом, и операциисовершаются параллельно во времени над всеми разрядамиоперандов.
По способу представления чисел различают АЛУ:
- для чисел с фиксированной запятой;
- для чисел с плавающей запятой;
- для десятичных чисел.
По характеру использования элементов и узловАЛУ делятся на:
- блочные;
- многофункциональные.
В блочном АЛУ операции над числами с фиксированной и плавающей запятой,десятичными числами и алфавитно-цифровыми полями выполняются в отдельныхблоках, при этом повышается скорость работы, так как блоки могут параллельно выполнять соответствующие операции, но значительно возрастают затратыоборудования. В многофункциональных АЛУ операции над всемиформами представления чисел выполняются одними и теме жесхемами, которые коммутируются нужным образом в зависимости от требуемого режима работы.Глава 3. АЛУ для чисел с фиксированнойзапятой
На АЛУ,изображенном на рис. 3.1, выполняются операции сложения, вычитания, умножения иделения чисел в формате с фиксированной запятой.
В состав АЛУ входят:
1. входной регистр Рг1 дляприема операнда;
2. входной регистр Рг3 дляприема операнда;
3. регистр Рг2 для приема,хранения и сдвига второго операнда;
4. регистр Рг2’длясдвига операнда, находящегося в регистре Рг2;
5. входные регистры сумматораРгА и РгВ;
6. сумматор СМ для суммированияпоступающих на его входы данных и выработки определенных признаков;
7. выходной регистр сумматораРгСМ для фиксации результата суммирования;
8. счетчик циклов СчЦ.
Рис. 3.1. Структурная схема АЛУ СчЦ
–1 ШИВх ШИВых Рг2
0 n-1 Рг2’
0 n-1 Рг1
0 n-1 РгВ
0 n-1 РгСм
0 n-1 Рг3
0 n-1 Рг1
0 n-1