Le projet Tortola : vers une symbiose entre matériel et logiciel

Restez toujours informé : suivez-nous sur Google (☆)

Les ordinateurs sont toujours de plus en plus petits et de plus en plus rapides. Naturellement, la complexité du travail de leurs concepteurs s’en trouve sans cesse augmentée. Des informaticiens de l'université de Virginie viennent cependant de présenter un concept nouveau qui pourrait révolutionner la conception de ces machines. Les chercheurs ont développé Tortola, une interface virtuelle qui permet au matériel et au logiciel de communiquer et de résoudre conjointement d’éventuels problèmes.

Cette nouvelle approche devrait pouvoir être utilisée pour obtenir de meilleures performances de systèmes spécifiques et trouver des applications en termes de sécurité ou de réduction de la consommation d’énergie. IBM et Intel seraient prêts à faciliter sa prochaine commercialisation.

Schéma de principe d’une couche virtuelle entre matériel (HW) et logiciel (SW)

Les ingénieurs tentent depuis longtemps d’optimiser les systèmes informatiques en se basant sur des solutions matérielles, mais selon Kim Hazelwood, professeur assistant d'informatique et leader du projet, l'optimisation de cette seule couche est limitée. La scientifique fait remarquer que, traditionnellement, l’interface entre le matériel et le logiciel est établie une fois pour toutes. "Nous nous sommes attachés à modifier cette situation en élaborant un logiciel capable de communiquer entre les deux couches", indique-t-elle.

Tortola est une couche intermédiaire entre le matériel et le logiciel permettant une résolution coopérative des problèmes. "Cette couche doit permettre au logiciel de s'adapter au matériel sur lequel il s’exécute, ce que les ingénieurs ne savaient pas faire dans le passé", ajoute la scientifique. "Nous pourrions utiliser ce logiciel pour cacher les imperfections du matériel, ce qui permettrait aux concepteurs de lancer des produits plus rapidement parce que les problèmes pourraient être résolus plus tard", explique-t-elle.

Les concepteurs de systèmes informatiques modernes doivent prendre en compte beaucoup plus de facteurs que la performance pure. La puissance consommée, le dégagement de chaleur, la fiabilité, les tests et la sécurité sont désormais des éléments de premier plan. Jusque récemment, la grande majorité des efforts de recherches dans l’optimisation des systèmes informatiques ne ciblait qu’un seul niveau logique à la fois : le code applicatif, les systèmes d'exploitation, les machines virtuelles, la microarchitecture, ou les circuits.

Cependant, selon les auteurs du projet Tortola, les limites des solutions sont vite atteintes de cette façon. Il existe actuellement un nombre important de défis informatiques qui demandent des approches beaucoup plus holistiques (1). Le projet Tortola explore les rapports symbiotiques entre une machine virtuelle et la microarchitecture qui l’accueille afin de permettre de résoudre les futurs défis dans les domaines de la puissance, de la fiabilité, de la sécurité, et des performances.

(1) holisme : Théorie selon laquelle on doit toujours considérer un énoncé à caractère scientifique relativement à l'environnement dans lequel il se manifeste.

Pour en savoir plus sur le projet Tortola : lien (en anglais)

GO
gomodo

La solution java permet déjà de réaliser des programmes indépendemment du matériel au travers d'une machine virtuelle.

J'ai du mal a comprendre ce que ce projet apporte de plus.

avatar
Maulus

et encore une couche de plus...
c'est simpa pour les coders.. merci :grrr:

avatar
bwergl

ce que je comprend pas moi, c'est pourquoi on se base pas sur l'existant.
par exemple avec .NET il ya un systeme de securité quasi complet intégré et géré par .NET alors que cette sécurité devrait être à mon sens gérée par l'OS, au niveau global. exit les machines virtuelles qui ont tout les droits et dont les applications virtuelles peuvent beneficier a l'insu de l'utilisateur.

exemple: telle ou telle application a un droit d'acces a internet ou non, peut explorer autre chose que son propre répertoire "oui/non", etc... et pour pousser le tout, avoir la possibilité d'executer des applications dans des vraies machines virtuelles temporaires ou non.

pour le codage, toutes les compils devraient etre en assembleur hautement optimisé pour un systeme de base. et si machine virtuelle il devait y avoir, alors a sa charge de considerer l'opcode asm comme du code virtuel a executer par une machine virtuelle (un emulateur donc) la lib java n'est d'ailleurs rien d'autre qu'un emulateur qui s'emule elle meme grosso modo, cad de la daube en boite.

