Redstone Création Ordinateur en redstone - Test d'architecture (ça tourne mal)

16 Février 2014
1 944
391
217
le sud (de Melun)
J'ai voulu voir si l'architecture que j'avais imaginée était viable, j'ai testé dans minecraft.
L'idée c'était d'utiliser l'UAL pour incrémenter le compteur programme et le pointeur stack pour éviter d'avoir des compteurs à part redondants.

À voir plus tard si ça tourne bien j'ai pas encore pu exécuter beaucoup de code dessus.


architecture v6.png



Donc voilà ce que ça donne en redstone :

overview.png


2019-11-01_10.08.55.png


2019-11-01_10.08.08.png



Ce que j'ai construit supporte les interruptions, les appels de procédures et tout le merdier qui va avec un stack.

C'est assez lent puisqu'il faut déjà 2 ticks d'horloge rien que pour charger la bonne instruction.
Le set d'instructions n'est pas tout à fait optimal mais ça devrait pas être compliqué en théorie résoudre le problème, ça va pas vraiment changer la forme des instructions.
Pour l'instant c'est quelque chose ça, avec 16 bits par instruction
  • C'est une instruction normal ou un saut ? / Quel type de saut ?
  • Est-ce qu'il faut enregistrer les flags ? - Le saut c'est une interruption ?
  • Qu'est-ce qu'on sauvegarde ? - Conditions du saut ?
  • Qu'est-ce qu'on met en entrée B de l'UAL ? - Où on saute ?
  • Qu'est-ce qu'on met en entrée A de l'UAL ?

Il y a "pas mal" de mémoire : 32 mots de RAM et 56 mots de ROM (en théorie on pourrait aller jusqu'à 64k). Si jamais j'ai la patience je programmerai un espèce de bios pour pouvoir gérer via une interface système les programmes à exécuter/charger.
 
Dernière édition:
  • J'aime
Reactions: Myuto

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
24
Argh j'avais pas vu ça mais bon sang, t'es à fond là-dedans! Je suis largué!!! J'ai déjà vu des projets d'ordi redstone malades, mais en fait, rien que pour faire ça, faut connaître toutes les composantes d'un pc réel... C'est encore plus impressionnant quand on le voit comme ça!
Super taf! (Enfin je dis ça, je sais même pas si c'est bien ou pas)...
 

Nano_

Architecte en herbe
19 Avril 2016
78
26
107
25
Ce que tu a en tète ressemble plus a une architecture de von newman et en effet c'est viable comme c'est ce qui est fait dans les vrai implémentations comme le pointeur programme et le pointeur de stack sont des registres comme les autres, mais dans minecraft il est assez inefficace d'opérer comme cela et je te conseille vivement d'avoir un automate dédié pour le compteur program et pour la gestion d'un stack. Je te conseille aussi de passer sur une architecture de harvard afin d’éviter les 3 phases (fetch, decode, execute) en ayant une mémoire dédiée aux programmes
 
16 Février 2014
1 944
391
217
le sud (de Melun)
Comme je l'ai expliqué, l'idée était justement de tester la viabilité de tout cela. Ici je ne cherche pas la vitesse évidemment.
Tout le challenge était de construire un décodeur d'instructions capable de gérer ça. Dans le font de ma pensée je projette de construire un ordinateur avec des relais et ça me paraît plus efficace en terme de composants à acheter d'utiliser l'UAL pour toutes les opérations.
Je voulais aussi à terme être en mesure de charger un programme dans la ram via une interface puis l'exécuter, ce qui est impossible avec une architecture de type harvard.