Veriler Genel Nova - Data General Nova

Çoğunlukla boş bir raf montajında ​​bir Nova sistemi (bej ve sarı, orta alt) ve bir kartuş sabit disk sistemi (Nova'nın altında açıldı).
Data General Nova 1200 ön panel
Sağ ortadaki bir Nova 1200, dünyanın ilk ticari olarak temin edilebilen CT tarayıcısı olan EMI-Scanner tarafından oluşturulan görüntüleri işledi .

Veri Genel Nova dizisidir 16 bit minibilgisayarlar Amerikan şirketi tarafından yayımlanan veriler Genel . Nova ailesi 1970'lerde çok popülerdi ve nihayetinde on binlerce birim sattı.

Basitçe "Nova" olarak bilinen ilk model 1969'da piyasaya sürüldü. Nova, rafa monte tek bir kasaya paketlendi ve çoğu basit görevi yerine getirmek için yeterli bilgi işlem gücüne sahipti. Nova, dünyadaki bilim laboratuvarlarında popüler oldu. Ertesi yıl , kabaca dört kat daha hızlı koşan SuperNOVA izledi .

Entegre devre (veya "mikroçip") tasarımında hızlı bir ilerleme döneminde tanıtılan hat, önümüzdeki beş yıl boyunca çeşitli yükseltmelerden geçerek 800 ve 1200, Nova 2, Nova 3 ve nihayetinde Nova 4. A'yı tanıttı. 1977'de tek çipli uygulama da microNOVA olarak tanıtıldı , ancak pazar yeni mikroişlemci tasarımlarına geçtiği için yaygın bir kullanım görmedi. Fairchild Semiconductor ayrıca 1977'de Nova'nın bir mikroişlemci versiyonu olan Fairchild 9440'ı piyasaya sürdü, ancak piyasada sınırlı kullanım gördü.

Nova hattının ardından , birçok yönden benzer olan ancak sanal bellek desteği ve modern işletim sistemlerinin gerektirdiği diğer özellikleri ekleyen Data General Eclipse geldi . Eclipse'in 32 bitlik bir yükseltmesi , 1980'lerin Eclipse MV serisiyle sonuçlandı .

Tarih

Edson de Castro ve PDP-X

Edson de Castro , yaygın olarak ilk gerçek mini bilgisayar olarak adlandırılan 12 bitlik bir bilgisayar olan öncü Digital Equipment Corporation (DEC) PDP-8'in Ürün Müdürüydü. Ayrıca , bireysel transistörler yerine erken entegre devreleri kullanan yükseltilmiş PDP-8/I'nin tasarımına da öncülük etti .

PDP-8/I süreci sırasında de Castro, monte edebildikleri kartların karmaşıklığında hızlı ilerlemeler kaydeden devre kartı üreticilerini ziyaret ediyordu . de Castro, 8/I'nin büyük panolarda tam otomatik montaj kullanılarak üretilebileceği sonucuna vardı ki bu sadece bir yıl önce imkansızdı. DEC içindeki diğerleri, daha önceki makinelerde kullanılan daha küçük panolara alışmıştı ve tek bir panoda birçok bileşen olduğunda sorunları takip etmekten endişe duyuyorlardı. 8/I için, yoğunlukta mütevazı bir gelişme için yeni " flip-chip " ambalajı kullanılarak küçük tahtalarla kalmaya karar verildi .

PDP-8 geliştirilen ediliyordu dönemde tanıtılması ASCII ve 1967 yılında önemli bir güncelleme çoğu önceki tasarımlarda olduğu gibi 8 bit yerine 6 bit katları katları olan kelime uzunlukları ile tasarımları yeni nesil yol açtı. Bu, DEC'in mevcut 12- ve 18-bit dizilimleri yerine 16-bit kelime uzunluklarında çalışan orta sınıf tasarımlara yol açtı. de Castro, tek bir 15 inç kare kart üzerine 16 bitlik bir mini bilgisayar CPU'su kurarak PDP-8'i geliştirmenin mümkün olduğuna ikna olmuştu.

1967'de de Castro, birkaç gelişmiş özellik içeren "PDP-X" olarak bilinen yeni bir tasarım çabasına başladı. Bunlar arasında, 8-, 16- ve 32-bit platformlar oluşturmak için kullanılabilecek tek bir temel tasarım vardı. Bu, birkaç ayrıntılı mimari belge üretme noktasına kadar ilerledi. Ken Olsen , 12-bit PDP-8 ve 18-bit PDP-9'a göre yeterli avantajlar sağlamadığını düşünerek bu projeyi desteklemedi . Sonunda 1968 baharında iptal edildi.

Nova'nın tasarımı

PDP-X'in iptali, de Castro'yu kendi başına bir sistem kurmak için DEC'den ayrılmayı düşünmeye sevk etti. O yalnız değildi; 1967'nin sonlarında, böyle bir makineyi düşünmek için benzer düşünen bir grup mühendis kuruldu. Grupta bir bölüm yöneticisi olan Pat Green, başka bir donanım mühendisi olan Richard Sogge ve bir yazılım mühendisi olan Henry Burkhardt III vardı. PDP-X'in aksine, de Castro, PDP-X konseptinin küçük bir başlangıç ​​şirketi için çok iddialı olduğunu düşündüğünden, yeni çaba, pazara hızlı bir şekilde getirilebilecek tek bir makineye odaklandı .

Bunu DEC'de diğerleriyle tartışırken, ilk konsept, uygulanması daha az maliyetli olacak 8 bitlik bir makineye yol açtı. Grup , diğerlerini DEC ile olan bağlantıları aracılığıyla tanıyan Fairchild Semiconductor'ın bir satıcısı olan Herbert Richman ile konuşmaya başladı . Zamanda, Fairchild ile mücadele ediyordu Texas Instruments ve Signetics hızla büyüyen içinde TTL pazar ve yeni tanıtan edildi fabs daha karmaşık tasarımlar izin verdi. Fairchild'in en son 9300 serisi çip başına 96'ya kadar kapıya izin verdi ve bunu ikili sayaçlar ve kaydırmalı yazmaçlar gibi bir dizi 4 bitlik çipi uygulamak için kullandılar .

Bu IC'lerin kullanılması , bir CPU'nun temel matematiksel bileşeni olan tam bir aritmetik mantık birimini (ALU) uygulamak için gereken toplam IC sayısını azalttı ve 8 bitlik bir tasarımdan 16 bit'e genişlemeye izin verdi. Bu, CPU'nun tek bir 15 x 15 inç (38 cm × 38 cm) baskılı devre kartından ikiye genişletilmesini gerektirdi , ancak böyle bir tasarımın üretilmesi hala daha güçlü ve ASCII tabanlı. Üçüncü bir kart, giriş/çıkış devresini barındırıyordu ve eksiksiz bir sistem, tipik olarak, 4 kB rasgele erişim belleğine sahip başka bir kart içeriyordu . Tek bir rafa monte kasaya tam dört kartlı sistem sığar.

Panolar , minimum manuel kablolama ile bir baskılı devre arka paneli kullanılarak birbirine bağlanabilecek şekilde tasarlandı ve tüm panoların otomatik bir şekilde oluşturulmasına izin verdi. Bu, arka planda birbirine bağlanması gereken ve kendisi tel sargı kullanılarak birbirine bağlanan birçok küçük panodan oluşan 8/I'ye göre maliyetleri büyük ölçüde azalttı . Daha büyük tahta yapısı ayrıca Nova'yı daha güvenilir hale getirdi ve bu da onu özellikle endüstriyel veya laboratuvar ortamları için çekici hale getirdi.

Yeni tasarım , 1980'lerde RISC tasarımlarında yeniden ortaya çıkacak basit bir yük depolama mimarisi kullandı. Bir flip-flop'un karmaşıklığı, çiplerde uygulandıkça hızla azalırken, tasarım , bulunacak tek kayıt yerine dört genel amaçlı akümülatör ekleyerek yük/depo tasarımının adresleme modlarının eksikliğini telafi etti. PDP serisi gibi benzer düşük maliyetli tekliflerde.

Nova tanıtımı

1967'nin sonlarında Richman, grubu, başlangıç ​​sermayesi için çeşitli fon kaynakları aramaya başlayan New York merkezli avukat Fred Adler ile tanıştırdı. 1968 yılına gelindiğinde, Adler , Boston bölgesinden bir girişim sermayesi fonları konsorsiyumu ile büyük bir finansman anlaşması ayarlamıştı ve bu konsorsiyum, üretim artışı için ikinci bir 400.000 dolar ile ilk 400.000 dolarlık bir yatırım sağlamayı kabul etti. de Castro, Burkhart ve Sogge, DEC'den ayrılarak 15 Nisan 1968'de Data General'i (DG) kurdu. Green, girişimin çok riskli olduğunu düşünerek onlara katılmadı ve Richman, ürün yıl içinde çalışır hale gelene kadar katılmadı.

İlk sistem üzerindeki çalışmalar yaklaşık dokuz ay sürdü ve ilk satış çalışmaları o Kasım ayında başladı. Biraz şansları vardı çünkü Güz Ortak Bilgisayar Konferansı o yılın Aralık ayına kadar ertelenmişti, bu yüzden Spacewar'ın bir versiyonunu çalıştırdıkları Moscone Center'a bir çalışma birimi getirebildiler ! . DG, Nova'yı 1969'da 3.995 ABD Doları (2020'de 28.193 ABD Dolarına eşdeğer) taban fiyatıyla resmen piyasaya sürdü ve "dünyanın en iyi küçük bilgisayarı" olarak ilan etti. Temel model kutudan çıktığı haliyle pek kullanışlı değildi ve çekirdek bellek biçiminde 4 kW (8 kB) RAM eklemek tipik olarak fiyatı 7.995 dolara çıkardı. Buna karşılık, 4 kW (6 kB) olan bir 8/I 12.800 $ olarak fiyatlandırıldı.

İlk satış, Teksas'taki bir üniversiteye yapıldı ve ekip, Şubat ayında sevk edilen bir örneği elle oluşturdu. Ancak bu, havayolu endüstrisindeki bir grevin ortasındaydı ve makine asla gelmedi. Grev o noktada sona erdiği için derhal gelen ikinci bir örnek gönderdiler ve Mayıs ayında orijinal örnek de teslim edildi.

Sistem, altı ay sonra 100'üncü ve 15 ay sonra 500'üncü satılarak baştan başarılı oldu. Satışlar, daha yeni sürümler piyasaya sürüldükçe hızlandı ve 1975'te şirketin yıllık satışları 100 milyon dolardı.

süperNOVA

Ken Olsen, DG'nin başarısız olacağını açıkça tahmin etmişti, ancak Nova'nın piyasaya sürülmesiyle bunun olmayacağı açıktı. Bu zamana kadar bir dizi başka şirket de 16-bit tasarımları tanıtmaktan bahsediyordu. Olsen, bunların 12-bit olduğu kadar 18-bit hatları için de bir tehdit oluşturduğuna karar verdi ve yeni bir 16-bit tasarım çabasına başladı. Bu, 1970 yılında PDP-11 olarak ortaya çıktı , Nova'nın olduğu kadar PDP-X'ten farklı olan çok daha karmaşık bir tasarım. İki tasarım piyasada yoğun bir şekilde rekabet etti.

DEC'den gelen yeni sistemin söylentileri, Nova'nın sevkiyata başlamasından kısa bir süre sonra DG'ye ulaştı. 1970 baharında, yapım aşamasındaki olası tüm makinelerin önüne geçmek için yeni bir tasarımcı olan Larry Seligman'ı tuttular. Nova tasarlandığından beri iki büyük değişiklik meydana geldi; biri Signetics'in bir toplayıcı, XNOR ve AND'yi birleştiren 4 bitlik bir IC olan 8260'ı tanıtmasıydı, yani temel mantığı uygulamak için gereken çip sayısı yaklaşık üç kat azaldı. Bir diğeri, Intel'in agresif bir şekilde yarı iletken tabanlı belleklerden bahsetmesi, tek bir çip üzerinde 1000 bit vaat etmesi ve çekirdekten çok daha yüksek hızlarda çalışmasıydı.

Seligman'ın yeni tasarımı bu iyileştirmelerin her ikisinden de yararlandı. Başlangıç ​​olarak, yeni IC'ler, ALU'nun aynı iki kart üzerinde tam 16 bit genişliğe genişletilmesine izin vererek, matematik ve mantık işlemlerini tek bir döngüde gerçekleştirmesine ve böylece yeni tasarımı orijinalinden dört kat daha hızlı hale getirmesine izin verdi. . Buna ek olarak, döngü süresini orijinalin 1.200 ns'den 800 ns'ye yükselten yeni daha küçük çekirdek bellek kullanıldı.1/3Gelişme. Çekirdeği salt okunur bellekle değiştirerek performans daha da artırılabilir ; çekirdeğin okuma/yazma döngüsünden yoksun olduğundan, dramatik bir performans artışı için buna 300 ns'de erişilebilir.

Sonuçta ortaya çıkan ve SuperNOVA olarak bilinen makine 1970 yılında piyasaya sürüldü. İlk modeller hala çekirdek kullanıyor olsa da, tüm tasarım daha hızlı yarı iletken belleklerin kullanıma sunulacağı ve platformun bunlardan tam olarak yararlanabileceği varsayımına dayanıyordu. Bu, yarı iletken (SC) belleğe sahip SuperNOVA SC ile aynı yıl tanıtıldı . Çok daha yüksek performanslı bellek, bellekle senkronize olan CPU'nun 300 ns döngü süresinde (3.3 MHz) çalışması için hızın daha da artırılmasına izin verdi. Bu, onu uzun yıllar boyunca mevcut en hızlı mini bilgisayar yaptı. Başlangıçta yeni bellek de çok pahalıydı ve çok ısındı, bu nedenle yaygın olarak kullanılmadı.

1200 ve 800

Nova 1200 CPU baskılı devre kartı . 74181 ALU, büyük IC merkez sağdır.

Fairchild, Micromatrix geçit dizisi teknolojisinin gücünün bir göstergesi olarak, 1968'de tek çipli 4 bitlik bir ALU olan 4711'in prototipini yaptı. Tasarım hiçbir zaman seri üretime yönelik değildi ve üretilmesi oldukça pahalıydı. Signetics 8260'ın 1969'da piyasaya sürülmesi onları zorladı; Hem Texas Instruments hem de Fairchild 1970'de sırasıyla 74181 ve 9341 olmak üzere kendilerine ait 4-bit ALU'ları tanıttı . 8260'ın aksine, yeni tasarımlar tüm ortak mantık fonksiyonlarını sundu ve çip sayısını daha da azalttı.

Bu, DG'nin bu daha entegre IC'leri kullanan yeni bir CPU tasarımını düşünmesine yol açtı. En azından bu, temel Nova veya SuperNOVA için CPU'yu tek bir karta indirgeyecektir. Tek bir şasinin, CPU devre kartını değiştirerek her iki makineyi de barındırabileceği yeni bir konsept ortaya çıktı; bu, müşterilerin daha düşük maliyetli sistemi satın almalarına ve ardından istedikleri zaman yükseltme yapmalarına olanak tanıyacak.

Seligman SuperNOVA üzerinde çalışırken, şirket Ron Gruner'dan "Ürününüz hakkında okudum, reklamlarınızı okudum ve sizin için çalışacağım. bir hafta sonra seninle bu konuyu konuşmak için ofislerinde." Olay yerinde işe alındı. Gruner düşük maliyetli makineden sorumlu olurken, Seligman buna uygun bir yüksek performanslı versiyon tasarladı.

Gruner'in düşük maliyetli modeli 1970 yılında Nova 1200 olarak piyasaya sürüldü , 1200 orijinal Nova'nın 1.200 ns çekirdek belleğinin kullanımına atıfta bulundu. Tek bir 74181 yongasına dayanan 4 bitlik bir ALU'ya sahipti ve bu nedenle esasen yeniden paketlenmiş bir Nova idi. Seligman'ın yeniden paketlenmiş dört ALU SuperNOVA'sı 1971'de Nova 800 olarak piyasaya sürüldü , bu da düşük numaralı modelin daha yüksek performansa sahip olduğu biraz kafa karıştırıcı adlandırmayla sonuçlandı. Her iki model de çeşitli durumlarda sunuldu; 1200 yedi yuvalı, 1210 dört yuvalı ve 1220 on dört yuvalı.

Daha sonraki modeller

Bu zamana kadar PDP-11 nihayet sevk ediliyordu. Nova'daki kasıtlı olarak basit olandan çok daha zengin bir talimat seti mimarisi sundu . IC tasarımlarında ve özellikle fiyat-performans oranındaki sürekli iyileştirme , orijinal basitleştirilmiş talimatların değerini aşındırıyordu. Seligman, Nova ile uyumlu ve isteyenlere çok daha zengin bir ortam sunan yeni bir makine tasarlamakla görevlendirildi. Bu konsept , bilimsel veya veri işleme iş yükleri için talimat setini uyarlamak için ek devre ekleme yeteneği sunan Data General Eclipse serisi olarak sevk edildi . Eclipse, pazarın üst ucundaki PDP-11 ile rekabet etmede başarılı oldu.

Aynı zamanda, DEC'den yeni bir 32-bit makinenin söylentileri su yüzüne çıkmaya başladı. DG, benzer bir ürüne sahip olmaları gerektiğine karar verdi ve Gruner, Fountainhead Projesi haline gelen şeyden sorumlu oldu. Projenin kapsamı göz önüne alındığında, tüm çalışmanın saha dışında ele alınması gerektiğine karar verdiler ve Gruner , Kuzey Carolina'daki Research Triangle Park'ta bir yer seçti . Bu tasarım çok karmaşık hale geldi ve nihayetinde yıllar sonra iptal edildi.

Bu çalışmalar sürerken Nova hattındaki çalışmalar da devam etti.

840

Nova 840'ı Çalıştırma (Ön panel 1220'den bir panelle değiştirildi)

İlk olarak 1973'te sunulan 840, ayrıca 17-bit'e kadar adreslere izin veren yeni bir disk belleği sistemi içeriyordu. Bir dizin, temel adresi daha büyük 128 kword belleğe kaydırır. Aslında bu kadar belleğin yüklenmesi önemli miktarda alan gerektiriyordu; 840, 14 yuvalı büyük bir kasada gönderilir.

Yeni 2

Sonraki sürüm Nova 2 idi ve ilk sürümleri 1973'te sevk edildi. Nova 2, artan çip yoğunlukları CPU'nun boyutunun küçültülmesine izin verdiği için esasen önceki makinelerin basitleştirilmiş bir versiyonuydu. SuperNOVA, CPU'yu ve belleğini uygulamak için üç adet 15×15" kart kullanırken, Nova 2 bunların hepsini tek bir karta yerleştirdi. ROM, önyükleme kodunu depolamak için kullanıldı ve daha sonra "program yüklendiğinde çekirdeğe kopyalandı. " anahtarı çevrildi. Sürümler dört ("2/4"), yedi ve on ("2/10") yuvalı olarak mevcuttu.

3. Nova

Veriler Genel Nova 3

1975 tarihli Nova 3 , yerleşik bir yığına erişimi kontrol etmek için kullanılan iki kayıt daha ekledi. İşlemci ayrıca TTL bileşenleri kullanılarak yeniden uygulanarak sistemin performansı daha da artırıldı. Nova 3, dört yuvalı (Nova 3/4) ve on iki yuvalı (Nova 3/12) versiyonlarında sunuldu.

4. Nova

Görünüşe göre Data General, Nova 3'ü son ürün olarak tasarlamış ve Nova'yı daha sonraki Eclipse makineleriyle değiştirmeyi planlamıştı. Ancak, yol sürekli talep Nova 4 makinede dört dayalı bu kez AMD Am2901 bit-dilim ALU . Bu makine en başından beri, her biri için farklı mikrokodlarla hem Nova 4 hem de Eclipse S/140 olacak şekilde tasarlandı . Ayrı bir yuvayı alan bir kayan nokta yardımcı işlemcisi de mevcuttu. Bellek eşleme için izin verilen ek bir seçenek, programların sıra değiştirmeyi kullanarak 128 kword'e kadar belleğe erişmesine izin verir . Daha önceki makinelerden farklı olarak, Nova 4 bir ön panel konsolu içermiyordu ve bunun yerine gerektiğinde bir konsolu taklit etmek için terminale güveniyordu .

Nova 4'ün Nova 4/C, Nova 4/S ve Nova 4/X olmak üzere üç farklı versiyonu vardı. Nova 4/C, tüm belleği (16 veya 32 kword) içeren tek kartlı bir uygulamaydı. Nova 4/S ve 4/X ayrı bellek kartları kullanıyordu. Nova 4/X, 128 kword'e kadar belleğin kullanılmasına izin vermek için yerleşik bellek yönetim birimini (MMU) etkinleştirdi (MMU ayrıca Nova 4/S'ye kuruldu, ancak ürün yazılımı tarafından devre dışı bırakıldı). Hem 4/S hem de 4/X, ihtiyaç duyulmadan önce bellekten iki komuta kadar getirerek performansı artırmak için bir "önceden getirici" içeriyordu.

mikroNOVA

Data General ayrıca Nova işlemcinin microNOVA olarak bir dizi tek çipli uygulamasını üretti . Otobüs mimarisindeki değişiklikler, hızı, orijinal Nova'nın yaklaşık yarısı kadar olduğu noktaya kadar önemli ölçüde sınırladı. "mN601" işlemcili orijinal microNOVA 1977'de sevk edildi. Bunu 1979'da CPU'yu tek bir VLSI yongası olan mN602'ye indiren microNOVA MP/100 izledi. Aynı yıl daha büyük bir versiyon da microNOVA MP/200 olarak sunuldu .

MicroNOVA daha sonra Enterprise olarak iki disket içeren PC tarzı bir kutuda yeniden paketlendi . Enterprise 1981'de RDOS çalıştırarak sevk edildi , ancak aynı yıl IBM PC'nin piyasaya sürülmesi, diğer makinelerin çoğunun radarın altından kaybolmasına neden oldu.

Nova'nın mirası

Nova, hem Xerox Alto (1973) hem de Apple I (1976) bilgisayarlarının tasarımını etkiledi ve mimarisi Computervision CGP (Computervision Graphics Processor) serisinin temelini oluşturdu . Dış tasarımının, MITS Altair (1975) mikrobilgisayarının ön paneli için doğrudan ilham kaynağı olduğu bildirildi .

Data General, orijinal Nova'nın başarısını bir dizi daha hızlı tasarımla takip etti. Eclipse sistem ailesi daha sonra genişletilmiş, yukarı doğru uyumlu bir komut seti ile tanıtıldı ve MV serisi, DEC VAX ile rekabet etmek için Eclipse'i 32 bit mimariye genişletti . MV serisinin gelişimi Tracy Kidder'ın 1981 tarihli popüler kitabı The Soul of a New Machine'de belgelenmiştir . Data General daha sonra Intel işlemci tabanlı sunucular ve depolama dizileri satıcısına dönüşecek ve sonunda EMC tarafından satın alınacaktı .

2004 itibariyle, hava trafik kontrolü de dahil olmak üzere dünya çapında çeşitli uygulamalarda çalışan 16-bit Novas ve Eclipses var . Dünya çapında, orijinal 16-bit Data General sistemlerini geri yükleyen ve koruyan çeşitli ama ateşli bir grup insan var.

Teknik Açıklama

işlemci tasarımı

Veriler Genel Nova kayıtları
1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bit konumu)
akümülatör kayıtları
0 0 kayıt ol
1 Kayıt 1
Dizin kayıtları
2 Dizin Kaydı 2
3 Dizin Kaydı 3
Program sayıcı
  bilgisayar     P rogram Sayaç
Durum kaydı
  C C arry bayrağı

Nova, PDP-8'den farklı olarak bir yük depolama mimarisiydi . İki (2 ve 3) dizin kaydı olarak kullanılabilen dört adet 16 bitlik akümülatör kaydına sahipti . 15 bitlik bir program sayacı ve tek bitlik bir taşıma kaydı vardı. PDP-8'de olduğu gibi, mevcut + sıfır sayfa adresleme merkeziydi. Yığın kaydı yoktu , ancak daha sonra Eclipse tasarımları bu işlev için ayrılmış bir donanım belleği adresi kullanacaktı.

Nova'nın en eski modelleri, tek bir 74181 bitlik ALU kullanarak matematiği 4 bitlik paketler halinde seri olarak işledi . Tanıtımından bir yıl sonra, bu tasarım dört 74181 kullanılarak tam bir 16 bit paralel matematik birimi içerecek şekilde geliştirildi ve bu tasarım SuperNova olarak adlandırıldı. Sistemin gelecekteki sürümleri, bir yığın birimi ve donanım çarpma/bölme ekledi.

Nova 4 / Eclipse S / 140, dört dayanıyordu AMD 2901 ile bit dilim ALU mikro kodları olarak salt okunur bellek ve ilk Nova için tasarlanmış DRAM karşılığının olmadan sadece ana bellek manyetik çekirdek belleği .

Bellek ve G/Ç

İlk modeller 8 ile kullanılabilen K kelime arasında manyetik çekirdek belleğine $ 7995 için sistem maliyetini getiren hemen herkes satın almak zorunda bir seçenek, biri olarak.

Bu çekirdek bellek kartı, her biri 64'e 64 matrisinde iki çekirdek seti taşıyan dört bankadan oluşan dört grup olarak düzlemsel bir şekilde organize edildi; böylece set başına 64 x 64 = 4096 bit, 8.192 bit veren x 2 set, 32.768 bit veren x 4 banka, toplam 131.072 bit veren x 4 grup vardı ve bu 16 bitlik makine kelime boyutuna bölünerek 8.192 kelime verdi. hafızanın.

Bu 8K kelime bellek kartındaki çekirdek, merkezi olarak yerleştirilmiş, 5.25" genişliğinde ve 6.125" yüksekliğinde bir "kart üstü kart" içeriyordu ve koruyucu bir plaka ile kaplanmıştı. Gerekli destek sürücüsü okuma-yazma-yeniden yazma devresi ile çevriliydi. Tüm çekirdek ve ilgili destek elektroniği, tek bir standart 15 x 15 inç (380 mm) karta sığar. Bir harici genişletme kutusunda 32K'ya kadar bu tür çekirdek RAM desteklenebilir. Yarı iletken ROM o zamanlar zaten mevcuttu ve RAM'siz sistemler (yani yalnızca ROM'lu) birçok endüstriyel ortamda popüler hale geldi. Orijinal Nova makineleri yaklaşık 200 kHz'de çalıştı , ancak SuperNova, özel yarı iletken ana bellek ile kullanıldığında 3 MHz'e kadar çalışacak şekilde tasarlandı.

Standartlaştırılmış arka panel ve G/Ç sinyalleri, programlanmış G/Ç ve Veri Kanalı cihazlarının Nova'ya bağlanmasını rakip makinelere kıyasla basitleştiren basit, verimli bir G/Ç tasarımı yarattı. Özel G/Ç veri yolu yapısına ek olarak, Nova arka panelinde standart olmayan konektörler veya diğer özel amaçlar için kullanılabilen tel sarma pimleri vardı .

Programlama modeli

Komut biçimi genel olarak üç fonksiyon birine kategorize edilebilir: 1) kayıt-için-kayıt manipülasyonu, 2) hafıza referans, ve 3), girdi / çıktı. Her talimat bir kelimede yer aldı. Kayıttan kayda işleme, bit verimliliğinde neredeyse RISC benzeriydi; ve kayıt verilerini manipüle eden bir talimat da testler, vardiyalar gerçekleştirebilir ve hatta sonucu iptal etmeyi seçebilir. Donanım seçenekleri arasında bir tamsayı çarpma ve bölme birimi, bir kayan nokta birimi (tek ve çift kesinlik) ve bellek yönetimi bulunur .

