что дает введение в состав алу ронов
Что дает введение в состав алу ронов
ЭВМ получили широкое распространение, начиная с 50-х годов. Прежде это были очень большие и дорогие устройства, используемые лишь в государственных учреждениях и крупных фирмах. Размеры и форма цифровых ЭВМ неузнаваемо изменились в результате разработки новых устройств, называемых микропроцессорами.
15 ноября 1971 г. можно считать началом новой эры в электронике. В этот день компания приступила к поставкам первого в мире микропроцессора Intel 4004.
Это был настоящий прорыв, ибо МП Intel-4004 размером менее 3 см был производительнее гигантской машины ENIAC. Правда работал он гораздо медленнее и мог обрабатывать одновременно только 4 бита информации (процессоры больших ЭВМ обрабатывали 16 или 32 бита одновременно), но и стоил первый МП в десятки тысяч раз дешевле.
В систему его команд входило всего 46 инструкций.
Вместе с тем кристалл располагал весьма ограниченными средствами ввода/вывода, а в системе команд отсутствовали операции логической обработки данных (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ), в связи с чем их приходилось реализовывать с помощью специальных подпрограмм. Модуль i4004 не имел возможности останова (команды HALT) и обработки прерываний.
Цикл команды процессора состоял из 8 тактов задающего генератора. Была мультиплексированная ША (шина адреса)/ШД (шина данных), адрес 12-разрядный передавался по 4-разряда.
1 апреля 1972 г. фирма Intel начала поставки первого в отрасли 8-разрядного прибора i8008. Кристалл изготавливался по р-канальной МОП-технологии с проектными нормами 10 мкм и содержал 3500 транзисторов. Процессор работал на частоте 500 кГц при длительности машинного цикла 20 мкс (10 периодов задающего генератора).
В отличие от своих предшественников МП имел архитектуру ЭВМ принстонского типа, а в качестве памяти допускал применение комбинации ПЗУ и ОЗУ.
Система команд насчитывала 65 инструкций. МП мог адресовать память объемом 16 Кбайт. Его производительность по сравнению с четырехразрядными МП возрасла в 2,3 раза. В среднем для сопряжения процессора с памятью и устройствами ввода/вывода требовалось около 20 схем средней степени интеграции.
Возможности р-канальной технологии для создания сложных высокопроизводительных МП были почти исчерпаны, поэтому «направление главного удара» перенесли на n-канальную МОП технологию.
1 апреля 1974 МП Intel 8080 был представлен вниманию всех заинтересованных лиц. Благодаря использованию технологии п-МОП с проектными нормами 6 мкм, на кристалле удалось разместить 6 тыс. транзисторов. Тактовая частота процессора была доведена до 2 Мгц, а длительность цикла команд составила уже 2 мкс. Объем памяти, адресуемой процессором, был увеличен до 64 Кбайт. За счет использования 40-выводного корпуса удалось разделить ША и ШД, общее число микросхем, требовавшихся для построения системы в минимальной конфигурации сократилось до 6 (рис. 1).
Рис. 1. Микропроцессор Intel 8080.
В РФ были введены указатель стека, активно используемый при обработке прерываний, а также два программнонедоступных регистра для внутренних пересылок. Блок РОНов был реализован на микросхемах статической памяти. Исключение аккумулятора из РФ и введение его в состав АЛУ упростило схему управления внутренней шиной.
ПДП открыл зеленую улицу для применения в микроЭВМ таких сложных устройств, как накопители на магнитных дисках и лентах дисплеи на ЭЛТ, которые и превратили микроЭВМ в полноценную вычислительную систему.
Традицией компании, начиная с первого кристалла, стал выпуск не отдельного чипа ЦП, а семейства БИС, рассчитанных на совместное использование.
Структурно–функциональная организация арифметическо–логического устройства (АЛУ)
Назначение и состав АЛУ
Арифметическо–логическое устройство предназначено:
● для реализации стандартного набора арифметических и логических операций над 16–разрядными операндами X, Y, а также многоцикловой операции деления с использованием двух имеющихся примитивов. Ниже приводится список стандартных функций АЛУ: R=X+Y сложение X и Y R=X+Y+CI сложение X и Y с переносом; R=X–Y вычитание Y из X; R=X–Y–CI–1 вычитание Y из X с заемом; R=Y–X вычитание X из Y; R=Y–X–CI–1 вычитание X из Y с заемом; R=–X арифметическое отрицание X;
R=–Y арифметическое отрицание Y; R=Y+1 инкремент Y; R=Y–1 декремент Y; R= PASS X результат равен операнду X; R= PASS Y результат равен операнду Y; R=0 (PASS 0) очистить результат; R=ABS X абсолютное значение X; R=X AND Y логическое умножение; R=X OR Y логическое сложение; R=X XOR Y сложение по модулю 2; R=NOT X логическое отрицание X; R=NOT Y логическое отрицание Y;
● для выдачи информации о состоянии процессора. После выполнения операции АЛУ генерирует (или обновляет) шесть флагов:
В состав блока АЛУ входят (рис. 8.3.1):
Путем установки бита AR_SAT = 1 (позиция MSTAT.3 в регистре режима и статуса процессора) регистр результата AR переводится в режим насыщения, в котором его содержимое при переполнении (флаг AV = 1) фиксирует:
Операция деление в АЛУ
Для операции деления в АЛУ используется дополнительная сдвиговая логика, не показанная на рис. 8.3.1. Деление может быть знаковым и беззнаковым. Деление беззнаковых чисел реализуется с помощью команды–примитива DIVQ, при выполнении которой формируется один бит частного за процессорный цикл. Шестнадцатикратное выполнение команды DIVQ позволяет получить 16 бит частного.
При делении знаковых чисел предварительно определяется знак частного с помощью другой команды–примитива DIVS.
После этого 15–кратное использование команды–примитива DIVQ позволяет получить значение частного с одинарной точностью. Для рассмотрения операции определении знака частного (DIVS) воспользуемся схемой на рис. 8.3.2. В исходном состоянии:
В исходном состоянии:
Для получения правильного результата при делении двух целых чисел (делимое в формате 32.0 и делитель в формате 16.0) необходимо предварительно сдвинуть делимое влево на один разряд, т. е. перевести делимое в формат 1.31.
Назначение и состав умножителя-акумулятора в АЛУ
Умножитель–акумулятор МАС позволяет выполнить умножение двух 16–разрядных операндов (Х*Y), умножение с накоплением суммы и разности (MR+X*Y; MR–X*Y), очистку результата MR, где MR — содержимое регистра результата. В состав умножителя–аккумулятора входят (рис. 8.3.4):
Основные режимы умножителя-аккумулятора АЛУ
Умножитель–аккумулятор обеспечивает выполнение операций в двух стандартных режимах:
Операция переполнения в АЛУ
После выполнения каждой операции в сумматоре–вычитателе формируется флаг переполнения MV, который заносится в позицию ASTAT.6 регистра арифметического статуса ASTAT (табл. 8.3.7). Флаг переполнения устанавливается (MV = 1) в том случае, если результат на выходе сумматора–вычитателя, интерпретируемый как число с дополнением до 2, пересекает 32–битную границу. В этом случае 9 старших (знаковых) разрядов 40–битного регистра результата не равны одновременно 0 или 1.
Операция насыщения в АЛУ
Эта операция выполняется при установленном флаге переполнения (MV = 1) в регистре арифметического статуса ASTAT (табл. 8.3.7). В результате операции содержимое регистра результата MR принимает максимальное:
Операция округления в АЛУ
С помощью опции RND аккумулятор позволяет округлять 40–битный результат до 16–битного. Округленный результат передается в регистр MR или MF. При использовании регистра MR округленный 16–битный результат содержится в регистре MR1. Содержимое регистров MR2, MR1 можно рассматривать как результат, округленный до 24 бит. Устройство сдвига.
Назначение и состав устройства сдвига
Устройство сдвига SHIFTER предназначено для выполнения сдвиговых операций 16–разрядных операндов, включающих арифметические и логические сдвиги, нормализацию и денормализацию, определение экспоненты. Устройство сдвига содержит (рис. 8.3.5):
Принцип работы устройства
Сдвиг входного 16–разрядного операнда осуществляется под действием контрольного кода и сигнала HI/LO, поступающих соответственно на входы С и R сдвигового массива.
Контрольный код представляет собой 8–разрядный операнд, указывающий направление сдвига и число разрядов, на которое следует произвести сдвиг. Положительное значение операнда указывает на левый сдвиг (или сдвиг вверх), отрицательное — на правый сдвиг (или сдвиг вниз). Контрольным кодом могут служить содержимое регистра SE в прямой и инверсной форме или непосредственно команда.
Сигнал HI/LO определяет начальную точку сдвига: в режиме HI сдвиги производятся относительно SR1 (верхней половины выходного поля); в режиме LO — относительно SR0 (нижней половины). Устройство сдвига заполняет все биты 32–битного результата справа от позиции операнда нулями, слева — битом расширения X, который может быть взят из трех источников: знаковый бит операнда, бит переноса АС из регистра ASTAT и 0.
Детектор экспоненты (степени) позволяет выделить степень из входного 16–разрядного операнда и может находиться в трех состояниях, по–разному интерпретирующих степень входного операнда:
Ниже с использованием примеров рассмотрены особенности выполнения операций определения экспоненты блока, немедленных сдвигов, денормализации и нормализации.
Определение экспоненты (степени) блока
Эта операция, выполняемая с помощью команды EXPANDJ, позволяет определить степень самого большого по масштабу числа из массива чисел. При определении экспоненты используется регистр блочных операций SB. В исходном состоянии регистр SB загружен числом –16 (SB = –16), которое поступает на один из входов цифрового компаратора (см. рис. 8.3.5). На другой вход компаратора с выхода детектора экспоненты подается значение экспоненты EXP1 первого элемента массива. Если EXP1>SB, то значение EXP1 загружается в регистр SB, т. е. SB = EXP1.
В противном случае содержимое SB остается неизменным.
Подобным образом обрабатываются последующие элементы массива. После обработки всех элементов массива регистр SB будет содержать наибольшую степень, значение которой лежит в пределах от –15 до 0. Отметим, что операция определения экспоненты является просмотровой операцией. Для выполнения операции нормализации необходимо скопировать содержимое регистра SB в регистр экспоненты SE. В табл. 8.3.2 приведен пример определения экспоненты блока из трех элементов. Из табл. 8.3.2 следует, что степень самого большого из приведенных чисел массива составляет –3.
Команда немедленные сдвиги
С помощью команд немедленного сдвига выполняются операции логического или арифметического сдвига влево (вверх)/вправо (вниз) на требуемое число разрядов. В командах определено направление и размер сдвига. Сдвиг происходит под действием контрольного кода в виде 8–битного знакового числа, который берется из команды. Регистр экспоненты SE в немедленных сдвигах не задействован.
Примеры. Рассмотрим случай, когда входной операнд в виде 16–разрядного двоичного кода 10110110 10100011 (0xB6A3) загружается в регистр операндов SI.
Логические сдвиги
Денормализация
Денормализация числа — это его сдвиг на заданное число разрядов, которое хранится в регистре экспоненты SE. Поэтому при денормализации контрольный код берется из регистра SE, а не из команды как при немедленных сдвигах. Фактически денормализация преобразует число с плавающей точкой в число с фиксированной точкой. Пример. Покажем особенности этой операции на примере денормализации числа с двойной точностью. Пусть содержимое регистра SE = –3. В этом случае необходимо выполнить в два этапа (в любой последовательности):
Нормализация
Нормализация числа в виде дополнительного кода — ото такой сдвиг числа, при котором остается только один знаковый бит. При выполнении операции нормализации фиксируется число разрядов, на которое сдвигается операнд. Поэтому операцию нормализации можно считать как преобразование числа с фиксированной точкой в число с плавающей точкой, имеющее порядок и мантиссу. На первом этапе нормализации чисел с одинарной точностью по команде EXP определяется порядок числа, на втором по команде NORM реализуется требуемый сдвиг.
Обе команды выполняются с использованием модификаторов HI или LO, а команда NORM дополнительно распознает также модификаторы PASS и OR.
При выполнении команды NORM используется содержимое регистра экспоненты SE со знаком минус (рис. 8.3.5), чтобы произвести сдвиг в нужную сторону. Нормализация чисел с двойной точностью выполняется по приведенной схеме, однако на первом этапе старшая половина числа обработать первой. При определении порядка старшей половины числа значение порядка загружается в регистр экспоненты SE. Младшая половина числа изменит содержимое SE только в том случае, когда все биты старшей половины являются знаковыми, т.е. при SE = –15. В этом случае в регистр SE будет загружен порядок (–16…–31, табл. 8.3.1) младшей половины числа. Зафиксированное в SE значение порядка используется на втором этапе для сдвига обоих частей числа с двойной точностью. При этом порядок обработки (старшей или младшей половины числа) может быть выбран любой с помощью модификаторов HI и LO. Первая половина числа нормализуется без модификатора OR, вторая половина числа — с модификатором OR, чтобы получить правильный результат.
Состав АЛУ и принципы выполнения операций
За чуть более чем четвертьвековую историю микропроцессоры прошли поистине гигантский путь. Первый чип Intel 4004 работал на частоте 750 Кгц, содержал 2300 транзисторов и стоил около 200 долларов. Производительность его оценивалась в 60 тысяч операций в секунду. На сегодняшний день рекордные показатели принадлежат микропроцессорам Alpha 21264 фирмы DEC и составляют: 600 МГц, 15.2 миллиона транзисторов, 2 миллиарда операций в секунду и около 300 долларов соответственно.
В формируемом ежегодно в США группой экспертов перечне “критических технологий”, охватывающем практически все направления производства, исследований и разработок, оказывающих влияние на военный и экономический статус страны, микроэлектронные технологии традиционно занимают первое место.
Универсальные микропроцессоры предназначаются для применения в вычислительных системах : персональных ЭВМ, рабочих станциях, а в последнее время и в массово-параллельных супер-ЭВМ. Основной их характеристикой является наличие развитых устройств для эффективной реализации операций с плавающей точкой над 64 разрядными и более длинными операндами. Предназначаются в основном для проведения научно-технических расчетов.
Цифровые сигнальные процессоры рассчитаны на обработку в реальном времени цифровых потоков, образованных путем оцифровывания аналоговых сигналов. Это обусловливает их сравнительно малую разрядность и преимущественно целочисленную обработку. Однако современные сигнальные процессоры способны проводить вычисления с плавающей точкой над 32-40 разрядными операндами. Кроме того, появился класс медийных процессоров, представляющих собой законченные системы для обработки аудио- и видеоинформации.
Наибольшей специализацией и разнообразием функций обладают микроконтроллеры, используемые во встроенных системах управления, в том числе и в бытовых приборах. Общее число кристаллов с различными системами команд превышает 500, и все они, в силу существования изделий с их использованием, имеют свою устойчивую долю рынка.
В данной курсовой работе на примере цифрового сигнального процессора семейства ADSP-21xx производится разбор команд умножения и деления, выполняемых в АЛУ.
Обобщенная структурная схема персонального компьютера
Центральный процессор в персональных компьютерах представляет собой микропроцессор, то есть построен на одной микросхеме (БИС,СБИС). В его состав входят:
Внутренняя память процессора :
Постоянная память устройства управления
Модули оперативной и постоянной памяти, связаны с микропроцессором напрямую. Остальные устройства ( монитор, клавиатура, накопители на магнитных носителях и т.д.) связаны с микропроцессором через контроллеры ввода-вывода, которые, в свою очередь, связаны с микропроцессором через системную шину.
Микропроцессор является ядром ЭВМ (рис.1). Он осуществляет обработку данных и функции управления системой. К функциям управления системой относятся :
инициирование операций ввода-вывода
управление доступом к основной памяти ( работа с виртуальной памятью )
организация многозадачных режимов работы
Организация центрального процессора определяется архитектурой и принципами работы ЭВМ ( состав и форматы команд, организация памяти ). Логическая структура включает ряд функциональных средств:
средства обработки информации
средства управления системой и программами
управление интерфейсом и каналами
Структурно эти средства разбиваются на центральное устройство управления, АЛУ, внутреннюю память и управляющие устройства, связанные с конкретными устройствами вычислительной машины.
Центральное устройство управления принимает и расшифровывает команды, формирует адреса команд и операндов, формирует последовательности управляющих сигналов и обеспечивает координацию работы всех функциональных узлов, посредством выработки синхронизирующих сигналов.
Внутренняя память входит в состав первого уровня и связана с АЛУ и другими блоками центрального процессора непосредственно и имеет скорость работы соизмеримую со скоростью работы блоков процессора.
Управляющая память входит в состав центрального устройства управления и относится к классу постоянной памяти. Этот вид памяти используется для хранения микропрограмм. Ее отличает очень высокое быстродействие и небольшая емкость, определяющаяся количеством команд в системе команд центрального процессора.
Регистровая память выполнена на триггерных элементах и входит в состав центрального процессора. Емкость ее невысока, скорость высокая, но меньше, чем у управляющей памяти. Основной характеристикой данного типа памяти является разрядность
Общие сведения, функции и классификация
Арифметико-логическое устройство функционально можно разделить на две части :
а) микропрограммное устройство (устройство управления), задающее последовательность микрокоманд (команд);
б) операционное устройство (АЛУ), в котором реализуется заданная последовательность микрокоманд (команд).
Функции регистров, входящих в АЛУ:
Рг1 – сумматор (или сумматоры) – основной регистр АЛУ, в котором образуется результат вычислений;
Рг2, РгЗ – регистры слагаемых, сомножителей, делимого или делителя (в зависимости от выполняемой операции);
Рг4 – адресный регистр (или адресные регистры), предназначен для запоминания (иногда и формирования) адреса операндов и результата;
Ргб – k индексных регистров, содержимое которых используется для формирования адресов;
Рг7 – l вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.
Часть операционных регистров является программно-доступной, то есть они могут быть адресованы в команде для выполнения операций с их содержимым. К ним относятся :
некоторые вспомогательные регистры.
Сложность логической структуры АЛУ в определенной степени можно охарактеризовать количеством отличающихся друг от друга микроопераций, необходимых для выполнения всего комплекса задач, поставленных перед АЛУ. На входе каждого регистра собраны соответствующие логические схемы, обеспечивающие такие связи между регистрами, что позволяют реализовать заданный набор микроопераций.
Выполнение операций над словами сводится к выполнению последовательности микрокоманд, которые управляют передачей слов в АЛУ и действиями по преобразованию слов. Порядок выполнения микрокоманд определяется алгоритмом выполнения операций. Следовательно, связи между регистрами АЛУ и функции, которые должны выполнять регистры, зависят в основном от принятой методики выполнения операций : арифметических, логических и специальной арифметики.
Перечень операций, выполняемых в АЛУ, зависит от назначения цифровой вычислительной машины и от функций, выполняемых АЛУ при обеспечении работы остальных устройств машины. При представлении операций в виде последовательностей микроопераций АЛУ должно состоять из элементов; реализующих эти микрооперации.
Для получения более простой схемы АЛУ алгоритмы арифметических и логических операций следует выбирать из условия получения минимального набора микроопераций. При этом необходимо учитывать требование обеспечения заданного быстродействия АЛУ: слишком ограниченный набор микроопераций может привести к “длинным микропрограммам некоторых операций”, что увеличивает время выполнения данных операций.
Алгоритмы сложения (вычитания) и умножения в АЛУ
Структурная схема микропрограммы сложения показана на рис. 4. Выполнение этого алгоритма состоит в следующем:
Для того, чтобы структурная схема, показанная на рис. 4 могла выполнять операцию вычитания, достаточно перед выполнением операции проинвертировать знак второго слагаемого.
В начале операции все регистры устанавливаются в нулевое состояние.
Множимое и множитель располагаются в определенных регистрах, предусматриваются также регистры, в которых образуется сумма частичных произведений.
Анализируется младший разряд множителя: если он имеет значение “1”, то к сумме частичных произведений прибавляется множимое.
Производится сдвиг суммы частичных произведений и множителя на один разряд вправо.
Структурная схема микропрограммы умножения показана на рис. 6. Ввиду громоздкости деление здесь не рассматривается.
Цифровые сигнальные процессоры
использование гарвардской архитектуры
сокращение длительности командного цикла
применение аппаратного умножителя
включение в систему команд специальных команд цифровой обработки сигнала
Конвейерный режим используется для сокращения командного цикла. Обычно применяется двух- или трехкаскадный конвейер, что позволяет на различных стадиях выполнения одновременно обрабатывать две или три инструкции.
Алгоритм выполнения сложения и деления в арифметико-логическом устройстве, на примере цифрового сигнального процессора семейства ADSP-21xx.
Все устройства в процессорах этого семейства 16-и битные с фиксированной точкой. Почти все операции подразумевают представление знаковых чисел в форме дополнения до двух. Остальные же используют беззнаковые числа или просто строки битов. Специальная поддержка имеется для многословных вычислений и блочной плавающей арифметики.
Арифметика и типы данных
Это простейшая форма записи; 16 бит составляют строку битов. Примерами операций, в которых используется этот формат, являются логические операции NOT,AND,OR,XOR. Эти операции, исполняемые АЛУ, считают, что их аргументы строки битов и не заботятся о знаке или о положении десятичной точки
Беззнаковые двоичные числа могут принимать только положительные значения и потому имеют почти вдвое больший диапазон, чем знаковые числа той же длины. Младшие слова чисел с увеличенной точностью используются как беззнаковые числа.
Числа со знаком в форме дополнения до двух
Для арифметики процессоров семейства термин “знаковый” всегда обозначает числа. Записанные в форме дополнения до двух. Многие инструкции процессора подразумевают или поддерживают арифметику по модулю 2.
Арифметические операции АЛУ
Все арифметико-логические операции трактуют свои операнды и получают результаты как 16 разрядные битовые строки, за исключением примитивов знакового деления (DIVS). Различные флаги трактуют результаты как числа со знаком: флаг переполнения (AV) и флаг отрицательного числа (AN).
Логика флага переполнения основана на арифметике по модулю 2. Он устанавливается если знаковый бит изменялся непредсказуемым образом. Например при сложении двух положительных чисел, результат также должен быть положителен. Если же происходит переполнение ( перенос в знаковый бит, устанавливающий его в единицу, так что результат получается отрицательным ), то устанавливается бит AV.
Логика флага переноса основана на беззнаковой арифметике. Этот флаг устанавливается в том случае, если генерируется перенос из старшего разряда числа, который не может быть записан в результат. Этот флаг очень полезен при операциях с многословными представлениями чисел для младших слов.
Результаты умножения представляют собой битовые строки. Операнды же обрабатываются так, как это указано в самой инструкции ( умножение знаковых, умножение беззнаковы, умножение знакового на беззнаковое или операция округления ). 32-битный результат из умножителя считается знаковым, так как происходит знаковое расширение на все 40 бит наборов регистра умножителя ( MR ).
Все процессоры семейства поддерживают два формата коррекции результата умножения :
целый ( также называется 16.0 )
Когда процессор умножает два 1.15 операнда, результат является числом в формате 2.30 ( два знаковых бита и 30 дробных бит ). В дробном режиме МАС автоматически сдвигает результат умножения влево на один бит перед переносом его в регистр результата ( MR ). После этого сдвига формат результата становится 1.31, что позволяет округлить его до формата 1.15.
В целочисленном режиме сдвиг влево не происходит. Например, если операнды формата 16.0, то 32-битный результат умножения будет в формате 32.0. Более того здесь сдвиг не нужен, ибо он изменит значение результата.
Арифметика устройства сдвига
Многие сдвиговые операции созданы специально для знаковых или беззнаковых чисел: логические сдвиги предполагают беззнаковые операнды, тогда как арифметические сдвиги предполагают знаковые операнды.
Экспоненциальная логика предполагает знаковые операнды и поддерживает блочную плавающую точку, которая тоже базируется на формате дополнения до двух.
Арифметико-логическое устройство обеспечивает стандартный набор арифметических и логических операций. Также имеется два примитива деления, которые позволяют реализовывать многоцикловое деление.
На рисунке 7 показана блок-схема АЛУ.
переполнение результата ( AV )
состояние частного ( AQ )
В конце цикла все сигналы арифметического статуса изменяют состояния соответствующих битов в регистре арифметического статуса ( ASTAT ).
Входной порт X может принимать данные из двух источников : из блока регистров АХ или с шины результата. Шина результатов ( R ) соединяет выходные регистры всех вычислительных устройств, позволяя им быть непосредственно операндами инструкций.
Блок регистров АХ состоит из двух регистров : АХ0 и АХ1. Эти регистры читаемы и могут быть записаны через шину DMD. Выход блока регистров АХ таков, что один из них может
обеспечивать операнд для АЛУ, в то время, как другой может записываться в память через шину DMD.
Входной порт Y также может принимать данные из двух источников : из набора регистров АY или из регистра обратной связи AF. Блок регистров AY состоит из двух регистров AY0 и AY1. Эти регистры читаемы и могут быть записаны через шину DMD, а также могут быть записаны через шину PMD. Выход блока регистров AY совпадает по своим возможностям с блоком регистров АХ.
Набор инструкций позволяет осуществить чтение этих регистров с шины PMD, но при этом нужно использовать устройство обмена между DMD-PMD шинами.
Любые регистры, связанные с АЛУ могут как читаться, так и писаться в одном цикле. Регистры читаются в начале цикла и записываются в конце. Новое значение, записанное в регистр, не может быть считано до начала следующего цикла.
АЛУ содержит два набора регистров AR, AF, АХО, АХ1, AYО, AY1. В каждый момент времени домен лишь один набор. Дополнительный набор регистров может быть сделан активным (например, при обработке прерывания) для очень быстрого переключения контекстов. Новая задача, такая, как обработка прерывания, может быть выполнена без запоминания текущего состояния регистров АЛУ.
Выбор первичного или вторичного набора регистров контролируется битом 0 в регистре режима и статуса процессора (MSTAT). Если этот бит нулевой, используется первичный набор, если же он единица, то используется вторичный набор регистров.
Вот список стандартных функций АЛУ:
R=X+Y | сложение Х и Y |
R=X+Y+Cl | сложение Х и Y с переносом |
R=X – Y | вычесть Y из Х |
R=X – Y – Cl – 1 | вычесть Y из Х с заемом |
R=Y – Х | вычесть Х из Y |
К=Y – X – Cl – 1 | вычесть Х из Y с заемом |
R = – X | арифметическое отрицание Х |
R= – Y | арифметическое отрицание Y |
R=Y+1 | инкремент Y |
R=Y – 1 | декремент Y |
R=PASS Х | результат равен операнду Х |
R=PASS Y | результат равен операнду Y |
R=O (PASS 0) | очистить результат |
R=ABS Х | результат равен абсолютному значению Х |
R=X AND Y | логическое и (AND) Х и Y |
R=X OR У | логическое или (OR) Х и У |
R=X XOR У | исключающее логическое или (XOR) Х и У |
R=NOT Х | логическое отрицание Х |
R=NOT Y | логическое отрицание У |
Для обработки чисел с повышенной точностью предусмотрен сигнал переноса и флаг переноса (AC). Операция сложения с переносом (+Cl) предназначена для сложения «верхних» частей чисел с повышенной точностью. Вычитание с заемом (+CI-1) предназначено для вычитания «верхних» частей чисел с повышенной четностью.
Режим “насыщения” и “защелки”
Реализация режима насыщения существенно отличается от таковой в МАС-е, где режим насыщения указывается в самой инструкции.
Регистр АF не подчиняется режиму насыщения, поэтому если результатом операции, является регистр АF, произойдет циклический переход, но флаги отразят тот факт, что результат был насыщен.
Режим «защелки» переполнения АLU, разрешаемый битом 2 в регистре режима и статуса процессора (MSTAT), приводит к тому, что флаг переполнения АV остается поднятым после переполнения, несмотря на то, что последующие инструкции могут не генерировать переполнения. В этом режиме флаг АV может быть очищен только прямой записью нуля через шину DMD.
Функция деления реализуется дополнительной сдвиговой логикой, не показанной на рисунке 7. Деление достигается с помощью двух примитивов деления. Они используются для получения невосстанавливаемого условного алгоритма делением, использующего сложения и вычитания. Деление может быть знаковым и беззнаковым; однако, делитель и делимое должны быть одинакового типа.
Деление с одинарной точностью, с 32-битным делимым и 16-битным делителем, дающее 16-битное частное, выполняется за 16 циклов. Также могут быть вычислены частные меньшей и большей разрядности. Делитель может содержаться в АХ0, АХ1 или любом из R регистров. Старшая часть знакового делимого может содержаться в АY1 или AF. Старшая часть беззнакового делимого может содержаться только в AF. Младшая часть делимого должна быть в АY0. После завершения операции деления частное находится в AY0.
Первый из двух примитивов деления, «делить знак» (DIVS), выполняется в начале деления при делении знаковых чисел. Эта инструкция получает знаковый бит делимого, проведя операцию “исключающее или” со знаками делимого и делителя. Регистр AY0 сдвигается на 1 разряд, так что вычисленный знаковый бит помещается в самый младший (правый) разряд. Полученный знаковый бит также загружается во флаг АQ регистра арифметических флагов. Самый старший (левый) бит AYO сдвигается в младший бит AF, а оставшиеся старшие 15 бит AF загружаются из 15 младших бит регистра R из АЛУ, что в свою очередь пересылает содержимое входного регистра Y прямо в регистр результата R. Последовательный эффект состоит в том, чтобы сдвинуть влево пару регистров AF-AYO и переслать знак частного в самый младший разряд. Рисунок 8 иллюстрирует операцию DIVS.
При делении беззнаковых чисел инструкция DIVS не используется. Вместо этого флаг АQ в регистре арифметического состояния должен быть вручную очищен. Этот бит сигнализирует последующим операциям о том, что частное должно быть положительным.
Второй примитив деления – инструкция «делить частное» (DIVQ), которая генерирует 1 бит частного за цикл и выполняется повторно, чтобы подсчитать оставшиеся разряды частного. Для беззнакового деления с одинарной точностью инструкция DIVQ выполняется 16 раз, чтобы получить 16 бит частного. Для знакового деления с одинарной точностью инструкция DI VQ выполняется 15 раз, после вычисления знакового бита инструкцией DI VS. Инструкция сдвигает регистр AYO влево на 1 бит так, что новый бит частного помещается в младший бит. Состояние флага АQ (полученное во время предыдущих операций) определяет инструкцию, используемую для получения частичного остатка. Если AQ=1, то АЛУ добавляет делитель к частичному остатку в AF. Если AQ=O, то АЛУ вычитает делитель из частичного остатка в AF. Регистр результата К загружается со смещением в AF так, как это описано для инструкции DIVS. Флаг AQ считается как исключающее логическое или (XOR) старшего бита делителя и старшего бита регистра результата АЛУ, а очередной бит частного получается инвертированием этого значения. Полученный бит частного загружается в младший бит регистра АYО, который затем сдвигается влево на 1 бит. Рисунок 9 иллюстрирует операцию DlVQ.
Некоторые изменения формата должны использоваться чтобы гарантировать правильность частного. Например, если оба операнда знаковые и полностью дробные (делимое в формате 1.31 и делитель в формате 1.15), результат полностью дробный (в формате 1.15) и поэтому делимое должно быть меньше делителя для получения верного результата.
Чтобы разделить 2 целых (делимое в формате 32.0 и делитель в формате 16.0) и получить целый результат (в формате 16.0),надо сдвинуть делимое на 1 бит влево (получить формат 1.31) перед делением.
Переполнение алгоритма случается в том случае, если частное не может быть представлено в формате частного или если делитель равен нулю или меньше допустимого.
МАС обеспечивает высокоскоростное умножение, умножение с накоплением данных (разности), насыщение и очистку результата. Обратная связь позволяет части результата MAC использоваться в качестве одного из множимых в следующем цикле.
Рисунок 10 показывает блок-схему МАС. Умножитель имеет два входных 16-битных порта – Х и У и один 32-битный выходной порт результата Р. 32-битное произведение передается 40-битному сумматору, который прибавляет или вычитает текущий результат к регистру результата (MR) или непосредственно помещает текущий результат в регистр MR. Ширина регистра MR составляет 40 бит. Фактически он состоит из трех регистров: MRО и MR1, 16-битных, и 8-ми битного MR2.
Сумматор имеет ширину, большую чем 32 бита для того, чтобы разрешить промежуточные переполнения при выполнении нескольких операций подряд. Флаг МV (multiplier overflow, переполнение умножителя) устанавливается, если значащие биты появились выше 32-битной границы регистра МR.
Входные/выходные регистры МАС, а также запись/чтение в них, аналогичны таковым для АЛУ.
Результат работы сумматора загружается либо в регистр обратной связи МF, либо в регистр результата MR. Регистр обратной связи MF позволяет использовать биты 16-31 результата непосредственно, как операнд Y в следующем цикле. Регистр результата (MR) шириной 40 бит состоит из трех регистров: MR0,MR1 и MR2. Каждый из этих регистров может быть напрямую загружен через шину DMD и записан через шину DMD или на шину промежуточных результатов R.
MАС, аналогично АLU, содержит второй банк регистров, как показано на рисунке 4.6, за первичными регистрами. Выбор первичного или вторичного набора регистров контролируется битом 0 в регистре режима и статуса процессора (MSTAT).
Список выполняемых МАС-ом операций :
Х*Y | умножить Х на Y |
MR+X*Y | умножить Х на Y и добавить результат к содержимому MR |
MR–X*Y | умножить Х на Y и вычесть результат из содержимого MR |
0 | очистить регистр результата MR |
МАС обеспечивает два стандартных режима умножения/аккумулирования: дробный режим (для чисел в формате 1.15) и целый режим для целых в формате 16.0.
В дробном режиме формат 32-битного выходного регистра регулируется, то есть, происходит знаковое расширение и сдвиг содержимого на 1 бит влево перед добавлением в MR. Например, 31-ый бит регистра Р соответствует 32-му биту регистра MR (что в свою очередь соответствует биту 0 регистра MR2), a нулевой бит регистра Р соответствует 1-му биту регистра MR (что в свою очередь соответствует биту 1 регистра MRO). Младший бит MR просто очищается. Оставшиеся семь бит MR2 заполняются знаком регистра Р (то есть 31 битом Р).
В целом режиме 32-битный регистр результата не сдвигается при добавлении к регистру MR. Восемь бит MR2 заполняются знаком Р.
Режим выбирается 4-ым битом регистра режима и состояния (MSTAT). Единица в этом бите означает целочисленный режим; ноль означает дробный режим. В обоих режимах содержимое регистра Р подается на вход сумматора, который прибавляет или вычитает новое произведение из текущего содержимого регистра MR, чтобы сформировать окончательный результат в R.
Для реализации вычислений с повышенной точностью, умножитель позволяет осуществлять любые комбинации операндов Х и Y (умножать знаковое на знаковое (SS),беззнаковое на знаковое (US), беззнаковое на беззнаковое (UU), знаковое на беззнаковое (SU) ).
Форматы операндов записываются как часть инструкции. Поэтому они динамически выбираются из каждой инструкции умножения.
8-битный регистр MR2 при записи/чтении располагается в восьми младших битах шин данных. При чтении MR2 через шину DMD или на шину промежуточных результатов (R) происходит его знаковое расширение до 16 бит. MR1 также имеет возможность автоматического расширения знака. Тогда MR1 загружается с шины DMD, все биты в MR2 автоматически заполняются знаковым битом МR1, так что MR2 служит расширением MR1. Чубы загрузить в регистр МR2 значение, отличное от знакового расширения MR1, надо загружать MR2 после загрузки МR1. Загрузка же MR0 не влияет ни на один из оставшихся регистров; знаковое расширение не происходит при загрузке MR0.
Переполнение, насыщение и окружение в МAС
Регистр МR имеет возможность выполнять операцию насыщения, то есть устанавливаться в максимальное положительное (отрицательное) число при переполнении. Операция насыщения зависит от флага МV в регистре ASTAT и знакового бита регистра MR2. Следующая таблица показывает эффект операции насыщения МR
Флаг MV Старший бит МR2
Результат после насыщения | ||
0 | 1 или 0 | без изменения |
1 | 0 | 00000000 0111111111111111 1111111111111111- максимальное положительное число |
1 | 1 | 11111111 1000000000000000 0000000000000000- максимальное отрицательное число |
Насыщение в МАС – это операция (в отличии от режима в АЛУ). Она предполагается для использования после умножений/аккумуляций, так чтобы предварительные результаты не вызывали насыщения, ибо это приведет к потере точности.
Переполнение выше 40-го бита регистра MR2 не должно допускаться. Знак числа теряется безвозвратно при этом и насыщение может получить совершенно противоположный результат. Но требуется более 255 простых переполнений (типа MV), чтобы такое могло случиться.
Аккумулятор имеет возможность округлить 40-битный результат R до 16-битного. Округление должно быть указано в инструкции с помощью опции (RND). Округленный результат направляется в регистр MR или MF. Когда происходит округление с регистром MR в качестве выходного, содержимое MRl представляет из себя округленный 16-битный результат, а содержимое регистров MR2 и MR1 может рассматриваться как результат, округленный до 24 бит.
Аккумулятор использует несмещенную схему округления. Обычный метод смещенного округления производится добавлением числа 0х8000 к MR (то есть если MR0 больше или равно 0х8000, то MR1/MR2 инкрементируются), при этом округленный результат находится в MR2 и MR1. Но этот метод приводит к общему положительному смещению, т.к. при среднем значении (когда регистр MRO равен 0x8000) число округляется вверх. Аккумулятор же устраняет это смещение, всегда устанавливая бит 0 MR1 в ноль после округления, если МR0 содержит 0х8000. Таким образом, происходит округление четных значений MR1 вниз и нечетных значений MR1 вверх, что в свою очередь приводит к равнозначности операции округления на больших выборках чисел.
Пример типичной операции округления:
Пример 1 | MR2 | MR1 | MR0 |
Неокругленные данные | xxxxxxxx | xxxxxxxx00100110 | 1xxxxxxxxxxxxxxx |
Бит 15=1 Добавим 1 к 15-му биту и учтем перенос | 1 ( 0х8000) | ||
Округленное значение | xxxxxxxx | xxxxxxxx00100111 | 0xxxxxxxxxxxxxxx |
Компенсация становится видимой, если MRO=0x8000.
Пример 2 | MR2 | MR1 | MR0 |
Неокругленные данные | xxxxxxxx | xxxxxxxx00100110 | 100000000000000 |
Бит 15=1
Добавим 1 к 15-му биту и учтем перенос | 1 ( 0х8000) | ||
Так как бит 16 =1, присвоим ему 0 | |||
Округленное значение | xxxxxxxx | xxxxxxxx00100111 | 000000000000000 |
Сравнительный анализ выполнения арифметических команд в различных типах процессоров
Операция | Время выполнения | |
i486DX2-66 | ADSP-21xx | |
БПФ на 1024 точки | 20 ms | 2.23 ms |
Таким образом получается, что тщательно продуманные реализации алгоритмов арифметических операций и схемных решений ведут к увеличению быстродействия центрального процессора и, как следствие, получению более широких возможностей работы с информацией.