Type a search term to find related articles by LIMS subject matter experts gathered from the most trusted and dynamic collaboration tools in the laboratory informatics industry.
Typ | |
---|---|
Premiera |
1977 |
Procesor |
VAX (CISC, pamięć wirtualna) |
System operacyjny |
VAX – architektura 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).
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 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.
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.
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 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ł na bazie pojedynczej płyty procesorowej 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 na jednym modelu programowym 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 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 |
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 | 0x00000000 – 0x3fffffff
|
P1 | 0x40000000 – 0x7fffffff
|
S0 | 0x80000000 – 0xbfffffff
|
S1 | 0xc0000000 – 0xffffffff
|
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.
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 |
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 |
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.
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).
Istniały liczne „klony”, zarówno autoryzowane, jak i pirackie. Wśród nich wymienić warto: