Arquitetura ARM Cortex César Yutaka Ofuchi [email protected] (Adaptado do Prof. Hugo Vieira Neto) César Ofuchi – [email protected] 1 Porque ARM Cortex M3? Baixo Consumo Performance Determinismo: garantia de execução críticas (Real Time) Baixo Custo Fácil de Usar Prog. C Ferramentas Debug César Ofuchi – [email protected] 2 O que é ISA?? Software Hardware • Conjunto de técnicas de projeto utilizadas para o processador implementar as instruções em hardware • Interface entre o compilador (software) e o hardware César Ofuchi – [email protected] 3 Exemplo CISC x RISC Multiplicação de 2 números na memória A=A x B (2:3) x (5:2) Paradigma CISC: Completar a tarefa utilizando menos linhas de código assembly MULT (2:3),(5:2) -> MULT A, B - “MULT” é uma instrução complexa que opera na - Hardware implementa a instrução complexa - Compilador tem sua tarefa de traduzir a linguagem de alto nível para assembly simplificada memória diretamente (programador não precisa explicitamente carregar ou salvar os dados em memória) César Ofuchi – [email protected] 4 Exemplo CISC x RISC Multiplicação de 2 números na memória A=A x B (2:3) x (5:2) Paradigma RISC: – dividir a instrução complexa em instruções simples mais rápidas (LOAD, PROD, STORE) LOAD A, 2:3 LOAD B, 5:2 PROD A, B STORE 2:3, A - Requer mais linhas de código e mais memória RAM para guardar as instruções - Maior complexidade para o Compilador traduzir a linguagem de alto nível para assembly - Cada instrução requer apenas 1 ciclo de clock para executar - Hardware mais simples -> menos transistores utilizados para processamento, mais transistores utilizados em registradores - Possibilidade de Pipeline César Ofuchi – [email protected] 5 Resumo: Paradigma RISC x CISC RISC CISC Conjunto de instruções reduzido Conjunto de instruções extenso Instruções semanticamente simples - Maior o código Instruções semanticamente complexas - Menor o Código Instruções de tamanho fixo (maior previsibilidade) Instruções de tamanho variável Decodificação simplificada (tabela) Decodificação complexa (microcódigo) Execução regular Cada instrução executa à sua maneira Instruções requerem o mesmo número de ciclos de clock para executar Grande variação no número de ciclos de clock por instrução Possibilita o uso de pipeline Extremamente difícil/impossível o uso de pipeline César Ofuchi – [email protected] 6 Análogia de PIPELINE LAVANDERIA 1. Roupas de A, B, C e D 2. Lavadora (30 minutos) 3. Secadora (40 minutos) 4. Passar roupa (20 minutos) César Ofuchi – [email protected] 7 Análogia de PIPELINE Lavanderia sequencial – 6 horas Lavanderia com pipeline – 3.5 horas César Ofuchi – [email protected] 8 Pipeline (3 Estágios) 1. Busca (Fetch) – Busca da instrução na memória 2. Decodificação (Decode) – Decodificação dos registradores usados na instrução 3. Execução (Execute) – Leitura de registradores – Operações lógicas, aritméticas e de deslocamento; – Escrita em registradores César Ofuchi – [email protected] 9 Pipeline (3 Estágios) Similar ao pipeline do ARM7TDMI, porém com mais funcionalidades em cada estágio, o que resulta em maior desempenho geral César Ofuchi – [email protected] 10 Pipeline: Situação Ideal • Todas as operações realizadas em registradores → 6 instruções em 6 ciclos de clock (ARM Cortex-M3) César Ofuchi – [email protected] 11 Pipeline: Efeito de Saltos • Pior caso: salto indireto, 3 ciclos de clock para completar o salto (ARM Cortex-M3) César Ofuchi – [email protected] 12 Arquitetura x Organização • Arquitetura = documento de especificação – – – – Instruções Exceções Registradores Memória Ex: ARMv4, ARMv7 • Não tem custo, pode ser obtido diretamente do website da ARM César Ofuchi – [email protected] 13 Arquitetura x Organização • Organização = implementação física (silício) – Ex: ARM7TDMI, ARM Cortex-M3, etc. • ARM vende a implementação de núcleos César Ofuchi – [email protected] 14 Arm Cortex M3 • Tamanhos dos dados e instruções • Modelo de Programação ARMv7-M • Exceções e Interrupções • Conjunto de Instruções • Memória • Gerenciamento de Energia César Ofuchi – [email protected] 15 Tamanho dos dados • ARM tem arquitetura de 32 bits – BYTE: 8 bits – HALFWORD: 16 bits (2 bytes) – WORD: 32 bits (4 bytes) • Comprimento de Instruções – Instruções ARM = 32 bits (fixo) – Instruções Thumb = 16 bits (fixo) – Instruções Thumb-2 = 16 ou 32 bits (variável) César Ofuchi – [email protected] 16 Conjunto de Instruções Thumb-2 • Melhor de dois mundos: – Aproximadamente 26% de melhora em densidade de código em relação a instruções ARM – Aproximadamente 25% de melhora em desempenho em relação a instruções Thumb César Ofuchi – [email protected] 17 Arm Cortex M3 • Tamanhos dos dados e conjunto de instruções • Modelo de Programação ARMv7-M • Exceções e Interrupções • Conjunto de Instruções • Barramento Interno/Memória • Gerenciamento de Energia César Ofuchi – [email protected] 18 Conjunto de Registradores (32 bits) • 13 registradores de propósito geral – R0 a R7 (low registers) - Thumb & Thumb-2 – R8 a R12 (high registers) - Thumb-2 32bit • 3 registradores de uso/significado especial – R13 = Stack Pointer (SP) • MSP – Main Stack Pointer (SO/Exceção) • PSP – Process Stack Pointer (Aplicação) – R14 = Link Register (LR) – Usado como retorno de subrotinas – R15 = Program Counter (PC) – Aponta para a próxima instrução • 1 registrador de propósito especial – xPSR = Program Status Register xPSR • Salvo na Stack em caso de exceção © Prof. Dr. Douglas Renaux César Ofuchi – [email protected] 19 Modos de Programação • Programável totalmente em C • Apenas dois modos de operação • Thread para tarefas de usuário • Handler (Supervisor) para taregas do SO e exceções • Tabela de vetores contém endereços César Ofuchi – [email protected] 20 Privilégios de acesso ao processador Exception Return Exception Entry César Ofuchi – [email protected] 21 Unidade de Proteção de Memória (MPU) • A MPU provê controle de acesso a várias regiões de memória • (ex: Impedir o acesso direto a serviços do RTOS) • Proteção de memória com latência zero – – – – 8 regiões em registradores As mesmas regiões são usadas por instruções e dados Tamanho: mínimo de 32 bytes, máximo de 4GB Não há paginação de endereços • Configurado através de registradores de controle mapeados em memória César Ofuchi – [email protected] 22 Arm Cortex M3 • Tamanhos dos dados e conjunto de instruções • Modelo de Programação ARMv7-M • Exceções e Interrupções • Instruções • Memória • Gerenciamento de Energia César Ofuchi – [email protected] 23 Interrupções • 1 interrupção não-mascarável (NMI) • 1 a 240 interrupções com prioridade • Interrupções são mascaráveis • Implementação define número de interrupções • Controlador de interrupções (NVIC) acoplado fortemente ao núcleo do processador César Ofuchi – [email protected] 24 Interrupções - registradores User Mode Aplicação Exception Entry PSP Exception Return Priviledged Mode SO MSP • Registradores xPSR, PC, LR, R12, R3, R2, R1 e R0 são todos armazenados automaticamente na pilha quando uma interrupção ocorre. César Ofuchi – [email protected] 25 Exceções • Reset - interrupção durante power up or warm reset • NMI - interrupção não-mascarável sinalizada por periféfico ou acionada por SW • Faults • • • • • – Hard Fault - interrupção por erro de execução – Memory Manage - interrupção por acesso inapropriado à memória – Bus Fault - interrupção por falha na transação de instrução ou memória – Usage Fault - intrurrução por falha de execução de instrução SVCall - interrupção iniciada por instrução de supervisão Debug Monitor - interrupção por debug PendSV - interrupção no nível de serviço (ex. troca de contexto em SO) SysTick Interrupt - interrupção do system timer (ex. Uso do RTOS) External Interrupt - interrupção externa César Ofuchi – [email protected] 26 Registrador de Estado do Programa xPSR – Program Status Register APSR EPSR EPSR IPSR – A-PSR - Application PSR (flags da ULA) • • • • • N - flag de Negativo ou menor que Z - flag de Zero C - flag de Carry V - flag de estouro "overflow" Q - flag de saturação – I-PSR - Interrupt PSR • Número do serviço de interrupção (isr)/exceção – E-PSR - Execution PSR • Campo IT – informação sobre blocos If/Then (T-bit Thum state bit) • Campo ICI – informação sobre instruções interrompíveis/continuáveis (load LDM/store STM) César Ofuchi – [email protected] 27 Arm Cortex M3 • Tamanhos dos dados e conjunto de instruções • Modelo de Programação ARMv7-M • Exceções e Interrupções • Instruções • Barramento Interno/Memória • Gerenciamento de Energia César Ofuchi – [email protected] 28 Execução Condicional • Bloco If-Then (IT) – IT <X><Y><Z><COND> • <X,Y e Z> são até 3 opcionais (T) “them” ou (E) “else” • <COND> condições como NE, EQ, etc… que são flags do APSR – Até 3 instruções condicionais “then” (T) ou “else” (E) podem ser adicionadas – Instrução minima (IT) com apenas uma condicional – No máximo 4 instruções consecutivas em condicionais IF <Zero> THEN THEN ELSE THEN --------------------------------------- (mesma ordem) Se Z mover … Se Z somar … Se !Z Subtrair … Se Z Lógica OR … • Qualquer código de condição ARM pode ser utilizado (ver tabela a seguir) César Ofuchi – [email protected] 29 Códigos de Condição ARM Mn Descrição APSR … 31 30 29 28 Negative Zero Carry (Unsigned) Overflow (Signedl) N Z CV Flags Mn EQ equal 𝑍 NE not equal 𝑍 CS carry set HS higher or same 𝐶 CC LO carry clear lower 𝐶 MI minus/negative 𝑁 PL plus/positive 𝑁 VS overflow 𝑉 VC no overflow 𝑉 HI higher 𝑍𝐶 LS lower or same GE greater or equal 𝑁𝑉 + 𝑁𝑉 LT less than 𝑁𝑍𝑉 + 𝑁𝑍𝑉 LE less or equal GT greater than Descrição César Ofuchi – [email protected] Flags 𝑍+𝐶 𝑁𝑉 + 𝑁𝑉 𝑍 + 𝑁𝑉 + 𝑁 𝑉 30 Execução Condicional • Instruções de 16 bits dentro do bloco não afetam flags, exceto a instrução de comparação • Instruções de 32 bits podem ou não afetar flags (conforme o uso ou não do sufixo S) – EX: ADDS R0, R1: Atualiza APSR • Estado do bloco If-Then é armazenado no xPSR – Bloco If-Then pode ser interrompido de forma segura – Saltar de dentro ou para dentro de um bloco If-Then NÃO é permitido César Ofuchi – [email protected] 31 Exemplo CMP <Rn>, Operando 2 Comparação CMP ITE ADDLO MOVHS R0, #10 ;se r0 <10 LO ;habilita If Then Else para LO (Lower), flag C (Carry) R0, #1 ; … then R0=R0+1 (se for menor) C=1 R0,#0 ; … else R0=0 (senão) C=0 Saltar de dentro ou para dentro de um bloco If-Then NÃO é permitido Sugestão de leitura: https://community.arm.com/processors/b/blog/posts/conditioncodes-2-conditional-execution César Ofuchi – [email protected] 32 Arquitetura Load/Store • Acesso à memória: – Somente instruções LD leem dados da memória – Somente instruções ST escrevem dados na memória – Instruções de processamento de dados não acessam a memória Instruções para os diferentes tamanhos de dados LDR STR LDRB STRB LDRH STRH LDRSB LDRSH Word Byte Halfword Signed byte load Signed halfword load Exemplo completo: LDR<cond><size> RD, <address> STR<cond><size> RD, <address> Opcionais: <cond> condicional <size> tamanho Ex: LDREQB César Ofuchi – [email protected] 33 Arm Cortex M3 • Tamanhos dos dados e conjunto de instruções • Modelo de Programação ARMv7-M • Exceções e Interrupções • Instruções • Barramento Interno/Memória • Gerenciamento de Energia César Ofuchi – [email protected] 34 ARM Advanced Microcontroller Bus Architecture Padrão aberto para conexão e gerenciamento de blocos funcionais em um System On Chip (SoC) APB AHB - Advanced High-Performance Bus APB - Advanced Peripheral Bus César Ofuchi – [email protected] 35 Mapa de Memória – LPC1343 • Mapeamento linear da memória 4Gb César Ofuchi – [email protected] 36 Mapa de Memória – ARM Cortex César Ofuchi – [email protected] 37 Mapa de Memória – LPC1343 César Ofuchi – [email protected] 38 Arm Cortex M3 • Tamanhos dos dados e conjunto de instruções • Modelo de Programação ARMv7-M • Exceções e Interrupções • Instruções • Memória • Gerenciamento de Energia César Ofuchi – [email protected] 39 Gerenciamento de Consumo de Energia • Vários modos de baixo consumo (sleep modes) – Sleep Now • Instruções Wait for Interrupt/Event – Sleep On Exit • Imediatamente após o retorno da última interrupção – Deep Sleep • Longa duração, PLL desligado • Sinal externo SLEEPDEEP • Controlados pelo NVIC (interrupt controller) César Ofuchi – [email protected] 40