데이터 일반 Nova

Data General Nova
Nova 시스템(베이지와 옐로우, 중앙 하단) 및 카트리지 하드 디스크 시스템(Nova보다 아래쪽에 개봉)이 거의 비어 있는 랙 마운트
Data General Nova 1200 전면 패널
Nova 1200(오른쪽 중간)은 세계 최초의 시판 CT 스캐너인 EMI-Scanner에 의해 생성된 이미지를 처리했습니다.

Data General Nova는 미국 Data General사가 출시한 16비트 미니 컴퓨터 시리즈입니다.노바 가문은 1970년대에 큰 인기를 끌었고 결국 수만 대가 팔렸다.

1969년, 「[1]노바」라고 알려진 최초의 모델이 발매되었습니다.Nova는 단일 3U마운트 케이스에 패키징되어 대부분의 간단한 작업을 처리할 수 있는 충분한 컴퓨팅 능력을 갖추고 있었습니다.노바는 전 세계 과학 실험실에서 인기를 끌었다.그 다음해에 슈퍼가 그 뒤를 따랐다.NOVA는 약 4배 빠르게 작동했습니다.

집적회로(또는 "마이크로칩") 설계의 급속한 발전기에 도입된 이 라인은 이후 5년 동안 800과 1200, Nova 2, Nova 3, 그리고 궁극적으로 Nova 4를 출시하는 등 몇 가지 업그레이드를 거쳤습니다.싱글 칩 구현은 또한 1977년에 마이크로NOVA로 도입되었지만, 시장이 새로운 마이크로프로세서 설계로 이동함에 따라 널리 사용되지 않았습니다.페어차일드 세미컨덕터는 1977년 노바의 마이크로프로세서 버전인 페어차일드 9440을 출시했지만 시장에서는 사용이 제한적이었다.

Nova 제품군은 Data General Eclipse에 의해 계승되었습니다.Data General Eclipse는 대부분의 면에서 유사하지만 최신 운영 체제에서 필요한 가상 메모리 지원 및 기타 기능을 추가했습니다.이클립스의 32비트 업그레이드로 1980년대 이클립스 MV 시리즈가 탄생했다.

역사

에드손 드 카스트로와 PDP-X

Edson de Castro는 최초의 진정한 미니컴퓨터로 [2]널리 알려진 12비트 컴퓨터인 DEC(Digital Equipment Corporation) PDP-8의 제품 매니저였습니다.그는 또한 개별 트랜지스터 [3]대신 초기 집적회로를 사용한 업그레이드된 PDP-8/I의 설계를 주도했다.

PDP-8/I 공정에서 de Castro는 조립할 수 있는 기판의 복잡성이 빠르게 발전하고 있는 회로 기판 제조업체를 방문했다.드 카스트로는 8/I를 대형 보드에서 완전 자동화된 조립체로 제작할 수 있다고 결론내렸는데, 이는 불과 1년 전만 해도 불가능했을 것이다.DEC 내의 다른 기사들은 이전의 기계에서 사용된 작은 보드에 익숙해져 [a]단일 보드에 많은 컴포넌트가 있을 때 발생하는 문제를 추적하는 데 관심이 있었습니다.8/I의 경우 [3]밀도를 약간 향상시키기 위해 새로운 "플립 칩" 패키지를 사용하여 소형 보드에 머무르기로 결정했습니다.

PDP-8이 개발되고 있던 기간 동안 ASCII의 도입과 1967년 그 메이저업데이트에 의해 대부분의 이전 설계와 같이 6비트의 배수가 아닌 8비트의 배수로 이루어진 새로운 세대의 디자인이 탄생했습니다.이를 통해 DEC의 현재 12비트 및 18비트 라인업이 아닌 16비트 워드 길이로 작동하는 미드레인지 설계가 가능해졌다.드 카스트로는 15인치 정사각형 [4][5]보드 하나에 16비트 미니컴퓨터 CPU를 구축함으로써 PDP-8을 개선할 수 있다고 확신했다.

1967년, 드 카스트로는 "PDP-X"로 알려진 몇 가지 고급 기능을 포함한 새로운 설계 작업을 시작했습니다.그 중에는 8비트,[6] 16비트 및 32비트 플랫폼을 구축하는 데 사용할 수 있는 단일 기본 설계도 있었습니다.이것은 몇 가지 상세한 아키텍처 문서를 작성하는 데까지 진행되었습니다.Ken Olsen은 이 프로젝트가 12비트 PDP-8 및 18비트 PDP-9에 비해 충분한 이점을 제공하지 못한다고 생각하여 이 프로젝트를 지지하지 않았습니다.그것은 [4]결국 1968년 봄에 취소되었다.

노바 설계

PDP-X의 취소는 드 카스트로가 DEC를 떠나 스스로 시스템을 구축하는 것을 고려하게 만들었다.그는 혼자가 아니었다; 1967년 말에 같은 생각을 가진 엔지니어들이 그러한 기계를 고려하기 위해 결성되었다.이 그룹에는 부서 매니저인 Pat Green, 또 다른 하드웨어 엔지니어인 Richard Sogge, 소프트웨어 엔지니어인 Henry Burkhardt [7]III가 포함되어 있습니다.PDP-X와는 대조적으로, 새로운 대처는 단 하나의 머신에 초점을 맞췄는데, 이는 De Castro가 PDP-X의 개념이 소규모 [8]신생 기업에게는 너무 야심 차다고 느꼈기 때문입니다.

DEC에서 다른 사람들과 논의한 결과, 초기 개념은 구현 비용이 [9]적게 드는 8비트 머신으로 이어졌습니다.Fairchild Semiconductor의 영업사원인 Herbert Richman과 DEC와의 연락을 통해 서로 알고 지낸 이야기를 시작했다.당시 Fairchild는 빠르게 성장하는 TTL 시장에서 Texas Instruments and Signetics와 경쟁하고 있었으며 보다 복잡한 설계를 가능하게 하는 새로운 을 선보이고 있었습니다.페어차일드의 최신 9300 시리즈는 칩당 최대 96개의 게이트를 허용했으며, 이를 이용해 바이너리 카운터, [10]시프트 레지스터 등 다수의 4비트 칩을 구현했다.

이러한 IC를 사용하면 CPU의 핵심 수학 컴포넌트인 완전한 산술 논리 유닛(ALU)을 구현하는 데 필요한 총 IC 카운트가 감소하여 8비트 설계에서 16비트로 확장할 수 있습니다.이를 위해서는 CPU를 1개의 15x15인치(38cm×38cm) 프린트 회로 기판에서2개로 확장할 필요가 있었습니다만, 이러한 설계는 8/I보다 훨씬 저렴하고, ASCII 베이스로 되어 있습니다.세 번째 보드에는 입출력 회로가 장착되어 있으며, 전체 시스템에는 일반적으로 4kB의 랜덤 액세스 메모리가 탑재된 다른 보드가 포함되어 있습니다.하나의 랙마운트 [5]섀시에 장착할 수 있는 완전한 4장의 카드 시스템.

이 기판은 인쇄 회로 백플레인을 사용하여 연결할 수 있도록 설계되었으며 수동 배선을 최소화하여 모든 기판을 자동으로 조립할 수 있습니다.따라서 8/I에 비해 비용이 크게 절감되었습니다.이 기판은 백플레인으로 배선되어 와이어랩을 사용하여 서로 연결되어 있어야 했습니다.더 큰 보드 구조는 또한 Nova를 더욱 신뢰할 수 있게 해주어 산업용 [5]또는 실험실 환경에서 특히 매력적으로 만들었습니다.

새로운 설계에서는 심플한 로드 스토어 아키텍처[4] 채용하고 있었습니다.이 아키텍처는 1980년대에 RISC 설계에 다시 등장했습니다.플립 플랍의 복잡성이 칩에 구현되면서 급속히 감소되고 있었기 때문에 PDP [4]시리즈와 같은 저비용 제품에서 볼 수 있는 단일 레지스터 대신 4개의 범용 어카운터(acculator)를 추가하여 로드/스토어 설계의 주소 지정 모드 부족을 상쇄했습니다.

노바 소개

1967년 말 리치먼은 뉴욕에 본부를 둔 변호사 프레드 애들러에게 이 단체를 소개했고, 애들러는 시드 캐피털을 위한 다양한 자금원을 조사하기 시작했다.1968년까지 아들러는 보스턴 지역의 벤처 캐피털 펀드 컨소시엄과 대규모 자금조달 계약을 맺었고, 이 컨소시엄은 생산 증대에 사용할 수 있는 두 번째 40만 달러를 초기 투자하기로 합의했습니다.de Castro, Burkhart 및 Sogge는 DEC를 그만두고 1968년 4월 15일에 Data General(DG)을 시작했습니다.그린은 그 모험이 너무 위험하다고 생각하여 그들과 합류하지 않았고 리치먼은 [5]그 제품이 올해 말에 가동될 때까지 합류하지 않았다.

첫 번째 시스템 작업은 약 9개월이 걸렸고, 첫 번째 판매 활동은 11월에 시작되었다.가을 합동 컴퓨터 회의가 그 해 12월로 연기되었기 때문에 그들은 약간의 운이 있었다. 그래서 그들은 작업 부대를 모스콘 센터로 데려올 수 있었고 그곳에서 [11]그들은 스페이스워를 운영했다.DG는 1969년 노바를 미화 3,995달러(2021년 29,520달러 상당)로 공식 출시하며 "세계 [12]최고의 소형 컴퓨터"라고 선전했다.기본 모델은 개봉 즉시 유용하지 않았고 코어 메모리 형태로 8kW(16kB) RAM을 추가하면 가격은 일반적으로 $7,995까지 [13]올랐습니다.반면 4kW(6kB)의 8/I 가격은 12,[14]800달러였습니다.

첫 번째 판매는 텍사스의 한 대학에 대한 것으로, 팀은 2월에 출하된 사례를 수작업으로 작성했습니다.그러나 항공업계의 파업 중이어서 기계는 도착하지 않았다.그들은 두 번째 예시를 보냈는데, 그 시점까지 파업이 끝났기 때문에 바로 도착했고, 5월에는 원래의 [15]예도 마침내 배달되었다.

이 시스템은 6개월 만에 100대, [16]15개월 [13]후에 500대가 팔리는 등 처음부터 성공적이었다.새로운 버전이 출시됨에 따라 매출이 가속화되었고 1975년에는 연간 1억 [17]달러의 매출을 올렸습니다.

슈퍼 NOVA

Ken Olsen은 공개적으로 DG가 실패할 것이라고 예측했지만, Nova의 출시로 그런 일은 일어나지 않을 것이 분명했다.이때쯤에는 다른 많은 회사들도 16비트 디자인을 도입하는 것에 대해 이야기하고 있었다.Olsen은 이 제품이 12비트뿐만 아니라 18비트 라인에 위협이 된다고 판단하고 새로운 16비트 설계를 [18]시작했습니다.이것은 1970년에 PDP-11로 등장했습니다.PDP-11은 노바만큼 PDP-X와는 다른 훨씬 더 복잡한 설계입니다.그 두 디자인은 시장에서 [4]치열한 경쟁을 벌였다.

DEC의 새로운 시스템에 대한 소문은 Nova가 출하되기 시작한 직후에 DG에 도달했다.1970년 봄, 그들은 새로운 디자이너 래리 셀리그만을 고용하여, 가능한 모든 기계를 뛰어넘게 했다.노바 설계 이후 두 가지 주요 변화가 있었는데, 하나는 시그네틱스가 가산기, XNOR 및 AND를 결합한 4비트 IC인 8260을 도입했다는 것입니다. 즉, 기본 논리를 구현하는 데 필요한 칩의 수가 약 3배 감소했다는 것입니다.또 다른 이유는 인텔이 반도체 기반 메모리를 공격적으로 내세우며 단일 칩에 1024비트를 탑재하고 코어 [18]메모리보다 훨씬 빠른 속도로 작동한다는 입니다.

Seligman의 새로운 디자인은 이 두 가지 개선 사항을 모두 활용했습니다.우선, 새로운 IC는 ALU를 같은 2장의 카드상에서 16비트 폭까지 확장할 수 있도록 해, 1 사이클로 연산과 논리 연산을 실행할 수 있도록 해, 새로운 설계를 원래의 4배 고속으로 했습니다.또한 기존 1,200ns에서 800ns로 사이클 타임을 개선한 새로운 소형 코어 메모리가 사용되었으며, 더 큰 성능을 제공합니다.1/3 개선.코어를 읽기 전용 메모리로 교체함으로써 성능을 더욱 향상시킬 수 있습니다. 코어의 읽기/쓰기 사이클이 부족하면 300ns에서 액세스하여 성능을 [16]획기적으로 향상시킬 수 있습니다.

결과 슈퍼로 알려진 머신은NOVA는 1970년에 발매되었습니다.초기 모델은 여전히 코어를 사용했지만, 전체 설계는 더 빠른 반도체 메모리를 사용할 수 있고 플랫폼이 이를 최대한 활용할 수 있다는 전제를 기반으로 했습니다.이것은 슈퍼와 같은 해 말에 도입되었습니다.반도체(SC) 메모리를 탑재한 NOVA SC.훨씬 더 높은 성능의 메모리를 통해 메모리와 동기화된 CPU의 속도를 300ns 사이클 타임(3.3MHz)으로 더욱 높일 수 있었습니다.이것은 수년 [19]동안 가장 빠른 미니컴퓨터를 만들었다.처음에는 새 메모리도 매우 비싸고 사용 [20]빈도가 높았기 때문에 널리 사용되지 않았습니다.

1200 및 800

Nova 1200 CPU 프린트 회로 기판.74181 ALU는 우측 중앙의 대형 IC입니다.

1968년 Fairchild는 Micromatrix 게이트 어레이 기술의 힘을 입증하기 위해 싱글 칩 4비트 [10][21]ALU인 4711을 프로토타입으로 제작했습니다.이 디자인은 대량생산을 의도한 것이 아니라 생산 비용이 상당히 많이 들었습니다.1969년 시그네틱스 8260의 도입으로 Texas Instruments와 Fairchild는 각각 74181과 9341이라는 4비트 ALU를 1970년에 도입했습니다.8260과는 달리 새로운 설계에서는 모든 공통 로직 기능이 제공되어 칩 [10]수를 더욱 줄였습니다.

이것에 의해, DG는 이러한 IC를 사용한 새로운 CPU의 설계를 검토하게 되었습니다.이를 통해 CPU는 최소한 기본 Nova 또는 SuperNOVA 중 하나의 카드로 감소합니다.CPU 회로 기판을 교체하기만 하면 단일 섀시가 두 머신을 호스트할 수 있는 새로운 개념이 등장했습니다.이를 통해 고객은 저비용 시스템을 구입하여 언제든지 업그레이드할 수 [22]있습니다.

셀리그먼이 슈퍼에서 일하는 동안NOVA는 Ron Gruner로부터 "당신의 제품에 대해 읽었고, 귀사의 광고를 읽었으며, 당신을 위해 일할 것입니다.1주일 후에 당신 사무실로 가서 그것에 [22]대해 이야기할 겁니다."그는 즉석에서 고용되었다.Seligman이 그에 맞는 고성능 [22]버전을 설계하는 동안 Gruner는 저비용 머신을 담당했습니다.

Gruner의 저가 모델은 1970년에 Nova 1200으로 출시되었으며, 1200은 원래 Nova의 1,200 ns 코어 메모리를 사용하는 것을 의미합니다.이것은 단일 74181 칩을 기반으로 한 4비트 ALU를 특징으로 하며, 따라서 기본적으로 리패키지화된 Nova였습니다.Seligman's 리패키지 4ALU SuperNOVA는 1971년에 Nova 800으로 출시되었고, 그 결과 번호가 낮은 모델이 [22]더 높은 성능을 갖는 데 다소 혼란스러운 이름이 붙었습니다.두 모델 모두 7개의 슬롯이 있는 1200, 4개의 슬롯이 있는 1210, 14개의 슬롯이 있는 1220 등 다양한 케이스로 제공되었습니다.

최신 모델

이때까지 PDP-11은 마침내 출하되고 있었다.Nova의 의도적으로 단순한 명령어 세트 아키텍처보다 훨씬 풍부한 명령어 세트를 제공했습니다.IC 설계, 특히 가격 대비 성능 비율의 지속적인 개선은 원래의 단순화된 명령의 가치를 잠식하고 있었습니다.Seligman은 Nova와 호환되는 새로운 기계를 설계하는 동시에, 그것을 원하는 사람들에게 훨씬 더 풍부한 환경을 제공하는 일을 맡았다.이 개념은 Data General Eclipse 시리즈로 출고되었으며, 이 시리즈에서는 과학적 또는 데이터 처리 워크로드에 맞게 명령 세트를 맞춤화할 수 있는 회로를 추가할 수 있습니다.Eclipse는 시장 [23]상위권에서 PDP-11과 경쟁하는 데 성공했다.

비슷한 시기에 DEC의 새로운 32비트 머신에 대한 소문이 돌기 시작했다.DG는 유사한 제품을 보유해야 한다고 결정했고, 그루너는 파운틴헤드 프로젝트가 된 책임을 맡게 되었다.프로젝트의 범위를 고려할 때, 그들은 모든 노력을 오프사이트에서 처리해야 한다는 것에 동의했고, Gruner는 노스캐롤라이나에 있는 Research Triangle Park의 장소를 선택했습니다.이 디자인은 매우[24] 복잡해졌고 결국 몇 년 후에 취소되었다.

