본문 바로가기

Hacked Brain/embeddedland.net

ARM7 강좌 [3] : ARM7의 구조 (출처 : 디지털 동호회)

출처 : 디지털 동호회
---------------------------------------------------------------------- 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은 파이프 라인을 제공하고, 추가적으로 스트 롱 ARM과 같은 칩에서는 캐쉬 기능과 MMU기능등도 제공합니다. 전에 말씀 드렸지만, ARM7은 CPU의 코어를 말합니다. 즉, 특정 칩을 일?? 는 것이 아니기 때문에, 흔히 CPU를 접할 때 다루게 되는 I/O제어나 타이 머, 인터럽트 부분 등은 강좌에서 소개되지 않습니다. 왜냐하면, 같은 ARM7 코어의 CPU라 하더라도 해당 부분들이 각기 다르기 때문입니다. 따라서 여러분들이 ARM7 코어를 사용한 칩을 공부하시고자 할 경우엔, 먼 저 이 강좌의 내용인 ARM7 코어에 대한 부분을 공부하고, 다음에 해당 칩 의 데이터시트를 보셔야 합니다. 참고로, 제가공부했던 칩은 샤프에서 나온 LH77790 이라는 칩과 Strong ARM 코어를 사용한 인텔의 SA1100 이라는 칩 두가지 입니다. 스트롱 암은 Digital 사에서 ARM7 코어를 라이센스하여 확장한 형태인데, 기본적으로는 거의 유사하고 MMU같은 기능들이 추가가 된 코어입니다. 현재는 Intel이 Digital 로부터 라이센스를 구입하여 생산하고 있고, SA110 이나 SA1100, SA1111 등의 칩으로 제작되어 판매되고 있습니다. 현재 생각으로는 강좌의 끝부분에 가서 StrongARM 인 SA1100에 대해서도 조금 다루어 볼 생각입니다. 그럼 오늘 강좌는 이만 줄이도록 하겠구요, 다음 강좌에서는 ARM7의 레지 스터에 대한 내용을 다루겠습니다.