Question:
Est-ce triche si j'utilise une puce SRAM comme fichier de registre?
DylanG
2018-02-03 22:44:01 UTC
view on stackexchange narkive permalink

Je construis actuellement mon propre processeur en utilisant une logique discrète (série 74LSxx et ça) en utilisant ma propre architecture de jeu d'instructions.Je commence à accumuler un peu une facture parce que toutes les chips dont j'ai besoin.Pour ceux d'entre vous qui ont vu des gens construire des processeurs homebrew comme celui-ci, personne que j'ai lu n'a utilisé une puce SRAM comme fichier de registre

Serait-il considéré comme de la triche si j'utilisais une puce SRAM au lieu d'une TONNE de 374 flip flop chips pour les registres?C'est censé être un processeur composé de puces discrètes

La triche?Selon les règles de qui?
Je ne sais pas si c'est de la triche, mais cela ralentira votre conception s'il ne peut accéder qu'à un seul registre à la fois.
@Marla, Je n'ai jamais vu personne créer son fichier de registre à partir de SRAM, alors j'ai pensé que ce n'était pas la bonne façon de faire ce genre de chose Le Photon, j'y ai un seul accès à la fois de toute façon, il n'y a qu'un seul bus
Ouais, un professeur en parlera aux autorités.
Attendez, vous nous dites que vous n'avez pas raffiné le silicium vous-même?Mais sérieusement, faites comme vous le souhaitez.
J'utiliserais tous les deux une ou plusieurs SRAM pour les fichiers de registre et une ou plusieurs EPROM pour la logique.Juste pour limiter le temps dont je disposais aux parties fastidieuses - câblage - et augmenter le temps que je peux faire les parties intéressantes - conception et test.
Votre ALU n'aurait-il pas besoin d'accéder à deux registres en même temps pour effectuer des calculs (par exemple, `ADD R0, R1`)?
L'architecture utilise un accumulateur connecté directement à l'ALU (6502-esque) donc j'ai juste besoin de lui donner un autre opérande
Je ne dirais jamais ça à ta femme
@GregoryKornblum "* Mary, je t'ai été infidèle ... Je t'ai trompé avec une puce SRAM, ça a commencé avec un fer à souder, une chose en a conduit une autre et on s'est tous les deux retrouvés sur le PCB *"
Ce serait peut-être de la triche si votre intention était de créer un ordinateur à partir de composants disponibles à une date donnée, vous pourriez commencer à partir de ceux répertoriés dans un livre de données Texas Instruments ou Fairchild TTL de 1974.Vous pouvez tricher en utilisant des variantes plus modernes (74HC au lieu de 74).Bref, c'est vous projetez, il n'y a pas de règle.
Votre question cherche à obtenir une opinion.Veuillez modifier votre question en une à laquelle vous pouvez répondre par des réponses spécifiques et concrètes.Par exemple, "Y a-t-il un inconvénient à utiliser une SRAM pour le fichier de registre au lieu d'utiliser des bascules?"
Si c'est de la triche, vous êtes en bonne compagnie https://en.wikipedia.org/wiki/Texas_Instruments_TMS9900
et le 7489? https://www.jameco.com/z/7489-Major-Brands-64-BIT-READ-WRITE-MEMORY-DIP-16_50681.html
Ce n'est pas de la triche, mais c'est ** paresseux ** si vous le construisez à partir de zéro pour l'expérience et le plaisir de le faire à la dure.:) Alternativement, vous pouvez admettre que vous avez simplement surspécifié le système au point qu'il ne rentre pas dans la boîte à moins que vous n'utilisiez des raccourcis.C'est VOTRE projet, faites ce que vous aimez.Le coût est cependant une préoccupation valable.
J'aurais pensé que pour être un processeur vraiment discret, il serait entièrement constitué de transistors, donc vous inventez les règles ici, pas nous.
Sept réponses:
Olin Lathrop
2018-02-03 23:10:24 UTC
view on stackexchange narkive permalink

Non, il ne triche aucune règle.C'est parce qu'il n'y a pas de règles en premier lieu.

Ceci est votre projet.Vous le définissez.Vous pouvez l'implémenter de n'importe quelle manière qui vous satisfait.Personne d'autre ne s'en soucie.

Notez que cela signifie qu'il triche si vous voulez qu'il triche.
Chris Stratton
2018-02-04 00:27:25 UTC
view on stackexchange narkive permalink

Comme demandé, c'est purement une question d'opinion, donc pas une question valable ici.

