Klony a procesory

V šerém dávnověku mikroprocesorů byl i ten konkurenční boj takový jiný…

V kurzu assembleru jsem se dostal do bodu, kde začnu popisovat Z80. Nejjednodušší by bylo hezky po programátorsku odkázat na díly o procesoru 8080 a říct: „Přesně takhle, jen jiná syntaxe, a tohle je navíc!“ Asi to nějak zmíním, ale instrukce přeci jen proberu trošku jinak.

Každopádně mě přemýšlení nad tím, jak popsat vznik Z80, přivedlo k zajímavé věci z historie procesorů a integrovaných obvodů, která dneska už může znít docela neobvykle.

Zilog_Z80

První mikroprocesor, a to je už notoricky známé, byl Intel 4004. Intel ho vyráběl ve třech verzích – tedy navenek. Uvnitř to byl stejný čip, lišilo se jen pouzdro – plastické, keramické, nebo plasto-keramické.

Kromě Intelu ale vyráběl stejný procesor i National Semiconductor (NatSemi) pod označením INS4004. Stal se tak druhým zdrojem (second source).

„Druhý zdroj“ byl u integrovaných obvodů poměrně běžný koncept. Například známou TTL řadu 74xx představil výrobce Texas Instruments (obvody nesly označení SN74xx). Jenže kromě TI začaly vyrábět funkčně ekvivalentní obvody i další výrobci – namátkou Fairchild, zmíněný NatSemi, Philips, za železnou oponou to byla například Tesla (MH74xx), polská Unitra (UCY74xx), vyráběly se i v Maďarsku (Tungsram), Rumunsku i ve východním Německu (VEB Kombinat Mikroelektronik Erfurt – KME, např. německý D174 byl ekvivalent SN7474). Většinou se výrobci snažili, aby stejně označený obvod měl stejné parametry jako vzor, popřípadě „o něco lepší“, například aby byl rychlejší, měl nižší spotřebu, větší teplotní toleranci atd.

Stejný princip tehdy fungoval i u procesorů. První osmibitový mikroprocesor 8008 tak kromě Intelu vyráběl i Siemens (SAB8008), Microsystems International (MF8008) a východoněmecký KME (U808D).

Ekvivalentní procesory vznikaly buď oficiálně – licencováním, nebo trošku černějším způsobem. Nepředpokládám, že Intel prodal licenci na procesor 8080 Tesle. Podle toho, co vím, vznikaly „východní“ mikroprocesory pomocí zpětného inženýrství pokoutně dovezených čipů, studia datasheetů a trošky průmyslové špionáže. Výsledky nebyly někdy stoprocentně shodné, například se vypráví (já nemohu ověřit), že východoevropské ekvivalenty měly občas vyšší spotřebu a horší dynamické parametry, takže například nešly tak snadno přetaktovat, někdy zase naopak byly v některých parametrech lepší.

Každopádně už zmíněný procesor 8080A, vyvinutý Intelem, má co do ekvivalentů velmi pestrou historii. Dodnes známý a existující výrobce AMD vytvořil vlastní klon 8080A pomocí zpětného inženýrství a pod označením 9080A jej začal nabízet v roce 1975. V roce 1976 podepsal AMD s Intelem dohodu, a stal se autorizovaným „druhým zdrojem“.

Svoje 8080A vyráběli například Japonci (Mitsubishi M5L8080A, NEC D8080, OKI MSM8080A, Toshiba TMP9080A), Rusové (580VM80 – jejich značení je legendárně zmatečné), Polsko i ČSSR (MCY7880, resp. MHB8080A), NatSemi, NTE, Siemens, Signetics i Texas Instruments. Dovedete si představit, že by dneska Core 2 Duo vyrábělo kromě Intelu dvanáct dalších výrobců a nabízeli ho pod svými značkami?

Intel pak nabídl vylepšenou variantu 8085A. Samozřejmě i tahle varianta měla spoustu „druhých zdrojů“ – AMD AM8085A, NEC D8085A, Mitsubishi M5L8085A, Siemens SAB8085A, Toshiba TMP8085A… V tehdejším SSSR se vyráběl ekvivalent pod označením IM1821VM85A (jasný, ne?)

Ekvivalent vyráběl i výrobce OKI pod označením MSM80C85A – jejich verze měla výrazně nižší spotřebu než originál od Intelu. Čímž se dostáváme k jedné důležité motivaci, a tou je „vylepšit originál“.

