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

Презентация:



Advertisements
Похожие презентации
ВСТРОЕННЫЕ ИНФОРМАЦИОННО- УПРАВЛЯЮЩИЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ Лекция 2: Архитектура процессоров для ВИУСРВ ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК,
Advertisements

АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 6: Уровень архитектуры набора команд ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор, д.ф.-м.н. Королёв.
Характеристики ядра процессора Регистры –Количество –Типы регистров Общего назначения Адресные Регистры флагов Вычислительные устройства –ALU: Fixed-point.
Разработка программного обеспечения для сигнальных процессоров TMS320C64xx Часть 3. Архитектура ядра процессоров с64хх.
АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 4: Цифровой логический уровень ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор, д.ф.-м.н. Королёв Л.Н.,
АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 3: Цифровой логический уровень ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор, д.ф.-м.н. Королёв Л.Н.,
АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 2: Типовое устройство компьютера ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор, д.ф.-м.н. Королёв.
RISC-архитектуры ( Reduced Instruction Set Computer)
АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 5: Уровень микроархитектуры ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор, д.ф.-м.н. Королёв Л.Н.,
С ИСТЕМА КОМАНД ЕОМ. С ТРУКТУРА ТА ФОРМАТИ КОМАНД.
АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 3: Типовое устройство компьютера. Устройство внешних носителей данных ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр.,
Типовые расчёты Растворы
АРХИТЕКТУРА СОВРЕМЕННЫХ ЭВМ Лекция 7: Уровень операционной системы. Уровень ассемблера. ВМиК МГУ им. М.В. Ломоносова, Кафедра АСВК Чл.-корр., профессор,
Демидов А.В г.1 Операционные системы Лекция 1 Определение, история, классификация ОС, Архитектура ЭВМ.

Некоторые вопросы оптимизации.
Архитектура ЭВМ Практика 4. Программы с ветвлениями.
1 Презентация. Обработка прерываний ПЛАН Системный сброс WatchDog Timer Обработка прерываний.

Архитектура набора команд Instruction set architecture.
Транксрипт:

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

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

3 ARM Powered Products

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

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

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

7 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr FIQIRQSVCUndefAbort User Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers FIQIRQSVCUndefAbort r0 r1 r2 r3 r4 r5 r6 r7 r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers UserIRQSVCUndefAbort r8 r9 r10 r11 r12 r13 (sp) r14 (lr) FIQ ModeIRQ Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers UserFIQSVCUndefAbort r13 (sp) r14 (lr) Undef Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers UserFIQIRQSVCAbort r13 (sp) r14 (lr) SVC Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers UserFIQIRQUndefAbort r13 (sp) r14 (lr) Abort Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers UserFIQIRQSVCUndef r13 (sp) r14 (lr) Набор регистров в ARM

8 Организация регистров User mode r0-r7, r15, and cpsr r8 r9 r10 r11 r12 r13 (sp) r14 (lr) spsr FIQ r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr r0 r1 r2 r3 r4 r5 r6 r7 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

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)

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 –Указывают режим работы процессора 2731 N Z C V Q 2867 I F T mode fsxc U n d e f i n e dJ

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

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

13 Разработка ARM архитектуры SA-110 ARM7TDMI 4T 1 Поддержка Halfword иsigned halfword / байтов System mode Thumb instruction set 2 4 ARM9TDMI SA-1110 ARM720TARM940T 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

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

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 и устанавливаем флаги Условные переходы и флаги

16 Возможные условные коды приведены ниже: Условные коды Not equal Unsigned higher or same Unsigned lower Minus Equal Overflow No overflow Unsigned higher Unsigned lower or same Positive or Zero Less than Greater than Less than or equal Always Greater or equal EQ NE CS/HS CC/LO PL VS HI LS GE LT GT LE AL MI VC СуффиксОписание Z=0 C=1 C=0 Z=1 Флаг N=1 N=0 V=1 V=0 C=1 & Z=0 C=0 or Z=1 N=V N!=V Z=0 & N=V Z=1 or N=!V

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

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

19 Инструкции обработки данных Состоят из: –Арифметических: ADDADCSUBSBCRSBRSC –Логических: ANDORREORBIC –Сравнений: CMPCMNTSTTEQ –Перемещения данных: MOVMVN Данные инструкции работают только с регистрами, НЕ с памятью. Синтаксис: { }{S} Rd, Rn, Operand2 Сравнения только устанавливают флаги Перемещение данных не специфицирует Rn Второй операнд отправляется на АЛУ через barrel shifter.

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 RightROR: Rotate Right Деление на 2Циклическое смещение бита от LSB к MSB Destination RRX: Rotate Right Extended Циклическое смещение через CF к MSB CF

21 Результат Операнд 1 Barrel Shifter Операнд 2 АЛУ Использование Barrel Shifter: Второй операнд

22 Умножение Синтаксис: –MUL{ }{S} Rd, Rm, RsRd = Rm * Rs –MLA{ }{S} Rd,Rm,Rs,RnRd = (Rm * Rs) + Rn –[U|S]MULL{ }{S} RdLo, RdHi, Rm, RsRdHi,RdLo := Rm*Rs –[U|S]MLAL{ }{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

23 Помещение данных в регистр LDRSTR Word LDRBSTRB Byte LDRHSTRH Halfword LDRSB Signed byte load LDRSH Signed halfword load Память должна поддерживать все допустимые размеры Синтаксис: – LDR { }{ } Rd, –STR { }{ } Rd, e.g. LDREQB

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

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

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

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

28 PSR инструкции MRS и MSR позволяет переместить содержимое CPSR / SPSR в или из регистра общего назначения Синтаксис: – MRS{ } Rd, ; Rd = – MSR{ },Rm ; = Rm где – = CPSR or SPSR –[_fields] = any combination of fsxc Так же возможно – MSR{ },#Immediate 2731 N Z C V Q 2867 I F T mode fsxc U n d e f i n e dJ

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

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

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

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

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