이러한 노력이 진행되는 동안, 노바 라인에 대한 작업은 계속되었다.

840

Nova 840 실행(전면 패널은 1220의 패널로 교체 완료)

1973년에 처음 출시된 840에는 최대 17비트 주소를 허용하는 새로운 페이지 메모리 시스템도 포함되어 있습니다.인덱스는 베이스 주소를 더 큰 128kword 메모리로 오프셋합니다.840은 14 슬롯의 큰 케이스로 출하되기 때문에 실제로 이 정도의 메모리를 장착하려면 상당한 공간이 필요합니다.

노바2

다음 버전은 노바 2로, 1973년에 첫 버전이 출고되었습니다.Nova 2는 칩 밀도를 높이면 CPU의 크기를 줄일 수 있기 때문에 기본적으로 이전 시스템의 단순화된 버전입니다.Super와 함께NOVA는 3개의 15×15인치 보드를 사용하여 CPU와 메모리를 구현했으며, Nova 2는 이 모든 것을 하나의 보드에 장착했습니다.ROM은 부트 코드를 저장하기 위해 사용되었으며, "프로그램 로드" 스위치가 뒤집혔을 때 코어로 복사되었습니다.버전은 4개의 슬롯('2/4'), 7개의 슬롯 및 10개의 슬롯('2/10')으로 제공되었습니다.

노바3

Data General Nova 3

1975년의 Nova 3는 내장 스택에 대한 액세스를 제어하는 데 사용되는 두 개의 레지스터를 추가했습니다.또한 프로세서는 TTL 컴포넌트를 사용하여 재실장되어 시스템의 퍼포먼스가 더욱 향상되었습니다.Nova 3는 4 슬롯(Nova 3/4)과 12 슬롯(Nova 3/12) 버전으로 제공되었습니다.

노바4

Data General은 원래 Nova 3를 최신 Eclipse 머신으로 대체할 계획을 세우고 있는 것으로 보입니다.그러나 지속적인 수요로 인해 이번에는 4개의 AMD Am2901 비트슬라이스 ALU를 기반으로 한 Nova 4 머신이 탄생했습니다.이 기계는 처음부터 Nova 4와 Eclipse S/140으로 설계되었으며 각각 다른 마이크로 코드를 가지고 있습니다.부동소수점 보조 프로세서도 사용할 수 있어 별도의 슬롯을 차지했습니다.메모리 매핑을 위한 추가 옵션을 통해 프로그램이 뱅크 스위칭을 사용하여 최대 128kwords의 메모리에 액세스할 수 있습니다.이전 컴퓨터와 달리 Nova 4에는 전면 패널 콘솔이 포함되어 있지 않았으며 필요할 때 콘솔을 에뮬레이트하기 위해 터미널에 의존했습니다.

노바4에는 노바4/C, 노바4/S, 노바4/X의 세 가지 다른 버전이 있었다.Nova 4/C는 모든 메모리(16키워드 또는 32키워드)를 포함하는 싱글보드 구현입니다.Nova 4/S와 4/X는 별도의 메모리 보드를 사용했습니다.Nova 4/X에서는 최대 128kword의 메모리를 사용할 수 있도록 온보드 메모리 관리 유닛(MMU)이 활성화되어 있습니다.MMU는 Nova 4/S에도 설치되었지만 펌웨어에 의해 비활성화되었습니다.4/S와 4/X에는 모두 "프리페처"가 포함되어 있어 필요하기 전에 메모리에서 최대 2개의 명령을 가져와 성능을 향상시킵니다.

마이크로 NOVA

Data General mN601 마이크로프로세서

Data General은 또한 일련의 microNOVA 싱글 칩 구현 노바 프로세서를 생산했습니다.40핀 Dual In-Line Package(DIP; 듀얼 인라인 패키지) 칩에 장착하기 위해 주소 버스와 데이터 버스는 16핀 세트를 공유했습니다.즉, 메모리에 대한 읽기 및 쓰기에 2주기가 필요했고, [25]그 결과 머신이 원래 Nova의 절반 정도 속도로 실행되었습니다.

시리즈의 첫 번째 칩은 1977년의 mN601이었다.이 제품은 다른 사용자를 위한 CPU, 컴퓨터를 구현하려는 사용자를 위한 완전한 칩셋, 4kB RAM을 갖춘 단일 보드 상의 완전한 컴퓨터, 그리고 [25]노바의 완전한 로우엔드 모델로 판매되었습니다.1979년의 mN602로 업그레이드된 설계 버전은 전체 칩셋을 단일 VLSI로 축소했습니다.이는 마이크로NOVA MP/100과 더 큰 마이크로NOVA MP/200의 두 가지 기계로 제공되었습니다.

microNOVA는 나중에 2장의 플로피 디스크를 탑재한 PC 스타일의 케이스에 Enterprise로 재포장되었습니다.1981년에 출하된 기업은 RDOS를 실행했지만, 같은 해에 IBM PC가 등장하면서 다른 대부분의 기계들은 레이더에 [26]잡히지 않게 되었습니다.

노바의 유산

노바는 Xerox Alto([27]1973년)와 Apple I(1976년)[28] 컴퓨터 설계에 영향을 미쳤으며 아키텍처는 Computervision CGP(컴퓨터비전 그래픽스 프로세서) 시리즈의 기초가 되었다.외관 디자인은 MITS Altair(1975) 마이크로컴퓨터의 전면 패널에 직접적인 영감을 준 것으로 알려져 있습니다.

Data General은 일련의 더 빠른 디자인으로 오리지널 Nova의 성공을 추적했습니다.나중에 Eclipse 시스템 제품군이 상위 호환 명령 집합을 통해 도입되었고, MV 시리즈는 Eclipse를 32비트 아키텍처로 확장하여 DEC VAX와 경쟁하게 되었습니다.MV 시리즈의 개발은 트레이시 키더의 1981년 인기 있는 인 "The Soul of a New Machine"에 기록되었다.Data General 자체는 나중에 인텔 프로세서 기반 서버 및 스토리지 어레이 벤더로 발전하여 최종적으로 EMC에 의해 구입됩니다.

2004년 현재도 항공 교통[citation needed] 관제 등 전 세계 다양한 애플리케이션에서 16비트 Novas 및 Eclipse가 실행되고 있습니다.전 세계에는 본래의 16비트 Data General 시스템을 [29][30]복원하고 보존하는 다양한 사람들이 있습니다.

기술 설명

프로세서 설계

Data General Nova 레지스터
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (비트 위치)
어큐뮬레이터 레지스터
0 레지스터 0
1 레지스터 1
인덱스 레지스터
2 인덱스 레지스터 2
3 인덱스 레지스터 3
프로그램 카운터
PC 프로그램 카운터
상태 레지스터
C 반송 플래그

PDP-8과 달리 Nova는 로드 스토어 아키텍처였습니다.4개의 16비트 어큐뮬레이터 레지스터가 있으며, 그 중 2개는 인덱스 레지스터로 사용할 수 있습니다.15비트 프로그램카운터싱글비트 캐리 레지스터가 있습니다.PDP-8과 마찬가지로 현재 +0 페이지 어드레싱이 중심이었습니다.스택 레지스터는 없었지만 이후 Eclipse 설계에서는 이 기능을 위해 전용 하드웨어 메모리 주소를 사용하게 되었습니다.

Nova의 초기 모델은 단일 74181비트 ALU를 사용하여 4비트 패킷으로 직렬로 처리되었습니다.이 설계는 도입 후 1년 후 4개의 74181을 사용하여 완전한 16비트 병렬 연산 장치를 포함하도록 개선되었습니다.이 설계는 SuperNova라고 불립니다.시스템의 향후 버전에서는 스택 유닛과 하드웨어의 증배/분할이 추가되었습니다.

Nova 4 / Eclipse S/140은 4개의 AMD 2901 비트슬라이스 ALU를 기반으로 하며 마이크로코드읽기 전용 메모리에 포함되어 있으며, 자기 코어 메모리를 프로비저닝하지 않고 DRAM 메인 메모리 전용으로 설계된 최초의 Nova였습니다.

메모리 및 I/O

첫 번째 모델은 8,000단어의 마그네틱 코어 메모리를 옵션으로 사용할 수 있었습니다.이것은 사실상 모든 사람이 구입해야 하는 것으로, 시스템의 가격은 $7,995에 달했습니다.

이 코어 메모리 보드는 4개의 뱅크로 구성된 4개의 그룹으로 구성되었으며, 각 뱅크는 64 x 64 = 4096비트, x 2세트는 8,192비트, x 4세트는 32,768비트, x 4세트는 총 131,072비트, x 4세트는 16비트,1비트,92단어 기억.

