Domanda:
È un trucco se uso un chip SRAM come file di registro?
DylanG
2018-02-03 22:44:01 UTC
view on stackexchange narkive permalink

Attualmente sto costruendo il mio processore utilizzando la logica discreta (serie 74LSxx e quella) utilizzando la mia architettura del set di istruzioni.Comincio ad accumulare un po 'di soldi perché tutte le patatine di cui ho bisogno.Per chiunque di voi abbia visto persone costruire CPU homebrew come questa, nessuno di cui ho letto ha utilizzato un chip SRAM come file di registro

Sarebbe considerato un imbroglio se usassi un chip SRAM invece di una TONNELLATA di 374 chip flip flop per i registri?Questo dovrebbe essere un processore costituito da chip discreti

Imbrogliare?Secondo le regole di chi?
Non so se sta barando, ma rallenterà il tuo design se può accedere solo a 1 registro alla volta.
@Marla, Non ho mai visto nessuno creare il proprio file di registro da SRAM, quindi ho pensato che non fosse il modo giusto per fare questo genere di cose Il Photon, ho un solo accesso alla volta comunque, c'è solo un autobus
Sì, un professore ne parlerà alle autorità.
Aspetta, ci stai dicendo che non hai rifinito il silicio da solo?Ma seriamente, fallo come preferisci.
Userei entrambi una o più SRAM per i file di registro e una o più EPROM per la logica.Giusto per limitare il tempo che ho dovuto dedicare alle parti noiose - il cablaggio - e aumentare il tempo che posso fare per le parti interessanti - progettazione e test.
La tua ALU non avrebbe bisogno di accedere a due registri contemporaneamente per eseguire calcoli (es. "ADD R0, R1")?
L'architettura utilizza un accumulatore collegato direttamente all'ALU (6502-esque) quindi devo solo dargli un altro operando
Non lo direi mai a tua moglie
@GregoryKornblum "* Mary, ti sono stato infedele ... ti ho tradito con un chip SRAM, è iniziato con un saldatore, una cosa tira l'altra e siamo finiti entrambi sul PCB *"
Forse sarebbe un imbroglio se il tuo intento fosse quello di realizzare un computer con componenti che erano disponibili in una determinata data, potresti iniziare da quelli elencati in un libro di dati del 1974 Texas Instruments o Fairchild TTL.Potresti imbrogliare usando varianti più moderne (74HC invece del semplice 74).Comunque, sei tu il progetto, non ci sono regole.
La tua domanda è cercare un'opinione.Modifica la tua domanda in una a cui si può rispondere con risposte specifiche e concrete.Ad esempio, "C'è uno svantaggio nell'usare una SRAM per il file di registro invece di usare i flip-flop?"
Se stai tradendo sei in buona compagnia https://en.wikipedia.org/wiki/Texas_Instruments_TMS9900
che ne dici del 7489? https://www.jameco.com/z/7489-Major-Brands-64-BIT-READ-WRITE-MEMORY-DIP-16_50681.html
Non è barare, ma è ** pigro ** se lo costruisci da zero per l'esperienza e il divertimento di farlo nel modo più duro.:) In alternativa, potresti ammettere di aver semplicemente sovradimensionato il sistema al punto che non si adatta alla scatola a meno che tu non prenda alcune scorciatoie.È il TUO progetto, fai quello che ti piace.Il costo è una preoccupazione valida però.
Avrei pensato che per essere un processore veramente discreto sarebbe stato fatto interamente di transistor, quindi qui stai facendo le regole, non noi.
Sette risposte:
Olin Lathrop
2018-02-03 23:10:24 UTC
view on stackexchange narkive permalink

No, non si tradisce in nessuna regola.Questo perché non ci sono regole in primo luogo.

Questo è il tuo progetto.Lo definisci.Puoi implementarlo in qualsiasi modo ti soddisfi.A nessun altro importa.

Nota che questo significa che sta barando se vuoi che sia barare.
Chris Stratton
2018-02-04 00:27:25 UTC
view on stackexchange narkive permalink

Come chiesto, questa è puramente una questione di opinione, quindi non è una domanda valida qui.

Tuttavia, si noti che i processori convenzionali richiedono 3 porte di accesso al file di registro: due per ottenere gli operandi, uno per riscrivere il risultato.Quindi avrai bisogno di datapath e circuiti di controllo sostanzialmente più complessi per precaricare e memorizzare nella cache gli operandi se desideri utilizzare una singola porta RAM.Oppure puoi costruire qualcosa con un accumulatore distinto e più privilegiato e un set di istruzioni che consente solo a un singolo registro non accumulatore di apparire come sorgente o destinazione (del resto, ci sono CPU con solo unaccumulatore)

