MMIX

http://mmix.cs.hm.edu/

Donald KnuthTAOCP 최신판에 쓰려고 만든 명령집합아키텍처. M-Mix로 읽는다(따라서 부정관사 an이 붙는다). 본래 TAOCP에서는 MIX라 불리는, 1960년대에 나왔으면 일반적일 그런 명령 집합 아키텍처가 쓰였는데, 아무래도 너무 오래되었기 때문에1) 현대적이면서 실제로 구현도 가능할 수준의 아키텍처를 새로 만들기로 한 것이다. 실제로 MMIX의 설계에는 Alpha아키텍처MIPS아키텍처를 설계한 설계자들이 도움을 줬다고 한다(…).

MMIX를 실제로 구현한 칩이 존재하지는 않지만, 기술적으로는 현대적인 아키텍처가 필요할 만한 웬만한 기능을 다 구현하고 있으며 실제로 FPGA 구현도 이론상으로는 존재한다. MMIX는 한동안 개발 상태였으나, 2011년 9월을 기점으로 현재 버전의 시뮬레이터를 최종판으로 선언하였으며(남아 있는 버그는 기능으로 취급한다), 추후 개발도 Donald Knuth에서 뮌헨대 MMIX 그룹으로 옮겨가게 되었다.

구조

MMIX는 64비트 RISC 아키텍처로, 모든 레지스터는 64비트(정수 및 IEEE 754 부동소숫점 공용)이고 일반 목적 레지스터 적어도 256개($0부터 $255까지)와 특수 목적 레지스터 32개(rA, rB 등등)로 나뉘어 있다. RISC이니만큼 명령은 32비트 고정 크기로, 정확히 256개의 명령이 있으며 nop#fdXXXXXX로, 확장 명령은 #f9XXXXXX로 예약되어 있다. 분기예측이나 인터럽트, 검사후지정(test-and-set) 명령 등 현대적 아키텍처에서 흔히 지원하는 명령도 모두 포함되어 있으며, 기존의 MIX와 달리 프로세스 권한 개념이 구현되어 커널 모드와 유저 모드의 분리가 가능해졌다. 이 말인즉슨, MMIX는 MIX와 달리 운영체제가 필요하다는 얘기.

바깥 링크

1) 예를 들어서 당시에는 서브루틴 구현에 자기수정프로그램을 쓰던 시절이었지만(따라서 재귀호출이 매우 어려웠다), 지금은 당연히 스택에 반환 주소를 넣는 게 보편적이다.

도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-10-30 04:50 | 작성자 lifthrasiir