이 8K 워드 메모리 보드의 코어는 중앙에 위치한 가로 5.25인치, 세로 6.125인치 크기의 "보드 온 어 보드"를 사용했으며 보호 플레이트로 덮여 있었습니다.필요한 서포트 드라이버의 읽기-쓰기-쓰기 회로로 둘러싸여 있었습니다.모든 코어 및 대응하는 서포트 전자 장치는, 1개의 표준 15 x 15 인치(380 mm) 보드에 들어갑니다.이러한 코어 RAM은, 1개의 외부 확장 박스에 최대 32 K까지 서포트할 수 있습니다.반도체 ROM은 그 당시에 이미 사용 가능했고 RAM이 필요 없는 시스템(즉, ROM만을 탑재한 시스템)은 많은 산업 환경에서 인기를 끌었다.원래 노바 머신은 약 200kHz로 작동했지만 슈퍼노바는 특수 반도체 메인 메모리와 함께 사용하면 최대 3MHz로 작동하도록 설계됐다.

표준화된 백플레인 및 I/O 신호는 단순하고 효율적인 I/O 설계를 통해 Nova에 프로그래밍된 I/O 및 데이터 채널 장치를 경쟁 머신에 비해 간편하게 인터페이스할 수 있게 되었습니다.전용 I/O 버스 구조 외에도 Nova 백플레인에는 비표준 커넥터 또는 기타 특수 용도로 사용할 수 있는 와이어 랩 핀이 있었습니다.

프로그래밍 모델

명령 형식은 1) 레지스터 간 조작, 2) 메모리 참조, 3) 입출력 등 세 가지 기능 중 하나로 크게 분류할 수 있습니다.각각의 지시는 한 단어로 되어 있었다.레지스터 간 조작은 비트 효율이 거의 RISC와 비슷했습니다.또한 레지스터 데이터를 조작하는 명령으로 테스트, 시프트 및 결과 폐기를 선택할 수도 있습니다.하드웨어 옵션에는 정수 곱셈 및 분할 장치, 부동 소수점 단위(단일 정밀도 및 이중 정밀도), 메모리 관리 등이 있습니다.

천공 테이프의 Data General 소프트웨어

최초의 노바에는 펀치 테이프에 베이직 인터프리터가 포함되어 있었습니다.제품이 성장함에 따라 Data General은 다양한 일관된 운영 체제에서 실행되는 Nova 컴퓨터용 여러 언어를 개발했습니다.FORTRAN IV, ALGOL, Extended BASIC, Data General Business Basic, Interactive COBOL 및 여러 어셈블러가 Data General에서 제공되었습니다.서드파티 벤더와 사용자 커뮤니티는 Forth, Lisp, BCPL, C, ALGOL기타 COBOL 및 BASIC의 독점 버전을 사용하여 서비스를 확장했습니다.

명령 집합

아래에 구현된 기계 명령은 모든 Nova 시리즈 프로세서에서 구현된 공통 집합입니다.특정 모델에 따라서는 추가 명령이 구현되는 경우가 많았으며 일부 지침은 옵션 하드웨어를 통해 제공됩니다.

산술 명령

모든 산술 명령어는 축전지 간에 작동됩니다.2개의 오퍼랜드가 필요한 조작의 경우, 1개는 소스 어큐뮬레이터에서, 1개는 수신처 어큐뮬레이터에서 취합되어 결과가 수신처 어큐뮬레이터에 축적되었습니다.싱글 오퍼랜드 연산의 경우, 오퍼랜드가 소스 레지스터로부터 취득되어 결과가 행선지 레지스터를 대체했습니다.모든 단일 오퍼랜드 opcode에 대해 소스 및 타깃 어큐뮬레이터가 동일하게 동작하는 것이 허용되었으며 동작은 예상대로 기능했습니다.

모든 산술 명령에는 "무부하" 비트가 포함되어 있습니다.이 비트는 설정 시 결과를 수신처 레지스터로 전송하는 것을 억제합니다.이 비트는 수신처 레지스터의 기존 내용을 잃지 않고 테스트를 수행하기 위해 테스트 옵션과 함께 사용되었습니다.어셈블리 언어에서는 opcode에 '#'을 추가하면 무부하 비트가 설정됩니다.

CPU에는 캐리어 비트라고 불리는 싱글 비트 레지스터가 포함되어 있으며, 산술 연산 후에는 최상위 비트의 캐리어 비트가 포함됩니다.명령의 2비트 필드를 사용하여 작업을 수행하기 전에 캐리 비트를 원하는 값으로 설정할 수 있습니다.비트는 명령을 수행하기 전에 설정, 클리어 또는 보완할 수 있습니다.어셈블리 언어에서 이러한 옵션은 Opcode에 문자를 추가하여 지정되었습니다. "O" - 반송 비트 설정; "Z" - 반송 비트 클리어, "C" - 반송 비트 없음 - 반송 비트를 보완합니다.무부하 비트도 지정되면 지정된 자리올림 값이 계산에 사용되지만 실제 자리올림 레지스터는 변경되지 않습니다.

모든 산술 명령에는 시프트 옵션을 지정하는 데 사용할 수 있는 2비트 필드가 포함되어 있으며, 이 필드는 대상 레지스터에 로드되기 전에 결과에 적용됩니다.1비트의 왼쪽 또는 오른쪽 시프트를 지정하거나 결과의 2바이트를 스왑할 수 있습니다.시프트는 17비트 원형이며, 가장 중요한 비트의 "왼쪽"에 자리 매김 비트가 있습니다.즉, 좌회전 시 결과의 최상위 비트가 캐리어 비트로 시프트되고, 이전 캐리어 비트의 내용이 결과의 최하위 비트로 시프트되었다.바이트 스왑은 반송 비트에 영향을 주지 않았습니다.어셈블리 언어에서 이러한 옵션은 opcode에 문자를 추가하여 지정되었습니다. "L" - shift left, "R" - shift right, "S" - swap byte; nothing" - 시프트 또는 스왑하지 마십시오.

모든 산술 명령에는 연산 결과에 적용되는 테스트를 지정할 수 있는 3비트 필드가 포함되어 있습니다.테스트가 true로 평가된 경우 줄에 있는 다음 명령은 건너뜁니다.어셈블리 언어에서 테스트 옵션은 명령의 세 번째 오퍼랜드로 지정되었습니다.사용 가능한 테스트는 다음과 같습니다.

  • SZR - 제로 결과 건너뛰기
  • SNR: 0이 아닌 결과를 건너뜁니다.
  • SZC - 제로 캐리 스킵
  • SNC: 제로 이외의 캐리에서는 건너뜁니다.
  • SBN - 반송과 결과가 모두 0이 아닌 경우 건너뜁니다.
  • SEZ - carry 또는 result 중 하나 또는 둘 다 0인 경우 건너뜁니다.
  • SKP - 항상 건너뜁니다.
  • nothing : 건너뛰지 않음

실제 산술 명령은 다음과 같습니다.

  • MOV: 소스 어큐뮬레이터의 내용을 대상 어큐뮬레이터로 이동합니다.
  • COM - 소스 어큐뮬레이터의 비트 보정을 대상 어큐뮬레이터로 이동합니다.
  • ADD - 소스 어큐뮬레이터를 대상 어큐뮬레이터에 추가합니다.
  • ADC - 소스 어큐뮬레이터의 비트 단위 보완을 가져와 대상 어큐뮬레이터에 추가합니다.
  • NEG - 소스 어큐뮬레이터의 음수를 대상 어큐뮬레이터로 이동합니다.
  • SUB - 대상 어큐뮬레이터에서 콘텐츠소스 어큐뮬레이터를 뺍니다.
  • INC - 소스 어큐뮬레이터의 내용에 1을 추가하고 대상 어큐뮬레이터로 이동합니다.
  • AND - 2개의 어큐뮬레이터의 비트 단위 AND를 실행하여 결과를 대상 어큐뮬레이터에 배치합니다.

모든 옵션을 사용하는 산술 명령의 예를 다음에 나타냅니다.

ADDZR# 0, 2, SNC

이는 다음과 같이 디코딩됩니다.: 반송 비트를 지우고, AC2(어큐뮬레이터 2)의 내용을 AC0에 추가하며, 결과를 1비트를 오른쪽으로 원을 그리며 이동하며, 결과를 테스트하여 반송 비트가 설정되어 있는지 확인하고, 설정되어 있는 경우 다음 명령을 건너뜁니다.테스트 실행 후 결과를 폐기합니다.실제로 두 개의 숫자를 더하고 결과가 홀수인지 짝수인지 여부를 테스트합니다.

메모리 레퍼런스 순서

