"No mode bit"의 데이터 일반 ​​MV / 8000 장점


10

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 사례에서와 같이 사용했습니다).

내가 놓친 것이 있다고 확신하므로 누군가가이 "비 모드 비트"디자인의 기술적 세부 사항과 장점에 대해 더 자세히 논의 할 수 있다면 좋을 것입니다.


그 당시-공통 단어 크기를 16 비트에서 32 비트로 이동했던 날 – 대부분의 새로운 32 비트 아키텍처는 실행 가능한 경우에도 동일한 mfr의 16 비트 라인과는 완전히 다른 명령 세트를 가졌습니다. "모드 비트"로 설정된 16 비트 명령어. 새로운 32 비트 머신으로 프로젝트를 업그레이드하는 사람들이 새로운 아키텍처 인 한, 어떤 mfr에서든 새로운 머신 중 최고의 머신을 선택하지 않는 한 동일한 mfr을 유지할 이유가 없었기 때문에 마케팅 불확실성을 초래했습니다 . "모드 비트"가 없으면 "증분"전환이 쉬워집니다. 따라서 DG를 유지하십시오.
davidbak

답변:


8

이에 대한 답은 데이터 총괄 책임자 인 Ed deCastro가 차세대 CPU를 설계하기 위해 노스 캐롤라이나에 엔지니어 팀을 설립 한 것입니다. 그는 매사추세츠 팀인 우리에게 지원과 점진적 개선의 임무를 부여했습니다. 우리는 매번 매우 합리적인 모드 비트를 가진 새로운 주요 아키텍처를 세 번 제안했으며,이를 약간의 점진적 향상으로 설명했습니다. 매번 Ed는 우리의 변장을보고 노스 캐롤라이나 팀의 성공을 기대하면서 제안을 거부했습니다. Ed는 우리가 어떻게 제안을 위장하려했는지에 상관없이 모드 비트가 있다면 그것이 새로운 세대 아키텍처라는 것을 알 것입니다. 따라서 효율성이 떨어 졌더라도 모드 비트가없는 차세대 아키텍처를 제안해야했습니다. 그것이 우리가 Ed deCastro를 지나서 얻은 방법입니다. 새로운 기계의 영혼,


안녕하세요, 정보에 감사드립니다. 그렇습니다. (책을 읽음으로써) 모드-비트 토론이 정치적 의미에 대해 많은 영향을 받았다는 것이 저의 인상입니다. 내부자 정보에 적합-MV / 8000과 같은 사운드는 매우 흥미 진진한 프로젝트였습니다.
Morty

6

이론적으로 "no mode bit"는 기존 16 비트 운영 체제를 전혀 수정하지 않고 사용할 수 있으며 새로운 32 비트 응용 프로그램이 붙어 있지만 OS는 32 비트 응용 프로그램을 시작할 수 있습니다. 16 비트의 가상 주소이므로 32 비트 레지스터와 새 명령어를 사용할 수 있지만 보다 큰 가상 주소에 액세스하면 오작동합니다 .216

모드 비트를 사용하면 프로그램이 16 비트인지 32 비트인지 확인한 다음 프로그램을 시작하기 전에 모드 비트를 적절하게 설정하기 위해 이전 16 비트 OS를 수정해야했습니다.

실제로 MV / 8000에는 실제로 모드 비트가있는 것 같습니다. Clemson의 Mark Smotherman 웹 페이지의 다른 곳에는 1980 년 데이터 일반인 ECLIPSE MV / 8000 운영 원칙을 게시 했습니다 . 부록 E (369 페이지에서 시작)를 보면 MV / 8000에 완전히 다른 두 가지 페이지 테이블 메커니즘이 있음을 알 수 있습니다. MV / 8000이 이전 버전과 호환되었던 특정 시스템은 C / 350이었고 C / 350에는 특정 16 비트 메모리 할당 및 보호 장치가 있었으며 해당 장치를 제어하는 ​​특정 방법이있었습니다. 32 비트 논리 대 실제 작업의 경우 주소 변환 장치를 설정합니다 (31 페이지에서 시작하는 3 장에서 설명 함).

실제로 의미하는 것은 32 비트 모드에서 16 비트 명령어를 실행할 때 논리 주소의 상위 16 비트가 0으로 설정된다는 것입니다. 또한 상위에 발생하는 사항에 대한 사양이 있어야합니다. 16 비트 모드에서 32 비트 명령어를 실행할 때 16 비트 주소가 있지만 설명서를 잠시 꼼꼼히 읽는 동안에는 찾을 수 없었습니다.

따라서 모드 비트가 좋은지 나쁜지에 대한 문제는 아닙니다. 16 비트와 32 비트 명령어를 구별하기 위해 모드 비트를 사용할 특별한 이유가 없었습니다. 16 비트 명령어는 16 비트의 논리 주소 (높은 16 비트가 0으로 설정 됨) 및 16 비트 레지스터를 사용하고 32 비트 명령어는 32 비트의 논리 주소 및 32 비트 레지스터를 사용합니다. 이전 OS는 새 시스템에서 "작동"하지만 이전 OS에서 새 프로그램을 실행하여 새 지침을 시도 할 수도 있습니다.


안녕하세요. 이것은 "모드 비트 없음"으로 목표를보다 명확하게합니다. 따라서 목표는 원래 16 비트 o / s를 부팅 할 수 있지만 32 비트 프로그램을 계속 실행할 수있었습니다. 그러나 말했듯이 해당 모드에서 실행되는 32 비트 프로그램 내에서 32 비트 논리 주소 공간을 사용하는 것은 불가능합니다. 어떤면에서는 인텔이 16 비트에서 32 비트로 전환 한 것과 비슷합니다. 여기서 16 비트 프로그램 내에서 (예를 들어 MS-DOS에서 실행) 32 비트 명령어 (레지스터의 높은 부분에 액세스)를 실행할 수도 있습니다. 그러나 동시에 그들은 ...
Morty

... "true"32 비트 보호 모드 (페이징도 허용)로 들어가기위한 모드 비트. 32 비트 모드에서는 32 비트 명령어의 인코딩이 16 비트 모드에서 32 비트 명령어의 인코딩과 다르지만 ( "기본"이 다르기 때문에) 기능은 동일합니다. 반면, x86을 64 비트로 전환하면 명령어 인코딩이 완전히 변경되어 32 비트 프로그램 (또는 16 비트 프로그램)은 64 비트 레지스터 등을 사용할 수 없습니다. / s 64 비트 모드 ( "긴 모드")에서 프로세스를 시작합니다.
Morty

그러나, 처음에는 모드 비트가 있기 때문에이 "비 모드 비트"설계를 강조하는 장점에 의문을 제기 할 수 있으며,이 모드는 모든 것이 제공되는 코너 케이스 ( "오래된 OS 실행 및 새로운 응용 프로그램") 인 것 같습니다. 이점-대부분의 고객이 하드웨어를 최대한 활용할 수있는 새로운 운영 체제를 실행하고 싶지 않습니까? 여기서 중요한 기능은 새로운 OS가 이전 앱을 실행할 수 있다는 것입니다! 그러나 내가 보낸 링크가 ​​언급했듯이 이것은 불가능합니다. 프로그램은 CPU 링크를 렌더링하는 (o / s의 변경으로 인해) 다시 연결하고 다시 컴파일해야합니다. 측면 ot!
Morty
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.