To je tak trochu hřích historiků, že historickou skutečnost občas prezentují jako technologickou vlastnost. Kolik paměti může procesor adresovat nezáleží na tom, kolika bitový je. Bitovost procesorů nevypovídá nic o šířce adresní sběrnice.
Na druhou stranu, až na pár exotických procesorů a "podvodů" typu 8088*, všechny vyráběné osmibitové procesory měly adresní sběrnici nejvýše šestnáctibitovou. Takže by se místo "osmibitový procesor může adresovat nejvýše 64kB RAM" mělo spíše psát "běžně vyráběné osmibitové procesory mohou adresovat nejvýše 64kB RAM". Ale asi to je jedno, v tomhle tisíciletí se mě ještě nikdo na otázku "proč by nemohl osmibitový procesor napřímo adresovat více paměti?" neptal.
*Hádanka - jakto, že se o 8088 i MC68000 říká, že jsou šestnáctibitové? Pohledem na registry a na sběrnice to vypadá, že šestnáctibitový mohl být jen jeden, zatímco ten druhý musel být 8bit anebo 32bit.
No, neexistuje jednoznačný vodítko podle čeho poznat bitovost CPU. Nejčastěji se říká, že je to bitová šířka ALU, což byla jak u 8086/8088 tak i u 68000/68008 šestnáct bitů. Nehledě na to, že 68000/68008 uměly zpracovávat normální ALU operace i 32 bitově, ale trvalo jim to dýl, právě kvůli 16bitové ALU.
Nicméně vtipná věc je, že Z80 měla (narozdíl od ostatních osmibitů) interně 4bitovou ALU. Takže veškerý osmibitový operace se dělaly ve dvou po sobě jdoucích taktech. Většinou to nešlo poznat, protože minimální dýlka instrukce byla 4 takty a navíc se překrejvala fáze fetch/execute, takže to ALU stihla. Akorát byl problém v 16 bitovejch operacích, který trvaly dýl než u 8080/8085.
No to je právě ten problém. 68000 uměla v jedné instrukci zpracovat 32 bitů a to víceméně pro každou instrukci, kde mohl být operandem 16 bitů. Registry měla široké 32 bitů. A přesto se uváděla jako 16 bitový procesor.
Na druhou stranu Z80 (ale i 8080/8085) měly částečně implementovanou 16 bitovou aritmetiku, tj. v jedné instrukci mohli třeba sečíst dvě šestnáctibitová čísla a registrové páry mohly fungovat jako jeden 16 bitový registr a přesto to byly 8 bitové registry.
Pentium MMX mělo v podstatě osm 64 bitových registrů a v rámci MMX umělo v jedné instrukci pracovat s 64 bit integerem, dokonce mělo 64 bitovou datovou sběrnici a přesto to byl 32 bitový procesor.
Já bych také řekl, že bitovost procesoru nejlépe specifikuje šíře běžných datových registrů (tedy ne třeba MMX).
Takže v případě MC68000 je situace podobná jako třeba u 386SX, uvnitř 32 bitů, zvenku 16 bitů (existovala i MC68008, která měla zvenku pouze 8bitů). Odpovídající plnotučné procesory by pak byly MC68EC020 a 386DX (já vím, rozdílů mezi MC68000 a MC68020 bylo víc).
Navíc si nepamatuju, že by se někdy MC68000 uváděla jako 16 bitová. Většinou se psala 16/32 bit a nebo rovnou 32 bit.
Asi neznali tu fintu, jak s pěti kousky z řady 74LS namapovat do horní půlky adresního prostoru Z80ky další 2MB paměti, viditelný nativně skrz čtyři okna velikosti 32kB... Ale uznávám, že 32k+2M bylo moc, přece "640kB musí stačit všem" :D
Jinak Z80CPU byl v té době asi nejlepší CISCový 8b CPU. V porovnání se svou předlohou I8080 měla:
- Jedno napájení +5V oproti třem u I8080 (+5V, +12V, -12V)
- Jednoduchý hodiny v úrovni TTL (I8080 dvoufázový s amplitudou 9V)
- Nepotřebovala externí řadič sběrnice
- SW backward compatible s I8080
- Vyšší rychlost (2,5MHz, pozděj 4MHz a 6MHz)
- Dva index regitry
- Kaskádní systém přerušení s podporou až 128 úrovní
- Vestavěný refresh DRAM s podporou až 16kB (během provádění instrukce tak jednoduše refreshnul 1 řádek RAM bez toho, že by konstruktér musel řešit něco bokem)
- Podpora DMA s obvodem Z80DMA
- Řada periferií na míru v jednom broukovi, potřebovala jenom adresní dekodér (Z80SIO - 2x UART, Z80PIO - 2x paralelní port, Z80CTC - 4x Timer/Counter)
A to všechno rok po jeho předloze, vlajkové lodi Intelu I8080. Co víc si přát? Snad jenom, aby to rozšířili na 16b data a 32b adresy, aby odpadlo bankování paměti...
Opravdu hezky se s tím dělalo... Teda až na to věčný přeprogramovávání EEPROM
No tak dva index registry... Ty byly očividně dobastlené. Takže instrukce, co je používaly, byly o bajt delší a trvaly stráááášně dlouho (i přes 20 taktů!). Takže základní pravidlo znělo - vystříhat se používání IX/IY a když už, tak hlavně ne k indexaci. :D Na to pokud možno použít HL nebo DE.
Co to znamená "dobastlené"? Jasně že potřebovaly prefix. Na to aby to šlo bez prefixu by se muselo totálně překopat kódování instrukční sady, ale pak by šla kompatibilita s i8080 do háje. Pomalý byly mimo jiné i proto že měli displacement a jeho přičtení/odečtení k adrese trvalo se čtyřbitovou ALU vo dva takty dýl než by nutně muselo.