Créer un ordinateur primitif à partir de zéro

Un ordinateur est facile. Ou pas?


Toute personne intéressée par le domaine des technologies de l'information a au moins une fois réfléchi au fonctionnement réel de l'ordinateur. Et en effet, avec l'aide d'un ordinateur, vous pouvez faire tellement de choses surprenantes qu'il est impossible de croire que tout ce qui se passe à l'intérieur est l'addition de chiffres. Pourquoi ne pas le faire toi-même?

image

Cette idée est clairement visible dans le livre de Charles Petzold «Code» - une bonne lecture pour ceux qui veulent comprendre le dispositif informatique sur leurs doigts sans passer beaucoup de temps. Ce livre m'a fait forte impression, à tel point que j'ai décidé que l'ordinateur était une unité complètement simple et qu'il n'y avait rien de compliqué.

Mais ce n'est pas le cas. Après avoir lu, j'ai toujours eu le sentiment que quelque chose m'était caché, que certains aspects de l'architecture n'étaient pas du tout affectés. Pour plus d'informations, je me suis tourné vers le livre suivant, Computer Architecture par Andrew Tanenbaum . Les informations contenues dans ce livre étaient beaucoup plus complètes, mais je n'ai pas obtenu exactement ce que je voulais.

Sur ce chemin mon chemin dans le monde de l'architecture informatique s'est arrêté, les études ont commencé, j'ai été distrait par d'autres projets qui m'étaient plus intéressants à l'époque. Mais, malheureusement, je fais partie de ces personnes qui ne peuvent rien utiliser sans remords, ne connaissant pas du moins grossièrement le mécanisme de cet outil. Cela m'a fait chercher du matériel sur tout.

Une série de déceptions est survenue après avoir lu plusieurs chapitres de livres sur les moteurs de jeux, les compilateurs, les systèmes d'exploitation, etc.J'ai été à peine perdu: un monde qui semblait logique et modérément simple en un instant est devenu énorme et déroutant, nécessitant une quantité impressionnante de connaissances.

Le début d'un grand voyage


Ce qui m'a sauvé, c'est la réponse d'un utilisateur dans un forum au message d'une personne souffrant d'un "trouble" similaire, le monde informatique lui semblait si énorme qu'il ne pouvait certainement pas être compris. Je me souviens de ces mots et ils m'aident à chaque fois que je tombe sur quelque chose de nouveau. «Ne vous laissez pas submerger» est quelque chose que tout débutant en informatique devrait dire.

Et puis j'ai commencé à surfer sur Internet avec une vigueur renouvelée à la recherche de littérature. J'ai eu la chance de tomber sur le merveilleux livre The Elements of Computing Systems. Construire un ordinateur moderne à partir des premiers principes »par Noam Nisan et Shimon Schocken (pas d'édition russe). C'est pour ceux comme moi qui montrent la création d'un ordinateur qui fonctionne vraiment à partir de zéro, c'est-à-dire à partir de portes logiques.

J'ai eu une idée et j'ai commencé à travailler. Il a commencé par ce qu'il avait fait une fois après avoir lu Petzold - additionneurs, registres, multiplexeurs. Ce sont certains des appareils les plus simples dont le travail n'est pas du tout difficile à comprendre (si vous ne pensez pas à l'efficacité), et vous pouvez le faire en 10 minutes dans une application pratique sur votre smartphone.

J'ai commencé chaque chapitre suivant avec une soif de connaissances. Conçu ALU, guidé par les tâches du livre. Je ne peux pas dire que j'ai trouvé quelque chose dedans, plutôt, ils m'ont donné les pièces finies et je les ai assemblées dans une belle voiture. Mais quel plaisir j'ai eu quand j'ai réalisé que j'avais assemblé une ALU pleinement fonctionnelle de mes propres mains.

Circuit imprimé ALU, fabriqué dans le programme BOOLR
image

Premiers fruits


Il a été suivi par un processeur 16 bits entièrement fonctionnel, que j'ai terminé aujourd'hui. Il n'y a pas de limite à mon bonheur, mais je ne vais pas m'arrêter. À mon grand regret, même si l'ensemble du processeur du livre a été entièrement assemblé à partir de zéro, l'assembleur était une abstraction dans le chapitre suivant (ce qui est logique, le livre est conçu pour une exposition plus ou moins concise, bien que détaillée). Après un peu de tristesse, j'ai réalisé que les assemblys sont également un langage de programmation, et la création d'un assembleur à part entière prendra beaucoup de temps.

Schéma du processeur fini. Le gros point noir est le même ALU
image

À propos de l'assembleur dans un livre
En fait, ce sujet dans le livre n'a pas été complètement omis. Il dit que l'assembleur peut être écrit en utilisant n'importe quel langage de programmation de haut niveau. En tant qu'idiot et courageux, cette option ne me convient pas beaucoup, je veux tout faire de mes propres mains en utilisant le processeur que j'ai. Et oui, je comprends que je vais perdre beaucoup de temps, mais je vais en profiter, j'en suis sûr.

Écrire votre assembleur est un objectif ambitieux, mais ce n'est pas la seule difficulté. Le chemin que j'ai choisi s'annonce difficile. Les registres et en général la mémoire du programme BOOLR ne peuvent être implémentés qu'en utilisant des portes logiques. Pourquoi est-ce un problème? C'est simple: 1024 octets de RAM insignifiants des dizaines de fois essaient récursivement de mettre leurs registres composites 16 bits dans la RAM de mon ordinateur. En voici le résultat:

Capture d'écran de la liste des processus du gestionnaire de tâches

D'une manière générale, parfois un projet ne s'ouvre tout simplement pas en raison d'un manque de RAM. Cela ressemble à une impasse, mais je n'ai pas l'intention de m'arrêter là.

Source: https://habr.com/ru/post/fr483568/


All Articles