Delikli bant üzerinde Veri Genel yazılımı

En eski Nova , delikli bant üzerinde bir BASIC yorumlayıcısıyla geldi . Ürün büyüdükçe, Data General, bir dizi tutarlı işletim sistemi altında çalışan Nova bilgisayarları için birçok dil geliştirdi. FORTRAN IV , ALGOL , Genişletilmiş BASIC, Data General Business Basic , Interactive COBOL ve birkaç derleyici Data General'dan temin edilebilirdi. Üçüncü taraf satıcılar ve kullanıcı topluluğu, teklifleri Forth , Lisp , BCPL , C , ALGOL ve COBOL ve BASIC'in diğer tescilli sürümleriyle genişletti .

Komut seti

Aşağıda uygulanan makine talimatları, tüm Nova serisi işlemciler tarafından uygulanan ortak kümedir. Belirli modeller genellikle ek yönergeler uygular ve bazı yönergeler isteğe bağlı donanım tarafından sağlanırdı.

Aritmetik komutlar

Akümülatörler arasında çalıştırılan tüm aritmetik komutlar. İki işlenen gerektiren işlemler için biri kaynak akümülatörden, diğeri de hedef akümülatörden alındı ​​ve sonuç hedef akümülatöre yatırıldı. Tek işlenen işlemler için, işlenen kaynak kaydından alındı ​​ve sonuç, hedef kaydının yerini aldı. Tüm tek işlenenli işlem kodları için, kaynak ve hedef akümülatörlerin aynı olmasına izin verildi ve işlem beklendiği gibi çalıştı.

Tüm aritmetik komutlar, ayarlandığında sonucun hedef kaydına transferini bastıran bir "yüksüz" bit içeriyordu; bu, hedef kaydının mevcut içeriğini kaybetmeden bir test gerçekleştirmek için test seçenekleriyle birlikte kullanıldı. Montaj dilinde, işlem koduna bir '#' eklenmesi yüksüz biti ayarlar.

CPU, taşıma biti adı verilen ve aritmetik bir işlemden sonra en önemli bitin yürütülmesini içerecek olan tek bitlik bir kayıt içeriyordu. Taşıma biti, talimatta iki bitlik bir alan kullanılarak işlemi gerçekleştirmeden önce istenen bir değere ayarlanabilir. Bit, talimatı gerçekleştirmeden önce ayarlanabilir, temizlenebilir veya tamamlanabilir. Montaj dilinde, bu seçenekler işlem koduna bir harf eklenerek belirtildi: 'O' — taşıma bitini ayarlayın; 'Z' - taşıma ucunu temizleyin, 'C' - taşıma ucunu tamamlayın, hiçbir şey - taşıma ucunu kendi haline bırakın. Yüksüz bit de belirtilmişse, hesaplama için belirtilen taşıma değeri kullanılacaktır, ancak gerçek taşıma kaydı değişmeden kalacaktır.

