ARM 프로세서

https://media.vlpt.us/images/corone_hi/post/eb807a4b-dd38-4d99-804d-0630421f19cf/image.png

프로세서란

ARM : Advanced RISC Machine

RISC : Reduced Instruction Set Computing (감소된 명령 집합 컴퓨팅)

<참고> - CISC의 문제점을 해결하기 위한 RISC명령어 길이를 16bit 혹은 32bit로 일정하게 정리하였다. 따라서 명령어 해석기는 무슨 명령어인지 별도로 판단할 필요 없이 16bit 혹은 32bit만큼 인출동작을 기계적으로 수행하면 되므로 명령어 해석기가 크게 단순화되었다.1사이클에 1명령어가 정확하게 들어오는 것이 보장되면서 파이프라인에 버블이 낄 가능성이 낮아졌다.명령어 포맷을 일정하게 다듬었다. 예를 들어 소스 레지스터와 타겟 레지스터를 나타내는 플래그를 명령어 상의 특정 비트에 위치시킴으로서 명령어 해석기에서 명령 해석이 완전히 끝나기도 전에 소스 레지스터와 타겟 레지스터를 찾아서 선제적으로 동작시키는 것이 가능해졌다. 이로써 명령어 해석기와 내부 컨트롤의 효율이 증가하였다.메모리를 대상으로 하는 load/store 연산과 레지스터를 대상으로 하는 mov 연산을 분리하면서 메모리 액세스 타이밍의 불확실성을 제거하였다. 즉 필요한 값에 대한 load 동작을 메모리 레이턴시를 고려하여 몇 사이클 앞에서 선제적으로 실행하고 load 동작이 완료되자마자 연산을 수행하는 식으로 레이턴시를 감추는 방식을 사용할 수 있게 되었다. 또한 파이프라인의 효율성도 그에 따라 증가하였다.각 명령어들의 실행 사이클을 1사이클로 조정하였다.어큐뮬레이터 구조를 폐지하였다. 이제 한 개의 명령어는 2개의 소스 레지스터와 1개의 타겟 레지스터를 대상으로 동작하게 되었다. 즉 b=a+b에 종속된 구조에서 탈피하여 c=a+b 동작이 가능해졌다.명령어 해석기 부분이 단순화되고 효율적으로 변경되면서 남아도는 트랜지스터는 더 깊은 파이프라인이나 더 많은 캐시메모리 등에 할당되면서 성능이 향상되었다.가능한 명령어 시퀀스의 경우의 수가 간략해지면서 아키텍처의 정상 동작 검증이 원활해졌다.

https://media.vlpt.us/images/corone_hi/post/b3aafef0-3fd2-4fb2-a426-a341db7206ec/image.png

<RISC의 단점>단순화를 위해 코드밀도가 감소하여 같은 내용을 처리하는 데 더 많은 코드 용량이 필요하게 되었다항상 16bit 혹은 32bit를 차지하는 고정 길이 명령어는 상황에 따라 8~32bit를 오가는 CISC의 가변 길이 명령어에 비해 코드 밀도 면에서 원천적으로 불리하다.메모리를 대상으로 하는 연산 명령어의 경우 CISC에서는 1개 명령어로 표현 가능하지만 반면 RISC에서는 load-execute-store로 3개의 명령어가 필요하다.마이크로코드로 한 줄로 구현된 CISC 명령어를 몇 개, 혹은 수십개의 RISC 명령어로 변환해야 한다.평균적으로 같은 역할을 수행하는 RISC의 코드 길이는 x86에 비교하면 2배나 길다.메모리를 소스 혹은 타겟으로 쓸 수 없게 되면서 그 역할을 대체해야 하는 더 많은 레지스터가 필요하게 되었다.명령어 길이가 제약되면서 분기 명령의 점프 범위가 제약되었다. CISC에서는 분기 명령의 점프 범위를 단순히 코드 길이를 늘리는 것으로 해결할 수 있지만 RISC 명령어는 그게 불가능하다.가장 현실적인 단점은... x86이 아니더라는 것이었다. 이 시기에서는 PowerPC로 Microsoft Windows를 돌리긴 했지만 ARM으로는 Microsoft Windows를 못 돌렸다

ARM 구조

https://media.vlpt.us/images/corone_hi/post/9004f385-73f0-46b8-b4a5-81095dc181e0/image.png