Nova 명령 세트에는 메모리 내용을 축전지로 전송하는 명령 쌍, 제어 전환 명령 두 개, 메모리 위치 내용을 테스트하는 명령 두 개가 포함되어 있습니다.모든 메모리 참조 명령에는 8비트 주소 필드와 메모리 주소 지정 모드를 지정하는 2비트 필드가 포함되어 있습니다.4가지 모드는 다음과 같습니다.

  • 모드 0: 절대 주소 지정.명령의 주소 필드의 내용은 왼쪽에서 0으로 채워져 대상 주소로 사용됩니다.
  • 모드 1: 상대 어드레싱.명령의 주소 필드의 내용은 왼쪽으로 확장되어 프로그램 카운터의 현재 값에 추가됩니다(명령 실행 시간에는 다음 명령을 가리킵니다).결과는 타겟주소로 사용됩니다.
  • 모드 2: 인덱스 어드레싱.명령어 주소 필드의 내용은 왼쪽으로 확장되어 누산기 2의 현재 값에 추가됩니다.결과는 타겟주소로 사용됩니다.
  • 모드 3: 인덱스 어드레싱.명령어 주소 필드의 내용은 왼쪽으로 확장되어 누산기 3의 현재 값에 가산됩니다.결과는 타겟주소로 사용됩니다.

분명히 모드 0은 8비트주소 필드에서 처음 256개의 메모리 워드를 수신처로 지정할 수 있었습니다.메모리의 이 부분을 「페이지 제로」라고 부릅니다.페이지 0 메모리 워드는 사용 가능한 수가 적기 때문에 Nova 어셈블리 언어 프로그래머들에게 소중한 것으로 여겨졌습니다. 인덱스 어드레싱에 의존하지 않고 프로그램의 어느 곳에서나 페이지 0 위치만 주소 지정할 수 있었습니다. 인덱스 레지스터로 사용하기 위해서는 축적기 2 또는 3을 연결해야 했습니다.어셈블리 언어에서 ".ZREL" 명령어는 어셈블러가 0페이지에 명령어와 데이터 워드를 배치하도록 했습니다.NREL 명령어는 다음 명령어와 데이터 워드를 "일반" 메모리에 배치했습니다.이후 Nova 모델에는 확장된 주소 지정 필드가 포함된 명령이 추가되어 성능 저하로 인해 이러한 어려움을 극복했습니다.

어셈블러는 모드 1의 상대 오프셋을 자동으로 계산했지만 소스에 명시적으로 쓸 수도 있었습니다.메모리 레퍼런스명령어가 의 메모리주소를 참조하고 있는 경우.NREL 공간이지만 모드 지정자는 없으며 모드 1이 가정되어 어셈블러가 현재 명령과 참조 위치 사이의 오프셋을 계산하여 명령의 주소 필드에 배치했습니다(결과 값이 8비트 필드에 적합할 경우).

두 가지 로드 및 저장 지침은 다음과 같습니다.

  • LDA - 메모리 위치의 내용을 지정된 누적기에 로드합니다.
  • STA - 지정된 어큐뮬레이터의 내용을 메모리 위치에 저장합니다.

두 명령 모두 "간접" 비트를 포함했습니다.이 비트가 설정되어 있는 경우(어셈블리 언어에서 opcode에 「@」를 추가해 행해진 경우), 타겟 주소의 내용은 메모리 주소 그 자체라고 가정하고, 그 주소를 참조해 로드 또는 격납합니다.

두 가지 제어 전환 지침은 다음과 같습니다.

  • JMP: 지정된 메모리 위치로 제어 권한을 전송합니다.
  • JSR("점프 서브루틴") - JMP 명령과 동일하지만 점프하기 전에 리턴 주소(줄에 있는 JSR 명령에 따른 명령)를 어큐뮬레이터 3에 추가로 로드합니다.

로드 및 저장 명령의 경우와 마찬가지로 점프 명령에는 간접 비트가 포함되어 있으며, 어셈블리에서 '@' 문자를 사용하여 지정되었습니다.간접 점프의 경우 프로세서는 대상 위치의 내용을 검색하여 이 값을 점프하는 메모리 주소로 사용한다.단, 로드 및 저장 명령과 달리 간접 주소에 가장 중요한 비트가 설정되어 있는 경우 간접 주소에서는 더 많은 인터다이렉션 사이클이 실행됩니다.Nova 3 이전의 Nova 시리즈 프로세서에서는, 간접 주소의 수에 제한이 없었습니다.즉, 그 자체를 참조하는 간접 주소 지정의 루프가 무한해, 명령이 완료되지 않습니다.(이 상태에서는 전면 패널의 STOP 스위치를 눌러도 아무것도 하지 않기 때문에 사용자에게 경고할 수 있습니다.루프를 끊으려면 기계를 리셋해야 했습니다.)

2가지 메모리 테스트 순서는 다음과 같습니다.

  • ISZ: 메모리 위치를 늘리고 결과가 0이면 다음 명령을 건너뜁니다.
  • DSZ - 메모리 위치를 줄이고 결과가 0이면 다음 명령을 건너뜁니다.

로드 및 저장 명령의 경우와 마찬가지로 단일 수준의 간접 주소 지정을 수행하는 간접 비트가 있었습니다.이러한 명령어는 자기 코어 메모리를 탑재한 Novas에서는 메모리 보드 자체 내에서 명령이 실행된다는 점에서 이상했습니다.당시 일반적이던 것처럼 메모리 보드에는 자기 코어 메모리에 내재된 파괴적 읽기 문제를 해결하기 위한 "라이트백" 회로가 포함되어 있었습니다.그러나 라이트백 메커니즘에는 프로세서가 여러 목적으로 사용하는 미니 연산 장치도 포함되어 있습니다.ISZ 및 DSZ 명령의 경우 읽기 중인 메모리 위치와 라이트백 사이에 증가 또는 감소가 발생했습니다.CPU는 단순히 결과가 0인지 0이 아닌지를 알기를 기다렸을 뿐입니다.이 명령어는 메모리 위치를 어큐뮬레이터를 묶지 않고 루프 카운터로 사용할 수 있게 해 주었기 때문에 유용했지만, 동등한 산술 명령을 실행하는 것보다 속도가 느렸습니다.

메모리 레퍼런스 순서의 몇 가지 예를 다음에 나타냅니다.

LDA 1, 카운트

COUNT 라벨이 붙은 메모리 위치의 내용을 축전지 1로 전송합니다.COUNT가 에 있다고 가정합니다.NREL 공간. 이 명령은 LDA 1,1,(COUNT-(.+1))에 해당합니다. 여기서 '.'는 LDA 명령의 위치를 나타냅니다.

JSR@0,17

위치 17의 내용에 의해 지정된 메모리 주소에 간접적으로 페이지 제로 스페이스로 점프해, 반환 주소를 어큐뮬레이터 3에 격납한다.이것은 초기 Nova 모델에서 RDOS 시스템을 호출하는 표준 방식이었다; 어셈블리 언어 니모닉".SYSTM"은 다음과 같습니다.

JMP 0,3

주소가 어큐뮬레이터 3에 포함되어 있는 메모리 위치로 점프합니다.JSR 명령이 어큐뮬레이터 3에 리턴 주소를 남겼기 때문에 이것은 함수 또는 서브루틴 호출에서 리턴하는 일반적인 수단이었습니다.

STA 0, 3,-1

축전지 0의 내용은 축전지 3에 포함된 주소보다 1개 적은 위치에 저장한다.

DSZ 수

