Motorola 6809
# Motorola 6809

Il Motorola 6809 è un microprocessore prodotto da Motorola a partire dal 1979 come evoluzione del predecessore Motorola 6800 e per rispondere al MOS 6502 di MOS Technology, risultando migliore di entrambi. Fu infatti progettato come processore ad 8 bit ma alcuni suoi registri interni furono impostati a 16 bit.

## Storia

Viene spesso considerato il precursore "morale" della famiglia 68000 ma ciò non è del tutto corretto. Anche se entrambi i progetti furono sviluppati alla fine degli anni '70 del XX secolo ed anche se effettivamente esistono alcune similitudini fra il 68000 ed il 6809, come ad esempio i metodi di indirizzamento e la sintassi dei codici mnemonici dei loro linguaggi assembly, il 6809 deriva però dal 6800 mentre il 68000 è un progetto completamente nuovo nato a partire dal 1979. I progettisti di Motorola consideravano infatti il 6809 un progetto completo e senza più margini di miglioramento, per cui decisero di cessarne lo sviluppo e di pensare al suo successore.

Il 6809 venne utilizzato da Commodore nel suo computer con 2 CPU SuperPET e, nella incarnazione del 68A09, nell'unica console vettoriale, la Vectrex, che, oltre a essere basata su una gestione della grafica di tipo vettoriale, era dotata anche di uno schermo integrato. Il 6809E venne utilizzato anche nel TRS-80 Color Computer (CoCo), nei computer Acorn System 2/3/4, nei cloni del CoCo prodotti in Inghilterra e nell'home computer Dragon 32/64.

L'azienda produttrice di software Microware sviluppò il sistema operativo originale, l'OS-9 (da non confondere con il Mac OS 9) per il 6809 che, in seguito, venne convertito anche per i processori della serie 68000.

L'Hitachi 6309 era una versione avanzata del 6809 con più registri e più istruzioni. Tra le istruzioni aggiunte vi era quella per lo spostamento di interi blocchi di memoria, per moltiplicazioni multiple e la divisione implementata in hardware. Venne utilizzato nella versione non ufficiale del CoCo 3 e venne realizzata una versione dell'OS 9 in grado di avvantagiarsi delle sue peculiarità.

Sfortunatamente né Motorola né Hitachi portarono avanti lo sviluppo del 6809 pur essendo un processore molto valido ed in grado di essere utilizzato praticamente in qualsiasi ambito. Molte delle sue innovazioni vennero riprese e utilizzate nei processori progettati successivamente da Motorola.

## Descrizione e caratteristiche

Fra le migliorie più significative del 6809 rispetto alle famiglie di processori che lo avevano preceduto c'erano la presenza di 2 accumulatori a 8 bit (il 6502 ne aveva solo 1) che potevano essere uniti per realizzare un singolo accumulatore a 16 bit. Era dotato anche di 2 registri indirizzi a 16 bit e di 2 puntatori di stack (il 6502 ne aveva 1 solo) e di metodi di indirizzamento molto avanzati.

Il 6809 era compatibile a livello di codice con il 6800, sebbene questo avesse un set di 78 istruzioni mentre il 6809 ne avesse solamente 59. Molte istruzioni eliminate erano state sostituite da istruzioni più generiche ed alcune istruzioni erano state sostituite da ulteriori modi di indirizzamento. L'assemblatore provvedeva a leggere l'assembly del 6800 e a convertirlo in codice macchina 6809 applicando le opportune conversioni. L'assembly nativo del 6809 era molto ortogonale: infatti era molto più semplice da programmare rispetto ai prodotti della concorrenza.

Altra caratteristica significativa era quella di essere stato il primo processore ad implementare in hardware l'operazione di moltiplicazione. Era dotato di un'aritmetica completa a 16 bit nonché di un veloce gestore degli interrupt. Questo processore era molto più veloce dei processori della serie 6800 (mediamente 5 volte più veloce) e, come questi, conteneva una istruzione non documentata che poteva danneggiare seriamente il bus del sistema (Halt and Catch Fire).

Le ottimizzazioni del 6809 erano molto diverse da quelle moderne. Molti processori moderni sono CISC ma internamente hanno un core di tipo RISC, quindi sono in grado di eseguire un numero ridotto di istruzioni ma in modo molto rapido. I processori come il Motorola 6809 e il MOS Technology 6502 erano processori assimilabili al tipo CISC (cioè processori dotati di molte istruzioni) ma con ottimizzazioni RISC, mentre i concorrenti Intel 8080 erano interamente CISC, mentre RISC puri erano gli ARM di Acorn (ARM significava appunto Acorn RISC Machine), i Berkeley RISC, MIPS-X, MIPS serie R, IBM Power 801 (da cui derivarono i PowerPC 601 e successori, utilizzati nei sistemi Apple dell'epoca). Per poter eseguire molte istruzioni con molti modi di indirizzamento senza utilizzare milioni di transistor i progettisti realizzavano entro i processori delle unità generiche che venivano opportunamente programmate con il microcodice in modo da riconoscere e eseguire correttamente tutte le istruzioni assembly. Quindi un'ottimizzazione per il 6809 consisteva in un miglioramento del microcodice.

## Il confronto con lo Zilog Z80

Lo Zilog Z80 era il contendente diretto del 6809, anche se la loro struttura interna era fondamentalmente diversa. Ad esempio l'operazione "ADD A,63" richiedeva 7 cicli di clock allo Z80 contro i 3 del 6809 (a causa della sua architettura ibrida ispirata in parte dai sistemi RISC). Quindi lo Z80, per ottenere le stesse prestazioni del 6809, operava a frequenze maggiori del 6809. Un altro esempio è costituito dal fatto che lo Z80 organizzava il caricamento e l'esecuzione delle istruzioni in più passaggi detti "cicli macchina": la lettura di un dato dalla memoria era eseguito durante uno di questi cicli, composti a loro volta da diversi cicli di clock. Diversamente da molti altri microprocessori del tempo, quindi, un accesso alla memoria dello Z80 si sviluppava su più cicli di clock contro un unico ciclo necessario al 6800/6809. Questa diversa strategia di gestione interna dei vari microprocessori era comunque bilanciata dal clock massimo possibile. I processori da "un ciclo"/operazione erano limitati a 1-2 MHz di frequenza massima, lo Z80 impiegava più cicli ma poteva essere clocckato a 4-6 MHz, a seconda delle versioni.

## Varianti

Il 6809 era dotato internamente di un generatore di clock (necessitava ovviamente di un quarzo esterno). Il 6809E necessitava invece del generatore di clock esterno. Il 6809 originale operava a 1 MHz. Successivamente furono introdotte anche le varianti 68A09(E), a 1,5 MHz, e 68B09(E), a 2 MHz.

