레지스터기반 머신(Register-based Machine)

 CPU 연산자를 저장하는 위치에 따라 레지스터 기반 프로세서(register-based processor)와 스택 기반 프로세서(stack-based processor)로 나눌 수 있다. 레지스터 기반 프로세서는 레지스터를 사용하여 연산하는 방식이고 스택 기반 프로세서는 피 연산자를 스택에 저장하고 나서 연산을 수행하면 피 연산자를 꺼내어 연산 후에 그 결과를 다시 스택에 넣는 방식이다.

임베디드 시스템에서 자주 사용되는 스택 기반 프로세서는 함수 호출 시 인자를 스택에 넣어줘야 하는 레지스터 기반 프로세서와 달리 이미 스택에 인자가 저장되어 있기 때문에 추가적인 작업이 필요하지 않다. 또한 컨텍스트 스위치(context switch)가 일어날 경우 레지스터 기반 프로세서는 모든 레지스터의 상태를 저장해 줘야 하지만, 스택 기반 프로세서는 각 프로세스마다 스택을 할당하기 때문에 단지 스택만 변경시킴으로써 간단히 해결할 수 있다.

반면 레지스터 기반 프로세서의 가장 큰 장점은 속도가 매우 빠르다는 것이다. 레지스터가 CPU 내에 존재하기 때문에 레지스터의 참조가 무척 빠른 반면 스택 기반 프로세서는 대부분의 스택을 메모리에 두기 때문에 값을 읽고 쓰기 위해선 메모리를 액세스해야 한다. 또한 레지스터 기반 프로세서는 인스트럭션이 가독성이 있으므로 디버깅에 유리하다.

레지스터 기반 프로세서의 대표적인 예는 인텔 x86이 있고, 스택 기반 프로세서는 RTX32P가 있다.

 

원본 위치 <http://scotthan.tistory.com/75

Posted by Finebe
,