Usare due memorie scritte in parallelo e lette singolarmente potrebbe semplificare un po 'le cose, ma questo trucco funziona meglio con le memorie a doppia porta.Quelle sono qualcosa che puoi acquistare in formato IC, oltre ad essere la forma comune di RAM a blocchi FPGA.

Noterò che gli array di registri a 3 porte (o anche a 2 porte) erano un'innovazione relativamente tarda.Era qualcosa che abbiamo tentato quando ero per la prima volta nel biz nel 1973, ma la spesa era troppo alta per la maggior parte dei progetti con più di 4 registri.
Potresti semplicemente usare due chip SRAM in parallelo, uno per ogni operando e scrivere su entrambi.
@Michael - nota sopra "Utilizzo di due memorie scritte in parallelo e lette singolarmente ..." ma se sono modelli a porta singola sarà necessaria una logica di muxing per alternare le righe di indirizzo tra letture distinte e scritture condivise all'indirizzo del registro dei risultati durantecicli appropriati.
ilkkachu
2018-02-04 02:48:09 UTC
view on stackexchange narkive permalink

Il tuo progetto, le tue regole.

Ma come si suol dire, "perfetto è il nemico del fatto ".Se il progetto sembra sfuggire di mano (sia per quanto riguarda la complessità, il tempo richiesto o il denaro richiesto), ritagliarsi un po 'di gioco su un angolo del design può essere la differenza tra un risultato elegante (anche se un po' folle)e un progetto che non è mai stato completato.

Inoltre, anche se decidi di "barare", c'è sempre la possibilità di creare la versione 2 in un secondo momento, con meno scorciatoie.Potresti anche provare a prendere in considerazione un possibile "upgrade" futuro nella prima versione del progetto, se vuoi dedicare un po 'di tempo a rendere l' "upgrade" più facile.

Curd
2018-02-04 01:16:41 UTC
view on stackexchange narkive permalink

Sì!È persino un inganno se usi componenti che non hai realizzato da solo con materiali naturali che puoi trovare nel tuo giardino.

Ma poi bareresti se rubassi la sabbia dai bunker dei campi da golf per fare il silicio. Presumo che questa risposta stia cercando di aiutare l'OP a chiedersi cosa sia veramente considerato "barare".
Sì, e l'energia per questo processo deve provenire dal sole, dal vento o dagli alberi che hai piantato tu stesso, il tutto dall'interno del giardino.Non è consentito barare utilizzando l'elettricità dalla rete o ottenendo combustibili fossili da altre parti.
Infatti.Il modo corretto per iniziare è sbattere insieme una roccia di quarzo e un po 'di antracite fino a formare il silicio.Può accadere in quantità apprezzabili prima che l'Universo vada a gambe all'aria.
Dannazione!Quindi non posso usare la sabbia frac?
old_timer
2018-02-04 05:00:48 UTC
view on stackexchange narkive permalink

Sono anche a conoscenza di un processore che utilizza SRAM a porta singola per il file di registro generico, un processore molto veloce / efficiente in effetti.

Da dove pensi che provenga il termine file di registro? Si registra in una SRAM.

Con un'architettura pipeline potresti avere una singola porta SRAM e non necessariamente avere un calo delle prestazioni. Un'implementazione SRAM con porta singola avrebbe senso avere molti registri, diciamo 128, 256 o 512 per uso generico.

Sì, va benissimo implementare i tuoi "registri" in un file di registro costruito da una SRAM, a condizione che il tuo progetto funzioni.

Non sono sicuro che tu stia cercando di implementare un processore / set di istruzioni esistente o di crearne uno tuo. In entrambi i casi, facendolo con parti 74xx discrete, le prestazioni non sono necessariamente un obiettivo rispetto alla sanità mentale e al successo. Se hai alcune SRAM di quella generazione, allora assolutamente. Puoi collegare i LED all'indirizzo e al bus dati per creare (più) luci lampeggianti che mostrano segni di vita.

Oppure puoi adottare l'approccio 6502 e avere 256 registri virtuali o indiretti (pagina zero) che sono solo memoria o forse memoria speciale. E i tuoi veri registri di uso generale (o registri di uso generale) sono pochi e si adattano a poche parti. Ha funzionato abbastanza bene per la tecnologia MOS. (L'architettura, non necessariamente l'implementazione, sebbene abbiano rasato, scansionato e sottoposto a reverse engineering il 6502 in modo da poter vedere come l'hanno effettivamente implementato).