Tüm aritmetik komutlar, sonuca hedef kaydına yüklenmeden önce uygulanacak olan bir kaydırma seçeneğini belirtmek için kullanılabilecek iki bitlik bir alan içeriyordu. Tek bitlik bir sola veya sağa kaydırma belirtilebilir veya sonucun iki baytı değiştirilebilir. Kaydırmalar 17-bit daireseldi ve taşıma biti en önemli bitin "sola"ydı. Başka bir deyişle, bir sola kaydırma gerçekleştirildiğinde, sonucun en önemli biti taşıma bitine kaydırıldı ve taşıma bitinin önceki içeriği, sonucun en az anlamlı bitine kaydırıldı. Bayt takasları taşıma bitini etkilemedi. Montaj dilinde, bu seçenekler işlem koduna bir harf eklenerek belirlendi: 'L' — sola kaydır; 'R' - sağa kaydır, 'S' - baytları değiştir; hiçbir şey — vardiya veya takas yapmayın.

Tüm aritmetik komutlar, işlemin sonucuna uygulanacak bir testi belirtebilecek üç bitlik bir alan içeriyordu. Test doğru olarak değerlendirilirse, sıradaki bir sonraki talimat atlandı. Montaj dilinde, test seçeneği talimata üçüncü bir işlenen olarak belirtildi. Mevcut testler şunlardı:

  • SZR — sıfır sonucu atla
  • SNR — sıfırdan farklı sonucu atla
  • SZC — sıfır taşımayı atla
  • SNC — sıfırdan farklı taşımayı atla
  • SBN — hem taşıma hem de sonuç sıfırdan farklıysa atla
  • SEZ — taşıma veya sonuç veya her ikisi de sıfırsa atla
  • SKP - her zaman atla
  • hiçbir şey - asla atlama

