ARM7 강좌 [3] : ARM7의 구조

 


● ARM7의 구조

  

  1. 레지스터

    : ARM7에는 31개의 32Bit 레지스터가 있습니다. 또, 동작모드에 따르는 -여기서 동작모드는 Exception부분에서 자세히 다루겠습니다.- 6개의 Status 레지스터가 있습니다.

      

  2. ALU

    : 32Bit 연산이 가능한 ALU가 제공됩니다. 그런데 특이한 것은 ALU의 한쪽 입력은 Barrel Shifter라는 것이 연결되어 있어서 ALU의 인수 하나는 레지스터에서 바로 들어오고, 다른 하나는 레지스터나 버스에서 Barrel Shifter라는 것을 거쳐 입력되도록 되어 있습니다.  이런 이유로 ARM7에서는 제 2 오퍼랜드를 지정할 때, 해당 값을 쉬프트 시켜서 사용할 수 있습니다. 보통 다른 CPU에서는 쉬프트 명령이 따로 있었는데, ARM7에서는 따로 존재하는 것이 아니라 대부분의 명령에서 옵션으로 적용시킬 수 있습니다.


  3. Booth's 곱셈기

    : 곱셈 기능을 제공하는 32 비트 Booth's 곱셈기가 있습니다. 곱셈기는 32 비트 연산을 지원하며, 32비트의 두 입력을 받아서 곱하여, 결과가 32비트를 넘더라도 넘는 부분은 버리고 32비트만을 남깁니다.


  이밖에 인스트럭션 디코더와 인크리멘터가 달린 어드레스 레지스터 등이 있고, 내부적으로는 지난번에도 말했듯이 32비트의 어드레스 & 데이터 버스로 연결됩니다. 또, ARM7은 파이프라인을 제공하고, 추가적으로 StrongARM과 같은 칩에서는 캐쉬 기능과 MMU 기능 등도 제공합니다.


  전에 말씀 드렸지만, ARM7은 CPU의 코어를 말합니다. 즉, 특정 칩을 일컫는 것이 아니기 때문에, 흔히 CPU를 접할 때 다루게 되는 I/O제어나 타이머, 인터럽트 부분 등은 강좌에서 소개되지 않습니다. 왜냐하면, 같은 ARM7 코어의 CPU라 하더라도 해당 부분들이 각기 다르기 때문입니다. 따라서 여러분들이 ARM7 코어를 사용한 칩을 공부하시고자 할 경우엔, 먼저 이 강좌의 내용인 ARM7 코어에 대한 부분을 공부하고, 다음에 해당 칩의 데이터시트를 보셔야 합니다.


  참고로, 제가 공부했던 칩은 샤프에서 나온 LH77790 이라는 칩과 Strong ARM 코어를 사용한 인텔의 SA1100 이라는 칩 두 가지 입니다.

  StrongARM은 Digital 사에서 ARM7 코어를 Licence 얻어서 확장한 형태인데, 기본적으로는 거의 유사하고 MMU같은 기능들이 추가가 된 코어입니다. 현재는 Intel이 Digital로부터 Licence를 구입하여 생산하고 있고, SA110 이나 SA1100, SA1111 등의 칩으로 제작되어 판매되고 있습니다.

  현재 생각으로는 강좌의 끝 부분에 가서 StrongARM인 SA1100에 대해서도 조금 다루어 볼 생각입니다.


  그럼 오늘 강좌는 이만 줄이도록 하겠습니다. 다음 강좌에서는 ARM7의 레지스터에 대한 내용을 다루겠습니다.

+ Recent posts