Limitazione di frequenza per CPU homebrew


15

Osservando alcune CPU personalizzate ho notato che le frequenze alle quali operano sono relativamente basse rispetto alle moderne CPU (nell'ordine di diversi MHz). Esiste un motivo di ingegneria elettronica per tale limitazione, ad esempio per le breadboard? Se sì, come determinare la frequenza massima che è possibile raggiungere con il tuo progetto?


Come ... chip VLSI fatti in casa? Immagino che sia una limitazione dei costi. La precisione offerta dalle apparecchiature da molti milioni di dollari non può essere duplicata a casa e, di conseguenza, i chip devono funzionare più lentamente.
Nate

4
@Nate, immagino che si riferisca a CPU multi-chip homebrew costruite da TTL. Ad esempio: homebrewcpu.com
Alfred Centauri

@Nate ho aggiornato la mia domanda per essere più specifici.
Eugen,

@AlfredCentauri - sì, hai ragione;)
Eugen,

Risposte:


16

Principalmente ha a che fare con le lunghezze di interconnessioni e ritardi di propagazione attraverso le porte. Se riduciamo la CPU alla sua essenza, è una macchina di feedback. Un gruppo di circuiti logici combinatori calcolano alcune funzioni booleane sullo stato corrente della macchina e tali funzioni determinano il nuovo stato, che viene bloccato dai circuiti sequenziali quando arriva un nuovo fronte di clock. I circuiti combinatori hanno tutti dei ritardi. Il periodo di clock non può essere più breve del tempo impiegato dal percorso più lento attraverso queste porte per produrre un risultato stabile perché un singolo bit errato interrompe lo spettacolo.

Inoltre, la logica sequenziale ha requisiti di temporizzazione. Prima dell'arrivo del fronte di clock, è necessario un tempo di impostazione minimo per cui gli ingressi devono essere stabili e successivamente devono essere stabili per un certo tempo di attesa. Se questi vengono violati, lo stato diventa immondizia.

I ritardi di propagazione sono causati da cose come la velocità con cui possono essere caricate le capacità parassite, la velocità con cui può accumularsi la corrente di fronte a un'induttanza e la velocità con cui i dispositivi al silicio possono cambiare. Ad esempio, un transistor bipolare con una base più piccola può passare più velocemente di uno con una base più grande, quindi un piccolo transistor su un chip sarà più veloce di uno discreto.

In una precedente risposta che ho eliminato, ho scritto sugli effetti della linea di trasmissione. Ma non ho considerato che questi effetti non entrino nemmeno in scena alle velocità di cui stiamo parlando perché, diciamo, a 10 Mhz, la lunghezza d'onda è ancora di circa 30 metri. Quindi, sulla scala di un circuito di dimensioni ordinarie, gli impulsi sulla scala temporale di alcuni megahertz raggiungono contemporaneamente tutte le parti di una rete di rame.

Quindi, se si fa una CPU con componenti discreti, non si ottengono semplicemente componenti di piccole dimensioni con tempi di commutazione rapidi e la stessa vicinanza che minimizza le capacità e le induttanze vaganti.

Tuttavia, le antiche macchine a componenti discreti negli anni '60 funzionavano un po 'più velocemente di queste macchine homebrew. Ci sono voluti un po 'di tempo e astuzia per arrivarci. Ad esempio, IBM 360 Model 44 (1964) funzionava a 4 Mhz. Potrebbe essere ancora "la velocità dell'homebrew", ma il CDC 7600 pubblicato pochi anni dopo nel 1969 ha superato i 36 Mhz. L'articolo di Wikipedia http://it.wikipedia.org/wiki/CDC_7600 fornisce un suggerimento su alcuni dei trucchi che sono stati tirati, ad esempio:

"Come sempre, il design di Cray si concentrava anche sull'imballaggio per ridurre le dimensioni, ridurre i percorsi dei segnali e quindi aumentare la frequenza operativa. e transistor. Le sei schede sono state impilate e quindi interconnesse lungo i loro bordi, creando un modulo molto compatto, ma sostanzialmente non riparabile. "

Quindi le CPU homebrew non sono necessariamente costruite per il loro vero potenziale a causa di alcuni effetti confondenti legati alla qualità e al layout della build. Tuttavia, chiunque costruisca una CPU a partire da singoli circuiti integrati e componenti discreti che funziona a diversi megahertz dovrebbe essere applaudito.


A seconda della complessità del percorso dei dati, penso che un dispositivo homebrew dovrebbe essere in grado di eseguire il clock a 20Mhz o più senza difficoltà utilizzando la tecnologia moderna e le tecniche convenzionali. Non multi-GHz, ma non completamente inclinato. Sospetto, tuttavia, che nella maggior parte dei casi in cui vengano utilizzate CPU homebrew, la facilità di risoluzione dei problemi sia più importante della velocità. Per inciso, il cristallo dell'orologio principale dell'originale macchina arcade di marca Pong (R) era 14.3818 Mhz, sebbene fosse diviso abbastanza presto; Penso che l'unica cosa a cui piace qualcosa che la velocità sia la linea centrale del campo di gioco.
supercat

1
Molte CPU homebrew usano EPROM per archiviare microcodici, ma anche per implementare complesse tabelle di logica e / o verità (molte di esse hanno persino una ALU composta da una o più ROM). La velocità di accesso alle ROM può limitare in modo significativo la velocità massima della macchina, ma sono popolari perché rendono facile il debug, il riutilizzo e l'ottimizzazione del processore senza un significativo ricablaggio.
Alessio,

15

Come ex liceale che ha costruito un computer per scopi speciali con la serie 7400 TTL, che ha vinto un po 'di premio alla fiera della scienza, ho osservato queste cose che gli impedivano di funzionare il più velocemente possibile:

  • Capacità vagante nella breadboard. Qualche pF tra ogni coppia adiacente di connettori. I limitati tempi di salita / discesa del bordo dell'impulso e in alcuni punti hanno aggiunto la diafonia. Questo è stato probabilmente il fattore più importante.

  • Variazioni di chip grab-bag. (Qualcuno ricorda i Poly-Pak?) 74LSxx, 74Hxx, 74xx con diversi ritardi di propagazione e altre caratteristiche, ha reso impossibile mantenere i segnali sincronizzati a velocità di clock superiori rispetto a pochi MHz.

  • Cheapo chip di memoria statica, sempre da una grab-bag o da un'altra fonte di non qualità. Non potevano leggere o scrivere in modo affidabile oltre un certo tasso.

  • La mia strumentazione di prova era limitata a generatori di segnali homebrew, un oscilloscopio a larghezza di banda a 5 MHz e circuiti digitali con giuria temporanea. Difficile da controllare integrità del segnale, tempistica, ampiezza dei segnali digitali che sono stati filtrati passa-basso in poltiglia traballante.

Oggi sarebbe difficile trovare un ambito da 5 MHz a meno che uno non sia un acquirente antico. Chip migliori di tutti i tipi sono altrettanto facili da ottenere, anche in pacchetti DIP distanziati da 0,1 ", tranne per il fatto che non ho visto molto in termini di maniglioni da molto tempo. Le breadboard dei socket, tuttavia, non sono cambiate molto. La capacità dispersa è ancora un killer di velocità per qualsiasi progetto digitale creativo tagliente.

Evitare le breadboard utilizzando un PCB homebrew è il modo migliore per evitare la capacità parassita, ma ovviamente richiede più impegno e tempo.


4

Penso che il motivo principale sia che quando aumenti la frequenza, l'impedenza delle connessioni della breadboard aumenterà e limiterà la velocità finale del tuo circuito.

Ogni connessione nella breadboard ha un'induttanza bassa, ma diversa da zero. Man mano che la frequenza aumenta sempre più, è necessario tenere conto di questi effetti. L'impedenza dei fili può essere rilevata da:

This formula

dove L è l'induttanza del filo. Alla fine, Z diventerà abbastanza alto da non scorrere corrente e il circuito smetterà di funzionare. Trovare il valore numerico esatto per questo numero sarà molto complicato, soprattutto perché le breadboard hanno tracce una accanto all'altra e ciò cambierà un po 'l'impedenza di ciascun filo rispetto a questa formula. Se vuoi davvero un numero (impreciso), puoi provare qui per calcolare l'induttanza (e quindi l'impedenza) dei tuoi fili. Se si conosce la corrente più bassa da cui una parte può operare, è possibile determinare la frequenza massima prima di raggiungere quel limite.


Potresti spiegare la relazione tra l'impendenza e la velocità del circuito?
Eugen,

In che modo questo spiega che CPU come Intel Core I7 funzionano a velocità di clock di 2,5 GHz e che le CPU costruite su breadboard non possono raggiungere questa velocità? Inizialmente ho pensato che ci fosse una connessione con la lunghezza del filo tra i chip CPU e RAM.
Eugen,

