Intel 8008

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Intel 8008
Intel 8008
Specifikace
Frekvence: 500/800 kHz
Počet jader: 1
FSB:
Paměť programu: 4 KiB
Paměť dat: 16 KiB
Patice: 18 pinů
Nanotechnologie: 10 μm
Vydáno: 1. dubna 1972

Intel 8008 je první osmibitový mikroprocesor firmy Intel. Byl navržen 1. dubna 1972 v 18-pinovém DIP provedení. Pod původním kódovým označením 1201 byl původně vyvinut na zakázku firmou Computer Terminal Corporation do jejího programovatelného terminálu, ale čip byl dodán pozdě a nesplnil výkonnostní cíle, a proto nebyl k tomuto účelu použit. Díky tomu došlo k dohodě mezi CTC a Intelem, že obvod bude uveden na trh pro ostatní zákazníky.

Původní verze 8008 běžely na 0,5 MHz, později se taktovací frekvence zvýšila na 0,8 MHz. 8008 byl o trochu pomalejší než Intel 4004 a Intel 4040 co do vykonaných instrukcí za sekundu, ale tím, že 8008 zpracovával 8 bitů najednou, mohl přistupovat k mnohem většímu množství paměti RAM z něj dělaly CPU 3–4 × rychlejší než výše zmíněné 4bitové čipy.

Instrukční sada Intel 8008 a následných procesorů architektury CISC byly výrazně ovlivněny návrhem stran společnosti CTC.

Čip měl jednoduchou 8bitovou sběrnici a vyžadoval poměrně mnoho podpůrných obvodů. Intel 8008 mohl přistupovat k 8 vstupním a 24 výstupním portům.

Pro využití jako monitorový terminál a obecný řadič byl návrh Intel 8008 přijatelný, ale pro jiné úkoly bylo jeho použití nepraktické. Jeho hlavními nedostatky je omezená hloubka zásobníku a nemožnost uložit všechny registry při příchodu přerušení. Několik málo počítačů na něm bylo založeno, ale většina místo toho využila vylepšených vlastností Intel 8080.

Skupina procesorů okolo 8008 je též někdy nazývána pod označením MCS-8.

Procesor Intel 8008 navrhli: Victor Pooh, Harry Pyle, Marcian Hoff, Stan Mazor, Frederico Faggin a Hal Feeney.

  • 0,05 MIPS.
  • Rozšířená načítací PMOS logika.
  • 3500 tranzistorů. Technologie 10 μm.
  • 16 KiB adresovatelné paměti.
  • Původně navržený pro terminál Datapoint 2200

Návrháři[editovat | editovat zdroj]

  • CTC (Instrukční sada a architektura): Victor Poor a Harry Pyle.
  • Intel (Implementation in silicon):
    • Marcian "Ted" Hoff, Stan Mazor a Larry Potter (IBM hlavní vědci z IBM) navrhovali jednočipovou implementaci CTC architektury, použili radši RAM paměť pro registry než posuvný ("shift") registr paměti a také přidali pár instrukcí a přerušení zařízení
    • Federico Faggin se stal vedoucím projektu od ledna 1971, potom co byl suspendován kvůli problému s pokrokem projektu, asi na 7 měsíců, až do dokončení projektu v dubnu 1972
    • Hal Feeney inženýr projektu udělal detailní logický návrh, obvodový návrh a fyzický rozvržení pod dohleden Faggina, využil stejnou metodu návrhu jako použil Faggin (originál) u Intel 4004 mikročipu a využil obvodů 4004. Poznámka: jeho kombinovaná HF logo je na čipu asi v polovině cesty mezi kontaktními plochami D5 a D6.

Architektura[editovat | editovat zdroj]

Mikroarchitektura I8008
Registry mikroprocesoru Intel 8008
13 12 11 10 09 08 07 06 05 04 03 02 01 00 (číslo bitu)
Hlavní registry
  A Akumulátor
  B B registr
  C C registr
  D D registr
  E E registr
  H H registr (pro nepřímé adresování)
  L L registr (pro nepřímé adresování)
Programový čítač
PC Program Counter
Zásobník návratových adres
AS Úroveň volání 1
AS Úroveň volání 2
AS Úroveň volání 3
AS Úroveň volání 4
AS Úroveň volání 5
AS Úroveň volání 6
AS Úroveň volání 7
Stavový registr
  C P Z S Příznaky

Intel 8008 byl vyráběn technologií PMOS 10 μm; první verze měly kmitočet hodin do 0,5 MHz, pozdější (8008-1) do 0,8 MHz. Instrukce trvaly 5 až 11 T-stavů a jeden T-stav byly 2 periody hodin.[1] Přenos dat mezi registry a aritmeticko-logické operace trvaly 5T (20 μs při 0.5 MHz), přenosy mezi registry a pamětí 8T (32 μs), volání podprogramů a skoky trvaly 11T (44 μs).[2] Rychlost mikroprocesoru Intel 8008 vyjádřená v instrukcích za sekundu byla poněkud nižší (36 až 80 tisíc při 0,8 MHz) než 4bitových Intel 4004 a Intel 4040,[3], ale díky tomu, že Intel 8008 zpracovával 8bitová data a mohl adresovat podstatně větší paměť, byl ve většině aplikací rychlejší. Intel 8008 obsahoval 3500 tranzistorů.[4][5][6]

