|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[147] read \ (controller gcd-loop (assign a (op read)) (assign b (op read)) test-b (test (op =) (reg b) (const 0) (branch (label gcd-done)) (assign t (op rem) (reg a) (reg b)) (assign a (reg b)) (assign b (reg t)) (goto (label test-b)) gcd-done (perform (op print) (reg a)) (goto (label gcd-loop))) Рис. 5.4: Машина НОД, которая считывает входные числа и печатает результат. Команда (assign t (op rem) (reg a) (reg b)) в определении контроллера НОД заменяется на последовательность команд, содержащую цикл, как показано на рисунке 5.6. Упражнение 5.3. Спроектируйте машину для вычисления квадратных корней методом Ньютона, как описано в разделе 1.1.7: (define (sqrt x) (define (good-enough? guess) (< (abs (- (square guess) x)) 0.001)) (define (improve guess) (average guess (/ x guess))) (define (sqrt-iter guess) (if (good-enough? guess) guess (sqrt-iter (improve guess)))) (sqrt-iter 1.0)) Для начала предположите, что операции good-enough? и improve имеются как примитивы. Затем покажите, как развернуть их с помощью арифметических операций. Опишите каждую из версий машины sqrt, нарисовав диаграмму путей данных, и написав определение контроллера на языке регистровых машин. 5.1.3 Подпрограммы При проектировании машины для некоторого вычисления мы часто предпочтем устроить так, чтобы компоненты ее разделялись различными частями вычисления, а не дублировались. Рассмотрим машину, которая включает в себя два вычисления НОД - одно находит НОД содержимого регистров a и b, а другое НОД содержимого регистров c и d. Для начала можно предположить, что имеется элементарная операция gcd, а затем развернуть два экземпляра gcd в терминах более простых операций. На рисунке 5.7 показаны только части получившихся путей данных, относящиеся к НОД. Связи с остальными частями машины опущены. Кроме того, на рисунке показаны соответствующие сегменты последовательности команд контроллера машины. В этой машине два блока вычисления остатка и два блока проверки на равенство. Если повторяющиеся компоненты сложны, как, например, блок вычисления остатка, такое построение машины окажется неэкономным. Можно избежать дублирования компонент путей данных, если использовать для обоих вычислений НОД одни и те же компоненты, при условии, что такое решение не повлияет на остальные вычисления большой машины. Если к тому времени, как контроллер добирается до gcd-2, значения в регистрах a и b не нужны (или если их можно временно сохранить в каких-то еще регистрах), то мы можем изменить машину так, чтобы она использовала регистры a и b, а не c и d, при вычислении второго НОД, так же как и при вычислении первого. Так у нас получится последовательность команд контроллера, показанная на рисунке 5.8. Мы удалили одинаковые компоненты путей данных (так что они снова стали такими, как на рисунке 5.1), но теперь в контроллере содержатся две последовательности команд вычисления НОД, которые различаются только метками. да a <-b b <-t Рис. 5.5: Пути данных и контроллер уточненной машины НОД. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||