# Motorola 68040

Il Motorola 68040 (nome in codice MC68040, inizialmente XC68040) è un microprocessore CISC prodotto da Motorola. È il successore del Motorola 68030 e è stato seguito dal Motorola 68060 (il processore 68050 è stato abbandonato durante la fase di progettazione perché avrebbe consentito solo un modesto incremento di prestazioni). La Motorola nella sua documentazione tecnica si riferisce al processore chiamandolo solamente 68040 e spesso lo si indica anche solo con la sigla finale 040.

## Caratteristiche tecniche

* Nome: MC68040
** Architettura: Harvard
** Set di istruzioni: CISC
** Registri: 16 a 32 bit
** Cache: 2 da 4 KB ciascuna (separate per dati e istruzioni)
** Pipeline: 6
** Frequenze di clock: 25/33/40 MHz
* Periferiche integrate:
** Integer Unit (IU): unità del Motorola 68030
** FPU: sì, compatibile con le FPU Motorola 68881/68882
*** 8 registri ad 80 bit
** Memory management unit: 2 (separate per istruzioni e codice)
Il 68040 costituisce il primo modello della terza generazione di microprocessori appartenenti alla famiglia 68k. Il 68040 è anche il primo processore della famiglia 68k che integra al suo interno l'unità per calcoli in virgola mobile (FPU, floating point unit). Inoltre, esso racchiude al suo interno molte periferiche che precedentemente erano fornite su chip esterni come l'unità di gestione della memoria (MMU, Memory Management Unit): in questo caso non si tratta della prima volta dato che l'MMU era stata inclusa anche nel precedente 68030. Il processore è dotato di 2 cache separate, una per i dati ed una per le operazioni: ogni cache è grande 4 KiB. È dotato di una unità di elaborazione a pipeline a 6 stadi che è la principale responsabile del notevole incremento delle prestazioni rispetto alla serie precedente. Il processore 68040 è composto da 1,17 milioni di transistor a 0,65 micron. La gestione della cache era molto avanzata rapportata ai processori concorrenti, come l'Intel 80486, e consentiva un'elevata efficienza del processore.
LA FPU integrata nel 68040 non era in grado di eseguire le funzioni trascendenti come il seno ed il coseno che invece erano supportate dei precedenti coprocessori matematici 68881 e 68882. Per evitare incompatibilità col software precedente i produttori di computer dovettero integrare nei sistemi operativi delle librerie che eseguivano queste funzioni in software, simulandole con una combinazione di operazioni che il processore era in grado di processare. Ovviamente era una soluzione molto lenta e i programmi che utilizzavano molto le funzioni trascendenti venivano molto penalizzati da queste librerie.
Uno dei problemi principali dello 040 era la dissipazione di calore. Il processore al suo interno aveva alcune unità che lavoravano al doppio della frequenza nominale. Questa soluzione consentiva di realizzare unità veloci con un numero relativamente ridotto di transistor ma creava problemi di dissipazione di potenza quando la frequenza saliva. Infatti lo 040 non è mai andato oltre i 40 MHz mentre il suo diretto concorrente il processore 80486 di Intel è arrivato anche a 100 MHz. Il 68040 era a parità di clock migliore dell'80486 ma questo compensava le sue prestazioni inferiori con una frequenza nettamente superiore. Motorola aveva avviato un progetto di una versione a 50 MHz del 68040 denominata 68050 ma poi il progetto venne abbandonato. Lo 040 prevedeva un sistema di arbitraggio del bus e infatti molti produttori lo utilizzarono per realizzare delle Workstation multiprocessore.

## Versioni

L'MC68040 fa parte di una famiglia di microprocessori denominata comunemente M68040 sotto cui sono raccolti altri modelli creati per specifici segmenti di mercato:
* MC68LC040: versione senza FPU;
* MC68040V: versione studiata per sistemi dove il risparmio energetico è prioritario. Deriva dall'MC68LC040, da cui differisce per alcune caratteristiche: non è compatibile a livello di piedinatura, opera a tensioni massime di 3,3 Volt ed ha un core statico, ossia può bloccare il clock mantenendo i valori dei registri interni;
* MC68EC040: versione senza FPU e MMU sviluppata per sistemi embedded;
* MC68EC040V: derivata dall'MC68EC040, con cui non è compatibile a livello di piedinatura, opera ad una tensione massima di 3,3 Volt e presenta un core statico (come l'MC68040V).

### Versioni XC e MC

I primi modelli del processore erano indicati come XC68040, le successive revisioni vennero indicate come MC: quest'ultima era più tollerante al calore ed all'incremento di frequenze.

## Utilizzo

Varie versioni del processore sono state montate in diversi personal computer dell'epoca. Amiga usò il 68040 nell'Amiga 4000 mentre Apple usò le versioni "LC" della CPU per i modelli di computer di fascia bassa (come quelli della famiglia Centris) mentre la CPU 68040 nei computer di fascia media, come i Macintosh IIci, e fascia alta, come i computer della famiglia Quadra. Il 68040 fu utilizzato anche per l'Atari Falcon040, un computer sviluppato da Atari come evoluzione dell'Atari Falcon030 che però rimase allo stadio di prototipo, non entrando mai in produzione. Venne utilizzato anche da diverse workstation e nei computer NeXTstation di NeXT.