Non negare le leggi della fisica, ma non credo che l'induttanza sia davvero il principale limitatore di velocità. Successivamente, fili simili con intervalli di lunghezze simili vengono utilizzati nelle radio homebrew e in altri progetti, a frequenze molto più elevate. Bisogna solo stare attenti ad abbinare impedenze, lunghezze, layout, evitare accoppiamenti accidentali, ecc.
DarenW

1
@DarenW: l'induttanza e la capacità vaganti sono davvero i problemi. In un sistema radio, in genere hai solo un filo di lunghezza non banale. In un'implementazione del processore, ne hai centinaia, con induttanza reciproca a seconda della spaziatura. Le interazioni dipendenti dalla frequenza sono ingestibili a causa della complessità. L'impedenza caratteristica dipende fortemente da cose come la distanza dalle tracce del terreno ... che non sono ben controllate su una breadboard.
Ben Voigt,

1
Penso che tu abbia ragione, immagino che probabilmente dovrebbero essere solo le reattanze in generale. La capacità si tradurrà in problemi simili, ma per cose come fronti di salita / discesa e cambiamenti di stato. Le equazioni per trovare l'impedenza sono simili, tuttavia, e se vuole una risposta numerica, queste potrebbero probabilmente essere applicate in modo simile.
Nate

3

Altri hanno risposto al "perché". Ecco come determinare la velocità massima.

  1. Per ogni infradito, cerca l'orologio su Q.
  2. Totale della lunghezza del filo di tutti i fili dal flip-flop al flip flop successivo. Trasforma questa lunghezza in tempo. Il filo ha una velocità della luce di circa 2/3
  3. Totale di tutti i ritardi di gate, anche attraverso la RAM asincrona.
  4. Prenditi il ​​tempo di installazione al prossimo infradito.
  5. Aggiungi 1-4. Questo è il periodo di clock minimo. Invertire per ottenere la frequenza.
  6. Considera l'inclinazione dell'orologio. Se l'orologio arriva al secondo ff prima del primo, aggiungi l'inclinazione con 1-4.
  7. Se l'orologio arriva al secondo ff prima del primo, calcola il minimo di 1-3. Assicurati che siano inferiori al tempo di attesa richiesto dal secondo ff più il disallineamento dell'orologio.

Di quale lunghezza del filo stai parlando: la lunghezza dalla fonte di alimentazione ai pin di uscita CPU, dai pin di uscita CPU ai chip RAM ...? Inoltre, non sono davvero chiaro cosa intendi nel primo passo.
Eugen,

2
@Eugen - Penso che (ma non la mia area di competenza) si riferisca al suo ritardo di propagazione interno - il tempo trascorso dal cronometraggio all'uscita stabile.
Incondizionatamente

1

Oltre a tutti i motivi elettrici che limitano la velocità, ce n'è anche uno a livello logico:

Non è possibile impiegare quante più risorse per rendere le cose più veloci, come operazioni con pipeline con previsione dei rami, aritmetica più veloce e quant'altro. Le cache non hanno molto senso neanche se non sono più veloci della tua memoria principale.


1

Per le macchine homebrew si riduce a due fattori. Il ritardo di propagazione per i chip che stai usando e il numero di chip che devi usare sul percorso più lungo attraverso la progettazione della tua CPU.

Ad esempio, un 74HC574 (registro a 8 bit) ha un ritardo di propagazione massimo di circa 41 ns (preso dal suo foglio dati). Ora diciamo che il percorso più lungo nella progettazione della CPU richiede che passi attraverso 8 chip diversi. Aggiungi i ritardi di propagazione per ciascuno degli 8 e immagina che arrivi a 333ns. Con 1000ns pari a 1Mhz che ti darebbe una velocità massima di 3Mhz.

In pratica potresti voler limitarti a qualcosa di più lento come 2Mhz, al fine di garantire un design stabile. Anche se pensi di perdere i tempi solo una volta per miliardo di cicli, allora sei ancora nei guai. 10 miliardi divisi per 3 milioni indicano una mancata esecuzione una volta ogni 3.333 secondi, ovvero circa una volta all'ora. Arrestare la macchina ogni ora non va bene!

Per farlo andare più veloce puoi usare chip più veloci e / o cambiare il design per ridurre il numero di chip nel percorso più lento. Circa la velocità homebrew più veloce che vedi è di circa 4 Mhz che ti dà 250 ns per completare ogni ciclo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.