Sálové počítače série IBM 1400 a System/360

10. 11. 2009
Doba čtení: 10 minut

Sdílet

V dnešní části seriálu o historii počítačů si popíšeme základní architekturu sálových počítačů série IBM 1400 a IBM System/360. Počítače těchto sérií se (každý svým způsobem) zapsaly do historie výpočetní techniky. Samozřejmě nezapomeneme ani na jeden ze symbolů počítačů System/360 – známé kódování EBCDIC.

Obsah

1. Počítače série IBM 1400

2. Technologie a programovací jazyky použité u počítačů série IBM 1400

3. Formát dat zpracovávaných počítači IBM 1400

4. Série IBM System/360

5. Architektura série IBM System/360

6. EBCDIC – dinosaurus, který zapomněl zemřít

7. Vlastnosti kódu EBCDIC

8. Odkazy na Internetu

1. Počítače série IBM 1400

V předchozím článku jsme si popsali sálové počítače firmy IBM řady 70× a 70×x. Jednalo se o počítače optimalizované buď pro provádění vědeckotechnických výpočtů (modely 704, 709, 7090, 7094 atd.) nebo pro hromadné zpracování dat (modely 702, 705, 7080). Největší rozdíl mezi řadou 70× a 70×x spočívá v odlišné technologii, která je použitá pro implementaci aritmeticko-logické jednotky i řadiče procesoru – zatímco u řady 70× byly logické členy (hradla, klopné obvody) vytvořeny pomocí elektronek, tak se u řady 70×x již používaly tranzistory, diody a pasivní elektronické součástky (diode-transistor logic, DTL).

ibm2

Obrázek 1: Část sálového počítače IBM 1401.

Firma IBM však na začátku šedesátých let minulého století nabízela i počítače, jejichž procesory zpracovávaly řetězce a číselné údaje proměnné délky (reprezentovaná různým způsobem, například v kódu 1 z 10 u děrných štítků a v BCD v případě uložení údajů do operační paměti), což je poměrně podstatný rozdíl oproti moderním mikroprocesorům, které zpracovávají numerické údaje zakódované binárně do slov pevné délky (například 16, 32 či 64 bitů) a zpracování řetězců buď není podporováno vůbec (RISC procesory) nebo pouze několika strojovými instrukcemi (architektura i386). Jedná se o počítače série 1400, které byly i přes výkonnostní rozdíly vzájemně kompatibilní (týká se to jak kompatibility aplikací, tak i kompatibility periferních zařízení):

Označení modelu Rok vzniku
IBM 1240 1963
IBM 1401 1959
IBM 1410 1960
IBM 1420 1962
IBM 1440 1962
IBM 1450 1968
IBM 1460 1963
IBM 7010 1962
ibm2

Obrázek 2: Zrekonstruovaný (nyní funkční) řídicí panel počítače IBM 1401.

Snaha o dosažení co nejvyšší míry kompatibility s počítači série IBM 1400 šla dokonce tak daleko, že některé mainframy řady IBM System/360, například model 30, bylo možné nakonfigurovat tak, aby dokázaly spouštět aplikace vytvořené pro řadu 1400. Vzhledem k tomu, že procesory počítačů IBM System/360 většinou obsahovaly mikrokód (viz též další kapitoly), bylo přepnutí do režimu kompatibility s počítači 1400 poměrně snadné a zůstal přitom zachován relativně vysoký výpočetní výkon. Emulace řady 1400 byla použita i u dalších mainframů firmy IBM, takže aplikace napsané pro IBM 1400 mnohdy beze změny fungovaly i několik desítek let (do některých musel být zásah proveden až kvůli „syndromu“ Y2K, což znamená, že mnohé tyto programy mohly beze změny pracovat i po dobu delší než 35 let!)).

2. Technologie a programovací jazyky použité u počítačů série IBM 1400