Zlepšovatelé

Odchod Federica Faggina od Intelu a založení Zilogu je notoricky známá historie. Faggin, který se podílel na návrhu 8080, nakonec od Intelu odešel a přidal se k Zilogu, kde navrhl „silně vylepšený procesor 8080“. Jeho cílem bylo navrhnout procesor, který by byl na úrovni strojového kódu kompatibilní s 8080. Tedy měl stejné registry a stejné instrukce se stejnými operačními kódy. To znamenalo, že existující binární programy pro 8080 nebylo nutné překompilovávat, což usnadnilo vstup jejich Z80 na trh. Navíc v Zilogu snížili počet potřebných napájecích napětí na jedno (+5V), celý procesor zrychlili, přidali obvody pro automatický refresh dynamických pamětí, přidali druhou sadu registrů, dva indexové registry a spoustu nových instrukcí, které jednak zvýšily ortogonalitu instrukční sady, jednak přinesly zcela nové operace, například blokové přesuny, bloková porovnání či bitové operace.

I procesor Z80 měl spoustu „druhých zdrojů“. Jejich značení je taky pěkná přehlídka kreativity. Ostatně Zilog dnes svou Z80 označuje Z84C00xx (XX udává rychlost) a podpůrné obvody (PIO, SIO, CTC, DMA), které se blahé paměti označovaly např. jako Z80PIO, jsou dnes Z84C10… Takže se nelekejte, když místo Z80 uvidíte Z84…

Goldstar vyráběl Z8400A, SGS používal taky Z8400, Ates Z80ACPU, Thomson Z84C00, Toshiba TMPZ84C00. Ale třeba Sharp vyráběl totéž pod označením LH0080, ROHM používal BU18400A, NEC značil D780C, Mostek MK3880, Kawasaki KL5C8400, v NDR vyráběli Z80 pod označením U880D (neplést s U808D!), v SSSR dostal klon označení T34VM1 nebo KP1858BM1.

Kromě těchto klonů vznikly odvozeniny. Například Hitachi navrhlo HD64180, což byla vylepšená a rozšířená verze Z80. Vylepšení bylo hlavně v oblasti technologické (CMOS, mikrokód), rozšíření pak představovaly především zabudované periferie a jednotka řízení paměti. Hitachi pak tuhle verzi licencovalo zpět Zilogu, který ji prodával pod označením Z64180, no a po lehkém přepracování u Zilogů se z tohoto čipu stala známá Z180.

Zmiňovaný klon od Kawasaki zase kupříkladu zrychlil provádění některých instrukcí a umožňoval běh až na 33MHz.

Toshiba integrovala některé periferie spolu s jádrem Z80 do jednoho pouzdra s 84 / 100 vývody pod označením Z84013/Z84015 (CMOS verze Z84C13/Z84C15). Dneska tyto čipy vyrábí a dodává jako „second source“ také… Zilog!

Téměř shodná historie se odehrála i v „paralelní větvi mikroprocesorového vývoje“, tedy u Motoroly. První procesor 6800 měl rovněž několik „druhých zdrojů“. Historie s Fagginem se u Motoroly opakuje v podobě odchodu některých inženýrů do nově vzniklé firmy MOS Technology, kde vyvinuli procesor 6502. Ten není „rozšířenou variantou 6800“, ale spíš „sice nekompatibilní, ale levnou variantou“, díky čemuž se 6502 objevila ve spoustě garážových počítačů té doby. 6502 se vyrábí dodneška, a o jeho vylepšenou variantu 65C816, kombinující 8bitové a 16bitové jádro, se postarali vývojáři z WDC.

Motorola nabídla několik variant 6800 (např. se zakomponovanou pamětí), a nakonec vyvinula procesor 6809, který je jednoznačně vrcholem tehdejší osmibitové éry (dokonce i Bill Gates měl prohlásit, že to je „nejlépe navržený osmibitový procesor“ – a ten by to měl vědět, protože pro něj psal BASIC). Tento procesor má mnoho komplexních adresních módů (například „přečti bajt z adresy, která je v registru X, a pak zvyš hodnotu X o 1“), nabízí dva akumulátory A a B (které se dohromady tváří jako 16bitový registr D), dva šestnáctibitové indexové registry X a Y, dva 16bitové ukazatele zásobníku U a S (to by se to implementoval FORTH, že?), nabízí (podobně jako 6800 nebo 6502) možnost adresovat paměť zkrácenou adresou v nulté stránce – ale tady nejsme omezeni na nultou stránku, protože si pomocí registru DP můžeme nastavit, se kterou stránkou se pracuje. Uvnitř je i hardwarová násobička 8×8 bitů… Navíc je sada silně ortogonální (takže se nestává tak často, že by nějaká kombinace operandů „nešla použít“).

