Articolo pubblicato sul n. 124 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel dicembre 1992

MCmicrocomputer


Riquadro:
Il Chip Motorola 68040

di Andrea de Prisco

Compatibile Con tutta la sua famiglia di predecessori, il Motorola 68040 conta su ben un milione e duecentomila transistor in tecnologia HCMOS da 0.8 micron. Già a 25 MHz, i suoi «numeri» parlano abbastanza chiaro: 20 MIPS, 3.5 MFLQPS, 1.3 cicli di clock per istruzione, 2 cache memory e Copertina del numero di MCmicrocomputer contenente l'articolo2 MMU fanno di questo C/SC (Complex Instruction-Set Computer) una macchina dalle capacità formidabili.

Oltre al processo re matematico interno, perfettamente compatibile anch'esso col 68882 (ma «viaggiante» ad una velocità doppia), troviamo all'interno del 68040 anche due cache memory separate, da 4 Kbyte l'una, per i dati e per le istruzioni. Accanto a queste, due MMU dirigono il traffico tra le unità di memoria interne e la memoria principale esterna al processore vero e proprio. La logica di interfacciamento al bus è in grado di riconoscere il momento più opportuno per accedere al bus senza rallentare le rimanenti attività del 68040. In particolari situazioni, è Possibile «fotografare» all'interno del chip, ben 14 operazioni simultaneamente.

Disegnato a mo' di processore RISC (il 68040 non è un RISC: è il modo come è stato realizzato che lo fa sembrare tale!) la maggior parte delle istruzioni macchina sono portate a termine in un solo ciclo di clock e le stesse (o, meglio, buona parte di queste) non sono interpretate a mezzo microprogramma, ma direttamente eseguite dall'hardware tutt'altro che «ridotto».

All'interno del chip è implementato una Sorta di parallelismo «multi-Ievel». La sola unità intera ha una pipe li ne interna di grado 6, ovvero già da sola lavora su 6 istruzioni simultaneamente: mentre scrive in memoria il risultato dell'operazione X, esegue l'i_ struzione X+ l, preleva i dati dell'istruzione X+2, calcola la locazione dei dati della X+3, decodifica l'istruzione X+4 e preleva dalla memoria l'istruzione X+5. Tutto nello stesso ciclo di clock.

E cosa succede se un salto condizionato interrompe il flusso di pipeline? AI 68040 proprio nulla, dal momento che non appena si incontra una di queste operazione saltano fuori altri due indipendenti livelli di pipelining normalmente non utilizzati che provvedono a fare il prefetch e la decodifica delle istruzioni dove «forse» si dovrà saltare. In pratica il processore «ufficiosamente» fa anche di più di quanto appare da una visione esterna.

Anche l'unità floating point è al suo interno parallela. Lì gli stadi di pipelining Sono tre e corrispondono alle fasi di conversione FP - integer (o viceversa), l'esecuzione dell'istruzione e la scrittura del risultato. Da notare che un ulteriore livello di parallelismo si ha tra le varie unità completamente indipendenti le une dalle altre: quando l'unità intera incontra una istruzione FP non deve far altro che inviarla ali' unità matematica che effettuerà il calcolo mentre l'unità intera passerà a svolgere un altro compito. AnChe per l'unità FP le funzioni matematiche fondamentali Come le addizioni e le moltiplicazioni in virgola mobile Sono eseguite direttamente dall'hardware senza interpretazione a mezzo microprogramma.

Grazie alle due cache memory da 4 K integrate all'interno del 68040, la velocità di trasferimento delle informazioni raggiunge i 200 Mbyte per secondo. Inoltre, l'MMU lavora sempre e comunque, sia che il dato sia effettivamente disponibile nella cache che nel caso contrario. Nella fattispecie, mentre l'unità intera accede alla cache memory, la MMU anticipa un eventuale page fault traducendo contemporaneamente l'indirizzo logico nel corrispondente indirizzo fisico in modo da non perdere tempo nel caso sia necessario un accesso in memoria principale.

Per una gestione ottimizzata della cache e della MMU, il 68040, accanto alla modalità c(write-through» che esegue sempre e comunque una doppia scrittura, fornisce una modalità alternativa detta «copy-back» che aggiorna la memoria principale ad intermittenza, quando il bus non è richiesto per altre funzioni del sistema.

Per finire, un'ulteriore caratteristica originale del 68040 è costituita dalla modalità «finestra di memoria trasparente» Con la quale il processore scavalca completamente la MMU quando si eseguono operazioni su celle contigue di memoria e l'indirizzo fisico coincide con l'indirizzo logico (a meno di un displacement, ndr) e dunque non è richiesta alcuna traduzione.

Quando, invece, bisogna effettuare un'operazione di scrittura in memoria, l'unità intera ordina all'unità di controllo bus dI eseguire la scrittura e passa ad eseguire un altro compito. Se il bus in quel momento non è libero, l'unità di controllo bus aspetta il momento più favorevole per eseguire l'operazione. Il tutto in maniera completamente indipendente da Il' operato delle restanti unità del 68040.

Per quanto riguarda i trasferimenti da e verso la cache memory, l'unità di interfaccia permette la modalità «burst» di trasferimento dati nei due sensi che permette rapidi passaggi di blocchi di dati tra cache e memoria principale.

In sistemi multiprocessor i chip 68040, grazie alla funzione di «bus snooping» sono al riparo anche da incoerenze tra le varie cache presenti in tutti i processori del sistema. Questo nel caso di multiprocessor dotati di spazio di indirizzamento comune e non separato.

Può succedere infatti che due o più processori accedano alle stesse celle di memoria per prelevare dati e una modifica a questi da parte di un processore deve naturalmente essere tenuta in considerazione anche dagli altri.

L'unità di interfaccia bus sorveglia l'attività del bus di sistema: se rileva che un altro processore ha richiesto dati alla memoria principale, blocca immediatamente la propria cache per vedere se i dati richiesti sono stati in qualche modo alterati.

Se si verifica questo, l'unità di interfaccia intercetta la richiesta e invia la propria versione aggiornata del dato verso i processori che l'hanno richiesta. In questo modo i rimanenti processori non vedono mai l'informazione obsoleta nella memoria principale.

Ma il 68040, ancora una volta, non si ferma qui e prevede bus snoopil1g anche per le operazioni di scrittura in memoria, con un funzionamento complementare a quello testé descritto. Se rileva che nuovi dati vengono scritti in memoria da un altro processo re, verifica se nella propria cache esiste una vecchia versione di quei dati per, eventualmente, aggiornarli.


Impaginato originale...


Clicca per ingrandire... Clicca per ingrandire...

Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui