차이점

이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다.

차이 보기로 연결

mmix [2011-10-30 04:50] (현재)
lifthrasiir 새로 만듦
줄 1: 줄 1:
 +====== MMIX ======
  
 +http://mmix.cs.hm.edu/
 +
 +[[Donald Knuth]]가 [[TAOCP]] 최신판에 쓰려고 만든 [[명령집합아키텍처]]. M-Mix로 읽는다(따라서 [[영어의관사|부정관사]] //an//이 붙는다). 본래 TAOCP에서는 MIX라 불리는, 1960년대에 나왔으면 일반적일 그런 명령 집합 아키텍처가 쓰였는데, 아무래도 너무 오래되었기 때문에((예를 들어서 당시에는 서브루틴 구현에 [[자기수정프로그램]]을 쓰던 시절이었지만(따라서 [[재귀호출]]이 매우 어려웠다), 지금은 당연히 [[스택]]에 반환 주소를 넣는 게 보편적이다.)) 현대적이면서 실제로 구현도 가능할 수준의 아키텍처를 새로 만들기로 한 것이다. 실제로 MMIX의 설계에는 [[Alpha아키텍처]]와 [[MIPS아키텍처]]를 설계한 설계자들이 도움을 줬다고 한다(...).
 +
 +MMIX를 실제로 구현한 칩이 존재하지는 않지만, 기술적으로는 현대적인 아키텍처가 필요할 만한 웬만한 기능을 다 구현하고 있으며 실제로 [[FPGA]] [[http://repo.or.cz/w/fpgammix.git|구현]]도 이론상으로는 존재한다. MMIX는 한동안 개발 상태였으나, [[2011년 9월]]을 기점으로 [[http://mmix.cs.hm.edu/message.html|현재 버전의 시뮬레이터를 최종판으로 선언]]하였으며(남아 있는 버그는 [[기능으로서의버그|기능으로 취급한다]]), 추후 개발도 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와 달리 [[운영체제]]가 필요하다는 얘기.
 +
 +===== 바깥 링크 =====
 +
 +  * [[http://www-cs-faculty.stanford.edu/~knuth/mmix.html|Knuth의 옛 MMIX 페이지]]
 +  * [[http://mmixmasters.sf.net/|MMIXMasters]] --- TAOCP에 남아 있는 MIX 프로그램들을 MMIX로 변환하는 자원 봉사자들의 모임
 +
 +{{tag>명령집합아키텍처}}

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