Probabilmente vorrai anche "imbrogliare" e usare una ROM per la tabella di ricerca che implementa il tuo microcodice ... Anche se non è neanche un imbroglio; è una soluzione nota.

"Con un'architettura pipeline potresti avere una singola porta sram e non necessariamente avere un calo delle prestazioni" - non proprio.Un tale collo di bottiglia significa che si ottiene un blocco della pipeline su * qualsiasi * serie di operazioni di registro, anche quelle indipendenti.Se per una sequenza di istruzioni senza dipendenze non è possibile leggere due operandi e riscrivere un risultato * ogni clock *, allora hai subito una perdita di prestazioni rispetto a una macchina che può farlo.
dipende dal design.Sono d'accordo con te in generale, ma sono esperto in un design che non ha questo problema.
per essere onesti consideri leggere e scrivere nello stesso ciclo di single ported o dual?Non riesco a immaginare che l'OP sia preoccupato per questo, più per la sanità mentale e il successo piuttosto che per le alte prestazioni.e un file di registro (per quanto molte porte) aiuterebbe in questo.
La lettura / scrittura simultanea richiede due porte.Potrebbero esserci ram a doppia porta specializzati (rispetto a quelli generici) in cui ogni porta ha solo un determinato ruolo, ma in termini di parti per scopi generali sarebbe necessario un DPR completo e per la piena capacità di due operandi, due dei quali scritti in parallelo.
non abbiamo motivo per cui D e Q del flip flop debbano essere legati alla stessa logica, se lo chiami duale allora va bene.
Non lo fanno;ma per una memoria * indirizzabile * come la domanda, leggere e scrivere in posizioni distinte richiede input di indirizzi distinti e logica di decodifica.Questo è ciò che lo rende dual port.E per evitare inefficienze, è necessario leggere da * due * indirizzi distinti e riscrivere a un terzo * ogni * ciclo, che è ciò che richiede ** tre porte **.Altrimenti hai una macchina che ottiene meno prestazioni per orologio rispetto a una senza questa restrizione.
Capisco perfettamente che ... il commento era anche relativo a questo essere barare, quando ci sono processori nel campo che usano un file di registro, che non lo fa barare.se offrono celle con deq separate, due letture di registro e una scrittura sono due orologi.Progetta il set di istruzioni attorno a questo e puoi avere un processore molto snello e molto meschino.Questi esistono.Usare un file di registro per i registri non è barare.Il numero di porte e il loro aspetto dipende dalle tue esigenze / progettazione (o da cosa è disponibile).L'operatore può utilizzare un file di registro per i registri, non per barare.
L'argomento "barare" è ovviamente irrilevante.L'argomento pratico non è, in particolare, una ** singola porta ** IC SRAM pronta per l'uso non è un buon file di registro, perché indipendentemente dal fatto che abbia porte * dati * di input e output dedicate, è limitato ad averne solo una** porta indirizzo **.Le parti a doppia porta più adatte hanno * due * porte di indirizzo, ma anche questo è solo a metà strada, a meno che due non vengano utilizzate in parallelo per simulare un file di registro con ** tre porte di indirizzo **.Se vuoi semplicità, forse vuoi un accumulatore in un registro discreto, piuttosto che nel registro * file *.
Sam
2018-02-04 10:49:02 UTC
view on stackexchange narkive permalink

Le persone che producono CPU homebrew (ne hai guardate qualcuna?) tendono a usare SRAM per i registri. Nessuno sano di mente avrebbe saldato un carico di infradito. Non importa se lo devi fornire, l'energia necessaria e le possibilità di collegarlo correttamente.

Non è necessario il dual-port se si esegue solo una lettura o una scrittura alla volta. Quindi, ad esempio, per INC un registro, fare in modo che la CPU lo legga in un ciclo, in un buffer. Incrementa il buffer nel ciclo successivo, quindi riscrivilo in un terzo. Time-multiplexing!

Sarà necessaria una sorta di buffering se stai inserendo il contenuto di 2 registri in una ALU. Potresti forse usare un solo buffer e ottenere il secondo operando "live" dalla SRAM. Ma ovviamente non c'è nessun pin "incrementale" su un chip SRAM! Capirai dove deve essere il buffering.

Detto questo, ci sono registri della serie 74. Originariamente intere CPU erano costituite da chip logici della serie 74, o almeno discreti, prima che la serie 74 fosse inventata. La ricerca "file di registro serie 74" ha fornito alcuni indizi. Anche se ovviamente solo perché è stato creato una volta non significa che lo troverai ora.

Hai esaminato gli FPGA o persino i CPLD e i PAL? I PAL sono troppo piccoli per fare una CPU, ma alcuni di essi mescolati con l'altra logica potrebbero farti risparmiare qualche chip. In un FPGA però potresti implementare intere CPU. Gli FPGA sono fondamentalmente migliaia di porte logiche su un chip. Puoi scegliere quale logica fa ogni gate e come sono collegati. Puoi farlo scrivendo codice, come il software. Quindi registra i risultati su un cavo USB a un programmatore.

Gli FPGA sono molto usati nei beni di consumo e in molti molti altri campi.

Non riesco a credere a quanto disperatamente stavo usando i registri D FF per creare un PIO UART e tutti i chip 883B nel 1977.
Questo è il pendio scivoloso.Si passa da componenti discreti, a un chip di memoria, a un CPLD, a un FPGA, poi ci si rende conto che l'FPGA ha un hard core della CPU integrato, e la prossima cosa che si sa è stato solo saldare un FPGA e alcuni componenti passivi a unPCB e non è affatto divertente.
@fluffysheap, e cosa c'è di così divertente nel saldare un bel po 'di chip DIP?E poi non hai l'analizzatore logico per vedere i segnali?E poi combattere i problemi di alimentazione per sempre?Sembra tutto un progetto universitario, con un professore che è bloccato in 70-s / 80-s.Ho visto una classe di "progettazione di microprocessori" in cui tutto ruotava attorno al chip DMA i8237, con accesso al bus fatto di porte separate, su carta.Un suggerimento per costruire tutto utilizzando strumenti FPGA / Verilog con analisi completa dei tempi e tutti i diagrammi temporali è stato rifiutato.FPGA è un modo sicuro per imparare i processori.E dà anche un'abilità molto pratica.
Tony Stewart Sunnyskyguy EE75
2018-02-04 12:32:10 UTC
view on stackexchange narkive permalink

Usare un (moderno) chip SRAM con CPU basata su 74LS è un po 'come filmare Exodus e qualcuno nel film indossa un orologio digitale. (Le SRAMS disponibili all'epoca non erano più in circolazione come parti 74LSxx, quindi le SRAM moderne non esistevano, ma questo è l'unico compromesso ragionevole. )

Si chiama anacronismo, un oggetto fuori posto nel tempo.

Il mio libro preferito " The Soul of a New Machine" descriveva il viaggio pazzo degli ingegneri e del loro manager presso Data General che hanno fatto la storia con "l'Aquila" poco prima la metà fine degli anni '70 quando uscì CMOS.

Era la stessa epoca, ho iniziato la mia vita come ingegnere con esperienza nella progettazione di una scheda UART da 74LSxx perché Rotamola doveva ancora rilasciare il suo MC6821. L'ho progettato su carta in una settimana e ho fatto il layout su una scheda a 4 strati con quei connettori a 44 pin sul bordo della scheda MC6800 e ha funzionato al primo giro. Un'altra scheda si apriva a ventaglio a 128 uscite e 128 ingressi sulla console principale che si illuminava come una casa a Natale con tutti i pulsanti quadrati retroilluminati incisi.

Ma come "Exodus" il tuo design sarà ancora un classico, proprio come Steve a GRC e gli utenti di PDP8 homebrew.

No, la RAM statica risale alla metà degli anni '60 e alcune parti esistevano anche all'interno della famiglia 74LS.Il PMOS 1101 era sul mercato nel 1969 e il CMOS 5101 appare nella letteratura Intel del 1975
Sono d'accordo che quelle parti non sarebbero anacronismi.Ma ho pensato che non stesse scegliendo quelli.
Inoltre, il libro di Kidder tratta gli eventi della * fine * degli anni '70, in particolare il secondo tentativo di creare un * successore * dell'Eclipse a 16 bit del 1974.Sembrerebbe che la maggior parte della storia sia avvenuta nel 1978 e / o 1979, con il prodotto uscito nel 1980.
OK Sono stato io a uscire prima del libro a metà degli anni '70, immagino che il minicomputer DataGeneral nel mio laboratorio nel '75 fosse la prima generazione e non ho letto il libro fino a quando ho lasciato il mio primo lavoro a '79.Ma se qualche SRAM degli anni '70 fosse ancora in produzione, sarei sorpreso.
http://www.nteinc.com/specs/2100to2199/pdf/nte2114.pdf


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...