Embedded Systems
  • Microcontroladores e Sistemas Embarcados
  • Introdução aos sistemas embarcados
  • Sistemas Microcontrolados
    • Visão geral da organização de um sistema computacional
    • Modelos de Arquitetura
    • Estrutura básica de um microcontrolador genérico
  • Periféricos Mapeados em Memória
    • Configuração de Registradores
  • Programação
    • Programação em Linguagem de Montagem
    • Compilação
  • Intel MSC-51
    • Arquitetura e Organização do 8051
    • Características Gerais de Operação
    • Mapa de Memória
    • Conjunto de Instruções e Modos de Endereçamento
    • Interrupções
    • Portas de Entradas/Saídas Digitais
    • Módulo Contador/Temporizador
    • Comunicação Serial Assíncrona
  • Processadores Cortex-M0+
    • Arquitetura
    • Sistema de interconexão
    • Arquitetura do Conjunto de Instruções (ISA)
    • Modos de operação
    • Programação
      • Keil uVision
  • Freedom Board: KL25Z
    • Família de microcontroladores KL25Z
    • Terminais do microcontrolador
    • Interface de configuração
    • Programação
      • Keil uVision
      • Chamada de funções em Assembly
      • Configuração de Registradores em C
      • Utilizando o CMSIS nas aplicações
  • Dicionário
  • Apêndice A: Sistemas de Numeração
  • [Em desenvolvimento] Apêndice B: Números Sinalizados
Powered by GitBook
On this page
  • Conjunto de Instruções
  • Ciclo de Instrução
  1. Processadores Cortex-M0+

Arquitetura do Conjunto de Instruções (ISA)

PreviousSistema de interconexãoNextModos de operação

Last updated 6 years ago

Possui conjunto de instruções simples com 56 instruções. De modo geral, é um subconjunto Thumb (do inglês, Thumb Instruction Set Architecture) que inclui a tecnologia [3]. A maioria das instruções são de 16 bits, as demais possuem 32 bits. Embora possua instruções com tamanhos diferentes, ainda é classificado como RISC (do inglês, Reduced Instruction Set Computing) [2].

De fato, a operações load-store podem aumentar a quantidade de instruções utilizadas para realizar um determinado procedimento. No entanto, o tamanho das instruções e as operações realizadas ainda garantem alta densidade de código [2,3].

Embora simples, o conjunto de instruções aumenta aproximadamente 30% a densidade de código. Isso, é claro, afeta o desempenho, sendo 20% menor que um código composto somente por instruções ARM [2].

Conjunto de Instruções

A seguir são destacadas as instruções de 16 bits do subconjunto Thumb. É importante destacar que o conjunto de instruções Thumb é subconjunto de instruções ARM (32 bits). Para conferir todas operações realizadas na execução das instruções, consulte esta referência: .

  • Load-Store: LDM LDR LDRH LDRSH LDRB LDRSB STR STRH STRB STM;

  • Movimentação de dados entre registradores: MOV;

  • Adição, Subtração e Multiplicação: ADC ADD ADR SUB RSB SBC MUL;

  • Lógica: AND, EOR, ORR, BIC, TST, MVN;

  • Deslocamento e Rotação: ASR LSL LSR ROR;

  • Operações de pilha: POP PUSH;

  • Desvio: B BX BLX;

  • Comparação: CMN CMP;

  • Extensão de bits: SXTB SXTH UXTB UXTH;

  • Swap: REV REV16 REVSH;

  • Hint: SEV WFE WFI YIELD NOP BKPT;

  • Alteração de estado: CPS SVC.

Instruções de 32 bits

  • Barriers: DSB DMB ISB;

  • Desvio: BL;

  • Alteração de estado: MRS;

  • Hint: MSR.

Barriers: Instruções que ordenam a CPU a executar as operações iniciadas antes de prosseguir com as instruções subsequentes.

Hint: Instruções que notificam o processador sobre determinado estado.Por exemplo, a instrução YELD sinaliza que o contexto atual está pode ser trocado. Assim o processador pode tomar a ação de alterar o contexto. Já a instrução WFI faz com que o processador entre em modo sleep até que ocorra um evento.

Ciclo de Instrução

O ciclo de instrução é executado por um pipeline de dois estágios. Tal característica implica na redução de elementos de memória e consequentemente no consumo de energia [1].

Pipeline: O pipeline é caracterizado por permitir que o ciclo de instrução seja realizado em série para mais de uma instrução. Para tal, o ciclo de instrução é dividido em estágio. No caso de dois estágios, uma instrução é buscada na memória ao mesmo tempo que a atual está sendo executada.

O pipeline contribui para o desempenho do sistema, pois reduz em um ciclo de clock a penalidade de instruções de desvio. Isto é, se uma instrução de desvio é executada, somente a instrução subsequente é ignorada (2 estágios).

Thumb-2
The Cortex-M0+ Instruction Set