Thumb-2 란?

ARM 체계의 명령어는 32비트의 크기를 가지게 된다. 이러한 명령어의 크기는 부담으로 다가올 수 있으며 이를 위해서 조금 제한적인 기능을 제공할 수 있지만 용량이 16비트인 Thumb 명령어 체계를 제공한다.

이때, Thumb-2는 Thumb의 확장된 체계로, 16비트와 32비트 명령어를 혼합하여 사용할 수 있도록 설계되었다.

Memory Alignment

Cortex-M3/4/7 코어는 ‘비정렬 메모리 접근’을 수행할 수 있다. 이게 무슨 말인지 보다 상세하게 설명해보겠다.

아래 그림에서 왼쪽은 전통적으로 사용되는 ‘정렬 접근’방식을 가진다. 이미지에서 ‘워드’는 4바이트 주소 간격으로 데이터를 가져야하며, ‘하프 워드’는 2바이트 주소 간격을 가져야한다. 따라서 단편화가 발생될 가능성이 높다.

반면 오른쪽은 ‘비정렬 접근’방식을 보인다. 각 형식은 ‘정렬’된 상태로 배치될 필요가 없다. 따라서 내부 단편화가 제거된다.