Machine polymorphe / ordinateur reconfigurable

Par Gérald Foliot, août 2008

Remarque préliminaire : dans cette page nous considérons les termes de machine, computeur, ordinateur comme similaires, c'est à dire comme étant un dispositif ayant pour objet d'effectuer automatiquement des tâches de traitement.

Notion de machine polymorphe

Littéralement une machine ou ordinateur polymorphe est une machine susceptible de changer de forme au cours du temps. Ce type d'architecture se distingue d'un ordinateur classique où l'architecture de ce dernièr est fixe au cours du temps, la seule partie variable étant le programme et les données (variables). Ce type d'architecture place les machines dans un axe diachronique, qui implique à la fois un changement et potentiellement une forme d'évolution de leur architecture. On peut identifier ce type d'architecture comme étant la troisième forme des machines.

  • La première forme étant les machines à calculer comme la "Calculating Clock" (Wilhelm Schickard, 1623), la Pascaline (Blaise Pascal, 1645), la multiplicatrice (Gottfried Leibniz, 1673), la machine à différences (Charles Babbage, 1822) ; c'est-à-dire des machines susceptibles d'effectuer des opérations arithmétiques.
  • La deuxième forme étant les machines dites de Von Neumann (1945), qui correspondent gros modaux à l'architecture des ordinateurs actuels. Dans cette architecture la partie variable introduite est le programme, c'est-à-dire l'agencement des opérations qui sont effectuées sur les données, qui non seulement ne suit plus une séquence fixe (comme dans un automate simple), mais dont l'ordonnancement des opérations peut être conditionné à des résultats précédemment obtenus.

Dans les deux premières formes le coeur de la machine repose sur une unité de calcul qui effectue des tâches basiques comme des opérations arithmétiques (+,-,/,*), et/ou mathématiques. Dans la deuxième forme de machine, on rajoute à ce coeur de calcul des opérations logiques (et, ou) et conditionnelle (test logique : <,>,=,!=) qui vont avoir une influence sur le déroulement du programme.

La troisième forme des machines semble être une évolution logique des machines, puisqu’elles ne font que rendre encore plus variable l'architecture même des machines. Dans la première forme, le seul élément variable est les données. Par exemple, dans une calculatrice on ne peut pas changer la fonction de multiplication, en lui donnant deux nombres a et b, elle donnera toujours le même type de résultats quand on tape a * b ou b * a. Elle ne pourra donc jamais faire des calculs qui impliquent une algèbre non communicative (ou a*b est différents, de b*a, comme c'est le cas dans des calculs 3D1), sauf si on remplace la calculatrice par une autre sachant faire cette opération particulière. Les ordinateurs actuellement permettent donc de pallier ce problème en introduisant une forme de variabilité sur la nature des traitements. On peut via un programme, modifier le comportement d'une opération comme la multiplication, en définissant plusieurs types de fonction multiplication. C'est-à-dire une fonction de multiplication standard qui va calculer a*b conforme aux règles de l’arithmétique, ou alors calculer a*b conformément à une algèbre hypercomplexe comme l'algèbre des quaternions (algèbres couramment utilisées pour les calculs en 3 dimensions).

A priori, les machines de deuxième forme peuvent introduire toutes formes de variabilités dans le temps, qui ne nécessitent pas une nouvelle source de modifications continuelles. Historiquement, il y a eu quatres intérêts pour utiliser des machines à changement de forme :

  1. Diminuer le temps d'exécution des programmes, en disposant d'une architecture adapté à la tache. Par exemple, si on prend le cas du calcul du sinus d'un angle, on peut soit programmer une fonction qui va calculer le sinus, soit disposer d'un circuit électronique spécifique qui sait donner le résultat en fonction de l'entrée. Dans le cas du programme, le temps d'exécution de l'opération va dépendre d'un nombre d'opérations nécessaires pour faire un tel calcul, dans le deuxième cas le temps d'exécution va dépendre uniquement de la latence du circuit électronique. On suppose donc que l'on peut concevoir des circuits qui soient plus rapides que leur équivalent en programme (dans l'évolution actuelle des processeurs, une des principales innovations et le rajout d'instruction spécifique comme le traitement d'image, pour accélérer les calculs). Historiquement une des premières personnes à avoir eu cette idée est Gérald Estrin en 1960 (Organization of Computer Systems-The Fixed Plus Variable Structure Computer.)
  2. Disposer d'une architecture qui rende le programme indépendant de l'état physique du dispositif, c'est-à-dire disposé d'un ordinateur en état de fonctionnement, même si une de ses parties est détruite ou non disponible. Ce type de machine a pour principalement application le domaine militaire. En effet, il est stratégiquement intéressant de pouvoir disposer de machine qui continue de fonctionner, même si elles sont partiellement endommagées par des radiations par exemple. Ce type de machine reprend une idée principale de l'Internet (disposer d'un réseau de communication qui puisse continuer à fonctionner, même en cas de destruction partielle) en l'appliquant aux ordinateurs. (Raytheon a annoncé le 20 mars 2007 avoir réalisé ce premier type d'ordinateur, voir l'annonce. Pour information Raytheon est une des premières sociétés américaines d'armement, elle a été entre autres fondée par Vannevar Bush en 1922. Elle produit notamment les missiles Tomahawk et les anti-missiles Patriot).
  3. Résoudre certaine tâche que l'on ne sait définir par programmer (informatique dites évolutionniste). À strictement parler, ce cas de figure ne s'applique pas seulement aux machines polymorphes, mais à l'informatique en général. Particulièrement dans le champ de l'intelligence artificielle, il y a un certain nombre de problèmes dont on ne sait pas explicitement comment les résoudre via un programme déclaratif. Donc une des idées est d'approcher une bonne forme de programme, en s'inspirant du vivant, via classiquement des algorithmes génétiques ou des réseaux de neurones. Dans ce cas de figure, la machine évolue d'une forme première vers une forme capable d'effectuer la tâche souhaitée (par exemple reconnaître des formes). Historiquement, on peut considérer que c'est entre autres Turing (1948), qui a explicitement proposé une telle architecture (machine inorganisée) en remettant en cause la légitimité de sa propre machine.
  4. Concevoir des systèmes à N-Variant : les systèmes à variations multiples ont pour but de générer plusieurs exemplaires d'un même processus. Ils s'utilisenr de deux façons :

    • Soit à partir d'un processus unique, on en conçoit plusieurs copies différentes qui réalisent exactement la même chose, mais avec substrat matériel différent. De tels systèmes s'utilisent classiquement pour la protection de la propriété intellectuelle d'un circuit électronique en empêchant via usuellement des fonctions de cryptage la décompilation du circuit pour le reproduire (protection anticopie). Il s'utilise aussi pour la protection des serveurs (voir N-Variant framework), en générant plusieurs copies du même serveur, afin de le protéger contre les attaques (on peut penser que si un attaquant arrive à trouver une faille dans un des serveurs, il pourra difficilement retrouver la même dans un autre serveur qui réalise la même tâche, mais de façon différente).
    • Soit à partir d'un système physique (classiquement un chips) unique, celui-ci autogénéré des variations différentes de lui-même pour répondre à des besoins spécifiques d'exécution de tâches. C'est ce que Farinaz Koushanfar a dénommé comme étant des processeurs à personnalités multiples, c'est à dire des processeurs susceptibles d'embarquer en son sein plusieurs types de comportements et qui peut basculer d'une identité à une autre en fonction de la demande. (voir l'annonce sur le site de l'Université de Rice, et sa publication en français sur le site de VNUNet).