Při stavbě procesorů sálových počítačů IBM 1400 byla použita technologie DTL (tranzistory, diody a pasivní součástky) a operační paměť byla vytvořena na bázi feritové paměti, což znamená, že tyto počítače byly z technologického hlediska podobné minule popsané řadě IBM 70×x (u nejlevnějšího modelu řady IBM 1400 dosahovala kapacita operační paměti přesně 1400 slov, typická kapacita pak byla rovna 2K, 4K, 8K a 16K slov). V některých případech se dokonce oba sálové počítače používaly současně na jednom pracovišti. V tomto případě sloužil levnější a méně výkonný počítač IBM 1400 pro přípravu dat a naopak pro tvorbu tiskových sestav, zatímco výkonnější počítač řady IBM 70×x prováděl vlastní výpočty, třídění dat, jejich řazení atd.

Vzhledem k tomu, že procesory řady 1400 byly optimalizovány pro zpracování řetězců a decimálních čísel proměnné délky a také proto, že tyto počítače byly mj. určeny i pro vytváření různých tiskových sestav, byly na počítačích IBM 1400 používány především takové programovací jazyky, ve kterých se snadno pracovalo s řetězci. Jedná se například o Cobol a taktéž o jazyk RPG (Report Program Generator), který „přežil“, i když v poněkud modernější podobě, i do dnešních dnů, takže se s ním můžeme setkat i na soudobých mainframech. Později byly pro tyto počítače vytvořeny i překladače dalších programovacích jazyků, především Fortranu.

ibm2

Obrázek 3: Jedno velmi často používané periferní zařízení – řádková tiskárna IBM 1403. Mimochodem: právě tuto tiskárnu můžete vidět ve slavném filmu Dr. Divnoláska (Dr. Strangelove).

3. Formát dat zpracovávaných počítači IBM 1400

V předchozích dvou kapitolách jsme si řekli, že počítače série IBM 1400 zpracovávaly řetězce a číselné hodnoty proměnné délky. Jednotlivé číslice byly ukládány v kódu BCD (binary-coded decimal), tj. ve čtyřech bitech označovaných symboly 8, 4, 2 a 1 (tyto symboly samozřejmě odpovídají váze každého bitu). K těmto čtyřem bitům se přidávaly bity označované symboly A a B, jejichž nastavením bylo možné rozšířit repertoár zpracovávaných dat i o znaky a řídicí kódy (u samotných číslic byly bity A i B vždy nulové). K takto vzniklé šestici bitů se navíc automaticky přidával bit C nesoucí informaci o paritě (lichá parita použitá k detekci jednoduché chyby) a bit M, jehož hodnota udávala, zda se jedná o poslední číslici numerické hodnoty či poslední znak řetězce. Výsledný formát bajtů zpracovávaných počítačem IBM 1400 je následující:

C B A 8 4 2 1 M

Celou tabulku hodnot jednotlivých bitů i přiřazení těchto kombinací číslicím a znakům je dostupný na adrese http://en.wikipedia.org/wiki/IBM_1401#…. Povšimněte si, že příznak ukončení numerické hodnoty či řetězce (bit M) je součástí každého bajtu, což je poměrně velký rozdíl oproti formátu řetězců používaných například v céčku (ukončení znakem NUL, tj. nulovým bajtem; podporováno některými mikroprocesory) nebo řetězcům, kterým předchází bajt/slovo s uloženu délkou (některé Basicy, klasický Forth, Pascal atd., taktéž podporováno některými mikroprocesory, viz například prefixový kód REP u architektury i386).

4. Série IBM System/360

V roce 1964 firma IBM oznámila vznik nové série počítačů pojmenované System/360. Číslo „360“ v názvu této série naznačovalo, že se jedná o universální počítače, což znamenalo určitý odklon firmy IBM od návrhu počítačů specializovaných na určitý typ úloh (viz minule popisované počítače specializované buď na hromadné zpracování dat nebo na provádění vědeckotechnických výpočtů). Celá série System/360 původně zahrnovala šest vzájemně kompatibilních modelů, které se však od sebe odlišovaly jak cenou, tak i výpočetním výkonem (mezi nejvýkonnějším a nejméně výkonným modelem dosahoval poměr výpočetní rychlosti hodnoty téměř 25:1).

ibm2

Obrázek 4: Jeden z prvních modelů počítače série System/360.

