ARM mode와 Thumb mode라는 말을 들어봤을 거라 믿어 의심치 않는 이 마당에, 도대체 ARM mode와 Thumb mode는 무엇인지 뜀틀 짚고 폴짝 넘어보겠습니다.
THUMB mode는 왜 태어났는가? THUMB mode는 도대체 무엇을 하는 녀석이란 말인가? THUMB mode는 16 bit 라는데 그건 또 무엇인가? 하는 의혹을 파헤쳐 보는 기회.
THUMB mode는 어찌 보면 ARM mode의 반쪽 version이라고 볼 수 있습니다. 원래 ARM은 32bit RISC machine이고, 32bit로 동작 하는 게 최상의 Performance를 제공할 수 있다는 거죠.machine마다 word size가 다른 건 바로 그런 의미입니다. word란 CPU가 한번에 처리할 수 있는 크기를 말하니까요. 예를 들어 8 bit apple은 8 bit를 word 단위로 하고, 8bit씩 처리를 하는 게 제일~ 좋은 거에요. 16bit INTEL AT는 16 bit를 word 단위로 하고, 16 bit씩 처리를 하지요. 같은 말로 32 bit ARM은 32가 word 단위이고 한번에 32bit씩 처리할 수 있다는 말 입니다요. 바야흐로 THUMB mode는 32bit ARM에서 돌아가는 16 bit 기계어 라는 말인데, 왜 32 bit machine에서 16bit THUMB mode가 필요한 걸 까요? 그 답은 바로 그 놈의 망할 Business에 있습니다. 처음 32 bit ARM을 만들어 냈을 때, 이 세상을 지배하던 Embedded system의 memory는 16 bit data line을 가진 Memory가 그 시대의 주인공 이었슴다. 32 bit Core라고 해서 그 시대에 가장 흔히 구할 수 있고 많이 생산되던 16bit bus line의 메모리를 무시할 수 없는 노릇이었지요.
역시나 Advanced RISC Machine 인 탓에 세상 물정 모르고 앞서가고 있었던 것이지요. ARM을 Advanced Risky Machine이라 불러야 하는 건 아닌가 싶어요. 결국 ARM사는 16 bit bus line을 가진 Memory에서도 효율적으로 사용할 수 있도록 ARM 명령어들을 16 bit로 압축한 명령어 set을 발표하는데 그것이 ARM의 일부분인 THUMB인 것입니다.
뭐, 쉽게 얘기하면 ARM core를 팔아 먹으려고 보니, 세상이 따라오질 못하고 있더라~ 우라질레이션. 그리해서~ 그 시대에 맞는 16bit Data bus에도 Performance가 꽤나 괜찮은 기계어 set을 만들어 발표 했는데 그 녀석이 Thumb이라는 이야깁죠. 뭐, 지들 말로는 70%로 code 압축 효과가 있고, 130% 성능 개선이 있다고 말하는데, 이건 16 bit Data bus의 Memory에서 ARM mode를 사용할 때 보다~ 70% 압축효과가 있고, 130% 성능 개선이 있다고 말할 수 있습니다. 혹시나 32 bit Data bus system에서 Thumb mode를 쓰면 과연 좋을까요? 그건 별들에게 물어봐~
이 말 인 즉 슨, 16 bit bus system이라고 해서, ARM을 못 쓰는 건 아니라는~ 것도 아셔야 해요. 두 번 fetch 해오면 되니까요~ ㅡ 그러면 계속 계속 두 번씩 읽어 오느라 Performance에 많은 영향을 끼치겠죠? 그르니까, 16 bit에 맞는 걸 만들어서 한번에 fetch 가능하게 했다는 말이죠.
그러니까, ARM mode와 THUMB mode는 ARM core가 몇 bit로 동작할 것이냐의 상태 mode이고, 다음에 계속 나오는 Exception과 mode는 ARM core의 몇가지 동작 mode를 의미하는 것이오니, 아무쪼록 혼돈 않길 바랍니다.
자자, ARM mode와 THUMB mode에 관한 얘기를 했고, 이 차이에 대해서는 ARM 구현 쪽에서
더 자세히 살펴 볼 테니, 이 정도로 담 넘는 구렁이 친화적인 상태로 은근슬쩍 넘어갈래요.
댓글