Intel 8008 měl šířku adresní sběrnice 14 bitů, což dovolovalo adresovat 16 KB paměti. Obsahoval 7 osmibitových univerzálních registrů (včetně akumulátoru), 14bitový programový čítač a sedmiúrovňový zásobník 14bitových návratových adres.

Ukázka kódu[editovat | editovat zdroj]

Následující zdrojový kód v jazyce symbolických adres Intel 8008 je procedura MEMCPY pro kopírování bloku dat zadané délky z jednoho místa v paměti na jiné.

                    ; MEMCPY --
                    ; Zkopíruje blok paměti z jednoho místa na jiné.
                    ;
                    ; Vstupní parametry
                    ;       SRC: 14bitová adresa začátku zdrojového bloku
                    ;       DST: 14bitová adresa začátku cílového bloku
                    ;       CNT: 14bitová délka bloku v bytech
 
                                ORG     1700Q       ;Data na adrese 001700q
001700  000         SRC         DFB     0           ;SRC, nižší byte
001701  000                     DFB     0           ;     vyšší byte
001702  000         DST         DFB     0           ;DST, nižší byte
001703  000                     DFB     0           ;     vyšší byte
001704  000         CNT         DFB     0           ;CNT, nižší byte
001705  000                     DFB     0           ;     vyšší byte

                                ORG     2000Q       ;Kód na adrese 002000q
002000  066 304     MEMCPY      LLI     CNT+0       ;HL = addr(CNT)
002002  056 003                 LHI     CNT+1
002004  327                     LCM                 ;BC = CNT
002005  060                     INL
002006  317                     LBM
002007  302         LOOP        LAC                 ;Jestliže BC = 0,
002010  261                     ORB
002011  053                     RTZ                 ;Návrat
002012  302         DECCNT      LAC                 ;BC = BC-1
002013  024 001                 SUI     1
002015  320                     LCA
002016  301                     LAB
002017  034 000                 SBI     0
002021  310                     LBA
002022  066 300     GETSRC      LLI     SRC+0       ;HL = addr(SRC)
002024  056 003                 LHI     SRC+1
002026  347                     LEM                 ;DE = SRC
002027  060                     INL
002030  337                     LDM
002031  302                     LAC                 ;HL = DE+BC
002032  206                     ADE
002033  360                     LLA
002034  301                     LAB
002035  215                     ACD
002036  350                     LHA
002037  307                     LAM                 ;Načti A z adresy (HL)
002040  066 302     GETDST      LLI     DST+0       ;HL = addr(DST)
002042  056 003                 LHI     DST+1
002044  347                     LEM                 ;DE = DST
002045  060                     INL
002046  337                     LDM
002047  364                     LLE                 ;HL = DE
002050  353                     LHD
002051  330                     LDA                 ;D = A
002052  302                     LAC                 ;HL = HL+BC
002053  206                     ADL
002054  360                     LLA
002055  301                     LAB
002056  215                     ACH
002057  350                     LHA
002060  373                     LMD                 ;Ulož D na adresu (HL)
002061  104 007 004             JMP     LOOP        ;Opakovat
002064                          END

Všechny hodnoty v kódu jsou v osmičkové soustavě. Lokace SRC, DST, a hodnota CNT jsou 16bitové parametry podprogramu MEMCPY. Ve skutečnosti se používá pouze 14 bitů, protože procesor má velikost adresy 14 bitů. Hodnoty jsou uloženy ve formátu little endian, ale protože procesor není schopen na rozdíl od Intel 8080 číst nebo zapisovat více než 1 byte v jedné instrukci, jedná se o arbitrární volbu. Protože neexistuje instrukce pro načtení registru přímo ze zadané adresy, musí se adresa nejdříve načíst do dvojice registrů HL, která se použije pro nepřímé adresování paměti jako pseudoregistr M. Do dvojice registrů BC je načtena hodnota parametru CNT, která se snižuje o jedničku na konci smyčky, dokud nedosáhne hodnoty 0. Všimněte si, že většina instrukcí zabírá 8 bitů.

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Intel 8008 na anglické Wikipedii.

  1. MCS-8 Micro Computer Set Users Manual [PDF]. Intel Corporation. Dostupné online.  
  2. Intel 8008 Opcodes [online]. [cit. 2010-12-04]. Dostupné online.  
  3. Intel 8008 (i8008) microprocessor family [online]. CPU World, [cit. 2010-12-04]. Dostupné online.  
  4. http://www.intel.com/museum/archives/history_docs/Moore.htm[nedostupný zdroj]
  5. Intel. "Intel Chips: timeline poster". 2012.
  6. Intel. "Microprocessor Quick Reference Guide". 2008.

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]