Cependant, notez que les processeurs conventionnels nécessitent un accès à 3 ports au fichier de registre - deux pour obtenir les opérandes, un pour réécrire le résultat.Vous aurez donc besoin d'un chemin de données et de circuits de contrôle beaucoup plus complexes pour pré-extraire et mettre en cache les opérandes si vous souhaitez utiliser une RAM à port unique.Ou vous pouvez construire quelque chose avec un accumulateur distinct et plus privilégié, et un jeu d'instructions permettant uniquement à un seul registre non-accumulateur d'apparaître comme source ou destination (d'ailleurs, il existe des processeurs avec uniquement unaccumulateur)

Utiliser deux mémoires écrites en parallèle et lues individuellement pourrait simplifier un peu les choses, mais cette astuce fonctionne mieux avec les mémoires à double port.Celles-ci sont quelque chose que vous pouvez acheter sous forme d'IC, en plus d'être la forme courante de blocs RAM FPGA.

Je noterai que les tableaux de registres à 3 ports (ou même à 2 ports) étaient une innovation relativement tardive.C'était quelque chose que nous avons essayé quand j'étais dans le biz vers 1973, mais le coût était trop élevé pour la plupart des modèles avec plus de 4 registres.
Vous pouvez simplement utiliser deux puces SRAM en parallèle, une pour chaque opérande et écrire dans les deux.
@Michael - note ci-dessus "Utilisation de deux mémoires écrites en parallèle et lues individuellement ..." mais s'il s'agit de modèles à port unique, une logique de multiplexage sera nécessaire pour basculer les lignes d'adresse entre des lectures distinctes et des écritures partagées à l'adresse du registre de résultat pendantcycles appropriés.
ilkkachu
2018-02-04 02:48:09 UTC
view on stackexchange narkive permalink

Votre projet, vos règles.