Celá série IBM System/360 byla velmi úspěšná a, což je zajímavé – úspěch se dostavil ihned při zahájení prodeje, protože jen za první měsíc si některý z nabízených modelů objednalo téměř 1000 firem, což je s ohledem na rok vzniku poměrně vysoké číslo. Ukončení prodeje těchto počítačů se datuje do roku 1977 (jednalo se o model 195), ale i o mnoho let později byly aplikace naprogramované pro tyto stroje spouštěny například na mainframech série System/370, které svým uživatelům nabízely režim zpětné kompatibility. Aplikace bylo možné psát v mnoha různých programovacích jazycích, například Cobolu, Fortranu, ale také v obskurním, ale o to výkonnějším jazyce APL (více si řekneme v některém z dalších dílů tohoto seriálu).

ibm2

Obrázek 5: Jednotky pro ukládání programů a dat na magnetické pásky s možností automatického přetočení na hledaný blok (což je vlastnost, po níž jsme jako majitelé osmibitových počítačů vybavených kazetovými magnetofony, marně toužili).

5. Architektura série IBM System/360

Procesory počítačů System/360 zpracovávaly poměrně složité instrukce, protože se jednalo o klasickou architekturu CISC (v té době se věřilo, že komplexní instrukční sada pomůže programátorům překonat sémantickou propast mezi strojovým kódem popř. assemblerem a vyššími programovacími jazyky). Aby i jednodušší modely série System/360 mohly zpracovávat všechny instrukce, používaly jejich procesory mikrokód, pomocí něhož se složitější instrukce rozdělily na sérii jednodušších mikroinstrukcí (ty měly zcela jiný formát, protože se jimi přímo ovládaly jednotlivé bloky v procesoru – ALU, registry, interní sběrnice atd.). Jednalo se o 32bitovou architekturu se šestnácti 32bitovými registry označovanými jmény R0R15 a čtyřmi 64bitovými registry určenými pro práci s hodnotami uloženými ve formátu pohyblivé řádové čárky. Kromě pracovních registrů procesor obsahoval i PSW (processor status word), v němž byl uložen i čítač instrukcí PC, příznak práce v superuživatelském režimu atd.

ibm2

Obrázek 6: Úvodní stránka manuálu k assembleru počítačů System/360.

6. EBCDIC – dinosaurus, který zapomněl zemřít

S počítači System/360 je téměř nerozlučně spjato i kódování znaků podle EBCDIC, neboli Extended Binary Coded Decimal Interchange Code (kódováním je zde myšleno mapování mezi znaky, například písmenem „A“ a celým číslem reprezentovaným n-bitovým vektorem). Firma IBM toto kódování vytvořila v letech 1963–1964 v návaznosti na šestibitový kód využívaný u děrných štítků a použila ho právě u počítačů System/360. Vzhledem k velké popularitě těchto počítačů se kódování EBCDIC i přes jeho mnohé nevýhody (především v porovnání s kódováním ASCII) rozšířilo i na další počítače a jejich operační systémy, například OS/390, z/OS, OS/400 i některé počítačové systémy firem HP či Unisys. V předchozím textu bylo napsáno, že EBCDIC má v porovnání s dnes mnohem častěji používaným kódem ASCII několik nevýhod. Některé z těchto nevýhod si popíšeme v následující kapitole.

ibm2

Obrázek 7: Architektura počítačů System/360.

7. Vlastnosti kódu EBCDIC

EBCDIC je založen na reprezentaci znaků pomocí osmi bitů, což představuje rozdíl oproti sedmibitovému ASCII, i když celkový počet znaků (včetně řídicích kódů) je zhruba stejný – pokrývá totiž potřeby anglického jazyka. Alfanumerické i další znaky však nejsou v tabulce všech 256 kombinací umístěny v přirozené posloupnosti (26 znaků velké abecedy, 26 znaků malé abecedy atd.), ale spíše po skupinách čítajících devět či deset znaků, což je patrné z části této tabulky vypsané na konci kapitoly (rozdíl mezi malými a velkými písmeny však spočívá v negaci jednoho bitu, stejně jako v případě ASCII). Nepravidelnost při tvorbě tabulky představovala pro programátory problém, protože například nebylo jednoduché vygenerovat posloupnost všech písmen, nešlo jednoduše zjistit, zda je nějaký znak platným písmenem (v ASCII záležitost dvou porovnání), EBCDIC se dal hůře zapamatovat (kupodivu i dnes je alespoň základní znalost ASCII pro programátory velkou výhodou) atd.

