Obsah
1. Mikroprocesory s architekturou ARM
3. Od projektu RISC I k mikroprocesorům ARM
4. Základní technické parametry mikroprocesorů ARM
5. Výpočetní výkon mikroprocesorů ARM
6. Výpočetní výkon je však jen jedním z důležitých parametrů
7. Instrukční sada v pracovním režimu ARM
1. Mikroprocesory s architekturou ARM
V dnešní části snad nikdy nekončícího :) seriálu o architekturách počítačů si popíšeme další typ mikroprocesorů s architekturou RISC (Reduced Instruction Set Computers). Jedná se o mikroprocesory ARM, jejichž historie vzniku sice sahá až do první poloviny osmdesátých let minulého století, ovšem moderní varianty těchto čipů se dodnes používají v mnoha různých elektronických zařízeních; dokonce můžeme v některých oblastech sledovat prudce zvýšený zájem o použití těchto čipů, a to i u společností, které se v minulosti spoléhaly především na mikroprocesory s odlišnou architekturou (řada i386 doplněná o x86_64 apod.). Mezi jednu z největších předností čipů ARM patří nízká energetická náročnost a taktéž to, že větší a bohatší firmy si mohou zakoupit licenci na použití jádra mikroprocesorů ARM ve svých integrovaných obvodech, kde lze (přímo na čipu) zkombinovat mikroprocesor s dalšími moduly, například GPU, řadičem sítě, řadičem LCD atd.
Obrázek 1: Osmibitový mikropočítač Acorn BBC Micro.
V současnosti se můžeme s integrovanými obvody obsahujícími jádro mikroprocesoru ARM setkat v celé řadě různých elektronických zařízení, počínaje (možná poněkud nadneseně řečeno) ovladačem výtahu přes různě výkonné smartphony, tablety, kapesní herní konzole, netbooky až po, což je možná na první pohled poněkud překvapivé, různé typy serverů určených zejména pro nasazení do dnes populárních cloudů. U všech těchto zařízení se ukazuje být velkou předností poměrně malá energetická náročnost mikroprocesorů ARM, a to i v případě serverů, protože s tím, jak cena za hardware obecně postupně klesá, tak současně i celosvětově stoupá cena za elektřinu, která se postupně stává poměrně zásadním faktorem při provozování serverovny či cloudového centa (i když je veřejným tajemstvím, že ve skutečnosti vypadá celý slavný „cloud“ nějak takto :-).
Obrázek 2: Dobový plakát s počítačem Acorn BBC Micro.
2. Vznik mikroprocesorů ARM
Jak jsem se již zmínil v předchozí kapitole, mají mikroprocesory ARM, či možná poněkud lépe řečeno procesory s architekturou ARM, za sebou poměrně dlouhý vývoj, který začal již v první polovině osmdesátých let minulého století. Celá historie vlastně začala ve společnosti, kterou si dnes s informatikou ani příliš nespojujeme. Jednalo se o britskou BBC, jež na počátku osmdesátých let minulého století, tedy zhruba v době kralování počítačů firmy Sinclair na britských ostrovech, chtěla vytvořit počítač vhodný pro výuku, který by bylo možné rozšířit jak mezi školy, tak i na právě vznikající trh s domácími osmibitovými mikropočítači. Ovšem vzápětí se ukázalo, že samotná BBC nemá prostředky na to, aby sama v rozumném čase navrhla a následně masově vyráběla počítač, který by mohl svými parametry i cenou konkurovat domácím osmibitovým počítačům vyráběným specializovanými firmami, které právě začaly poměrně překotným způsobem vznikat (popř. se jednalo o divize již zavedených technologických firem). Z tohoto důvodu BBC vypsala tendr, z něhož nakonec vyšla vítězně firma Acorn Computers z Cambridge.
Obrázek 3: Programovací jazyk BBC BASIC byl portován dokonce i na osobní počítače PC s nainstalovaným operačním systémem Microsoft Windows.
Výsledkem spolupráce společnosti BBC s firmou Acorn Computers byly nejdříve počítače nazvané Acorn BBC Micro vybavené mj. i programovacím jazykem nesoucím název BBC BASIC. Jednalo se, resp. stále se jedná, o velmi rozšířený dialekt BASICu, který je dnes dostupný na několika desítkách historických i současných platforem (samotný interpret byl totiž přepsán z assembleru do portabilního C a C++). Počítače Acorn BBC Micro byly vybavené levným a ve své době i dostatečně výkonným osmibitovým mikroprocesorem MOS 6502. Tento procesor výkonově dostačoval pro jednodušší úlohy naprogramované v BASICu či ve strojovém kódu (hry), ovšem společně se snahou o vytvoření operačního systému s grafickým uživatelským rozhraním se ukázalo, že výkon osmibitového mikroprocesoru nebude pro tyto účely dostatečný. Nyní stála společnosti Acorn na určitém rozcestí: buď mohla pro své novější počítače použít některý 16/32bitový mikroprocesor nabízený dalšími firmami (Motorola 68000, Intel 80×86), nebo se mohla pokusit navrhnout a implementovat procesor vlastní. Nakonec bylo rozhodnuto o návrhu vlastního mikroprocesoru (což bylo možná poněkud riskantní), ale díky velmi dobře navržené architektuře se tyto nové procesory – ARM – rozšířily a začaly se těšit stále rostoucí popularitě.
Obrázek 4: Screenshot obrazovky původního BBC BASICu spuštěného v emulátoru počítače Acorn BBC Micro.
3. Od projektu RISC I k mikroprocesorům ARM
Při návrhu nového typu mikroprocesoru, který měl být pojmenovaný ARM 1, se jeho tvůrci Steve Furber a Sophie Wilson nejprve zaměřili na studium publikací o konstrukci mikroprocesorů, které byly v osmdesátých letech dostupné. Nakonec se nechali inspirovat velmi elegantní a současně i poměrně jednoduchou architekturou RISC I. O projektu RISC I, který vznikl na univerzitě v Berkeley, jsme se v tomto seriálu již zmiňovali, konkrétně se jednalo o část číslo 147. Připomeňme si, že konečný návrh architektury RISC I byl zveřejněn již v roce 1981 a způsobil mezi lidmi zabývajícími se návrhem a konstrukcí počítačů velký zájem, protože se tvůrcům RISCu I (vývojový tým se navíc skládal převážně ze studentů) podařilo na jediném čipu s přibližně 44 tisíci tranzistory a 31 instrukcemi dosáhnout výpočetního výkonu VAXu 11/780 (5 MHz).
Obrázek 5: Osobní počítač firmy Acorn, který byl vybavený mikroprocesorem ARM s architekturou RISC.
Navíc se RISC I mohl hravě srovnávat s v té době nejpoužívanějšími 16ti a 32bitovými mikroprocesory typu Motorola 68000 či Intel 8086 (čip Intel 80286 byl komerčně dostupný až o rok později, ale i ten nijak výkonově nevynikal nad architekturou RISC I ). Steve Furber a Sophie Wilson si řekli, že pokud dokáže skupina studentů a několik profesorů vyrobit čip minimálně srovnatelný s výrobky zavedených profesionálních firem, neměla by s tím mít větší problémy ani firma Acorn, samozřejmě za předpokladu, že se jí podaří navrhnout mikroprocesor typu RISC, který bude implementačně jednoduchý a přitom díky velkému množství pracovních registrů a víceřezové pipeline i dostatečně výkonný. Tyto myšlenky byly realizovány v čipu ARM 1, v němž můžeme vidět jak inspiraci v RISC I, tak i v konkurenčních mikroprocesorech MIPS. Velkým rozdílem však je způsob řešení problematiky podmíněných skoků, který je v případě ARM odlišný (a to dosti podstatným způsobem) od řešení, ke kterému se uchýlili konstruktéři jiných typů mikroprocesorů typu RISC.
Obrázek 6: Hra Zarch od známého programátora Davida Brabena (který je spoluautorem slavné hry Elite) pro počítač Acorn Archimedes.
4. Základní technické parametry mikroprocesorů ARM
Čipy ARM 1 byly založeny na pipeline se třemi řezy rozdělujícími vykonání každé instrukce do tří fází: fetch (načtení operačního kódu), decode (dekódování a příprava operandů) a execute (vykonání instrukce a zpětný zápis). Interní i externí datová sběrnice měly šířku 32 bitů a i všechny instrukce v instrukční sadě ARM 1 měly tutéž šířku 32 bitů. Díky tomu se zjednodušila řídicí logika v čipu, navíc bylo možné měnit obsah čítače instrukcí PC (r15) již ve chvíli, kdy se vykonávala fáze decode (výjimku samozřejmě tvořily skoky). Vzhledem k tomu, že procesory s architekturou RISC používají při přístupu do operační paměti pouze instrukce typu Load a Store, musí být tyto čipy vybaveny poměrně velkým počtem pracovních registrů. V případě ARM 1 bylo na čipu umístěno celkem 37 registrů, z nichž každý měl pevnou šířku 32 bitů. Některé registry byly pracovní, jiné měly speciální význam, například v nich byly uloženy různé bitové příznaky. Zajímavé je, že namísto registrových oken použitých u jiných procesorů typu RISC se v případě ARM 1 objevuje rozdělení registrů do skupin, podle toho, v jakém stavu se mikroprocesor v daném okamžiku nacházel.
Obrázek 7: Jedna z alternativ k ARM: mikroprocesor s instrukční sadou MIPS. Čipy obsahující jádra těchto RISCových mikroprocesorů se v současnosti používají v mnoha vestavěných zařízeních, například přehrávačích videa, routerech atd. I když se jedná o málo známou skutečnost, patří mikroprocesory MIPS mezi jedny z nejrozšířenějších typů procesorů současnosti a možná i překonávají v celkovém počtu prodaných kusů architekturu i386/x86_64.
První testovací várka mikroprocesorů ARM 1 byla dokončena 26.4.1985. Traduje se, že hned první série těchto čipů fungovala bez chyby, a to dokonce bez nutnosti průběžného testování při výrobě. Vzhledem k tomu, že se jednalo o čipy určené pouze pro demonstrační účely, nesetkáme se s nimi v žádných historických počítačích. Ovšem společnosti Acorn výpočetní výkon i další vlastnosti čipu ARM 1 ukázaly, že se jedná o správnou cestu vývoje, takže již v roce 1986 spatřil světlo světa mikroprocesor ARM 2. Ten se od svého předchůdce lišil především přidáním hardwarové násobičky, která byla, jak je ostatně u procesorů s architekturou RISC zvykem, oddělena od vlastní aritmeticko-logické jednotky a pracovala nezávisle a paralelně s ALU. Mezi další vylepšení patřilo zvýšení hodinové frekvence na 8 MHz, která již například stačila na to, aby mikroprocesor dokázal programově a v reálném čase zobrazit jednodušší 3D scény do framebufferu s rozlišením přibližně 640×400 pixelů vykreslené s využitím trojúhelníků s flat stínováním (a v případě velké snahy i Gouraudovým stínováním).
Obrázek 8: Maska použitá při výrobě mikroprocesoru RISC I.
Zdroj: C.E. Sequin and D.A.Patterson: Design and Implementation of RISC I
5. Výpočetní výkon mikroprocesorů ARM
V předchozí kapitole jsme se zmínili o poměrně vysokém výpočetním výkonu čipu ARM 2. Pojďme si nyní pro zajímavost tento výpočetní výkon porovnat s konkurenčními čipy instalovanými do tehdy populárních osobních počítačů i některých pracovních stanic. Prvním z těchto čipů je Intel 80286, který na stejné hodinové frekvenci 8 MHz dosahoval výpočetního výkonu přibližně 1,2 MIPS (špičkově 1,5 MIPS) pro 16bitové operace, přičemž 32bitové operace nebyly nativně podporovány. Konkurenčním čipem byl taktéž slavný mikroprocesor Motorola 68000 (68k), který na shodné frekvenci 8 MHz měl výpočetní výkon přibližně 1 MIPS pro 16bitové operace (2 MIPS v syntetických testech) a 1/2 MIPS pro 32bitové operace. Naproti tomu dosahoval výpočetní výkon mikroprocesoru ARM 2 při použití 8 MHz hodin hodnoty 4 MIPS(!) což je mimochodem výpočetní výkon, kterého dosahoval mikroprocesor Motorola 68020, ovšem při použití hodinové frekvence 20 MHz a nikoli jen 8 MHz:
CPU | Frekvence | MIPS 16bit | MIPS 32bit |
---|---|---|---|
Intel 80286 | 8 MHz | 1,2 | × |
Motorola 68000 | 8 MHz | 1,0 | 0,5 |
ARM 2 | 8 MHz | × | 4,0 |
Obrázek 9: Mikroprocesor řady UltraSPARC – jednalo se o alternativu k procesorům ARM v segmentu výkonných desktopů a serverů.
6. Výpočetní výkon je však jen jedním z důležitých parametrů
Jak již možná tušíte, není poměrně velký výpočetní výkon jediným kladem čipů ARM 2. Druhou předností je malý počet tranzistorů nutných pro implementaci čipu. Pokračujme tedy v porovnávání. Mikroprocesor Motorola 68000 byl realizován s využitím přibližně 68 000 tranzistorů, z čehož se taktéž podle některých zdrojů odvozuje jeho číselné označení (spíše je to však náhoda a označení odkazuje na vůbec první mikroprocesor Motoroly – čip M6800). Na konstrukci mikroprocesoru Intel 80286 firma Intel skutečně nešetřila, protože na jeho čip umístila celých 134 000 tranzistorů. A jak je na tom výpočetně mnohem výkonnější mikroprocesor ARM 2? Jeho konstruktéři si vystačili s pouhými přibližně 30 000 tranzistory (!), z čehož nutně vyplývá, že tyto tranzistory byly mnohem lépe využity, než u obou předchozích čipů. Právě nízký počet tranzistorů nutných pro implementaci jádra ARM se stal jedním z důvodů malé spotřeby těchto mikroprocesorů na jedné straně a na straně druhé to umožnilo na jeden čip umístit vedle vlastního mikroprocesoru i další moduly, například GPU.
Na tomto místě možná není na škodu si připomenout, že mikroprocesor RISC I (ideový předchůdce čipů ARM) z roku 1980 obsahoval pouze 44 tisíc tranzistorů a přesto bylo na ploše čipu implementováno celkem sedmdesát osm 32bitových pracovních registrů. Jeho následovník RISC II byl dokonce implementován pouze s využitím 39000 tranzistorů, což je již porovnatelné s ARMy. Zajímavé je porovnání těchto čipů s typickým zástupcem architektury CISC, tj. procesory firmy Intel, především s osmibitovou řadou Intel 8008/8080, na níž navazuje řada šestnáctibitových mikroprocesorů Intel 80×86 a posléze i řada IA-64 s procesory Itanium:
Mikroprocesor | Bitů | Datum | Tranzistorů | Frekvence [MHz] | Šířka spojů [nm] |
---|---|---|---|---|---|
4004 | 4 | 1971 | 2 250 | 0.1 | 10 000 |
8008 | 8 | 1972 | 3 500 | 0.2 | 10 000 |
8080 | 8 | 1974 | 6 000 | 2.0 | 6 000 |
8088 | 16/8 | 1979 | 29 000 | 8.0 | 3 000 |
8086 | 16 | 1978 | 29 000 | 8.0 | 3 000 |
80286 | 16 | 1982 | 134 000 | 12.5 | 1 500 |
80386 | 32 | 1985 | 275 000 | 20.0 | 1 500 |
80486 | 32 | 1989 | 1 200 000 | 25.0 | 1 000 |
Pentium | 32 | 1993 | 3 100 000 | 66.0 | 800 |
Pentium | 32 | 1994 | 3 300 000 | 75.0 | 600 |
Pentium | 32 | 1995 | 3 300 000 | 120.0 | 350 |
Pentium II | 32 | 1997 | 7 500 000 | 233.0 | 350 |
Pentium II | 32 | 1998 | 7 500 000 | 300.0 | 250 |
Pentium III | 32 | 1999 | 9 500 000 | 450.0 | 250 |
Pentium III | 32 | 2000 | 28 000 000 | 533.0 | 180 |
Pentium 4 | 32 | 2000 | 42 000 000 | 1500.0 | 180 |
Pentium 4 | 32 | 2002 | 55 000 000 | 2200.0 | 130 |
Pentium 4 | 32 | 2004 | 125 000 000 | 2800.0 | 90 |
Pentium 4 | 32 | 2006 | 188 000 000 | 3200.0 | 65 |
Itanium | 64 | 2001 | 25 000 000 | 733.0 | 180 |
Itanium 2 | 64 | 2003 | 220 000 000 | 900.0 | 180 |
Itanium 2 | 64 | 2004 | 592 000 000 | 1300.0 | 130 |
Itanium 2 | 64 | 2006 | 1 720 000 000 | 1400.0 | 90 |
Core 2 | 64 | 2006 | 291 000 000 | 1860.0 | 65 |
Core 2 | 64 | 2008 | 800 000 000 | 45 |
Z této tabulky je patrné, že první generace 32bitových mikroprocesorů ARM či RISC I/II byla implementována zhruba se stejným počtem tranzistorů, jako šestnáctibitový mikroprocesor 8086 s mnohem menším výpočetním výkonem.
7. Instrukční sada v pracovním režimu ARM
Mikroprocesory ARM byly zpočátku vybaveny jedinou instrukční sadou, v níž se nacházely instrukce o konstantní šířce 32 bitů. Vzhledem k tomu, že šířka externí datové sběrnice byla rovna taktéž 32 bitům a instrukce musely být zarovnané na celá slova, znamenalo to, že se celá instrukce vždy načetla jedinou operací, což je velký rozdíl oproti typickým mikroprocesorům s architekturou CISC, u nichž je délka instrukcí proměnná a mnohdy může přesahovat hranici slov (což ve svém důsledku vedlo k nutnosti vytvoření takzvané „fronty instrukcí“, jejíž vlastnosti se mj. využívaly či spíše zneužívaly při tvorbě virů, které nešlo odhalit debuggerem). Tuto instrukční sadu lze na procesorech ARM používat dodnes a její největší předností je možnost uvést u každé instrukce podmínku, při jejímž splnění se má instrukce provést (podrobnosti si řekneme příště). Díky tomuto řešení je možné eliminovat velké množství skoků, jejichž provedení je samozřejmě problematické, a to nejenom na architektuře RISC, ale i na procesorech CISC.
8. Instrukční sada Thumb
I přes mnohé přednosti 32bitové instrukční sady ARM se však v některých případech projevují její nevýhody. Jedná se především o to, že použití 32bitových instrukcí může zmenšovat „hustotu“ kódu, což se projevuje větší délkou binárních souborů, větší pravděpodobností výpadku stránky z vyrovnávací paměti a taktéž (obecně) vyšší cenou za zařízení v případě, že je mikroprocesor použit ve funkci mikrořadiče (zde se již může projevit cena za každý ušetřený kilobajt paměti ROM/EPROM/Flash s programovým kódem). Z tohoto důvodu jsou procesory ARM patřící do novějších rodin vybaveny navíc další instrukční sadou pojmenovanou Thumb. Jedná se o instrukční sadu obsahující podmnožinu instrukcí vybranou na základě analýzy strojových programů generovaných překladači jazyků C a C++. Dále se v této instrukční sadě neobjevují bity určené pro podmíněné provádění instrukcí, což znamená, že je nutné se vrátit k použití podmíněných skoků. Na druhou stranu se však délka všech instrukcí zkrátila na šestnáct bitů, což dovoluje dosažení větší „hustoty“ kódu.
Zavedení nové instrukční sady není v tomto případě tak složité, jak by se možná mohlo zdát, protože převod instrukce Thumb na původní instrukci ARM je záležitostí jednoduchého dekodéru, který může být například umístěn v interní paměti ROM či přímo „zadrátován“ na čipu. Jedná se tedy o řádově jednodušší technologii, než jaká je použita na procesorech x86 pro překlad CISC instrukcí do sekvence interních RISC-like instrukcí (zde se může jediná instrukce CISC rozložit na sekvenci několika instrukcí RISC, popř. dokonce na celý podprogram). A ta nejlepší zpráva na konec – s využitím speciální instrukce skoku je možné se přepínat mezi instrukční sadou Thumb a původní instrukční sadou ARM, a to dokonce i v rámci jednotlivých funkcí. Programátor či překladač tedy může využívat předností obou instrukčních sad. Na závěr poznamenejme, že ještě existuje druhá verze instrukční sady Thumb 2, v níž je možné kombinovat 32bitové a 16bitové instrukce. I tyto instrukční sady si podrobněji popíšeme v následujících částech tohoto seriálu.
9. Odkazy na Internetu
- Processors – ARM
http://www.arm.com/products/processors/index.php - The ARM Instruction Set
http://simplemachines.it/doc/arm_inst.pdf - ARM Architecture (Wikipedia)
http://en.wikipedia.org/wiki/ARM_architecture - BBC BASIC
http://www.bbcbasic.co.uk/bbcbasic.html - BBC BASIC
http://mdfs.net/Software/BBCBasic/ - BBC BASIC (Z80) for the ZX Spectrum
http://mdfs.net/Software/BBCBasic/Spectrum/ - BBC BASIC (Wikipedia CZ)
http://en.wikipedia.org/wiki/BBC_BASIC - MIPS-3D® ASE
http://www.mips.com/products/architectures/mips-3d-ase/ - An introduction to SPARC's SIMD offerings
http://mikeburrell.wordpress.com/2007/12/14/an-introduction-to-sparcs-simd-offerings/ - MIPS64TM Architecture for Programmers Volume IV-c: The MIPS-3DTM Application-Specific Extension to the MIPS64TM
http://www.weblearn.hs-bremen.de/risse/RST/docs/MIPS/MD00099–2B-MIPS3D64-AFP-01.11.pdf - Visual Instruction Set
http://www.enotes.com/topic/Visual_Instruction_Set - NEON
http://www.arm.com/products/processors/technologies/neon.php - Architecture and Implementation of the ARM Cortex-A8 Microprocessor
http://www.design-reuse.com/articles/11580/architecture-and-implementation-of-the-arm-cortex-a8-microprocessor.html - Multimedia Acceleration eXtensions (Wikipedia)
http://en.wikipedia.org/wiki/Multimedia_Acceleration_eXtensions - AltiVec (Wikipedia)
http://en.wikipedia.org/wiki/AltiVec - Visual Instruction Set (Wikipedia)
http://en.wikipedia.org/wiki/Visual_Instruction_Set - MAJC (Wikipedia)
http://en.wikipedia.org/wiki/MAJC - MDMX (Wikipedia)
http://en.wikipedia.org/wiki/MDMX - MIPS Multiply Unit
http://programmedlessons.org/AssemblyTutorial/Chapter-14/ass14_3.html - Silicon Graphics Introduces Enhanced MIPS Architecture
http://bwrc.eecs.berkeley.edu/CIC/otherpr/enhanced_mips.html - MIPS-3D (Wikipedia)
http://en.wikipedia.org/wiki/MIPS-3D - MIPS Technologies, Inc. announces new MIPS-3D technology to provide silicon-efficient 3D graphics acceleration
http://www.design-reuse.com/news/2057/mips-mips-3d-technology-silicon-efficient-3d-graphics-acceleration.html - MIPS-3D Built-in Function (gcc.gnu.org)
http://gcc.gnu.org/onlinedocs/gcc/MIPS_002d3D-Built_002din-Functions.html - Baha Guclu Dundar:
Intel MMX, SSE, SSE2, SSE3/SSSE3/SSE4 Architectures - SSE (Streaming SIMD Extentions)
http://www.songho.ca/misc/sse/sse.html - Timothy A. Chagnon: SSE and SSE2
http://www.cs.drexel.edu/~tc365/mpi-wht/sse.pdf - Intel corporation: Extending the Worldr's Most Popular Processor Architecture
http://download.intel.com/technology/architecture/new-instructions-paper.pdf - SIMD architectures:
http://arstechnica.com/old/content/2000/03/simd.ars/ - Tour of the Black Holes of Computing!: Floating Point
http://www.cs.hmc.edu/~geoff/classes/hmc.cs105…/slides/class02_floats.ppt - 3Dnow! Technology Manual
AMD Inc., 2000 - Intel MMXTM Technology Overview
Intel corporation, 1996 - MultiMedia eXtensions
http://softpixel.com/~cwright/programming/simd/mmx.phpi - AMD K5 („K5“ / „5k86“)
http://www.pcguide.com/ref/cpu/fam/g5K5-c.html - Sixth Generation Processors
http://www.pcguide.com/ref/cpu/fam/g6.htm - Great Microprocessors of the Past and Present
http://www.cpushack.com/CPU/cpu1.html - Very long instruction word (Wikipedia)
http://en.wikipedia.org/wiki/Very_long_instruction_word - CPU design (Wikipedia)
http://en.wikipedia.org/wiki/CPU_design - Control unit (Wikipedia)
http://en.wikipedia.org/wiki/Control_unit - Cray History
http://www.cray.com/About/History.aspx?404;http://www.cray.com:80/about_cray/history.html - Cray Historical Timeline
http://www.cray.com/Assets/PDF/about/CrayTimeline.pdf - Computer Speed Claims 1980 to 1996
http://homepage.virgin.net/roy.longbottom/mips.htm - Superpočítače Cray
http://www.root.cz/clanky/superpocitace-cray/ - Superpočítače Cray (druhá část)
http://www.root.cz/clanky/superpocitace-cray-druha-cast/ - Superpočítače Cray (třetí část)
http://www.root.cz/clanky/superpocitace-cray-treti-cast/ - Superpočítače Cray (čtvrtá část)
http://www.root.cz/clanky/superpocitace-cray-ctvrta-cast/ - Superpočítače Cray (pátá část): architektura Cray X-MP
http://www.root.cz/clanky/superpocitace-cray-pata-cast-architektura-pocitace-cray-x-mp-a-jeho-pouziti-ve-filmovem-prumyslu/