- •Раздел 2 принципы построения и функционирования эвм и вычислительных систем (вс)
- •2.1. Структура эвм
- •2.2. Системы счисления
- •2.3. Формы представления чисел
- •2.3.1. Форма представления чисел с фиксированной точкой
- •2.3.2. Форма представления чисел с плавающей точкой
- •2.3.3. Форматы двоично-десятичных чисел
- •2.3. Машинные коды
- •2.3.1. Прямой код
- •2.3.2. Обратный код
- •2.3.3. Дополнительный код
- •2.4. Перевод чисел из одной системы представления в другую
- •2.4.1. Перевод между основаниями, составляющими степень двойки
- •2.4.2. Перевод целого числа из десятичного счисления в другое
- •2.4.3. Перевод дробного числа из десятичного счисления в другое
- •2.4.4. Перевод чисел в десятичную систему счисления
- •2.5. Арифметические действия над двоичными числами
- •2.5.1. Сложение
- •2.5.2. Вычитание
- •2.5.3. Умножение
- •2.5.4. Деление
- •2.6. Понятие алгебры логики
- •2.7. Простейшие логические функции
- •2.7.1. Логическая операция конъюнкция (логическое умножение)
- •2.7.2. Логическая операция дизъюнкция (логическое сложение)
- •2.7.3. Логическая операция инверсия (отрицание)
- •2.7.4. Логическая операция сложение по модулю 2
- •2.7.5. Логическая операция эквивалентность (функция тождества)
- •2.7.6. Логическая операция импликация (логическое следование)
- •2.7.7. Функция Шеффера
- •2.7.8. Стрелка Пирса ав, или функция Вебба a b
- •2.8. Основные правила преобразования формул
- •2.9. Кодирование текстовой информации
- •2.10. Составные части компьютера
- •2.11. Логические элементы
- •2.12. Триггеры
- •2.12.1. Общие сведения о триггерах
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •2.12.4. Асинхронный и синхронный d-триггеры
- •2.12.5. T-триггер
- •2.12.6. Jk-триггер
- •2.13. Типовые узлы комбинационного типа
- •2.13.1. Дешифраторы
- •2.13.2. Одноразрядный сумматор
- •2.13.3. Полусумматор
- •2.13.4. Многоразрядные сумматоры
- •2.13.5. Двоично-десятичные сумматоры
- •2.13.6. Мультиплексоры
- •2.13.7. Демультиплексоры
- •2.14. Типовые узлы накапливающего типа
- •2.14.1. Регистры
- •2.14.2. Счетчики
- •2.14.3. Двоично-десятичные счетчики
- •2.15. Классификация архитектур системы команд
- •2.15.1. Классификация по составу и сложности команд
- •2.15.2. Классификация по месту хранения операндов
- •2.15.3. Стековая архитектура
- •2.15.4. Аккумуляторная архитектура
- •2.15.5. Регистровая архитектура
- •2.15.6. Архитектура с выделенным доступом к памяти
- •2.16. Типы команд
- •2.16.1. Команды пересылки данных
- •2.16.2. Команды арифметической и логической обработки
- •2.16.3. Операции с целыми числами
- •2.16.4. Операции с числами в форме с плавающей запятой
- •2.16.5. Логические операции
- •2.16.6. Операции сдвигов
- •2.16.7. Операции с десятичными числами
- •2.16.8. Simd-команды
- •2.16.9. Команды для работы со строками
- •2.16.10. Команды преобразования
- •2.16.11. Команды ввода/вывода
- •2.16.12. Команды управления системой
- •2.16.13. Команды управления потоком команд
- •2.17. Формат команд
- •2.17.1. Длина команды
- •2.17.2. Разрядность полей команды
- •2.17.3. Выбор адресности команд
- •2.18. Способы адресации операндов
- •2.18.1. Непосредственная адресация
- •2.18.2. Прямая адресация
- •2.18.3. Косвенная адресация
- •2.18.4. Регистровая адресация
- •2.18.5. Косвенная регистровая адресация
- •2.18.6. Адресация со смещением
- •2.18.7. Относительная адресация
- •2.18.8. Базовая регистровая адресация
- •2.18.9. Индексная адресация
- •2.18.10. Страничная адресация
- •2.18.11. Блочная адресация
- •2.18.12. Распространенность различных видов адресации
- •2.19. Способы адресации в командах управления потоком команд
- •2.20. Функциональная организация фон-неймановской вычислительной машины
- •2.20.1. Устройство управления
- •2.20.2. Арифметико-логическое устройство
- •2.20.3. Основная память
- •2.20.4. Модуль ввода/вывода
- •2.21. Цикл команды
- •2.21.1. Стандартный цикл команды
- •2.21.2. Описание стандартных циклов команды для гипотетической машины
- •2.21.3. Машинный цикл с косвенной адресацией
2.17.3. Выбор адресности команд
При выборе количества адресов в адресной части команды обычно руководствуются следующими критериями:
• емкостью запоминающего устройства, требуемой для хранения программы;
• временем выполнения программы;
• эффективностью использования ячеек памяти при хранении программы.
Емкость запоминающего устройства для хранения программы EA можно оценить из соотношения
,
где – количество программ в программе; – разрядность команды, определяемая в соответствии с формулой (2.1); А – индекс, указывающий адресность команд программы. Оптимальная адресность команды определяется путем решения уравнения при условии, что найденное значение обеспечивает минимум . В среднем монотонно возрастает с увеличением А. Таким образом, при выборе количества адресов по критерию «емкость ЗУ» предпочтение следует отдавать одноадресным командам.
Адресность и время выполнения программы. Время выполнения одной команды складывается из времени выполнения операции и времени обращения к памяти.
Для трехадресной команды последнее суммируется из четырех составляющих времени:
• выборки команды;
• выборки первого операнда;
• выборки второго операнда;
• записи в память результата.
Одноадресная команда требует двух обращений к памяти:
• выборки команды;
• выборки операнда.
Как видно, на выполнение одноадресной команды затрачивается меньше времени, чем на обработку трехадресной команды, однако для реализации одной трехадресной команды, как правило, нужно три одноадресных. Этих соображений тем не менее не достаточно, чтобы однозначно отдать предпочтение тому или иному варианту адресности. Определяющим при выборе является тип алгоритмов, на преимущественную реализацию которых ориентирована конкретная вычислительная машина
В самой общей постановке задачи время выполнения алгоритма можно определить выражением:
, (2.5)
где – количество арифметических и логических команд в программе; – время выполнения одной арифметической или логической команды; – количество неарифметических команд; – время выполнения одной неарифметической команды; А = {1, 2, 3} – индекс, определяющий количество адресов в команде. можно определить как , где – количество команд передачи управления (их число в программе не зависит от адресности), – количество вспомогательных команд пересылок данных в регистр сумматора и из него.
Время выполнения как арифметической ( ) так и неарифметической ( ) команды складывается из времени выборки команды из памяти ( – время, затрачиваемое на одно обращение к памяти) и времени считывания/записи данных . В случае арифметической команды следует учесть также вклад на исполнение арифметической операции . Таким образом, имеем:
, (2.6)
, (2.7)
и выражение (2.5) принимает вид:
. (2.8)
Подставляя в (2.8) значения A = 1 и А = 3, можно определить разность времен реализации алгоритма с помощью одноадресных и трехадресных команд, принимая во внимание, что для трехадресных команд :
. (2.9)
Проанализируем «выгодность» той или иной адресности команды в зависимости типа целевого алгоритма. Возможные типы алгоритмов условно разделим на три группы:
• последовательные;
• параллельные;
• комбинированные.
Для последовательного алгоритма результат предшествующей команды используется в последующей. Здесь , так как требуется всего одна команда предварительной засылки числа в сумматор (аккумулятор) в начале вычисления и одна команда пересылки результата в память в конце вычислений. Если обозначить количество арифметических и логических команд в последовательном алгоритме как ( ), то выигрыш во времени для подобного алгоритма ( ) согласно выражению (2.9) составит
, (2.10)
где – количество команд передачи управления. Таким образом, в последовательных алгоритмах чем больше , тем выгоднее оказываются одноадресные команды.
В параллельном алгоритме результат предыдущей команды не используется в последующей и должен быть отослан в память. В этом случае
,
и выигрыш во времени составит
, (2.11)
где – количество операций передачи управления. Таким образом, при целесообразно ориентироваться на трехадресные команды.
В комбинированном алгоритме вычислительный процесс образуют как последовательные, так и параллельные части. При этом
,
и выигрыш во времени с учетом (2.10) и (2.11) составит
, (2.12)
где – количество команд передачи управления в обеих частях алгоритма.
Из (2.12) следует, что при предпочтение следует отдать одноадресным командам.
Двухадресные команды в плане времени реализации алгоритмов занимают промежуточное положение между одноадресными и трехадресными. Несколько лучшие показатели дают полутораадресные команды, в которых, с одной стороны, сохраняются преимущества одноадресных команд для последовательных алгоритмов, а с другой – повышается эффективность реализации параллельных и комбинированных алгоритмов.