VAXarchitektura procesorów opracowana przez firmę Digital; także seria komputerów bazujących na tej architekturze. Ta 32-bitowa architektura opracowana została, aby zastąpić różne (wzajemnie niezgodne) architektury komputerów serii Programmed Data Processor (PDP).

DEC VAX
Ilustracja
Typ

32-bity

Premiera

1977

Procesor

VAX (CISC, pamięć wirtualna)

System operacyjny

VAX/VMS, Ultrix, BSD UNIX, VAXELN

Głównymi cechami architektury VAX-owej była obsługa wirtualnej pamięci implementowanej metodą stronicowania i tzw. ortogonalny zestaw instrukcji[1]. VAX odbierany był jako kwintesencja CISC: posiadał bardzo dużą liczbę trybów adresowania i instrukcji maszynowych, włączając obsługę tak złożonych zagadnień jak dodawanie/usuwanie elementów kolejki.

Nazwa edytuj

Nazwa VAX jest skrótem od Virtual Address eXtension (od ang. Rozszerzenie o Adresy Wirtualne) i były ku temu dwa powody: po pierwsze, komputery te były jednymi z pierwszych używającymi wirtualnej pamięci, a po drugie dlatego, że VAX był 32-bitowym rozszerzeniem starszego 16-bitowego komputera PDP-11. Pierwsze wersje VAX-a miały nawet tryb wstecznej zgodności, emulujący wiele spośród instrukcji starego PDP, w szczególności VAX-11, którego nazwa odnosiła się właśnie do rzeczonej zgodności. Późniejsze wersje przerzuciły tę funkcjonalność (jak i wiele z rzadziej używanych instrukcji CISC-owych) na system operacyjny.

Systemy operacyjne edytuj

Domyślnym systemem operacyjnym był VAX/VMS (później przemianowany na OpenVMS, przeniesiony na Alphę)[2]. Architektura VAX i system operacyjny VMS były projektowane równolegle, aby najlepiej wykorzystać ich zalety: podobna historia powtórzyła się przy projektowaniu rozwiązania VAXcluster. Inne systemy operacyjne na VAX-a to Unix BSD, w różnych wydaniach włączając 4.3BSD, Ultrix-32, VAXELN i Xinu. Z nowszych warto wymienić NetBSD i OpenBSD obsługujące różne komputery VAX, a także pewne działania mające przystosować Linuxa do pracy na VAX-ach.

Historia edytuj

 
VAX-11/780

Pierwszą wprowadzoną na rynek maszyną VAX był VAX-11/780 pokazany akcjonariuszom Digitala 25 października 1977 r.[3] Za architekturę odpowiedzialny był Bill Strecker, doktorant Gordona Bella[4] na Uniwersytecie Carnegie Mellon[5]. Powstało wiele modeli VAX różniących się wydajnością, funkcjonalnością i cenami. Superminikomputery VAX osiągnęły znaczną popularność w latach 80. XX w.

Przez pewien czas VAX-11/760 był punktem odniesienia w benchmarkowaniu procesorów, ponieważ jego szybkość wynosiła około 1 MIPS. Co ciekawe: rzeczywista liczba instrukcji wykonywanych w ciągu sekundy przez ten komputer była bliższa 500.000. Jako że jeden MIPS VAX-owy równał się prędkości VAX-11/760, komputer o wydajności 27 MIPS-ów VAX-owych wykonywałby ten sam program około 27 razy szybciej niż VAX-11/760. W obrębie społeczności Digitalowej częściej nazywano tę miarę VUP (VAX Unit of Performance – ang. VAX-owa Jednostka Wydajności), ponieważ MIPS-y jako takie nie są porównywalne między różnymi architekturami. Powiązanym z tym pojęciem jest cluster VUP, używany przy pomiarze wydajności rozwiązań VAXcluster. Wydajność tego komputera dalej jest podstawą w benchmarku BRL-CAD-a, narzędziu do analizy wydajności dołączonym do tego pakietu.

 
VAX 8350 – otwarty

VAX miał wiele różnych implementacji. Oryginalny CPU wykonany był w technologii TTL i zajmował więcej niż jedną szafę. Były też układy zbudowane z wielu macierzy bramek logicznych typu ECL lub technologii macrocell array włączając superminikomputery VAX 8600 i 8800, jak i mainframe’a VAX 9000. CPU zbudowane z zestawów układów scalonych w technologii MOSFET znalazły zastosowanie w maszynach 8100 i 8200.

Ze znaczną zmianą w obrębie architektury VAX wiązał się komputer MicroVAX I: w czasie jego wprowadzenia na rynek technologia nie pozwalała jeszcze na zaimplementowanie pełnego zestawu instrukcji VAX jako pojedynczego układu VLSI (ani nawet jako zestawu układów VLSI, jak uczyniono to w procesorze V-11 systemów 8200 i 8300). Postanowiono więc zaimplementować najbardziej złożone elementy modelu programowego jako oprogramowanie emulujące pozostawiając sprzętową implementację jedynie najpotrzebniejszych operacji. Ten nowy podział znacznie ograniczył złożoność mikrokodu VAX-a, i był nazywany architekturą „MicroVAX”. W komputerze MicroVAX I ALU i rejestry zaimplementowane były na jednej macierzy bramek, a cała reszta funkcji kontrolnych przy pomocy konwencjonalnych układów logicznych.

Implementacja pełnego VLSI to mikroprocesor MicroVAX-a II: 78032 (lub DC333) CPU oraz 78132 (DC335) FPU. Był to jednocześnie pierwszy mikroprocesor wyposażony w MMU[6]. MicroVAX II zbudowany był w oparciu o pojedynczą płytę procesorową i obsługiwał system operacyjny MicroVMS lub Ultrix-32. Miał 1 MB wbudowanej pamięci i wykorzystywał szynę Q-22 z obsługą DMA. Liczni następcy MicroVAX-a II mieli znacznie poprawioną wydajność i pojemność pamięci.

Kolejne VAX-owe procesory VLSI to wyżej wymieniony V-11, CVAX, „SOC” (System on Chip, z ang. „System w jednym układzie”, czyli CVAX zbudowany w postaci jednego układu scalonego), Rigel, Mariah i NVAX. Mikroprocesory VAX rozwinęły się w niedrogie stacje robocze i zastąpiły bardziej rozbudowane modele VAX-ów. Tak szerokie spektrum typów komputerów (od mainframe do stacji roboczych) opartych o jeden model programowy nie było w tamtych czasach powszechne. Na procesorach CVAX były wymalowane różne ciekawe obrazki: na uwagę zasługuje napis „CVAX, jeśli zależy wam na tyle, że kradniecie to, co najlepsze” w łamanym rosyjskim, adresowany do inżynierów sowieckich, którzy dokonywali wstecznej inżynierii kradzionych komputerów DEC dla zastosowań wojskowych[7][8].

Ostatecznie architekturę VAX zastąpiły technologie RISC. W 1989 r. Digital wprowadził linie serwerów i stacji roboczych w architekturze MIPS (odpowiednio DECsystem i DECstation). W 1992 r. Digital wprowadził własną architekturę RISC, Alpha AXP, przemianowaną później na Alpha, i własny układ DECchip 21064: szybki, 64-bitowy procesor zdolny do obsługi systemu operacyjnego OpenVMS.

W sierpniu 2000 roku Compaq ogłosił, że VAX-y przestaną być oferowane klientom[9]. W 2005 r. zakończona została produkcja komputerów VAX, ale stare maszyny są jeszcze w użyciu. W dalszym ciągu dostępne są programowe emulatory VAX-a: SRI CHARON-VAX oraz SIMH.

Architektura procesora edytuj

Architektura procesora w skrócie
Nazwa VAX
Projektant Digital Equipment Corporation
Liczba bitów 32
Rok wprowadzenia 1977
Typ CISC, Pamięć-pamięć
Wielkość rozkazów różna (od 1 do 321 bajtów)
Kolejność bajtów Little endian
Rozszerzenia VAXvector
Liczba rejestrów 16

Mapa pamięci wirtualnej edytuj

Pamięć wirtualna komputera VAX podzielona była na 4 sekcje po 1 GB każda (gigabajt w tym kontekście oznacza 230 bajtów):

Sekcja Zakres adresów (szesnastkowo)
P0 0x000000000x3fffffff
P1 0x400000000x7fffffff
S0 0x800000000xbfffffff
S1 0xc00000000xffffffff

W systemie operacyjnym VMS P0 była używana na procesy w przestrzeni użytkownika, P1 na stos, S0 na system operacyjny, a S1 była zarezerwowana.

Poziomy uprzywilejowania edytuj

VAX korzystał z czterech poziomów (trybów) uprzywilejowania:

Lp. Tryb Użycie w systemie VMS Uwagi
0 Kernel Jądro systemu operacyjnego Najwyższy poziom uprzywilejowania
1 Executive System plików
2 Supervisor Powłoka (DCL)
3 User Zwykłe programy Najniższy poziom uprzywilejowania

Rejestr stanu procesora edytuj

CM TP MBZ FD IS cmod pmod MBZ IPL MBZ DV FU IV T N Z V C
31 30 29 27 26 25 23 21 20 15 7 6 5 4 3 2 1 0
Bity Nazwa Komentarz
31 PDP-11 compatibility mode ang. tryb zgodności z PDP-11
30 trace pending dotyczy śledzenia wykonania programu
29:28 MBZ (must be zero) zawsze zero
27 first part done (interrupted instruction) dotyczy przerwania[10]
26 interrupt stack stos przerwania
25:24 current privilege mode obecny poziom uprzywilejowania
23:22 previous privilege mode poprzedni poziom uprzywilejowania
21 MBZ (must be zero) zawsze zero
20:16 IPL (interrupt priority level) granica poziomu priorytetu dla przerwań[11]
15:8 MBZ (must be zero) zawsze zero
7 decimal overflow trap enable sterowanie zachowaniem w przypadku przepełnienia w przypadku operacji dziesiętnych[12]
6 floating-point underflow trap enable jw., ale dotyczy operacji zmiennoprzecinkowych
5 integer overflow trap enable jw., ale dotyczy zwykłych operacji całkowitoliczbowych
4 trace śledzenie wykonania
3 negative wynik ostatniej ujemny
2 zero wynik ostatniej operacji zerowy
1 overflow czy nastąpiło przepełnienie?
0 carry bit przeniesienia

