Data General의 팀이 새로운 기계 (코드 명 "Eagle", 나중에 MV / 8000이라고 함)를 디자인하는 Tracy Kidder의 "새로운 기계의 영혼"을 읽고 있습니다. 이전 아키텍처 (16 비트 Eclipse)의 32 비트 확장입니다. 회전 테마 중 하나는 모드 비트가있는 머신을 만들고 싶지 않으며이에서 성공한 것 같습니다.
그러나 이것이 기술적으로 어떻게 달성되는지는 제외하고 모드 비트가없는 기계를 만드는 것이 왜 그렇게 매력적인 지에 대해서는 다루지 않습니다. 이 책은 기술 서적이 아니므로 세부 사항이 어떻게 든 왜곡되었을 수 있습니다. 그러나 당시에는 "모드 비트"솔루션이 일반적 이었으므로 (가능하므로) 엔지니어가 미학적 이유로 매력적이지 않은 것으로 여겨지는 책을 읽는 느낌이 들었습니다. 이 책은 또한 모드 비트없이 디자인을 만드는 것은 엄청나게 어려운 작업처럼 보이게합니다.
어떻게 달성했는지에 대한이 설명을 찾았습니다.
http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt
기본적으로 새 명령어에 대해 이전에 사용하지 않은 opcode 공간 부분을 사용하는 것 같습니다. 나는 그것이 "그냥"이라는 것이 조금 실망했다는 것을 인정해야한다. 또한 나는 이것이 여전히 몇 가지 질문에 대답하지 않는다고 생각합니다.
첫째, 16 비트 프로세스는 어떻게 32 비트 주소 공간에 존재 했습니까? 32 비트 확장을 "모드 비트없이"만드는 데있어 핵심 과제라고 생각합니다. 반면에 명령어 세트를 확장하는 것은 비교적 일반적인 작업입니다. 어떻게 발생했는지에 대한 설명이 없기 때문에 16 비트 코드는 항상했던 것처럼 단순히 메모리에 액세스한다고 가정 할 수 있습니다. 어쩌면 어떤 유형의 가상화 / 뱅킹 메모리보기 (첫 번째 주소의 위치를 제어하는 새로운 CPU 레지스터 포함) 또는 그런 것. 그러나 그것보다 더 많은 것이 있는지 모르겠습니다. 이 경우 일종의 "모드 비트"솔루션이라고 주장 할 수 있습니다. 16 비트 모드 프로세스는 CPU에 추가 된 특수 기능으로 인해 다른 프로세스와 함께 실행될 수 있습니다.
둘째, 모드 비트가없는 머신을 만드는 것이 왜 그렇게 매력적인가요? 이 책에서 선전 된 많은 이점은 고객이 이전 소프트웨어를 실행하고 싶어한다는 것입니다. 그러나 모드 비트를 사용하는 전체 목적은 이전 버전과의 호환성을 가지기 때문에 모드 비트에 대해 말하는 것처럼 보이지 않습니다. AMD가 x86을 64 비트로 확장했을 때, 적어도 "모드 비트"라는 단어에 대한 이해에 따르면 그들이 한 것은 정확히 모드 비트를 추가하는 것이 었습니다. CPU를 64 비트 모드로 만드는 특수 비트입니다. 프로세스가 64 비트 모드의 "하위 모드"에서 실행되도록하는 또 다른 비트 (32 비트 응용 프로그램과 호환 가능). 서브 모드의 본질은 CPU가 명령 스트림을 이전 32 비트 명령으로 해석하지만 32 비트 메모리 액세스는 새로운 페이지 테이블 형식 (64 비트 인식 운영 체제에서 설정)을 사용하여 해결되고 결국에는 전체 물리적 주소 공간에 매핑됩니다. 또한 32 비트 코드는 64 비트 코드로 선점 할 수 있습니다. Data General 솔루션과 마찬가지로 32 비트 프로그램도 64 비트 프로그램 (DG의 경우 16 비트 vs 32 비트)에서 실행될 수 있습니다. 따라서 고객 관점에서 전혀 차이가없는 것으로 보입니다. 따라서 구현에있어 유일한 이점은 설계를 단순화 할 수 있었지만 그 당시에도 모드 비트가 공통적 인 것으로 보였기 때문에이 책은 그것이 걱정되는 것처럼 들리지 않습니다. x64 사례에서와 같이 사용했습니다).
내가 놓친 것이 있다고 확신하므로 누군가가이 "비 모드 비트"디자인의 기술적 세부 사항과 장점에 대해 더 자세히 논의 할 수 있다면 좋을 것입니다.