Ordinateur Ă jeu d'instruction unique
Un ordinateur Ă un jeu d'instruction unique (one-instruction set computer, OISC), parfois appelĂ© processeur Ă jeu d'instructions rĂ©duit ultime (ultimate reduced instruction set computer URISC), est une machine abstraite qui n'utilise qu'une seule instruction â Ă©vitant le besoin d'un code opĂ©ration en langage machine. Avec un choix judicieux pour l'instruction unique et des ressources infinies, un OISC est capable d'ĂȘtre un ordinateur universel de la mĂȘme maniĂšre que les ordinateurs traditionnels qui ont plusieurs instructions[1]. Les OISC ont Ă©tĂ© recommandĂ©s comme aides Ă l'enseignement de l'architecture informatique[1] - [2]et ont Ă©tĂ© utilisĂ©s comme modĂšles informatiques dans la recherche en informatique structurelle.
Architecture des machines
Dans un modĂšle Turing-complet, chaque emplacement mĂ©moire peut stocker un entier arbitraire, et â selon le modĂšle â il peut y avoir arbitrairement de nombreux emplacements. Les instructions elles-mĂȘmes rĂ©sident en mĂ©moire sous la forme d'une sĂ©quence de tels nombres entiers.
Il existe une classe d'ordinateurs universels avec une seule instruction basĂ©e sur la manipulation de bits telle que la copie de bits ou l'inversion de bits. Ătant donnĂ© que leur modĂšle de mĂ©moire est fini, tout comme la structure de mĂ©moire utilisĂ©e dans les ordinateurs rĂ©els, ces machines de manipulation de bits sont Ă©quivalentes Ă de vrais ordinateurs plutĂŽt qu'Ă des machines de Turing[3].
Les OISC actuellement connus peuvent ĂȘtre grossiĂšrement divisĂ©s en trois grandes catĂ©gories :
- Machines Ă manipuler les bits
- Machines à architecture déclenchée par le transport
- Machines complÚtes de Turing basées sur l'arithmétique
Machines Ă manipuler les bits
Les machines Ă manipuler les bits sont la classe la plus simple.
FlipJump
La machine FlipJump a une seule instruction, a;b - retourne le bit a, puis saute à b. C'est l'OISC le plus primitif, mais il est toujours utile. Il peut effectuer avec succÚs des calculs mathématiques/logiques, des branchements, des pointeurs et des fonctions d'appel à l'aide de sa bibliothÚque standard.
BitBitJump
Une machine Ă copier des bits[3], appelĂ©e BitBitJump, copie un bit en mĂ©moire et passe l'exĂ©cution inconditionnellement Ă l'adresse spĂ©cifiĂ©e par l'un des opĂ©randes de l'instruction. Ce processus s'avĂšre ĂȘtre capable de calcul universel (c'est-Ă -dire pouvoir exĂ©cuter n'importe quel algorithme et interprĂ©ter n'importe quelle autre machine universelle) car copier des bits peut modifier conditionnellement le code qui sera ensuite exĂ©cutĂ©.
l'ordinateur TOGA
Une autre machine, appelée (en)Toga Computer , inverse un bit et passe l'exécution conditionnellement en fonction du résultat de l'inversion. L'instruction unique est TOGA(a,b) qui signifie TOG gle a A et embranche sur b ((en) TOGgle a And branch to b) si le résultat de l'opération de basculement est vrai.
Machine Ă copier multi-bits
Semblable Ă BitBitJump, une machine de copie multi-bits copie plusieurs bits en mĂȘme temps. Le problĂšme de l'universalitĂ© de calcul est rĂ©solu dans ce cas en gardant des tables de saut prĂ©dĂ©finies dans la mĂ©moire.
Architecture déclenchée par le transport
L'architecture déclenchée par le transport (TTA) est une conception dans laquelle le calcul est un effet secondaire du transport de données. Habituellement, certains registres de mémoire (ports de déclenchement) dans l'espace d'adressage commun effectuent une opération assignée lorsque l'instruction les référence. Par exemple, dans un OISC utilisant une seule instruction de copie mémoire à mémoire, cela se fait en déclenchant des ports qui effectuent des sauts arithmétiques et de pointeur d'instruction lors de l'écriture.
Machines complÚtes de Turing basées sur l'arithmétique
Les machines complĂštes de Turing basĂ©es sur l'arithmĂ©tique utilisent une opĂ©ration arithmĂ©tique et un saut conditionnel. Comme les deux ordinateurs universels prĂ©cĂ©dents, cette classe est Ă©galement Turing-complet. L'instruction opĂšre sur des entiers qui peuvent Ă©galement ĂȘtre des adresses en mĂ©moire.
Actuellement, il existe plusieurs OISC connus de cette classe, basés sur différentes opérations arithmétiques :
- addition (addleq, add and branch if less than or equal to zero) [4]
- décrémentation (DJN, Decrement and branch (Jump) if Nonzero) [5]
- incrément (P1eq, Plus 1 and branch if equal to another value) [6]
- soustraction (subleq, subtract and branch if less than or equal to zero) [7] - [8]
- soustraction lorsque cela est possible (machine arithmétique)[9]
Types d'instructions
Les choix courants pour l'instruction unique sont :
- Soustraire et brancher si inférieur ou égal à zéro
- Soustraire et brancher si négatif
- Soustraire si positif sinon branche
- Inverser la soustraction et sauter si emprunter
- Déplacer (utilisé dans le cadre d'une architecture déclenchée par le transport)
- Soustraire et brancher si non nul (SBNZ a, b, c, destination)
- Cryptoleq (calcul hétérogÚne crypté et non crypté)
Une seule de ces instructions est utilisĂ©e dans une implĂ©mentation donnĂ©e. Par consĂ©quent, il n'y a pas besoin d'un code opĂ©ration pour identifier quelle instruction exĂ©cuter ; le choix de l'instruction est inhĂ©rent Ă la conception de la machine, et un OISC est gĂ©nĂ©ralement nommĂ© d'aprĂšs l'instruction qu'il utilise (par exemple, un SBN OISC, le langage SUBLEQ, etc. ). Chacune des instructions ci-dessus peut ĂȘtre utilisĂ©e pour construire un OISC Turing-complet.
Cet article présente uniquement les instructions basées sur la soustraction parmi celles qui ne sont pas déclenchées par le transport. Cependant, il est possible de construire des machines complÚtes de Turing en utilisant une instruction basée sur d'autres opérations arithmétiques, par exemple l'addition. Par exemple, une variante connue sous le nom de DLN ((en) Decrement and jump if not zero, Décrément et saut sinon zéro) n'a que deux opérandes et utilise la décrémentation comme opération de base. Pour plus d'informations, voir Langages dérivés de Subleq .
Soustraire et brancher s'il n'est pas égal à zéro
L'instruction SBNZ a, b, c, d
((en) "subtract and branch if not equal to zero" " soustraire et brancher s'il n'est pas égal à zéro ") soustrait le contenu à l'adresse a du contenu à l'adresse b, stocke le résultat à l'adresse c, puis, si le résultat n'est pas 0, transfÚre le contrÎle à l'adresse d (si le résultat est égal à zéro, l'exécution passe à l'instruction suivante dans la séquence).
Soustraire et brancher si inférieur ou égal à zéro
L' instruction subleq ((en) "subtract and branch if less than or equal to zero" " soustraire et brancher si inférieur ou égal à zéro ") soustrait le contenu à l'adresse a du contenu à l'adresse b, stocke le résultat à l'adresse b, puis, si le résultat n'est pas positif, transfÚre le contrÎle à l'adresse c (si le résultat est positif, l'exécution passe à l'instruction suivante dans la séquence).
Soustraire et brancher si négatif
Les subneg ((en) "subtract and branch if negative" " soustraire et branchement si nĂ©gatif "), Ă©galement appelĂ©e SBN, est dĂ©fini de la mĂȘme maniĂšre que subleq (cette fois, strictement nĂ©gatif)
Machine arithmétique
Dans une tentative de rendre la machine de Turing plus intuitive, ZA Melzac envisage la tùche de calculer avec des nombres positifs. La machine possÚde un abaque infini, un nombre infini de jetons (cailloux, bùtons de comptage) initialement à un endroit spécial S. La machine est capable de faire une opération :
Prenez à l'emplacement X autant de compteurs qu'il y en a dans l'emplacement Y et transférez-les à l'emplacement Z et passez à l'instruction suivante. Si cette opération n'est pas possible car il n'y a pas assez de compteurs en Y, alors laissez le boulier tel quel et passez à l'instruction T.
Il s'agit essentiellement d'un subneg oĂč le test est effectuĂ© avant plutĂŽt qu'aprĂšs la soustraction, afin de garder tous les nombres positifs et d'imiter un opĂ©rateur humain calculant sur un boulier du monde rĂ©el.
Inverser la soustraction et sauter si emprunter
Dans une instruction de soustraction inverse et de saut si emprunt ((en) reverse subtract and skip if borrow RSSB), l'accumulateur est soustrait de l'emplacement mémoire et l'instruction suivante est sautée s'il y avait un emprunt (l'emplacement mémoire était plus petit que l'accumulateur). Le résultat est stocké à la fois dans l'accumulateur et dans l'emplacement mémoire. Le compteur de programme est mappé à l'emplacement mémoire 0. L'accumulateur est mappé à l'emplacement mémoire 1.
Architecture déclenchée par le transport
Une architecture déclenchée par le transport utilise uniquement l'instruction de déplacement move, c'est pourquoi elle s'appelait à l'origine une "machine de déplacement". Cette instruction déplace le contenu d'un emplacement mémoire vers un autre emplacement mémoire en se combinant avec le contenu actuel du nouvel emplacement.
Cryptoleq
Cryptoleq est un langage composé d'une instruction éponyme, capable d'effectuer des calculs à usage général sur des programmes cryptés et est un proche parent de Subleq. Cryptoleq travaille sur des cellules de mémoire continues en adressage direct et indirect, et effectue deux opérations O1 et O2 sur trois valeurs A, B et C :
Instruction cryptoleq a, b, c
Mem[b] = O 1 (Mem[a], Mem[b])
si O 2 (Mem[b]) †0
IP = c
autre
IP = IP + 3
oĂč a, b et c sont adressĂ©s par le pointeur d'instruction, IP, avec la valeur d'adressage IP a, IP + 1 pointe vers b et IP + 2 vers c.
Dans Cryptoleq, les opérations O1 et O2 sont définies comme suit :
La principale différence avec Subleq est que dans Subleq, O1(x,y) soustrait simplement y de x et O2(x) est égal à x . Cryptoleq est également homomorphe à Subleq, l'inversion modulaire et la multiplication sont homomorphes à la soustraction et l'opération de O2 correspond au test Subleq si les valeurs étaient en clair. Un programme écrit en Subleq peut s'exécuter sur une machine Cryptoleq, ce qui signifie une rétrocompatibilité. Cryptoleq, cependant, implémente des calculs entiÚrement homomorphes et puisque le modÚle est capable de faire des multiplications. La multiplication sur un domaine crypté est assistée par une fonction unique G qui est supposée difficile à rétroconcevoir et permet le recryptage d'une valeur basée sur l'opération O2
oĂč est la valeur recryptĂ©e de y et est chiffrĂ© zĂ©ro. x est la valeur chiffrĂ©e d'une variable, soit m, et Ă©quivaut Ă Nm + 1
L'algorithme de multiplication est basé sur l'addition et la soustraction, utilise la fonction G et n'a pas de sauts conditionnels ni de branches. Le cryptage Cryptoleq est basé sur le cryptosystÚme Paillier.
Voir Ă©galement
Les références
- William F. Gilreath et Laplante, Phillip A., Computer Architecture: A Minimalist Perspective, Springer Science+Business Media, (ISBN 978-1-4020-7416-5, lire en ligne [archive du ]) Intended for researchers, computer system engineers, computational theorists and students, this book provides an in-depth examination of various OISCs, including SBN and MOVE. It attributes SBN to W. L. van der Poel (1956).
- F. Mavaddat et Parhami, B., « URISC: The Ultimate Reduced Instruction Set Computer », Manchester University Press, vol. 25, no 4,â , p. 327â334 (DOI 10.1177/002072098802500408, S2CID 61797084, lire en ligne, consultĂ© le ) This paper considers "a machine with a single 3-address instruction as the ultimate in RISC design (URISC)". Without giving a name to the instruction, it describes a SBN OISC and its associated assembly language, emphasising that this is a universal (i.e., Turing-complete) machine whose simplicity makes it ideal for classroom use.
- Oleg Mazonka, "Bit Copying: The Ultimate Computational Simplicity", Complex Systems Journal 2011, vol. 19, N3, pp. 263â285
- « Addleq », Esolang Wiki (consulté le )
- « DJN OISC », Esolang Wiki (consulté le )
- « P1eq », Esolang Wiki (consulté le )
- Mazonka, « SUBLEQ » [archive du ], (consulté le )
- « Subleq », Esolang Wiki (consulté le )
- Z. A. Melzak, « An informal arithmetical approach to computability and computation », Bulletin canadien de mathĂ©matiques, vol. 4, no 3,â , p. 279â293 (DOI 10.4153/CMB-1961-031-9)
Liens externes
- Subleq sur le wiki des langages de programmation Ă©sotĂ©riques â interprĂštes, compilateurs, exemples et langages dĂ©rivĂ©s
- [vidéo] Reductio ad absurdum sur YouTube par Christopher Domas
- Ordinateur de laboratoire subleq - Implémentation FPGA en utilisant VHDL
- The Retrocomputing Museum â Ă©mulateur SBN et exemples de programmes
- Ordinateur de laboratoire SBN - mis en Ćuvre avec des circuits intĂ©grĂ©s de la sĂ©rie 7400
- RSSB sur le wiki des langages de programmation Ă©sotĂ©riques â interprĂštes et exemples
- Implémentation OISC 32 bits du Dr Dobb - architecture déclenchée par le transport (TTA) sur un FPGA à l' aide de Verilog
- Introduction Ă l'architecture MAXQ - comprend un diagramme de carte de transfert
- Emulateur OISC â version graphique
- TrapCC (les MMU Intel x86 récents sont en fait des OISC complets de Turing. )
- Simulateur SBN - simulateur et conception inspirés de l' aide illustrative au calcul de CARDboard
- Calcul à un bit à 60 Hertz - intermédiaire entre un ordinateur et une machine à états
- La machine NOR â informations sur la construction d'un processeur avec une seule instruction
- Cryptoleq â RĂ©fĂ©rentiel de ressources Cryptoleq
- ACCHA â Architecture informatique Une perspective minimaliste
- DawnOS â un systĂšme d'exploitation pour l'architecture SUBLEQ
- Unileq - une variante de SUBLEQ utilisant des entiers non signés