Gerçek aritmetik talimatlar şunlardı:

  • MOV — kaynak akümülatörün içeriğini hedef akümülatöre taşı
  • COM — kaynak akümülatörün bit düzeyinde tamamlayıcısını hedef akümülatöre taşı
  • ADD — hedef akümülatöre kaynak akümülatör ekleyin
  • ADC — kaynak akümülatörün bit düzeyinde tamamlayıcısını alın ve hedef akümülatöre ekleyin
  • NEG — kaynak akümülatörün negatifini hedef akümülatöre taşı
  • SUB — içerik kaynak akümülatörünü hedef akümülatörden çıkar
  • INC — kaynak akümülatörün içeriğine 1 ekleyin ve hedef akümülatöre gidin
  • VE — iki akümülatörün bit düzeyinde AND işlemini gerçekleştirin ve sonucu hedef akümülatöre yerleştirin

Tüm seçeneklerin kullanıldığı örnek bir aritmetik komut şudur:

ADDZR# 0,2,SNC

Bu kod şu şekilde çözülür: taşıma bitini temizle; AC2'nin (akümülatör 2) içeriğini AC0'a ekleyin; sonucu dairesel olarak bir bit sağa kaydırın; taşıma bitinin ayarlanıp ayarlanmadığını görmek için sonucu test edin ve öyleyse bir sonraki talimatı atlayın. Testi gerçekleştirdikten sonra sonucu atın. Aslında bu, sonucun tek mi çift mi olduğunu görmek için iki sayı ve testler ekler.

Bellek referans talimatları

Nova komut seti, bellek içeriğini akümülatörlere ve bunun tersini aktaran bir çift talimat, iki kontrol transfer talimatı ve bir hafıza konumunun içeriğini test eden iki talimat içeriyordu. Tüm bellek referans talimatları, sekiz bitlik bir adres alanı ve bellek adresleme modunu belirten iki bitlik bir alan içeriyordu. Dört mod şunlardı:

  • Mod 0 — mutlak adresleme. Talimatın adres alanının içeriği solda sıfır doldurulur ve hedef adres olarak kullanılır.
  • Mod 1 — göreli adresleme. Komutun adres alanının içeriği sola doğru uzatılır ve program sayacının mevcut değerine eklenir (talimat yürütüldüğünde bir sonraki komutu işaret eder). Sonuç, hedef adres olarak kullanılır.
  • Mod 2 — dizinlenmiş adresleme. Komutun adres alanının içeriği sola doğru uzatılır ve akümülatör 2'nin mevcut değerine eklenir. Sonuç hedef adres olarak kullanılır.
  • Mod 3 — dizinlenmiş adresleme. Komutun adres alanının içeriği sola doğru uzatılır ve akümülatör 3'ün mevcut değerine eklenir. Sonuç hedef adres olarak kullanılır.

Açıkçası, mod 0, sekiz bitlik adres alanı verildiğinde yalnızca ilk 256 bellek kelimesini adresleyebildi. Belleğin bu bölümü "sayfa sıfır" olarak adlandırıldı. Sayfa sıfır bellek sözcükleri, az sayıda olması nedeniyle Nova derleme dili programcıları için değerli kabul edildi; yalnızca sayfa sıfır konumları, dizin kaydı olarak kullanmak için akümülatör 2 veya 3'ün bağlanmasını gerektiren dizinlenmiş adreslemeye başvurmadan programın herhangi bir yerinden adreslenebilir. Montaj dilinde, bir ".ZREL" yönergesi, montajcının onu takip eden talimatları ve veri sözcüklerini sayfa sıfıra yerleştirmesine neden oldu; Bir ".NREL" yönergesi, aşağıdaki komutları ve veri sözcüklerini "normal" belleğe yerleştirdi. Daha sonra Nova modelleri, bu zorluğun üstesinden gelen (performans cezasıyla) genişletilmiş adresleme alanlarına sahip talimatlar ekledi.

Derleyici, kaynakta açıkça yazmak mümkün olsa da, mod 1 için göreli ofsetleri otomatik olarak hesapladı. Bir bellek referans komutu, .NREL alanında bir bellek adresine başvuruda bulunduysa ancak mod belirteci yoksa, mod 1 kabul edildi ve montajcı mevcut komut ile referans verilen konum arasındaki ofseti hesapladı ve bunu komutun adres alanına yerleştirdi (sonuçta değer 8 bitlik alana sığar).

İki yükleme ve depolama talimatı şunlardı:

  • LDA — bir bellek konumunun içeriğini belirtilen akümülatöre yükleyin.
  • STA — belirtilen akümülatörün içeriğini bir bellek konumunda saklayın.

