mémoire pour l'ordinateur le plus simple possible (Pi0K)

13

J'aimerais construire l'ordinateur le plus simple possible. Je ne me soucie pas de la vitesse ou du stockage, en effet, avoir une vitesse lente et un stockage faible est un énorme avantage car je veux le construire à partir de transistors (idéalement des relais!) Et je veux une LED pour chaque état. Il sera programmé via un Raspberry Pi qui hébergera une caméra afin que vous puissiez voir chaque cycle d'horloge s'exécuter (oui, il va fonctionner à Hz et non à GHz). Ce sera une conception ouverte avec l'intention que les écoles puissent acheter les pièces, comprendre et améliorer la conception. Le budget total doit donc être bien inférieur à 400 £, de préférence environ 100 £.

J'ai fait des recherches sur cela pendant de nombreuses années et j'ai de bonnes idées pour le CPU (registres minimaux, microcode dans les commutateurs DIP et opérations logiques / arithmétiques série binaires pour réduire le nombre de transistors). Ce que je ne peux pas comprendre, c'est comment obtenir la mémoire, je voudrais 1024 à 8096 bits.

Le mieux que je puisse trouver est deux décodeurs 6 bits one-of-n donnant accès à une grille de condensateurs 64 x 64. Soit ils ont une charge, soit ils n'en ont pas, et la lecture renforcerait cet état. Il n'y aurait pas de LED sur les condensateurs car le rafraîchissement de cette «DRAM» serait dans l'ordre ou en minutes (ce qui est dommage car ce serait la seule partie à ne pas afficher l'état).

D'autres idées incluent une certaine forme de lecteur de bande (mécanisme de cassette compact: grand stockage, trop complexe, pas de recherche), une mémoire de tambour (bande autour d'une boîte de grains: trop difficile à faire fonctionner la mécanique), une mémoire mécanique (roue de vélo et roulements à billes: trop d'erreurs sur les bits), mémoire centrale (gros noyaux de ferrite durs: toujours très difficile à obtenir à l'échelle requise), bande / carte (pouvons-nous toujours acheter les lecteurs de bande), disque rotatif avec trous perforés dans l'ordre binaire et certains magnétiques mémoire pour le stockage (trop complexe à construire).

En fin de compte, l'objectif est de publier une conception qui peut être construite au cours d'une année scolaire où toutes les parties d'un processeur et de la mémoire sont `` visibles '' et vous pouvez donc voir les instructions extraire, décoder en microcode et adresser le décodage / enregistrer l'accès / la logique tous qui se déroule en quelques minutes.

Si quelqu'un a des idées pour une mémoire vraiment bon marché (<< £ 100) où il est clair exactement comment cela fonctionne, faites-le moi savoir.

Tony

La situation actuelle de PS est sur http://www.blinkingcomputer.org/

Tony Robinson
la source
Faites simplement une recherche sur Google pour les personnes qui ont déjà fait cela et des choses similaires, les conceptions sont là, vous pouvez créer une nomenclature et constater que vous avez probablement besoin d'un peu plus d'argent et de temps.
PlasmaHH
Je dirais qu'aller au niveau du transistor pourrait être un peu trop pour un projet scolaire. Je pense que l'intégration CMOS à petite et moyenne échelle serait beaucoup plus faisable et probablement plus compréhensible (portes, registres, tampons, décodeurs, etc.). Vous pouvez inclure quelque chose qui montre comment les grilles sont faites de transistors, les bascules sont faites de grilles, etc.).
Tut
1
Juste une idée: vous devriez rendre la mémoire (du programme) facilement modifiable à la main, afin que les gens puissent "programmer" manuellement avec leurs mains :-).
oyvind
Décidez d'abord de ce que vous voulez que l'ordinateur puisse faire. Cela déterminera la quantité de mémoire dont vous avez besoin et le jeu d'instructions.
Tony Ennis
Merci a tous. PlasmaHH: Oui, c'est un énorme défi de le faire en termes d'argent et de temps, c'est pourquoi personne d'autre ne l'a encore fait. Tut: Je veux vraiment pouvoir voir chaque signal. Les gens verront alors comment les portes logiques sont construites à partir de transistors. oywind: Oui, il sera programmable via un Raspberry Pi avec une interface Web que vous pouvez écrire votre propre code et le voir fonctionner avec une webcam. Tony Ennis: Je veux construire l'ordinateur le plus simple qui affiche chaque signal - cela démontrera tous les aspects et nécessitera des architectures non standard, comme une ALU bit-serial.
Tony Robinson

Réponses:

9

De nombreuses personnes ont construit des ordinateurs à partir de transistors discrets, de circuits intégrés, de relais et même de tubes à vide. Ils vont des machines 4 bits jusqu'à 32 bits. Le 4-bitters sera bien sûr le plus simple que vous puissiez construire et faire quoi que ce soit. Le tout premier microprocesseur était le 4004 4 bits d'Intel .

Je commencerais par rechercher sur Google les " ordinateurs 4 bits maison " (sans les guillemets).

Voici une carte d'un ordinateur transistorisé 4 bits:

entrez la description de l'image ici

En ce qui concerne la mémoire, certains de ces projets qui utilisent des transistors discrets "trichent" et utilisent des puces SRAM. Ils sont incroyablement bon marché pour des quantités modérées de mémoire, 32 Ko sont de 3,28 $ et ne nécessitent aucune horloge et aucun rafraîchissement.

Même si le reste de votre ordinateur utilise des relais, leur utilisation pour la mémoire sera extrêmement coûteuse.

Si vous pouvez vous en sortir avec 1K bits, vous pouvez en construire un avec des bascules transistorisées; Les 2048 2N3904 coûteront 3 ¢ chacun (60 $ au total, plus les autres composants qui seront encore moins chers - résistants à 1/2 centime, etc.). Vous pouvez obtenir des PCB pour 10 $ chacun, puis embaucher un enfant pour les farcir.