Mais comme on dit, "parfait est l'ennemi de fait ".Si le projet semble devenir incontrôlable (que ce soit en termes de complexité, de temps requis ou d'argent requis), vous couper un peu de mou sur un coin de la conception peut être la différence entre une réalisation astucieuse (si un peu folle), et un projet qui ne s'est jamais terminé.

De plus, même si vous décidez de "tricher", il y a toujours la possibilité de faire la version 2 plus tard, avec moins de raccourcis.Vous pouvez même essayer de prendre en compte une éventuelle "mise à jour" dans la première version du design, si vous voulez passer un peu de temps pour faciliter la "mise à jour".

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

Oui!C'est même de la triche si vous utilisez des composants que vous n'avez pas fabriqués vous-même uniquement à partir de matériaux naturels que vous pouvez trouver dans votre propre jardin.

Mais alors vous tricheriez si vous volez du sable dans les bunkers des terrains de golf pour fabriquer du silicium. Je suppose que cette réponse essaie d'aider le PO à remettre en question ce qui est vraiment considéré comme «tricher».
Oui, et l'énergie nécessaire à ce processus doit provenir du soleil, du vent ou des arbres que vous avez vous-même plantés, le tout de l'intérieur du jardin.Aucune triche n'est autorisée en utilisant l'électricité du réseau ou en obtenant des combustibles fossiles d'ailleurs.
En effet.La bonne façon de commencer est de frapper une roche de quartz et de l'anthracite ensemble jusqu'à ce qu'il forme du silicium.Cela peut arriver en quantités appréciables avant que l'Univers ne se détériore.
Zut!Donc je ne peux pas utiliser de sable de fracturation?
old_timer
2018-02-04 05:00:48 UTC
view on stackexchange narkive permalink

Je connais également un processeur qui utilise une SRAM à port unique pour le fichier de registre à usage général, un processeur très rapide / efficace en fait.

D'où pensez-vous que le terme fichier de registre vient? S'enregistre dans une SRAM.

Avec une architecture en pipeline, vous pourriez avoir un seul port SRAM et pas nécessairement avoir un impact sur les performances. Une implémentation SRAM à port unique serait logique pour avoir beaucoup de registres, disons 128, 256 ou 512 registres à usage général.

Oui, c'est parfaitement bien d'implémenter vos "registres" dans un fichier de registre construit à partir d'une SRAM, tant que votre conception fonctionne.

Je ne sais pas si vous essayez d'implémenter un processeur / jeu d'instructions existant ou de créer le vôtre. Dans les deux cas, en le faisant avec des pièces 74xx discrètes, la performance n'est pas nécessairement un objectif par rapport à la raison et au succès. Si vous avez des SRAM de cette génération, alors absolument. Vous pouvez attacher des LED à l'adresse et au bus de données pour faire (plus) de lumières clignotantes montrant des signes de vie.

Ou vous pouvez adopter l'approche 6502 et avoir 256 registres virtuels ou indirects (page zéro) qui ne sont que de la mémoire ou peut-être une mémoire spéciale. Et votre véritable registre à usage général (ou registres à usage général) est peu nombreux et tient en quelques parties. Cela a très bien fonctionné pour la technologie MOS. (L'architecture, pas nécessairement l'implémentation, bien qu'ils aient rasé et scanné et rétro-ingénierie le 6502 afin que vous puissiez voir comment ils l'ont réellement implémenté).

Vous voudrez probablement aussi "tricher" et utiliser une ROM pour la table de recherche qui implémente votre microcode ... Même si cela ne triche pas non plus; c'est une solution connue.

«Avec une architecture en pipeline, vous pourriez avoir un seul port sram et pas nécessairement avoir un impact sur les performances» - pas vraiment.Un tel goulot d'étranglement signifie que vous obtenez un blocage du pipeline sur * toute * série d'opérations de registre, même indépendantes.Si vous ne pouvez pas pour une séquence d'instructions sans dépendances lire à la fois deux opérandes et réécrire un résultat * à chaque horloge *, alors vous avez subi une perte de performances par rapport à une machine qui le peut.
dépend de la conception.Je suis d'accord avec vous en général mais je connais bien un design qui ne présente pas ce problème.
Pour être juste, considérez-vous la lecture et l'écriture dans le même cycle que le simple portage ou le double?Je ne peux pas imaginer que l'OP soit préoccupé par cela, plus par la raison et le succès que par la haute performance.et un fichier de registre (quel que soit le nombre de ports) y contribuerait.
La lecture / écriture simultanée nécessite deux ports.Il peut y avoir des béliers à double port spécialisés (par rapport à usage général) où chaque port n'a qu'un rôle donné, mais en termes de parties à usage général, un DPR complet serait nécessaire - et pour une capacité complète de deux opérandes, deux d'entre eux écrits en parallèle.
nous n'avons aucune raison pour laquelle D et Q de la bascule doivent être liés à la même logique, si vous appelez ce dual alors très bien.
Ils ne le font pas;mais pour une mémoire * adressable * comme la question porte, la lecture et l'écriture à des emplacements distincts nécessitent des entrées d'adresse distinctes et une logique de décodage.C'est ce qui en fait un double port.Et pour éviter toute inefficacité, vous devez lire à partir de * deux * adresses distinctes et réécrire dans un troisième * chaque * cycle, ce qui nécessite ** trois ports **.Sinon, vous avez une machine qui en fait moins par horloge qu'une machine sans cette restriction.
Je comprends parfaitement que ... le commentaire était également lié au fait que c'était de la triche, quand il y a des processeurs sur le terrain qui utilisent un fichier de registre, cela ne fait pas de la triche.s'ils offrent des cellules avec d et q séparés, deux lectures de registre et une écriture correspondent à deux horloges.Concevez le jeu d'instructions autour de cela et vous pouvez avoir un processeur très léger et très méchant.Celles-ci existent.Utiliser un fichier de registre pour les registres n'est pas de la triche.Le nombre de ports et leur apparence dépendent de vos besoins / conception (ou de ce qui est disponible).L'op peut utiliser un fichier de registre pour les registres, pas de triche.
Le sujet de la «tricherie» est bien entendu sans importance.Le sujet pratique n'est pas - en particulier, une SRAM IC à port unique ** sur étagère ** ne fait pas un bon fichier de registre, car peu importe si elle a des ports d'entrée et de sortie dédiés * données *, elle est limitée à n'en avoir qu'un** port d'adresse **.Les parties à double port plus appropriées ont * deux * ports d'adresse - mais même cela n'est qu'à mi-chemin, à moins que deux ne soient utilisés en parallèle pour simuler un fichier de registre avec ** trois ports d'adresse **.Si vous voulez la simplicité, peut-être voulez-vous un accumulateur dans un registre discret, plutôt que dans le registre * fichier *.
Sam
2018-02-04 10:49:02 UTC
view on stackexchange narkive permalink

Les gens qui fabriquent des processeurs homebrew (en avez-vous regardé?) ont tendance à utiliser SRAM pour les registres. Personne de sensé ne voudrait souder une charge de tongs. Peu importe de se le permettre, la puissance nécessaire et les chances de le faire brancher correctement.

Vous n'avez pas besoin de double portage si vous n'effectuez qu'une seule lecture ou écriture à la fois. Donc, pour, par exemple, INC un registre, demandez à votre CPU de le lire sur un cycle, dans un tampon. Incrémentez le tampon dans le cycle suivant, puis réécrivez-le dans un troisième. Multiplexage temporel!

Une sorte de tampon sera nécessaire si vous alimentez le contenu de 2 registres dans une ALU. Vous pourriez peut-être utiliser un seul tampon et obtenir le deuxième opérande "en direct" de la SRAM. Mais bien sûr, il n'y a pas de broche "incrément" sur une puce SRAM! Vous saurez où la mise en mémoire tampon doit être.

Cela dit, il existe 74 registres de la série. À l'origine, des processeurs entiers étaient constitués de 74 séries, ou du moins de puces logiques discrètes, avant l'invention de la série 74. La recherche de "fichier de registre de la série 74" a donné quelques pistes. Bien sûr, ce n'est pas parce qu'il a été fait une fois que vous le trouverez maintenant.

Avez-vous examiné les FPGA, ou même les CPLD et les PAL? Les PAL sont trop petits pour faire un CPU, mais quelques-uns d'entre eux mélangés à l'autre logique pourraient vous faire économiser quelques puces. Dans un FPGA, vous pouvez implémenter des processeurs entiers. Les FPGA sont essentiellement des milliers de portes logiques sur une puce. Vous pouvez choisir la logique de chaque porte et la manière dont elles sont connectées. Vous faites cela en écrivant du code, comme un logiciel. Ensuite, envoyez les résultats sur un câble USB à un programmeur.

Les FPGA sont beaucoup utilisés dans les biens de consommation et dans de nombreux autres domaines.

Je ne peux pas croire à quel point j'utilisais les registres D FF pour créer un PIO UART et tous les puces 883B en 1977.
C'est la pente glissante.Vous passez de composants discrets, à une puce mémoire, à un CPLD, à un FPGA, puis vous vous rendez compte que le FPGA a un noyau dur de processeur intégré, et la prochaine chose que vous savez tout ce que vous avez fait était de souder un FPGA et des composants passifs à unPCB et ce n'est pas du tout amusant.
@fluffysheap, et qu'est-ce qui est si amusant de souder un gros tas de puces DIP?Et puis n'avez pas d'analyseur logique pour voir les signaux?Et puis combattre les pépins de puissance pour toujours?Tout cela ressemble à un projet universitaire, avec un professeur coincé en 70 s / 80 s.J'ai vu une classe de "conception de microprocesseur" où tout tournait autour de la puce DMA i8237, avec un accès au bus fait de portes discrètes, sur papier.Une suggestion de tout construire en utilisant les outils FPGA / Verilog avec une analyse temporelle complète et tous les chronogrammes a été rejetée.FPGA est un moyen sûr d'apprendre les processeurs.Et donne également une compétence très pratique.
Tony Stewart Sunnyskyguy EE75
2018-02-04 12:32:10 UTC
view on stackexchange narkive permalink

Utiliser une puce SRAM (moderne) avec un processeur basé sur 74LS, c'est un peu comme filmer Exodus et quelqu'un dans le film porte une montre numérique. (Les SRAMS disponibles à l'époque ne sont plus là comme les pièces 74LSxx, donc les SRAM modernes n'existaient pas, mais alors c'est le seul compromis raisonnable. )

C'est ce qu'on appelle un anachronisme, un objet égaré dans le temps.

Mon livre préféré " L'âme d'une nouvelle machine" décrivait le parcours maladroit des ingénieurs et de leur manager chez Data General qui ont marqué l'histoire avec "l'aigle" juste avant le milieu fin des années 70 lorsque le CMOS est sorti.

C'était la même époque, j'ai commencé ma vie en tant qu'ingénieur avec l'expérience de la conception d'une carte UART à partir de 74LSxx car Rotamola n'avait pas encore sorti son MC6821. Je l'ai conçu sur papier en une semaine et j'ai fait la mise en page sur une carte à 4 couches avec ces connecteurs de bord à 44 broches sur la carte MC6800 et cela a fonctionné lors du premier tour. Une autre carte déployée sur 128 sorties et 128 entrées sur la console principale qui s'illuminait comme une maison à Noël avec tous les boutons-poussoirs carrés rétroéclairés gravés.

Mais comme "Exodus" , votre design sera toujours un classique, tout comme Steve chez GRC et les utilisateurs du homebrew PDP8.

Non, la RAM statique date du milieu des années 1960 et certaines pièces existaient même au sein de la famille 74LS.Le PMOS 1101 était sur le marché en 1969 et le CMOS 5101 apparaît dans la littérature Intel de 1975
Je conviens que ces parties ne seraient pas des anachronismes.Mais j'ai supposé qu'il ne les choisissait pas.
De plus, le livre de Kidder traite des événements de la * fin * des années 1970, en particulier de la deuxième tentative de créer un * successeur * à l'Eclipse 16 bits de 1974.Il semblerait que la majeure partie de l'histoire ait eu lieu en 1978 et / ou 1979, le produit étant sorti en 1980.
OK C'est moi qui suis sorti avant le livre au milieu des années 70, je suppose que le mini-ordinateur DataGeneral de mon laboratoire en 75 était la 1ère génération et je n'ai lu le livre que longtemps après avoir quitté mon premier emploi en '79.Mais si des SRAM des années 70 sont encore en production, je serais surpris.
http://www.nteinc.com/specs/2100to2199/pdf/nte2114.pdf


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...