AccueilđŸ‡«đŸ‡·Chercher

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

  1. 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).
  2. 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.
  3. Oleg Mazonka, "Bit Copying: The Ultimate Computational Simplicity", Complex Systems Journal 2011, vol. 19, N3, pp. 263–285
  4. « Addleq », Esolang Wiki (consulté le )
  5. « DJN OISC », Esolang Wiki (consulté le )
  6. « P1eq », Esolang Wiki (consulté le )
  7. Mazonka, « SUBLEQ » [archive du ], (consulté le )
  8. « Subleq », Esolang Wiki (consulté le )
  9. 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


Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.