Vlastní 6809 vyráběl opět Hitachi, a opět, jako v případě Z80, připravili japonští návrháři i vylepšenou variantu, která se vyrábí pod označením 6309. K vlastnostem 6809 přidává další dva akumulátory E a F, které dohromady tvoří další 16bitový akumulátor W… který spolu s akumulátorem D tvoří 32bitový akumulátor Q. Přibyl i „odkládací“ 16bitový registr V, přibyl „registr 0“, v němž je vždycky 0 a který zjednodušuje nulování registrů – místo zapsání přímé hodnoty stačí jen přenést hodnotu z tohoto registru, přibyly nové instrukce, blokové operace, instrukce pro dělení a dlouhé násobení, instrukce pro aritmetiku, které výsledek neukládají do akumulátoru, ale do paměti…

Ano, kdyby bylo hlasování o nejzajímavější historický osmibit, tak sorry, Z80, jsi sice srdcovka, ale můj favorit je 6309!

Zdroje nejsou…

Takováhle „výroba ekvivalentů“ a „vylepšených ekvivalentů“ kvetla poměrně dlouho. Šestnáctibitové procesory z rodiny x86 měly ze začátku „druhých zdrojů“ dost, nejen známé firmy AMD a Cyrix. Postupem času se od sebe originál a „druhý zdroj“ oddělily, přestaly být kompatibilní vývodově, pak i parametry, a dnes už se jedná o dva odlišné světy s odlišnými chipsety i pouzdry, i když na binární úrovni do jisté míry stále kompatibilní.

U kolegů z Motoroly to platilo ještě pro verzi 68000 – tu vyráběli Hitachi, Mostek, ST, Rockwell, Signetics, Thomson nebo Toshiba. Verzi 68020 a další už jen Motorola. Klon si vyrobil Philips pod označením 68070, ale o jeho kompatibilitě víc nevím.

A tak víceméně skončila u procesorů trošičku divoká éra „druhých zdrojů“. Nejčastější situace, kdy víc výrobců nabízí podobné procesory, je dneska ve světě ARMových procesorů, kdy si několik desítek výrobců licencuje „ARM jádro“ (kterých je taky několik verzí) a každý vyrábí vlastní variantu. Navzájem jsou nezaměnitelné, mají jiné parametry, ale základ je stejný a do jisté míry mohou programy pracovat i na jiném „ARMovém“ procesoru.

Podobně se dodnes v portfoliu několika různých výrobců najde různě vylepšené jádro jednočipu 8052. Atmel nebo Dallas vyrábějí své vlastní varianty tohoto jednočipu, které jsou vývodově kompatibilní.

Na jednu stranu se tím zjednodušil výběr platformy a kompatibilita, na druhou stranu jsme ale ochuzeni o různá vylepšení a plody lidské tvořivosti, jako je UB8830D, což byl východoněmecký klon jednočipu Zilog Z8, který měl v ROM z výroby připravený interpret Tiny BASICu.

Taky máte dojem, že je dneska ve světě procesorů už docela nuda? 🙂

(Náhledový obrázek procesoru Z80 pochází z Wikipedie. Spousta encyklopedických informací o procesorech a jejich výrobcích je k dispozici na webu CPU world.)

