Cet article vise Ă examiner la conception et la mise en Ĺ“uvre de ordinateurs redstone dans Minecraft.
Voir chapitre 1, Tutoriel sur la construction d'un ordinateur, pour un didacticiel détaillé sur la construction d'un ordinateur dans Minecraft et sur la façon d'étendre et d'améliorer l'exemple. Ne nécessite aucune connaissance approfondie de l'informatique. PAS TERMINÉ.
Voir chapitre 2, Planification d'un ordinateur Redstone, pour les concepts informatiques de base de la conception et de la compréhension d'un ordinateur Redstone dans Minecraft. Ne nécessite aucune connaissance approfondie de l'informatique.
- 1 Aperçu
- 1.1 Implémentations
- 2 Chapitre 1 : Tutoriel sur la construction d'un ordinateur
- 2.1 Introduction et prérequis
- 2.2 L'ordinateur MASIC
- 2.3 Étape 1 : décodeurs de mémoire et d'adresse (THÉORIE)
- 2.4 Étape 1 : décodeurs de mémoire et d'adresse (PRATIQUE)
- 2.4.1 DĂ©codeur d'adresse
- 2.5 Étape 2 : Construire une unité logique arithmétique (THÉORIE)
- 2.5.1 Ajouter deux nombres
- 2.5.1.1 Nombres fractionnaires
- 2.5.2 Soustraire deux nombres
- 2.5.3 Multiplication de deux nombres
- 2.5.1 Ajouter deux nombres
- 2.6 Étape 2 : Construire une unité logique arithmétique (PRATIQUE)
- 2.7 Étape 3 : Jeu d'instructions et architecture de la machine (THÉORIE)
- Pré-requis 2.7.1
- 2.7.2 Le jeu d'instructions MASIC
- 2.7.3 Écriture de programmes
- 2.7.4 Cycle d'instructions
- 2.8 Étape 3 : Jeu d'instructions et architecture de la machine (PRATIQUE)
- 3 Chapitre 2 : Planification d'un ordinateur Redstone
- 3.1 Principes fondamentaux d'un ordinateur
- 3.2 Machine-Architecture
- 3.3 Stockage de données informatiques
- 3.3.1 Stockage principal
- 3.3.1.1 Registres et indicateurs
- 3.3.2 Caches
- 3.3.3 MĂ©moire vive (RAM)
- 3.3.4 Stockage secondaire
- 3.3.5 Stockage tertiaire
- 3.3.1 Stockage principal
- 3.4 Modèle d'exécution
- 3.4.1 Harvard
- 3.4.2 de Neumann
- 3.5 Tailles des mots
- 3.5.1 Data-Word
- 3.5.2 Instruction-mot
- 3.6 Jeu d'instructions
- 3.7 Architecture de l'ordinateur
- 3.7.1 Autobus
- 3.7.2 composants
- 4 Chapitre 3 : Concevoir un ordinateur
- 4.1 Instructions-Set-Architecture
- États 4.1.1
- 4.1.1.1 symboles
- Numéros 4.1.1.2
- 4.1.2 Transitions
- Mots 4.1.2.1
- 4.1.2.2 Instructions
- États 4.1.1
- Classification 4.2
- 4.2.1 Abstraction
- 4.2.2 Cartographie
- 4.2.2.1 symboles
- Numéros 4.2.2.2
- Fonctions 4.2.2.3
- 4.3 Formalisation
- 4.3.1 Calculabilité
- 4.3.2 variables
- 4.3.3 Hiérarchies
- MĂ©moire 4.3.3.1
- 4.3.3.2 Exécution
- 4.3.4 SĂ©mantique
- Données 4.3.4.1
- 4.3.4.2 ContrĂ´le
- 4.4 Machine-Architecture
- 4.4.1 Chemins de données
- Traitement 4.4.1.1
- 4.4.1.2 Unité Logique Arithmétique
- 4.4.1.2.1 Bus
- Stockage 4.4.1.3
- 4.4.1.4 État de la machine
- 4.4.1.4.1 Compteur de programme
- 4.4.2 Chemins de contrĂ´le
- Traitement 4.4.2.1
- Unité de contrôle 4.4.2.1.1
- 4.4.2.1.2 Bus
- Stockage 4.4.2.2
- 4.4.2.2.1 MĂ©moire de programme
- 4.4.2.3 État de la machine
- 4.4.2.3.1 Compteur de programme
- Horloge 4.4.2.3.2
- Traitement 4.4.2.1
- 4.4.1 Chemins de données
- 4.1 Instructions-Set-Architecture
- 5 Conseils
- 6
- 7
Aperçu
Les ordinateurs facilitent la mise en œuvre des idées qui sont communiquées par les humains par le biais de la programmation.
Cet article expliquera les bases de la conception et de la construction d'un ordinateur dans Minecraft, en supposant que le lecteur soit assez familier avec la redstone et les ordinateurs Ă un niveau de base.
Il n'y a vraiment aucun moyen de construire un ordinateur sans savoir comment fonctionne un ordinateur. Le tutoriel tente d'expliquer tout ce que vous devez savoir mais nécessite un peu de compréhension ici et là de l'informatique, ce qui est indiqué dans la section des prérequis de chaque onglet. La partie la plus profonde que nous couvrons est jusqu'à IGCSE CS.
Tous les systèmes informatiques ont au moins une unité de traitement. Pendant le fonctionnement, les unités de traitement exécutent des instructions stockées dans la mémoire de l'ordinateur. Pour bien démarrer sur les ordinateurs Minecraft, vous devez apprendre l'informatique. Il existe de nombreuses sources et tutoriels pour apprendre l'informatique, mais pour un début de base, il est recommandé de regarder Crash Course on Computer Science, en particulier les épisodes 1 à 8. Bien qu'il ne soit pas complètement approfondi, il peut servir de base à votre compréhension des ordinateurs.
La plupart des ordinateurs de Minecraft sont constitués de poussière de redstone, de torches de redstone et de répéteurs, conduisant à des pistons collants ou à des lampes de redstone qui sont contrôlés à l'aide d'une série de boutons, de leviers, de plaques de pression, etc. D'autres idées proposées (non couvertes) consistent à utiliser des trémies , des chariots de mine ou des bateaux avec de la redstone.
Voir chapitre 1, Tutoriel sur la construction d'un ordinateur, pour un didacticiel détaillé sur la construction d'un ordinateur dans Minecraft et sur la façon d'étendre et d'améliorer l'exemple donné. Il ne nécessite aucune connaissance approfondie de l'informatique comme il sera expliqué mais approfondira assez profondément.
Voir chapitre 2, Planification d'un ordinateur Redstone, pour les concepts informatiques de base de la conception et de la compréhension d'un ordinateur Redstone dans Minecraft. Il ne nécessite aucune connaissance approfondie de l'informatique, mais l'approfondira assez profondément.
Implémentations
Les ordinateurs peuvent être utilisés de plusieurs manières, de la création d'une maison intelligente à son utilisation pour exécuter une carte d'aventure. Cependant, en raison des limitations des ordinateurs dans Minecraft, indiquées ci-dessous, ils restent un concept abstrait et constituent de bons outils pour comprendre les concepts de niveau inférieur de l'architecture du processeur et des systèmes embarqués.
Ce qui distingue les ordinateurs des calculatrices, c'est que les calculatrices ne peuvent pas exécuter plusieurs instructions d'affilée sans intervention de l'utilisateur. Un ordinateur peut comparer et évaluer des instructions dans un flux pour effectuer des tâches.
Cependant, dans Minecraft, ils sont extrêmement lents et avec leur grande taille, il est difficile de trouver des applications pratiques pour les ordinateurs Redstone. Même les ordinateurs Redstone les plus rapides prennent quelques secondes pour effectuer un calcul et occupent quelques milliers de blocs d'espace. Les blocs de commande sont de loin supérieurs aux ordinateurs de Minecraft en raison de leur vitesse et de leurs commandes lisibles de niveau supérieur.
Les mods peuvent changer la vitesse de l'ordinateur, comme TickrateChanger changera le taux de tick du jeu.
Chapitre 1 : Tutoriel sur la construction d'un ordinateur
Introduction & Pré-requis
La logique Redstone reflète étroitement la logique binaire simple, car la redstone peut être activée ou désactivée et peut donc être interprétée comme des 1 ou des 0. Nous ferons référence dans ce tutoriel à la logique binaire de base et à divers termes informatiques simples. Il existe un excellent article qui explique le binaire et la conversion en binaire. Veuillez lire la section Architecture de la construction de l'ordinateur car nous suivrons cela pour planifier notre ordinateur, il se trouve dans cet article, merci.
Ce chapitre se concentrera sur l'application des connaissances et la manipulation de la redstone pour créer un simple ordinateur 8 bits, et décrira comment en faire un et comment cela fonctionne.
Tous les sujets seront divisés en (THÉORIE) et (PRATIQUE), la THÉORIE ira en profondeur sur ce qui se passera exactement. PRATIQUE couvrira comment le construire dans Minecraft, à quoi il ressemblera et éventuellement des téléchargements dans le monde.
L'ordinateur que nous allons construire (Masic Computer)
Étape 1 : Décodeurs de mémoire et d'adresse (THÉORIE) (NON FINI)
Étape 1 : décodeurs de mémoire et d'adresse (PRATIQUE)
Étape 2 : Construire une unité logique arithmétique (THÉORIE)
Étape 2 : Construire une unité logique arithmétique (PRATIQUE) (NON FINI)
Étape 3 : Jeu d'instructions et architecture de la machine (THÉORIE)
Étape 3 : Jeu d'instructions et architecture de la machine (PRATIQUE) (NON FINI)
Il y a trois objectifs de conception principaux pour un ordinateur dans Minecraft, pour rendre votre ordinateur le plus adapté à votre tâche à accomplir. Il y a des compromis à considérer, tels que plus l'ordinateur est gros, plus il sera lent car le nombre de répéteurs de redstone augmentera avec la distance. Plus il y a de mémoire, moins de vitesse et plus de taille.
La compacitéQuelle est la taille de l'ordinateur ? Dans Minecraft, la conception d'un ordinateur de survie mettra très probablement l'accent sur ce point. Le nombre de répétitions nécessaires augmentera à mesure que la taille augmente.
MémoireCombien de mémoire peut-il contenir ? Jusqu'à combien de bits et de nombres peut-il compter ? Ceci est important pour les ordinateurs à grande échelle, par exemple ceux qui peuvent faire des algorithmes plus complexes et nécessitent des jeux d'instructions plus grands (par exemple, faire des racines carrées ou de la trigonométrie). Plus la taille de la mémoire ou l'architecture des bits est grande, plus l'ordinateur deviendra complexe.
Vitesse/PerformanceÀ quelle vitesse peut-il effectuer des opérations ? Est-il optimisé pour exécuter ses tâches ? La conception et la construction personnalisées d'un ordinateur augmenteront considérablement sa vitesse, car un câblage et un code plus redondants pourraient être remplacés par du matériel et des logiciels spécialement conçus. Cela est évident dans certains supercalculateurs du monde réel qui sont programmés pour exécuter une tâche de manière très, très efficace. La vitesse des ordinateurs dans Minecraft est très lente, donc un mod pourrait être installé pour le client afin d'augmenter considérablement la vitesse du jeu, et donc de l'ordinateur.
L'ordinateur MASIC
L'ordinateur de travail en cours que nous allons faire dans le tutoriel. 8 bits, 16 octets de RAM. I/O est un affichage à sept segments (pour hexadécimal et décimal) et un panneau de contrôle que nous allons fabriquer.
L'ordinateur MASIC vise à être un ordinateur universel et ne se spécialise pas dans une tâche, il est donc entièrement programmable en lisant sa propre mémoire (expliqué dans la section 2 : jeux d'instructions). Les E/S simples sont idéales pour une utilisation polyvalente et la mémoire est suffisamment dimensionnée. Il fonctionne à une vitesse assez rapide (en raison de sa petite taille).
Étape 1 : décodeurs de mémoire et d'adresse (THÉORIE)
Les décodeurs convertissent les chiffres binaires en décimales. Par exemple, en regardant le décodeur 8 bits 00 allume la première lampe qui représente 0. 01 allume la deuxième lampe qui est 1. 10 allume la troisième qui est 2. 11 allume la dernière qui est 3.
Étape 1 : décodeurs de mémoire et d'adresse (PRATIQUE)
DĂ©codeur d'adresse
0000 0000 (notification la sortie 1 est allumée)
0000 0001 (notez que la 2e sortie est allumée)
0000 0010
0000 0011
C'est la conception du décodeur d'adresse que nous allons construire.
Ci-dessus se trouve un état simple à 2 bits, il a donc deux entrées (gauche et droite) via les répéteurs. La sortie est la ligne de redstone au-dessus de laquelle s'éteint lorsque l'état est atteint. L'état est de savoir si l'entrée redstone désactivera la ligne redstone ci-dessus ; si c'est le cas, l'état est les entrées de redstone. Dans le cas ci-dessus, la gauche doit être désactivée (0) et la droite (bleue) doit être activée (1) pour obtenir un OFF sur la ligne de redstone supérieure. Il s'attend donc à un état OFF ON (alias 01 pour binaire).
Ils sont colorés en bleu pour les bits qui doivent être activés (1) pour qu'ils arrêtent d'alimenter la ligne supérieure de redstone. Une fois que chaque bit cesse d'alimenter la ligne Redstone, elle s'éteint.
Ce sont essentiellement une ou deux portes NON alimentant une porte OU, puis PAS la sortie.
Ci-dessus se trouve un état de 8 bits, il attend 8 entrées dans exactement l'ordre 0000 1101. Donc cet état qu'il attend est 0000 1101. Ainsi, les torches de redstone alimentent les entrées, et nous voyons donc la ligne de redstone en haut s'éteint (seulement quand exactement trois torches de redstone sont placées dans cet ordre exact de 0000 1101).
Maintenant, si nous en rassemblons plusieurs, nous pouvons compter en binaire avec les bits bleus pour obtenir les 255 états de 8 bits. Celui ci-dessous est de 8 bits et a quatre attentes d'état. Voir la droite pour le voir en action. Maintenant, chaque sortie verte peut être une cellule mémoire, et si nous continuons à compter en binaire, elle atteindra 255.
L'entrée est 0000 0011 (voir les torches de redstone pour l'entrée) et là où les bits bleus correspondent à l'état actuel, la sortie verte est ON.
- 0000 0000 - premier signal sorti (Ă droite)
- 0000 0001 - deuxième signal de sortie
- 0000 0010 - troisième signal de sortie
- 0000 0011 - quatrième signal de sortie
Alors maintenant, nous continuons à compter en binaire pour atteindre 0000 1111 et nous arrêter là ; nous devrions maintenant avoir 24 (16) expectorations d'état. Nous en avons maintenant terminé avec le décodeur d'adresse. Nous ne continuons pas à compter jusqu'à 1111 1111 en raison des limitations du jeu d'instructions, expliquées dans la section 3 : jeux d'instructions
Étape 2 : Construire une unité logique arithmétique (THÉORIE)
L'unité arithmétique et logique appelée ALU comparera et effectuera des opérations mathématiques avec des nombres binaires et communiquera les résultats avec l'unité de contrôle, le composant central de l'ordinateur (et l'unité centrale de traitement mais qui sera aussi grande que l'ordinateur lui-même ). De nombreux tutoriels voudront que le lecteur construise d'abord une ALU, et donc le sujet est très largement couvert sur Internet.
L'ALU que nous allons construire peut effectuer quatre opérations importantes sur deux entrées et renvoyer une sortie correcte. A, B, étant les deux entrées 8 bits
- A + B (Ajouter A Ă B)
- A >> (décalage binaire A vers la droite (identique à la division binaire par 2))
- << A (décalage de bits A vers la gauche (le même que binaire multiplié par 2))
- PAS A (Le contraire de A)
Il peut également y avoir plusieurs ALU à l'intérieur d'un ordinateur, car certains programmes nécessitent beaucoup d'opérations pour s'exécuter, qui ne dépendent pas des opérations précédentes (elles peuvent donc être enfilées), donc les déléguer à différentes ALU pourrait accélérer considérablement le programme.
additionneur binaire
Additionner deux nombres
Dans une unité d'addition, pour chaque bit (pour notre ordinateur, nous en avons besoin de quatre, donc 4 bits), il y a un additionneur complet. L'additionneur complet prendra trois entrées, chaque entrée peut être 1 ou 0. Les deux premières seront l'entrée de l'utilisateur et la troisième sera l'entrée de report. L'entrée de retenue est la sortie de l'additionneur complet précédent, ceci sera expliqué plus loin. L'additionneur produira deux instructions : d'abord, la sortie, puis la sortie de report, qui est envoyée en entrée dans le prochain additionneur complet, une valeur de position vers le haut. Par exemple, je souhaite ajouter le nombre 0101 à 1011. Le premier additionneur complet considérera la première valeur, 1 et 1 comme leurs deux entrées (nous lisons de droite à gauche). Il n'y a pas d'entrée de report car il n'y a pas d'additionneur complet précédent. L'additionneur complet ajoutera 1 et 1 ; qui est 0, et porte un 1 à la prochaine valeur de position. Le prochain additionneur complet ajouterait 0 et 1 et l'entrée de report serait 1 que l'additionneur complet précédent a déclaré. La sortie de 0 et 1 serait 1 mais il y a une entrée de report de 1 et donc ajoutera 0 et 1 et 1, qui est 0 et porte un 1 à la prochaine valeur de position. L'examen de l'addition en binaire devrait résoudre toute confusion.
Toutes les ALU, pour effectuer des opérations d'ajout, nécessitent la présence de plusieurs additionneurs. Tous les deux bits alimenteront un additionneur qui, lorsqu'il est joint à d'autres additionneurs, produira une sortie qui est la somme des deux octets additionnés. Un additionneur a une entrée, une sortie et deux porteuses d'entrée/sortie comme le ferait une personne en faisant l'addition de 9 + 1 ou 01 + 01. Les additionneurs sont constitués de portes logiques ce qui est possible par la nomenclature du binaire. Les didacticiels/la logique arithmétique donnent un aperçu très détaillé des additionneurs complets et des demi-additionneurs, pour l'instant, il existe un schéma de la façon d'en construire un. Il offre quatre entrées/sorties et doit être connecté à d'autres additionneurs pour créer une unité. Pour cet exemple, nous allons connecter quatre additionneurs ensemble dans notre ordinateur à quatre bits afin que nous puissions prendre les quatre bits pour créer une sortie. Il y aura un report d'entrée manquant du premier additionneur, c'est parce qu'il n'y a rien à transporter du bit qui le précède, c'est le premier bit. Le report d'entrée restera à zéro. Il y aura également un report de sortie manquant du quatrième additionneur, et la sortie de celui-ci sera ignorée car nous ne pouvons prendre en charge que quatre bits. La quatrième sortie de report supplémentaire est câblée à l'indicateur de débordement pour signifier que l'opération n'a pas pu être effectuée. C'est ce qu'on appelle un débordement binaire.
Donc, en gros, allez dans Minecraft et créez un additionneur binaire complet (photo) et connectez-les. Il devrait y avoir huit entrées et sorties. Essayez de placer des leviers et des lampes de redstone aux extrémités respectives pour tester votre création. Donc 0010 + 0011 devrait donner 0101 (2 + 3 = 5, nous lisons à droite et non à gauche).
Nombres fractionnaires
Un ordinateur prend en charge les nombres inférieurs à un sous forme d'arithmétique à virgule flottante, cela n'est utile que dans les ordinateurs à bits plus grands (16-64 bits) et les ordinateurs qui ont besoin d'utiliser des nombres inférieurs à un. L'arithmétique à virgule flottante ou l'arithmétique à précision arbitraire sont deux façons d'y parvenir. Un autre moyen plus simple mais moins efficace serait d'attribuer à tous les nombres une puissance de deux afin qu'ils soient « augmentés » par la puissance de deux choisie. Le joueur doit faire cela à chaque nombre et assumer celui comme une fois la puissance des deux que vous avez choisi. Par exemple, 5 = 1012 donc 5 × 23 = 1010002 ; cinq est augmenté de trois. Alors maintenant, un dans votre nouveau système serait 1 × 23 = 10002 et cela laisserait de la place pour 0.1, 0.01 ou 0.001 ; 0.01 * 23 = 102. Cela conduit à une configuration plus compliquée pour votre ordinateur.
Soustraire deux nombres
Un additionneur avec toutes les pièces étiquetées.
La soustraction de nombres est étonnamment simple. L'ALU doit d'abord changer le deuxième nombre (la valeur soustraite par) et le convertir d'un nombre positif en un nombre négatif. Un complément à deux est lorsque vous inversez le nombre binaire (de sorte que tous les 0 sont des 1 et que les 1 sont des 0) et que vous y ajoutez un.
Exemple : faire 10 soustraire 9
1. 0000 1001 | (9 en binaire, on veut -9, pas 9) |
2. 1111 0110 | (Inversez 9, pour que tous les 0 soient des 1 et que les 1 soient des 0) |
3. 1111 0111 | ajouter un (c'est le complément à deux de 9) |
4. | |
0000 1010 | (10 en binaire) |
+1111 0111 | ajouter le complément à deux de 9 (aka -9) |
---- | |
0000 0001 | résultat (10 + (-9) = 1) (il y a un débordement, cela signifie simplement que le résultat n'est pas un nombre négatif) |
Cela pose la complexité des nombres signés.[1] Il s'agit d'un poids au nombre binaire pour lui attribuer un nombre positif ou négatif. Le fait que le résultat soit un nombre négatif ou positif est déterminé par l'indicateur de débordement. S'il y a un débordement, cela signifie que le nombre est positif et sinon négatif.
Pour mettre en œuvre cela, vous pouvez demander à l'ALU de faire 3 opérations. Pour faire A soustraire B, les opérations sont
Opération : A SUB B
- PAS B
- (réglez B sur) B AJOUTER 1
- (réglez A sur) A AJOUTER B
- RETOURNER UN
Multiplier deux nombres
La multiplication est une addition répétée, donc le plus simple (inefficacement) est d'ajouter A à un nombre variable de fois B.
Voici le code pseudo-machine pour cela
Opération: A * B
- C = 0
- (mettre C sur) C AJOUTER A
- (réglez B sur) B SUB 1
- SAUT SI (B > 0) À LA LIGNE 2
- RETOUR C
Cependant, il existe des moyens de multiplication plus efficaces. Une bonne méthode consiste à décaler à plusieurs reprises le premier nombre à l'emplacement de chaque 1 dans le deuxième nombre et à le sommer.
Il existe des traits de soulignement pour marquer les retraits, car le remplissage avec des 0 est moins intuitif. l'indice 2 signifie en binaire, et les nombres décimaux sont également en gras
__ __11 | 3 (notez qu'il y a 2 années 1) |
x_ 1011 | 11 |
---- | |
__ __11 | Nous décalons 112 par 010 depuis l' 1 peu de 10112 est 12 |
+ _ _110 | Nous décalons 112 par 110 depuis l' 2nd peu de 10112 est un 12 |
+1 1000 | Nous décalons 112 par 310 depuis l' 4ème peu de 10112 est un 12 |
---- | le 3rd bit de 10112 est 02 donc nous n'ajoutons pas de 112 lĂ |
10 0001 | 33 (résultat) |
c'est donc plus efficace pour les grands nombres.
Opération: A * B
- C = 0
- D = 0
- (Régler A sur) << A (décalage binaire A vers la gauche)
- SAUT SI (BIT (D) DE B == 0) VERS LIGNE 6
- (RĂ©gler C sur) C AJOUTER A
- (RĂ©gler D sur) D AJOUTER 1
- SAUT SI (D < LONGUEUR DE B) À LA LIGNE 3
- RETOUR C
N'oublie pas ça
<< A (décalage de bits vers la gauche) est effectivement A * 2
reçues par les enchanteurs et permettent aussi
>> A (bitshift vers la droite) est effectivement, A/2
Si les nombres sont prévisibles ou si le processeur doit faire beaucoup de nombres similaires en vrac, envisagez d'utiliser une table de recherche pour obtenir rapidement les résultats de la multiplication fréquemment appelée. Est-ce un moyen de coder en dur vos réponses et est-il utilisé dans des cas extrêmes.
Étape 2 : Construire une unité logique arithmétique (PRATIQUE)
Étape 3 : Jeu d'instructions et architecture de la machine (THÉORIE)
C'est assez amusant, cette partie.
En développant le chapitre 2 : Jeu d'instructions, nous allons en créer un pour le nôtre.
Pour l'ordinateur MASIC, l'ordinateur que nous construisons, a un système à 8 bits, ce qui signifie que chaque instruction sur chaque emplacement de la mémoire de pile sera de 8 bits. La mémoire de pile est la mémoire où toute information peut être stockée et se trouve sur la RAM. Il y aura un compteur, appelé compteur de programme, qui incrémente de 1 à chaque cycle. Un cycle est le CPU qui récupère l'instruction, décode l'instruction (découvre quoi faire avec l'instruction) et exécute l'instruction (fait ce qu'il lui dit de faire). Ensuite, il passe au suivant en incrémentant le compteur de programme et en lisant les informations à cet emplacement dans la mémoire de la pile.
Ainsi, chaque octet de la mémoire de la pile a 8 bits avec lesquels travailler.
0000 0000
et certaines instructions nécessitent une adresse, par exemple le chargement de la mémoire dans un registre afin que nous puissions effectuer des opérations (telles que l'addition) dessus. Chaque instruction sera divisée en deux parties, chacune de 4 bits. Le premier est le TYPE. le TYPE spécifiera ce que l'ordinateur doit faire et l'ADRESSE sera l'endroit où se trouve la valeur que nous effectuerons nos opérations.
OPÉRANDE OPCODE
donc 4 bits pour le TYPE, on peut avoir 2^4 types, donc 16 différents. Notre ordinateur aura deux registres, donc un bit sera pour spécifier le registre sur lequel l'opération s'exécutera et est indiqué par un x.
Les instructions sont placées au même endroit que la mémoire et comme la partie ADRESSE de l'instruction n'est que de quatre bits, nous ne pouvons référencer la mémoire qu'à partir de 1 à 16 lignes, ce qui nécessite une programmation intelligente pour s'adapter à des programmes plus volumineux. La mémoire est également limitée à 16 octets par programme. Les valeurs et les instructions sont essentiellement la même chose, donc si vous écrivez une instruction pour la stocker sur une ligne qui a précédemment stocké une instruction, cela écrase effectivement l'instruction avec une valeur. L'exécution accidentelle de valeurs peut être un problème, une commande STOP doit donc être utilisée pour éviter toute erreur. C'est beaucoup de choses à comprendre, donc les bonnes sources sont https://www.computerscience.gcse.guru/theory/high-low-level-languages ​​et https://scratch.mit.edu/projects/881462/ <- - vraiment utile en fait. et n'oubliez pas non plus de prendre à la fois CS et ICT pour vos IGCSE.
Pré-requis
La section couvrira des sujets simples et des composants couramment trouvés dans un ordinateur, donc les informations du chapitre 2 seront utilisées, telles que l'ALU, la RAM, les registres et la manipulation binaire.
Le jeu d'instructions MASIC
Depuis l'ordinateur Voici la première ébauche du jeu d'instructions, avec seulement l'essentiel. Ceci est basé sur d'autres langages d'assemblage, mais modifié pour s'adapter à notre architecture. Il y a deux registres, nous avons donc besoin d'instructions pour effectuer des opérations sur les deux registres.
BINARY | OPCODE | COMMENTAIRE |
---|---|---|
0000 | CHARGER R1 | Charger l'ADRESSE dans le registre 1 |
0001 | MAGASIN R1 | Stocker le contenu du registre 1 dans ADDRESS |
0010 | SAUT R1 SI | Aller Ă la ligne ADRESSE si le registre 1 est Ă©gal Ă 0 |
0011 | AJOUTER R1 | Ajoutez du contenu Ă l'ADRESSE pour enregistrer 1 |
0100 | < | Registre Bitshift 1 Ă gauche |
0101 | PAS R1 | Pas au niveau du bit registre 1 |
0110 | JUMP | Aller à la ligne OPÉRANDE |
0111 | STOP | Terminez le programme. |
1000 | CHARGER R2 | Charger l'ADRESSE dans le registre 2 |
1001 | MAGASIN R2 | Stocker le contenu du registre 2 dans ADDRESS |
1010 | SAUT R2 SI | Aller Ă la ligne ADRESSE si le registre 2 est Ă©gal Ă 0 |
1011 | AJOUTER R2 | Ajouter ADRESSE pour enregistrer 2 |
1100 | < | Registre Bitshift 2 Ă gauche |
1101 | PAS R2 | Pas au niveau du bit registre 2 |
1110 | SORTIE R1 | Registre de sorties 1 |
1111 |
Traduire:
1000 0011 signifie LOAD R2 3 car LOADR2 est 1000 et 0011 est 3.
Ceux-ci peuvent être dans un processus afin que les fonctions puissent être exécutées.
Écriture de programmes
Celui-ci fait la suite de Fibonacci : (0,1,1,2,3,5,8... etc.)
FIBONACCI | |||
---|---|---|---|
LINE | BINARY | INSTRUCTION | COMMENTAIRE |
1 | 0000 1110 | CHARGER R1 14 | mettre le registre 1 Ă 0 (la valeur Ă la ligne 14) |
2 | 0011 1111 | AJOUTER R1 16 | ajouter la valeur Ă la ligne 16 |
3 | 1110 0000 | SORTIE R1 | sortir le registre |
4 | 0001 1111 | MAGASIN R1 16 | mets ça à la ligne 16 |
5 | 0011 1110 | AJOUTER R1 15 | ajouter la valeur Ă la ligne 15 |
6 | 1110 0000 | SORTIE R1 | sortir le registre Ă nouveau |
7 | 0001 1110 | MAGASIN R1 15 | maintenant remettre la sortie |
8 | 0110 0010 | SAUT 2 | nous n'avons pas besoin de réinitialiser le registre, nous revenons donc à la ligne 2. |
... | |||
14 | 0000 0000 | 0 | |
15 | 0000 0001 | 1 | |
16 | 0000 0001 | 1 |
Le précédent est un exemple de langage assembleur de bas niveau. S'il était écrit dans un langage de haut niveau tel que C++, il ressemblerait plutôt à ceci :
#comprendre en utilisant l'espace de noms std ; int main() { int n, t1 = 0, t2 = 1, nextTerm = 0; cout << "Entrez le nombre de termes : "; cin >> n; cout << « Série Fibonacci : » ; for (int i = 1; i <= n; ++i) { // Affiche les deux premiers termes. if(i == 1) { cout << " " << t1; Continuez; } if(i == 2) { cout << t2 << " "; Continuez; } terme suivant = t1 + t2 ; t1 = t2; t2 = terme suivant ; cout << nextTerm << " " ; } renvoie 0 ; }
Cycle d'instruction
Les carrés arrondis sont des composants, les carrés sont des registres. Les flèches vertes sont des bus
Le jeu d'instructions est le langage d'assemblage inférieur, nous souhaitons donc l'intégrer davantage au côté matériel. Cela tourne autour du cycle fetch-decode-execute (expliqué ci-dessus). Dans le CPU, il y aura 4 registres importants,
le compteur de programme (PC), garde une trace du programme sur lequel l'ordinateur est actuellement
le registre d'adresses mémoire (MAR), garde une trace de l'emplacement du prochain emplacement de mémoire
le registre des données de la mémoire (MDR), garde une trace de ce que la mémoire à l'emplacement est
le Registre des Instructions Courantes (CIR), garde une trace de l'instruction en cours de travail
et l'accumulateur ALU (ACC), garde une trace de l'entrée et de la sortie de l'ALU
Il y a aussi quatre composants à garder à l'esprit, le décodeur d'adresse, la mémoire, le décodeur d'instruction et l'ALU.
FETCH
Le programme obtiendra l'instruction suivante.
- Le PC envoie le numéro d'instruction au MAR
- Le PC s'incrémente de 1 pour préparer l'instruction suivante
- Le décodeur d'adresse décode l'adresse et demande des informations à cette adresse à partir de la mémoire
- MDR reçoit les informations demandées (dans le cas de l'image, si le MAR est 0001, il reçoit 'LOADR1 1')
DÉCODER Le programme identifiera quelle est l'instruction
- Le CIR reçoit les informations du MDR, via le flux d'informations
- Le décodeur d'instruction décode l'instruction et ce qu'il faut faire
EXÉCUTER Le programme exécutera l'instruction
- Dans le cas de l'image, le programme reçoit 'LOADR1 1' comme instruction, le décodeur d'instruction divise l'instruction en opcode et opérande.
L'opcode est 'LOADR1' et l'opérande est '1'.
- L'opérande est envoyé au MAR, pour obtenir les informations à cette adresse
- MDR reçoit les informations à cette adresse (dans l'exemple, c'est la même ligne)
Maintenant, quatre choses peuvent se produire en fonction de l'instruction.
Si l'instruction est une instruction ADD, l'ACC recevra l'ordre de recevoir les informations du flux d'informations et l'ALU effectuera des opérations sur celle-ci, les retransmettant à l'ACC.
Si l'instruction est une instruction LOAD, la CU chargera l'instruction dans le registre.
Si l'instruction est une instruction STORE, la CU placera à la place les données à l'emplacement spécifié par le MAR dans la mémoire.
Si l'instruction est une instruction OUT, la CU enverra l'instruction au périphérique de sortie.
RÉPÉTER Le cycle d'instruction se répète jusqu'à ce qu'il atteigne une instruction STOP ou manque de mémoire
Étape 3 : Jeu d'instructions et architecture de la machine (PRATIQUE)
Chapitre 2 : Planification d'un ordinateur Redstone
Un ordinateur Redstone peut être conçu comme un vrai ordinateur, en suivant les principes utilisés dans la conception informatique et l'architecture matérielle. Il existe plusieurs décisions de conception clés qui affecteront l'organisation; la taille et les performances de votre futur ordinateur doivent être déterminées concrètement avant la construction de composants spécifiques.
Construire un ordinateur Redstone nécessitera une compréhension de ces cinq concepts et considérer l'approche la plus appropriée, qui serait la plus pratique pour votre ordinateur.
- Machine-Architecture (Composants d'un ordinateur, que sont-ils et ce qu'ils font)
- Modèle d'exécution (l'organisation des composants, les rendant efficaces)
- Taille du mot (combien de bits le système utilise. Habituellement, des puissances de 2, environ 4, 8, 16 bits sont normales dans Minecraft)
- Jeu d'instructions (les instructions à exécuter par la CPU)
et nous appliquerons ces connaissances et planifierons l'architecture de notre CPU dans la dernière section. Ce CPU sera ensuite construit dans le chapitre suivant.
Fondamentaux d'un ordinateur
Un ordinateur est une machine qui a la capacité de
- Lire et écrire à partir d'une mémoire adressable
- Effectuez des comparaisons sur l'état de la mémoire et effectuez une opération en conséquence. Ces opérations incluent la réécriture de la mémoire.
- Lancer des fonctions basées sur le contenu écrit dans la mémoire. Nous appelons un tel contenu "programmes + données", et l'acte de les écrire programmation.
Un exemple très notable de ceci est le concept informatique le plus basique, une machine de Turing, où la machine lira à partir d'une ligne infinie de code et d'un jeu d'instructions afin de compléter une fonction.
Concevoir et construire une machine de Turing dans Minecraft est possible. Cependant, cela n'est pas couvert car nous allons concevoir quelque chose de plus basique.
Machine-Architecture
Il y a cinq composants fondamentaux dans un ordinateur moderne de base. Ceux-ci sont essentiels pour produire un ordinateur fonctionnel et manipuler des données en effectuant des calculs.
cinq composants d'un ordinateur
Unité arithmétique et logique (ALU) (facultatif, mais est normalement présent)
- Effectuer des additions et des soustractions
- Comparer les booléens à l'aide de portes logiques
Unité de contrôle (CU)
- Exécuter/Exécuter les instructions qui lui sont envoyées
- Communiquer avec tous les composants
Mémoire de données
- Stocker et renvoyer des données de la mémoire
MĂ©moire d'instructions
- Instructions de retour, envoyées à la CU
- Peut être réglé, mais n'a pas besoin de l'être aussi souvent que la mémoire de données
Périphériques d'entrée/sortie (E/S)
- Permet Ă l'ordinateur de communiquer avec le monde et le joueur.
- Peut entrer des informations sur l'ordinateur (bouton poussoir, capteur de lumière du jour)
- Peut sortir des informations de l'ordinateur (lampe redstone, bloc note)
Stockage de données informatiques
Il existe de nombreuses méthodes de stockage de données, dans Minecraft ou dans la vraie vie. Les états de la mémoire sont généralement binaires, activés ou désactivés et peuvent être calculés avec une logique booléenne.
Sur un ordinateur, il existe trois types de stockage. En gardant à l'esprit que l'augmentation de la capacité de l'appareil augmenterait sa taille, chaque type aurait une vitesse et une capacité appropriées.
Stockage primaire
Il s'agit du stockage directement accessible à la CPU, appelé mémoire et le plus rapide d'accès, mais sa capacité est généralement plus petite pour qu'il soit adressé plus rapidement.
Registres et drapeaux
Le plus rapide est la mémoire stockée dans le CPU. Ce sont des registres et des drapeaux car ils peuvent être réglés presque instantanément et ne nécessitent aucune adresse qui leur est envoyée car il n'y a qu'un seul octet stocké dans chaque registre. Les bits de redstone qui peuvent être basculés sont extrêmement gros mais peuvent être basculés en 2 ticks. Cela nécessite une très grande quantité d'espace mais est parfait pour les caches et les registres. La redstone est également requise pour que les portes logiques (non illustrées) définissent le bit, comme dans le , l'envoi d'une entrée provoquerait le basculement du bit. La porte prendrait plus de place. Les registres pourraient également utiliser des répéteurs de redstone verrouillables et les chronométrer correctement. Ceci est expliqué ci-dessous, en RAM). Avec l'utilisation d'une horloge informatique, il peut ne pas être nécessaire de construire des registres. Les registres sont utiles lorsque les données passent par la ligne avant que la CU ou l'ALU ne soit prête à les traiter. Il l'enregistrerait dans le registre et attendrait que la CU ou l'ALU puisse remplir sa fonction.
Caches
Viennent ensuite les caches, qui alimentent le processeur en informations. Dans la vraie vie, ils sont séparés en niveaux, chacun avec une vitesse et des capacités distinctes. Il est utile pour la même raison que les registres.
Mémoire à accès aléatoire (RAM)
Troisièmement, la mémoire vive (RAM), c'est beaucoup plus lent que les caches et les registres car ils ont des systèmes d'adressage. Ils sont connectés à trois bus, le bus de données, le bus de contrôle et le bus d'adresse. Les données sont envoyées via le bus de données, soit en définissant la RAM, soit en obtenant des valeurs de la RAM. Le bus de contrôle lui indique s'il est en train d'être obtenu ou défini. Le bus d'adresse indique à la RAM où se trouve l'octet. Référez-vous à l'architecture de l'ordinateur pour comprendre cela plus en profondeur. La RAM est très utile et pourrait remplacer complètement la mémoire tertiaire (expliquée ci-dessous) en raison de sa non-volatilité dans Minecraft. Volatil signifie que lorsque l'alimentation est coupée, elle perdra des informations. La RAM ne perdra pas d'informations contrairement à la vraie vie, et donc dans une excellente méthode de stockage d'informations.
La RAM dans le premier cas utilise les répéteurs de redstone verrouillables avec le bon timing. Cela nécessite un peu d'un plan mais est très peu encombrant. La conversion d'un bus vers les lignes afin de verrouiller les répéteurs de redstone nécessite également un réglage des timings. Cela prend du temps, beaucoup plus que les registres, cependant, il est très compact et efficace. Le bus d'adresse (vert) deviendrait binaire pour déverrouiller un certain octet, à lire ou à définir par le bus de contrôle (deuxième ligne, à gauche).
Le plus souvent, le rendre volatile n'a aucune utilité dans Minecraft, donc le moyen le plus simple d'en faire est d'utiliser des d-flip-flops et d'ajouter une fonction de lecture et d'écriture. L'image du bas montre qu'au lieu de verrouiller les répéteurs, il utilise des d-flip-flops, ce qui est beaucoup plus peu encombrant mais plus simple à construire. Les bascules D fonctionnent plus ou moins comme des répéteurs verrouillés, une entrée - si elle est activée, se déverrouille jusqu'à ce que l'entrée soit désactivée et l'autre la définira une fois déverrouillée. La sortie peut être lue comme un bit et avec une porte NAND, être ignorée ou mise sur le bus. Ceci est détaillé dans le deuxième chapitre, Tutoriel sur la construction d'un ordinateur. Excusez le pack de textures.
Mémoire vive également connu sous le nom RAM est une sorte de mémoire utilisée par les programmes et est volatile. Volatile signifie que lorsque l'alimentation est coupée, elle perdra des informations. Le plus souvent, le rendre volatile n'a aucune utilité dans Minecraft, donc le moyen le plus simple d'en faire est d'utiliser des d-flip-flops et d'ajouter une fonction de lecture et d'écriture.
Stockage secondaire
Ce sont l'équivalent des disques durs et des disques SSD. Il existe une technique de stockage très compacte, impliquant des comparateurs de redstone avec la capacité de stocker jusqu'à 1 Ko, étant de taille pratique.
Stockage tertiaire
Le troisième et dernier est une mémoire tertiaire, qui nécessite beaucoup de temps en lecture/écriture, mais peut contenir des quantités massives d'informations au détriment de la vitesse. Le stockage tertiaire du monde réel utilise un mécanisme de montage de la mémoire qui prend environ une minute pour chaque lecteur. Ceci est utilisé à des fins d'archivage et pour la mémoire qui est rarement utilisée. Dans Minecraft, un système où des boîtes shulker sont utilisées et bloquées dans les boîtes shulker doit être trié par un système de tri pour représenter une forme de données. Cela peut également être utilisé pour créer un stockage amovible. La vitesse de lecture/écriture est assez lente en raison de la quantité massive de comparateurs et beaucoup de temps est nécessaire. Les mods susmentionnés pourraient cependant accélérer le taux de tick et éliminer ce problème. Ceci est utilisé pour stocker des données à long terme qui devaient être chargées au début d'un programme ou rarement en raison de sa faible vitesse de lecture/écriture et de sa grande capacité. C'est l'équivalent du disque dur ou du disque SSD d'un ordinateur réel.
Modèle d'exécution
La technique de stockage de blocs d'instructions appelés programmes dans la mémoire est ce qui permet aux ordinateurs d'effectuer une telle variété de tâches.
L'appareil utilisé par un ordinateur pour stocker et récupérer ces programmes est le modèle d'exécution de l'ordinateur.
Deux des modèles d'exécution les plus réussis au monde, Harvard et von Neumann, fonctionnent sur près de 100 % des ordinateurs disponibles aujourd'hui.
Ceci est plus avancé et s'adresse aux lecteurs curieux et curieux
Harvard
L'architecture Harvard sépare physiquement l'appareil de récupération des instructions qui composent un programme actif de celui de l'appareil d'accès aux données auquel le programme accède en cours d'exécution.
Les programmes écrits pour des ordinateurs utilisant une architecture Harvard peuvent s'exécuter jusqu'à 100 % plus rapidement pour les tâches qui accèdent au bus mémoire principal. A noter cependant que certains circuits mémoire sont forcément plus gros pour ceux qui choisissent une architecture Harvard. L'architecture de Harvard est très importante.
par Neumann
L'architecture von Neumann utilise un processus en deux étapes pour exécuter des instructions. Tout d'abord, la mémoire contenant l'instruction suivante est chargée, puis la nouvelle instruction qui vient d'être chargée est autorisée à accéder à cette même mémoire au fur et à mesure de son exécution ; l'utilisation d'une seule mémoire pour le programme et les données facilite la technologie de méta-programmation comme les compilateurs et le code auto-modifiant.
L'architecture von Neumann a été le premier modèle de calcul proposé et presque tous les ordinateurs du monde réel sont de nature von Neumann.
Tailles des mots
La taille des mots est un facteur primordial dans la taille physique d'un ordinateur.
Dans Minecraft, des machines de 1 bit à 32 bits ont été construites avec succès.
Combinaisons courantes de tailles de mots :
Data | Instruction |
---|---|
4 | 8 |
8 | 8 |
8 | 16 |
16 | 16 |
Données-Mot
La quantité d'informations qu'un ordinateur peut manipuler à un moment donné est représentative de la taille des mots de données de l'ordinateur.
En binaire numérique, la taille du mot de données de l'ordinateur (mesurée en bits) est égale à la largeur ou au nombre de canaux dans le bus principal de l'ordinateur.
Les mots de données représentent généralement des entiers ou des nombres entiers codés sous forme de motifs de chiffres binaires.
Le nombre de taille maximale représentable par un entier codé binaire est donné par Largeur de 2 mots de données en bits - 1.
Par exemple, un ordinateur avec une taille de mot de données de 8 bits aura huit canaux sur son bus (ensemble de fils, composants de connexion) et par conséquent, nous pouvons compter jusqu'à (28 - 1). 255. Compter plus de 255 n'est pas possible avec huit bits, car l'opération 255 + 1 porte sur un, ce qui nécessite un neuvième bit ou ce qu'on appelle un débordement binaire se produira, renvoyant 0 comme réponse, ce qui est incorrect.
Ceci est simplement visualisé ;
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 255 | |
+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
= | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Certaines tailles de données d'entier courantes sont :
Nombre maximum représentable | Nombre de bits requis |
---|---|
1 = (21-1) | 1 |
7 = (23-1) | 3 |
15 = (24-1) | 4 |
255 = (28-1) | 8 |
65535 = (216-1) | 16 |
4294967295 = (232-1) | 32 |
La taille des mots de données régit également la taille maximale des nombres pouvant être traités par l'ALU (unité arithmétique et logique) d'un ordinateur.
Instruction-mot
La quantité de données dont un ordinateur a besoin pour terminer une seule instruction est représentative de la taille des mots d'instruction d'un ordinateur.
La taille du mot d'instruction d'un ordinateur est généralement un multiple de sa taille de mot de données, ce qui permet de minimiser le désalignement de la mémoire lors de la récupération des instructions pendant l'exécution du programme.
Instruction Set
Il s'agit d'un ensemble d'instructions que l'unité de contrôle (CU) peut décoder, puis exécuter.
Les instructions sont essentiellement des fonctions exécutées par l'ordinateur, des exemples d'instructions incluent :
- Additionner, soustraire, multiplier et diviser
- Lecture/écriture depuis la RAM/ROM/mémoire tertiaire
- Charger et décharger des données dans la RAM
- Branchement vers d'autres parties du code
- Comparer les registres
- SĂ©lection d'une fonction logique (NAND, NOR, NOT etc.)
Les instructions peuvent être programmées dans la RAM, chargées à partir de la ROM ou directement activées à l'aide d'un levier ou d'un bouton. Chaque instruction aurait sa propre chaîne binaire spécifique qui lui serait assignée (par exemple 0000=Charger les données du registre 0001=ajouter A et B 1011=Enregistrer la RAM dans la mémoire tertiaire, etc.) et nécessiterait probablement son propre binaire à décimal ou binaire à BCD pour encodeurs décimaux et bus vers les ALU/registres.
Architecture de l'ordinateur
À l'intérieur de l'ordinateur, il y a une unité centrale de traitement (à ne pas confondre avec l'unité de contrôle (CU), un composant à l'intérieur de la CPU), qui dans la vraie vie, est un composant très petit et puissant qui agit plus ou moins comme le cerveau de l'ordinateur. Dans Minecraft, il est difficile de le compacter à l'échelle que nous voyons dans la vie réelle, alors ne vous inquiétez pas si cela semble faux.
Nous allons d'abord concevoir notre unité centrale de traitement 4 bits dans le chapitre suivant, car c'est la chose la plus importante de notre ordinateur avec le modèle d'exécution (la méthode de communication et d'organisation de la CPU) à l'esprit, (dont on parle dans ce page précédente, dans la section Modèle d'exécution), nous pouvons tracer la construction de l'ordinateur.
Carte du CPU, basée sur le mode d'exécution Havard
La CPU suit un cycle en quatre étapes, extraire, décoder, exécuter et (parfois) stocker pour exécuter des instructions. Le CPU récupère d'abord l'instruction dans la RAM, décode ce qu'elle signifie (l'instruction sera très probablement un nombre, et le CPU doit découvrir de quel numéro il s'agit), et une fois qu'il comprend de quoi il s'agit, il effectuera cette action. Cela nécessite parfois que les données soient remises dans le stockage, donc il stockera les données. Le cycle se répète ensuite.
Bus
Il y a cinq bus dans le CPU, chacun pour transporter des informations d'un composant au suivant. Les bus sont des canaux de redstone reliant chaque composant. Puisque nous construisons un ordinateur 4 bits, nous n'avons besoin que de quatre canaux dans notre bus. Ce sont les lignes rouges et bleues reliant les composants à l'intérieur du CPU. Notez que les bus bleus ont moins de quatre lignes, c'est parce qu'ils ne transportent pas de données. Étant donné que les bus ne peuvent transporter des données que dans un sens (dans Minecraft, car les répéteurs ne fonctionnent que dans un sens), il existe deux bus reliant le processeur à l'ordinateur externe.
Le premier bus est le bus de données, il s'agit de transférer des informations des périphériques de stockage ou d'E/S vers la CU. Des instructions sont également envoyées via cette ligne. La CU peut également utiliser ce bus pour transférer des données vers l'ALU. L'ALU ne peut pas transférer de données sur ce bus car les bus ne fonctionnent que dans un sens et une fois l'information prise par l'ALU, le bus se coupe au-delà de l'ALU. Les informations de l'ALU sont transmises via le bus 2.
Le deuxième bus est le bus de données, mais renvoie les données de l'ALU à la CU. La CU ne peut pas envoyer de données via ce bus à l'ALU car le bus va de gauche à droite et ne fonctionne que dans un seul sens. La CU peut cependant renvoyer des informations aux unités de stockage et est utilisée pour définir les valeurs des périphériques de stockage.
Le troisième bus est le bus d'adresses, laquelle la CU peut envoyer l'adresse de stockage. C'est là que réside l'information. Par exemple, la CU demande l'adresse de l'octet résidant dans 0001. Elle envoie l'adresse (0001) via le bus d'adresse et la RAM renvoie la valeur de l'octet via le premier bus. 0001 est l'emplacement de l'octet, pas sa valeur.
Le quatrième bus est le bus de contrôle, avec laquelle la CU communiquera avec la RAM. Par exemple, un fil pourrait dire à la RAM de définir l'octet sur la valeur des données qui lui sont envoyées par la CU. Un autre fil pourrait dire à la RAM d'obtenir l'octet de l'adresse qui lui est envoyée par la CU.
Le cinquième bus est un autre bus de contrôle, en liaison avec l'ALU, qui envoie des drapeaux de l'ALU. Les drapeaux sont des notes qui peuvent être des messages d'erreur. Par exemple, la CU pourrait demander à l'ALU d'ajouter 15 et 1 dans un système à 4 bits. L'ajout de 15 et 1 sur 4 bits donnerait 0 (expliqué ci-dessus) et c'est ce qu'on appelle un débordement binaire. Il s'agit d'une erreur et l'ALU en informera la CU via le cinquième bus en tant que drapeau. La CPU pourrait également envoyer des données à l'ALU et lui demander d'effectuer une action avec ces données.
Composants
Unité de contrôle (CU) récupérera les instructions de la ROM d'instructions (pour d'autres ordinateurs, les instructions peuvent être modifiées et sont donc de la RAM. Pour notre cas, nous exécutons un programme fixe et n'avons pas besoin de modifier les instructions. Cela simplifie entièrement le processus et l'instruction est Read -Seulement la mémoire (ROM)). À l'intérieur du CU, il décodera ensuite l'instruction, qui est normalement un nombre, en une action sensée. Il effectuera ensuite cette action et si l'instruction l'exige, stockera le résultat dans la RAM. Il communique avec la RAM via le bus de contrôle et reçoit des drapeaux de l'ALU. Il peut également demander à l'ALU d'effectuer des actions sur les données qu'il envoie à l'ALU (ex : ajout). Pour communiquer avec la RAM, par exemple, un fil pourrait dire à la RAM de définir l'octet (son emplacement est spécifié via le troisième bus d'adresse) à la valeur des données qui lui sont envoyées par la CU via le second, données autobus.
Unité arithmétique et logique (ALU) exécutera les instructions qui lui seront envoyées par la CU et comparera les nombres binaires et communiquera avec l'unité de contrôle. Il peut effectuer des additions et des soustractions simples qui peuvent être répétées pour effectuer une multiplication et une division de nombres entiers, produisant un nombre entier (puis une division). Il existe également des portes logiques pour les booléens, les portes logiques fondamentales sont nécessaires, telles que la porte NON et la porte NAND.
Nous pouvons désormais choisir parmi une gamme de conceptions de bus, chacune contribuant aux trois objectifs de conception clés susmentionnés d'un ordinateur Minecraft.
Chapitre 3 : Conception d'un ordinateur
Architecture d'ensemble d'instructions
États
La mémoire est un nombre défini de bits. Dans Minecraft, la mémoire contient généralement 8 ou 16 bits, bien que des ordinateurs à mémoire 32 bits aient déjà été construits avec succès. Chaque bit est dans l'un des deux états possibles : activé ou désactivé. La mémoire est une série d'activations et de désactivations, qui peuvent être utilisées pour effectuer certaines tâches.
Symboles
Les ordinateurs du monde réel utilisent le binaire, qui est une série de 1 et de 0. "1" signifie "activé" et "0" signifie "désactivé". Dans Minecraft, la meilleure représentation est la poussière de redstone : avoir un signal signifie "1" et aucun signal signifie "0". Cependant, en fonction de la distance entre la redstone et le stockage de mémoire, il est possible que "0" soit n'importe quoi de la force du signal 0 à 14. Vous pouvez également concevoir des choses pour que "1" soit égal à n'importe quoi de la force du signal 1 à 15.
Nombres
Notre système décimal normal est un système numérique en base 10. Le binaire, le système numérique dans les ordinateurs, est en base 2. Pour comparer, jetez un œil au nombre à 2 chiffres. En décimal, le chiffre de gauche est le chiffre des 10s. En binaire, c'est le chiffre 2s. Par exemple, en décimal, "10" se lit comme "dix". En binaire, "10" est lu comme "deux". Il existe deux méthodes couramment utilisées pour convertir du décimal au binaire :
Le bit le plus élevé en premier : Cette méthode nécessite un peu d'intuition. Prenons 42 comme exemple. Nous commençons par chercher la plus grande exponentielle de 2 (par exemple 32 [2^5] ou 65536 [2^16]). Dans ce cas, c'est 32. Nous soustrayons ensuite ce nombre du nombre en question. 42-32=10. De plus, le tout premier bit en partant de la gauche est un "1". Nous descendons ensuite à la prochaine exponentielle de 2 et voyons si elle est inférieure ou égale à notre nombre actuel. Pour cet exemple, le suivant est 16. 16 n'est pas inférieur à 10, donc le bit suivant est "0". Nous continuons à faire cela jusqu'à ce que le nombre atteigne 0. Chaque fois que l'exponentielle 2 est inférieure ou égale au nombre, soustrayez-les et le bit suivant est "1". Sinon, le bit suivant est "0". Pour continuer notre exemple : 8<10->10-8=2->"1" 4>2->"0" 2=2->2-2=0->"1" 1>0->"0 " Notre représentation binaire finale de 42 est donc " 101010 ". Fantaisie.
Bit le plus bas en premier : Cette méthode ne nécessite aucune mémorisation de 2 exponentielles. Au lieu de cela, il divise à plusieurs reprises le nombre par 2, en utilisant le quotient comme nombre suivant et le reste comme bit binaire. Gardez à l'esprit, cependant, que cette méthode écrit le nombre binaire de droite à gauche, contrairement à la méthode précédente qui l'écrivait de gauche à droite. Réutilisons notre exemple, 42. 42/2=21 r 0 (le bit le plus à droite est 0) 21/2=10 r 1 (le prochain bit à gauche est 1) 10/2=5 r 0 (le prochain bit à gauche est 0) 5/2=2 r 1 (le prochain bit à gauche est 1) 2/2=1 r 0 (le prochain bit à gauche est 0) 1/2=0 r 1 (le prochain bit à gauche est 1)
Le quotient est 0, donc on s'arrête. Cela nous donne notre nombre binaire comme "101010". Identique à la méthode précédente.
Transitions
Paroles
Instructions
Les instructions sont essentiellement des fonctions exécutées par l'ordinateur, des exemples d'instructions incluent :
- Additionner, soustraire, multiplier et diviser
- Lecture/écriture depuis la RAM/ROM/mémoire tertiaire
- charger et décharger des données dans la RAM
- Branchement vers d'autres parties du code
- Comparer les registres
- SĂ©lection d'une fonction logique (NAND, NOR, NOT etc.)
Les instructions peuvent être programmées dans la RAM, chargées à partir de la ROM ou directement activées à l'aide d'un levier ou d'un bouton. Chaque instruction aurait sa propre chaîne binaire spécifique qui lui serait assignée (par exemple 0000=Charger les données du registre 0001=ajouter A et B 1011=Enregistrer la RAM dans la mémoire tertiaire, etc.) et nécessiterait probablement son propre binaire à décimal ou binaire à BCD pour encodeurs décimaux et bus vers les ALU/registres.
Classification
Abstraction
Cartographie
Symboles
Nombres
Les fonctions
Formalisation
Calculabilité
Variables
Les variables sont des nombres, des chaînes (ensembles de caractères) ou des booléens (vrai ou faux) stockés dans la RAM dans le but d'exécuter un programme. Par exemple, les booléens peuvent être utilisés pour conserver des informations si le programme a atteint un certain état. Les informations suivantes doivent être conservées sur une variable : son nom, son type (nombre, chaîne ou booléen) et sa valeur. La valeur d'une variable peut, comme son nom l'indique, changer. Les opérations peuvent être effectuées sur des variables. Les variables sont créées lors de l'exécution du programme et supprimées de la mémoire une fois le programme fermé. Lorsqu'un programme est rouvert, les variables sont recréées. C'est la même chose dans Minecraft.
Les hiérarchies
MĂ©moire
La mémoire est l'endroit où les données des programmes sont conservées. Il est volatile (il est supprimé lorsque l'ordinateur est éteint) et est utilisé par le programme pour stocker des données. Par exemple, dans un programme qui compte à partir de 1, 1 est enregistré dans la mémoire, 1 est chargé à partir de la mémoire et 1 y est ajouté pour obtenir 2.
Internationaux
SĂ©mantique
Data
Les données sont les informations traitées par l'ordinateur et sont représentées en binaire.
Le contrĂ´le
Machine-Architecture
Chemins de données
Traitement & Expédition
Unité arithmétique et logique
L'ALU est l'un des composants les plus importants d'un ordinateur, à la fois dans la vraie vie et dans Minecraft. Tout d'abord, vous devez choisir les fonctions que vous souhaitez pouvoir réaliser. Le plus souvent, il s'agit d'addition, de soustraction et d'un ensemble d'options logiques telles que ET, OU, NAND et autres. Vous devez ensuite construire l'unité avec toutes les portes logiques et fonctions mathématiques que vous souhaitez et un moyen de choisir la sortie à afficher.
Bus
Le bus est ce qui permet aux composants de votre ordinateur de communiquer entre eux. Un bus peut être créé en utilisant un câblage redstone pour connecter l'ALU, la RAM, la ROM et les registres de votre ordinateur afin qu'ils puissent envoyer des données entre eux. Il est généralement important de planifier où construire les composants de votre ordinateur afin que vous n'ayez pas à créer des fils de bus trop longs, ou pire encore, n'ayez pas d'espace pour créer des bus, auquel cas vous pouvez supprimer le composant incriminé et reconstruire placez-le dans un emplacement approprié, ou utilisez un mod comme WorldEdit pour déplacer le composant ailleurs.
Préservation
INSCRIPTION
MĂ©moire vive
Mémoire vive également connu sous le nom RAM est une sorte de mémoire utilisée par les programmes et est volatile. Le plus souvent, le rendre volatile n'a aucune utilité dans Minecraft, donc le moyen le plus simple d'en faire est d'utiliser des d-flip-flops et d'ajouter une fonction de lecture et d'écriture. En faire un est simple. Vous pouvez créer 1 bascule, puis l'empiler aussi longtemps que nécessaire, avec un bloc de chaque octet. Consultez le plan suivant pour obtenir de l'aide :
(Schéma Redstone à faire) Référencez l'image si vous n'êtes pas sûr (cliquez dessus pour l'agrandir) r=fil p=répéteur b=bloc t=torche sur le côté du bloc 0=air
Layer 1
00trb00
rpb0tr0
Layer 2
0b0t00b
tbbbbtb
Layer 3
0r0t00r
0rprr0r
MĂ©moire tertiaire
La mémoire tertiaire est utilisée pour stocker de manière compacte de grandes quantités de données au détriment de la vitesse. Ce type de mémoire se compose de la base de données, où toutes les données sont réellement stockées, et d'un mécanisme physique, généralement un bras robotique, qui doit se déplacer physiquement dans la base de données pour récupérer les données. Pour cette raison, il est extrêmement lent et n'est utilisé que pour des informations rarement consultées. C'est l'équivalent du disque dur ou du disque SSD d'un ordinateur réel.
Dans les dernières versions de Minecraft, il peut être possible de créer une mémoire tertiaire avec des pistons collants combinés à des blocs de boue, ce qui peut créer des "vaisseaux" qui se déplacent et probablement stocker un composant Redstone capable d'extraire, de lire et d'écrire d'un mur de blocs conducteurs et non conducteurs.
État de la machine
Compteur de programme
Le compteur de programme est utilisé pour garder une trace de la ligne de code à partir de laquelle l'ordinateur doit lire. A chaque cycle d'horloge, le décodeur accédera à ce compteur afin d'aller chercher la prochaine instruction à exécuter. Certaines instructions accéderont à une quantité de données différente d'une autre ou à aucune donnée, de sorte que le décodeur incrémentera à son tour le compteur de programme de la quantité appropriée jusqu'à l'instruction suivante. Le compteur est également utilisé par les instructions de saut pour contrôler le déroulement du programme.
Dans la vraie vie, ce compteur n'est pas un composant en soi et n'est qu'un registre juste à côté de tous les autres. Dans Minecraft, cependant, il peut être moins déroutant de créer un registre séparé des autres pour stocker les données du compteur de programme.
Chemins de contrĂ´le
Traitement & Expédition
Unité de contrôle
L'unité de contrôle est la section de l'ordinateur qui interprète les instructions et contrôle les autres parties de l'ordinateur, par exemple en indiquant à l'ALU s'il faut ajouter ou soustraire.
Bus
Préservation
MĂ©moire de programme
La mémoire de programme est essentiellement une ROM (mémoire en lecture seule). La ROM est le plus souvent utilisée pour effectuer une série de tâches à distance (comme un programme, d'où le nom). Il peut être conçu pour être utilisé sur commande utilisateur (comme sur l'image) ou avec une horloge et un délai suffisant entre chaque ligne pour que 2 ne soient pas allumés en même temps. L'une des conceptions les plus simples et les plus efficaces est celle de l'image, qui peut être couplée ou non à un décodeur. Il peut être agrandi facilement, ce qui est un autre avantage. Voici quelques conseils :
État de la machine
Compteur de programme
horloge
Les horloges Redstone sont utilisées pour synchroniser des composants ou pour les chronométrer. Dans la plupart des cas (Minecraft), il est possible d'éviter d'en utiliser un mais parfois il est nécessaire au fonctionnement de l'ordinateur. Il peut être soit fabriqué à partir de torches de redstone dans essentiellement une ligne/un cercle de portes NON (un nombre impair est recommandé ou votre sortie devra être NON), ou à partir de répéteurs, comme le montre l'image ci-dessus.
Conseils
- Le joueur peut vouloir utiliser des mods ou des packs de données comme WorldEdit.
- Code couleur de votre ordinateur (utilisez de la laine ou du béton bleu pour la RAM, jaune pour l'ALU, etc.)
- Commencez petit et familiarisez-vous avec les petits ordinateurs avant d'essayer des machines plus complexes.
- Les blocs de structure peuvent être très utiles pour déplacer des composants et combiner plusieurs composants ensemble. Cependant, notez que ceux-ci ne peuvent pas être obtenus sans utiliser de commandes.
- Redstone
- Circuit de Redstone
- Horloge de pierre rouge
- Circuit logique
- Circuit mémoire
- Circuit d'impulsion
- Circuit de transmission
- Tutoriels/Circuits de redstone avancés
- Tutoriels/Calculatrice
- Tutoriels/Impression
- Tutoriels/Télégraphe
- ↑ Représentations de nombres signés dans pedia
Tutoriels | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Introductory |
| ||||||||||||
Général: |
| ||||||||||||
DĂ©fis |
| ||||||||||||
Créations Équestres |
| ||||||||||||
Agriculture |
| ||||||||||||
Enchanteur et fondant |
| ||||||||||||
Bloquer les blocs |
| ||||||||||||
MĂ©canismes |
| ||||||||||||
Serveurs |
| ||||||||||||
Fiche |
| ||||||||||||
DĂ©suet |
|