Komputery w technologii VAX edytuj

Pierwszym był VAX-11/760 z rodziny VAX-11, we wczesnych latach 80. został on zastąpiony przez high-endowy VAX 8000. Również w latach 80. do rodziny VAX dołączył MicroVAX i VAXstation. Następcą MicroVAX-a był VAX 4000, a VAX 8000 – VAX 6000. W późnych latach 80. zaprezentowano system klasy mainframe, VAX 9000. Na początku lat 90. wprowadzono odporne na awarie komputery VAXft i zgodne z Alphą VAX 7000/10000. Wiele maszyn VAX było również sprzedawanych w wersji VAXserver.

Projekty porzucone edytuj

Nie udało się ukończyć projektu BVAX high-endowego VAX-a w technologii ECL. Takoż nie wprowadzono w życie dwóch innych ECL-owych projektów: „Argonaut” i „Raven”[13]. Nigdy nie dostarczono także VAX-a znanego jako „Gemini” (który był projektem awaryjnym na wypadek porażki systemu Scorpio).

Klony edytuj

Istniały liczne „klony”, zarówno autoryzowane, jak i pirackie. Wśród nich wymienić warto:

  • Klony wczesnych VAX-ów produkowane przez Systime Ltd z Wlk. Brytanii. Na przykład Systime 8750 (odpowiednik komputera VAX 11/750)[14].
  • Odporne VAX-y odpowiadające specyfikacjom wojskowym oferowane przez Norden Systems jako MIL VAX[2].
  • Węgierskie klony budowane przez Narodowy Instytut Badań Fizycznych (KFKI). Były to klony wczesnych VAX-ów, i nazwane były TPA-11/540, /560 i /580[15].
  • SM 52/12[16] z Czechosłowacji: opracowane przez VUVT w Żylinie i produkowane od 1986 r. przez ZVT w Bańskiej Bystrzycy.

Fotografie edytuj

Przypisy edytuj

  1. Pojęcie to odnosi się do takiej architektury komputera, gdzie do każdego rodzaju danych można odwoływać się używając każdego z dostępnych w danym komputerze trybów adresowania. Innym przykładem architektury posiadającej tę cechę jest ARM 11. – przypis tłumacza.
  2. a b VAX/VMS at 20. Digital Equipment Corporation, 1997. [dostęp 2007-10-13]. [zarchiwizowane z tego adresu (2009-07-06)].
  3. VAX 11/780, The First VAX System (październik 1977). [dostęp 2099-06-17]. [zarchiwizowane z tego adresu (3 października 2019)].
  4. Jeden z pierwszych pracowników Digitala, inżynier odpowiedzialny m.in. za zaprojektowanie licznych PDP, Sprawował ogólny nadzór nad projektowaniem VAX-a. – przypis tłumacza.
  5. Robert Slater: Portraits in Silicon. MIT Press, 1987. [dostęp 2009-06-17].
  6. Bob Supnik: MicroVax II. The Computer History Simulation Project, 24 lutego 2008. [dostęp 2009-06-17]. (ang.).
  7. Bob Supnik: CVAX. The Computer History Simulation Project, 24 lutego 2008. [dostęp 2009-06-17]. (ang.).
  8. Michael W. Davidson: Steal the best. Florida State University, 3 marca 2004. [dostęp 2009-06-17]. (ang.). Cytat w języku rosyjskim: (ros.) СВАКС... Когда вы забатите довольно воровать настоящий лучший.
  9. VAX Systems: A letter from Jesse Lipcon.
  10. Dosłownie oznacza, że instrukcja zaczęła być wykonywana w momencie przerwania, i należy wznowić jej wykonywanie w momencie powrotu z procedury obsługi przerwania.
  11. Przerwania o niższym priorytecie nie są obsługiwane.
  12. http://www.osdata.com/topic/language/asm/register.htm#processorflags.
  13. Mark Smotherman: Who are the Computer Architects?. 2008-07-19. [dostęp 2008-09-30]. (ang.).
  14. RAL Informatics Report 1984-85. [dostęp 2007-10-15].
  15. Varga Ákos Endr: The KFKI TPA series: much more than just „clones”... [dostęp 2009-06-17]. (ang.).
  16. http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/85/16907/00778981.pdf?temp=x