Perché è stato creato il set di istruzioni ARM Thumb?
Il set di istruzioni ARM Thumb è stato creato per aumentare le prestazioni e ridurre le dimensioni dei programmi compilati, per rendere i processori ARM più competitivi con altre architetture, in particolare per le applicazioni microcontrollore dove lo spazio del programma è critico.
Perché i processori ARM originali erano tutti a 32 bit, anche le istruzioni ARM originali erano tutte lunghe 32 bit (quattro byte) - rispetto al set di istruzioni x86, che ha istruzioni di lunghezza variabile da un byte a 15 byte.
Il set di istruzioni Thumb iniziale era solo una versione compressa di un sottoinsieme del set di istruzioni originale. Se un processore supporta entrambi, solo uno può essere attivo. Anche se sono set di istruzioni differenti, le istruzioni a 32 bit e il set di istruzioni Thumb possono essere rappresentati usando lo stesso linguaggio assembly. For example, the instruction
- ADDS R0, R1, R2
can be compiled to ARM (E0910002 / 11100000 10010001 00000000 00000010) or Thumb (1888 / 00011000 10001000). Naturalmente, eseguono la stessa funzione (aggiungere r1 e r2 e memorizzare il risultato in r0), anche se hanno codifiche diverse.
In esecuzione, le istruzioni Thumb a 16 bit sono decompresse in modo trasparente in istruzioni ARM a 32 bit complete in tempo reale, senza perdita di prestazioni.
Il codice Thumb è tipicamente il 65% della dimensione del codice ARM, e fornisce fino al 160% delle prestazioni del codice ARM a 32 bit.
Tuttavia il set di istruzioni Thumb originale non copriva tutto il set di istruzioni ARM a 32 bit - era un sottoinsieme. Thumb 2 ha introdotto istruzioni miste 16/32 bit, che permettono a un processore di rimanere sempre in modalità Thumb (o anche di eliminare il set di istruzioni ARM originale a 32 bit, come viene fatto sui processori ARM Cortex-M usati nei sistemi embedded).
Articoli simili
- Quali sono i vantaggi e gli svantaggi del set di istruzioni Thumb rispetto alle istruzioni ARM a 32 bit?
- Perché è necessaria una licenza di ARM per progettare una CPU ARM? Come sono protetti i set di istruzioni?
- Qual è la differenza tra un'istruzione LDM e una VLDM nell'architettura del set di istruzioni ARM?
- Se AMD e Intel condividono lo stesso set di istruzioni, perché le prestazioni di una CPU Intel nel gaming 1080p sono ancora migliori di Ryzen?