Obsah
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
5. Architektura série IBM System/360
6. EBCDIC – dinosaurus, který zapomněl zemřít
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).
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 |
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.
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).
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).
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 R0 až R15 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.
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.
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ě).
–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 |
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
- Mainframe family tree and chronology
http://www-03.ibm.com/…ame_FT1.html - 704 Data Processing System
http://www-03.ibm.com/…e_PP704.html - 705 Data Processing System
http://www-03.ibm.com/…e_PP705.html - The IBM 704
http://www.columbia.edu/…ory/704.html - IBM Mainframe album
http://www-03.ibm.com/…e_album.html - Mainframe computer
http://en.wikipedia.org/…ame_computer - IBM mainframe
http://en.wikipedia.org/…BM_mainframe - IBM 700/7000 series
http://en.wikipedia.org/…/7000_series - IBM System/360
http://en.wikipedia.org/…M_System/360 - IBM System/370
http://en.wikipedia.org/…M_System/370 - IBM Floating Point Architecture
http://en.wikipedia.org/…Architecture - Extended Binary Coded Decimal Interchange Code
http://en.wikipedia.org/wiki/EBCDIC - 25 let ÚVT MU v Brně – Technika: Sálové počítače
http://www.ics.muni.cz/…ocitace.html - IBM System/360 (1964)
http://www.computermuseum.li/…360-1964.htm - Mainframe Museum ‚Where we started‘
http://www.techsystemsps.com/…e-Museum.htm - 360 Assembly
http://en.wikibooks.org/…360_Assembly - 360 Assembly/360 Architecture
http://en.wikibooks.org/…Architecture - ASCII/EBCDIC Conversion Table
http://docs.hp.com/…/apcs01.html - EBCDIC
http://www.hansenb.pdx.edu/…s/ebcdic.php - EBCDIC tables
http://home.mnet-online.de/…ic/cc_en.htm - The Mainframe Blog
http://mainframe.typepad.com/…nal_mai.html - IBM Tightens Stranglehold Over Mainframe Market Gets Hit with Antitrust Complaint in Europe
http://www.ccianet.org/…Europe.shtml - Lectures in the History of Computing: Mainframes
http://www.computinghistorymuseum.org/…omputers.ppt - 36-bit
http://en.wikipedia.org/…_word_length - 36bit.org
http://www.36bit.org/