
Lek2013 / Lek12_FPGA
.docx№11 Архитектура процессоров ARM
ARM Ltd. (название происходит от Advanced RISC Machines)
- британская компания, занимается проектированием 32-х разрядных RISC-процессоров.
Особенности ARM процессоров:
Имеют RISC архитектуру. Малое энергопотребление: от 0.1 Вт до 3Вт. Высокое быстродействие: от 10MГц до 1.2 ГГц. 32 разрядные данные.
Современные ядра ARM построены по архитектуре ARMv7 делятся на три группы:
-
Cortex – M4F, -M3,-M1 (микроконтроллеры, нет MMU (memory ménage unit)
-
Cortex R4, R5, R7 (применяется для систем реального времени)
-
Cortex- A5, –A7, -A8, -A9, -A15 (есть MMU и обычно работают под управлением систем общего назначения типа Android, Linux, Windows)
-
Cortex-A50 (перспективная разработка 64-x разрядного ядра для серверных применений, построена на архитектуре ARMv8)
Основные особенности процессоров серии Cortex-A.
Все инструкции фиксированной длины – 32 бита. Каждая инструкция выполняется за 1 такт.
Как любой RISC процессор, построен по принципу Load/Store. Т.е. данные сначала загружаются в регистры, а потом обрабатываются.
Имеется всего 37 регистров:
Из них 30 регистров общего назначения, однако одновременно доступны только 15.
1 счетчик команд.
6 статусных регистров для хранения флагов.
На Cortex-A строятся системы на кристалле, совмещающие ядро и периферийные устройства ввода\вывода.
Все эти устройства отображаются на адресное пространство ядра.
РОН R0-R12 предназначены для нужд пользователя и не выполняют никаких других функций.
R13 – указатель стека (SP – stack pointer)
R14 – регистр связи (LR- Link Register). При вызове подпрограммы адрес возврата автоматически сохраняется в регистре R14.
Это можно использовать для “концевых” функций, но если функция вызывает другую функцию, то содержимое R14 (адрес возврата) надо сохранить в стеке.
R15 – счетчик команд (PC – program counter).
Работать с R13-R15 можно как с обычными регистрами (команда MOV).
Кроме регистров R0-R15 имеется регистр статуса (Current program status register)
Архитектура ARMv4T
Архитектура ARMv6
В старших четырех битах регистра CPSR хранятся флаги условий, которые отражают результат выполнения очередной команды обработки данных. (можно узнать было получено отрицательное значение или нет и т.д).
Биты I F запрещают или разрешают две линии внешних прерываний. Периферийные модули (таймеры/счетчики, АЦП) подключены к этим двум линиям. Для запрещения прерывания надо записать 1. (а не 0).
Архитектура ARMv4T (и выше) поддерживают два набора команд:
-
32-х разрядный набор команд ARM
-
16-и разрядный Thumb (повышенной плотности)
Бит T в статусном регистре определяет режим работы.
Последние 5 бит статусного регистра являются флагами режима. Всего существует 7 режимов работы.
Прикладные программы работают в режиме User при этом доступны R0... R15 и CPSR.
Но при возникновении прерывания режим работы меняется. Регистры R13, R14 заменяются новой парой регистров, уникальной для каждого режима. (каждый режим имеет свой указатель стека и регистр связи).
Более того в режиме быстрых прерываний дублируется и регистры R7… R12. Это позволяет сразу перейти к обработке прерывания не тратя времени на сохранение регистров в сетке.
Во всех режимах, кроме User есть дополнительный статусные регистр
При генерации прерывания текущее значение статусного регистра сохраняется в регистре SPSR. (Saved Program Status Register – SPSR). После выхода из подпрограммы содержимое статусного регистра восстанавливается.
Набор инструкций имеет следующие особенности
-
есть 3-х операндные инструкции (два входных операнда и одни результат)
Пример: SUB R0, R1, R2 ; R0=R1-R2
-
загрузка/выгрузка в память нескольких регистров в одной команде
Пример: LDMIA R3!, {R0-R2,R4} – загрузка регистров R0,R1,R2 И R4 начиная с адреса из регистра R3. значение в этом регистре увеличивается на 16 (т.е. N=4).
-
условное выполнение в каждой инструкции (позволяет избавиться от команд условного перехода)
ADDEQ R0,R1,R2
Таблица суффиксов условного выполнения:
Достоинство:
А) уменьшается число переходов и как следствие нет простоя загрузки конвейера
Б) увеличивается плотность кода
Если условных инструкций больше чем длина конвейера то надо использовать команды перехода.
-
применение операции сдвига над операндом
тракт данных процессоров АRM имеет дополнительный сдвиговый регистр:
Barrel Shifter – позволяет сдвигать вправо, влево, осуществлять циклический сдвиг. Операция сдвига выполняется в одной инструкции совместно с основным действием.
Пример:
MOV R7,R5, LSL #2 - осуществляется левый сдвиг на 2 бита. Т.е. R5 умножается на 4 и далее результат заносится в R7.
ADD R0,R1,R1 LSL #1; R0=3*R1
№Компьютерные шины
Шина – несколько проводников, предназначенные для выполнения одной задачи, соединяющих различные устройства вычислительной системы.
Шины классифицируют по следующим признакам.
-
Параллельные и последовательные. В параллельной шине передаются одновременно несколько различных разрядов. В последовательной шине биты передаются последовательно, друг за другом. Для обеспечения одинаковой скорости последовательная шина должна работать на более высоких частотах, чем параллельная.
-
Синхронные и асинхронные. В синхронной шине присутствует сигнал тактирования, для указания момента времени передачи очередной порции данных. В асинхронной шине поступление очередного пакета данных недетерминировано во времени.
-
Внешние и внутренние. Внутренние шины предназначены для коммуникации блоков внутри устройства. Внешние шины позволят к вычислительной системе подключить конструктивно оформленные внешние устройства
Примеры шин
-
USB – внешняя последовательная асинхронная шина
-
I2C – внутренняя последовательная асинхронная шина.
-
SPI - внутренняя последовательная асинхронная шина
-
AXI – синхронная параллельная шина, разработанная компанией
ARM, для соединения цифровых блоков внутри кристалла.
-
ISA – параллельная внутренняя синхронная шина, в настоящее время считается устаревшей.
-
PCI (Peripheral component interconnect)– замена шины ISA. (параллельная внутренняя синхронная).
Синхросигнал CLK может иметь частоту 33МГц или 66МГц. Разрядность шины данных 64 бита. Следовательно, пропускная способность 64*66\8 = 528 Мбайт/с.
Напряжение логической 1 = 3.3вольт или 5 вольт.
PCI основана на архитектуре общей шины и имеет следующие сигнальные линии:
-
CLK- сигнал синхронизации (1 бит)
-
AD - линии адреса\данных (32 или 64 бита) По этой линии передается сначала адрес устройства которому предназначены данные, а затем и сами данные.
-
IRDY# – сигнал готовности подчиненного устройства (1 бит)
-
TRDY# – сигнал готовности задающего устройства (1 бит)
-
С\BE# – идентификатор команды ( 4 бита)
-
FRAME# – указывает прохождение транзакции (1 бит)
-
DVESEL# – устанавливается в 0, если подчиненное устройство получило адрес и готовиться к обмену
-
REQ# – запрос устройства на захват шины (1 бит)
-
GNT# – подтверждение захвата шины (1 бит)
Пример временной диаграммы передачи данных:
-
PCI Express - внутренняя последовательная синхронная шина. Использует программную модель шины PCI.
Скорость передачи PCI Express 3.0 х1 2ГБайта/с в обе стороны
Скорость передачи PCI Express 3.0 х16 32ГБайта/с в обе стороны
PCI Express х1 – имеет одну дифференциальную пару для сигала синхронизации, одну дифференциальную пару для передачи и одну для приема.
PCI Express х16 имеет одну дифференциальную пару для синхросигнала, 16 для передачи и 16 для приема.
Дифференциальная пара – два проводника передающие одноразрядный сигнал (т.е. заменяют один проводник). Логический сигнал в дифференциальной паре определяется относительно не общей точки, а внутри пары.
Применение дифференциальной пары повышает помехоустойчивость и следовательно позволяет работать на более высоких частотах.