Líbil se vám článek? Podpořte autora na Patreonu
Příspěvek byl publikován v rubrice Hardware se štítky , , , , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.
  • Že je ve světě procesorů ukrutná nuda tvrdím už předlouho. A je tam čím dál tím nudněji 🙂

  • odpad

    Pěkné, díky!
    Chci se zeptat – jaká jsou data uvedení 6809 a 6309 – tedy jaké bylo zpoždění nástupu vylepšeného klonu Toshiby od uvedení 6809?

  • 6809 přišel na trh v roce 1978. U 6309 se mi nepodařilo dohledat datum zahájení výroby, ale bylo to před rokem 1982, protože procesor 6309 byl použit v legendárním syntezátoru Yamaha DX7, který se vyráběl od roku 1983. Jako kuriozita budiž informace, že jej v USA a Evropě všichni považovali za prostou pinově kompatibilní náhradu, která je rychlejší, až v roce 1988 probleskly náznaky toho, že procesor umí víc, v japonském hobby časopise. V roce 1992 poslal japonský bastlíř H. Kakugawa přes online konferenci text, nadepsaný „Poznámka o utajených možnostech procesoru 6309.“ Teprve z tohoto textu se evropští uživatelé dozvěděli, že má 6309 nové módy, nové instrukce, nové registry…

  • odpad

    Díky moc za informace. Já jsem právě dosud 6309 tak nějak „ignoroval“ – jakožto klasický dobový 8bit, poněvadž jsem ho bral za poměrně „moderní“ remake. Ale není to až tak – jak jsem si myslel. Nicméně 6809 je pro mne stále nějvětší (a původní) „řízek“ na poli 8-bitů 😉

  • Gath Gealaich

    No já nevím, ale ta čerstvá zpráva, že AMD chystá čip kombinující ARMv8 a HSA/GCN, mě z nudy docela vytrhla.

  • EC1045.01

    nerekl bich ze ruske zanaceni IO je zmatecne prave ze na opak po kouknuti na IO se da z pismene skratky odvodit zakladni funkce IO, prvni sada cislic utava technologiji vyroby a skupinu. a cislice na konci jsou poradova v dane funkcni skupine i kdyz jsou vijimku a to u rady 500 (ECL 10000) a 580 (I80xx/I82xx) kdi koncove cislo odpovida danemu vzoru

  • Tak jasně že tam nějaká logika byla, spíš mi jde o to, že člověk skoro po celém světě řekl „7404“ a dostal šestici invertorů, jen DDR a SSSR měly nějaké extrabuřty 😉

  • EC1045.01

    No odlisne znaceni mela svého casu i TESLA (MHA111 alias MH7400, MHB111 – 7410, MHC111 – 7420, MHE111 – 7440, MHD111 – 7430, MHF111 – 7450, MHG111 – 7453, MYA111 – 7460 a MJA111 – 7472) to znaceni bilo pravdepodobne inspirovane u SIMENSu ktery ma napr. FLH101 – 7400, FLH111 – 7410, FLH121 – 7420, FLH185 – 8454, FLJ181 – 7493, FLQ101 – 7489, ……. a takovi FAIRCHILD zas ma místo 74xx 9Nxx ,….. a takle bich mohl pokracovet do zblbnuti .

    Jen namatkou vyber par oznaceni pro 7400:
    A00, C3000P, CBN400E, DM9002C, IC80, LU387A, RG143, 261-0789, 112116-1, uPD201C, U6A740059X, 443-1, 006-0000146, ……………….. moc dlouhy seznam.

    A musim rict ze jsem se uz takovim sílením znaceni setkal a to mam pocit ze to bilu u 7406 kdy na jedne desce bilo na svabu několika mistne cislo. Nebit druhé upne stejne desky vyrobene s nějakým odstupem a osezane dle znaceni
    odvozene od TI tak bich dodnes nemel paru co tam je za IO takze rusacke znaceni je ještě v pohode . a u NDR chce trochu premejslet ale porad to tam nekde je zakodovany. Bulhari ci madari něco podobného chybi jim tam „7“ ale u SIMENSu nedas ani zakladni funkci jako u rusaku ale jen hrube deleni na funkcni skupiny takze od ceho se mi povedlo ziskat ketalogy tak rusaci to meji asi nejpropracovanejsi.

    Dalsi nadhernej bordel ve znaceni je v pametech ROM a PROM kdi jedna a ta stejna součástka ma i 20 ruznich znaceni a navrch i u jednoho virobce ma vice oznaceni. (takovou 74188, 74S287 a 74S571 dela jen TESLA a TI ale ulne stejne jen s jim oznacem se delaly zcela bezne napr. INTEL, „SIGNITEC“, ….. a jsou daleko dostupnejsi aspon mimo nase uzemi)

    I3205=I8205=74S405 ale s 74×138 je to jen funkci ekvivalent pac 3205=8205=74S405
    rada bere na vstupu jen 0.25mA (coz je o fous min nez LS) ale vnitrek a vystupi odpovidaj 74Sxx kdezto 74×138
    odpovida na vstupu i vystupu pouzite technologiji udane pismenky mezi 74 a 138

    EC1045.01 (www.sapi.cz)