par ailleurs, conceptuellement, un langage digne de ce nom devrait permettre de se refaire lui meme sans degradation de perfs. exemple: si je construis un nouveau langage (toto basic) avec visual basic, mon nouveau langage toto basic devra me permettre de reecrire le langage toto basic sans perte de perf (et sans passer par un autre language intermediaire). et a mes yeux, ce n'est que par la qu'on peut estimer qu'un language merite vraiment le nom de language (comme une langue parlée). impossible en java de reprogrammer java ou une machine virtuelle sans degradation monstrueuse des perfs (je sais meme pas si c'est possible meme avec une perte de perfs ceci dit ce qui en dit long sur la capacité du language n'est ce pas) idem pour vb, etc...

donc moi aussi peut etre pas pour les meme raisons mais je suis resolument contre. je prefererais qu'on optimise l'existant. en plus au niveau securité c'est comme tenter de boucher des trous potentiels avec d'autres trous potentiels. la philosophie est la, si on est pas capable d'optimiser cela signifie qu'on ne s'occupe pas de l'existant (qu'il est mis de coté, qu'on ne le regarde pas) et qu'on se repose sur le a venir pour cacher des defauts avec des pseudos qualités.

par contre, pouvoir deleguer au processeur ou a un adjoint des taches complexes de calculs et de manipulations de données c'est forcement interessant.

avatar
Maulus

l'idée c'est peut etre aussi de rendre le logiciel moins dépendant du matériel.
m'enfin, j'y crois pas vraiment, et pour les cas ou c'est vraiment utile, genre modem, carte son, carte graphique, enfin les périf standard, sa se fait déjà alors...
combien de fois j'ai fait marcher une care son avec un driver qui n'était pas celui d'origine... c'est lié à la complexité du matos aussi mais bon.. même

avatar
bwergl

a mon avis tout ca c'est pour integrer plus ou moins naturellement des choses au niveau materiel comme la gestion des drm et des systeme prise de controle a distance qu'on ne peut pas trafiquer sans taper dans l'electronique

avatar
gux

En tout cas j'espère que cela va juste pour le sistème d'exploitation/machine virtuelle? Car une autre couche! Plus de complexité, donc ça ne sera pas plus de travail et plus de possibilités pour que quelque chose marche mal? Je suis sceptique. Et même qu'est qui arrive quand la plataforme cible n'a pas Tortola ... c'est optionnel?

avatar
bwergl

ca sera optionnel si ils ouvrent les specs et jouent la transparence, ce qui m'etonnerait. un avantage de ce type d'archi, mais je connais pas tres bien pour en parler comme il faut, c'est de pouvoir mettre en place un coté "supervision" de l'OS, etc.

j'ai lu recemment qu'il ya de nouveaux virus en circulation qui agissent en tant que machine virtuelle au niveau hard. c'est a dire qu'il doit y a avoir une faille "normale" qui permet de transposer l'OS dans une machine virtuelle. le virus arrive a prendre le niveau max de privilege coté hardware et devient superviseur de l'OS. sans avoir besoin d'infecter le moindre fichier.

l'auteur de ce virus est une jeune chercheuse polonaise en securité dont on peut avoir des infos sur ce fameux virus ici http://theinvisiblethings.blogspot.com/

avatar
Maulus

haha un "ver couche"
pas mal :D

EU
euh

L'article est assez flou. Le site de Tortola donne plus de détails sur le fonctionnement du système, comme cet exemple beaucoup plus parlant:

We have demonstrated the effectiveness of our approach on the well-known dI/dt problem. The dI/dt problem is a side-effect of modern techniques in low-power processor design. In order to reduce overall power consumption, idle portions of a processor are turned off. If one feature is repeatedly turned on and off, reliability problems can arise. While hardware solutions have been proposed to detect and react to these problematic current variations, they do so at a performance cost to the running application. By simply communicating that information to the virtual machine in real time, we were able to apply standard compiler optimizations (loop unrolling and software pipelining) to remedy future recurrences of the problem using binary code transformations. We were therefore able to provide the safety of the hardware-only technique with the performance improvements possible from a software-only technique.

Tortola serait donc, si j'ai bien compris, une machine virtuelle qui effectue de façon transparente des optimisations de code en temps réel sur des programmes en cours d'exécution, de façon à l'optimiser par rapport au matériel.
Ces optimisations dites dynamiques porteraient sur des exécutables en cours d'exécution (du code langage machine stocké en mémoire vive), donc par exemple pour le java (bien que le java soit un peu en dehors de la course à la performance :siffle: ), c'est la machine virtuelle java qui serait optimisée et non le programme java lui-même !
L'efficacité réelle d'une telle application est peut-être discutable, et espérons que ça ne sera pas le prétexte à des constructeurs pour mettre sur le marché du matériel foireux, mais que celui qui n'a jamais été interrompu dans un jeu pour cause de surchauffe lui jette la première pierre