Navíc se při požadavku na rozšíření základní tabulky o další znaky (například písmen s akcenty, řeckou abecedu, azbuku atd.) musely tyto znaky přidávat na volné pozice rozmístěné po celé tabulce, na rozdíl od sedmibitového kódu ASCII, který bylo možné celkem jednoduše rozšířit přidáním osmého bitu – ostatně přesně tímto způsobem vzniklo například populární kódování Kamenických, kódování dle normy ISO 8859–2 i mnoho dalších kódování, u nichž byl prakticky vždy zachován význam prvních 128 kódů odpovídajících ASCII (jednou z výjimek je kódování použité u jehličkových tiskáren Epson, u nichž se některé znaky s akcenty vkládaly do prvních 128 pozic na místo hranatých závorek a několika dalších znaků, které se v běžně psaném textu vyskytují v malém množství). Z výše zmíněných důvodů nebylo kódování EBCDIC mezi programátory příliš oblíbeno, i když se ho firma IBM kvůli zachování zpětné kompatibility drží prakticky až do dnešní doby (více informací, které k tomu vedly, si řekneme příště).

bitcoin_skoleni

–1 –2 –3 –4 –5 –6 –7 –8 –9 -A -B -C -D -E -F
8– a b c d e f g h i
9– j k l m n o p q r
A- ~ s t u v w x y z
B- ^ [ ]
C- { A B C D E F G H I
D- } J K L M N O P Q R
E- \ S T U V W X Y Z
F- 0 1 2 3 4 5 6 7 8 9
ibm2

Obrázek 8: Některá úložná zařízení sálových počítačů firmy IBM – v pozadí jednotky magnetických pásek, v popředí diskové jednotky.

8. Odkazy na Internetu

  1. Mainframe family tree and chronology
    http://www-03.ibm.com/…ame_FT1.html
  2. 704 Data Processing System
    http://www-03.ibm.com/…e_PP704.html
  3. 705 Data Processing System
    http://www-03.ibm.com/…e_PP705.html
  4. The IBM 704
    http://www.columbia.edu/…ory/704.html
  5. IBM Mainframe album
    http://www-03.ibm.com/…e_album.html
  6. Mainframe computer
    http://en.wikipedia.org/…ame_computer
  7. IBM mainframe
    http://en.wikipedia.org/…BM_mainframe
  8. IBM 700/7000 series
    http://en.wikipedia.org/…/7000_series
  9. IBM System/360
    http://en.wikipedia.org/…M_System/360
  10. IBM System/370
    http://en.wikipedia.org/…M_System/370
  11. IBM Floating Point Architecture
    http://en.wikipedia.org/…Architecture
  12. Extended Binary Coded Decimal Interchange Code
     http://en.wikipedia.org/wiki/EBCDIC
  13. 25 let ÚVT MU v Brně – Technika: Sálové počítače
     http://www.ics.muni.cz/…ocitace.html
  14. IBM System/360 (1964)
    http://www.computermuseum.li/…360-1964.htm
  15. Mainframe Museum ‚Where we started‘
    http://www.techsystemsps.com/…e-Museum.htm
  16. 360 Assembly
    http://en.wikibooks.org/…360_Assembly
  17. 360 Assembly/360 Architecture
    http://en.wikibooks.org/…Architecture
  18. ASCII/EBCDIC Conversion Table
    http://docs.hp.com/…/apcs01.html
  19. EBCDIC
    http://www.hansenb.pdx.edu/…s/ebcdic.php
  20. EBCDIC tables
    http://home.mnet-online.de/…ic/cc_en.htm
  21. The Mainframe Blog
    http://mainframe.typepad.com/…nal_mai.html
  22. IBM Tightens Stranglehold Over Mainframe Market Gets Hit with Antitrust Complaint in Europe
     http://www.ccianet.org/…Europe.shtml
  23. Lectures in the History of Computing: Mainframes
     http://www.computinghistorymuseum.org/…omputers.ppt
  24. 36-bit
    http://en.wikipedia.org/…_word_length
  25. 36bit.org
    http://www.36bit.org/

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.