COUNT 라벨이 붙은 위치에서 값을 줄이고 결과가 0이면 다음 명령을 건너뜁니다.위의 경우와 같이 COUNT가 에 있다고 가정했을 경우.NREL 공간, 이것은 DSZ 1, (COUNT-(.+1)에 상당합니다.

I/O 명령

Novas는 I/O 장치와의 인터페이스를 위한 채널라이즈드 모델을 구현했습니다.이 모델에서 각 I/O 장치는 "Busy" 및 "Done"으로 불리는 2개의 플래그와 A, B, C로 불리는 3개의 데이터 및 제어 레지스터를 구현해야 했습니다.I/O 명령은 레지스터를 읽고 쓰며 "시작", "지우기", "펄스"라고 하는 세 가지 신호 중 하나를 장치로 보낼 수 있습니다.일반적으로 시작 신호를 전송하면 A/B/C 레지스터에 값을 로드하여 설정된 I/O 동작이 시작됩니다.클리어 신호가 I/O 동작을 정지하고 인터럽트를 클리어했습니다.펄스 신호는 디스크 드라이브의 탐색 작업과 같은 복잡한 하위 시스템에서 보조 작업을 시작하는 데 사용되었습니다.폴링된 디바이스는 보통 디바이스와 A 레지스터 간에 직접 데이터를 이동시킵니다.DMA 디바이스는 일반적으로 A 레지스터를 사용하여 메모리 주소를 지정하고, B 레지스터를 사용하여 전송할 워드의 수를 지정하고, C 레지스터를 사용하여 제어 플래그를 지정합니다.채널 63은 CPU 자체를 참조하여 다양한 특수 기능에 사용되었습니다.

각 I/O 명령에는 6비트 채널 번호 필드, 읽거나 쓸 레지스터를 지정하는 4비트 및 송신할 신호를 지정하는 2비트 필드가 포함되어 있습니다.어셈블리 언어에서 신호는 시작의 경우 'S', 클리어의 경우 'C', 펄스의 경우 'P', 신호 없음의 경우 'Nothing'이라는 문자를 opcode에 추가하여 지정되었습니다.동작 코드는 다음과 같습니다.

  • DIA - 디바이스의 A 레지스터 내용을 지정된 어큐뮬레이터로 이동합니다.
  • DOA: 지정된 채널 상의 디바이스 A 레지스터에 지정된 어큐뮬레이터의 내용을 전송합니다.
  • DIB - 디바이스의 B 레지스터 내용을 지정된 어큐뮬레이터로 이동합니다.
  • DOB: 지정된 어큐뮬레이터의 내용을 지정된 채널 상의 디바이스 B 레지스터로 전송합니다.
  • DIC - 디바이스의 C 레지스터 내용을 지정된 어큐뮬레이터로 이동합니다.
  • DOC - 지정된 어큐뮬레이터의 내용을 지정된 채널의 디바이스 C 레지스터로 전송합니다.
  • NIO - "No I/O", 오칭.레지스터 전송을 하지 않고 장치에 신호를 보내기 위해 명령이 사용되었습니다.

또, 디바이스의 상태를 테스트하기 위해서 다음의 4개의 순서를 사용할 수 있었습니다.

  • SKPBN - 장치의 사용 중 플래그가 설정되어 있는 경우 다음 명령을 건너뜁니다.
  • SKPBZ - 디바이스의 비지 플래그가 클리어되면 다음 명령을 건너뜁니다.
  • SKPDN - 디바이스의 Done 플래그가 설정되어 있는 경우 다음 명령을 건너뜁니다.
  • SKPDZ - 디바이스의 Done 플래그가 클리어되면 다음 명령을 건너뜁니다.

디바이스를 기동하면, 비지 플래그가 설정됩니다.요청된 조작이 완료되면 통상 디바이스는 비지 플래그를 클리어하고 done 플래그를 설정합니다.대부분의 디바이스는 인터럽트 요구 메커니즘이 done 플래그로 배선되어 있기 때문에 done 플래그를 설정하면 인터럽트가 발생합니다(인터럽트가 유효하고 디바이스가 마스크되지 않은 경우).

특별 지침

이 순서에서는, 다양한 CPU 제어와 상태 기능을 실행했습니다.모두 CPU의 자기 참조 I/O 채널인 채널 63에서의 I/O 명령의 줄임말 니모닉이었습니다.

  • INTA : 인터럽트 확인.인터럽트 디바이스의 채널 번호를 지정된 어큐뮬레이터로 전송.
  • INTDS: 모든 인터럽트를 디세블로 합니다.
  • INTEN : 모든 인터럽트를 이노블로 합니다.
  • IORST: I/O 리셋.I/O 버스에 리셋 신호를 송신해, 모든 I/O를 정지해, 인터럽트를 무효로 해, 보류중의 인터럽트를 모두 클리어.
  • MSKO: 마스크아웃.지정된 어큐뮬레이터의 내용을 사용하여 인터럽트 마스크를 설정.마스크의 해석 방법은 각 I/O 디바이스의 구현에 달려 있습니다.일부 디바이스를 마스킹할 수 없습니다.
  • READS - 16개의 전면 패널 데이터 스위치의 내용을 지정된 어큐뮬레이터로 전송합니다.
  • HALT - CPU를 정지합니다.일단 정지하면 전면 패널에서 수동 조작만으로 CPU를 다시 시작할 수 있습니다.

인터럽트 및 인터럽트 처리

하드웨어의 관점에서 인터럽트 메커니즘은 현재의 CPU 아키텍처에 비해 비교적 단순하지만 유연성이 떨어졌습니다.백플레인에서는 인터럽트 가능한 모든 디바이스가 접속되어 있는1개의 인터럽트 요구 회선이 지원되고 있습니다.디바이스는 인터럽트를 요구할 필요가 있을 때 이 행을 올렸습니다.CPU는 현재 명령을 완료하자마자 인터럽트를 받았습니다.위에서 설명한 바와 같이 디바이스는 인터럽트를 요구할 때 "done" I/O 플래그를 올릴 것으로 예상되었으며, CPU가 디바이스의 채널 번호에 대해 I/O 클리어 명령을 실행하면 디바이스가 인터럽트 요구를 클리어하는 것이 관례였습니다.

CPU는 운영 체제가 인터럽트 서비스 루틴의 주소를 메모리 주소 1에 배치할 것으로 예상했습니다.디바이스가 중단되면 CPU는 주소 1을 간접적으로 통과하여 리턴 주소를 메모리주소 0에 배치하고 그 이후의 인터럽트를 디세블로 합니다.다음으로 인터럽트 핸들러는 INTA 명령을 실행하여 인터럽트 디바이스의 채널 번호를 검출합니다.이는 백플레인에서 "확인" 신호를 발생시킴으로써 작동합니다.확인 응답 신호는 데이지 체인 형식으로 백플레인 전체에 배선되어 버스의 각 보드를 루프합니다.인터럽트를 요구하는 모든 디바이스는 버스에 대한 확인 응답 신호의 추가 전파를 차단할 것으로 예상되어 2개 이상의 디바이스가 동시에 보류 중인 인터럽트를 가지고 있는 경우 첫 번째 디바이스만 확인 응답 신호를 인식할 수 있습니다.그 후, 그 디바이스는 버스의 데이터 라인에 채널 번호를 배치하는 것으로 응답했습니다.즉, 동시 인터럽트 요구의 경우 priority가 있는 디바이스가 카드케이지 내의 CPU에 물리적으로 가장 가까운 디바이스로 결정되었음을 의미합니다.

인터럽트가 처리되고 서비스 루틴이 장치에 I/O 클리어 신호를 보낸 후 인터럽트를 활성화하고 메모리 주소 0을 통해 간접적인 점프를 통해 복귀함으로써 정상적인 처리를 재개했습니다.리턴 점프 직전에 보류 중인 인터럽트가 중단되는 것을 방지하기 위해 INTEN 명령에서는 1개의 명령 사이클 지연이 있었습니다.실행 시 인터럽트는 JMP@0 명령으로 예상되는 다음 명령이 실행될 때까지 활성화되지 않습니다.

운영 체제의 인터럽트 서비스 루틴은 일반적으로 수신된 채널 번호를 사용하여 인덱스 점프를 수행하여 장치의 특정 인터럽트 처리 루틴으로 점프합니다.INTA 명령에 응답하지 않는 CPU의 전원 장애 검출 회로 등 몇 가지 장치가 있었습니다.INTA가 0의 결과를 반환한 경우 인터럽트 서비스 루틴은 인터럽트된 디바이스를 확인하기 위해 SKPDZ/SKPDN 명령을 사용하여 INTA가 아닌 모든 디바이스를 폴링해야 합니다.

운영체제는 MSKO 명령을 사용하여 인터럽트 마스크를 설정함으로써 인터럽트의 순서를 어느 정도 관리할 수 있었습니다.이것은, operating system이, 특정의 시각에 인터럽트가 허가된 디바이스를 특정할 수 있도록 하기 위한 것입니다.이 명령어가 발행되었을 때 백플레인 상의 모든 디바이스에 16비트 인터럽트 마스크가 전송되었습니다.마스크가 실제로 무엇을 의미하는지 결정하는 것은 디바이스에 달려 있습니다.통례상 마스크된 디바이스는 인터럽트 라인을 올리지 않도록 되어 있었지만 CPU는 이를 강제할 수단이 없었습니다.마스크가 가능한 대부분의 장치에서는 보드의 점퍼를 통해 마스크 비트를 선택할 수 있습니다.마스크를 완전히 무시하는 장치들이 있었다.

자기 코어 메모리(전원 없이 컨텐츠를 보관 유지)를 탑재한 시스템에서는, 전원 장해로부터 회복할 수 있었습니다.컴퓨터에 들어오는 주전원의 상실이 검출되면 CPU의 전원 장애 검출 회로가 인터럽트를 발행합니다.이 시점부터, CPU는 전원 장치의 콘덴서가 충전을 상실해, CPU에의 전원이 장해가 될 때까지의 짧은 시간이 주어졌습니다.이 시간은 IORST 명령을 발행하여 진행 중인 I/O를 중지하고 4개의 축전기와 반송 비트의 내용을 메모리에 저장하기에 충분했습니다.전원이 다시 켜졌을 때 CPU의 프론트 패널 키 스위치가 LOCK 위치에 있으면 CPU가 부팅되어 메모리 주소 2를 우회적으로 통과합니다.이는 어큐뮬레이터를 새로고침하여 비트를 반송한 후 정상 처리를 재개하는 운영체제 서비스 루틴의 주소가 될 것으로 예상되었습니다.전원 장애로 중단된 I/O 작업을 재시작하는 방법은 서비스 루틴에 따라 결정됩니다.

전면 패널 레이아웃

당시의 관례와 마찬가지로 대부분의 Nova 모델은 CPU 기능을 제어하고 감시할 수 있는 전면 패널 콘솔을 제공했습니다.Nova 3 이전 모델은 모두 위의 Nova 840 패널 사진과 같이 표준 전면 패널 레이아웃에 의존했습니다.레이아웃에는 키 달린 전원 스위치, 주소 및 데이터 표시등 2열, 데이터 입력 스위치 1열 및 눌렀을 때 다양한 CPU 기능을 활성화하는 기능 스위치 1열이 포함되어 있습니다.주소 표시등은 항상 프로그램 카운터의 현재 값을 이진수로 표시합니다.데이터 램프는 그 당시 어떤 CPU 기능이 활성화되었는지에 따라 다양한 값을 표시합니다.맨 왼쪽의 데이터 램프 왼쪽에 추가 램프가 반송 비트의 현재 값을 표시했습니다.대부분의 모델에서 램프는 패널 보드에 납땜된 백열등이었고, 연소된 램프를 교체하는 것은 Data General 필드 서비스 엔지니어에게 있어 존재의 골칫거리였습니다.

각 데이터 스위치는 1비트 값을 16비트 값으로 제어하고 Data General 규칙에 따라 왼쪽에서 오른쪽으로 0-15의 번호가 매겨졌습니다.데이터 스위치는 다양한 기능을 위해 CPU에 입력을 제공했으며 READS 어셈블리 언어 명령을 사용하여 실행 중인 프로그램으로 읽을 수도 있었습니다.패널 혼란을 줄이고 비용을 절약하기 위해 기능 스위치를 양방향 모멘터리 스위치로 구현했습니다.기능 스위치 레버를 들어올리면 패널 스위치 위에 이름이 인쇄된 기능을 작동시키고, 레버를 누르면 스위치 아래에 이름이 표시된 기능을 작동시킵니다.스위치 레버를 놓았을 때 중립 위치로 돌아갔습니다.

Nova 840 사진을 참조하여 왼쪽에서 처음 4개의 스위치가 4개의 축전지(축전지)에 대해 검사 및 예치 기능을 수행했습니다.이 중 하나에서 EXPER를 누르면 데이터 램프에 의해 축전지 전류 값이 이진수로 표시됩니다.DESPIT를 누르면 데이터 스위치의 현재 설정으로 표시되는 이진 값이 누적기로 전송됩니다.

오른쪽으로 가면 다음 스위치가 RESET/STOP 스위치입니다.STOP을 누르면 현재 명령을 완료한 후 CPU가 중지됩니다.RESET을 누르면 CPU가 즉시 정지하고 다수의 CPU 내부 레지스터가 클리어되어 접속되어 있는 모든 디바이스에 I/O리셋 신호가 송신됩니다.그 오른쪽에 있는 스위치가 START/CONTINUE 스위치입니다.CONTINUE(계속)를 누르면 CPU는 프로그램 카운터가 현재 가리키는 명령으로 실행을 재개합니다.START를 누르면 현재 데이터 스위치 1~15에 설정되어 있는 값이 프로그램 카운터로 전송되고 거기에서 실행이 시작됩니다.

다음의 2개의 스위치에서는, 전면 패널로부터 메모리에의 판독 및 기입 액세스가 가능하게 되었습니다.TEASE를 누르면 데이터 스위치 1-15에 설정된 값이 프로그램 카운터로 전송되고 해당 메모리 위치에 값을 가져온 다음 데이터 램프에 해당 값을 표시합니다.EXPER NEXT를 누르면 프로그램 카운터가 증가하여 해당 메모리 위치에 대한 검사 작업을 수행하여 사용자가 일련의 메모리 위치를 살펴볼 수 있습니다.DESPIT를 누르면 데이터 스위치에 포함된 값이 프로그램 카운터가 가리키는 메모리 위치에 기록됩니다.먼저 DESPIT NEXT를 누르면 프로그램 카운터가 증가하여 포인트 투 메모리 위치에 저장됩니다.

INST STEP 함수에 의해 CPU는 현재 프로그램카운터 위치에서1개의 명령을 실행한 후 정지합니다.프로그램 카운터는 명령 실행의 일부로 증가하므로 사용자는 프로그램을 한 단계씩 진행할 수 있습니다.MEMORY STEP(메모리 스텝)의 오칭으로 인해 CPU가 1회 클럭 사이클로 동작하여 정지했습니다.이는 사용자에게 거의 도움이 되지 않았으며 일반적으로 현장 서비스 담당자가 진단용으로만 사용했습니다.

프로그램 로드는 보통 Nova 부팅에 사용되는 메커니즘입니다.이 스위치가 트리거되면 32 워드의 부트 ROM이 처음 32 워드의 메모리에 매핑되어 프로그램카운터를 0으로 설정하고 CPU를 기동합니다.부트 ROM에는 선택한 I/O 디바이스에서 메모리로 256워드(512바이트)의 코드를 읽어 들여 읽기 코드로 제어를 전송하는 코드가 포함되어 있습니다.데이터 스위치 8~15는 부트 ROM에 부트할 I/O 채널을 지시하기 위해 사용되었습니다.스위치 0이 오프일 경우 부트 ROM은 디바이스가 폴링된 디바이스(종이 테이프 리더 등)로 간주하여 512바이트가 읽힐 때까지 폴링된 입력 루프를 실행합니다.스위치 0이 온일 경우 부트 ROM은 디바이스를 DMA 대응 디바이스로 간주하고 DMA 데이터 전송을 시작합니다.부트 ROM은 전송을 시작하기 전에 디바이스를 배치할 만큼 스마트하지 않았습니다.이는 크래시 후 재부팅 시 문제가 되었습니다.부팅 디바이스가 디스크 드라이브인 경우 헤드가 랜덤 실린더에 남아 있을 수 있습니다.부트 시퀀스가 작동하려면 RDOS가 첫 번째 레벨 부트 블록을 기록한 실린더 0으로 위치를 변경해야 했습니다.일반적으로 이 작업은 로드 시퀀스를 통해 드라이브를 껐다 켜는 방식으로 수행되었지만, 대기 시간(드라이브 모델에 따라 최대 5분)에 불만을 느낀 사용자는 전면 패널에서 드라이브의 I/O 코드를 "재보정"하고 이를 통해 CPU를 한 단계씩 실행하는 방법을 배웠습니다. 이 작업은 숙련된 사용자가 몇 초 만에 수행할 수 있는 작업입니다.

전원 스위치는 OFF, ON 및 LOCK 위치가 표시된 3방향 키 스위치입니다.OFF의 위치에서는, 모든 전원이 CPU로부터 분리되었다.키를 ON으로 하면 CPU에 전원이 공급됩니다.다만, 현재의 CPU와는 달리, 전원을 투입해도 CPU는 자동적으로 기동하지 않습니다.사용자는 PROGRAM LOAD 등의 방법으로 CPU를 기동해 기동 시퀀스를 개시할 필요가 있었습니다.스위치를 LOCK으로 돌리면 전면 패널 기능 스위치가 비활성화됩니다.스위치를 LOCK로 돌린 후 키를 삭제하면 CPU를 조작에 견딜 수 있게 됩니다.자기 코어 메모리가 있는 시스템에서는 LOCK 위치에 의해 자동 전원 장애 복구 기능도 사용할 수 있게 되었습니다.키는 OFF 또는 LOCK 위치에서 제거할 수 있습니다.

성능

Nova 1200은 코어 메모리 액세스 명령(LDA 및 STA)을 2.55마이크로초(μs)로 실행했습니다.읽기 전용 메모리를 사용하면 0.4μs가 절약됩니다.축전지 명령(ADD, SUB, COM, NEG 등)에는 1.55μs, MUL 2.55μs, DIV 3.75μs,[31] ISZ 3.15~4.5μs가 소요되었습니다.이후 Eclipse MV/6000에서는 LDA와 STA가 0.44μs, ADD 등이 0.33μs, MUL 2.2μs, DIV 3.19μs, ISZ 1.32μs, FAD 5.17μs,[32] FMMD 11.66μs를 차지했다.

어셈블리 언어의 예시

헬로월드 프로그램

이것은 Nova 어셈블리 언어의 최소한의 프로그래밍 예입니다.RDOS에서 실행되도록 설계되었으며 콘솔에 "Hello, world" 문자열이 인쇄됩니다.

    RDOS를 실행하는 Nova를 위한 "hello, world" 프로그램     ; 는 PCHAR 시스템콜을 사용합니다.     .title 안녕     .nrel     .ent 개시하다   시작:  dochar:     lda    0,@pmsg  ; ac0을 다음 문자와 함께 로드합니다.     이동 번호   0,0,스너  ; test ac0, 0이 아닌 경우 건너뛰기(결과를 로드하지 않음)     jmp    다 했어요.     시스템     .pchar          ; 먼저 인쇄합니다.     jmp    음.정말       ; (정상인 경우 건너뛰기)     움직임   0,0      ; 스왑 바이트     시스템     .pchar          ; 초단 인쇄     jmp    음.정말       ; (정상인 경우 건너뛰기)     동작하고 있다    pmsg     ; 다음 문자를 가리킵니다.     jmp    도카   다시 돌아라   완료:     시스템          ; 일반 출구     .rtn  er:     시스템          ; 에러 종료     .ertn     멈추다   pmsg:     .+1             ; 문자열의 첫 번째 문자에 대한 포인터                     ; 메모 바이트는 기본적으로 오른쪽에서 왼쪽으로 패킹됩니다.                     ; <15> <12>는 CR LF 쌍을 나타냅니다.     .txt /안녕, 세계.< >15><12>/     0               ; 단어에서 끝 문자열로 플래그 지정      .끝. 개시하다 

16비트 곱셈

Nova의 기본 모델은 가격 경쟁력을 유지하기 위해 하드웨어 증배 및 분할 기능이 내장되어 있지 않습니다.다음 루틴에서는 2개의 16비트 워드를 곱하여 16비트 워드 결과를 생성합니다(오버플로우는 무시됩니다).ALU op, shift 및 테스트(스킵)를 조합하여 사용하는 방법을 보여줍니다.이 루틴이 호출되는 경우jsr, AC3는 리턴 주소를 보관 유지합니다.이것은 반품 지시에서 사용됩니다.jmp 0,3어큐뮬레이터를 소거하는 관용적인 방법은 다음과 같습니다.sub 0,0다른 단일 명령어는 특정 유용한 상수 집합(예: -2, -1, 또는 +1)을 로드하도록 배열할 수 있습니다.

 mpy: ; AC0 <- AC1 * AC2, Toby Thain을 곱한다.    후보선수 0,0  ; 명확한 결과  mbit: 움직이다 1,1,szc ; 시프트 승수, 테스트 lsb   더하다 2,0  ; 1: 승수를 추가   움직이다 2,2,szr ; 시프트 및 제로 테스트   jmp mbit ; 0이 아니라 다른 비트를 실행한다.   jmp 0,3  ; 반환 

바이너리 프린트 어큐뮬레이터

다음 루틴에서는 AC1의 값을 16자리 이진수로 RDOS 콘솔에서 인쇄합니다.Nova 명령 집합의 추가 기호가 나타납니다.예를 들어, 임의의 "즉시" 값을 어큐뮬레이터에 로드하는 명령은 없습니다(단, 메모리 참조 명령은 이러한 값을 인코딩하여 유효한 주소를 형성합니다).축전기는 일반적으로 초기화된 메모리 위치에서 로드해야 합니다(예:n16PDP-11과 같은 다른 최신 머신과 실질적으로 모든 최신 아키텍처에서는 즉시 로딩할 수 있는 값의 범위가 제한되지만 즉시 로딩할 수 있는 것은 대부분입니다.

왜냐하면 RDOS는.systm콜 매크로는jsr, AC3 는, 의 반환 주소에 의해서 덮어쓰기 됩니다..pchar기능.따라서, 이 함수의 발신자의 리턴 주소를 보존하기 위해서, 일시적인 장소가 필요합니다.재귀적 루틴 또는 기타 재진입 루틴의 경우 스택, 하드웨어(사용 가능한 경우), 소프트웨어(사용되지 않는 경우)를 대신 사용해야 합니다.반환 지시가 됩니다.jmp @ retrnNova의 간접 주소 지정 모드를 이용하여 반환 PC를 로드합니다.

끝에 있는 상수 정의는 2개의 어셈블러 기능을 나타냅니다.어셈블러 기수는 디폴트로 8진수입니다( ).20= 16) 및 문자 상수는 다음과 같이 인코딩될 수 있습니다."0.

 pbin:  콘솔의 AC1을 16자리 이진수로 인쇄합니다(Toby Thain).          스타     3,재인식     ; 반환 주소 저장         lda     2,n16       ; 비트 카운터를 설정합니다.  루프:  lda     0,chr0      ; ASCII '0'을 로드합니다.         움직이다   1,1,szc     ; 다음 비트를 가져오다         주식회사     0,0         ; '1'에 부딪치다         시스템         .pchar              ; AC0-2 유지         jmp     에러         ; 에러가 발생한 경우         주식회사     2,2,szr     ; 범프 카운터         jmp     고리        ; 0이 아니면 다시 루프합니다.         lda     0,spc       ;스페이스를 출력합니다.         시스템         .pchar         jmp     에러         ; 에러가 발생한 경우         jmp     @재인식   SPC:   " 그것은 공간이다.  chr0:  "0  n16:   -20  재시도: 0 

사실들

몬트리올에 있는 캐나다 방송사는 1980년대 후반까지 채널 재생 자동화에 노바 1200을 사용했습니다.그 후 리퍼비시 노바4로 교체되어 1990년대 중반까지 사용되었습니다.

「 」를 참조해 주세요.

메모들

  1. ^ 이는 대형 보드를 사용하여 상당한 고장률을 보이는 PDP-6의 문제에 대한 반응일 가능성이 높습니다.기본적으로 리엔지니어링된 PDP-6인 PDP-10은 더 작은 '플립칩' 카드를 사용합니다.

레퍼런스

인용문

  1. ^ "Computer History Museum - Data General Corporation (DG) - The Best Small Computer in the World".
  2. ^ Hey, Tony; Hey, Anthony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. p. 165. ISBN 9780521766456.
  3. ^ a b 헨드리 2002, 페이지 40
  4. ^ a b c d e Supnik 2004.
  5. ^ a b c d 헨드리 2002, 페이지 48
  6. ^ 헨드리 2002, 페이지 42
  7. ^ "When a Minicomputer becomes a Micro: the DGC microNOVA mN601 and 602". The CPU Shack Museum. 21 November 2014.
  8. ^ 헨드리 2002, 페이지 43
  9. ^ 헨드리 2002, 페이지 43-44
  10. ^ a b c Gianluca 2017. 오류:: 2017
  11. ^ 헨드리 2002, 페이지 49
  12. ^ "The best small computer in the world" (PDF). November 1968.
  13. ^ a b "Thwarted at DEC, Thriving at Data General". Computer History Museum.
  14. ^ Jones, Douglas. "The Digital Equipment Corporation PDP-8". University Of Iowa Department of Computer Science.
  15. ^ 헨드리 2002, 페이지 50
  16. ^ a b "SUPER NOVA" (PDF). Computer History Museum. 1970.
  17. ^ "The Business That Time Forgot: Data General is gone. But does that make its founder a failure?". money.cnn.com. 1 April 2003. Retrieved 27 July 2016.
  18. ^ a b 헨드리 2002, 53페이지
  19. ^ "Data General History / Background". Clemson University.
  20. ^ 헨드리 2002, 페이지 54
  21. ^ 헨드리 2002, 페이지 44
  22. ^ a b c d 헨드리 2002, 페이지 55
  23. ^ 헨드리 2002, 페이지 58
  24. ^ 헨드리 2002, 페이지 60
  25. ^ a b microNOVA. Data General. 1977.
  26. ^ "Enterprise - a 16 bit business computer for only £2300". Personal Computer World. October 1983.
  27. ^ Charles P. Thacker; Edward M. McCreight (December 1974). "Alto: A Personal Computer System" (PDF). p. 13.
  28. ^ Tom Owad (2005). Apple I Replica Creation: Back to the Garage. p. xxi. ISBN 1-931836-40-X.
  29. ^ "Data General Restoration". Data General Nova, Eclipse, MV and AV. Retrieved 2021-08-20.
  30. ^ "The Big & Beautiful Data General Minicomputers". www.chookfest.net. Retrieved 2021-08-20.
  31. ^ 기술 매뉴얼 Nova 1200, 데이터 일반 015-000002, 1971, 페이지 1-4
  32. ^ Eclipse MV/6000 작동 원리, Data General 014-000648, 1980, App.f

참고 문헌

외부 링크