En inscrivant l'architecture même des machines dans un changement potentiellement continuel, trois concepts différentient ce type de machine des machines standards :

  • L'adaptabilité : c'est-à-dire produire des machines qui ne soient plus des "general purpose computer" (ordinateur universel) mais dont leur architecture est spécifique à une tâche donnée.
  • La survie : c'est-à-dire produire des machines qui demeure constantes malgré une modification volontaire ou non d'une ou plusieurs de ses parties, en reproduisant ou en réagençant en temps réel leur structure.
  • La création : c'est-à-dire produire des machines qui par leur possibilité d'auto-modification tendent vers une forme computationnelle capable de résoudre une tâche ou d'inventer une solution à un problème dont on ne sait explicitement en donner une solution.

On peut noter que les machines polymorphes tendent quelques parts à s'approcher d'une définition du vivant, puisque les trois concepts ci-dessous reprennent des caractérises usuellement rencontrer pour définir la vie. En ce sens, si les machines polymorphes marquent une évolution significative d'un point de vue technologique, il y a finalement une redécouverte des ambitions de Von Neumann (automate autoreproducteur) et Turing (machine inorganisée) : produire un système à même d'accomplir les tâches que l'homme sait accomplir, mais non pas en se basant sur des principes complètement différents de l'homme (comme on a pu le penser avec l'I.A. symbolique), mais en reprenant des principes et concepts naturels.

Actuellement, il n'existe qu'une seule façon accessible (mis à part dans le domaine militaire) pour le grand public de concevoir des machines polymorphes de façon matérielle est d'avoir recours au FPGA/Field-programmable gate array (hormis les PIM/Processor-in-memory, comme dans le projet de Transputer, IRAM, Stanford Smart Memories Project, ou Notre Dame PIM). En effet, ce sont les seuls circuits électroniques actuellement disponibles sur le marché présentant des caractéristiques de changement de forme voir potentiellement de changement de forme en temps réel (architecture reconfigurable dynamiquement).

Pour aller plus loin :

Morphware(TM) Forum : le but de se groupement est définir une architecture ouverte pour les ordinateurs polymorphes. Le groupement est issu du programme PCA (Polymorphous Computing Architectures) de la DARPA (Defense Advanced Research Projects Agency). On trouve principalement sur ce site des documents qui décrivent les Morphware.

The Morphware Page : site d'information et base de liens sur les machines reconfigurables reprennant principalement les travaux de Reiner Hartenstein. Ce document PDF de Hartenstein dresse une typologie des machines polymorphes. Hartenstien ou son équipe est très certainement l'auteur de la page Reconfigurable Computing sur Wikipedia

 


Exemple d'operation non commutative (cas de la rotation dans un espace 3D)1. Pour ce convaincre que dans certain cas, il existe des opérations non commutatives, prenons le cas de la rotation dans l'espace. Dans un espace à deux dimensions (i.e. un plan), si on prend un objet et qu’on le tourne d'abord de 45° puis de 90° au final, on aura tourné l’objet de 135° et on obtiendra l'objet à la même place que si on avait d'abord tourné de 90° puis de 45°. Si on se place dans un espace à trois dimensions, prenons une boîte d'allumettes, et tournons-la de 90° sur l'axe Z puis de 90° sur l'axe X, l'objet ne sera pas dans la même position que si l'on avait tourné d'abord de 90° sur l'axe X puis de 90° sur l'axe Z (voir illustration ci-contre).

© 2011/2013 - Gérald Foliot