FR 2833728 A1 20030620 FR 0116237 A 20011214 La présente invention vise un procédé et un dispositif de traitement d'information. Elle s'applique, en particulier aux ordinateurs personnels, aux ordinateurs de réseau et aux serveurs informatiques. De plus en plus d'outils utilisés quotidiennement fonctionnent grâce à un ou plusieurs microprocesseurs. C'est le cas d'un micro-ordinateur, mais aussi d'un téléphone portable, d'une automobile, d'un appareil électroménager, par exemple. Ces microprocesseurs remplissent un rôle essentiel ou accessoire au sein de ces outils. Ces microprocesseurs peuvent recevoir et/ou envoyer des informations aux périphériques auxquels ils sont connectés. Depuis la naissance des microprocesseurs dans les années 1970, une multitude de modèles aux caractéristiques très différentes sont apparus sur le marché. Chaque fabricant de matériel électronique a amélioré ses produits, et fait des choix technologiques différents. Ce phénomène a été particulièrement prononcé pour les périphériques (cartes graphiques, imprimantes, capteurs, etc. ), qui se déclinent aujourd'hui sous des centaines de versions différentes. Cette hétérogénéité constitue aujourd'hui un frein. En effet, les programmes doivent être adaptés z Z : D en autant de versions qu'il y a de microprocesseurs et de périphériques. De plus, les programmes doivent pouvoir communiquer entre eux de façon transparente, ce qui requiert une adaptation spécifique à chaque interlocuteur différent. Ces adaptations sont longues et coûteuses à réaliser. Pour résoudre ces problèmes, l'émulation est une solution parfois retenue. Un émulateur est un programme, exécuté sur une machine A (machine support), qui simule l'architecture matérielle d'une machine B. On peut ainsi utiliser les programmes originellement conçus pour la machine B sur la machine A. On factorise donc le travail d'adaptation des programmes de la machine B vers la machine A. Mais un émulateur est un programme complexe et long à réaliser. Il ne permet de simuler qu'une architecture matérielle en particulier. Mais surtout, il dépend de l'architecture de la machine A. Le problème n'est donc que partiellement résolu, puisque cette architecture matérielle A peut devenir obsolète et être remplacée par un modèle différent A', a priori incapable d'exécuter directement les programmes écrits pour la machine A. Les technologies Java (marque déposée) de Sun microsystems (marque déposée) ou VP (marque déposée) de Tao Group (marque déposée) se basent sur une machine virtuelle. Les techniques d'émulation permettent de mettre en oeuvre la machine virtuelle sur des architectures matérielles actuellement disponibles. Ces machines virtuelles ont été conçues comme de nouveaux standards de programmation. Elles sont destinées à uniformiser l'écriture et l'exécution des programmes en vue d'éliminer les incompatibilités. On observe que le même genre de problème se rencontre en linguistique. La Commission Européenne engage des dépenses considérables pour la traduction des documents de travail qu'elle génère et pour ses réunions. Les langues officielles doivent être traduites entre elles ce qui implique une démultiplication des traductions. Si toutes les langues étaient d'abord traduites dans une langue commune C (l'Anglais ou l'Espéranto par exemple), puis retraduites depuis cette langue C vers chaque langue officielle, le nombre de traducteurs nécessaires serait extrêmement ZD réduit. Dans ce cas, l'étape supplémentaire dans le processus de traduction peut entraîner un délai, mais moins de moyens sont nécessaires. Cette solution peut être transposée au problème de t'hétérogénéité des architectures matérielles Zn vu précédemment. Ainsi, la simulation de tous les programmes d'un ensemble de machines B, ZD B', B",..., vers un ensemble de machines A, A', A",..., peut être simplifiée par l'utilisation d'une machine virtuelle C intermédiaire. En effet, il suffit d'écrire les émulateurs des machines B, B', B",..., pour la machine virtuelle C. Il faut ensuite écrire sur un type de machine A, ou tout autre type de machine A', A",.... t'émulateur de machine virtuelle C. On peut ainsi exécuter tout programme écrit pour les machines B, B', B",..., sur toute machine A, A', A",... Il y a factorisation du temps de travail puisque les programmes d'émulation de B, B', B",... vers C sont écrits une fois pour toutes. Cependant, l'émulateur C reste toujours complexe et long à écrire. Par ailleurs, les capacités des périphériques virtuels de la machine C dépendent directement des capacités des périphériques disponibles sur la machine support. Si certains périphériques sont absents, les programmes de la machine C peuvent ne pas fonctionner. La machine C ne peut donc pas facilement s'adapter à l'environnement matériel disponible sur la machine support. Enfin, le programmeur doit écrire des sous-programmes souvent compliqués permettant de faire le lien entre la machine virtuelle C et les périphériques de la machine A ( drivers ou pilotes de périphériques). Ces pilotes sont spécifiques d'une machine A donnée, et doivent donc être réécrits systématiquement pour toute nouvelle machine A', A",... Chaque aspect de la présente invention vise à répondre à tout ou partie de ces inconvénients. Selon un premier aspect, la présente invention vise un dispositif de traitement d'information, caractérisé par : des machines virtuelles imbriquées, c'est-à-dire qu'une machine est émulée par une autre, hiérarchiquement de la plus simple à la plus complexe, c'est-à-dire qu'une machine donnée émule totalement une autre machine plus compliquée et élaborée, chaque machine virtuelle ayant une architecture originale, c'est-à-dire se différenciant de l'architecture des autres machines de la hiérarchie de machines virtuelles, chaque machine virtuelle étant adaptée à exécuter un programme d'émulation ou de compilation dynamique simulant l'architecture virtuelle plus complexe de niveau immédiatement supérieur, une machine virtuelle d'un niveau donné dans la hiérarchie possédant donc une architecture plus simple que celles de toutes les machines virtuelles de niveau supérieur ; les langages machines des deux niveaux de machines virtuelles les plus bas de la hiérarchie sont C > Z : > spécifiquement conçus pour permettre l'exécution de toutes les opérations du niveau supérieur ; un niveau de la hiérarchie, constituant le sommet de la hiérarchie, n'émule aucun autre niveau de la hiérarchie ; et tout niveau de la hiérarchie peut être lié à une machine réelle généraliste (la machine support) au moyen d'un programme exécutable d'émulation ou de compilation dynamique spécifique à cette machine réelle. Ainsi, selon son premier aspect, la présente invention vise un ensemble de machines virtuelles imbriquées hiérarchiquement dont la machine de base est une machine virtuelle C simplifiée à l'extrême, afin que le travail pour l'homme soit réduit au strict minimum lorsqu'il faut l'émuler sur des machines quelconques A, A', A",... En contrepartie, plus une machine virtuelle est d'un niveau hiérarchique bas, plus il est difficile de concevoir des programmes pour elle. C'est pourquoi elle exécute un émulateur qui va simuler une architecture plus complexe, d'un niveau supérieur, mais plus pratique à programmer pour l'humain. Il en est ainsi pour chaque machine virtuelle, jusqu'à ce que l'on atteigne le niveau de complexité adapté pour une utilisation donnée. La simplification offerte par la présente invention a pour contrepartie un nombre plus élevé d'opérations à exécuter pour la machine support (plus faible efficacité). Cependant la plus grande partie du travail pour disposer d'une machine virtuelle de complexité satisfaisante est effectuée par la machine support, puisque le programmeur n'a qu'à réaliser le programme d'émulation de la machine à la base de la hiérarchie. La présente invention reporte donc au niveau logiciel un maximum de la complexité d'une machine matérielle généraliste ordinaire, une machine généraliste étant une machine capable d'effectuer tout type d'opération mathématique. Ainsi, conformément au premier aspect de la présente invention, une machine virtuelle C simplifiée à l'extrême est mise en oeuvre, afin que le travail pour l'homme soit réduit lorsqu'il faut l'émuler sur des machines quelconques A, A', A",... Selon des caractéristiques particulières, le langage machine de la machine virtuelle à la base de toute la hiérarchie ne comporte que deux opérations élémentaires. Il est donc très facile à émuler sur n'importe quelle machine support A, A',... Selon des caractéristiques particulières, les deux instructions de la machine virtuelle de plus bas niveau sont une soustraction et une sauvegarde en mémoire. Selon des caractéristiques particulières, le langage machine de la machine virtuelle de niveau immédiatement supérieur à la machine virtuelle à la base de toute la hiérarchie comporte quatre opérations élémentaires. Ce second niveau présente à la fois une bonne efficacité ainsi qu'une facilité d'utilisation par un programmeur, relativement au niveau inférieur. Selon des caractéristiques particulières, le langage machine de la machine virtuelle à la base de toute la hiérarchie ne comporte que quatre opérations élémentaires. Il est donc facile à émuler sur n'importe quelle machine support A, A'... Selon des caractéristiques particulières, lesdites quatre instructions sont une soustraction, une sauvegarde en mémoire, une fonction logique booléenne et un chargement depuis la mémoire. Zn ZD 11 Il La fonction logique booléenne est, par exemple l'une des fonctions"et"ou"ou". Selon des caractéristiques particulières, le dispositif de traitement d'information visé par le premier aspect de la présente invention met en oeuvre une description organisée et normalisée des périphériques. Grâce à ces dispositions, la mise en oeuvre de la description organisée et normalisée des c périphériques fournit toutes les informations nécessaires pour que les machines virtuelles puissent s'adapter à leur environnement matériel, quel qu'il soit, avec une intervention humaine limitée. Ainsi, la simplification de la machine virtuelle C intervient aussi au niveau de la gestion des périphériques. Selon des caractéristiques particulières, un espace mémoire infini est géré en utilisant des adresses comportant une information de longueur de l'adresse et une information de valeur de ladite adresse. Selon des caractéristiques particulières, le dispositif de traitement d'information tel que succinctement exposé ci-dessus met en oeuvre au moins trois machines virtuelles imbriquées hiérarchiquement de la plus simple à la plus complexe. Selon un deuxième aspect, la présente invention vise un procédé de traitement d'information, caractérisé par au moins trois machines virtuelles imbriquées, c'est-à-dire qu'une machine est émulée par une autre, hiérarchiquement de la plus simple à la plus complexe, c'est-à-dire qu'une machine donnée émule totalement une autre machine plus compliquée et élaborée, chaque machine virtuelle ayant une architecture originale, c'est-à-dire se différenciant de l'architecture des autres machines de la hiérarchie de machines virtuelles, chaque machine virtuelle étant adaptée à exécuter un programme d'émulation ou de compilation dynamique simulant l'architecture virtuelle plus complexe de niveau immédiatement supérieur, une machine virtuelle d'un niveau donné dans la hiérarchie possédant donc une architecture plus simple que toutes les machines de niveau supérieur. Les caractéristiques particulières et les avantages du procédé visé par le deuxième aspect de la présente invention étant les mêmes que ceux du procédé visé par le premier aspect de la présente invention, ils ne sont pas rappelés ici. La très grande diversité de périphériques complique fortement le travail du programmeur. Des périphériques aux fonctions pourtant similaires (exemple : les cartes graphiques) se déclinent en une multitude de versions, chacune avec ses spécificités, forçant le programmeur à passer du temps sur la gestion de ces particularités alors qu'il pourrait le consacrer à d'autres fonctions plus C > essentielles de son logiciel. Le programmeur doit recevoir et/ou envoyer les données au C > périphérique selon un format qui lui est spécifique. C'est donc le programmeur qui se plie doublement aux exigences du matériel. Nous avons cherché à uniformiser la gestion des 1 ZD périphériques pour qu'un même périphérique (ou des périphériques aux fonctions semblables) soit géré de la même façon par le programmeur quel que soit l'environnement matériel dans ZD 1--l lequel est simulée la Machine Universelle. Pour que ce ! a fonctionne, conformément aux aspects de la présente invention succinctement exposés ci-dessous, on décrit les périphériques réellement disponibles sous une forme standardisée qui complique le moins possible l'écriture de l'émulateur de la machine de niveau zéro. Chacun des aspects suivants de la présente invention entend remédier à tout ou partie des inconvénients exposés ci-dessus. Selon un troisième aspect, la présente invention vise un procédé de gestion de périphériques, caractérisé en ce qu'il met en oeuvre une arborescence de représentations de périphériques, arborescence dans laquelle un périphérique est appréhendé en suivant un cheminement partant de la racine de l'arborescence et passant par au moins une feuille, l'information nécessaire pour commander ledit périphérique étant collectée au cours dudit cheminement, au moins à chaque feuille de l'arborescence rencontrée. Selon des caractéristiques particulières, l'information nécessaire pour commander ledit périphérique est successivement collectée à chaque noeud ou feuille de l'arborescence rencontré. Selon des caractéristiques particulières, la présente invention vise un procédé de gestion de périphériques caractérisé en ce qu'il met en oeuvre une arborescence permettant de décrire tout périphérique, arborescence dans laquelle : - la description de chaque périphérique est réalisée selon les caractéristiques élémentaires du périphérique, informations synthétiques résultant des phénomènes élémentaires et d'un processus d'analyse du périphérique, ces caractéristiques élémentaires permettant au programme contrôlant le périphérique, exécuté par un processeur, d'appréhender les unités non algorithmiques qui assurent l'interface directe avec le monde réel, unités dont l'agencement permet de remplir la fonction du périphérique ; - la description des périphériques s'organise selon une arborescence résultant des phénomènes élémentaires et d'un processus d'analyse du périphérique, cette arborescence comportant des noeuds et des feuilles, les liens entre les noeuds étant symbolisés par des branches, un noeud regroupant d'autres noeuds ou des feuilles qui le décrivent plus précisément, une feuille étant une information unitaire indivisible qui ne rassemble pas d'autres informations plus élémentaires, - pour prendre connaissance d'un périphérique, et/ou y accéder, le programme contrôlant les Zn périphériques parcourt l'arbre depuis la racine, noeud qui n'est pas regroupé par un autre noeud et qui représente tous les périphériques, vers les feuilles. Grâce à ces dispositions, des périphériques aux fonctions semblables, sont gérés de la même 1 façon, quel que soit l'environnement matériel dans lequel est simulée une machine virtuelle. En outre, en ne considérant que les unités non algorithmiques, on simplifie la modélisation des ZD périphériques et on facilite donc l'uniformisation de leur représentation et donc leur gestion. Un périphérique est ainsi décrit selon ses caractéristiques élémentaires, c'est-à-dire l'ensemble des paramètres qui permettent de contrôler le périphérique et dont l'agencement permet de remplir la fonction du périphérique. Selon des caractéristiques particulières, chaque caractéristique élémentaire, physique ou symbolique, régissant le rapport du périphérique avec son environnement réel est représentée par une"coordonnée", tes"coordonnées"étant regroupées dans des"dimensions", représentant des dimensions, au sens mathématique du terme, la combinaison de l'ensemble des"dimensions" forme un espace, au sens mathématique du terme, à n dimensions, dans lequel la fonction du périphérique est complètement modélisée, n étant le nombre de"dimensions"du périphérique. On observe qu'une caractéristique élémentaire est représentée, sur une"dimension", par une "coordonnée". L'ensemble des "coordonnées" de certaines "dimensions" peuvent exprimer un phénomène élémentaire de leur caractéristique élémentaire (la "caractéristique modulée") avec une certaine intensité parmi un ensemble d'intensités possibles. On parle de !'"intensité"d'une"coordonnée". Le choix d'une"intensité"parmi l'ensemble des"intensités"disponibles pour une"coordonnée" d'un point de t'"espace"d'un périphérique exclu systématiquement toutes les autres"intensités" de cette même "coordonnée. " Selon des caractéristiques particulières,l'"univers"des périphériques, la racine de l'arborescence, regroupe deux noeuds appelés"groupes"situés au niveau suivant, ces"groupes"symbolisant le devenir des informations échangées entre le processeur et un périphérique : - le "groupe" des périphériques d'échange, pour lesquels les informations échangées sont transmises dans un environnement ouvert, accessible par d'autres récepteurs que le processeur, permettant ainsi leur communication avec l'extérieur de la machine, ou bien les informations échangées sont transmises à partir d'émetteurs, situés dans un environnement ouvert, vers le processeur, et - le "groupe" des périphériques de conservation, pour lesquels les informations échangées sont transmises dans un environnement accessible exclusivement au processeur. Selon des caractéristiques particulières, chacun des"groupes"englobe deux"hyperespaces", les "hyperespaces"du"groupe"des périphériques d'échange indiquant le sens de transmission des 1- c informations, les "hyperespaces" du "groupe" des périphériques de conservation indiquant le niveau de disponibilité de l'information pour le processeur et comportant un"hyperespace"des périphériques de conservation adressables pour lesquels le processeur a un accès direct, instantané et permanent aux périphériques pour échanger des informations et un"hyperespace" z : l des périphériques de conservation non adressables pour lesquels l'accès aux informations est indirect car il requiert des opérations supplémentaires pour le processeur. Selon des caractéristiques particulières, chacun des "hyperespaces" englobe un ou plusieurs "espaces" de périphériques, chacun regroupant la description du modèle arborescent d'un C > périphérique. Selon des caractéristiques particulières, l'exploitation de l'arborescence est assurée : - par la machine support, à travers une portion du programme d'émulation de la machine de niveau zéro appelée le cartographe/énumérateur (Mapper/Enumerator) qui prend en charge les ZD protocoles d'accès aux périphériques à partir du niveau zéro, - par un processeur qui reçoit des blocs qui donnent les principales informations permettant d'évaluer la fonction de chaque périphérique et toutes les informations pour calculer et interpréter les données de configuration et d'exploitation, les calculs et interprétations des données d'exploitation et de configuration étant effectués au moyen de programmes spécifiques insérés e dans ce codage, le second bloc comportant la description d'au moins un"espace"de périphérique et de tous les noeuds qu'il englobe dans une arborescence de représentation des périphériques, et - par un processeur virtuel spécialisé, nommé coprocesseur de périphériques, prenant en charge les programmes de calcul des données de configuration et d'exploitation, ainsi que des directives de dépendance insérées dans les noeuds de l'arbre. Le processeur est alors en mesure d'exécuter un programme prenant en charge le parcours des différentes branches de l'arbre pour accéder aux périphériques, par l'intermédiaire des programmes du coprocesseur qui accèdent à un registre"MER". Zn En niveau zéro, les blocs"TREE"sont transmis sur commande par le cartographe/énumerateur, par l'intermédiaire du registre"MER". L'ensemble de ces blocs contient toutes les indications nécessaires pour pouvoir reconstruire un arbre des périphériques complet. Des blocs"LINK"sont installés dans la mémoire de la machine support par le cartographe/énumerateur, qui les appelle selon les "espaces" de périphériques utilisés. Les blocs"FEXT"sont chargés explicitement par un programme écrit en niveau 0.4 et viennent enrichir les descriptions des blocs"TREE". Selon un quatrième aspect, la présente invention vise, pour accéder aux périphériques depuis un processeur : - pour l'accès aux données de certains périphériques auxquels seul le processeur peut accéder, aussi bien en lecture qu'en écriture, n'étant pas pris en compte les accès par d'autre moyens que le processeur qui ne se traduisent par aucun changement dans l'environnement périphérique du processeur ou sur le processeur lui-même, et ne modifient pas le sens des informations échangées avec le périphérique, certaines portions de l'espace d'adressage sont spécialisées pour les périphériques, et à une portion correspond un périphérique particulier, de telle manière qu'il suffit de faire exécuter au processeur une instruction qui accède à cette portion de l'espace d'adressage pour établir la communication avec le périphérique voulu, un plan d'organisation de la mémoire z : l étant mis en oeuvre, et - la gestion des autres données repose sur un seul registre situé à une adresse mémoire fixe. Selon un cinquième aspect, la présente invention vise un procédé pour exploiter des périphériques caractérisé en ce que l'ensemble des informations nécessaires pour exploiter un périphérique sont rassemblées en au moins deux blocs de données distincts : - le premier bloc qui permet de transporter et d'aiguiller les données de configuration et c d'exploitation échangées entre un processeur et au moins un périphérique particulier de la machine support par l'intermédiaire d'un registre, le premier bloc établissant le lien avec les adresses d'accès à chaque dit périphérique sur la machine support, et contenant des programmes écrits dans le langage machine natif de la machine support afin de transporter les données échangées aux bonnes adresses, ces programmes permettant aussi de détecter la présence de chaque dit périphérique et d'initialiser chaque dit périphérique dans un état stable permettant son bon fonctionnement ultérieur ; et - le second bloc qui donne les principales informations permettant d'évaluer la fonction de chaque dit périphérique et toutes les informations pour calculer et interpréter les données de configuration et d'exploitation, l'évaluation étant permise par le codage binaire du modèle théorique arborescent, tandis que les calculs et interprétations des données d'exploitation et de configuration sont effectués au moyen de programmes spécifiques insérés dans ce codage, le second bloc étant la description, pour chaque dit périphérique, del'"espace"de périphérique et de tous les noeuds quel'"espace"englobe ("espace","dimensions","coordonnées"et "intensités"), donc une portion de l'arbre, et indiquant t'"hypcrespace"auquel appartient ledit "espace". Selon des caractéristiques particulières, l'ensemble des informations relatives à l'exploitation d'un périphérique comporte un troisième bloc, qui contient un type de modélisation de caractéristiques physiques, symboliques, ou encore logiques permettant de préciser le comportement dans la réalité des"espaces","dimensions","coordonnées"et"intensités"inclus dans le second bloc, et notamment des caractéristiques élémentaires qui leurs sont associées. Il peut aussi contenir d'autres informations venant enrichir le second bloc. Le troisième bloc,"FEXT", peut être présent lorsque le second bloc,"TREE", ne peut pas fournir certaines informations. Il peut contenir des équations Physiques, des représentations symboliques (par exemple graphiques). ZD Selon un sixième aspect, la présente invention vise un procédé de modélisation de périphériques, caractérisé en ce qu'il comporte, pour chaque périphérique : - une étape d'analyse microscopique dudit périphérique pour déterminer les caractéristiques phénoménales ainsi que les ensembles exclusifs relatifs audit périphérique ; - une étape initiale au cours de laquelle on considère qu'aucune "dimension", "coordonnée" ou "intensité" n'est définie, chacun des ensembles exclusifs étant associé à un ensemble d' "intensités" rattachées à une nouvelle "coordonnée", la caractéristique phénoménale liée à l'ensemble exclusif étant associée à cette nouvelle "coordonnée", pour un ensemble exclusif, chaque "intensité" représentant une donnée d'exploitation distincte, l'ensemble des "coordonnées" étant regroupé au sein d'une seule "dimension" ; - des étapes itératives au cours desquelles, pour chaque"dimension"existante, appelée "dimension mère", on cherche à rassembler toutes ses "coordonnées" en au moins un groupe en respectant les règles suivantes : a) dans le cas d'un rassemblement en deux groupes au moins, respectant les règles suivantes : chaque groupe possède le même nombre de"coordonnées", c aucun groupe ne comporte qu'une seule "coordonnée", il n'existe pas de phénomène élémentaire qui n'appartienne ni à une caractéristique intra-groupe, ni à une caractéristique inter-groupes et au moins deux"coordonnées"de la"dimension mère"doivent comporter au moins un phénomène élémentaire ; pour chaque groupe, l'ensemble des phénomènes élémentaires présents à l'identique dans chaque "coordonnée"du groupe étant nommé"caractéristique intra-groupe", parmi les éventuels phénomènes élémentaires n'appartenant pas aux caractéristiques intragroupes, l'ensemble des phénomènes élémentaires qui sont présents à l'identique dans une "coordonnée"de chacun des groupes est nommé"caractéristique inter-groupes", un phénomène élémentaire ne pouvant participer qu'à une seule caractéristique inter-groupes ; b) dans le cas d'un rassemblement en un seul groupe respectant les règles suivantes : la"dimension mère"contient au moins deux"coordonnées", toutes les "coordonnées" contiennent des "intensités", et la caractéristique modulée de chaque"coordonnée"fait partie de la caractéristique intra-groupe ; au moins un phénomène élémentaire présent à l'identique dans chaque"coordonnée"du groupe étant nommés "caractéristique intra-groupe", pour chaque"coordonnée", une caractéristique inter-groupes rassemble les éventuels phénomènes tD élémentaires qui n'appartiennent pas à la caractéristique intra-groupe ; c) dans les deux cas, le non respect d'au moins une règle interdisant le rassemblement des ZD "coordonnées"en groupe (s) et rendant définitive la "dimension" ; - une étape de constitution de"dimensions"au cours de laquelle, s'il est possible de constituer des groupes selon les règles a) et b), alors deux nouvelles "dimensions" sont créées : Z : > C > une "dimension" possédant un nombre de "coordonnées" égal au nombre de"coordonnées"d'un groupe de la "dimension mère", les caractéristiques phénoménales des "coordonnées" de cette nouvelle "dimension" étant celles d'un groupe quelconque de la "dimension mère", desquelles on a retiré la caractéristique intra-groupe, Z : D une"dimension"possédant un nombre de"coordonnées"égal au nombre de groupes de la "dimension mère", chacun de ces groupes engendrant une "coordonnée" de la nouvelle 1- ZD "dimension", la caractéristique intra-groupe de chacun de ces groupes constituant la 1 caractéristique phénoménale de la "coordonnée" engendrée, une"intensité"restant toujours liée à a "coordonnée" qui contient la caractéristique modulée, et donc à la "dimension" qui contient cette "coordonnée" ; - une fois toutes les "dimensions" traitées, une étape de finalisation au cours de laquelle, s'il n'a pas été possible de créer des groupes sur au moins une des "dimensions", alors la construction du modèle est terminée, les "dimensions" produites étant regroupées au sein de f'espace"du périphérique. D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre, faite en regard des dessins annexés dans lesquels : - la figure 1 représente, schématiquement, une représentation d'un périphérique dans un espace, à l'aide de dynamiques, - la figure 2 représente, schématiquement, des étapes de modélisation d'un périphérique, - la figure 3 représente, schématiquement, deux configurations d'un périphérique, - les figures 4 et 5 représentent, schématiquement, une structure microscopique, définie en figure 2, d'un périphérique, - les figures 6 à 14 représentent, schématiquement, une dimension produite au cours d'une étape de modélisation illustrée en figure 2, - la figure 15 représente, schématiquement, une arborescence de périphériques conforme à un aspect de la présente invention, - la figure 16 représente, schématiquement, un parcours de noeuds d'une arborescence représentant des périphériques conformément à un aspect de la présente invention, et - la figure 17 représente un schéma d'organisation de machines virtuelles dans un mode de réalisation exemplaire du premier aspect de la présente invention. Dans toute la description, dans le préambule et les revendications, on utilise les définitions suivante. L'ensemble des éléments d'un (micro) processeur accessibles par un quelconque moyen logiciel (les instructions, les registres, la gestion de la mémoire,...), se traduit par un codage binaire précis appelé "langage machine" du processeur. L'ensemble des éléments des périphériques Il z accessibles par un quelconque moyen logiciel ainsi que le langage machine constituent ce que t ID C > nous appelons "l'architecture matérielle". Le terme "machine" désigne dans la suite une "machine à registres" (ou machine de Von Neumann). z : l On appelle "machine universelle" une machine mettant en oeuvre au moins un aspect de la présente invention. Nous désignons par "processeur virtuel" un ensemble de mécanismes logiciels qui réalisent un langage machine donné, tout comme un "processeur réel" est un ensemble de mécanismes Zr > physiques (par exemple électriques) qui réalisent le langage machine pour lequel il a été conçu. Un processeur virtuel simule donc un processeur réel. Si l'on y ajoute un programme de simulation des périphériques reliés au processeur, on obtient une "machine virtuelle". On définit "l'efficacité" d'un langage machine par sa capacité à permettre la réalisation de toutes les opérations d'un langage de haut niveau en un minimum d'instructions. On observe qu'au sens de la présente invention, un arbre, ou une arborescence, est un graphe que l'on parcourt en partant toujours d'un même noeud prédéterminé, appelé "racine". Préférentiellement, l'arbre ou l'arborescence est, cependant, un arbre au sens mathématique du terme, c'est-à-dire comportant d'autres extrémités que la racine. Premier aspect de la présente invention, illustré en figure 17. 1-Introduction à la machine de niveau zéro La machine de niveau zéro, base de la hiérarchie d'émulateurs imbriqués constituant la Machine Universelle, se décline en deux versions distinctes appelées "machine de niveau 0. 2" 20 et "machine de niveau 0. 4" 21. La plupart des caractéristiques de ces machines sont similaires. 1. 1 - Introduction à la machine 20 de niveau 0.2 Le niveau 0.2 représente les fondations de la Machine Universelle. C'est le niveau le plus simple de toute la hiérarchie d'émulateurs imbriqués. L'exécution de tous les programmes de niveau supérieur peut reposer sur lui. On distingue la machine virtuelle 20 de niveau 0.2 de l'émulateur 22 de niveau 0.2. La machine virtuelle 20 de niveau 0.2 se présente pour le programmeur comme un ordinateur minimal, avec un langage machine élémentaire et un accès aux périphériques 32. L'émulateur 22 de niveau 0.2 est le programme chargé de réaliser la traduction des opérations de la machine virtuelle de niveau 0.2 en opérations exécutables par la machine support 23. Comme la machine 20 de niveau 0.2 est extrêmement simple, la programmation de cette traduction se fait très facilement (de l'ordre de quelques jours pour un programmeur). Lorsqu'on souhaite exploiter une machine de la hiérarchie, il suffit d'adapter l'algorithme d'émulation du niveau 0. 2 dans le langage natif de la machine support 23. Tous les émulateurs c t, des niveaux supérieurs s'exécuteront directement sur cet émulateur 22. 1. 2 - Introduction à la machine 21 de niveau 0.4 La structure à 2 instructions du niveau 0.2 implique une forte augmentation du nombre d'opérations nécessaires pour exécuter des programmes écrits dans un langage de haut niveau (faible efficacité), comparé à une machine virtuelle (ou physique) classique. Il en résulte un très fort ralentissement de la Machine Universelle qui peut être nuisible pour certaines applications. Les inventeurs ont analysé les caractéristiques les moins efficaces du niveau 0. 2 et l'ont enrichi en conséquence. Le niveau 0.4 représente un très bon compromis entre simplicité et efficacité. Tout en restant très simple, il entraîne une augmentation raisonnable du nombre d'opérations nécessaires pour C > exécuter des programmes écrits dans un langage de haut niveau. C > : > ID On distingue ici aussi la machine 21 de niveau 0. 4 de ('émulateur 24 de niveau 0. 4, à une t : l différence près : t'émulateur 24 de niveau 0.4 peut être écrit directement pour la machine support 23 ou bien pour la machine 20 de niveau 0. 2. Le second cas respecte la hiérarchie (la machine virtuelle 21 de niveau 0.4 est simulée par la machine virtuelle 20 de niveau 0.2 qui est simulée par la machine support 23). Le premier cas court-circuit la hiérarchie. L'exécution de tous les programmes de niveau supérieur de la hiérarchie peut donc reposer sur le niveau 0.4 au lieu du niveau 0.2. Lorsqu'on souhaite créer une Machine Universelle sur une machine support 23, il suffit donc d'adapter l'algorithme d'émulation du niveau 0.2 ou 0.4 (ou supérieur), selon les besoins, dans le langage natif de cette machine support 23. 2-Format des données L'unité élémentaire manipulable par la machine de niveau zéro est le mot de 16 bits. Les données ont une taille fixe de 16 bits. On note le bit de poids le plus faible (Least-Significant Bit, LSB) à droite du mot, et le bit de poids le plus fort (Most-Significant Bit, MSB) à gauche. Par convention, on numérote les bits du mot de 0 à 15, de droite à gauche. Les données sont z enregistrées dans des fichiers au format binaire"big endian" (octet de plus fort poids stocké à l'adresse de plus faible numéro). Les données sauvées en mémoire peuvent être au format Il little endian"ou"big endian". En effet, les programmes exécutés sur la machine de niveau zéro n'ont ZD pas la possibilité de le vérifier, et n'en sont pas affectés. Par contre, en environnement multiprocesseur, il faut s'assurer que tous les processeurs utilisent le même format de données pour le stockage en mémoire. On rappelle que, par convention, un caractère"$"précédant un nombre indique qu'il est exprimé en base hexadécimale. 3-Organisation de l'espace d'adressage L'espace d'adressage des machines de niveau zéro (i. e. 0.2 et 0.4) est indéfini en taille. Il débute à l'adresse 0, se poursuit séquentie11ement aux adresses), 2, 3,..., et son adresse de fin n'a pas de limite logique. Chaque adresse pointe sur un mot de 16 bits. La structure des registres de contrôle de la machine 21 de niveau 0. 4 entraîne une vision ZD segmentée et paginée de l'espace d'adressage de la machine 21 de niveau 0.4. Cette même vision s'applique aussi à la machine 20 de niveau 0.2. L'espace d'adressage est vu comme étant découpé en segments de 64 Kilo-mots (ou Kmots, un ZD Z= Kmot correspondant à 1024 mots de 16 bits) pour la lecture des instructions composant un programme (c'est à dire l'étape de"fetch"). Cet espace est aussi vu comme étant découpé en pages de 8 Kmots pour la lecture ou l'écriture de données. Ces segments (et ces pages d'autre part) sont donc des plages d'adresses de taille fixe, situées les unes à la suite des autres, et c couvrant l'ensemble de l espace d'adressage. On défini par "adresse valide", une adresse permettant d'accéder directement à une information 16 bits de façon bijective (exemples de supports de l'information : RAM, ROM, EEPROM, ...). Une telle information n'est accessible que par te processeur virtuel. Toute autre adresse est dite"adresse invalide", et provoque systématiquement l'exception (voir paragraphe 7) si un programme tente d'y accéder. Zn Dans cet espace d'adressage, on distingue un "espace exploitable", ainsi qu'un"espace inexploitable" infini, disjoint du premier, et situé immédiatement après. Ces deux espaces recouvrent la totalité de l'espace d'adressage. L'espace exploitable correspond à l'ensemble des segments contenant au moins une adresse valide. L'espace inexploitable correspond à tous les autres segments, uniquement composés d'adresses invalides. On définit par"espace adressable" l'ensemble des adresses valides de l'espace exploitable. On définit par"espace adressable exécutable" l'ensemble des adresses de l'espace adressable où l'émulateur peut aller chercher les instructions à exécuter. Le reste de l'espace adressable est désigné par"espace adressable non exécutable". L'espace exploitable est subdivisé en deux ou trois zones disjointes qui correspondent à des mémoires ayant des propriétés éventuellement différentes, comme les RAM, ROM et EEPROM. Ces zones recouvrent la totalité de l'espace exploitable. Chacune de ces zones est continue et commence au début d'un segment de 64 Kmots. Une zone donnée occupe un ou plusieurs segments dans leur totalité, à l'exclusion de toute autre zone. Une zone n'utilisera pas nécessairement les 65536 adresses de son dernier segment. Dans ce cas, les adresses invalides sont regroupées en fin de segment. Les différentes zones sont définies comme suit : La première zone est constituée du premier segment de l'espace d'adressage (adresses 0 à 1 C > 65535). La première page de cette zone comporte des adresses valides de mémoire réinscriptible qui sont groupées depuis le début de la page (adresse 0). La deuxième page est réservée à l'usage c ZD du niveau 0. 2. Elle peut comporter des adresses valides de mémoire réinscriptible et de mémoire en lecture seulement, indépendamment de la structure de la première page. Les six pages z restantes peuvent comporter des adresses valides de mémoire réinscriptible qui sont groupées depuis le début de la troisième page (adresse 16384) en un seul bloc, sous réserve que la première page ne contienne aucune adresse invalide. . tl La deuxième zone commence au début du deuxième segment de l'espace d'adressage (adresse ZD ZD 65536). Elle se poursuit éventuellement sur les segments suivants. Toutes les adresses de tous les segments qu'elle occupe doivent être valides, et doivent contenir le même type de mémoire. Au démarrage de la machine de niveau zéro, cette zone doit contenir le programme de démarrage 0.4. La troisième zone est optionnelle, commence immédiatement après le dernier segment de la deuxième zone, et ne peut exister que si la dernière adresse du premier segment (adresse 65535) est valide. Dans ce cas, elle est constituée d'un ou plusieurs segments contigus. Le dernier Z, V > segment contient au moins une adresse valide. Ces adresses valides sont placées les unes à la suite des autres à partir de la première adresse de ce dernier segment. Tous les segments précédents éventuels ne contiennent que des adresses valides. Toutes les adresses valides de la troisième zone doivent contenir le même type de mémoire réinscriptible. 3. 1 - Spécificités de l'espace d'adressage de la machine 21 de niveau 0.4 L'espace adressable exécutable correspond à la totalité de l'espace adressable. La deuxième page est réservée à l'usage du niveau 0.2. Un programme ne doit jamais tenter d'accéder à cette page sous peine de graves dysfonctionnements si la machine 21 de niveau 0.4 est émulée par la machine 20 de niveau 0.2. 3. 2-Spécificités de l'espace d'adressage de la machine 20 de niveau 0.2 Par souci de rapidité, l'espace d'adressage de la machine 20 de niveau 0.2 est strictement identique à celui de la machine 21 de niveau 0.4. Cependant, la structure du pointeur d'instruction (IP) modifie la définition de l'espace adressable exécutable : il est limité à l'espace adressable de la première zone, c'est-à-dire aux 64 premiers Kmots au maximum. La présence de mémoire est obligatoire à partir de l'adresse $2000 pour y stocker le programme de démarrage 0.2. 4-Les registres des processeurs ZD La structure des registres du niveau 0.2 est simplifiée par rapport à celle du niveau 0.4. 4. 1-Les registres de niveau 0.2 Mode Nom du registre Taille Rôle d'accès Lecture/ MER 16 bits Registre de communication avec le Écriture (Mapper/Enumerator cartographe/énumérateur 25. Adresse 0 Register) Ecriture MPW 16 bits Accès à la portion courante du pointeur de Adresse 1 (Memory Pointer données en mémoire (désignée par MPS). Window) Ecriture IP 16 bits Accès au pointeur d'instruction. Adresse 2 (instruction Pointer) Ecriture MPS 16 bits Sélection de la fenêtre 16 bits du pointeur de Adresse 3 (Memory Pointer données à laquelle on souhaite accéder. Selection) Implicite R 16 bits Registre interne à usage général. (Register) Implicite B 1 bit Indicateur d'emprunt lors d'une soustraction. (Borrow) Implicite MP Indéfinie Pointeur de données : indique l'adresse pour (Memory Pointer) l'accès aux données en mémoire. La difficulté de programmation du niveau 0.2 rend improbable une utilisation généraliste directe. C'est pourquoi il a été essentiellement conçu en vue d'émuler le niveau 0.4. 4. 2-Les registres de niveau 0.4 (on observe que"L/E"signifie"Lecture/Ecriture") Mode Nom du registre Taille Rôle d'accès LIE R 16 bits Registre interne à usage général. Adresse 0 (Register) L/E IPW 16 bits Accès à la portion courante du pointeur Adresse 1 (Instruction Pointer d'instructions (désignée par IPS). Window) LIE IPS 16 bits Sélection de la fenêtre 16 bits du pointeur Adresse 2 (Instruction Pointer d'instructions à laquelle on souhaite accéder Selection) L/E MPW 16 bits Accès à la portion courante du pointeur de Adresse 3 (Memory Pomter données en mémoire (désignée par MPS) Window) L/E MPS 16 bits Sélction de la fenêtre 16 bits du pointeur de Adresse 4 (Memory Pointer données à laquelle on souhaite accéder. Selection) L/E MER 16 bits Registre de communication avec le Adresse 5 (Mapper/Enumerator cartographe/énumérateur 25. Register) Implicite 1 bit Indicateur d'emprunt lors d'une soustraction. (Borrow) Implicite Indéfinie Pointeur d'instructions : indique l'adresse de (Instruction Pointer) la prochaine instruction à exécuter. Implicite MP Indéfinie Pointeur de données : indique l'adresse de (Memory Pointer) base pour l'accès aux données en mémoire. Implicite [PT Indéfinie Valeur à copier dans le pointeur (Instruction Pointer Tank) d'instructions. Lorsque IPW est accédé en écriture, c'est IPT qui reçoit la valeur. IPT est copié dans IP sur accès en écriture à IPW lorsque IPS est égal à 0, IPT restant inchangé. 4. 3 - Caractéristiques communes Les registres sont adressés comme n'importe quel autre emplacement de l'espace d'adressage, sous certaines conditions. Ils recouvrent les premières adresses de la première page de l'espace d'adressage, appelée" page 0 fI. Le registre R constitue toujours l'opérande source ou l'opérande destination des instructions. Selon la quantité de mémoire allouée à la machine de niveau zéro par la machine support 23, les pointeurs d'instructions (IP) et de données (MP) peuvent prendre chacun une adresse maximale précise. Chaque adresse maximale est représentée par un certain nombre de bits significatifs appelé"capacité d'adressage". Cette capacité, variable en fonction de l'environnement matériel disponible, est exprimée en nombre de bits et découpée par portions de 16 bits, appelées fenêtres. Si la capacité d'adressage n'est pas multiple de 16, la portion accessible est agrandie au multiple de 16 supérieur. Le nombre de fenêtres accessibles est appelé largeur d'adressage. Ainsi, une machine 21 de niveau 0.4 ayant un espace exploitable s'étendant des adresses 0 à 15 000 000 a une capacité d'adressage de 24 bits, qui seront adressés à l'aide de 2 fenêtres de 16 bits. IPS et MPS pourront donc prendre les valeurs 0 ou). Dans le cas du niveau 0. 2, la largeur d'adressage du pointeur d'instructions (IP) est limitée à une fenêtre On ne peut donc exécuter que les instructions situées dans les 64 premiers Kmots de l'espace d'adressage. En conséquence, IPS n'est pas accessible et considéré comme étant toujours nul. Dans l'exemple précédent, seul MPS pourra prendre les valeurs 0 ou 1. On remarque que l'on limite les tailles de IPS et MPS à 16 bits. Le bit de poids fort de ces registres est réservé. On peut donc adresser au maximum 32768 fenêtres de 16 bits Ce nombre permettrait l'accès à un nombre de cases mémoires bien supérieur au nombre estimé d'atomes de l'univers... Cependant, grâce au bit réservé, il serait malgré tout possible de définir une convention pour augmenter la taille de ces registres ! 5-Codage des instructions des processeurs Chaque instruction élémentaire des machines de niveau zéro a une taille fixe de 16 bits. La signification de ces différents bits varie entre le niveau 0.2 et le niveau 0.4. 5. 1-Codage des instructions de niveau 0.2 15 1 bits 13... 0 home op mo home : Si bit à un, accède à l'adresse pointée par MP : ae = adresse effective = MP. Les premières adresses pointent alors sur l'espace d'adressage et non sur les regislres. Si bit nul, force l'accès à la page 0 en ignorant MP mais en utilisant le champ mo : ae = mo La a ou les premières adresses de la page 0 pointent sur les registres intrenes de la machine. Les autres adresses pointent sur l'espace d'adressage. op : Type d'opération : Si op = 0 Soustraction avec retenue d'ae à R ("SB Mem"). En cas d'accès à la page 0, seul le registre"MER"27 (adresse 0) est accessible. Si op = 1 Sauvegarde de R vers ae ("ST Mem"). En cas d'accès à la page 0, tous les registres (adresses 0 à 3) sont accessibles. mo : Adresse absolue dans la page 0 si le bit home est baissé, ou bien champ de bits inexploité si le bit home est levé. 5. 2-Codage des instructions de niveau 0.4 En niveau 0.4, un bit supplémentaire est utilisé pour encoder deux nouvelles instructions (LoaD et AND). En conséquence, il y a un bit de moins pour encoder le champ"mo". i5 i4 ! 3 bits 12... 0 home op par mo home. Si bit à un, accède à la zone dont la base est pointée par MP : ae - adresse effective = MP ET logique mo. Les es premières adresses pointent ators sur l'espace d'adressage et non sur les registres. Si bit nul, force l'accès à la page 0 en ignorant MP : ae = mo La a ou les premières adresses de la page 0 pointent sur les registres intenes de la machine. Les autres adresses pointent sur l'espace d'adressage. op : Type d'opération : 0 = déplacement mémoire, 1 = opération arithmétique ou logique sur R. par : Paramètre de l'opération (par= 0 : Sauvegarde de R vers ae ("ST Mem"). Si op = 0 lpar = 1 : Chargement de R avec contenu d'ae ("LD Mem"). Avec les instructions LD et ST, en cas d'accès à la page 0, tous les registres (adresses 0 à 5) sont accessibles. (par = 0 : ET logique du contenu d'ae avec R ("AND Mem"). Si op = 1 @ @par = 1 : Soustraction avec retenue d'ae à R ("SBB Mem"). Avec les instructions SBB et AND, en cas d'accès à la page 0, seul le registre R (adresse 0) est accessible. nb : l'indicateur d'emprunt B ne peut être accédé qu'avec les instructions SBB et AND. mo : Adresse absolue dans la page 0 si le bit home est baissé, ou bien masque logique combiné avec les 13 bits de poids faible de MP pour le calcul de l'adresse effective si le bit home est levé. 6-Description des jeux d'instructions des processeurs On observe que, par convention, le symbole (- désigne la copie du terme situé à droite dans le terme situé à gauche. On parle"d'affectation de variable". 6. 1-Jeu d'instructions de niveau 0.2 Le niveau 0. 2 se programme à l'aide de deux instructions : la soustraction et la sauvegarde du registre R vers l'espace d'adressage. 6. 1. 1 - L'opération arithmétique SB Substract with Borrow-Soustraction avec emprunt Syntaxe SB adresse Opération : R (R-mot pointé par l'adresse effective)-B, B Description : Soustrait au registre R le mot situé à l'adresse indiquée ainsi que l'emprunt. Etat de l'emprunt : B est mis à un si un emprunt est généré, il est mis à zéro sinon. 6. 1. 2 - L'opération de déplacement mémoire ST STore-Sauvegarde du registre R Syntaxe : ST adresse Opération : mot pointé par l'adresse effective Description : Copie à l'adresse indiquée le contenu du registre R (R n'est pas modifié). Etat de l'emprunt : B n'est pas modifié. 6. 2-Jeu d'instructions de niveau 0.4 Le niveau 0.4 se programme à l'aide de quatre instructions : deux permettant d'effectuer des opérations de type arithmétique et logique ; deux permettant d'effectuer des déplacements entre l'espace d'adressage et le registre R. 6. 2. 1-Les opérations de déplacement mémoire ST STore-Sauvegarde du registre R Syntaxe : ST adresse Opération : mot pointé par l'adresse effective Description : Copie à l'adresse indiquée le contenu du registre R (R n'est pas modifié). Etat de l'emprunt : B n'est pas modifié. LD LoaD-Chargenieni du registre R Syntaxe : LD adresse Opération : R e mot pointé par l'adresse effective Description : Copie dans le registre R le mot situé à l'adresse indiquée (le mot n'est pas modifié). Etat de l'emprunt : B n'est pas modifié. 6.2. 2-Les opérations arithmétique et logique AND Logical AND-ET logique Syntaxe : AND adresse Opération : R ET mot pointé par l'adresse effective, buzz Description : Effectue le ET logique entre le registre R et le mot situé à l'adresse indiquée Le résultat est rangé dans R. Etat de l'emprunt : B est toujours mis à zéro./ SBB SuBstract with Borrow-Soustraction avec emprunt Syntaxe : SBB adresse Opération : R (R-mot pointé par l'adresse effective)-B ; B Description : Soustrait au registre R le mot situé à l'adresse indiquée ainsi que l'emprunt. Etat de l'emprunt : B est mis à un si un emprunt est généré, il est mis à zéro sinon. 6. 3-Les modes d'adressage La valeur du bit home (voir paragraphe 5), définit deux modes d'adressage. Par"mode d'adressage"nous entendons une manière de calculer l'adresse sur laquelle porte une opération (adresse effective). Ces modes d'adressage sont le mode absolu page 0 et le mode absolu indexé par MP. Ils existent dans le niveau 0. 2 et le niveau 0. 4, mais leur fonctionnement diffère dans certains cas particuliers. 6. 3. 1-Le mode absolu page 0 Dans ce mode, l'adresse effective est calculée à partir des bits de poids faible de l'instruction (champ mo), permettant l'accès aux registres adressables de la machine, ainsi qu'aux premiers mots de l'espace d'adressage de la machine (après les registres). En niveau 0. 2, le champ mo faisant 14 bits, il est possible d'accéder aux 16384 premières adresses de la machine. En niveau 0.4, comme le champ mo ne fait que 13 bits, on ne peut accéder qu'aux 8192 premières adresses de la machine. On remarque que, en langage d'assemblage, le champ"adresse"de l'instruction s'exprime sous la forme d'un numéro compris entre 0 et 8191 pour le niveau 0. 4 (entre 0 et 16383 pour le niveau 0. 2). 6.3. 2-Le mode absolu indexé par MP Ce mode d'adressage permet d'accéder à l'ensemble de l'espace adressable (y compris les premiers mots de l'espace d'adressage, inaccessibles en mode absolu page 0, puisque masqués par les registres adressables). Son fonctionnement diffère entre le niveau 0. 2 et le niveau 0. 4. En niveau 0.4, l'adresse effective est le résultat du ET logique entre le registre MP et les 13 bits de poids faible de l'instruction (sur les 13 bits de poids faible de MP). En langage d'assemblage, le champ"adresse"de l'instruction s'exprime alors sous la forme d'un numéro compris entre 0 et 8t9), précédé du caractère' & ' (exemple : & $10 pour l'adresse résultant de l'opération"MP ET logique 6"). En niveau 0. 2, l'adresse effective est celle contenue dans le registre MP. En langage d'assemblag,e le champ " adresse " de l'instruction contient alors le caractère' & 'seul Le champ "mo" de l'instruction est ignoré, et son contenu est indétermmé. 7 - L'exception et l'interruption L'exception (et l'interruption en niveau 0.4) sont des mécanismes qui déroutent l'exécution séquentielle des programmes sous certaines conditions. 7. 1 - L'exception 7. 1. 1 - L'exception en niveau 0.2 L'exception se déroule comme suit : Appel au sous-programme de réinitialisation du cartographe/énumérateur 25. MPS O MPO 1 P ± $2000 Lors du premier démarrage de la machine, l'exception est immédiatement déclenchée (tous les registres 0. 2 contiennent des valeurs quelconques avant son exécution). Outre le démarrage, la cause de déclenchement d'une exception est le chargement de ! P ou de ZD ZD MP avec une adresse invalide, le chargement de MPS avec un numéro de fenêtre supérieur à la t > largeur d'adressage, ou bien une opération illégale sur le registre "MER" 27. t, z : l C > 7. 1. 2-L'exception en niveau 0.4 L'exception se déroule comme suit : Appel au sous-programme de réinitialisation du cartographe/énumérateur 25. CI adresse 0 # 16 bits de poids faible d'IP au moment de l'exception MPS IPS Outre le démarrage, la cause de déclenchement d'une exception est le chargement de IP ou MP avec une adresse invalide, le chargement de MPS ou IPS avec un numéro de fenêtre supérieur à la largeur d'adressage de MP et IP, ou encore une opération illégale sur le registre "MER"27. 7. 2-L'interruption 7.2. 1 - L'interruption en niveau 0.2 Le mécanisme d'"interruption"en niveau 0.2 n'interrompt pas l'exécution séquentielle des instructions. C'est donc au programme écrit en niveau 0.2 d'aller vérifier régulièrement par le cartographe/énumérateur 25 la présence d'une interruption (technique usuelle dite de balayage ou "polling"). 7.2. 2-L'interruption en niveau 0.4 L'interruption en niveau 0.4 se déclenche sur commande d'un programme 0.4 à condition que le cartographe/énumérateur 25 ait été sollicité par une requête d'un périphérique 32. Si une interruption est en attente lors de la commande, le mécanisme est le suivant : adresse 0 I PT (- 1 IP 1 IPIPT Sinon, l'exécution séquentielle des instructions n'est pas rompue. 7. 3-Les programmes de démarrage 7. 3. 1 - Le programme de démarrage de niveau 0. 2 Z :- > ICI Ce programme est appelé immédiatement après le déclenchement d'une exception et prend en charge la machine 20 de niveau 0. 2. Il débute obligatoirement à l'adresse $2000. C'est une z succession de codes d'instructions 0.2 et de mots de données qui peuvent contenir n'importe quel programme de taille quelconque (dans la limite de la deuxième page). Le programme de démarrage de niveau 0.2 contient l'émulateur 24 complet du niveau 0.4 (d'une taille d'environ 2 Kmots). Ce programme pourrait être implanté dans une ROM (ou une EEPROM) avec une machine réelle de niveau 0.2. 7.3. 2-Le programme de démarrage de niveau 0.4 Ce programme est appelé immédiatement après le déclenchement d'une exception et prend en charge la machine 21 de niveau 0.4. Il débute obligatoirement à l'adresse $10000 (début du deuxième segment). C'est une succession de codes d'instructions 0.4 et de mots de données qui peuvent contenir n'importe quel programme de taille quelconque. Le programme de démarrage de niveau 0.4 contiendra l'émulateur complet du niveau supérieur (machine 30 de niveau 1), ou tout autre programme. 8-Algorithmes de fonctionnement des émulateurs de niveau zéro On rappelle que toutes les opérations sont effectuées sur 16 bits exclusivement. Les valeurs sont interprétées en complément à deux. Exemple : $000 - $0001 = $FFFF, et l'emprunt est mis à 1. Par convention, le terme"saut"désigne une rupture de séquence sans retour automatique. Le terme" appel" désigne une rupture de séquence avec retour systématique à l'instruction suivant l'instruction d'appel, après l'exécution des instructions du sous-programme. 8. 1-Algorithme de l'émulateur 22 du processeur de niveau 0.2. 8.).)-Initialisation : Réservation de la mémoire nécessaire. Au minimum quelques mots pour les registres de la machine et le (s) programme (s) à exécuter. Recopie des x mots composant le programme de démarrage à partir de l'adresse $2000. Ce Z : > t > programme contient 1'émulateur 24 du niveau 0.4 entier dans l'implémentation effectuée par les inventeurs. Appel au sous-programme d'initiatisation du cartographe/énumérateur 25 z : l Saut à l'exception (voir paragraphe 7. 1. 1) ZD 8.1.2 - Noyau : Si IP pointe sur une adresse invalide Saut à l'exception (voir paragraphe 7.).)) z Lecture dans IP de l'adresse de l'instruction à exécuter Lecture de l'instruction 16 bits IP 16 bits du registre) Si bit home = 1 alors ae = MP saut au traitement générique des instructions Sinon mo = bits 0 à 13 de l'instruction (14 bits de poids faible) Si bitop = 0 Si mo = 0 Appel au sous-programme de lecture du cartographe/énumérateur 25 R 1 si un emprunt est généré, sinon B Sinon Si mo = 0 MER e R Appel au sous-programme d'écriture du cartographe/énumérateur 25 Saut au Noyau Sinon si mo = 1 ae = adresse des 16 bits de MP sélectionnés par MPS (dans l'espace d'adressage de la machine support 23) mot pointé par ae v R Si MP pointe sur une adresse invalide Saut à l'exception (voir paragraphe 7. 1. 1 Sinon Saut au Noyau Sinon si mo = 2 IP F R Saut au Noyau Sinon si mo = 3 Si R est supérieur à la largeur d'adressage Saut à l'exception (voir paragraphe 7. 1. 1) Z-1 Sinon MPS # R Saut au Noyau Sinon ae = mo Saut au traitement générique. 1 8. 1. 3-Traitement générique des instructions : Dans la suite," [ae]" désigne le mot pointé par ae. Si bit op = 0 R z (R- [ae])-B B ! si un emprunt est généré, sinon B 2 - Algorithme de l'émulateur 24 du processeur de niveau 0.4 8.2. 1-Initialisation : Réservation de la mémoire nécessaire. Au minimum quelques mots pour les registres de la machine et le (s) programme (s) à exécuter. Recopie des x mots composant le programme de démarrage à partir de l'adresse $10000. Ce programme contiendra l'émulateur du niveau supérieur (machine 30 de niveau 1) dans l'implémentation effectuée par les inventeurs. Appel au sous-programme d'initialisation du cartographe/énumérateur 25 Saut à l'exception (voir paragraphe 7. 1. 2) 8.2. 2-Noyau : Si IP pointe sur une adresse invalide Saut à l'exception (voir paragraphe 7. 1. 2) Lecture dans IP de l'adresse de l'instruction à exécuter Lecture de l'instruction 16 bits IP # IP+1 (addition effectuée sur ses 16 bits de poids faible uniquement) mo = bits 0 à 12 de l'instruction (13 bits de poids faible) Si bit home = 1 emo = extension par des bits à 1 de mo à la capacité d'adressage de MP ae = (MP ET logique emo) ZD Saut au traitement générique des instructions Sinon Si bit op = 0 Si mo = 0 RR IP # IPT Saut au Noyau Sinon R # 16 bits de IP sélectionnés par IPS Saut au Noyau Sinon si mo = 2 Si bit par = 0 Si R est supérieur à la largeur d'adressage de IP Saut à l'exception (voir paragraphe 7. 1. 2) Sinon IPS v R Saut au Noyau Sinon R v IPS Saut au Noyau Sinon si mo = 3 Si bit par = 0 ae = adresse des 16 bits de MP sélectionnés par MPS (dans l'espace d'adressage de la machine support 23) mot pointé par ae # R Si MP pointe sur une adresse invalide Saut à l'exception (voir paragraphe 7. 1. 2) ZD Sinon Saut au Noyau Sinon R 16 bits de MP sélectionnés par MPS Saut au Noyau Sinon si ma = 4 Si bit par = 0 Si R est supérieur à la largeur d'adressage de MP Saut à l'exception (voir paragraphe 7. 1. 2) tD Sinon MPS f-- R Saut au Noyau Sinon R MER # R Appel au sous-programme d'écriture du cartographe/énumérateur 25 Saut au Noyau Sinon Appel au sous-programme de lecture du cartographe/énumérateur 25 R # MER Saut au Noyau Sinon ae = mo Saut au traitement générique. Sinon Si mo = 0 Si bit par = 0 Rf- (R ET logique R) (1) 80 Saut au Noyau Sinon R # 1 si un emprunt est généré, sinon B # (2) Saut au Noyau Sinon ae = mo Saut au traitement générique. 8. 2.3 - Traitement générique des instructions : Sibitop=0 Si bit par = 0 [ae] # [ae] Sinon Si bit par = 0 R B v 0 Sinon Sinon R- (R- [ae])-B B f- 1 si un emprunt est généré, sinon B # 0 Saut au Noyau Les renvois (1) et (2) concernent : (1) Cette opération n'a aucun effet, et peut donc être supprimée si besoin. (2) Cette opération et la précédente peuvent se résumer par l'opération : R # 0 - B Deuxième aspect de la présente invention. 9-Aspects théoriques 9.1 - Notions importantes 9. 1. 1 - Notion de périphérique 9. 1. 1. 1 - Définition d'un périphérique Un processeur est une machine conçue pour traiter des données. Pour que son fonctionnement soit utile, il doit pouvoir recevoir des données et/ou envoyer les résultats de ses calculs là où ils auront un effet approprié. Les "périphériques" constituent tout ce qui se situe à l'extérieur du processeur. Ils mettent à la disposition de ce dernier des données et/ou recueillent le résultat de ses calculs, en opérant éventuellement une conversion de l'information échangée. CD Avec l'intégration des composants électroniques, on constate fréquemment que plusieurs Zn fonctions sont assurées par ce que l'on appelle communément" un périphérique" pour le processeur. Ainsi, une carte électronique gérant un clavier peut gérer également une manette de ZD c jeu et une souris. Le problème est que l'on confond le lieu où les fonctions sont assurées (la carte électronique) et leurs finalités (gérer un clavier, gérer une souris, etc. ). Dans cet exemple, nous considérons que le clavier, la souris et la manette de jeu sont autant de périphériques différents. Nous parlerons donc de trois périphériques, malgré le fait qu'ils soient gérés par une même carte. tD C > 9. 1. 1. 2 - Fonction, configurations, et homogénéité tD Chaque périphérique dispose d'un ensemble de caractéristiques réalisant une seule fonction homogène, pour laquelle il a été conçu, appelée fonction. Tous les éléments qui participent à cette ZD fonction sont considérés comme appartenant au même périphérique. La fonction définit donc l'unité du périphérique. Les caractéristiques de cette fonction peuvent être paramétrées selon un certain nombre de configurations. L'appréciation de la limite permettant de définir l'homogénéité d'une fonction est parfois difficile et subjective. Par exemple, le clavier d'un ordinateur peut être considéré comme un outil permettant de transcrire des données culturelles composées de lettres, mais dont le sens n'apparaît que lorsque ces dernières sont assemblées en mots. Dans cette optique, une lettre seule n'a pas de sens, c'est pourquoi l'ensemble du clavier doit être représenté comme un seul périphérique. Par contre, si le clavier est considéré comme un ensemble de boutons véhiculant chacun une information symboliquement indépendante, alors chaque touche peut être présentée comme un périphérique à part entière. Pour évaluer l'homogénéité de la fonction assurée par un périphérique, il faut donc étudier : l'utilité et la finalité du périphérique (ex : une souris permet essentiellement un déplacement spatial continu, un clavier donne ponctuellement des informations symboliques). la dépendance des informations traitées par le périphérique pour assurer sa fonction (ex : on peut manipuler la souris, sans affecter l'état du clavier, et vice versa). Il est important de se méfier de la proximité géographique des différents composants d'un périphérique. Par exemple, un clavier et une souris sont ordinairement placés côté à côte, mais on ne doit pas les considérer comme un seul périphérique. A l'inverse, un volant pour jeux vidéos. accompagné de pédales sont considérés comme un seul périphérique, bien que le volant soit souvent assez éloigné géographiquement des pédales pour des raisons ergonomiques. tl > 9. 1. 1. 3 - Unités algorithmiques et non algorithmiques z : l ZD Tout périphérique dispose de procédés techniques traitant l'information sous forme de signaux (électriques, lumineux, sonores,...). On considère ces procédés comme rassemblés en"unités fonctionnelles". Une unité fonctionnelle manipule et transforme les signaux selon son domaine de compétence. L'ensemble des unités fonctionnelles assure ainsi la fonction pour laquelle le périphérique est conçu. On ne s'intéresse pas au détail des procédés techniques sous-jacents à une unité fonctionnelle, mais à la fonction de transformation du signal qu'elle réalise. Par exemple, une carte sonore peut comporter un convertisseur numérique/analogique, une horloge, un oscillateur générateur d'ondes, un amplificateur réglable, un processeur de traitement du signal, etc. Chacun de ces éléments est une unité fonctionnelle participant à la fonction du périphérique. Nous classons les unités fonctionnelles en deux catégories : - les "unités algorithmiques" dont la fonction de transformation digitale peut être reproduite C > C > entièrement et de façon identique par logiciel (ou de façon satisfaisante pour une fonction de transformation analogique), et - les "unités non algorithmiques" qui réalisent une fonction de transformation du signal ZD impossible à reproduire par logiciel. Selon les périphériques on trouvera l'une, l'autre ou les deux catégories d'unités. L'interface de programmation du périphérique permet généralement d'exploiter toutes les unités disponibles, mais la machine de niveau zéro ne prend en considération que les unités non algorithmiques, dans la mesure où cette machine est capable d'assurer les opérations relevant des unités algorithmiques par elle-même. Ainsi les périphériques de transformation des données utilisant seulement des unités algorithmiques ne sont pas gérés par la machine de niveau zéro. Par ZD exemple, un coprocesseur arithmétique fonctionne uniquement avec des unités algorithmiques : il ne sera donc pas géré par la machine de niveau zéro puisque cette dernière peut reproduire totalement son comportement par programme. Parfois, l'accès direct à une unité non algorithmique est impossible sans passer par une unité algorithmique. Dans ce seul cas, la machine de niveau zéro doit gérer les unités algorithmiques permettant d'accéder aux unités non algorithmiques. Dans le cas de l'exemple, l'oscillateur générateur d'ondes, l'amplificateur et le processeur de traitement du signal sont des unités algorithmiques car leur comportement peut être reproduit avec fidélité par un programme écrit pour le processeur de niveau zéro. 9. 1. 1. 4-Périphériques privés et publics Parmi les périphériques, nous distinguons les périphériques"privés"auxquels seul le processeur peut accéder en lecture et/ou en écriture. C'est le cas de la RAM, de la ROM et de toute mémoire apparentée non partagée. On notera que certaines unités fonctionnelles d'un périphérique peuvent être malgré tout accédées par d'autres unités fonctionnelles du même périphérique pour assurer son bon fonctionnement. C'est par exemple le cas pour le maintient de l'information dans le temps dans une DRAM, mais un tel accès n'est pas pris en compte dans la définition énoncée cidessus. Dans tous les autres cas, nous parlons de périphérique "public". Lorsque nous parlons de périphériques dans le présent document, nous englobons les périphériques privés et publics. 9. 1. 2-Temps machine et séquence machine Un processeur réel est une machine basée sur le modèle de Von Neumann qui exécute ses opérations de façon séquentielle. L'exécution de chaque étape de la séquence demande obligatoirement un certain temps. On définit généralement par"temps machine"d'une séquence d'instructions le temps réel, continu, nécessaire à son exécution. Le processeur virtuel est également une machine basée sur le modèle de Von Neumann qui exécute ses opérations de façon séquentielle. Le temps pris par l'exécution d'une séquence est impossible à évaluer précisément, puisque fonction de la machine support 23. Ainsi, pour le processeur virtuel, on ne parle plus de temps machine, mais de séquence machine, correspondant à un temps discret, cadencé par chaque instruction, dont l'équivalence en temps continu physique est considérée comme non existante. Un programme peut malgré tout appréhender le temps de manière très grossière grâce à cette séquentialité, mais il ne doit jamais tenter d'évaluer l'écoulement du temps réel à partir de la durée d'une séquence d'instructions. 9. 1. 3-Types de données échangées avec les périphériques Nous distinguons deux catégories de données échangées avec un périphérique : - la première désigne le résultat déjà traité ou à traiter par ses unités fonctionnelles ("données d'exploitation"), et - la seconde permet de configurer ses unités fonctionnelles, c'est à dire la façon dont elles vont traiter le flux des données ("données de configuration"). Les données de configuration peuvent ne pas exister dans le cas d'un périphérique au comportement prédéfini et invariable (ex : convertisseur analogique-numérique, ROM,...). 9.1. 4-Programmation d'un périphérique à partir d'un processeur Un processeur transmet et/ou reçoit les données d'un périphérique en utilisant des signaux particuliers. Nous nous intéressons ici à la façon de déclencher cette communication processeur/périphérique, c'est-à-dire "l'interface de programmation", et non au détail des signaux électroniques échangés. Cette transmission peut être faite automatiquement sur requête d'un périphérique, mais généralement elle se fera à l'initiative du processeur. Nous avons connaissance de deux méthodes pour accéder aux périphériques depuis un processeur : - certaines portions de l'espace d'adressage sont spécialisées pour les périphériques. A une portion correspond un périphérique particulier. Il suffit de faire exécuter au processeur une instruction qui accède à cette portion de l'espace d'adressage pour établir la communication avec le périphérique voulu. Il existe donc un plan d'organisation de la mémoire (memory map). Cette convention est par exemple celle retenue sur les processeurs Motorola 680x0, - le processeur dispose de quelques instructions réservées pour l'accès aux périphériques publics, toutes les autres instructions étant exclusivement réservées aux périphériques privés (sauf les mémoires de masse). Il y a donc deux espaces d'adressage distincts. Dès que le processeur exécutera une instruction, il établira la communication avec le périphérique public ou privé concerné. Cette convention est celle adoptée par défaut par les processeurs Intel 80x86. La première méthode évite d'ajouter des instructions au processeur, et elle se contente d'un seul espace d'adressage pour l'accès à tous les périphériques. Cependant, elle complique la ZD conception d'un ordinateur et d'un émulateur. La seconde méthode oblige à ajouter des instructions supplémentaires. Nous avons retenu la première méthode pour l'accès à certaines données des périphériques privés pour des raisons de rapidité et de simplicité d'utilisation. La gestion des autres données repose sur un seul registre adressable des machines de niveau zéro. Nous considérons qu'un processeur ne peut faire qu'une seule chose à la fois, donc visualiser les périphériques à travers un unique registre ne pose pas de problème de type"goulot d'étranglement". Si plusieurs accès sont à faire en même temps, il faut utiliser plusieurs processeurs fonctionnant en parallèle. 9. 2-Modélisation théorique des périphériques. D'un point de vue théorique, la description des périphériques vise essentiellement à représenter uniformément l'information nécessaire pour les exploiter et pour faciliter le remplacement de l'un d'entre eux par un autre, de façon automatique. Cette description peut être complétée par des informations annexes, notamment les données de modélisation réelle permettant d'exprimer précisément les interactions entre le périphérique et son environnement, en utilisant les outils classiques des Sciences. Nous cherchons d'abord à connaître, d'un point de vue élémentaire, la façon dont un périphérique à modéliser appréhende ses environnements réels et informatiques : c'est l'analyse microscopique. La seconde étape, nommée analyse macroscopique, consiste à organiser les informations permettant de programmer le périphérique (environnement informatique) selon une structure reflétant les relations du périphérique avec le monde réel (environnement réel). Cette structure est basée sur un modèle mathématique dimensionnel, inspiré de l'algèbre linéaire. Ces analyses sont réalisées indépendamment pour chaque configuration de la fonction d'un périphérique. Lors de l'implémentation, les différents modèles obtenus seront rassemblés en une unique structure définissant la fonction. On peut ainsi modéliser de façon exhaustive toute fonction de tout périphérique, au sens des définitions énoncées ci-avant. 9. 2. 1-Structure microscopique des périphériques Un périphérique vu de la façon la plus large dispose d'un certain nombre de propriétés, qui le distinguent des autres objets au sein du monde réel. Ces propriétés peuvent avoir ou non un rapport avec la fonction du périphérique. Ainsi, le fait qu'un écran produise une image d'une certaine qualité ou que sa carcasse soit translucide constituent deux propriétés, l'une en rapport avec sa fonction, l'autre non. Les propriétés qui nous intéressent sont celles en rapport avec la fonction du périphérique, et résultant du fonctionnement des unités non algorithmiques composant le périphérique : ce sont les propriétés fonctionnelles. Les propriétés fonctionnelles se traduisent par un ou plusieurs phénomènes physiques ou symboliques (exemple : les pixels d'un écran) pouvant être un mélange complexe de phénomènes élémentaires (exemple : couleur, intensité lumineuse, et portion d'espace constituant un pixel d'un écran), ou un seul phénomène élémentaire (intensité lumineuse d'une diode électroluminescente, amplitude sonore produite par un haut-parleur, portion d'espace, lettre alphabétique,...). L'évaluation de la structure microscopique d'un périphérique se fait selon deux points de vue : le point de vue du programmeur, et le point de vue de l'environnement du périphérique. Du point de vue du programmeur, on cherche à rassembler toutes les données d'exploitation en un ou plusieurs ensembles exclusifs. Le rassemblement de données d'exploitation en un ensemble exclusif intervient lorsque le choix d'une de ces données exclu toutes les autres de l'expression de la fonction. De plus, un ensemble exclusif correspond à une source d'information élémentaire. Du point de vue de l'environnement, on cherche à savoir quel (s) phénomène (s) élémentaire (s) représente (nt) chaque ensemble exclusif dans la réalité. Chacun de ces phénomènes élémentaires ou groupe de phénomènes élémentaires est appelé caractéristique phénoménale. Parmi les phénomènes élémentaires d'une caractéristique phénoménale, un et un seul est directement et complètement modulé par l'information élémentaire : c'est la caractéristique modulée. On remarque que l'on analyse la fonction d'un périphérique avec une certaine précision : celle avec laquelle la fonction s'exprime. On cherche donc à modéliser la fonction du périphérique à l'échelle lui correspondant le mieux. Dans cette optique, les phénomènes élémentaires participant de façon marginale à l'expression de la fonction (c'est-à-dire à une échelle différente) sont ignorés pour la structure microscopique. Cependant, ces phénomènes marginaux pourront être pris en compte dans la définition des données de modélisation réelle. Grâce à un processus de sélection, les phénomènes élémentaires d'une caractéristique phénoménale seront triés par groupes pour la description macroscopique du périphérique. Un groupe est appelé caractéristique élémentaire. L'évaluation des ensembles exclusifs et des caractéristiques phénoménales est un travail de spécialiste. Chacun peut les évaluer différemment, selon sa perception et sa compréhension du fonctionnement d'un périphérique (interface de programmation, unités fonctionnelles, propriétés fonctionnelles, phénomènes). Le spécialiste doit être conscient que ces différences d'appréciation peuvent engendrer des modèles non canoniques, qui bien que conformes aux règles que nous rD allons énoncer, ne permettront pas d'exploiter toutes les ressources des périphériques. Pour réduire au maximum ces risques d'erreur d'appréciation il est donc nécessaire, avant même de tenter de modéliser un quelconque périphérique, de se documenter sur son fonctionnement. 9.2. 2-Structure macroscopique des périphériques La modélisation présentée ici est matricielle car la plupart des périphériques actuels fonctionnent selon un modèle matriciel. Un ensemble de caractéristiques élémentaires est représenté par une dimension au sens mathématique du terme. On parle de"dimension". La combinaison de l'ensemble des "dimensions"forme un espace, au sens mathématique du terme, dans lequel la fonction du périphérique pourra être complètement modélisée. On parle d"'espace"de périphérique. Les"dimensions"permettent de distinguer synthétiquement tous les phénomènes physiques ou symboliques régissant le rapport du périphérique avec son environnement réel. Il est ainsi possible de déterminer un profil des paramètres environnementaux avec lesquels le périphérique est capable d'interagir. Par exemple, on considère un périphérique modélisé par trois"dimensions". L'ensemble forme f'espace"du périphérique. La figure 1 représente un"espace"de périphérique à trois "dimensions"Dl, D2 et D3. Une caractéristique élémentaire est représentée, sur une"dimension", par une"coordonnée". Dans l'exemple, la troisième"dimension"rassemble quatre"coordonnées"CI à C4 illustrées en figure 1. L'ensemble des"coordonnées"de certaines"dimensions"peuvent exprimer un phénomène élémentaire de leur caractéristique élémentaire (la "caractéristique modulée") avec une certaine intensité parmi un ensemble d'intensités possibles. On parle de t'"intensité"d'une"coordonnée". Le choix d'une"intensité"parmi l'ensemble des"intensités"disponibles pour une"coordonnée" d'un point de f'espace"d'un périphérique exclu systématiquement toutes les autres "intensités". de cette même"coordonnée". Dans l'exemple, les"coordonnées"de la troisième"dimension"sont programmables grâce aux paramètres d'''intensité''. Les "coordonnées" des autres "dimensions" n'ont pas d"'intensités". La modélisation théorique d'un périphérique peut être symbolisée par une figure géométrique illustrée en figure 1, dans un espace à n dimensions (trois dimensions en figure 1), n étant le nombre de"dimensions"du périphérique. 9.2. 3-Méthode de construction du modèle macroscopique Le modèle macroscopique se construit à partir de l'analyse microscopique. La méthode de construction est présentée sous la forme d'une série d'étapes à suivre séquentiellement pour obtenir un modèle macroscopique valide. 9. 2. 3. 1 - étape initiale : On considère qu'aucune"dimension","coordonnée"ou"intensité"n'est définie. Chacun des ensembles exclusifs est associé à un ensemble d'''intensités''rattachées à une nouvelle "coordonnée". La caractéristique phénoménale liée à l'ensemble exclusif est associée à cette nouvelle "coordonnée", Pour un ensemble exclusif, chaque "intensité" représente une donnée d'exploitation distincte. L'ensemble des"coordonnées"est regroupé au sein d'une seule "dimension". 9.2. 3. 2.-Etape itérative : Pour chaque "dimension" existante (appelée "dimension mère") : On tente de rassembler toutes ses"coordonnées"en un ou plusieurs groupe (s). a) Dans le cas d'un rassemblement en deux groupes au moins : Pour chaque groupe, plusieurs (ou un seul) phénomènes élémentaires peuvent être présents à l'identique dans chaque"coordonnée"du groupe. Ces (ou ce) phénomènes élémentaires sont nommés caractéristique intra-groupe. Parmi les éventuels phénomènes élémentaires n'appartenant pas aux caractéristiques intragroupes, ceux (ou celui) présents à l'identique dans une coordonnée de chacun des groupes sont nommés caractéristique inter-groupes. Un phénomène élémentaire ne peut participer qu'à une seule caractéristique inter-groupes. On note qu'une"coordonnée"peut donc être associée à une caractéristique intra-groupe et à une caractéristique inter-groupes au maximum. Le rassemblement des"coordonnées"en"groupes"doit respecter les règles suivantes : Chaque"groupe"doit posséder le même nombre de"coordonnées". Il est interdit de créer des groupes constitués d'une seul "coordonnée". *Il ne doit pas exister de phénomène élémentaire qui n'appartienne ni à une caractéristique intragroupe, ni à une caractéristique inter-groupes. Au moins deux"coordonnées"de la"dimension mère"doivent comporter au minimum un phénomène élémentaire. b) Dans le cas d'un rassemblement en un seul groupe : Plusieurs (ou un seul) phénomènes élémentaires peuvent être présents à l'identique dans chaque "coordonnée" du groupe. Ces (ou ce) phénomènes élémentaires sont nommés caractéristique intra-groupe. Pour chaque"coordonnée", une caractéristique inter-groupes rassemble les éventuels phénomènes élémentaires qui n'appartiennent pas à la caractéristique intra-groupe. Le rassemblement des "coordonnées" dans le groupe doit respecter les règles suivantes : La"dimension mère"doit contenir au moins deux"coordonnées". Toutes les "coordonnées" doivent contenir des"intensités". La caractéristique modulée de chaque "coordonnée" doit faire partie de la caractéristique intragroupe. Dans les deux cas, le non respect d'au moins une règle interdit le rassemblement des "coordonnées"en groupe (s). La"dimension"devient alors définitivement établie. S'il est possible de constituer des groupes selon ces règles, alors deux nouvelles"dimensions" ZD sont créées : Une"dimension"possédant un nombre de"coordonnées"égal au nombre de"coordonnées"d'un groupe de la "dimension mère". Les caractéristiques phénoménales des"coordonnées"de cette nouvelle "dimension" sont celles d'un groupe quelconque de la "dimension mère", desquelles on a retiré la caractéristique intra-groupe. Une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la "dimension mère". Chacun de ces groupes engendre une"coordonnée"de la nouvelle "dimension". La caractéristique intra-groupe de chacun de ces groupes constitue la caractéristique phénoménale de la"coordonnée"engendrée. Une"intensité"reste toujours liée à la "coordonnée" qui contient la caractéristique modulée, et donc à la "dimension" qui contient cette"coordonnée". Une fois toutes les "dimensions" traitées, s'il n'a pas été possible de créer des groupes sur au moins une des"dimensions", alors la construction du modèle est terminée. Les"dimensions" produites par l'algorithme sont regroupées au sein de f'espace"du périphérique. Si le modèle généré semble incorrect, alors il faut éventuellement revoir la structure microscopique. Sinon le processus recommence à l'étape itérative. La figure 2 résume l'ensemble du processus de modélisation d'un périphérique. 9. 2. 4-Exemple de modélisation théorique d'un périphérique 9.2. 4. 1-Définition du périphérique Prenons l'exemple d'une carte graphique et de son écran couleur associé. La finalité de l'ensemble est d'afficher une succession d'images en couleurs. On remarque qu'une carte graphique sans écran n'est d'aucune utilité puisqu'elle ne peut pas exprimer ses informations, et un écran seul est incapable d'afficher une image s'il n'est pas contrôlé par une carte graphique. C'est pourquoi l'ensemble est considéré comme un seul périphérique de fonction homogène De plus, le périphérique est public puisque les informations exprimées par l'écran peuvent être connues par d'autres récepteurs que le processeur (exemple : l'utilisateur). 9.2. 4. 2-Fonction et configurations du périphérique Ce périphérique a pour fonction de régulièrement convertir des informations numériques en signaux lumineux analogiques assemblés selon une matrice pour former une succession d'images perçues comme colorées par un être humain. Ce périphérique est capable d'afficher une matrice de 320 pixels horizontalement par 200 pixels verticalement, chaque pixel ayant une couleur définie par un niveau de rouge, un niveau de vert et un niveau de bleu. D'autre part, il permet d'afficher une matrice de 640 par 400 pixels, chaque pixel ayant une couleur sélectionnée parmi une même palette de 256 couleurs distinctes. Chacune de ces 256 couleurs est définie par un niveau de rouge, un niveau de vert et un niveau de bleu. Ce périphérique peut donc fonctionner dans deux configurations différentes (figure 3). Dans tous les cas, la matrice de pixels est mise à jour tous les cinquantièmes de seconde. Dans cet exemple, la courbure de la surface d'affichage du tube cathodique est ignorée car ne participant pas de façon significative à l'affichage d'une image en deux dimensions. Le tube est donc considéré comme plat. De même, l'affichage successif des points constituant une image est considéré comme simultané car l'image résultant de cet affichage est prévue pour être perçue dans son ensemble par l'utilisateur. Cependant, ces phénomènes marginaux pourront être pris en compte dans la définition des données de modélisation réelle. 9.2. 4. 3-Etude des unités fonctionnelles Les procédés techniques du périphérique traitent des données numériques pour les transformer en informations lumineuses. Ce traitement diffère légèrement selon la configuration, et on se reporte aux documentations techniques du périphérique pour l'étudier : - Dans la configuration 320 par 200 pixels, les valeurs de rouge, de vert et de bleu de chaque pixel sont sauvegardées en mémoire les unes à la suite des autres, chacune sur un octet. Les lignes sont alors décrites successivement (de haut en bas), en présentant pour chacune les valeurs de rouge, vert et bleu des pixels situés de l'abscisse la plus petite (x=l) à l'abscisse la plus grande (x=320). Cette description est relue tous les cinquantièmes de seconde pour être réaffichée à l'écran. La description en mémoire peut être résumée comme suit : x=1 x=2 x=319 x=320 x=1 x=2 x=320 y=1 y=1 y=1 y=1 y=2 y=2 y=2 R V B R V B R V B R V B R V B R V B R V Cette description en mémoire se traduit a l'écran par des pixels composes de taches rouges. vertes, et bleues. Ces pixels sont organisés comme suit. x=1 x=2 x=3 x=318 x=319 x=320 y=1 RVB RVB RVB RVB RVB RVB y=2 RVB RVB RVB RVB RVB RVB y=3 RVB RVB RVB RVB RVB RVB y=198 RVB RVB RVB ... RVB RVB RVB y=199 RVB RVB RVB ... RVB RVB RVB y=200 RVB RVB RVB RVB RVB RVB - Dans la configuration 640 par 400 pixels, les numéros de couleurs (N) sont sauvegardés en mémoire les uns à la suite des autres, chacun correspondant à un pixel. Chaque numéro est sauvegardé sur un octet. Les lignes sont alors décrites successivement (de haut en bas), en présentant pour chacune les numéros de couleurs des pixels situés de l'abscisse la plus petite (x=l) à l'abscisse la plus grande (x=640). Cette description est relue tous les cinquantièmes de seconde pour être réaffichée à l'écran. La description en mémoire peut être résumée comme suit : x=1 x=2 ... x=639 x=640 x=1 x-2 .. x=640 y=1 y=1 y=1 y=1 y=2 y=2 y=2 N N ... N N N N . N Les numéros N se réfèrent à une liste d'attribution de couleurs se présentant comme suit : N=1 RVB N=2 RVB N=255 RVB N=256 RVB La aescnpuon en memore se traduit a) écran par oes pixels dont les intensites des taches rouges, vertes, et bleues sont décrites dans l'emplacement de la palette pointé par N. Ces pixels sont organisés comme suit : x=1 x=2 x=3... x=638 x=639 x=640 y=1 N N N N N N y=2 N N N . N N N y=3 N N N N N N y=398 N N N N N N y=399 N N N N N N y=400 N N N N N N Les donnees decnvant une image sont sauvegardées dans une mémoire spéciale située sur la carte graphique L'adressage des pixels est assure par une unité non a ! gorithmique établissant ie hcn o t-C > entre le processeur et la carte graphique. L'affichage des pixels est assuré par une autre unité non algorithmique : le tube cathodique. Entre ces deux unités fonctionnelles il existe d'autres unités fonctionnelles. Les unités fonctionnelles transforment le signal digital électrique en un signal analogique électrique, puis en un signal analogique lumineux. Parmi ces unités fonctionnelles, certaines sont des unités non algorithmiques comme par exemple ZD les convertisseurs numérique/analogique, l'unité d'attribution de couleurs à la palette, ou l'unité de génération des signaux de contrôle du tube cathodique (CRTC). D'autres peuvent être des Zr, unités algorithmiques, mais dans la mesure où le programmeur n'a aucun contrôle sur ces unités, elles sont ignorées pour le processus de modélisation. Elles pourront cependant être prises en compte dans le processus d'implémentation après ta modélisation. On remarque que si on avait à faire à une carte graphique possédant une unité de calcul spécialisée dans le rendu 3D, seules les unités non algorithmiques présentées dans le paragraphe précédent seraient considérées. Les unités algorithmiques (calcul matriciel sur les coordonnées tridimensionnelles des vecteurs, unité de rasterisation, unité de texture, etc. ) devraient en principe être toutes ignorées. Cependant, l'accès aux unités non algorithmiques ne peut parfois se faire qu'en utilisant ces unités algorithmiques. Ainsi pour accéder le plus directement à la matrice de pixels composant le tube cathodique, il serait obligatoire de définir un polygone particulier dont la texture permettrait d'accéder aux pixels. Ce moyen détourné permettrait de considérer l'accès aux unités non algorithmiques comme direct, et donc d'ignorer les unités algorithmiques dans le processus de modélisation. 9.2. 4. 4-Données de configuration et d'exploitation Les données permettant de placer le périphérique dans l'une des deux résolutions d'image sont des données de configuration. Dans la configuration 320 par 200, les données envoyées sont toutes des données d'exploitation car elles constituent le flux de données traité (perçu au final par l'utilisateur). De même, dans la configuration 640 par 400, les données indiquant le numéro de couleur pour chaque pixel sont des données d'exploitation. Cependant les données permettant de définir les niveaux de rouge, vert et bleu des 256 couleurs de la palette sont des données de configuration car elles paramètrent le fonctionnement de l'unité d'attribution de couleurs à la palette. De plus, elles ne font qu'influencer globalement le flux de données sortant du périphérique mais n'en font pas partie. 9.2. 4. 5-Modélisation microscopique Modélisation de la configuration 320 par 200 pixels : On peut énoncer les propriétés fonctionnelles suivantes : Le périphérique affiche une image de 320 pixels de large par 200 pixels de haut. Les pixels sont organisés en lignes et en colonnes. Chaque pixel est un point coloré composé d'une tache rouge, d'une tache verte et d'une tache bleue. La couleur de chaque pixel est indépendante de celle des autres pixels. L'intensité de chaque tache est variable indépendamment des autres au cours du temps. Les pixels ont tous la même largeur et la même hauteur, mais une position différente. La totalité de l'image est entièrement redessinée tous les cinquantièmes de seconde. A partir des propriétés fonctionnelles, on peut considérer que chaque pixel est un phénomène ou encore que le signal lumineux véhiculant l'image est un phénomène. Les informations recueillies jusqu'ici permettent de définir la structure microscopique du périphérique. Du point de vue du programmeur : Les données d'exploitation sont les niveaux de rouge, de vert et de bleu. Pour un pixel, et pour un z intervalle de temps unitaire de 1/50ème de seconde, l'ensemble des niveaux de rouge possibles constitue un ensemble exclusif. Les ensembles des niveaux de vert et de bleu constituent deux autres ensembles exclusifs. Il existe donc trois ensembles exclusifs par pixel et par intervalle de temps unitaire. Pour un intervalle de temps unitaire, le périphérique comporte globalement 320 * 200 * 3 = 192 000 ensembles exclusifs. Comme le périphérique peut fonctionner pendant un temps potentiellement infini, le nombre d'ensembles exclusifs est lui-même infini. Chacun de ces ensembles exclusifs correspond à une source d'information élémentaire. Du point de vue de l'environnement : Pour un ensemble exclusif particulier, on distingue les phénomènes élémentaires suivants : L'intensité lumineuse programmée d'une valeur faible (0) à une valeur forte (255) La couleur de la lumière dont l'intensité est programmée La superficie de la tache colorée dont l'intensité est programmée La position verticale de cette tache La position horizontale de cette tache La durée d'émission de la lumière dont l'intensité est programmée Le moment de début d'émission D'autres phénomènes élémentaires pourraient être énoncés, mais ils seraient strictement identiques pour tous les ensembles exclusifs, et ne modifieraient donc pas la structure du modèle macroscopique. L'ensemble de ces phénomènes élémentaires constitue la caractéristique phénoménale représentant l'ensemble exclusif. L'intensité lumineuse est la caractéristique modulée. Pour un intervalle de temps unitaire, il existe donc 192 000 caractéristiques phénoménales, dont certains phénomènes élémentaires varient d'une caractéristique phénoménale à l'autre (exemples : la position verticale, la couleur,...). L'analyse de la structure microscopique pour cette configuration est terminée. Le résultat est résumé en figure 4. On peut passer à la modélisation de la structure macroscopique. Modélisation de la configuration 640 par 400 pixels : Dans cette configuration, l'unité d'attribution de couleurs à la palette doit être paramétrée. Chacune des 256 couleurs de la palette peut être choisie indépendamment des autres parmi plusieurs millions de teintes. La combinatoire de tous ces choix possibles constitue, au sens strict, autant de configurations possibles pour cette unité. Cependant, ces configurations sont toutes équivalentes, et sont donc considérées comme une seule configuration afin de simplifier l'étape de modélisation. Par la suite, l'implémentation du modèle théorique obtenu prendra en compte les différentes configurations. On peut énoncer les propriétés fonctionnelles suivantes : Le périphérique affiche une image de 640 pixels de large par 400 pixels de haut. Les pixels sont organisés en lignes et en colonnes. Chaque pixel est un point coloré composé d'une tache rouge, d'une tache verte et d'une tache bleue. La couleur de chaque pixel est indépendante de celle des autres pixels, mais dépend de la configuration de l'unité d'attribution de couleurs à la palette. L'unité d'attribution de couleurs à la palette interdit la présence de plus de 256 couleurs simultanément à l'écran. La couleur de chaque pixel est variable indépendamment des autres au cours du temps. Les pixels ont tous la même largeur et la même hauteur, mais une position différente. La totalité de l'image est entièrement redessinée tous les cinquantièmes de seconde. A partir des propriétés fonctionnelles, on peut considérer que chaque pixel est un phénomène ou encore que le signal lumineux véhiculant l'image est un phénomène. Les informations recueillies jusqu'ici permettent de définir la structure microscopique du périphérique. Du point de vue du programmeur : Les données d'exploitation sont les numéros de couleurs. Pour un pixel, et pour un intervalle de temps unitaire de 1I50eme de seconde, l'ensemble des numéros de couleurs possibles constitue un ensemble exclusif. Il n'existe donc qu'un seul ensemble exclusif par pixel et par intervalle de temps unitaire. Pour un intervalle de temps unitaire, le périphérique comporte globalement 640 * 400 = 256 000 ensembles exclusifs. Comme le périphérique peut fonctionner pendant un temps potentiellement infini, le nombre d'ensembles exclusifs est lui-même infini. Chacun de ces ensembles exclusifs correspond à une source d'information élémentaire. Du point de vue de l'environnement : Pour un ensemble exclusif particulier, on distingue les phénomènes élémentaires suivants : La couleur programmée parmi 256 possibles (physiquement composée de trois couleurs primaires) La superficie de la tache lumineuse dont la couleur est programmée La position verticale de cette tache La position horizontale de cette tache La durée d'émission de la lumière dont la couleur est programmée Le moment de début d'émission D'autres phénomènes élémentaires pourraient être énoncés, mais ils seraient strictement identiques pour tous les ensembles exclusifs, et ne modifieraient donc pas la structure du modèle macroscopique. L'ensemble de ces phénomènes élémentaires constitue la caractéristique phénoménale représentant l'ensemble exclusif. La couleur est la caractéristique modulée. Pour un intervalle de temps unitaire, il existe donc 256 000 caractéristiques phénoménales, dont certains phénomènes élémentaires varient d'une caractéristique phénoménale à l'autre (exemple : la position verticale). L'analyse de la structure microscopique pour cette configuration est terminée. Le résultat est résumé en figure 5. On peut passer à la modélisation de la structure macroscopique. 9.2. 4. 6-Construction du modèle macroscopique A/Construction du modèle de la configuration 320 par 200 pixels : 9.2. 4.6. 1 - Etape initiale : On considère qu'aucune"dimension","coordonnée"ou"intensité"n'est définie. On construit la première "dimension" comme présentée en figure 6. 9.2. 4.6. 2-Première étape itérative : On tente d'appliquer les règles de rassemblement en groupes à la première "dimension". On choisit de rassembler les "coordonnées" en groupes de 192 000 "coordonnées" dont le phénomène élémentaire T est présent à l'identique dans chaque"coordonnée"d'un des groupes. Les phénomènes élémentaires T, S, 1 et D constituent alors la caractéristique intra-groupe d'un groupe. Pour toute"coordonnée"d'un groupe, les autres phénomènes élémentaires Xx, Yy et Cc de la caractéristique phénoménale appartiennent à la caractéristique inter-groupes car ils se retrouvent à l'identique dans une"coordonnée"de chacun des groupes. Les groupes étant constitués, on crée deux nouvelles "dimensions" : une"dimension"possédant un nombre de "coordonnées" égal au nombre de"coordonnées"d'un groupe de la "dimension mère", soit 192 000"coordonnées", et une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la "dimension mère". Ce nombre est potentiellement infini et correspond au nombre d'images affichées successivement par le périphérique depuis son démarrage. Ces nouvelles"dimensions"sont présentées en figure 7. 9. 2. 4. 6. 3-Deuxième étape itérative : On tente d'appliquer les règles de rassemblement en groupes à chacune des deux"dimensions" produites à l'étape précédente. a) Pour la "dimension" 1 : On choisit de rassembler les "coordonnées" en 320 groupes de 600 "coordonnées" dont le phénomène élémentaire X est présent à l'identique dans chaque"coordonnée"du groupe. Le phénomène élémentaire X est alors la caractéristique intra-groupe d'un groupe. Pour toute "coordonnée" d'un groupe, les autres phénomènes élémentaires Yy et Cc de la caractéristique phénoménale appartiennent à la caractéristique inter-groupes car ils se retrouvent à l'identique dans une "coordonnée" de chacun des groupes. Les groupes étant constitués, on crée deux nouvelles "dimensions" : une"dimension"possédant un nombre de"coordonnées"égal au nombre de"coordonnées"d'un groupe de la "dimension mère", soit 600"coordonnées", et une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la "dimension mère", soit 320"coordonnées". Ces nouvelles"dimensions"sont présentées en figure 8. b) Pour la "dimension" 2 : On ne peut que rassembler toutes les"coordonnées"en un seul groupe. Les phénomènes élémentaires S, t et D constituent la caractéristique intra-groupe car ils sont présents à l'identique dans chaque"coordonnée"du groupe. Pour chaque "coordonnée", le phénomène élémentaire Tn de la caractéristique phénoménale constitue la caractéristique inter-groupes. Les groupes étant constitués, on crée deux nouvelles "dimensions" : une"dimension"possédant un nombre de "coordonnées" égal au nombre de"coordonnées"du groupe. Ce nombre est potentiellement infini et correspond au nombre d'images affichées successivement par le périphérique depuis son démarrage, et une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la "dimension mère", soit une"coordonnée". Ces nouvelles"dimensions"sont présentées en figure 9. 9. 2. 4. 6. 4-Troisième étape itérative : On tente d'appliquer les règles de rassemblement en groupes à chacune des quatre"dimensions" produites à l'étape précédente. a) Pour la "dimension" 3 : On choisit de rassembler les "coordonnées" en 3 groupes de 200 "coordonnées" dont le phénomène élémentaire C est présent à l'identique dans chaque"coordonnée"du groupe. Le phénomène élémentaire C est alors la caractéristique intra-groupe d'un groupe. Pour toute"coordonnée"d'un groupe, le phénomène élémentaire Yy de la caractéristique phénoménale constitue la caractéristique inter-groupes car il se retrouve à l'identique dans une"coordonnée"de chacun des groupes. Les groupes étant constitués, on crée deux nouvelles "dimensions" : une"dimension"possédant un nombre de "coordonnées" égal au nombre de"coordonnées"d'un groupe de la "dimension mère", soit 200"coordonnées", et une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la "dimension mère", soit 3"coordonnées". Ces nouvelles"dimensions"sont présentées en figure 10. b) Pour la "dimension" 4 : Il est impossible de rassembler les 320 "coordonnées" de la "dimension" 4 en groupes. En effet, si l'on constitue deux ou plusieurs groupes, il n'existe ni caractéristique intra-groupe, ni caractéristique inter-groupes (la troisième règle de rassemblement n'est donc pas respectée). Si l'on constitue un seul groupe rassemblant l'ensemble des 320 "coordonnées", alors il existe une caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne sont pas respectées. La"dimension"4 est donc définitivement établie. c) Pour la"dimension"5 : II est impossible de rassembler les "coordonnées" de la "dimension" 5 en groupes. En effet, si l'on constitue deux ou plusieurs groupes, il n'existe ni caractéristique intra-groupe, ni caractéristique inter-groupes (la troisième règle de rassemblement n'est donc pas respectée). Si l'on constitue un seul groupe rassemblant l'ensemble des "coordonnées", alors il existe une caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne sont pas respectées. La"dimension"5 est donc définitivement établie. d) Pour la "dimension" 6 : Il est impossible de constituer des groupes avec l'unique "coordonnée" de la "dimension" 6. En effet, on ne pourrait constituer qu'un seul groupe, mais alors la première règle ne serait pas respectée. La"dimension"6 est donc définitivement établie. 9.2. 4.6. 5-Quatrième étape itérative : On tente d'appliquer les règles de rassemblement en groupes à chacune des deux"dimensions" produites à l'étape précédente. a) Pour la "dimension" 7 : Il est impossible de rassembler les 200 "coordonnées" de la "dimension" 7 en groupes. En effet, si l'on constitue deux ou plusieurs groupes, il n'existe ni caractéristique intra-groupe, ni caractéristique inter-groupes (la troisième règle de rassemblement n'est donc pas respectée). Si l'on constitue un seul groupe rassemblant l'ensemble des 200 "coordonnées", alors il existe une caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne sont pas respectées. La "dimension" 7 est donc définitivement établie. b) Pour la "dimension" 8 : Il est impossible de rassembler les 3 "coordonnées" de la "dimension" 8 en groupes. En effet, il n'est pas possible de créer trois groupes d'une seule "coordonnée" car la deuxième règle n'est alors pas respectée. D'autre part il n'est pas possible de créer deux groupes de une et deux "coordonnées" car les première et deuxième règles ne sont alors pas respectées. Si l'on constitue un seul groupe rassemblant les 3 "coordonnées", alors il existe une caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne sont pas respectées. La c "dimension"8 est donc définitivement établie. 9.2. 4.6. 6-Fin Il n'a pas été possible de créer des groupes sur aucune des"dimensions mères"disponibles à cette étape, donc la construction du modèle macroscopique est terminée. Les"dimensions"4, 5,6, 7 et 8 sont regroupées au sein de l'''espace''de périphérique (pour la configuration considérée). B/Construction du modèle de la configuration 640 par 400 pixels : 9.2. 4.6. 7 - Etape initiale : On considère qu'aucune"dimension","coordonnée"ou"intensité"n'est définie. On construit la première"dimension"comme présentée en figure ! 1. 9.2. 4.6. 8-Première étape itérative : On tente d'appliquer les règles de rassemblement en groupes à la première"dimension". On choisit de rassembler les "coordonnées" en groupes de 640 "coordonnées" dont les phénomènes élémentaires T et Y sont présents à l'identique dans chaque"coordonnée"d'un des groupes. Les phénomènes élémentaires T, Y, S, P et D constituent alors la caractéristique intragroupe d'un groupe. Pour toute"coordonnée"d'un groupe, le phénomène élémentaire Xx de la caractéristique phénoménale constitue la caractéristique inter-groupes car il se retrouve à l'identique dans une"coordonnée"de chacun des groupes. Les groupes étant constitués, on crée deux nouvelles"dimensions" : une"dimension"possédant un nombre de "coordonnées" égal au nombre de"coordonnées"d'un groupe de la "dimension mère", soit 640"coordonnées", et une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la "dimension mère". Ce nombre est potentiellement infini car il est lié au nombre d'images affichées successivement par le périphérique depuis son démarrage. Ces nouvelles"dimensions"sont présentées en figure 12. 9.2. 4.6. 9-Deuxième étape itérative : On tente d'appliquer les règles de rassemblement en groupes à chacune des deux"dimensions" produites à l'étape précédente. a) Pour la "dimension" 1 : Il est impossible de rassembler les 640 "coordonnées" de la "dimension" 1 en groupes. En effet, si l'on constitue deux ou plusieurs groupes, il n'existe ni caractéristique intra-groupe, ni caractéristique inter-groupes (la troisième règle de rassemblement n'est donc pas respectée). Si l'on constitue un seul groupe rassemblant l'ensemble des 640 "coordonnées", alors il existe une ZD caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne ZD sont pas respectées. La "dimension" 1 est donc définitivement établie. b) Pour la "dimension" 2 : On choisit de rassembler les "coordonnées" en groupes de 400 "coordonnées" dont le phénomène élémentaire T est présent à l'identique dans chaque"coordonnée"du groupe. Les phénomènes élémentaires T, S, P et D constituent alors la caractéristique intra-groupe d'un groupe. Pour toute "coordonnée"d'un groupe, le phénomène élémentaire Yy de la caractéristique phénoménale appartient à la caractéristique inter-groupes car il se retrouve à l'identique dans une"coordonnée" de chacun des groupes. Les groupes étant constitués, on crée deux nouvelles "dimensions" : une"dimension"possédant un nombre de"coordonnées"égal au nombre de"coordonnées"d'un groupe de la "dimension mère", soit 400"coordonnées", et une"dimension"possédant un nombre de"coordonnées"égal au nombre de"coordonnées"du t : l groupe. Ce nombre est potentiellement infini et correspond au nombre d'images affichées successivement par le périphérique depuis son démarrage. Ces nouvelles"dimensions"sont présentées en figure 13. 9.2. 4.6. 10-Troisième étape itérative : On tente d'appliquer les règles de rassemblement en groupes à chacune des deux"dimensions" produites à l'étape précédente. c) Pour la "dimension" 3 : Il est impossible de rassembler les 400 "coordonnées" de la "dimension" 3 en groupes. En effet, si l'on constitue deux ou plusieurs groupes, il n'existe ni caractéristique intra-groupe, ni caractéristique inter-groupes (la troisième règle de rassemblement n'est donc pas respectée). Si l'on constitue un seul groupe rassemblant l'ensemble des 400 "coordonnées", alors il existe une caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne sont pas respectées. La"dimension"3 est donc définitivement établie. d) Pour la"dimension"4 : On ne peut que rassembler toutes les "coordonnées" en un seul groupe. Les phénomènes élémentaires S, P et D constituent la caractéristique intra-groupe car ils sont présents à l'identique dans chaque "coordonnée" du groupe. Pour chaque "coordonnée", le phénomène élémentaire Tn de la caractéristique phénoménale constitue la caractéristique inter-groupes. Les groupes étant constitués, on crée deux nouvelles "dimensions" : une"dimension"possédant un nombre de "coordonnées" égal au nombre de"coordonnées"du groupe. Ce nombre est potentiellement infini et correspond au nombre d'images affichées successivement par le périphérique depuis son démarrage, et une"dimension"possédant un nombre de "coordonnées" égal au nombre de groupes de la CI "dimension mère", soit une"coordonnée". Ces nouvelles"dimensions"sont présentées en figure 14. 9. 2.4. 6. 11 - Quatrième étape itérative : On tente d'appliquer les règles de rassemblement en groupes à chacune des deux"dimensions" ZD produites à l'étape précédente. e) Pour la "dimension" 5 : Il est impossible de rassembler les "coordonnées" de la "dimension" 5 en groupes. En effet, si l'on constitue deux ou plusieurs groupes, il n'existe ni caractéristique intra-groupe, ni caractéristique inter-groupes (la troisième règle de rassemblement n'est donc pas respectée). Si l'on constitue un seul groupe rassemblant l'ensemble des"coordonnées", alors il existe une caractéristique inter-groupes par"coordonnée". Dans ce cas, les deuxième et troisième règles ne sont pas respectées. La"dimension"5 est donc définitivement établie. f) Pour la "dimension" 6 : Il est impossible de constituer des groupes avec l'unique "coordonnée" de la "dimension" 6. En effet, on ne pourrait constituer qu'un seul groupe, mais alors la première règle ne serait pas respectée. La"dimension"6 est donc définitivement établie. 9.2. 4.6. 12-Fin Il n'a pas été possible de créer des groupes sur aucune des"dimensions mères"disponibles à cette étape, donc la construction du modèle macroscopique est terminée. Les "dimensions" l, 3,5 et 6 sont regroupées au sein de l'''espace''de périphérique (pour la configuration considérée). Les deux configurations sont à présent organisées selon une structure reflétant les relations du périphérique avec le monde réel. Sur cette structure vont venir se greffer les informations permettant de programmer le périphérique, comme nous le verrons par la suite. 9. 3-Représentation arborescente du modèle 9.3. 1-La notion d'arborescence de périphériques Nous déduisons de la modélisation théorique une classification hiérarchique permettant de décrire de façon synthétique la fonction de chaque périphérique, en organisant les modèles théoriques des périphériques selon une arborescence. Cette arborescence est constituée de "noeuds". Les liens entre les noeuds sont symbolisés par des"branches" (ou entre-noeuds). Un noeud peut regrouper un (ou plusieurs) autre (s) noeud (s). Un noeud qui ne regroupe aucun autre noeud est nommé "feuille". Une feuille est une information unitaire indivisible qui ne rassemble pas d'autres informations plus élémentaires. Cette arborescence est un ensemble de liens de subordination, un élément englobant des sous- éléments qui le décrivent plus précisément. Les liens qu'elle établit peuvent être représentés graphiquement par un arbre, permettant au programmeur un accès plus rapide et intuitif à son organisation. A la différence de la convention usuellement retenue en informatique, la représentation retenue est calquée sur les structures vivantes du même nom. Ainsi, en allant de bas en haut, cet arbre dispose d'un noeud racine (appelé "racine"), de noeuds et de feuilles. La racine regroupe tous les noeuds et feuilles. Plus un noeud est éloigné de la racine, plus le nombre de noeuds qu'il rassemble est faible. Une feuille est située à une extrémité de l'arbre. Un noeud situé vers la racine englobe un nombre élevé de noeuds et de feuilles différents, susceptibles d'être répartis entre plusieurs périphériques. Un noeud situé vers les extrémités de l'arbre regroupe un nombre restreint de noeuds ou de feuilles pouvant être spécifiques d'un seul périphérique. 9. 3. 2-Description générale de l'arbre des périphériques Les périphériques sont décrits sous la forme d'une arborescence, organisée en niveaux. Sur chacun de ces niveaux, tous les noeuds sont similaires. Ces noeuds sont nommés en fonction du niveau qu'ils occupent dans la hiérarchie (voir fig. 15 en fin de paragraphe 11). Entre deux noeuds d'un niveau quelconque, il existe toujours tous les noeuds des niveaux intermédiaires permettant de les relier. Si un noeud ne regroupe aucun noeud, il prend alors le statut de feuille. Ce processus peut se poursuivre sur certains noeuds en progressant vers la racine de l'arbre. Pour prendre connaissance d'un périphérique, ou y accéder, on parcours l'arbre de la racine vers les feuilles. Cet arbre est prévu pour permettre la configuration et la programmation d'un périphérique par simple parcours de ses noeuds. Selon qu'un périphérique est disponible ou non, la branche correspondante de l'arbre supportant les noeuds décrivant ce périphérique apparaît ou disparaît. Un autre arbre ou une portion d'arbre, représentant les périphériques contrôlés par une autre Machine Universelle, peut également être greffé sur cet arbre. Un processeur virtuel peut ainsi contrôler des périphériques par l'intermédiaire d'un autre processeur virtuel. Cette greffe se traduit par un lien entre les deux arbres au niveau d'un noeud précis, mais chaque arbre conserve sa structure propre. Chaque noeud peut fournir des"directives de dépendance", Il s'agit de contraintes sur la structure de l'arbre lorsqu'on le parcours, dépendant de l'interaction entre périphériques, de leurs configurations possibles et de leurs limites de fonctionnement. Certaines branches de l'arbre peuvent ainsi être disponibles ou indisponibles temporairement, et donc apparaître ou disparaître, lorsqu'on accède à un périphérique particulier, ou lorsqu'on place ce dernier dans une configuration particulière. Certaines directives de dépendance peuvent être à usage unique ou compté : on parle de"directive d'élagage". Une branche devient alors définitivement disponible ou indisponible lorsque la condition définie par une ou des directive (s) d'élagage est remplie. Les différentes configurations de la fonction d'un périphérique donnent lieu à autant de modèles théoriques. Ces modèles sont tous rassemblés dans le même"espace"de périphérique car relevant de la même fonction, bien que leurs structures puissent différer. Afin de permettre la cohabitation de ces modèles, certains noeuds rassemblent au niveau suivant plusieurs groupes de noeuds qui correspondent aux différentes configurations possibles. Ces groupes de noeuds s'excluent alors mutuellement par des directives de dépendance. On parle de "noeud à géométrie variable". Ces trois derniers mécanismes confèrent à l'arbre une structure plastique. 9.3. 3 - Description détaillée de l'arbre des périphériques La racine de l'arbre représentel'"univers"des périphériques. C'est le point d'entrée dans l'arbre des périphériques. S'il n'est pas présent, on considère qu'il n'existe pas de périphériques accessibles par le processeur virtuel. Cependant ce cas ne correspond pas à un fonctionnement normal de la machine, car le processeur virtuel ne peut pas fonctionner en l'absence d'au moins un périphérique de type RAM ou ROM. Cet"univers"regroupe deux noeuds appelés"groupes"situés au niveau suivant : le "groupe" des périphériques d'échange, et e"groupe"des périphériques de conservation. Ces"groupes" symbolisent le devenir des informations échangées entre le processeur et un périphérique : soit elles seront transmises dans un environnement ouvert, accessible à tout moment par d'autres récepteurs que le processeur, permettant ainsi leur communication avec l'extérieur de la machine (ou bien elles seront transmises à partir d'émetteurs, situés dans un environnement ouvert, vers le processeur). C'est le cas d'un écran vidéo accessible par un humain ou d'un bus de données accessible par un autre processeur par exemple. Ce sont en fait tous les périphériques publics ; soit elles seront transmises dans un environnement accessible exclusivement par le processeur pendant un certain temps (une mémoire, un disque dur, etc.). Ce sont la plupart du temps les périphériques privés. De même que pour l'l'univers", l'absence d'un de ces noeuds indique qu'il n'y a pas de périphérique disponible ayant les spécificités du"groupe"concerné. Chacun de ces"groupes"englobe deux"hyperespaces"situés au niveau suivant. Les "hyperespaces"du"groupe"des périphériques d'échange indiquent le sens de transmission des informations. On distingue : i''hyperespace"des périphériques d'échange en sortie : les informations iront du processeur vers son environnement extérieur, et )''hyperespace"des périphériques d'échange en entrée : les informations iront de l'environnement extérieur vers le processeur. Le problème est différent dans le cas des périphériques de conservation. Ils sont forcément accessibles en entrée puisque la notion de conservation d'une information implique sa disponibilité ultérieure, sans quoi, conserver une information sans jamais pouvoir y accéder revient à la détruire. On notera toutefois que ces périphériques sont le plus souvent accessibles en entrée et en sortie. Le caractère discriminant de ces périphériques est la disponibilité des informations pour le processeur. En effet, certains de ces périphériques sont critiques pour le bon fonctionnement du processeur, en particulier les RAM et ROM. En conséquence, es"hyperespaces"du"groupe"des périphériques de conservation indiquent le niveau de disponibilité de l'information pour le processeur. On distingue : f'hyperespace"des périphériques de conservation adressables : le processeur a un accès instantané, permanent et direct aux périphériques, par une zone de son espace d'adressage, afin d'échanger des informations, et f'hyperespace"des périphériques de conservation non adressables : l'accès aux informations est indirect (requiert un algorithme d'accès). Il est souvent plus lent (cas des supports de masse) et/ou n'est pas garanti en permanence (cas des supports de masse amovibles). Chacun de ces"groupes"englobe un ou plusieurs "espaces" de périphériques situés au niveau suivant. A partir de ce niveau de l'arbre, on aborde le fonctionnement d'un périphérique. Un "espace" regroupe les "dimensions" d'un périphérique modélisé par l'analyse macroscopique. Une"dimension"englobe une ou plusieurs"coordonnées". Une"coordonnée"précise, si besoin, la nature physique ou symbolique de la caractéristique élémentaire qu'elle supporte. Si toutes les "coordonnées"qu'une"dimension"regroupe sont de même nature, alors cette"dimension" précise cette nature. Les "intensités" représentent le niveau situé à l'extrémité de l'arborescence. Elles représentent les intensités d'expression possibles de la caractéristique modulée de la "coordonnée". Les"coordonnées"ou les"intensités"constituent le plus souvent les feuilles de l'arbre. 10-Aspects pratiques 1 0. 1 - Implémentation des périphériques dans la Machine Universelle Pour chaque grand niveau hiérarchique de la Machine Universelle, nous définissons une méthode d'accès aux périphériques basée sur le modèle théorique décrit. Chaque méthode d'accès présente plus ou moins d'informations concernant les périphériques. L'implémentation des périphériques en niveau zéro doit permettre de reconstituer l'arbre des périphériques complet tel que décrit (voir figure 15). Cependant, elle doit être réduite à l'essentiel pour conserver la simplicité de l'émulateur de niveau zéro. En conséquence, la représentation de l'arbre des périphériques est partielle, et certaines de ses caractéristiques sont déduites et reconstituées par des programmes spécifiques écrits en niveau zéro. L'implémentation dans le cadre de la machine 30 de niveau 1 est le reflet exact du type d'arbre de la figure 15. En effet, le niveau zéro émulant le niveau 1 reconstitue l'arborescence complète des périphériques, et met en place des fonctions qui en simplifient l'exploitation. i 0. !. 1-tmptémentation en niveau zéro L'implémentation présentée dans cette partie est prévue pour le niveau 0.4 (ou le niveau 0.2 émulant le niveau 0.4). Elle sert de base pour le système de gestion des périphériques plus élaboré du niveau supérieur (niveau 1). Les informations issues de l'étape de modélisation théorique d'un périphérique (ou de plusieurs périphériques interdépendants), ainsi que le protocole d'accès à ce dernier sur la machine support 23, sont rassemblés en trois blocs distincts : - le premier bloc, nommé"LINK"26, permet de transporter et d'aiguiller les données de configuration et d'exploitation échangées entre le processeur virtuel de niveau zéro et un périphérique particulier de la machine support 23 par l'intermédiaire du registre"MER"27. Le premier bloc établit le lien avec les adresses d'accès au périphérique sur la machine support 23. Il contient des programmes écrits dans le langage machine natif de la machine support 23 afin de transporter les données échangées aux bonnes adresses. Ces programmes permettent aussi de détecter la présence du périphérique et de l'initialiser dans un état stable permettant son bon fonctionnement ultérieur (sous-programme d'initialisation). - le second bloc, nommé "TREE" 29, donne les principales informations permettant d'évaluer la fonction du périphérique et toutes les informations pour calculer et interpréter les données de configuration et d'exploitation. L'évaluation est permise par le codage binaire du modèle théorique arborescent, tandis que les calculs et interprétations des données d'exploitation et de configuration sont effectués au moyen de programmes spécifiques insérés dans ce codage. Un bloc"TREE"29 est la description de l'l'espace" d'un périphérique (ou de plusieurs dans certains cas exceptionnels, explicités par la suite) et de tous les noeuds qu'il englobe ("espace", "dimensions","coordonnées"et"intensités"), donc une portion de l'arbre. Il indique l''hyperespace"auquel appartient le périphérique. - le troisième bloc, optionnel, est nommé"FEATURE EXTENSION"ou"FEXT". I) peut être présent lorsque le bloc "TREE" 29 ne peut pas fournir certaines informations. Il peut contenir des équations Physiques, des représentations symboliques (par exemple graphiques), ou tout autre type de modélisation de caractéristiques physiques, symboliques, ou encore logiques permettant de préciser le comportement dans la réalité des"dimensions","coordonnées"et"intensités" incluses dans le bloc "TREE" 29. II peut aussi contenir d'autres informations venant enrichir le bloc "TREE" 29. Un bloc "TREE" 29 ou "FEXT" est spécifique d'un périphérique particulier, mais totalement indépendant de la machine support 23 dans laquelle ce périphérique est implanté. Ainsi, peu importe si une carte sonore est connectée dans un micro-ordinateur PC ou Apple, dans un assistant personnel ou encore dans un téléphone portable : le bloc "TREE" 29 ou "FEXT" est inchangé, et peut être réutilisé tant que les caractéristiques du périphérique restent strictement c identiques. Un bloc "LINK" 26 est spécifique d'un périphérique et de la machine support 23 dans laquelle ce périphérique est inséré. Pour pouvoir exploiter la carte sonore (prise pour exemple ci-dessus) implantée dans une des machines support décrites, il faudra qu'un programmeur réécrive le bloc "LINK"26 pour cette machine. Pour pouvoir exploiter un périphérique, il faut au minimum son bloc"TREE"29, ainsi que le bloc "LINK" 26 associé qui correspond à la machine support 23 considérée. Le bloc "TREE" 29 représente la majeure partie du travail d'accès à un périphérique. Le bloc "LINK"26 est relativement court puisque sa fonction est généralement de transporter une information entre le processeur virtuel et un périphérique. La portion de gestion des périphériques dépendante d'une machine support 23 est ainsi réduite. 10. 1. 2 - Implémentation en niveau 1 L'implémentation des périphériques de niveau 1 est basée sur un programme de niveau zéro exploitant les périphériques disponibles à son niveau. La structure plus complexe du niveau 1 s'accorde mieux avec une représentation plus complète et d'accès plus immédiat aux périphériques. L'arbre des périphériques présenté au niveau 1 dispose de tous les noeuds décrits au paragraphe 9.3. 3 (en particulier les"groupes","univers", et"hyperespaces"). La programmation des périphériques se fait grâce à un protocole permettant de naviguer dans l'arbre de branche en branche. Les directives de dépendance ne sont pas accessibles directement, mais s'expriment en modifiant la structure de l'arbre selon les branches parcourues. 10. 2-Accès aux périphériques en niveau zéro 10.2. 1-Schéma d'organisation Pour que le programmeur passe à la phase d'implémentation des périphériques dans la machine de niveau zéro, il doit les avoir préalablement modélisé avec soin, et connaître toutes les informations permettant de décrire les"dimensions","coordonnées"et"intensités". La mise en place de l'arbre et son exploitation sont pris en charge par différents processeurs. Elle est assurée d'une part par la machine support 23, à travers une portion du programme d'émulation de la machine de niveau zéro appelée le cartographe/énumérateur 25 (Mapper/Enumerator) qui prend en charge les protocoles d'accès aux périphériques à partir du niveau zéro. D'autre part, le processeur de niveau zéro reçoit les blocs "TREE" 29 à partir du cartographe/énumérateur 25 par l'intermédiaire du registre"MER"27 (Mapper/Enumerator Register pour"registre de cartographe/énumérateur"). Enfin, un processeur virtuel spécialisé, émulé par le processeur de niveau 0.4, prend en charge les programmes de calcul des données de configuration et d'exploitation, ainsi que les directives de dépendance insérés dans les noeuds de l'arbre. C'est le coprocesseur de périphériques 28. Le processeur de niveau zéro est alors en mesure d'exécuter un programme prenant en charge le parcours des différentes branches de l'arbre pour accéder aux périphériques, par l'intermédiaire des programmes du coprocesseur 28 qui accèdent au registre"MER"27. En niveau zéro, les blocs "TREE" 29 sont transmis sur commande par le cartographe/énumerateur 25, par l'intermédiaire du registre"MER"27. L'ensemble de ces blocs ZD contient toutes les indications nécessaires pour pouvoir reconstruire un arbre des périphériques complet comme décrit au paragraphe 9. 3. 3. Les blocs "LINK" 26 sont installés dans la mémoire ZD de la machine support 23 par le cartographe/énumerateur 25, qui les appelle selon les"espaces" de périphériques utilisés. Les blocs"FEXT"sont chargés explicitement par un programme écrit en niveau 0.4 et viennent enrichir les descriptions des blocs "TREE" 29. 1 0. 2. 2-Le coprocesseur de périphériques 28 La simple analyse des blocs"TREE"29 permet d'évaluer l'environnement du processeur virtuel, sans y accéder. Pour accéder aux périphériques il faut exécuter des programmes de parcours inclus dans les noeuds des blocs "TREE" 29. Ces programmes calculent les données d'exploitation et de configuration adéquates pour pouvoir utiliser le périphérique, compte tenu de la branche de l'arbre parcourue. La plupart du temps, seuls les programmes situé dans certains noeuds (notamment les noeuds d"'intensités") sont chargés de réaliser l'accès aux périphériques, en fonction des données calculées par les programmes d'autres noeuds. En outre, le programme de parcours d'un noeud d'"espace"doit activer le périphérique correspondant, en particulier son mécanisme d'interruption. L'exécution d'un programme de parcours est conditionnée par le résultat de l'exécution du programme d'autorisation situé dans le même noeud. Certains périphériques sont capables de déclencher une interruption, c'est-à-dire de demander un traitement particulier immédiat par le programme de niveau zéro. Dans ce cas, un programme d'interruption doit être exécuté par le coprocesseur de périphériques 28, afin de tenir à jour certains paramètres. Seuls les noeuds de l'arbre appartenant à un espace de périphérique ("espace","dimension", "coordonnée","intensité") peuvent contenir des programmes de parcours et d'autorisation. Pour fonctionner, ces programmes utilisent un environnement de programmation restreint nommé coprocesseur de périphériques 28, disposant de 25 types d'instructions, de 8 registres de données à usage général, et de quatre indicateurs binaires d'état. z 10.2. 2. 1-Organisation de l'environnement de programmation L'environnement de programmation du coprocesseur 28 s'apparente à une machine virtuelle constituée d'un processeur virtuel n'ayant accès qu'à une unique mémoire réinscriptible, appelée mémoire données. Le programme à exécuter par le processeur est situé dans une mémoire ZD programmes séparée. Le contenu de cette mémoire est inaccessible au processeur, mais ce dernier peut se positionner à l'intérieur de la séquence des instructions, par rapport à la dernière instruction délivrée (saut relatif). Le processeur dispose de huit registres internes, d'une largeur de 16 bits chacun, nommés RO à R7. Il est capable d'exécuter 25 types d'instructions, et peut conserver certains résultats caractéristiques de la dernière opération dans des indicateurs d'état (signe : N, nullité : Z, débordement : 0, retenue : C). Les opérations sont encodées sous la forme de mots de 16 bits. On distingue trois grands groupes d'opérations : chargement, sauvegarde, terminaison opérations arithmétiques et logiques sauts conditionnels La mémoire réinscriptible à laquelle le processeur a accès peut contenir 65536 mots distincts au maximum. La taille de cette mémoire est définie statiquement à 0 ou par une puissance de 2 pour l'ensemble des programmes d'un bloc"TREE"29. Cette mémoire peut donc être absente, ou avoir une capacité allant de 20 = 1 mot de mémoire données à i6 = 65536 mots de mémoire données au maximum. Lors de l'exécution d'une instruction coprocesseur faisant appel à une mémoire données de taille inférieure à la taille adressable maximale de l'instruction considérée, les bits d'adressage inutilisés sont ignorés. Un programme coprocesseur est constitué d'une succession d'instructions qui sont exécutées séquentiellement, à l'exception des sauts qui constituent des ruptures de séquence. Le nombre d'instructions qu'il peut contenir n'est pas limité. Ce programme ne peut en aucun cas accéder à la mémoire programmes contenant les instructions le constituant, que ce soit en lecture ou en écriture. Il ne peut donc pas se modifier. Tous les programmes coprocesseurs concernant un même périphérique (donc situés dans un même"espace"de périphérique) accèdent exclusivement à une seule et même mémoire réinscriptible, dont la capacité est fixée lors de l'installation de l'arbre. Ils devront donc être prévus pour utiliser cette mémoire sans conflits entre eux. 10.2. 2. 2-Description du jeu d'instructions Le coprocesseur de périphériques 28 dispose de vingt-cinq types d'instructions décrits dans les tableaux ci-dessous. Les conventions suivantes sont communes à la description de l'ensemble des instructions. un bit de valeur 1 est dit levé et un bit de valeur 0 est dit baissé, les bits d'un mot 16 bits sont numérotés de 0 à 15. Le bit 0 étant le bit de plus faible poids, le bit 15 celui de plus fort poids. Dans le codage d'une instruction : "r"désigne un bit de codage du numéro de registre. "a"désigne un bit de codage de l'adresse mémoire. "i"désigne un bit de codage de la valeur immédiate. " ?" désigne un bit réservé, devant être systématiquement baissé pour garantir une compatibilité ascendante avec d'éventuelles version ultérieures. "z","o","n"et"c"désignent tes bits de mise à jour des indicateurs Z, 0, N et C respectivement : s'ils sont levés, les indicateurs correspondants sont mis à jour en fonction du résultat de l'opération. "s" désigne un bit de codage du numéro de registre source. "d"désigne un bit de codage du numéro de registre destination. Syntaxe de Codage de Description du fonctionnement de l'instruction l'instruction l'instruction en binaire Instructions de chargement, de sauvegarde, et de terminaison. LD Rd, mem 000rrraaaaaaaaaa Rd de la mémoire pointée par mem (modulo la taille de la mémoire données). ST mem, Rs 00 J rrraaaaaaaaaa Mémoire pointée par mem (modulo la taille de la mémoire données) v Rs. LD Rd, &num;imm 01 Orrriiiiiiiiii Rd immédiate imm étendue par le signe à 16 bits. Les 10 bits de poids faible du mot de l'instruction sont copiés dans les 10 bits de poids faible de Rd. Le bit de poids fort de la valeur immédiate (bit 9) est copié dans chacun des bits 10 à 15 de Rd. EOP 0110 ? ? ? ? ? ? ? ? ? ? ? ? Termine l'exécution du programme. R7 doit contenir un code de terminaison) 16 bits. Les autres registres peuvent contenir une extension de ce code. LD Rd,LINK 01110rrr ? ? ? renvoyée par le sous-programme de lecture dubloc"LlNK"26. ST LINK,Rs 01111rrr ? ? ? ? ? ? ? ? Sous-programme d'écriture du bloc "LINK" 26 # Rs. Les instructions d'accès à"MER"27 sont restreintes par rapport à l'accès à ce registre directement depuis le niveau 0.4. C'est pourquoi seules les fonctions de lecture et d'écriture sur le bloc"LINK"26 correspondant à f'espace"de périphérique auquel appartient le programme sont autorisées. Le numéro de la commande de lecture ou d'écriture sur le bloc "LlNK" 26 est automatiquement envoyé à"MER"27 par l'émulateur 33 du coprocesseur de périphériques 28. De façon générale, pour les instructions arithmétiques et logiques : l'indicateur N est une copie du bit 15 du résultat de l'instruction l'indicateur Z est levé si tous les bits du résultat sont baissés ; l'indicateur 0 est levé si l'instruction génère un débordement en logique signée ; et l'indicateur C est levé si une retenue ou un emprunt est généré par l'instruction. Instructions arithmétiques, logiques, et de déplacement ADD Rd, Rs, ZONC) 00000zoncsssddd Rd Rd + Rs. Les indicateurs sélectionnés sont mis à jour. ADC Rd, Rs, ZONC 10000 1 zoncsssddd Rd + Rs + c. Les indicateurs sélectionnés sont mis àjour. SUB Rd, Rs, ZONC 000 ! 0zoncsssddd Rd Les indicateurs sélectionnés sont mis à jour. SBB Rd, Rs, ZONC 10001 1 zoncsssddd Rd Les indicateurs sélectionnés sont mis àjour. MUL Rd, Rs, ZONC 100100zoncsssddd Rd * Rs. La multiplication est effectuée sur des opérandes non signés. Les indicateurs sélectionnés sont mis àjour : 0 est levé si le produit ne peut pas être exprimé sur 16 bits. Dans ce cas, Rd contient les 16 bits de poids faible du produit. Z est levé si l'un des deux multiplicandes est nul. N contient le bit numéro 17 du produit. C contient le bit numéro 6 du produit. DIV Rd, Rs, ZONC 00 ! 01 zoncsssddd Rd div Rs. Rs mod Rs. La division est effectuée sur des opérandes non signés. En cas de division par 0, Rd et Rs sont inchangés. Les indicateurs sélectionnés sont mis à jour : O est levé en cas de division par 0. Z est levé si le quotient est nul. N est la copie du bit de poids fort du quotient. C est levé si le reste n'est pas nul. MOVE Rd, Rs, ZN 1001 fOzOn ? sssddd Rd Les indicateurs sélectionnés sont mis à jour. Les indicateurs 0 et C ne sont jamais affectés. MOVE Rd, [Rs], ZN 100 11 Oz 1 nosssddd Rd situé à l'adresse Rs (modulo la taille de la mémoire données). Les indicateurs sélectionnés sont mis à jour. Les indicateurs 0 et C ne sont jamais affectés. MOVE [Rd], Rs, ZN 00110zlnlsssddd Mot situé à l'adresse Rd (modulo la taille de la mémoire données) Les indicateurs sélectionnés sont mis à jour. Les indicateurs 0 et C ne sont jamais affectés. AND Rd, Rs, ZN 100 111 z ? n ? sssddd Rd # Rd ET logique Rs. Les indicateurs sélectionnés sont mis à jour. Les indicateurs 0 et C ne sont jamais affectés. OR Rd, Rs, ZN \ 0 \ OOOz ? n ? sssdddRd OU logique Rs. Les indicateurs sélectionnés sont mis à jour. Les indicateurs 0 et C ne sont jamais affectés. XOR Rd, Rs, ZN 01001 z ? n ? sssdddRd OU logique exclusif Rs. Les indicateurs sélectionnés sont mis à jour. Les indicateurs 0 et C ne sont jamais affectés. ASR Rd, Rs, ZNC 01010z ? ncsssddd Décalage arithmétique de Rs bits (modulo 16) vers la droite du registre Rd. Les indicateurs sélectionnés sont mis à jour. L'indicateur 0 n'est jamais affecté. L'indicateur C correspond au dernier bit sorti. ASR Rd, &num;imm, ZNC 101011 z ? nciiiddd Décalage arithmétique de (imm+1) bits vers la droite du registre Rd. Les indicateurs sélectionnés sont mis à jour. L'indicateur 0 n'est jamais affecté. L'indicateur C correspond au dernier bit sorti. LSL Rd, Rs, ZONC 01 100zoncsssddd Décalage logique de Rs bits (modulo 16) vers la gauche du registre Rd. Les indicateurs sélectionnés sont mis à jour. L'indicateur C correspond au dernier bit sorti. LSL 10 1 10 1 zonciliddd Décalage logique de (imm+ 1) bits vers la gauche du Rd, &num;imm, ZONC registre Rd. Les indicateurs sélectionnés sont mis à jour L'mdlcateur C correspond au denller btt sorti LSR Rd,Rs,ZONC 101110zoncsssddd Décalage logique de Rs bits (modulo 16) vers la droite du registre Rd. Les indicateurs sélectionnés sont mis à jour. L'indicateur C correspond au dernier bit sorti LSR 101111zonciiiddd Décalage logique de (imm+1) bits vers la droite du Rd,&num;imm,ZONC registre Rd. Les indicateurs sélectionnés sont mis à jour. L'indicateur C correspond au dernier bit sorti. Dans le codage d'une instruction de saut : 'j" désigne un bit de codage de la condition de saut, et "p"désigne un bit de codage de l'adresse relative du saut dans le programme. Instructions de rupture de séquence Jcc déplacement 11jjjjppppppppp Saut, relatif à l'instruction suivante, vers un mot du programme. Le déplacement autorisé va de-512 à +511 mots d'instructions. Les conditions de saut peuvent être les suivantes : Condition Codage Détail de la condition de saut (cc) (ÜÜ) AC 0000 Z=0 ZS 0001 Z=1 CC 0010 C=O Ceci NC 0100 N=0 NS 0101 N=l OC 0110 0=0 OS 0111 0=1 UG 1000 > (non signé) : C=0 et 2=0 ULE 1001 (non signé) : C= ou 2=1 SG 1010 > (signé) : 2=0 et N=O SGE 1011 (signé) : N=O SL 1100 (signé) : N ; toO SLE 1101 (signé) : Z=1 ou N#O NCS 1110 N=I et C=I MP 1111 Toujours 10.2.2.3 - Déroulement de l'exécution d'un programme coprocesseur Au démarrage de la machine de niveau zéro, chaque bloc "TREE" 29 est installé en mémoire. L'espace mémoire données requis pour les programmes coprocesseurs de chaque bloc"TREE" 29 est alloué, et les mots de cet espace sont initialisés avec la valeur 0. L'ensemble des programmes coprocesseurs d'un même bloc "TREE" 29 sont considérés comme étant mis bout à bout, de sorte qu'ils peuvent, si besoin, sauter vers des portions de code de programmes coprocesseurs n'appartenant pas à leur branche. Ils partagent donc le même espace mémoire programmes. Lorsqu'un programme de niveau 0.4 parcours l'arbre pour accéder à un périphérique, il doit d'abord exécuter le programme d'autorisation du noeud courant pour vérifier si le parcours est valide. Si c'est le cas, alors le programme de parcours peut être exécuté avec éventuellement un paramètre transmis par l'intermédiaire des registres RO à R7. La branche est alors considérée comme parcourue. Le processus peut se répéter sur les noeuds suivants jusqu'à atteindre une feuille de l'arbre. Pour exécuter un programme coprocesseur, le programme de niveau 0. 4 fait appel à l'émulateur t > ZD 33 du coprocesseur de périphériques 28 en lui fournissant la localisation exacte des mémoires programmes et données du programme coprocesseur. Avant passage d'un éventuel paramètre, les registres RO à R7 ainsi que les indicateurs d'état sont dans un état indéterminé à chaque nouveau démarrage d'un programme coprocesseur. Lorsque le programme coprocesseur est terminé (par rencontre de l'instruction EOP), le programme de niveau 0.4 récupère un code de terminaison dans le registre R7 (et éventuellement d'autres paramètres dans les autres registres). S'il s'agit d'un programme d'autorisation, les valeurs du code de terminaison ont la signification conventionnelle suivante : "0"signifie l'interdiction d'accès au noeud, "$FFFF"signifie une autorisation inconditionnelle, les valeurs"I"à"$FFFD"indiquent une directive d'élagage, c'est-à-dire que l'accès n'est autorisé que pour le nombre de fois spécifié, et la valeur"$FFFE"indique une directive d'élagage dont le nombre d'autorisations d'accès restant est supérieur ou égal à"$FFFE". S'il s'agit d'un programme de parcours, la valeur 0 indique un succès du parcours. Toute autre valeur indique un numéro d'erreur mis à la disposition du niveau 0.4. 10. 2.2. 4-Insertion des programmes coprocesseurs dans l'arbre Chaque programme coprocesseur est inséré dans la description binaire du noeud pour lequel il est conçu. Un programme coprocesseur ne peut être inséré que dans les noeuds de l'arbre des périphériques appartenant à un"espace"de périphérique ("espace","dimension","coordonnée" ou "intensité"). rI ne peut y avoir qu'un programme de parcours et qu'un programme d'autorisation par noeud, et chaque noeud d'un"espace"de périphérique peut contenir aucun, l'un, l'autre ou les deux programmes. L'absence d'un programme d'autorisation indique que le parcours du noeud concerné est toujours autorisé. Le noeud représentant f'espace"peut contenir en plus le programme d'interruption. Il ne peut y avoir qu'un seul programme d'interruption pour un"espace"de périphérique. L'absence d'un programme d'interruption signifie que le périphérique n'est pas capable de déclencher une interruption. 1 0. 2, 3 - Les blocs "LINK" 26 Un bloc "LINK" 26 est spécifique d'une machine supports 23 et du périphérique pour lequel il est conçu. Il est constitué de quatre sous-programmes prévus pour s'interface avec le cartographe/énumérateur 25 : un d'initialisation, un de lecture, un d'écriture et un de détection d'interruption. Les trois premiers sous-programmes doivent pouvoir être appelés depuis le cartographe/énumérateur 25, avec transmission éventuelle de paramètres lors de leur appel ou à leur retour. Le premier est chargé d'initialiser le périphérique dont il a le contrôle afin de le placer dans un état connu permettant son utilisation. Dans cet état, le périphérique est prêt à être exploité, mais ne doit en aucun cas déclencher une interruption de la machine de niveau zéro. Le second et le troisième sont chargés d'établir le lien entre le périphérique de la machine support 23 et la machine de niveau zéro. Le second renvoie une donnée provenant directement ou indirectement du périphérique à la machine de niveau zéro par l'intermédiaire du cartographe/énumérateur 25. Le troisième récupère une donnée en provenance de la machine de niveau zéro par l'intermédiaire du cartographe/énumérateur 25, et l'envoie directement ou indirectement au périphérique. Le quatrième sous-programme est installé mais désactivé par le sous-programme d'initialisation, et appelle le cartographe/énumérateur 25 en cas de déclenchement d'une interruption par le périphérique afin qu'elle soit prise en compte. Il est activé par le programme coprocesseur de parcours du noeud représentant f'espace". Un bloc "LINK" 26 doit disposer d'un protocole d'échange de données avec ses sousprogrammes, compatible avec le protocole des programmes coprocesseurs du bloc"TREE"29 associé. Tous les blocs "LINK" 26 correspondant à une machine support 23 particulière doivent suivre les même conventions d'interface avec le cartographe/énumérateur 25 (exemple : localisation et appel des quatre sous-programmes, passage des paramètres, etc.). 10.2. 4-Les blocs"TREE"29 Un"espace"de périphérique est encodé dans un bloc "TREE" 29 sous la forme d'une suite de mots 16 bits dont l'organisation reflète la hiérarchie des noeuds dans f'espace". Pour décrire cette organisation, certaines notions sont indispensables. 10. 2.4. 1 - Notions préalables à l'encodage des blocs"TREE"29 Un bloc "TREE" 29 est une succession de"champs"de données. Un champ est un groupe de mots participant à l'expression d'une même information. Tout champ de données est organisé selon un format particulier. Un mot de 16 bits seul ne permet d'exprimer que des valeurs d'amplitude limitée. Certaines valeurs incluses dans la description d'un bloc "TREE" 29 ne peuvent pas être exprimées sur 16 bits seulement. Un champ de données de taille fixe pour l'expression des valeurs n'est pas adapté car il peut s'avérer trop petit dans certains cas, ou occuper une place inutile pour représenter des valeurs faibles. Ainsi, pour concilier une occupation mémoire minimale avec une largeur de codage pouvant être importante, certaines valeurs sont encodées sous la forme d'un champ de taille variable. On parle de"codage graduel". Chaque caractéristique élémentaire correspond à une"coordonnée". Certaines caractéristiques élémentaires peuvent être classées dans des grands types physiques ou symboliques. Le type d'une caractéristique élémentaire est encodé dans le champ représentant le noeud"coordonnée" correspondant. La modélisation des périphériques conduit souvent à des ensembles de noeuds de même niveau hiérarchique (exemple :"intensités") et de même type. Plutôt que d'encoder chaque noeud individuellement, on utilise un encodage factorisant, afin d'économiser de la mémoire. On parle de"répétition de noeud". Dans certains cas, des périphériques différents modélisés séparément ont un fonctionnement interdépendant : on parle de"périphériques interdépendants". Il y a donc nécessité de présenter ces périphériques dans un même bloc "TREE" 29 pour que les programmes coprocesseurs puissent partager la même mémoire données et ainsi gérer cette interdépendance. 10.2. 4. 2-Formats des champs de base Ces champs sont fréquemment utilisés dans la description des noeuds des blocs"TREE"29. Nombres Nous distinguons deux catégories de nombres : les nombres simples et les nombres"graduels". Un nombre graduel peut prendre deux valeurs spéciales : l'infini et le nombre inconnu. Un nombre simple est une valeur positive comprise entre 0 et 65535. Il est directement encodé dans un champ SIMP d'une taille de un mot. | Valeur Champ SIMP Une valeur positive susceptible de ne pas pouvoir être encodée par un nombre simple est représentée par un nombre graduel, encodé dans un champ"GRAD"occupant plusieurs mots. Ce champ est composé d'un mot indiquant le nombre de fenêtres (i. e. le nombre de mots de 16 bits) sur lesquelles est encodée la valeur. Les mots représentant cette valeur suivent du mot de plus fort poids au mot de plus faible poids. Si le mot représentant le nombre de fenêtres vaut $FFFF, alors le nombre est considéré comme infini. De même, si ce mot vaut 0, alors le nombre est considéré comme inconnu : sa valeur est variable et peut être éventuellement déterminée par un autre moyen. Dans ces deux cas, le champ GRAD ne comporte que ce mot. Nombre de Fenêtre de Fenêtre de fenêtres poids fort poids faible Champ GRAD Programmes coprocesseurs Un programme coprocesseur est encodé dans un champ appelé"PCP". Ce champ est la succession des mots constituant le programme coprocesseur. Le mot suivant le dernier mot du programme prend la valeur réservée $6FFF, indiquant la fin du champ. 11er 2"""'mot... Dernier mot $6FFF Champ PCP'-- Le champ PCPA représente un programme d autonsatton, te champ PCPP représente un programme de parcours, et le champ"PCPI"représente un programme d'interruption. Types physiques ou symboliques Les noeuds"coordonnées"indiquent le type physique ou symbolique de la caractéristique élémentaire qu'ils représentent. Un type est encodé par une valeur conventionnelle stockée dans un champ appelé"TYP"occupant un mot de 16 bits. Les 8 bits de poids fort du mot indiquent la grande catégorie du type, les 8 bits de poids faible précisent cette catégorie. Le tableau ci-après présente le codage des catégories et sous-catégories principales. La catégorie de code 0 indique un type inconnu. Une sous-catégorie de code 0 indique que seule la catégorie est connue. Catégorie physique ou Sous-catégorie Codage symbolique Temps $0101 Espace X : horizontalement par rapport à l'observateur $0201 Y : verticalement par rapport à l'observateur $0202 Z : perpendiculaire au plan défini par X et Y $0203 AX : variation de position selon X $0211 AY : variation de position selon Y $0212 #Z variation de position selon Z $0213 Information digitale Stockage en lecture $0301 Stockage volatil en lecture/écriture $0302 Stockage non volatil en lecutre/écriture $0303 Transfert en lecture $0310 Transfert en écriture $0311 Onde électro-magnétique Ajout d'un spectre lumineux $0401 Filtrage d'un spectre lumineux $0440 Émission de rouge $0402 Émission de vert $0403 Émission de bleu $0404 Filtrage cyan $0441 Filtrage magenta $0442 Filtrage jaune $0443 Filtrage noir $0444 Vibration dans un milieu Son $0501 matériel Manipulation de matériau Ajout de matière $0601 Retrait de matière $0602 Caractère cu ! ture ! ou ASCH 7 bits $0701 symbolique UNICODE $0702 Caractéristique symbolique Code d'erreur $0801 Touches de clavier $0802 Bouton $0901 Type Champ TYP dz Identificateur d"'hyperespace" Le numéro identifiant l "'hyperespace" auquel appartient un"espace"est encodé par un champ "HYP"d'une taille de un mot. Un champ HYP prend la valeur : "$FFFF"pour f'hyperespace"des périphériques d'échange en sortie. "$8000"pour f'hyperespace"des périphériques d'échange en entrée. "0" pour l "'hyperespace" des périphériques de conservation non adressables. "I"pour l"'hyperespace"des peripheriques de conservation adressables. ? d"'hyperespace" Champ HYP yperespace" Fin de descnption d'''espace''de périphérique Le champ"FEP", d'une taille de un mot, indique la fin d'une succession de descriptions de noeuds (fin d'un champ EP). $FFFF Champ FEP / Somme de contrôle Le champ"CRC", d'une taille de un mot, représente une somme de contrôle permettant de vérifier l'intégrité d'un bloc "TREE" 29. Somme de contrôle Champ CRC---Y-i 10. 2. 4. 3-Formats des champs encodant les noeuds Les noeuds représentant un"espace", une"dimension", une"coordonnée", ou une"intensité"sont encodés dans des champs spécifiques. Chaque champ représentant un noeud débute par un champ"ENT". Un tel champ inclus un mot "RNH", suivi éventuellement d'un champ GRAD. Les trois bits de poids faible du mot RNH, appelés"NH", identifient le niveau hiérarchique du noeud. Si le bit de poids fort"R"du mot RNH est levé, alors le noeud décrit est répété. Les autres bits du mot RNH doivent être baissés. Le champ GRAD n'apparaît que si le noeud est répété. Il correspond au nombre de répétitions du champ représentant le noeud répété. OOOOOOOOOOOOONH Champ ENT représentant un noeud nonet IOOOOOOOOOOOONH GRAD 1 Champ ENT représentant un necu,,, "intensité" Format du champ NI représentant un noeud"intensité". NH = 0 dans le champ ENT. ENT PCPA PCPP Champ NI "V" "coordonnée" Format du champ NC représentant un noeud"coordonnée". NH = 1 dans le champ ENT. ENT ITYP IPCPA PCPP Champ NC "dimension" Format du champ ND représentant un noeud"dimension". NH = 2 dans le champ ENT. ENT PCPA PCPP Champ ND "espace" Format du champ NE représentant un noeud"espace". *NH = 3 dans le champ ENT. ENT HYP PCP ! PCPA PCPP Champ NE 10. 2. 4. 4-Encodage del'ensemble de '"'espace"de périphérique Les noeuds de '"'espace"de périphérique sont décrits les uns à la suite des autres, dans l'ordre de parcours de l'arbre communément appelé" en profondeur d'abord". La figure 16 présente le parcours en profondeur d'abord d'un exemple d"'espace"de périphérique. Les numéros indiquent l'ordre dans lequel les noeuds sont rencontrés. Les noeuds de"dimensions", de"coordonnées"et d'"intensités"doivent si possible être présentés selon un ordre conventionnel. La description ordonnée de l'ensemble des noeuds d'un"espace"de périphérique est un champ nommé"EP", terminé par un champ"FEP". NE (1) ND (2) NC (3) NI (4) NI (5) NI (6) NC (7) NI (8) NI (9) ND (IO) NC (II) NC (12) NC (1 3) FEP BRamp EP correspondant à l'exemple de la fig. 16 10. 2. 4. 5-Encodage d'un bloc TREE 29 Un bloc "TREE" 29 comporte un en-tête"EBT", un champ NS indiquant le nombre d''espaces" de périphériques, la description du ou des "espace (s) " de périphérique (s) interdépendant (s) EP, et enfin une somme de contrôle CRC calculée sur l'ensemble du bloc "TREE" 29, et permettant de vérifier l'intégrité des données du bloc. L'entête EBT est un champ d'une taille de un mot dont les ! bits de poids fort sont initialisés avec la valeur standard binaire 1010 1011001, permettant d'identifier un bloc "TREE" 29. Les 5 bits de poids faible contiennent l'exposant P de la puissance de 2 indiquant la taille de la mémoire données qui doit être réservée pour l'exécution des programmes coprocesseurs du bloc. Ces 5 bits peuvent prendre les valeurs 0 à $10. La valeur $1 F signifie que la mémoire données est absente. I lool lp : 1 Champ EBT Le champ NS vaut ! a ptupart du temps 1 car les périphériques interdépendants sont très peu fréquents. La valeur 0 est interdite pour NS. Le format d'un bloc "TREE" 29 est le suivant. &verbar;EBT l NS &verbar; EP &verbar;-&verbar; EP &verbar; CRC IEBT INS EP... EP CRC Bloc ! 0. 2. 5-Le cartographe/énumérateur 25 Le cartographe/énumérateur 25 fait partie, avec l'émulateur du processeur de niveau zéro et les blocs "LINK" 26, des trois modules que l'on doit obligatoirement programmer pour la machine support 23 afin d'obtenir une machine de niveau zéro fonctionnelle. La création des blocs "TREE"29 correspondant (et éventuellement des blocs"FEXT") est également à faire si les périphériques de la machine support 23 n'ont jamais été modélisés. 10. 2.5. 1-Principe de fonctionnement Le cartographe/énumérateur 25 est la base du système de gestion des périphériques de la Machine Universelle. Il établi le lien entre le registre "MER" 27 (et l'interruption de la machine 21 de niveau 0.4) d'une part et les blocs "LINK" 26 et "TREE" 29 d'autre part. Le cartographe/énumérateur 25 assure plusieurs fonctions : il installe les blocs "LINK" 26 sur la machine support 23, y compris son propre bloc "LINK" 26 permettant sa réinitialisation (par appel du sous-programme d'initialisation). Il appelle les sousprogrammes d'initialisation de ces blocs ; il met à disposition des programmes de niveau zéro quatre commandes permettant l'accès aux blocs "LINK" 26, plus une commande qui transmet le contenu des blocs "TREE" 29 disponibles sur la machine support 23 à la machine de niveau zéro ; il gère les demandes d'interruptions émises par les périphériques par l'intermédiaire des blocs "LINK"26 et les transmet à la machine de niveau zéro sur requête de cette dernière. 10.2. 5. 2 - Fonctionnement détaillé La machine de niveau zéro et le cartographe/énumérateur 25 dialoguent exclusivement par l'intermédiaire du registre"MER"27 (et du mécanisme d'interruption en niveau 0. 4). Un programme de niveau zéro doit respecter les protocoles d'utilisation des commandes, sous peine de déclencher l'exception. Lorsqu'une commande du cartographe/énumérateur 25 est en cours, elle doit d'abord être terminée pour pouvoir exécuter une autre commande. Seule l'exception peut interrompre une commande à tout moment. Lorsque le cartographe/énumérateur 25 n'exécute pas une commande, il attend un numéro de commande à exécuter et peut transmettre sur requête du programme de niveau zéro le numéro d'un périphérique ayant demandé une interruption. Lorsque le cartographe/énumérateur 25 transmet le numéro du périphérique à l'origine d'une interruption par le registre"MER"27, une interruption est déclenchée en niveau 0.4. Lorsque aucune interruption n'est en attente, le numéro transmis a pour valeur $FFFF (et aucune interruption n'est déclenchée en niveau 0.4). Les cinq commandes accessibles sont : l'initialisation du bloc "LINK" 26 sélectionné (commande 0), la sélection d'un bloc "LINK" 26 (commande 1), l'écriture d'un mot vers le bloc "LINK" 26 sélectionné (commande 2), la lecture d'un mot depuis le bloc"LINK"26 sélectionné (commande 3), et la lecture des blocs "TREE" 29 (commande 4). Sur exécution de la commande de lecture des blocs "TREE" 29, le cartographe/énumérateur 25 présente alors les blocs "TREE" 29 les uns à la suite des autres, découpés en tranches de 128 mots. Chaque tranche débute par un mot indiquant si la tranche est la première d'un bloc"TREE" 29 (code $DEBE) ou non (code $CEAB), ou bien si la dernière tranche du dernier bloc"TREE" 29 a été renvoyée (code $FEDB). Toute autre valeur pour ce mot est interdite. Le cartographe/énumérateur 25 numérote chaque bloc "TREE" 29 envoyé en partant de 1 et en z ajoutant 1 à chaque nouveau bloc "TREE" 29 envoyé. La valeur 0 désigne systématiquement le cartographe/énumérateur 25 lui-même. Au démarrage de la machine de niveau zéro, le périphérique zéro (cartographe/énumérateur 25) est sélectionné par défaut. 10. 2. 5. 3-Algorithme de fonctionnement Le cartographe/énumérateur 25 se compose de cinq sous-programmes, appelés par l'émulateur du processeur de niveau zéro ou par les blocs "LINK" 26. Initialisation : MAXPERIPH Pour chaque bloc LINK détecté (dans la limite de 32767 blocs LINK) MAXPERIPH Lis le bloc LINK Appelle le sous-programme d'initialisation du bloc LINK Si l'initialisation a échoué MAXPERIPH f- MAXPERIPH - 1 Sinon Sauvegarde l'adresse de base dans la liste des blocs LINK (située dans l'espace d'adressage de la machine support 23). Sauvegarde l'identificateur dans la liste des blocs LINK (exemple : le nom du fichier contenant le bloc LINK). Attribution d'une nouvelle adresse de base dans la mémoire de la machine support 23. NUMPERIPH Réinitialisation : ETAPE bloc "TREE" 29 ouvert par la commande 4. (Retour de sous-programme) Sauvegarde d'interruption en attente {Sous-programme appelé par les "LINK" 26 sur interrupt.} Ajout du numéro d'interruption dans la file des interruptions en attente. (Retour de sous-programme) Lecture : Si ETAPE = 0 {Attente de commande} Si une interruption est présente dans la file d'attente MER e Numéro du premier périphérique de la file d'attente des interruptions. Retirer l'interruption traitée de la file d'attente. Dans le cas d'un processeur de niveau 0.4 : saut à l'interruption Sinon MER # $FFFF Si ETAPE = 1 Si COMMANDE Saut à l'exception Si COMMANDE = 3 "MER" 27 reçoit la valeur renvoyée par le sous-programme d'entrée du"LINK"26 n NUMPERIPH ETAPE Si COMMANDE = 4 Si PREMIERE = 1 Si NUMLINK > MAXPERIPH MER # $FEDB ETAPE 0 Sinon Ouvrir le bloc "TREE" 29 associé au bloc "LINK" 26 nONUMLINK (par son identificateur) TREEOFFSET PREMIERE # 0 MER # $DEBE Sinon si TREEOFFSET = 0 TREEOFFSET # 1 MER # $CEAB Sinon MER bloc "TREE" 29 ouvert Si TREEOFFSET TREEOFFSET e TREEOFFSET + 1 Sinon Si Fin de bloc TREE Fermer le bloc TREE NUMLINK -NUMLINK + 1 PREMIERE ex Sinon TREEOFFSET 0 (retour de sous-programme) Ecriture : Si ETAPE = 0 {Attente de commande} COMMANDE # MER {Méorise le numéro de commande} Si COMMANDE > 4 {Commande inexistante} Saut à l'exception Si COMMANDE = 0 Appel au sous-programme d'initialisation du "LINK" 26 n NUMPERIPH Si COMMANDE = 4 NUMLINK # 1 {Numéro du bloc "LINK" 26 dont le bloc "TREE" 29 associé est en cours d'envoi} PREMIERE # 1 {Première tranche du bloc "TREE" 29 à envoyer} Si COMMANDE > 0 ETAPE # 1 Si ETAPE = 1 Si COMMANDE > 2 Saut à l'exception Si COMMANDE = 1 {Changer de numéro de périphérique courant} Si MER > MAXPERIPH Saut à l'exception Sinon NUMPERIPH e MER ETAPE 0 Si COMMANDE = 2 Envoi de la valeur contenue dans"MER"27 au sous-programme de sortie du "LINK" 26 nO NUMPERIPH ETAPE (retour de sous-programme) ZD 10. 3 - Fonctions évoluées sur les périphériques 10.3. !-Méthode générale d'accès aux périphériques en niveau zéro via l'arbre Pour gérer un périphérique, il faut d'abord charger en mémoire le bloc "TREE" 29 qui le représente en utilisant la commande de lecture des blocs "TREE" 29 du cartographe/énumérateur 25. On sauvegarde alors le numéro d'identification qui a été attribué au bloc par le cartographe/énumérateur 25. Il est ensuite possible d'analyser la structure du ou des arbres inclus dans le bloc "TREE" 29 ou encore de se reporter au bloc"FEXT"pour déterminer le type de fonction que réalise le périphérique. Lorsqu'on a identifié le périphérique réalisant la fonction souhaitée, on peut alors l'utiliser. Selon f'hyperespace"auquel appartient f'espace"décrivant le périphérique, les opérations permises sont différentes : dans le cas d'un"hyperespace"d'échange en sortie, on ne peut qu'envoyer des données au périphérique, dans le cas d'un"hyperespace"d'échange en entrée, on ne peut que recevoir des données depuis le périphérique, dans le cas d'un"hyperespace"de conservation adressable, aucune opération n'est permise puisque le périphérique est directement accessible par t'espace d'adressage de la machine ; Dans ce cas, f'espace"de ce périphérique n'est là que pour indiquer les caractéristiques du périphérique, et dans le cas d'un"hyperespace"de conservation non adressable, les opérations permises peuvent être l'envoi et/ou la réception de données. 10.3. 1. 1-Envoi de données vers un périphérique par parcours de l'arbre L'envoi de données est réalisé par parcours de l'arbre selon les données que le programmeur souhaite transmettre au périphérique. Les programmes coprocesseurs de chaque noeud sont chargés de convertir chaque étape du parcours en données de configuration et d'exploitation correctes transmises au périphérique. Le processus d'envoi consiste d'abord à repérer le noeud d"'espace"à la base de l'arbre. Le programme coprocesseur d'autorisation doit être exécuté. Si l'autorisation est donnée, alors on exécute le programme de parcours du noeud. On cherche ensuite les noeuds de"dimension" rattachés à ce noeud d"'espace", et on applique la même procédure au noeud de"dimension" choisi. Le processus se poursuit, et se termine lorsque le programme coprocesseur d'un noeud d'''intensité''a été exécuté : faction correspondante au parcours de l'arbre a été effectuée. 10. 3. 1. 2 - Réception de données depuis un périphérique par parcours de l'arbre La réception des données est réalisée par parcours de l'arbre selon les directives retournées par les programmes coprocesseurs de chaque noeud. Certains noeuds contiennent des programmes chargés de demander au périphérique les données d'exploitation : ils les convertissent en un parcours cohérent de l'arborescence aboutissant à un noeud d'"intensité" représentant la valeur reçue. Le parcours d'autres noeuds permet de mémoriser d'éventuels paramètres afin de sélectionner une donnée d'exploitation lorsque plusieurs sont proposées (exemple : choisir un pixel particulier dans une image provenant d'une caméra vidéo numérique). Le processus de réception consiste d'abord à repérer le noeud d'''espace''à la base de l'arbre. Le programme coprocesseur d'autorisation doit être exécuté. Si l'autorisation est accordée, on lit une donnée renvoyée par ce programme, identifiant le rôle du noeud. Si t'en souhaite lire une donnée parmi un ensemble, on parcourt d'abord les noeuds permettant de mémoriser les paramètres de localisation de cette donnée (exemple : choisir les positions horizontale et verticale d'un pixel). Une fois l'éventuelle localisation effectuée, on parcourt les noeuds permettant d'être guidé vers le noeud d''intensité"correspondant à la valeur reçue depuis ! e périphérique. 10. 3. 2-Exemples de séquences d'instructions 0.4 émulant les instructions du coprocesseur 28 Le processeur de niveau 0.4 est chargé d'émuler les instructions du coprocesseur de périphériques 28. Cette émulation est réalisée par un programme complet, dont on ne présente ici que quelques séquences reproduisant certaines opérations. Pour les séquences d'instructions suivantes, on considère que : les plages d'adresses $100 à $IFF contiennent les valeurs allant de $FFOO à $FFFF, les plages d'adresses $200 à $2FF contiennent les valeurs allant de $0000 à $OOFF, les plages d'adresses $300 à $3FF contiennent les valeurs allant de $OOFF à $FFFF, par incréments de $100, Rd et Rs sont des adresses contenant les opérandes Rd et Rs tels qu'ils ont été décrits pour les instructions du coprocesseur 28, et tmp et tmp2 sont deux adresses de mémoire réinscriptible quelconques. 10.3. 2. 1-Séquence reproduisant le OU logique AND $200 SBB Rd ST tmp ANDR SBB $201 AND Rs SBBtmp ST Rd (A ce stade la retenue est indéfinie. Une instruction"AND R"peut être insérée pour l'effacer) 10.3. 2. 2-Séquence reproduisant le OU logique exclusif AND $200 SBB Rd STmtp AND R SBB AND Rs SBBtmp ST tmp LD Rd AND Rs ST tmp2 LD $1 FF SBB tmp2 AND tmp ST Rd (A ce stade la retenue est annulée) 10.3. 2. 3-Séquence reproduisant le chargement d'une valeur immédiate dans un registre On considère le chargement d'une valeur immédiate positive $0ijk (j et k étant des chiffres hexadécimaux quelconques, i étant un chiffre hexadécimal valant 0 ou 1). LD $30i AND$ ! jk ST Rd (A ce stade la retenue est annulée) 10. 3. 2. 4-Séquence reproduisant la sauvegarde d'un registre vers la mémoire On considère une adresse mémoire quelconque de valeur binaire % abcdefghij. On considère que le registre MP contient l'adresse du dernier mot de t'espace d'adressage du coprocesseur 28, et que cet espace d'adressage est aligné sur une page de 8 Kmots en mémoire de niveau zéro. LD Rs ST & % 000abcdefghij (La retenue reste inchangée) 10.3. 2. 5-Séquence reproduisant l'addition sans retenue AND $200 SBB Rd ST tmp AND R LD Rs SBBtmp ST Rd (A ce stade la retenue est indéterminée) 10. 3. 2. 6-Séquence reproduisant la soustraction sans retenue AND R LD Rd SBB Rs ST Rd (A ce stade la retenue est positionnée selon le résultat de la soustraction) 10.3. 2. 7-Séquences reproduisant la mise à jour des indicateurs d'état (N, Z, 0 et C) Chaque indicateur est sauvegardé en mémoire de niveau zéro dans un mot dont la valeur 0 signifie que l'indicateur est baissé, et dont la valeur $FFFF signifie qu'il est levé. Les adresses contenant les indicateurs N, Z, 0 et C sont nommées NCOP, ZCOP, OCOP, et CCOP respectivement. On nomme"res"l'adresse contenant le résultat de la dernière opération. En sortie la retenue est positionnée selon la valeur de l'indicateur qui a été calculée. Mise à jour de l'indicateur N (Si la retenue n'est pas annulée : AND R) LD $37F SBB res SBB R ST NCOP Mise à jour de l'indicateur Z AND $200 SBB res SBB R SBB $l FE SBB R ST ZCOP Mise à jour de l'indicateur 0 L'algorithme de mise à jour de l'indicateur 0 est différent selon les instructions. On donne ici l'exemple de la mise à jour de l'indicateur 0 dans l'instruction de soustraction sans retenue. LDRs AND $37F ST tmp LD Rd AND $37F SBB tmp SBB R ST tmp AND R LD Rd SBB Rs ST Rd SBB R (ST CCOP si l'indicateur C doit être également mis à jour) AND R SBB tmp ST tmp AND $200 SBB tmp SBB R ST OCOP Mise à jour de l'indicateur C L'algorithme de mise à jour de l'indicateur C est différent selon les instructions. On donne ici deux exemples. Exemple de la mise à jour au cours de l'instruction de soustraction sans retenue : AND R LD Rd SBB Rs STRd SBB R ST CCOP Exemple de la mise à jour au cours de l'instruction d'addition sans retenue : AND $200 SBB Rd ST tmp SBB R SBB $200 ST tmp2 LD Rs SBBtmp ST Rd SBB R SBB tmp2 SBB R ST CCOP 10. 3. 3-Contenu des blocs"FEXT" Un bloc"FEXT"contient un ensemble d'informations optionnelles qui viennent compléter celles fournies par le bloc "TREE" 29 associé. Un bloc"FEXT"peut contenir un ou plusieurs des éléments suivants : les données de modélisation réelle fournissent des équations ou d'autres types d'informations définissant précisément les relations physiques, symboliques et logiques que les branches de l'arbre des périphériques entretiennent entre elles et avec le monde réel, des données dites"de modélisation perceptive", fournissant des équations ou d'autres types d'informations définissant précisément les relations physiques entre la limite physique d'interaction du périphérique avec le monde extérieur et l'émetteur/destinataire de l'information. Par exemple, on peut souhaiter modéliser la façon dont un être humain valide, ou au contraire ayant des problèmes oculaires, perçoit les couleurs produites par un écran, et un programme coprocesseur spécifique, nommé"programme de parcours rapide", venant remplacer les programmes coprocesseurs de certains noeuds du bloc "TREE" 29 associé. Ce programme permet d'accéder au périphérique de manière optimisée en termes de vitesse selon un parcours de l'arbre prédéfini et invariable qui doit être explicité dans le bloc"FEXT". 10.3. 4-Auto-adaptation des périphériques 10. 3.4. !-Définition et utilisations Pour un périphérique"A"donné, non disponible sur la machine support 23, l'auto-adaptation de la Machine Universelle est un mécanisme logiciel qui permet : d'une part de trouver le périphérique"B"disponible sur la machine support 23 et remplissant la fonction la plus proche possible de celle du périphérique A, d'autre part d'adapter le flux de données initialement traité par le périphérique A en un flux de données différent, traité par le périphérique B, et qui donnera un résultat le plus proche possible de ce qu'il aurait été s'il avait été directement traité par le périphérique A. Le procédé d'auto-adaptation repose sur une philosophie contraire à celle usuellement retenue pour la gestion des périphériques : c'est la machine qui se plie aux exigences du programmeur. Ce dernier propose un type de périphérique avec un format précis de données d'exploitation et la machine lui donne accès au périphérique le plus proche possible de sa demande, si besoin en adaptant" à la volée" les flux de données échangés. En cas de changement imprévu de l'état d'un périphérique (panne, arrêt) la machine peut rechercher automatiquement un moyen de rediriger l'information vers ou depuis le périphérique le plus proche. Il y a donc adaptation automatique de la machine virtuelle à l'environnement matériel. 10.3. 4. 2-Principe de fonctionnement On commence par analyser la structure de f'espace"décrivant le périphérique A, notamment f'hyperespace"auquel il est rattaché, ainsi que le nombre et le type des noeuds de"dimension", de"coordonnée"et d"'intensité". On parcours alors tous les "espaces" de périphériques disponibles et on cherche celui ayant la structure arborescente la plus proche. L'évaluation de la proximité de deux structures arborescentes repose sur des algorithmes de comparaison d'abord très sélectifs (une structure strictement identique est recherchée) avec attribution d'un ou plusieurs coefficients exprimant la similarité entre chaque"espace"de périphérique analysé et f'espace"du périphérique A. La tolérance de ces algorithmes est ensuite modulée en établissant une priorité de certains paramètres sur d'autres, et en permettant de regrouper ou d'ignorer certains paramètres considérés comme contribuant peu à la fonction du périphérique. Au final, f'espace"du périphérique B présentant les coefficients de similarité les plus forts avec l'l'espace" du périphérique A est retenu. Lorsque l"'espace"A (source) et 1"'espacez (destination) sont connus, un algorithme de conversion est généré, afin de prendre les directives de parcours de l'arbre de 1"'espacez et de les convertir au mieux en directives de parcours de l'arbre de f'espace"B. Cet algorithme est élaboré à partir du nombre et du type des noeuds de chaque"espace", et des regroupements ou priorités établis lors de la recherche de similitude. Il se base aussi sur les blocs"FEXT"ainsi que sur une base de données répertoriant des algorithmes standards permettant les conversions entre différents types physiques et symboliques. 10. 3.4. 3-Programme chargé de ces opérations Le mécanisme d'auto-adaptation est mis en oeuvre par un programme chargé d'effectuer les opérations de comparaison et de conversion entre périphériques. Ce programme est appelé " éclaireur" (ou" pathfinder "), Il est écrit pour un niveau donné de la Machine Universelle et ne fonctionne pas de façon autonome pour ce niveau : ce sont les autres programmes du niveau qui devront y faire appel en cas de besoin. Les programmes écrits pour un niveau supérieur utiliseront ces fonctionnalités de façon transparente, si l'émulateur de ce niveau supérieur utilise l'éclaireur pour la gestion des périphériques. Ce programme est la partie la plus complexe de la gestion des périphériques, mais sa présence n'est absolument pas indispensable pour pouvoir exploiter les périphériques. Toutes les applications n'ont en effet pas besoin d'une auto-adaptation des périphériques. Lorsqu'une application a besoin d'un périphérique remplissant une fonction particulière et qu'elle ne souhaite pas le rechercher par elle même (ou bien qu'elle ne trouve pas de périphérique correspondant à ses besoins), elle peut alors appeler l'éclaireur en lui transmettant le profil du périphérique recherché. L'éclaireur se charge de trouver le meilleur périphérique et devient l'interlocuteur exclusif de l'application pour toutes ses transmissions avec le périphérique. 10. 3. 5-Définition des zones réservées de l'espace d'adressage de niveau 0.4 Le tableau suivant présente les champs de données associés aux plages d'adresses qui leur sont réservées. Plages d'adresses réservées Champs de données (notées en hexadécimal) 0000 Fenêtre 0 de l'adresse de retour d'interruption ou d'exception 0001 - 003F Programme de gestion de l'interruption 0040-007F Variables 0080-008F Adresse maximale adressable (au format"big endian"), dans la limite de 16 fenêtres 0090-009F Adresse de retour d'interruption ou éventuellement d'exception (au format Il big endian "), dans la limite de 16 fenêtres 00A0 Valeur maximale autorisée pour MPS et IPS OOA)-OOBFRéservé OOCO-OOFF Indicateurs d'état du système 0100 - 01 FF Valeurs $FF00 à $FFFF par incréments de 1 0200 - 02FF Valeurs $0000 à $00FF par incréments de 1 0300 - 03FF Valeurs $00FF à $FFFF par incréments de $100 Les innovations apportées par la Machine Universelle permettent d'envisager de multiples applications industrielles. Ce document en présente quelques unes. !)-Exemptes d'applications de la Machine Universelle dans son ensemble L'architecture de la Machine Universelle repose sur une base très simple. Elle permet d'élaborer des programmes d'une complexité quelconque qui pourront fonctionner sur n'importe quelle machine support 23, moyennant un effort de programmation minimal. Les programmes peuvent c donc être considérés comme réalisés une fois pour toutes. Ainsi, un logiciel de jeu ou un système d'exploitation n'est programmé qu'une seule fois, et sera converti en quelques jours sur tout type de machine support 23. La rapidité et la facilité de conversion sont particulièrement utiles pour des groupes de machines qui ne sont pas encore totalement standardisées et uniformisées. On peut citer notamment les assistants personnels numériques (en anglais"PDA"pour"personal digital assistant"), les téléphones mobiles, ou encore les cartes à puce. 12-Exemples d'applications de certains niveaux de la Machine Universelle, directement exploités (sans se baser sur les niveaux inférieurs) 12. 1-Niveau 0.2 Grâce à son extrême simplicité, le processeur de niveau 0.2 peut être fondu sous la forme d'un microprocesseur de taille très réduite. Dans ce cas, il peut convenir à des applications nécessitant une miniaturisation extrême, une bonne fiabilité du fonctionnement électronique, une faible consommation d'énergie et n'ayant pas besoin de beaucoup de puissance de calcul. C'est par exemple le cas de certaines applications médicales : on pourrait imaginer faire tenir un processeur 0. 2 accompagné d'un ou plusieurs dispositifs mécaniques miniaturisés (capteur, ZD pompe avec réservoir, électrodes,...) dans un volume suffisamment réduit pour être implanté dans le corps humain. Par exemple, chez des malades, ces machines miniatures pourraient libérer des substances pharmaceutiques selon la teneur dans le sang d'un composé quelconque. Une autre application serait la création de neurones artificiels, implantés dans le cerveau, palliant à certaines déficiences neurologiques : un processeur 0.2 peut simuler un ensemble de neurones. Dans d'autres domaines l'intérêt d'un processeur 0.2 est différent. C'est le cas des applications en milieu extrême : au lieu de privilégier la miniaturisation, la simplicité du niveau 0.2 permet de le fondre sous la forme d'un"macro"processeur, c'est-à-dire un processeur disposant de circuits électriques très grossiers. Ce processeur, tout en restant de taille raisonnable (de l'ordre de la taille d'un processeur actuel très complexe) serait très tolérant aux perturbations induites par les rayons cosmiques, les variations extrêmes de températures ou les contraintes mécaniques. L'aérospatiale et l'aéronautique sont des exemples de domaines d'applications. D'autres applications sont possibles dans le domaine des"ordinateurs vestimentaires" (wearable computers, c'est à dire des ordinateurs incorporés dans des vêtements pour mieux s'intégrer dans la vie quotidienne de l'utilisateur). Un processeur 0.2 fondu sur une base isolante souple pourrait être intégré à faible coût aux vêtements, et résister à une utilisation courante (déformation, froid, humidité, chocs, etc.). Enfin, la miniaturisation extrême d'un processeur de niveau 0. 2 permettrait de libérer de la place sur les surfaces de silicium pour d'autres composants électroniques, notamment pour de la mémoire. Cela serait intéressant pour les cartes à puce dont la mémoire peut être limitée par la taille du processeur. 12. 2-Niveau 0.4 La simplicité du niveau 0.2 a pour conséquence une lenteur d'exécution des programmes qui peut rendre quasi-inutilisable les applications complexes à cause des temps de calculs inappropriés. Le niveau 0.4 se présente comme un meilleur compromis entre la rapidité et la simplicité. Le supplément de complexité est minime par rapport au niveau 0.2 de sorte que les applications industrielles envisageables sont très proches. La vitesse d'exécution des programmes est cependant environ 100 fois plus rapide. Ainsi des programmes très complexes sont exécutés dans des délais raisonnables. 12. 3 - Niveau 1 La simplicité des niveaux 0.2 et 0.4 rend leur utilisation directe difficile. D'autre part le niveau 0.4 reste d'une lenteur relative qui peut être inadaptée à certaines applications. Le niveau 1 est d'un niveau de complexité intermédiaire. Il est capable d'exécuter des applications de haut niveau avec une faible perte d'efficacité par rapport à leur exécution directe sur la machine support 23. Ce niveau convient donc à la plupart des applications courantes d'un micro- ordinateur (applications graphiques, sonores, bureautiques, etc.). z : l Le niveau 1 représente le meilleur compromis entre simplicité de conception et rapidité d'exécution. 11 requiert cependant une machine support 23 ayant des capacités suffisantes pour l'accueillir, et n'est donc pas toujours adapté à certaines machines support aux capacités très limitées. De plus, le temps nécessaire pour réaliser une machine matérielle ou logicielle de niveau 1 peut être relativement long comparé à l'utilisation que t'en va en faire. C'est pourquoi ce niveau convient pour des machines largement diffusées et qui ne seront pas obsolètes trop rapidement. 12. 4-Machine 31 de niveau 2 La plupart du temps, il n'est pas utile de réaliser directement une implémentation de ce niveau. En effet, la réalisation d'une machine matérielle ou logicielle de niveau 2 demande un investissement de travail conséquent, alors que son émulation par le niveau 1 n'entraîne qu'une perte négligeable d'efficacité. Cependant, l'utilisation directe de ce niveau peut s'avérer intéressante, par exemple pour le calcul intensif. En effet, la masse de calculs nécessaires démultiplie le nombre d'opérations à exécuter. La perte de temps, négligeable lors de l'émulation de ce niveau par le niveau 1, peut alors devenir importante. On peut citer comme exemple le calcul scientifique, le calcul d'images de synthèse, l'intelligence artificielle, ou la compression en temps réel de données vidéo. REVENDICATIONS 1. Dispositif de traitement d'information, caractérisé par : des machines virtuelles imbriquées (20, 21, 30, 31), c'est-à-dire qu'une machine est émulée par une autre, hiérarchiquement de la plus simple à la plus complexe, c'est-à-dire qu'une machine donnée émule totalement une autre machine plus compliquée et élaborée, chaque machine virtuelle ayant une architecture originale, c'est-à-dire se différenciant de l'architecture des autres machines de la hiérarchie de machines virtuelles, chaque machine virtuelle étant adaptée à exécuter un programme d'émulation ou de compilation dynamique simulant l'architecture virtuelle plus complexe de niveau immédiatement supérieur, une machine virtuelle d'un niveau donné dans la hiérarchie possédant donc une architecture plus simple que celles de toutes les machines virtuelles de niveau supérieur ; les langages machines des deux niveaux de machines virtuelles les plus bas de la hiérarchie (20,21) sont spécifiquement conçus pour permettre l'exécution de toutes les opérations du niveau supérieur ; un niveau de la hiérarchie, constituant le sommet de la hiérarchie, n'émule aucun autre niveau de la hiérarchie ; et tout niveau de la hiérarchie peut être lié à une machine réelle généraliste (la machine support 23) au moyen d'un programme exécutable d'émulation ou de compilation dynamique spécifique à cette machine réelle. 2. Dispositif selon la revendication I, caractérisé en ce que le langage machine de la machine virtuelle à la base de toute la hiérarchie (20) ne comporte que deux opérations élémentaires. 3. Dispositif selon l'une quelconque des revendications 1 ou 2, caractérisé en ce que les deux instructions de la machine virtuelle de plus bas niveau sont une soustraction et une sauvegarde en mémoire. 4. Dispositif selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le langage machine de la machine virtuelle de niveau immédiatement supérieur (21) à la machine virtuelle à la base de toute la hiérarchie comporte quatre opérations élémentaires. 5. Dispositif selon la revendication I, caractérisé en ce que le langage machine de la machine virtuelle à la base de toute la hiérarchie (21) ne comporte que quatre opérations élémentaires. 6. Dispositif selon l'une quelconque des revendications 4 ou 5, caractérisé en ce que lesdites quatre instructions sont une soustraction, une sauvegarde en mémoire, une fonction logique booléenne et un chargement depuis la mémoire. 7. Dispositif selon la revendication 6, caractérisé en ce que la fonction logique booléenne est l'une des fonctions"et"ou"ou". 8. Dispositif selon l'une quelconque des revendications 1 à 7, caractérisé en ce qu'il met en oeuvre une arborescence de représentations de périphériques, arborescence dans laquelle un périphérique est appréhendé en suivant un cheminement partant de la racine de l'arborescence et passant par au moins une feuille, l'information nécessaire pour commander ledit périphérique étant collectée au cours dudit cheminement, au moins à chaque feuille de l'arborescence rencontrée. 9. Dispositif selon l'une quelconque des revendications 1 à 8, caractérisé en ce qu'un espace mémoire infini est géré en utilisant des adresses comportant une information de longueur de l'adresse et une information de valeur de ladite adresse. 10. Dispositif selon l'une quelconque des revendications 1 à 9, caractérisé en ce qu'il met en oeuvre au moins trois machines virtuelles imbriquées hiérarchiquement de la plus simple à la plus complexe.