Arquitetura do Conjunto de Instruções (ISA)
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 Thumb-2 [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: The Cortex-M0+ Instruction Set.
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).
Last updated