Bu talimatların her ikisi de "dolaylı" bir bit içeriyordu. Bu bit ayarlanmışsa (opcode'a bir '@' eklenerek Assembly dilinde yapıldı), hedef adresin içeriğinin bir bellek adresi olduğu varsayılır ve bu adres, yükleme veya depolama için referans alınır.

İki kontrol transferi talimatı şunlardı:

  • JMP — kontrolü belirtilen bellek konumuna aktarır
  • JSR ("atlama altyordamı") — JMP talimatıyla aynı şeyi yapar, ancak ek olarak dönüş adresini (sıradaki JSR talimatını izleyen talimat) atlamadan önce akümülatör 3'e yükler.

Yükleme ve depolama talimatlarında olduğu gibi, atlama talimatları, montajda benzer şekilde '@' karakteri kullanılarak belirtilen dolaylı bir bit içeriyordu. Dolaylı bir atlama durumunda, işlemci hedef konumun içeriğini aldı ve değeri atlanacak bellek adresi olarak kullandı. Ancak, yükleme ve depolama komutlarından farklı olarak, dolaylı adres en önemli bit setine sahipse, daha fazla bir dolaylı döngü gerçekleştirir. Nova 3'ten önceki Nova serisi işlemcilerde, dolaylı döngü sayısında bir sınırlama yoktu; kendisine başvuran dolaylı bir adres, talimatın asla tamamlanmadığı sonsuz bir dolaylı adresleme döngüsüne neden olur. (Bu, kullanıcılar için endişe verici olabilir, çünkü bu durumdayken ön paneldeki STOP düğmesine basmak hiçbir şey yapmıyordu. Döngüyü kırmak için makineyi sıfırlamak gerekiyordu.)

İki bellek testi talimatı şunlardı:

  • ISZ — bellek konumunu artırın ve sonuç sıfırsa sonraki talimatı atlayın.
  • DSZ — bellek konumunu azaltın ve sonuç sıfırsa sonraki talimatı atlayın.

Yükleme ve depolama yönergelerinde olduğu gibi, tek bir düzeyde dolaylı adresleme gerçekleştirecek dolaylı bir bit vardı. Bu talimatlar tuhaftı, çünkü manyetik çekirdek hafızalı Novalarda, talimat hafıza kartının kendisinde yürütülüyordu. O zamanlar yaygın olduğu gibi, bellek kartları, manyetik çekirdek belleğe özgü yıkıcı okuma sorununu çözmek için bir "geri yazma" devresi içeriyordu. Ancak geri yazma mekanizması, işlemcinin çeşitli amaçlar için kullandığı mini bir aritmetik birimi de içeriyordu. ISZ ve DSZ komutları için, okunmakta olan bellek konumu ile geri yazma arasında artış veya azalma meydana geldi; CPU sadece sonucun sıfır mı yoksa sıfırdan farklı mı olduğunun söylenmesini bekledi. Bu talimatlar yararlıydı çünkü bir bellek konumunun bir akümülatörü bağlamadan döngü sayacı olarak kullanılmasına izin verdiler, ancak eşdeğer aritmetik talimatları gerçekleştirmekten daha yavaşlardı.

Bellek referans talimatlarına bazı örnekler:

LDA 1,COUNT

COUNT etiketli bellek konumunun içeriğini akümülatör 1'e aktarır. COUNT öğesinin .NREL alanında olduğunu varsayarsak, bu komut şuna eşdeğerdir: LDA 1,1,(COUNT-(.+1)) burada '.' LDA komutunun konumunu temsil eder.

JSR@ 0,17

Sayfa sıfır boşluğunda, konum 17'nin içeriği tarafından belirtilen bellek adresine dolaylı olarak atlayın ve dönüş adresini akümülatör 3'e yatırın. Bu, Nova'nın ilk modellerinde bir RDOS sistem çağrısı yapmak için standart yöntemdi; Assembly dili anımsatıcısı ".SYSTM" buna çevrildi.

JMP 0,3

Adresi akümülatör 3'te bulunan hafıza konumuna atlayın. Bu, JSR talimatı akümülatör 3'te dönüş adresini bıraktığından, bir işlev veya alt rutin çağrısından geri dönmenin yaygın bir yoluydu.

STA 0,3,-1

0 akümülatörünün içeriğini, akü 3'ün içerdiği adresten bir eksik olan yerde saklayın.

DSZ SAYISI

COUNT etiketli konumdaki değeri azaltın ve sonuç sıfırsa sonraki talimatı atlayın. Yukarıdaki durumda olduğu gibi, COUNT'ın .NREL uzayında olduğu varsayılırsa, bu şuna eşdeğerdir: DSZ 1,(COUNT-(.+1))

G/Ç Talimatları

Novas, I/O cihazlarına arayüz oluşturmak için kanalize edilmiş bir model uyguladı. Modelde, her bir I/O cihazının "Meşgul" ve "Bitti" olarak adlandırılan iki bayrak ve A, B ve C olarak adlandırılan üç veri ve kontrol kaydı uygulaması bekleniyordu. I/O talimatları mevcuttu. kayıtları okumak ve yazmak ve "start", "clear" ve "pulse" olarak adlandırılan üç sinyalden birini cihaza göndermek için. Genel olarak, bir başlatma sinyali göndermek, değerleri A/B/C kayıtlarına yükleyerek ayarlanmış bir G/Ç işlemini başlattı. Net sinyal, bir G/Ç işlemini durdurdu ve ortaya çıkan herhangi bir kesintiyi temizledi. Darbe sinyali, disk sürücülerinde arama işlemleri gibi karmaşık alt sistemlerde yardımcı işlemleri başlatmak için kullanıldı. Yoklamalı cihazlar genellikle verileri doğrudan cihaz ve A kaydı arasında taşır. DMA cihazları genellikle bellek adresini belirtmek için A kaydı, aktarılacak kelime sayısını belirtmek için B kaydı ve kontrol bayrakları için C kaydı kullanır. Kanal 63, CPU'nun kendisine atıfta bulundu ve çeşitli özel işlevler için kullanıldı.

Her I/O komutu, altı bitlik bir kanal numarası alanı, hangi kaydın okunacağını veya yazılacağını belirtmek için dört bitlik bir alan ve hangi sinyalin gönderileceğini belirtmek için iki bitlik bir alan içeriyordu. Montaj dilinde, sinyal, işlem koduna bir harf eklenerek belirtildi: başlangıç ​​için 'S', temizleme için 'C', darbe için 'P' ve sinyal yok için hiçbir şey. İşlem kodları şunlardı:

  • DIA — cihazın A kaydının içeriğini belirtilen akümülatöre taşıyın
  • DOA - belirtilen akümülatörün içeriğini belirtilen kanaldaki cihazın A kaydına gönderin
  • DIB — cihazın B kaydının içeriğini belirtilen akümülatöre taşıyın
  • DOB — belirtilen akümülatörün içeriğini cihazın belirtilen kanaldaki B kaydına gönder
  • DIC — cihazın C kaydının içeriğini belirtilen akümülatöre taşı
  • DOC — belirtilen akümülatörün içeriğini cihazın belirtilen kanaldaki C kaydına gönder
  • NIO - "G/Ç yok", yanlış bir adlandırma. Komut, kayıt aktarımı yapmadan bir cihaza sinyal göndermek için kullanıldı.

Ayrıca, bir cihazın durumunu test etmek için dört talimat mevcuttu:

  • SKPBN — cihazın meşgul bayrağı ayarlanmışsa sonraki talimatı atlayın
  • SKPBZ — cihazın meşgul işareti açıksa sonraki talimatı atlayın
  • SKPDN — cihazın bitti bayrağı ayarlanmışsa sonraki talimatı atlayın
  • SKPDZ — cihazın bitti işareti temizse bir sonraki talimatı atlayın

Bir aygıtı başlatmak, meşgul bayrağını ayarlamasına neden oldu. İstenen işlem tamamlandığında, geleneksel olarak cihaz meşgul bayrağını sildi ve bitti bayrağını kurdu; çoğu cihazın kesme isteği mekanizması tamamlandı bayrağına bağlıydı, bu nedenle tamamlandı bayrağının ayarlanması bir kesintiye neden oldu (kesmeler etkinleştirildiyse ve cihaz maskelenmediyse).

Özel Talimatlar

Bu talimatlar, çeşitli CPU kontrolü ve durum işlevleri gerçekleştirdi. Hepsi aslında CPU'nun kendi kendine referanslı G/Ç kanalı olan kanal 63'teki G/Ç talimatları için kısa yollu anımsatıcılardı.

  • INTA - kesme onayı. Kesinti yapan cihazın kanal numarasını belirtilen akümülatöre aktarın.
  • INTDS - tüm kesintileri devre dışı bıraktı
  • INTEN - tüm kesintileri etkinleştirdi
  • IORST — G/Ç sıfırlama. G/Ç veriyoluna tüm G/Ç'leri durduran, kesintileri devre dışı bırakan ve bekleyen tüm kesintileri temizleyen bir sıfırlama sinyali gönderdi.
  • MSKO - maskeleyin. Kesinti maskesini ayarlamak için belirtilen akümülatörün içeriğini kullandı. Maskenin nasıl yorumlanacağı, her bir I/O cihazının uygulanmasına bağlıydı. Bazı cihazlar maskelenemedi.
  • READS — 16 ön panel veri anahtarının içeriği belirtilen akümülatöre aktarıldı.
  • DUR - CPU'yu durdurdu. Bir kez durdurulduğunda, CPU yalnızca ön panelden manuel müdahale ile yeniden başlatılabilir.

Kesintiler ve kesinti işleme

Donanım açısından bakıldığında, kesme mekanizması nispeten basitti ama aynı zamanda mevcut CPU mimarilerinden daha az esnekti. Arka panel, kesme yapabilen tüm cihazların bağlı olduğu tek bir kesme istek hattını destekledi. Bir aygıtın bir kesinti talep etmesi gerektiğinde, bu satırı yükseltti. CPU, mevcut talimatı tamamlar tamamlamaz kesmeyi aldı. Yukarıda belirtildiği gibi, bir aygıtın bir kesme istediğinde "bitti" G/Ç bayrağını yükseltmesi bekleniyordu ve kural, CPU aygıtın kanalında bir G/Ç temizleme talimatı yürüttüğünde aygıtın kesme isteğini temizlemesiydi. sayı.

CPU, işletim sisteminin, kesme hizmeti rutininin adresini bellek adresi 1'e yerleştirmesini bekledi. Bir aygıt kesintiye uğradığında, CPU, adres 1 üzerinden dolaylı bir atlama yaptı, dönüş adresini bellek adresi 0'a yerleştirdi ve daha fazla kesintiyi devre dışı bıraktı. Kesme işleyicisi daha sonra kesintiye uğrayan cihazın kanal numarasını keşfetmek için bir INTA talimatı gerçekleştirir. Bu, arka düzlemde bir "onay" sinyali yükselterek çalıştı. Onay sinyali, veri yolu üzerindeki her bir panodan geçecek şekilde arka panel boyunca bir papatya zinciri biçiminde kablolanmıştır. Kesinti talep eden herhangi bir cihazın, onay sinyalinin veri yolundan daha fazla yayılmasını engellemesi bekleniyordu, böylece iki veya daha fazla cihaz aynı anda bekleyen kesintilere sahipse, yalnızca ilki alındı ​​sinyalini görecekti. Bu cihaz daha sonra kanal numarasını veri yolu üzerindeki veri hatlarına yerleştirerek yanıt verdi. Bu, eşzamanlı kesme istekleri durumunda, önceliğe sahip olan cihazın, kart kafesindeki CPU'ya fiziksel olarak en yakın olanın belirlendiği anlamına geliyordu.

Kesinti işlendikten ve hizmet rutini cihaza bir G/Ç temizleme işlemi gönderdikten sonra, kesintileri etkinleştirerek ve ardından bellek adresi 0 üzerinden dolaylı bir atlama yoluyla geri dönerek normal işlemeye devam etti. Bekleyen bir kesintinin hemen önce kesintiye uğramasını önlemek için dönüş atlamasında (bu, dönüş adresinin üzerine yazılmasına neden olur), INTEN komutunda bir komut döngüsü gecikmesi vardı. Yürütüldüğünde, JMP@ 0 talimatı olması beklenen aşağıdaki talimat yürütülene kadar kesintiler etkinleştirilmeyecektir.

İşletim sisteminin kesme hizmeti rutini, daha sonra, cihaz için özel kesme işleme rutinine atlamak için alınan kanal numarasını kullanarak tipik olarak indekslenmiş bir atlama gerçekleştirdi. INTA talimatına yanıt vermeyen, özellikle CPU'nun güç kesintisi algılama devresi olmak üzere birkaç cihaz vardı. INTA sıfır sonucunu döndürürse, kesme hizmeti rutini, hangisinin kesintiye uğradığını görmek için SKPDZ/SKPDN talimatlarını kullanarak INTA yanıt vermeyen tüm cihazları yoklamak zorundaydı.

İşletim sistemi, MSKO komutunu kullanarak bir kesme maskesi ayarlayarak kesintilerin sırasını bir şekilde yönetebilir. Bu, işletim sisteminin belirli bir zamanda hangi cihazların kesintiye uğramasına izin verildiğini belirlemesine izin vermeyi amaçladı. Bu talimat verildiğinde, arka planda tüm cihazlara 16 bitlik bir kesme maskesi iletildi. Maskenin aslında onun için ne anlama geldiğine karar vermek cihaza kalmıştı; Geleneksel olarak, maskelenmiş bir cihazın kesme hattını yükseltmesi gerekmiyordu, ancak CPU'nun bunu zorlamanın hiçbir yolu yoktu. Maskelenebilir olan çoğu cihaz, kart üzerindeki bir jumper aracılığıyla maske bitinin seçilmesine izin verdi. Maskeyi tamamen görmezden gelen cihazlar vardı.

Manyetik çekirdekli belleğe sahip sistemlerde (güç olmadan içeriğini koruyan), bir elektrik kesintisinden kurtarma mümkündü. CPU'daki bir güç kesintisi algılama devresi, bilgisayara gelen ana güç kaybı algılandığında bir kesinti verdi; Bu noktadan sonra, güç kaynağındaki bir kapasitör şarjını kaybedene ve CPU'ya giden güç kesilene kadar CPU'nun kısa bir zamanı vardı. Bu, bir IORST talimatı vererek devam eden G/Ç'yi durdurmak ve ardından dört akümülatörün içeriğini ve taşıma bitini belleğe kaydetmek için yeterli bir zamandı. Güç geri geldiğinde, CPU'nun ön panel anahtar anahtarı KİLİT konumundaysa, CPU başlayacak ve bellek adresi 2 üzerinden dolaylı bir atlama gerçekleştirecektir. Bunun, akümülatörleri yeniden yükleyecek bir işletim sistemi hizmet rutininin adresi olması bekleniyordu. ve biraz taşıyın ve ardından normal işlemeye devam edin. Elektrik kesintisi nedeniyle durdurulan G/Ç işlemlerinin nasıl yeniden başlatılacağını bulmak servis rutinine kalmıştı.

Ön panel düzeni

Günün geleneği olduğu gibi, çoğu Nova modeli CPU işlevlerini kontrol etmek ve izlemek için bir ön panel konsolu sağladı. Nova 3'ten önceki modellerin tümü, yukarıdaki Nova 840 panel fotoğrafında gösterildiği gibi standart bir ön panel düzenine dayanıyordu. Düzen, anahtarlı bir güç anahtarı, iki sıra adres ve veri görüntüleme lambası, bir sıra veri giriş anahtarı ve basıldığında çeşitli CPU işlevlerini etkinleştiren bir sıra işlev anahtarı içeriyordu. Adres lambaları her zaman program sayacının mevcut değerini ikili olarak gösterir. Veri lambaları, o anda hangi CPU işlevinin etkin olduğuna bağlı olarak çeşitli değerler görüntüledi. En soldaki veri lambasının solunda, taşıma bitinin mevcut değerini gösteren ek bir lamba vardı. Çoğu modelde lambalar, panel panosuna lehimlenmiş akkor lambalardı; yanmış lambaları değiştirmek, Data General saha servis mühendisleri için bir baş belasıydı.

Veri anahtarlarının her biri, 16 bitlik bir değerdeki bir bitin değerini kontrol etti ve Veri Genel kuralına göre soldan sağa 0-15 arasında numaralandırıldı. Veri anahtarları çeşitli işlevler için CPU'ya girdi sağladı ve ayrıca READS montaj dili talimatı kullanılarak çalışan bir program tarafından okunabilir. Panel dağınıklığını azaltmak ve paradan tasarruf etmek için fonksiyon anahtarları iki yönlü anlık anahtarlar olarak uygulandı. Bir fonksiyon anahtarı kolu kaldırıldığında, panel üzerindeki anahtarın üzerinde adı yazılı olan fonksiyonu tetikledi; kola basıldığında, anahtarın altında adı görünen işlevi etkinleştirdi. Anahtar kolu bırakıldığında nötr konuma döndü.

Nova 840 fotoğrafına atıfta bulunularak, soldan ilk dört anahtar, dört akümülatör için İNCELEME ve PARÇALAMA işlevlerini gerçekleştirdi. Bunlardan birinde EXAMINE tuşuna basılması, akümülatörün mevcut değerinin veri lambaları tarafından ikili olarak görüntülenmesine neden oldu. DEPOSIT'e basmak, veri anahtarlarının mevcut ayarları ile temsil edilen ikili değeri akümülatöre aktardı.

Sağa gidildiğinde sonraki anahtar RESET/STOP anahtarıydı. STOP'a basmak, mevcut talimatı tamamladıktan sonra CPU'nun durmasına neden oldu. RESET'e basmak CPU'nun hemen durmasına, bir dizi CPU dahili kaydını temizlemesine ve bağlı tüm cihazlara bir G/Ç sıfırlama sinyali göndermesine neden oldu. Bunun sağındaki anahtar BAŞLAT/DEVAM düğmesiydi. DEVAM'a basmak, CPU'nun program sayacı tarafından o anda işaret edilen talimatta yürütmeye devam etmesine neden oldu. BAŞLAT'a basmak, 1-15 veri anahtarlarında halihazırda ayarlanmış olan değeri program sayacına aktardı ve oradan yürütmeye başladı.

Sonraki iki anahtar, ön panelden belleğe okuma ve yazma erişimi sağladı. EXAMINE'e basılması, 1-15 veri anahtarlarında ayarlanan değeri program sayacına aktarır, ilgili bellek konumuna değeri getirir ve değerini veri lambalarında görüntüler. EXAMINE NEXT'e basmak program sayacını artırdı ve ardından o bellek konumu üzerinde bir inceleme işlemi gerçekleştirerek kullanıcının bir dizi bellek konumundan geçmesine izin verdi. DEPOSIT'e basıldığında, veri anahtarlarında bulunan değer, program sayacının gösterdiği hafıza konumuna yazılır. DEPOSIT NEXT'e basmak önce program sayacını artırdı ve ardından işaret edilen bellek konumuna yatırıldı.

INST STEP işlevi, CPU'nun mevcut program sayacı konumunda bir komutu yürütmesine ve ardından durmasına neden oldu. Program sayacı, komut yürütmenin bir parçası olarak artırılacağından, bu, kullanıcının bir program boyunca tek adım atmasına izin verdi. Bir yanlış isim olan MEMORY STEP, CPU'nun tek bir saat döngüsü boyunca çalışmasına ve durmasına neden oldu. Bu, kullanıcılar için çok az kullanışlıydı ve genellikle yalnızca saha servis personeli tarafından teşhis için kullanıldı.

PROGRAM YÜKÜ, genellikle bir Nova'yı başlatmak için kullanılan mekanizmaydı. Bu anahtar tetiklendiğinde, 32 kelimelik önyükleme ROM'unun hafızanın ilk 32 kelimesi üzerinde eşlenmesine neden oldu, program sayacını 0'a ayarladı ve CPU'yu başlattı. Önyükleme ROM'u, seçilen bir G/Ç aygıtından belleğe 256 kelimelik (512 bayt) kod okuyacak ve ardından kontrolü okuma koduna aktaracak kod içeriyordu. 8-15 veri anahtarları, önyükleme ROM'una hangi G/Ç kanalından önyükleme yapacağını söylemek için kullanıldı. 0 anahtarı kapalıysa, önyükleme ROM'u aygıtın yoklanan bir aygıt (örneğin, kağıt şerit okuyucu) olduğunu varsayar ve 512 bayt okunana kadar yoklamalı bir giriş döngüsü çalıştırır. 0 anahtarı açıksa, önyükleme ROM'u aygıtın DMA özellikli bir aygıt olduğunu varsayar ve bir DMA veri aktarımı başlatır. Önyükleme ROM'u, aktarımı başlatmadan önce aygıtı konumlandıracak kadar akıllı değildi. Bir çökmeden sonra yeniden başlatırken bu bir sorundu; önyükleme aygıtı bir disk sürücüsüyse, kafaları muhtemelen rastgele bir silindir üzerinde bırakılmıştı. Önyükleme sırasının çalışması için, RDOS'un birinci düzey önyükleme bloğunu yazdığı silindir 0'a yeniden konumlandırılmaları gerekiyordu. Geleneksel olarak bu, sürücüyü yükleme sırası boyunca döndürerek yapıldı, ancak bekleme süresinden (sürücü modeline bağlı olarak 5 dakikaya kadar) bıkan kullanıcılar, bir sürücünün "yeniden kalibre etme" I/O kodunu ön panelden nasıl girileceğini öğrendiler. ve CPU'yu tek adımda, deneyimli bir kullanıcı için yalnızca birkaç saniye süren bir işlem.

Güç anahtarı, konumları KAPALI, AÇIK ve KİLİT olarak işaretlenmiş 3 yollu anahtarlı bir anahtardı. KAPALI konumda tüm güç CPU'dan çekildi. Anahtarı AÇIK konumuna getirerek CPU'ya uygulanan gücü açın. Ancak, mevcut CPU'ların aksine, güç uygulandığında CPU otomatik olarak başlamadı; kullanıcının CPU'yu başlatmak ve önyükleme sırasını başlatmak için PROGRAM LOAD veya başka bir yöntem kullanması gerekiyordu. Anahtarın LOCK konumuna çevrilmesi, ön panel fonksiyon anahtarlarını devre dışı bıraktı; anahtarı LOCK konumuna çevirerek ve anahtarı çıkararak, kullanıcı CPU'yu kurcalamaya karşı dayanıklı hale getirebilir. Manyetik çekirdek belleği olan sistemlerde, KİLİT konumu ayrıca otomatik güç kesintisi kurtarma işlevini de etkinleştirdi. Anahtar, KAPALI veya KİLİT konumlarında çıkarılabilir.

Verim

Nova 1200, çekirdek bellek erişim talimatlarını (LDA ve STA) 2,55 mikrosaniye (μs) içinde yürüttü. 0,4 μs kaydedilen salt okunur bellek kullanımı. Akümülatör komutları (ADD, SUB, COM, NEG, vb.) 1,55 μs, MUL 2,55 μs, DIV 3,75 μs, ISZ 3,15-4,5 μs sürmüştür. Daha sonraki Eclipse MV/6000'de LDA ve STA 0,44 μs, ADD vb. 0,33 μs, MUL 2,2 μs, DIV 3,19 μs, ISZ 1,32 μs, FAD 5,17 μs, FMMD 11,66 μs aldı.

Assembly dili örnekleri

Merhaba dünya programı

Bu, Nova Assembly dilinde minimal bir programlama örneğidir. RDOS altında çalışacak şekilde tasarlanmıştır ve “ Merhaba, dünya. ” konsolda.

    ; a "hello, world" program for Nova running RDOS
    ; uses PCHAR system call
    .titl hello
    .nrel
    .ent start

 start:
 dochar:
    lda    0,@pmsg  ; load ac0 with next character,
    mov#   0,0,snr  ; test ac0; skip if nonzero (don't load result)
    jmp    done
    .systm
    .pchar          ; print first
    jmp    er       ; skipped if OK
    movs   0,0      ; swap bytes
    .systm
    .pchar          ; print second
    jmp    er       ; skipped if OK
    isz    pmsg     ; point to next character
    jmp    dochar   ; go around again

 done:
    .systm          ; normal exit
    .rtn
 er:
    .systm          ; error exit
    .ertn
    halt

 pmsg:
    .+1             ; pointer to first character of string
                    ; note bytes are packed right-to-left by default
                    ; <15><12> denotes a CR LF pair.
    .txt /Hello, world.<15><12>/
    0               ; flag word to end string

    .end start

16 bit çarpma

Nova'nın temel modelleri, fiyatları rekabetçi tutmak için yerleşik donanım çoğaltma ve bölme özelliği olmadan geldi. Aşağıdaki rutin, 16 bitlik bir kelime sonucu üretmek için iki 16 bitlik kelimeyi çarpar (taşma göz ardı edilir). ALU op, shift ve testin (atlama) birleşik kullanımını gösterir. Bu rutin tarafından çağrıldığında jsr, AC3'ün dönüş adresini tuttuğuna dikkat edin . Bu, dönüş talimatı tarafından kullanılır jmp 0,3. Bir akümülatörü temizlemenin deyimsel bir yolu sub 0,0. Diğer tekli talimatlar, belirli bir yararlı sabitler kümesini (örneğin -2, -1 veya +1) yüklemek için düzenlenebilir.

 mpy:	; multiply AC0 <- AC1 * AC2, by Toby Thain

 	sub 0,0		; clear result
 mbit:	movzr 1,1,szc	; shift multiplier, test lsb
 	add 2,0		; 1: add multiplicand
 	movzl 2,2,szr	; shift and test for zero
 	jmp mbit	; not zero, do another bit
 	jmp 0,3		; return

İkili yazıcı akümülatörü

Aşağıdaki yordam , AC1'in değerini RDOS konsolunda 16 basamaklı bir ikili sayı olarak yazdırır . Nova komut setinin diğer tuhaflıklarını ortaya çıkarır. Örneğin, bir akümülatöre rastgele bir "anlık" değer yüklemek için bir talimat yoktur (her ne kadar bellek referans talimatları etkili bir adres oluşturmak için böyle bir değeri kodlasa da). Akümülatörler genellikle başlatılmış bellek konumlarından (örn. n16) yüklenmelidir . PDP-11 gibi diğer çağdaş makineler ve hemen hemen tüm modern mimariler, ARM gibi çoğu, hemen yüklenebilecek değer aralığını kısıtlamasına rağmen, anında yüklemelere izin verir .

RDOS .systmçağrı makrosu bir a uyguladığından jsr, .pcharişlevin dönüş adresi AC3'ün üzerine yazılır . Bu nedenle, bu işlevi arayan kişinin dönüş adresini korumak için geçici bir konuma ihtiyaç vardır. Özyinelemeli veya başka bir şekilde yeniden giriş rutini için bunun yerine bir yığın, varsa donanım, yoksa yazılım kullanılmalıdır. Dönüş talimatı jmp @ retrn, dönüş bilgisayarını yüklemek için Nova'nın dolaylı adresleme modundan yararlanan hale gelir .

Sondaki sabit tanımlar, iki birleştirici özelliği gösterir: birleştirici tabanı varsayılan olarak sekizliktir ( 20= on altı) ve karakter sabitleri örn "0.

 pbin:  ; print AC1 on console as 16 binary digits, by Toby Thain

        sta     3,retrn     ; save return addr
        lda     2,n16       ; set up bit counter
 loop:  lda     0,chr0      ; load ASCII '0'
        movzl   1,1,szc     ; get next bit in carry
        inc     0,0         ; bump to '1'
        .systm
        .pchar              ; AC0-2 preserved
        jmp     err         ; if error
        inc     2,2,szr     ; bump counter
        jmp     loop        ; loop again if not zero
        lda     0,spc       ; output a space
        .systm
        .pchar
        jmp     err         ; if error
        jmp     @retrn

 spc:   " ;that's a space
 chr0:  "0
 n16:   -20
 retrn: 0

Gerçekler

Montreal'deki Canadian Broadcasting Corporation, Nova 1200'ü 1980'lerin sonlarına kadar kanal oynatma otomasyonu için kullandı. Daha sonra yenilenmiş Nova 4 üniteleri ile değiştirildi ve bunlar 1990'ların ortalarına kadar kullanılıyordu.

Ayrıca bakınız

Notlar

Referanslar

alıntılar

bibliyografya

Dış bağlantılar