D.1.2. Целочисленное АЛУ.

Целочисленное арифметико-логическое устройство является, наверное, первым универсальным АЛУ. Это АЛУ могло работать с целыми числами и вещественными числами с фиксированной точкой [А.В. Нестеренко. ЭВМ и профессия программиста. М.: Просвещение, 1990, пп. 2.1.1 - 2.1.4].

Не смотря на большое число команд микропроцессора, это устройство фактически все команды сводит к девяти элементарным операциям. Все оно приведены в таблице.

Таблица D.1.II.
Элементарные операции целочисленного АЛУ.
ОперацияОбозначениеКоличество
операндов
Подсистема
выполнения
Сложение + 2 Сумматор
Вычитание - 3 Cумматор и регистр
Логическое умножение, И ^, &, and 2 Логические схемы
Логическое сложение, ИЛИ V, |, or 2 Логические схемы
Сдвиг влево << 2 Регистр
Сдвиг вправо >> 2 Регистр
Инверсия (НЕ) !,not 1 Логические схемы
Увеличение на 1,
инкремент
++,inc 1 Сумматор
Уменьшение на 1,
декремент
–,dec 1 Сумматор

Подробнее об устройстве регистров, логических схем и сумматоров смотри приведенные перепечатки ([Информатика в понятиях и терминах. М.: Просвещение, 1991. - стр. 88-93], ["Квант", 1985. – 9-12, 1986, – 1-6.]) Именно эти операции выполняются за один такт микропроцессора (см. синхронизирующие импульсы, тактовая частота), и имеют наибольшую скорость выполнения. Они являются единственными командами для MISC-процессоров [Борис Богумирский. Эффективная работа на IBM PC. С.-Пб.: Питер-ПРЕСС, 1985 - 683 с.], основой для операция в RISC-процессорах (смотри раздел E этого выпуска). Фактически все другие операции осуществляются с помощью этих девяти базовых. Так, умножение восьмиразрядных целых чисел A и B выполняются по следующему алгоритму:

  1. Обнуляется результат.
  2. Если последний разряд числа B – единица, ток результату прибавляется число A.
  3. Число A сдвигается на разряд влево, а число B – на разряд вправо.
  4. Повторяются шаги со второго по третий семь раз.

Заметим, что сдвиг влево на 1 разряд соответствует умножению на два, а сдвиг вправо на один разряд – целочисленному делению на два.

Команда изменения знака числа будет следующей:

  1. Вначале происходит инверсия числа.
  2. После этого производится инкремент результата (т.е. к нему прибавляется единица.)
  3. Таким образом число переводится в дополнительный код (смотри форматы представления чисел в приложении I, книгу В.А. Григорьева "Микропроцессор i486, кн. 1-4 и книгу "ЭВМ и профессия программиста" Нестеренко.) Команда определения знака числа основывается просто на проверке самого старшего бита (смотри там же.)

 

Назад...   К оглавлению раздела   Далее...

=== *** === *** === *** ===

В настоящее время проект закрыт (в версии 1.00.3 alpha). Автор приносит извинения за прекрашение разработки.