Ordinateurs de relais datent toutes les arrière jusqu'aux années 1930 fin des années, et l' un des premiers a été le Harvard Mark I . C'est de là que vient le nom de l'architecture Harvard (espace de programme et données séparés, par rapport à l' architecture von Neumann qui combine les deux).

L'ordinateur relais de brassage à domicile le plus célèbre est celui construit par Harry Porter.

entrez la description de l'image ici

Découvrez les vidéos de l'ordinateur en cours d'exécution. Me rappelle un ancien central téléphonique électromécanique.

Voici une partie d'un autre ordinateur relais de brassage maison appelé Zusie :

entrez la description de l'image ici

Beaucoup de lumières clignotantes.

Et enfin, voici un lien vers une vidéo d'un additionneur 4 bits, composée de 24 relais. Les additionneurs comme celui-ci sont au cœur de l'ALU (unité de logique arithmétique) dans un ordinateur.

tcrosley
la source
Désolé, le "J'ai fait des recherches sur cela depuis de nombreuses années" a été enterré dans le deuxième paragraphe. J'ai édité le titre de l'article pour indiquer clairement que c'est la mémoire qui m'importe. Si vous pouvez vous en tirer avec 1K bits, vous pouvez en créer un avec des bascules transistorisées; Les 2048 2N3904 coûteront 3 ¢ pièce (60 $ au total, plus les autres composants qui seront encore moins chers - résistants à 1/2 centime, etc.). Vous pouvez obtenir des PCB pour 10 $ chacun, puis embaucher un enfant pour les farcir.
Tony Robinson
ctd ... c'est plus proche que je ne l'avais estimé, mais vous avez besoin du décodage d'adresse et je mettrais plus de transistors par cellule mémoire. Peut-être qu'une cellule de mémoire DRAM à un transistor et un condensateur est également possible dans les limites du budget.
Tony Robinson
@TonyRobinson J'ai essayé de résoudre le problème de l'utilisation de la mémoire (comme vous l'avez reconnu) mais j'essayais également de fournir des informations sur votre désir de fabriquer un ordinateur à partir de transistors et / ou de relais discrets, et d'illustrer que plusieurs ont réussi. Bonne chance dans vos efforts.
tcrosley
6

Si vous voulez une mémoire simple , ne cherchez pas plus loin qu'une bascule . Avec deux transistors et quatre résistances, vous pouvez avoir un peu de mémoire. Vous pouvez également faire une bascule avec deux portes NOR croisées, ou simplement acheter un circuit intégré avec déjà un tas de bascules.

En fait, le cache CPU très rapide est essentiellement un tas de bascules, intégrées dans le CPU.

Phil Frost
la source
2
La DRAM consomme plus d'énergie car elle doit être constamment rafraîchie, tandis que la SRAM utilise uniquement un petit courant de repos lorsqu'elle est inactive. La raison de l'utilisation de condensateurs est qu'elle ne nécessite qu'un seul transistor par bit, ce qui permet des densités de mémoire beaucoup plus élevées.
Tom Carpenter
Vous avez raison - j'avais en tête de simples bascules RTL. Je vais modifier pour clarifier.
Phil Frost
1
Les CI sont sortis - ils cachent ce qui se passe réellement. Je veux que chaque signal soit exposé autant que possible. Je ne me soucie vraiment pas de l'alimentation - je ne vois pas l'alimentation être un problème, elle sera câblée à un Raspberry Pi donc l'alimentation est disponible. Un DRAM à transistor peut être une bien meilleure façon de procéder que ma gamme d'idées de condensateurs comme le suggérait le post précédent - je devrai déterminer quels transistors sont nécessaires pour que la fuite de charge reste suffisamment basse (j'ai besoin de temps de rafraîchissement dans le ordre des minutes). Sinon, oui, les tongs ressemblent à la prochaine meilleure idée.
Tony Robinson
@TonyRobinson "Il sera connecté à un Raspberry Pi afin que l'alimentation soit disponible." - ...peut être. Dépend de la puissance maximale disponible via un Raspberry Pi et de la famille logique que vous prévoyez d'utiliser. (Je m'attends à ce qu'un bloc d'alimentation moyen de banc soit en mesure de fournir un peu plus de puissance, cependant)
user253751
2

Je suis d'accord qu'il serait plutôt cool d'avoir un système informatique complet avec une LED pour chaque bit d'état, visible à l'œil humain.

L' ordinateur relais TIM 8 utilise 8 condensateurs, 2 diodes et un relais SPDT par octet dans ses 12 octets de mémoire principale RAM (mémoire de données). (Le TIM 8 possède 16 octets de mémoire variable si vous incluez des registres).

L'ordinateur relais TIM 8 utilise une bande perforée pour sa mémoire de programme.

entrez la description de l'image ici

entrez la description de l'image ici

Est-il possible de remplacer ces diodes par des LED, il y a donc une brève impulsion montrant les données entrant ou sortant d'un octet de RAM? Peut-être que si le système actualise la DRAM assez rapidement, en balayant chaque octet de RAM, alors chaque bit d'état semble être visible sur ces LED (bien que techniquement un seul octet de LED soit activé à un instant donné). (Il faudrait que ce soient des LED à fort courant si nous voulons CHARGER et STOCKER les données de ces condensateurs vers des registres à relais).

Est-il possible de mettre une résistance et une LED sur chaque condensateur de stockage de bits, montrant vraiment simultanément chaque bit d'état? (Il faudrait que ce soient des LED à faible courant et des condensateurs physiquement grands si nous voulons que le condensateur conserve les données suffisamment longtemps pour un taux de rafraîchissement raisonnable. Certaines LED peuvent être facilement vues avec seulement 1 mA de courant. Avec un rafraîchissement de 1 seconde condensateurs de cycle et (d'estimation) initialement chargés à 12 V même si (estimation) une charge de 7 V sur le condensateur est suffisante pour charger le matériel en aval, puis le condensateur a besoin d'une cote de C ~ = i * t / V = ​​1 mA * 1 s / (12 V - 7 V) = 200 uF.).

Bien sûr, cela sera beaucoup plus grand et nécessitera plus de travail humain à assembler que n'importe quelle mémoire principale basée sur un circuit intégré.

davidcary
la source
1

Pourquoi n'utilisez-vous pas simplement un simple processeur 8 bits (par exemple 6502) et une très petite quantité de mémoire (registres CPU, IC RAM, et une très petite quantité de stockage externe (par exemple: FD, HD ou disque flash, etc.) .) puis expliquez avec des diapositives ce qui suit:

  1. Les composants matériels, sous-composants et leurs fonctions
  2. Le système d'exploitation, les programmes système et les programmes utilisateur
  3. Charger et exécuter un programme simple pour additionner 2 nombres ensemble, stocker le résultat dans chaque type de mémoire et l'afficher sur un écran vidéo.

Si vous souhaitez garder l'appareil aussi simple et peu coûteux que possible, utilisez un système de développement de microcontrôleur comme système de base ou même un Arduino est assez simple et peu coûteux. Aucun des élèves ne va construire un simple relais ou un ordinateur à tube à vide - et personne ne devrait vraiment le faire. Ils devraient commencer par un bon livre et un Arduino pour une compréhension de base de la programmation. Plus tard, s'ils veulent se lancer dans la lecture / le contrôle de périphériques externes, ils peuvent se plonger dans une programmation spécifique ou dans l'ingénierie.

Voici un bon projet à considérer pour vos idées:
http://www.instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS

DIYser
la source
Bien que de nos jours nous l' appelions le " W65C02S "
Ignacio Vazquez-Abrams
Merci, je viens de 6502 jours (micro BBC mais aussi j'ai travaillé sur le ZX80). Je suis d'accord qu'il y a beaucoup à apprendre à ce niveau, en fait je venais de relire le BBC Microcomputer Advanced User Guide . Je veux vraiment être un niveau en dessous, vous voyez une instruction 5 bits entrer, elle saute à travers un petit ensemble de microcode qui définit quelques registres de bits et lignes de bus et appelle un peu ALU série pour que vous puissiez voir toute la logique passe petit à petit. C'est pourquoi ce sera le plus lent de tous les temps.
Tony Robinson
Ouais - ce sera plus lent. Avez-vous regardé les détails de cette URL: instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS C'est en fait assez bon et permet une personnalisation unique pour votre système.
DIYser
0

Je conviens qu'il serait plutôt cool d'avoir un système informatique complet avec une LED pour chaque état, visible à l'œil humain, plutôt que caché dans une mystérieuse boîte noire.

Vous pourriez envisager d'utiliser un bus mémoire bit-parallèle plus ou moins standard - peut-être quelque chose comme le STEbus (bus IEEE-1000) .

Vous pourriez envisager d'utiliser un tas de circuits intégrés comme 74HC273 ou 74LS373 ou 74HC564 pour stocker les données afin que l'état actuel des données à l'intérieur de la puce soit toujours visible sur les LED connectées aux broches de sortie parallèle. Utilisez ensuite des tampons octaux à 3 états (tels que le 74HC241 ou 74LS245) ou des multiplexeurs, également connectés à ces broches de sortie parallèles, pour canaliser les données dans le bus. Vous vous retrouvez avec quelques puces de décodeur one-of-N et 2 puces par 8 bits de stockage. "Cela vous permet ... de voir quelles données sont réellement stockées dans chaque octet de RAM." - Ordinateur SAP-1 simple comme possible de Pong Guy avec RAM à composants discrets . Le même arrangement est utilisé pour les registres du CPU Fourbit de Jaromir ou les registres du CPU spaghetti 8 bits de Kyle .

Les prix actuels (2016) de Mouser.com sont d'environ 0,11 $ / bit en quantité 10 pour un tel arrangement (un verrou de stockage octal plus un tampon octal à 3 états par 8 bits) et 0,05 $ / bit pour les nouvelles LED en quantité 500. 2 ^ 9 octets = 512 octets = 2 ^ 12 bits = 4096 bits, c'est (très grossièrement)

  • 205 $ en LED
  • 450 $ en stockage et puces tampons
  • $ ??? les puces de décodeur 1 sur N pour sélectionner la puce de stockage ou de tampon appropriée; le coût des cartes, du fil, de la main-d'œuvre, etc.

Vous pourriez peut-être créer (très grossièrement) 64 octets de mémoire de données (la même quantité de mémoire de données qu'un Atmel ATTINY13 ou un Microchip PIC16F570) pour environ 90 $ (ce qui peut correspondre à votre budget de 150 $ ~ = 100 £).

Vous pouvez voir pourquoi il est tentant de remplacer toutes ces puces de stockage et de tampon et la plupart des puces de décodeur par une puce SRAM parallèle 32Kx8 standard, vous offrant beaucoup plus de stockage pour moins de 10 $. (Alliance AS6C1008-55PCN, Cypress CY7C199CN-15PXC, etc.)

C'est peut-être la raison pour laquelle la plupart des processeurs maison, du minuscule processeur Nibbler 4 bits à l'impressionnant ordinateur relais RC-3 http://www.computerculture.org/2012/09/rc-3-relay-computer/ http: / /www.computerculture.org/projects/rc3/ , sont connectés à une puce SRAM de boîte noire pour la mémoire principale.

Avec quelque chose comme un bus mémoire standard, vous pourriez peut-être avoir plusieurs cartes mémoire différentes connectées au CPU en même temps:

  • Quelques octets de stockage de variables complètement visibles et quelques octets de ROM de programme câblé complètement visible, ce qui devrait suffire pour certains programmes de démonstration intéressants.
  • Une puce SRAM qui peut parfois être branchée pour contenir des programmes ou des données ou les deux lorsque vous n'avez pas encore suffisamment de mémoire complètement visible pour les stocker.
davidcary
la source
0

Voici une autre suggestion pour un projet similaire qui pourrait être utile - construire une machine de Turing . Il s'agit de la machine informatique la plus simple possible

Dirk Bruere
la source