КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Исполнительное устройство
Основные регистры. Определен комплект регистров. Основные регистры:
Аккумулятор (ACC). Главный регистр – аккумулятор (ACC). Он хранит результаты операций в АЛУ. Он поддерживает одноцикловые операции перемещения, сложения, вычитания и сравнения с данными из 32-разрядной памяти данных. Он также принимает 32-разрядный результат от умножителя. Для ACC возможен доступ и к части его содержимого: AH – старшая часть, AL – младшая часть. Для каждого из них можно получать младший LSB или старший MSB байты. Статусный регистр ST0. В нем запоминаются флаги состояния ACC Флаги (по умолчанию все сброшены): · Расширение знака (Sign-extension mode - SXM), бит 0. Если SXM=1, то при загрузке 16-разрядного числа со знаком в 32-разрядный ACC оно перед загрузкой расширяется по знаку (пустые биты заполняются битом знака) до 32-разрядного представления. · Переполнение (Overflow mode -OVM), бит 1. Если OVM = 0 (режим переполнения выключен), то переполнения считаются в поле OVC в ACC. Если OVM = 1 (режим переполнения включен), то переполнения не подсчитываются, в ACC заносятся значения насыщения. · Флаг теста/контроля (Test/control - TC), бит 2. · Перенос (Carry - C), бит 3. · Флаг нуля (Zero flag - Z), бит 4. Если результат операции равен 0, то Z=1. · Флаг отрицательного значения (Negative - N), бит 5. Если результат операции отрицательное число, то N=1. · Флаг запрета переполнения (Latched overflow flag - V), бит 6. Если результат операции вызывает переполнения в регистре хранения результата, то V=1 и защелкивается. Если нового переполнения нет, то V не меняется, остается защелкнутым от предыдущего переполнения. · Поле режима сдвига произведения (Product shift mode bits - PM). Поле в битах 7…9. 3-разрядное значение определяет режим сдвига для значения, получаемого из регистра произведения P. Возможные режимы:.
· Счетчик переполнения операций с числами со знаком (Overflow counter - OVC). Для чисел без знака OVCU. Поле в битах 10…15. Счетчик 6-разрядный со значениями от -32 до 31. При OVC=0 содержимое ACC не меняется. При OVC>0 содержимое ACC = насыщение по максимуму ($7FFFFFFF), OVC = 0. При OVC<0 содержимое ACC = насыщение по минимуму ($8000000), OVC = 0. · Статусный регистр ST1 В нем запоминаются флаги состояния разных узлов. Флаги (по умолчанию все сброшены): · Флаг глобальной маски прерывания (Inerrupt global mask - INTM), бит 0. Если INTM=1, то маскированное прерывание запрещено. · Флаг массирования отладки (Debag enable maskt -DBGM), бит 1. Если DBGM = 1, то отладка запрещена. · Флаг режима адресации (PAGE0). Размещен в бите 2. При PAGE0=0 – адресация через стек, при PAGE0=1 – прямая. · Флаг размещения вектора прерываний (VMAP), бит 3. При VMAP=0 вектор внизу памяти программ (адреса $000000…$000003F), при VMAP=1 вектор вверху памяти программ (адреса $3FFFC0…$3FFFFF). · Флаг размещения указателя стека (Stack pointer alignment - SPA), бит 4. При SPA=0 указатель стека SP не может занимать четные адреса. · Статус инструкции цикла (LOOP), бит 5. При LOOP=1 то под операцию LOOP отводится два этапа конвейера. · Флаг разрешения эмуляции (EALLOW), бит 6. При EALLOW=1 разрешены эмуляция и доступ к защищенным регистрам. · Флаг режима только чтение (IDLESTAT), бит 7. Устанавливается IDLESTAT=1 при выполнении инструкции IDLE. Флаг сбрасывается командами, отменяющими этот режим. · Флаг режима адресации (AMODE), бит 8. · Флаг совместимости режима (OBJMODE), бит 9. При OBJMODE=0 режим C27x, при OBJMODE=1 режим C28x. · Флаг размещения M0, M1 (M0M1MAP), бит 11. Для C28x.обязательно M0M1MAP=1. · Статус выходного сигнала XFS (XF), бит 12. При XF=1 совместимость с C2xLP. · Указатель на дополнительные регистры (Auxiliary register pointer.- ARP). Поле размещено в битах 13-15. В него заносится 3-разрядный номер регистра (0-7). · Умножитель C28x содержит встроенный аппаратный умножитель, выполняющий умножение за 1 такт. Возможны: · умножение16х16 · умножение16х16 с накоплением MAC · умножение 32х32 · умножение 32х32 с накоплением DMAC Концептуальная блок-схема умножителя в режиме 16x16. Умножитель получает 16-разрядные сомножители. Первый заносится в регистр T (старшая часть XT)из памяти данных или регистра. Второй извлекается из мультиплексора MUX, который получает значение из памяти данных или регистра, либо из кода инструкции. 32-разрядное произведение через MUX заносится в регистр произведения P (и может использоваться как операнд) и в аккумулятор ACC (для выполнения операций MAC). Концептуальная блок-схема умножителя в режиме 32x32. Умножитель получает 32-разрядные сомножители. Первый заносится прямо из памяти данных или регистра Второй извлекается из MUX, который получает значение из памяти программ или регистра XT, который загружается из памяти данных или регистра. 64-разрядное произведение содержит 32-разрядные части (старшую и младшую). Одна из них через MUX и заносится в регистр произведения P.
Сдвигатель. Сдвигатель имеет 64 разряда и поддерживает операции сдвига влево и вправо. Входные операнды могут иметь длину 16, 32 или 64 разряда. Возможные сдвиги: · Логический влево. Старшие биты теряются, младшие заполняются нулями. · Логический вправо. Младшие биты теряются, старшие заполняются нулями. Последний выдвигаемый бит заносится в бит переноса С. · Арифметический вправо. Младшие биты теряются, последний выдвигаемый бит заносится в бит переноса С. В старших расширение бита знака Sign. · Циклический влево. Старшие биты по цепочке переносятся в младшие (в цепочку входит бит переноса С)аполняются нулями.ряда.га влево и вправо.. · Циклический вправо. Младшие биты по цепочке переносятся в старшие (в цепочку входит бит переноса С)аполняются нулями.ряда.га влево и вправо.. Прерывания и приоритеты. Прерывание это сигнал, генерируемый аппаратно или программно, по которому ЦП останавливает текущую программу и переходит к выполнению подпрограммы обработки прерывания. Обычно прерывания генерируются периферийными или аппаратными блоками, для того чтобы получить данные от ЦП. Различаются прерывания: · Маскируемые. Они могут быть блокированы или отменены другими устройствами. Каждому маскируемому прерыванию присваивается приоритетный номер (номер ниже – приоритет выше). Маскируемое прерывание выполняется, если нет запросов прерывания с более высокими приоритетами. · Немасккируемые. Они не могут быть блокированы или отменены другими устройствами. Обработка прерывания включает 4 фазы: · Прием запроса прерывания. · Обработка запроса. Если прерывание маскируемое, то нужно проверить условия разрешения прерывания. Немаскируемое прерывание должно выполняться немедленно. · Подготовка к обработке прерывания. Завершить текущую инструкцию, выполнить операции в конвейере, сохранить контекст программы (значения регистров, текущее состояние счетчика команд). Извлечь из вектора прерывания адрес процедуры обработки и загрузить его в программный счетчик. · Запустить процедуру обработки прерывания. После завершения происходит возврат в текущую программу. C28x поддерживает 32 вектора прерывания: 19 приоритетных прерываний с приоритетами 1…19 (19 – нижний), 12 неприоритетных прерывания пользователя, 1 прерывание при неправильной инструкции. Каждый вектор включает стартовый адрес процедуры обработки прерывания (Interrupt Service Routine - ISR). Он накапливается в двух соседних словах памяти. Конвейер. Для повышения производительности C28x использует защищенный 8-уровневый конвейер. На каждом уровне конвейера может быть команда для аппаратного блока ЦП (F1, F2, D1, D2, R1, R2, X, W). Конвейер работает независимо от действий программиста. Он управляется командами, заложенными в ЦП. Конвейер предотвращает возможность записи и чтения по одному и тому же адресу в порядке, не предусмотренном программистом. Если такое происходит, то ЦП вставляет в конвейер пустые операции. На рисунке выделен интервал времени, когда одновременно работают 8 блоков ЦП. За счет распараллеливания конвейер позволяет C28x работать на высокой скорости, не прибегая к использованию дорогой высокоскоростной памяти. Специальное устройство предсказания переходов минимизирует задержку на условных переходах. Специальным образом организованные переходы еще больше увеличивают производительность.
Дата добавления: 2014-10-17; Просмотров: 383; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |