'

АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 12: Архитектура процессора ARM для встроенных систем

Понравилась презентация – покажи это...





Слайд 0

АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 12: Архитектура процессора ARM для встроенных систем ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор, д.ф.-м.н. Королёв Л.Н., Ассистент Волканов Д.Ю.


Слайд 1

2 План Введение в ARM Парадигма программирования Набор инструкций Архитектура системы


Слайд 2

3 ARM Powered Products


Слайд 3

4 План Введение в ARM Парадигма программирования Набор инструкций Архитектура системы


Слайд 4

5 Размер типов данных и набор иструкций ARM имеет 32-битную архитектуру. Обычно в ARM используется следующие ключевые слова: Byte - 8 bits Halfword - 16 bits (два байта) Word - 32 bits (четыре байта) Большинство ARM процессоров реализует два набора инструкций 32-bit ARM Instruction Set 16-bit Thumb Instruction Set


Слайд 5

6 Режимы работы процессора Семь основных режимов функционирования ARM: User : непривилегированный режим, под которым выполняется большинство задач FIQ : включается, когда приходит high priority (fast) прерывание IRQ : включается, когда приходит low priority (normal) прерывание Supervisor : включается при перегрузке и когда выполняется Software Interrupt instruction Abort : позволяется ловить нарушения режима доступа к памяти Undef : позволяет ловить нераспознанные инструкции System : привилегированный режим использующий те же регистры, что и User режим


Слайд 6

7 Набор регистров в ARM


Слайд 7

8 Организация регистров User mode r0-r7, r15, and cpsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr FIQ User r13 (sp) r14 (lr) spsr IRQ User mode r0-r12, r15, and cpsr r13 (sp) r14 (lr) spsr Undef User mode r0-r12, r15, and cpsr r13 (sp) r14 (lr) spsr SVC User mode r0-r12, r15, and cpsr r13 (sp) r14 (lr) spsr Abort User mode r0-r12, r15, and cpsr Thumb состояние Low registers Thumb состояние High registers Note: System mode использует те же регистры, что и User mode


Слайд 8

9 Типы регистров В ARM есть 37 регистров размером 32-bits. 1 специальный регистр: program counter 1 специальный регистр: current program status 5 специальных регистров для хранения program status 30 регистров общего назначения В любом режиме работы процессора имеется доступ к следующим регистрам: r0-r12 РОН r13 (the stack pointer, sp) иr14 (the link register, lr) program counter, r15 (pc) current program status register, cpsr Привилегированный (except System) режим может обращаться к spsr (saved program status register)


Слайд 9

10 Регистры состояния программы Флаги условных переходов N = Negative вычисляется АЛУ Z = Zero вычисляется АЛУ C = АЛУ операция Carried out V = АЛУ операция oVerflowed Sticky Overflow флаг - Q flag Только для 5TE/J архитертур Определяет насыщение J bit Только для 5TEJ архитектур J = 1: процессор в состоянии Jazelle Биты отключения прерываний. I = 1: отключает IRQ. F = 1: отключает FIQ. T Bit Только для xT аржитетур T = 0: процессор в состоянии ARM T = 1: процессор в состоянии Thumb Mode bits Указывают режим работы процессора


Слайд 10

11 Если процессор находится в режиме ARM: Все инструкции размером 32 бита Все инструкции должны быть выровнены по слову (word aligned) Если процессор находится в режиме Thumb: Все инструкции размером 16 бит Все инструкции должны быть выровнены по полуслову (halfword aligned) Если процессор находится в режиме Jazelle: Все инструкции размером 8 бит Процессор позволяется читать по 4 инструкции сразу Program Counter (r15)


Слайд 11

12 Vector Table Обработка исключений Алгоритм обработки исключений: Копируется CPSR в SPSR_<mode> Заполняются CPSR биты Состояние изменяется на ARM Включается exception mode Игнорируются прерывания (if appropriate) Stores the return address in LR_<mode> Sets PC to vector address Для возврата к нормальной работе: Восстанавливается CPSR из SPSR_<mode> Восстанавливается PC из LR_<mode> Все это может проделываться только в состоянии ARM. Vector table может находится по адресу 0xFFFF0000 на ARM720T и ARM9/10 семействе устройств FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset


Слайд 12

13 Разработка ARM архитектуры SA-110 ARM7TDMI 4T 1 Поддержка Halfword иsigned halfword / байтов System mode Thumb instruction set 2 4 ARM9TDMI SA-1110 ARM720T ARM940T Improved ARM/Thumb Interworking CLZ 5TE Saturated maths DSP multiply-accumulate instructions XScale ARM1020E ARM9E-S ARM966E-S 3 Ранние ARM архитектуры ARM9EJ-S 5TEJ ARM7EJ-S ARM926EJ-S Jazelle выполнение Java bytecode 6 ARM1136EJ-S ARM1026EJ-S SIMD Instructions Multi-processing V6 Memory architecture (VMSA) Unaligned data support


Слайд 13

14 План Введение в ARM Парадигма программирования Набор инструкций Архитектура системы


Слайд 14

15 ARM инструкции могут выполнятся условно путем проставления постфикса с кодом условия. CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip По умолчанию, инструкции обработки данных не влияют на условные флаги, но данные флаги могут быть опционально установлены используя “S”. CMP не нуждается в“S”. loop … SUBS r1,r1,#1 BNE loop если Z флаг нулевой, то осуществляем переход декрементируем r1 и устанавливаем флаги Условные переходы и флаги


Слайд 15

16 Возможные условные коды приведены ниже: Условные коды


Слайд 16

17 Примеры условного выполнения Использование последовательности условных инструкций if (a==0) func(1); CMP r0,#0 MOVEQ r0,#1 BLEQ func Установка флагов, после использование различных условных кодов if (a==0) x=0; if (a>0) x=1; CMP r0,#0 MOVEQ r1,#0 MOVGT r1,#1 Использование условных инструкций сравнения if (a==4 || a==10) x=0; CMP r0,#4 CMPNE r0,#10 MOVEQ r1,#0


Слайд 17

18 Branch : B{<cond>} label Branch со связью: BL{<cond>} subroutine_label 28 31 24 0 Cond 1 0 1 L Offset Condition field Link bit 0 = Branch 1 = Branch with link 23 25 27 Инструкции ветвления


Слайд 18

19 Инструкции обработки данных Состоят из: Арифметических: ADD ADC SUB SBC RSB RSC Логических: AND ORR EOR BIC Сравнений: CMP CMN TST TEQ Перемещения данных: MOV MVN Данные инструкции работают только с регистрами, НЕ с памятью. Синтаксис: <Operation>{<cond>}{S} Rd, Rn, Operand2 Сравнения только устанавливают флаги Перемещение данных не специфицирует Rn Второй операнд отправляется на АЛУ через barrel shifter.


Слайд 19

20 Barrel Shifter Destination CF 0 Destination CF LSL : Logical Left Shift ASR: Arithmetic Right Shift Умножение на 2 Деление на 2, сохраняя бит флага Destination CF ...0 Destination CF LSR : Logical Shift Right ROR: Rotate Right Деление на 2 Циклическое смещение бита от LSB к MSB Destination RRX: Rotate Right Extended Циклическое смещение через CF к MSB CF


Слайд 20

21 Использование Barrel Shifter: Второй операнд


Слайд 21

22 Умножение Синтаксис: MUL{<cond>}{S} Rd, Rm, Rs Rd = Rm * Rs MLA{<cond>}{S} Rd,Rm,Rs,Rn Rd = (Rm * Rs) + Rn [U|S]MULL{<cond>}{S} RdLo, RdHi, Rm, Rs RdHi,RdLo := Rm*Rs [U|S]MLAL{<cond>}{S} RdLo, RdHi, Rm, Rs RdHi,RdLo := (Rm*Rs)+RdHi,RdLo Время в циклах Основная MUL инструкция 2-5 циклов на ARM7TDMI 1-3 циклов на StrongARM/XScale 2 цикла на ARM9E/ARM102xE +1 цикл для ARM9TDMI (over ARM7TDMI) +1 цикл для “long”


Слайд 22

23 Помещение данных в регистр LDR STR Word LDRB STRB Byte LDRH STRH Halfword LDRSB Signed byte load LDRSH Signed halfword load Память должна поддерживать все допустимые размеры Синтаксис: LDR{<cond>}{<size>} Rd, <address> STR{<cond>}{<size>} Rd, <address> e.g. LDREQB


Слайд 23

24 Доступ по адресу Адрес доступные по LDR/STR определяется как значение регистра плюс смещение Для слова и беззнакового байта доступа, смещение может быть 0 - 4095 bytes LDR r0,[r1,#8] Для полуслова и знакового полуслова, смещение может быть : 0-255 bytes. регистр


Слайд 24

25 0x5 0x5 r1 0x200 Base Register 0x200 r0 0x5 Source Register for STR Offset 12 0x20c r1 0x200 Original Base Register 0x200 r0 0x5 Source Register for STR Offset 12 0x20c r1 0x20c Updated Base Register Автообновление из: STR r0,[r1,#12]! Префиксный или постфиксный адрес? Префиксный: STR r0,[r1,#12] Постфискный: STR r0,[r1],#12


Слайд 25

26 LDM / STM Синтаксис: <LDM|STM>{<cond>}<addressing_mode> Rb{!}, <register list> 4 режима адресования: LDMIA / STMIA инкрементить после LDMIB / STMIB инкрементить до LDMDA / STMDA декриментить после LDMDB / STMDB декриментить до IA r1 Увеличение адресов r4 r0 r1 r4 r0 r1 r4 r0 r1 r4 r0 r10 IB DA DB LDMxx r10, {r0,r1,r4} STMxx r10, {r0,r1,r4} Base Register (Rb)


Слайд 26

27 Программное прерывание (SWI) Возбуждает обработчик прерываний в соответствии с SWI hardware vector SWI handler может определить SWI number чтобы решить какую операцию надо выполнить Используя SWI механизм, ОС может реализовать набор привилегированных операций Синтаксис: SWI{<cond>} <SWI number> 28 31 24 27 0 Cond 1 1 1 1 SWI number (ignored by processor) 23 Условное поле


Слайд 27

28 PSR инструкции MRS и MSR позволяет переместить содержимое CPSR / SPSR в или из регистра общего назначения Синтаксис: MRS{<cond>} Rd,<psr> ; Rd = <psr> MSR{<cond>} <psr[_fields]>,Rm ; <psr[_fields]> = Rm где <psr> = CPSR or SPSR [_fields] = any combination of ‘fsxc’ Так же возможно MSR{<cond>} <psr_fields>,#Immediate


Слайд 28

29 ARM ветви B <label> PC relative. ±32 Mbyte range. BL <subroutine> Хранит и возвращает адрес в LR STMFD sp!,{regs,lr} : BL func2 : LDMFD sp!,{regs,pc} func1 func2 : : BL func1 : : : : : : : MOV pc, lr


Слайд 29

30 План Введение в ARM Парадигма программирования Набор инструкций Архитектура системы


Слайд 30

31 Пример ARM-based системы 16 bit RAM 8 bit ROM 32 bit RAM I/O Peripherals Interrupt Controller nFIQ nIRQ


Слайд 31

32 AMBA Bridge Timer On-chip RAM ARM Interrupt Controller Remap/ Pause TIC Arbiter Bus Interface External ROM External RAM Reset System Bus Peripheral Bus AMBA Advanced Microcontroller Bus Architecture ADK Complete AMBA Design Kit ACT AMBA Compliance Testbench PrimeCell ARM’s AMBA compliant peripherals AHB or ASB APB External Bus Interface Decoder


Слайд 32

33 33 Спасибо за внимание!


×

HTML:





Ссылка: