"Il est plus facile de répondre que de garder le silence" - une grande interview avec le père de la mémoire transactionnelle, Maurice Herlichi


Maurice Herlichi est lauréat de deux prix Dijkstra . Le premier concerne les travaux sur la synchronisation sans attente (Brown University) et le second, plus récent, est Transactional Memory: Architectural Support for Lock-Free Data Structures (Virginia Tech University). Le prix Dijkstra est décerné pour des œuvres dont la signification et l'influence sont visibles depuis au moins dix ans et, évidemment, Maurice est l'un des spécialistes les plus célèbres du domaine. Il travaille actuellement en tant que professeur à l'Université Brown et a de nombreuses réalisations pour un paragraphe entier. Il est actuellement engagé dans la recherche sur la blockchain dans le contexte de l'informatique distribuée classique.


Plus tôt, Maurice est venu en Russie au SPTCC ( vidéo ) et a fait une excellente réunion de la communauté des développeurs Java JUG.ru à Saint-Pétersbourg ( vidéo ).


Cet habrapost est une grande interview de Maurice Herlihy. Il aborde les sujets suivants:


  • L'interaction de la sphère académique et de l'industrie;
  • La base de la recherche sur la blockchain;
  • D'où viennent les idées révolutionnaires. Influence de la popularité;
  • PhD dirigé par Barbara Liskov;
  • Le monde attend le multicœur;
  • Vers le nouveau monde - de nouveaux problèmes. NVM, NUMA et architecture de piratage;
  • Compilateurs contre les processeurs, RISC vs CISC, mémoire partagée vs passage de messages;
  • L'art d'écrire du code multi-thread fragile;
  • Comment enseigner aux élèves à écrire du code multi-thread complexe;
  • Nouvelle édition de The Art of Multiprocessor Programming;
  • Comment la mémoire transactionnelle a été inventée;
  • Pourquoi cela vaut-il la peine de mener des recherches dans le domaine de l'informatique distribuée;
  • Le développement d'algorithmes s'est-il arrêté et comment continuer à vivre?
  • Travailler à l'Université Brown;
  • La différence entre la recherche à l'université et au sein de l'entreprise;
  • Hydra et SPTDC.

Entretiens réalisés par:


Vitaly Aksyonov est actuellement un post-dock à IST Autriche et un employé du Département de technologie informatique de l'Université ITMO. Engagé dans la recherche sur la théorie et la pratique des structures de données compétitives. Avant de rejoindre IST, il a obtenu un doctorat de l'Université de Paris Didro et de l'Université de l'ITMO sous la direction du professeur Peter Kuznetsov.


Alexey Fedorov est producteur chez JUG Ru Group, une société russe qui organise des conférences pour les développeurs. Alexey a participé à la préparation de plus de 50 conférences, et dans son curriculum vitae il y a quelque chose de la position d'un ingénieur de développement chez Oracle (JCK, Java Platform Group), et se terminant avec la position de devrell à Odnoklassniki.


Vladimir Sitnikov est ingénieur chez Netcracker. Depuis dix ans, il travaille sur les performances et l'évolutivité de NetCracker OS, un logiciel utilisé par les opérateurs télécoms pour automatiser les processus de gestion des réseaux et des équipements réseaux. Il s'intéresse aux problèmes de performances Java et Oracle Database. L'auteur de plus d'une douzaine d'améliorations des performances du pilote JDBC PostgreSQL officiel.


L'interaction de la sphère académique et de l'industrie


Alexei: Moris, vous travaillez dans le milieu universitaire depuis très longtemps et la première question est l'interaction entre les domaines académiques et industriels. Pourriez-vous nous dire comment les interactions entre eux ont changé récemment? Que s'est-il passé il y a 20-30 ans et que se passe-t-il maintenant?


Maurice: J'ai toujours essayé de travailler en étroite collaboration avec des sociétés commerciales, car elles ont des tâches intéressantes. En règle générale, ils ne sont pas très intéressés par la publication des résultats obtenus ou par des explications détaillées de leurs problèmes à la communauté mondiale. Ils sont uniquement intéressés à résoudre ces problèmes. J'ai travaillé quelque temps dans de telles entreprises. J'ai passé cinq ans à travailler à temps plein dans un laboratoire de recherche de Digital Equipment Corporation, qui était autrefois une grande entreprise informatique. J'ai travaillé un jour par semaine chez Sun, chez Microsoft, chez Oracle, et travaillé un peu sur Facebook. Maintenant, je vais partir en vacances créatives (congé sabbatique, un professeur d'une université américaine est autorisé à prendre un tel congé pendant un an quelque part dans six ans) et travailler à Algorand , c'est une entreprise de crypto-monnaie à Boston. Travailler en étroite collaboration avec les entreprises a toujours été un plaisir, car c'est ainsi que vous apprenez des choses nouvelles et intéressantes. Vous pouvez être la première ou la deuxième personne à publier un article sur un sujet de votre choix, au lieu d'améliorer progressivement les solutions aux problèmes sur lesquels tout le monde travaille déjà.


Alexei: Pouvez-vous nous en dire plus sur la façon dont cela se produit?


Maurice: Bien sûr. Vous savez, lorsque j'ai travaillé chez Digital Equipment Corporation, moi et Elliot Moss, nous avons inventé la mémoire transactionnelle. Ce fut une période très fructueuse où tout le monde a commencé à s'intéresser aux technologies de l'information. Concurrence notamment, bien que les systèmes multicœurs n'existent pas encore. À l'époque de Sun et d'Oracle, j'ai beaucoup travaillé sur les structures de données parallèles. Sur Facebook, j'étais engagé dans leur projet de blockchain, dont je ne peux pas parler, mais j'espère qu'il deviendra bientôt public. L'année prochaine, à Algorand, je travaillerai dans un groupe de recherche, étudiant les contrats intelligents.


Alexei: Au cours des dernières années, la blockchain est devenue un sujet très populaire. Est-ce que cela aidera votre recherche? Peut-être facilitera-t-il la réception de subventions ou donnera-t-il accès aux ressources des entreprises opérant dans l'industrie?


Maurice: J'ai déjà reçu une petite subvention de la Fondation Ethereum. La popularité de la blockchain est très utile pour inciter les étudiants à travailler dans ce domaine. Ils sont très intéressés par cela et sont heureux d'y participer, mais parfois ils ne comprennent pas que les études qui semblent tentantes de l'extérieur s'avèrent inclure un travail vraiment dur. Néanmoins, je suis très heureux d'utiliser tout ce mysticisme autour de la blockchain, cela aide à attirer les étudiants.


Mais ce n'est pas tout. Je fais partie du conseil consultatif de plusieurs startups blockchain. Certains d'entre eux peuvent réussir, d'autres non, mais il est toujours très intéressant de voir leurs idées, de les étudier et de conseiller les gens. La chose la plus excitante est lorsque vous avertissez les gens de ne pas faire quelque chose. Au début, beaucoup semble être une bonne idée, mais est-ce vraiment le cas?


Fondation de recherche Blockchain


Vitaliy: Quelqu'un pense que la blockchain et ses algorithmes ont un avenir. Et d'autres personnes disent que ce n'est qu'une autre bulle. Pouvez-vous partager votre opinion à ce sujet?


Maurice: Beaucoup de ce qui se passe dans le monde des blockchains ne fonctionne pas correctement, quelque chose n'est qu'une arnaque, beaucoup est surfait. Néanmoins, je pense qu'il existe une base scientifique solide pour ces études. Le fait que le monde des blockchains regorge de différences idéologiques montre le niveau d'excitation et de dévouement. En revanche, il n'est pas particulièrement bénéfique pour la recherche scientifique. Maintenant, si vous publiez un article qui parle des lacunes d'un algorithme particulier, la réaction qui en résulte n'est pas toujours entièrement scientifique. Souvent, les gens rejettent leurs émotions. Je pense qu'un tel remue-ménage dans ce domaine peut sembler attrayant pour certains, mais au final, il y a de vrais problèmes scientifiques et techniques qui n'ont pas encore été résolus. Il y a beaucoup d'informatique.


Vitaliy: Autrement dit, vous essayez de jeter les bases de la recherche sur la blockchain, non?


Maurice: J'essaie de jeter les bases d'une solide discipline scientifique et mathématique. Et en partie le problème est que parfois vous devez contredire certaines positions trop dures des autres et les ignorer. Parfois, les gens me demandent pourquoi je travaille dans un domaine qui intéresse uniquement les terroristes et les trafiquants de drogue. Une telle réaction est aussi dénuée de sens que le comportement des adeptes qui répètent aveuglément vos mots. Je pense que la vérité se situe quelque part entre les deux. La blockchain aura toujours un impact profond sur la société et l'économie mondiale. Mais, probablement, cela ne se produira pas grâce aux technologies modernes. Les technologies modernes se développeront et ce qui sera appelé la blockchain à l'avenir deviendra très important. Peut-être que cela ne ressemblera même pas à des blockchains modernes, c'est une question ouverte.


Si les gens inventent de nouvelles technologies, ils continueront de l'appeler blockchain. Je veux dire, tout comme le Fortran d'aujourd'hui n'a rien à voir avec la langue Fortran des années 1960, mais tout le monde continue de l'appeler Fortran. Il en va de même pour UNIX. Ce qu'on appelle une «blockchain» fera encore sa révolution. Mais je doute que cette nouvelle blockchain devienne similaire à ce que tout le monde aime utiliser aujourd'hui.


D'où viennent les idées révolutionnaires. Impact de la popularité


Alexei: La popularité de la blockchain a-t-elle conduit à de nouveaux résultats d'un point de vue scientifique? Plus d'interaction, plus d'étudiants, plus d'entreprises dans la région. Y a-t-il des résultats de cette croissance de popularité?


Maurice: Je me suis intéressé à cela quand quelqu'un m'a remis le dépliant officiel d'une entreprise qui venait de récolter pas mal d'argent. Il a écrit sur la tâche des généraux byzantins , avec qui je suis plus que familier. Écrit dans la brochure était clairement techniquement incorrect. Les gens qui ont écrit tout cela ne comprenaient pas vraiment le modèle derrière le problème ... et pourtant cette entreprise a levé beaucoup d'argent. Par la suite, l'entreprise a tranquillement remplacé cette brochure par une option beaucoup plus correcte - et je ne dirai pas comment cette entreprise s'appelait. Ils existent toujours et se portent très bien. Ce cas m'a convaincu que, premièrement, la blockchain n'est qu'une forme de calcul distribué. Deuxièmement, le seuil d'entrée (il y a au moins quatre ans) était plutôt bas. Les personnes travaillant dans ce domaine étaient très énergiques et intelligentes, mais n'ont pas lu d'articles scientifiques. Ils ont essayé de réinventer des choses célèbres et l'ont mal fait. Aujourd'hui, le drame a diminué.


Alexei: C'est très intéressant, car il y a plusieurs années, nous avions une tendance différente. C'est un peu comme le développement frontal lorsque les développeurs d'interfaces de navigateur ont réinventé des technologies entières qui étaient déjà populaires à l'époque dans le backend: systèmes de construction, intégration continue, etc.


Maurice: Je suis d'accord. Mais cela n'est pas surprenant, car les idées véritablement révolutionnaires viennent toujours de l'extérieur de la communauté existante. Il est peu probable que des chercheurs reconnus, en particulier les autorités du milieu universitaire, fassent quelque chose de vraiment révolutionnaire. Il est facile d'écrire un rapport pour la prochaine conférence sur la façon dont vous avez légèrement amélioré les résultats de votre travail passé. Allez à la conférence, réunissez-vous avec des amis, parlez de la même chose. Et les gens qui se lancent dans des idées révolutionnaires viennent presque toujours de l'extérieur. Ils ne connaissent pas les règles, ils ne connaissent pas la langue, mais néanmoins ... Si vous êtes dans une communauté existante, je vous conseille de faire attention aux nouvelles choses, à quelque chose qui ne rentre pas dans le tableau d'ensemble. Dans un sens, on peut tenter de combiner des développements externes plus fluides avec des méthodes que nous comprenons déjà. Dans un premier temps, essayez de créer une base scientifique, puis modifiez-la afin qu'elle puisse être appliquée à de nouvelles idées révolutionnaires. Je pense que la blockchain est parfaite pour le rôle d'une nouvelle idée révolutionnaire.


Alexei: Pourquoi pensez-vous que cela se produit? Parce que les gens "à l'extérieur" n'ont pas d'obstacles spécifiques inhérents à la communauté?


Maurice: Il y a une sorte de schéma. Si vous lisez l'histoire des impressionnistes dans la peinture et l'art en général, à une époque, des artistes célèbres ont rejeté l'impressionnisme. Ils ont dit que c'était une sorte de puérilité. Une génération plus tard, cette forme d'art auparavant rejetée est devenue la norme. Ce que je vois dans mon domaine: les inventeurs de blockchain n'étaient pas intéressés par le pouvoir, par la liquidation des publications et des index de citation, ils voulaient juste faire quelque chose de bien. Et donc, ils se sont assis et ont commencé à le faire. Ils manquaient d'une certaine profondeur technique, mais c'est réparable. Il est beaucoup plus difficile de trouver de nouvelles idées créatives que de corriger et de renforcer des idées insuffisamment mûres. Grâce à ces inventeurs, j'ai maintenant quelque chose à faire!


Alexei: Cela ressemble à la différence entre les startups et les projets hérités. Nous avons hérité de nombreuses limitations de la pensée, des obstacles, des exigences spéciales, etc.


Maurice: Une bonne analogie est l'informatique distribuée. Considérez la blockchain comme s'il s'agissait d'une startup et de l'informatique distribuée - une grande entreprise établie. L'informatique distribuée est en train d'acheter et de fusionner avec la blockchain.


PhD dirigé par Barbara Liskov


Vitaliy: Nous avons encore beaucoup de questions! Nous avons étudié votre biographie et sommes tombés sur un fait curieux à propos de votre doctorat. Oui, c'était il y a longtemps, mais le sujet semble important. Vous avez obtenu un doctorat sous la direction de Barbara Liskov elle-même! Barbara est très célèbre dans la communauté des développeurs de langages de programmation, et en général une personne très célèbre. Il est logique que vos recherches aient été dans le domaine des langages de programmation. Comment êtes-vous passé au calcul parallèle? Pourquoi avez-vous décidé de changer de sujet?


Maurice: A cette époque, Barbara et son groupe ne faisaient que regarder l'informatique distribuée, c'était une toute nouvelle idée. Il y avait aussi ceux qui ont dit que l'informatique distribuée était un non-sens; la communication entre les ordinateurs n'avait aucun sens. L'un des problèmes abordés dans l'informatique distribuée qui les distingue de l'informatique centralisée est la tolérance aux pannes. Après des recherches approfondies, nous avons décidé que dans un langage de programmation pour l'informatique distribuée, vous devez avoir quelque chose comme des transactions atomiques, car vous ne pouvez jamais être sûr du succès d'un appel à distance. Dès que vous avez des transactions, le problème du contrôle d'accès simultané se pose. Ensuite, il y a eu beaucoup de travail pour obtenir des structures de données transactionnelles hautement parallèles. Puis, lorsque j'ai obtenu mon diplôme, je suis allé à Carnegie Mellon et j'ai commencé à chercher un sujet de travail. Il m'est venu à l'esprit que les calculs étaient passés des ordinateurs individuels aux réseaux informatiques. Les multiprocesseurs deviendraient une continuation naturelle du progrès - le mot "multicœur" n'existait pas encore. J'ai pensé: quel est l'équivalent des transactions atomiques pour un système multicœur? Certainement pas des transactions ordinaires, car elles sont trop grosses et lourdes. Et j’en suis venu à l’idée de linéarisation et c’est ainsi que j’ai trouvé toute la synchronisation sans attente. Il s'agissait d'une tentative de répondre à la question de savoir ce qui est un analogue des transactions atomiques pour un système multiprocesseur avec mémoire partagée. À première vue, ce travail peut sembler très différent, mais en fait c'est une continuation du même sujet.


Le monde en prévision du multicœur


Vitaliy: Vous avez mentionné qu'à cette époque, il y avait très peu d'ordinateurs multicœurs, non?


Maurice: Ils n'étaient tout simplement pas là. Il y avait plusieurs soi-disant multiprocesseurs symétriques qui étaient essentiellement connectés au même bus. Cela n'a pas très bien fonctionné, car chaque fois qu'une nouvelle entreprise créait quelque chose de similaire, Intel sortait un processeur unique supérieur au multiprocesseur.


Alexei: Est-ce à dire que dans le passé, c'était plus une étude théorique?


Maurice: Ce n'était pas une recherche théorique, mais plutôt spéculative. Tout cela ne consistait pas à travailler avec de nombreux théorèmes, mais plutôt à émettre des hypothèses sur l'architecture qui n'existait pas à l'époque. C'est pour cela que la recherche est nécessaire! Aucune entreprise n'aurait fait une telle chose, tout cela venait d'un avenir lointain. En fait, c'était jusqu'en 2004, lorsque de vrais processeurs multicœurs sont apparus. En raison de la surchauffe des processeurs, vous pouvez rendre le processeur encore plus petit, mais vous ne pouvez pas le faire plus rapidement. Pour cette raison, il y a eu une transition vers des architectures multicœurs. Et puis cela signifiait que tout à coup il y avait une application pour tous les concepts que nous avons développés dans le passé.


Alexei: Pourquoi pensez-vous que les processeurs multicœurs ne sont apparus que dans les années 2000? Alors pourquoi si tard?


Maurice: Cela est dû à des limitations matérielles. Intel, AMD et d'autres sociétés sont très efficaces pour augmenter la vitesse du processeur. À un moment donné, les processeurs sont devenus suffisamment petits et ils ne pouvaient plus augmenter la fréquence d'horloge, car les processeurs commençaient à brûler. Vous pouvez les rendre plus petits, mais pas plus rapides. Ce qui est en leur pouvoir - au lieu d'un très petit processeur, il peut contenir huit, seize ou trente-deux processeurs dans le même volume de boîtier, où auparavant un seul était placé. Vous avez maintenant une communication multithreading et rapide entre eux, car ils partagent des caches. Mais vous ne pouvez pas les faire fonctionner plus rapidement - il y a une limite de vitesse très spécifique. Ils continuent de s'améliorer un peu, mais pas tant. Les lois de la physique entravent les améliorations.


– . NUMA, NVM


: . . ? , ? . – ? , ?


: : , ?


: 100%. , , . , , . , , . , , , . , . , NUMA – . , , . , . , , – , . , , GPU, GPU . , SIMD , , . , .


: , NUMA , . , NUMA ?


: , NUMA , : , . , – . , . , , , . . , , , . , . . , , - , . - , , , , : , , , . , , .


: ? , ? , . , - .


: . , – , . , , NUMA -, , . – , . - , . , , . , , , . . , . , , , . , - 2000- . , - – , .


. , , . : , . near memory computing . , L1-, TPU – . – . , .


: ( non-volatile memory )?


: , ! NVM , , , . , , . , , . , , . , NVM – , . , , , .


, RISC vs CISC, shared memory vs message passing


: « » ? , : - , , . : . ?


: . . , . - RISC- , Intel , , . , , . , . , , , - , .


: , ? ?


: , , . . - , . , – , , , . - , : «, , - , , , – !». , , . , , , .



: . , , , , . - , - . , .


: , – , . , , , - . , . : , . , -. : , , . , . , , – , . , java.util.concurrent . , – . ( : , Java, ConcurrentSkipListMap, API c ). , , , . , . , , . , : ! - , , .


: , , , java.util.concurrent , , , . : , , - , -. ? , ? ?


: , : , , , . , . , . : , , , , . : , . , , : : , – , . , . , . , , . , , , . . , , , . , , . , .


: , : – , – ?


: . , . , , . : , , , . , .



: , ?


: , . . . - : «, » — , - , . , , : « , ?». . , , , . , - , . - : , . : , .


: , , , , , . , ?


: . , , , – . , Facebook . , , , , . . , , . , : , , – . . , - : , , , , , – . , , , . , – . , .


: . , . , , . - , ?


Maurice: Je m'arrête souvent et pose des questions classiques. Toute déclaration sera-t-elle correcte, ou comment résoudrait-elle le problème en discussion? Il s'agit d'une action clé, surtout au début de la leçon, lorsque les gens sont gênés de dire même un peu. Vous posez une question aux étudiants et ne dites rien de plus. Le silence s'installe, tout le monde tend un peu, la tension monte, puis soudain quelqu'un ne peut plus le supporter, s'effondre et dit la réponse. Alors vous retournez la situation: se taire devient plus difficile et gênant que de répondre! Il s'agit d'une astuce pédagogique standard. Chaque enseignant dans le monde doit savoir comment procéder.


Alexei: Nous avons maintenant un grand nom pour cette interview: "il est plus facile de répondre que de garder le silence."


Vitaliy: Permettez-moi de vous en poser une autre. Vous travaillez sur des preuves topologiques. Comment vous impliquez-vous dans ce domaine, car l'informatique distribuée et la topologie sont deux choses différentes!


Maurice: Il y a une relation cachée. Quand j'étais étudiant et que j'étudiais les mathématiques, j'ai étudié les mathématiques pures. Je n'avais pas vraiment d'intérêt pour l'informatique avant la fin de la formation et je me suis retrouvé face à l'urgence de chercher du travail. En tant qu'étudiant, j'ai étudié la topologie algébrique. Plusieurs années plus tard, alors que je travaillais sur une tâche appelée «Problème d'accord k-Set» , j'ai utilisé des graphiques pour modéliser le problème et, semble-t-il, j'ai trouvé une solution. Il fallait juste s'asseoir et faire le tour du comte. Essayez de trouver une réponse appropriée dans cette colonne. Mais mon algorithme n'a pas fonctionné: il s'est avéré qu'il tournerait toujours en rond. Malheureusement, tout cela ne pouvait pas être expliqué par le langage formel de la théorie des graphes - celui que tous les experts dans le domaine de l'informatique connaissent. Et puis je me suis souvenu qu'il y a de nombreuses années, alors que nous étions encore dans des classes de topologie, nous avons utilisé le concept de «complexe simplicial» , qui est une généralisation de graphiques à des dimensions supérieures. Je me suis alors demandé: que se passera-t-il si nous reformulons le problème en termes de complexes simpliciaux? C'est devenu un point clé. Lorsque vous utilisez un formalisme plus puissant, le problème devient soudainement beaucoup plus facile. Les gens ont longtemps eu du mal avec les graphiques, mais n'ont rien pu faire. Oui, et maintenant ils ne le peuvent pas - la bonne réponse n'était pas l'algorithme, mais la preuve de l'impossibilité de résoudre le problème. Autrement dit, un tel algorithme n'existe tout simplement pas. Mais chaque preuve d'impossibilité est basée soit sur des complexes simpliciaux, soit sur des choses que les gens ont prétendu ne pas considérer comme des complexes simpliciaux. Du fait que vous avez appelé quelque chose un nouveau nom, il ne perd pas son essence.


Vitaly: Donc, tu as juste eu de la chance?


Maurice: Outre la chance, c'est aussi la préparation . Cela signifie que vous ne devez pas oublier les choses «inutiles» étudiées plus tôt. Plus vous apprenez de choses inutiles, plus vous pouvez extraire d'idées face à un nouveau problème. Un tel filtrage intuitif est important, car ... Faisons-le, c'est la chaîne: au début, j'ai trouvé que les graphiques ne fonctionnaient pas du tout ou ne fonctionnaient pas du tout, cela me rappelait certains événements d'il y a huit ans et mes années étudiantes, lorsque nous avons étudié tous ces complexes simpliciaux . À mon tour, cela m'a permis de retrouver mon ancien manuel de topologie et de le recharger dans ma tête. Mais sans cette vieille connaissance, je n'aurais jamais avancé dans la résolution du problème d'origine.


Nouvelle édition de The Art of Multiprocessor Programming


Alexei: Vous avez dit quelques mots sur votre livre. Ce n'est probablement pas le pire mystère que vous ayez écrit le livre de multithreading le plus célèbre au monde, The Art of Multiprocessor Programming . Elle a déjà environ 11 ans et depuis lors, seule une réimpression révisée a été publiée . Y aura-t-il une deuxième édition?


Maurice: C'est bien que tu aies demandé! Ce sera très bientôt, dans trois mois environ. Il y a deux autres auteurs, nous avons ajouté beaucoup plus de matériel, amélioré la section sur fork / join-parallelism, écrit une section sur MapReduce, ajouté beaucoup de nouvelles choses et éliminé l'inutile - qu'au moment d'écrire la première édition, c'était très intéressant, mais aujourd'hui ce n'est pas le cas. Le résultat a été un livre très sérieusement révisé.


Alexei: Tout a déjà été fait, ne reste-t-il qu'à sortir?


Maurice: Deux chapitres doivent encore être finalisés. Notre éditeur (je pense qu'il nous déteste déjà) essaie toujours de faire comprendre que nous devrions travailler plus rapidement. Nous sommes loin du calendrier. Théoriquement, nous aurions pu faire ce livre quelques années plus tôt.


Alexei: Y a-t-il des chances d'obtenir une nouvelle version du livre avant Noël?


Maurice: C'est notre objectif! Mais j'ai prédit la victoire tellement de fois que personne ne me croit. Vous ne devriez probablement pas me faire confiance dans cette affaire aussi.


Alexei: En tout cas, c'est une excellente nouvelle. J'ai vraiment aimé la première édition du livre. On pourrait dire que je suis fan.


Maurice: J'espère que la nouvelle édition est digne de votre ardent enthousiasme, merci!


Comment la mémoire transactionnelle a-t-elle été inventée?


Vitaliy: La question suivante concerne la mémoire transactionnelle. Si je comprends bien, vous êtes un pionnier dans ce domaine, vous l'avez inventé à une époque où personne ne pensait à de telles choses. Pourquoi avez-vous décidé de vous installer dans cette zone? Pourquoi les transactions vous ont-elles paru importantes? Avez-vous déjà pensé qu'ils seront incarnés dans le fer?


Maurice: Je connais les transactions depuis les études supérieures.


Vitaliy: Oui, mais ce sont d'autres transactions!


Maurice: J'ai travaillé avec Elliott Moss sur une collecte des ordures non bloquante. Notre problème était que nous voulions changer atomiquement quelques mots en mémoire, puis les algorithmes deviendraient très simples, et au moins certains d'entre eux deviendraient plus efficaces. L'utilisation de la fonction de comparaison et d'échange pour le chargement de lien / stockage conditionnel fournie par l'architecture parallèle peut faire quelque chose, mais elle est très inefficace et moche car vous auriez à gérer des niveaux d'indirection. Je veux changer les mots de la mémoire et je dois changer car je ne peux changer qu'un seul pointeur, donc je dois les pointer vers une sorte de structure de type répertoire. Nous avons parlé de la façon dont ce serait merveilleux si nous pouvions changer le fer pour qu'il puisse enregistrer simultanément. Elliot semble l'avoir remarqué: si vous regardez les protocoles de cohérence du cache, ils fournissent déjà la plupart des fonctionnalités nécessaires. Dans une transaction optimiste, le protocole de cohérence du cache remarquera un conflit de synchronisation et le cache deviendra invalide . Que se passe-t-il si vous lancez spéculativement une transaction sur votre cache et utilisez les mécanismes du protocole de cohérence pour détecter les conflits? L'architecture matérielle spéculative était facile à concevoir. Nous avons donc écrit la toute première publication sur la mémoire transactionnelle. En même temps, la société pour laquelle je travaillais, Digital Equipment Corporation, créait un nouveau processeur 64 bits appelé Alpha. Je suis donc allé faire une présentation à l'équipe de développement Alpha sur notre merveilleuse mémoire transactionnelle et ils ont demandé: quels revenus supplémentaires notre entreprise recevra-t-elle si nous ajoutons tout cela directement au processeur? Et je n'avais absolument aucune réponse à cela, car je suis technologue, je ne suis pas spécialiste en marketing. Je n'avais vraiment rien à répondre. Ils n'étaient pas très impressionnés que je ne sache rien.


Vitaliy: des milliards! Dites simplement «des milliards»!


Maurice: Oui, c'est ce que j'aurais dû dire. Maintenant, à l'ère des startups et tout ça, je sais écrire un business plan. Que pouvez-vous mentir un peu sur le montant du profit potentiel. Mais à cette époque, cela semblait naïf, alors j'ai juste dit: "Je ne sais pas." Si vous regardez l'historique des publications sur la mémoire transactionnelle, vous remarquerez qu'après un an, il y avait plusieurs liens vers elle, puis pendant une dizaine d'années, personne n'a cité cet article. Des citations sont apparues vers 2004, quand un véritable multicœur est apparu. Lorsque les gens ont découvert que l'écriture de code parallèle peut faire de l'argent, de nouvelles recherches ont commencé. Ravi Rajwar a écrit un article qui a présenté le courant dominant au concept de mémoire transactionnelle d'une manière ou d'une autre. (Note éditoriale: l'article a une deuxième version, publiée en 2010 et disponible gratuitement en PDF ). Soudain, les gens ont réalisé comment tout cela pouvait être utilisé exactement, comment les algorithmes de blocage accéléré traditionnels pouvaient être accélérés. Un bon exemple de quelque chose qui par le passé semblait être un problème académique intéressant. Et oui, si à cette époque vous me demandiez si je pense que tout cela sera important à l'avenir, je dirais: bien sûr, mais quand exactement - ce n'est pas clair. Peut-être dans 50 ans? Dans la pratique, cela ne s'est avéré que d'une décennie. C'est très bien quand on fait quelque chose, et après seulement dix ans, les gens le remarquent.


Pourquoi cela vaut-il la peine de faire des recherches dans le domaine de l'informatique distribuée


Vitaliy: Si nous parlons de nouvelles recherches, que conseilleriez-vous aux lecteurs - informatique distribuée ou multicœur et pourquoi?


Maurice: De nos jours, il est facile d'obtenir un processeur multicœur, mais il est plus difficile de mettre en place un véritable système distribué. J'ai commencé à travailler dessus parce que je voulais faire quelque chose de différent de ma thèse de doctorat. C'est le conseil que je donne toujours aux débutants: n'écrivez pas une suite de la thèse - essayez d'aller dans une nouvelle direction. Et pourtant, le multithreading est facile. Je peux expérimenter sur ma propre fourche en cours d'exécution sur un ordinateur portable sans sortir du lit. Mais si je voulais soudainement créer un vrai système distribué, je devrais faire beaucoup de travail, attirer des étudiants, etc. Je suis une personne paresseuse et préférerais travailler sur le multicœur. Les expériences sur les systèmes multicœurs sont également plus faciles à faire que sur les systèmes distribués, car même dans un système distribué stupide, il y a trop de facteurs à contrôler.


Vitaliy: Qu'est-ce que tu fais maintenant, en explorant la blockchain? À quels articles devez-vous faire attention en premier lieu?


Maurice: Un très bon article a récemment été publié que j'ai écrit avec mon étudiant, Vikram Saraf, spécifiquement pour avoir pris la parole lors de la conférence Tokenomcs à Paris il y a trois semaines. Cet article concerne les systèmes distribués pratiques dans lesquels nous proposons de rendre Ethereum multithread. Désormais, les contrats intelligents (code exécuté sur la blockchain) sont exécutés séquentiellement. Nous avons écrit un article plus tôt sur la façon d'utiliser les transactions spéculatives pour accélérer le processus. Nous avons pris beaucoup d'idées de la mémoire logicielle transactionnelle et avons dit que si vous intégrez ces idées à la machine virtuelle Etherium, alors tout fonctionnera plus rapidement. Mais pour cela, il est nécessaire qu'il n'y ait pas de conflits dans les contrats selon les données. Et puis nous avons suggéré que dans la vraie vie il n'y a vraiment pas de tels conflits. Mais nous n'avons pas eu l'occasion de le découvrir. Ensuite, il nous est venu à l'esprit que nous avions près de dix ans d'histoire de vrais contrats en main, alors nous avons déchargé la blockchain Etherium et nous nous sommes demandé: que se passerait-il si ces enregistrements historiques étaient effectués en parallèle? Nous avons constaté une augmentation significative de la vitesse. Au début d'Etherium, la vitesse a beaucoup augmenté, mais aujourd'hui c'est un peu plus compliqué, car il y a moins de contrats et il y a une plus grande probabilité de conflits sur les données qui nécessitent une sérialisation. Mais tout cela est un travail expérimental avec de vraies données historiques. Ce qui est bien avec la blockchain, c'est qu'elle se souvient de tout pour toujours, vous pouvez donc remonter dans le temps et étudier ce qui se passerait si nous utilisions d'autres algorithmes pour exécuter le code. Comment les gens là-bas, dans le passé, aimeraient notre nouvelle idée. Une telle recherche est beaucoup plus facile et plus agréable, car il y a une chose qui surveille tout et enregistre tout. C'est déjà quelque chose de plus similaire à la sociologie qu'au développement d'algorithmes.


Le développement d'algorithmes s'est-il arrêté et comment vivre


Vitaliy: L'heure de la dernière question théorique! Pensez-vous que les changements dans les structures de données concurrentielles se réduisent chaque année? Pensez-vous que nous avons atteint un plateau dans notre compréhension des structures de données, ou y aura-t-il des améliorations majeures? Peut-être y a-t-il des idées délicates qui peuvent tout changer complètement?


Maurice: Nous avons peut-être atteint un plateau dans les structures de données pour les architectures traditionnelles. Mais les structures de données pour les nouvelles architectures restent un domaine très prometteur. Si vous souhaitez créer des structures de données, par exemple, pour des accélérateurs matériels, les structures de données pour le GPU sont très différentes des structures de données pour le CPU. Lorsque vous développez des structures de données pour les chaînes de blocs, vous devez hacher les éléments de données, puis les placer dans quelque chose comme un arbre Merkle pour éviter les contrefaçons. Dans ce domaine, il y a eu une récente augmentation d'activité, beaucoup font du très bon travail. Mais je pense qu'il arrivera que de nouvelles architectures et de nouvelles applications conduisent à de nouvelles structures de données. Applications anciennes et architecture traditionnelle - il n'y a peut-être pas beaucoup de place pour la recherche là-bas. Mais si vous sortez des sentiers battus et regardez par-dessus bord, vous verrez des choses folles que le grand public ne prend pas au sérieux - c'est là que toutes les choses passionnantes se produisent vraiment.


Vitaliy: Par conséquent, pour être un chercheur très célèbre, j'ai dû inventer ma propre architecture :-)


Maurice: Vous pouvez "voler" la nouvelle architecture de quelqu'un d'autre - cela semble beaucoup plus facile!


Emplois à l'Université Brown


Vitaliy: Pourriez-vous nous en dire plus sur Brown University , où vous travaillez? On ne sait pas grand-chose de lui dans le contexte des technologies de l'information. Moins que sur le MIT, par exemple.


Maurice: Brown University est l'une des plus anciennes universités des États-Unis. Je pense que seul Harvard est un peu plus âgé. Brown fait partie de la soi-disant Ivy League , qui est une collection de huit des plus anciennes universités. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, PA, Princeton. C'est une sorte d'université ancienne, petite et légèrement aristocratique. L'accent est mis sur l'éducation humanitaire. Il n'essaie pas d'être comme le MIT, le MIT est très spécialisé et technique. Brown est un endroit idéal pour étudier la littérature russe ou la langue grecque classique, et bien sûr, l'informatique. Il se concentre sur l'éducation globale. La plupart de nos étudiants vont sur Facebook, Apple, Google - par conséquent, je pense que nos étudiants n'ont aucun problème à s'installer dans l'industrie. Je suis allé travailler à Brown, car auparavant je travaillais chez Digital Equipment Corporation à Boston. C'était une entreprise qui a inventé beaucoup de choses intéressantes, mais qui a nié l'importance des ordinateurs personnels. Une entreprise au destin difficile, dont les fondateurs étaient autrefois de jeunes révolutionnaires, ils n'ont rien appris et rien oublié, et sont donc passés des révolutionnaires aux réactionnaires pendant une douzaine d'années. Ils aimaient plaisanter que les ordinateurs personnels avaient une place dans le garage - dans un garage abandonné, bien sûr. Il est évident qu'ils ont été détruits par des entreprises plus flexibles. Quand il est devenu clair que l'entreprise avait des problèmes, j'ai appelé mon ami de Brown, qui était à environ une heure de Boston. Je ne voulais pas quitter Boston à ce moment-là, car il n'y avait pas beaucoup de postes vacants dans d'autres universités. C'était une époque où dans le domaine de l'informatique il n'y avait plus autant de postes vacants qu'aujourd'hui. Mais Brown avait un poste vacant, je n'avais pas à déménager de chez moi, je n'avais pas à déménager ma famille, et j'aime vraiment vivre à Boston! J'ai donc décidé d'aller chez Brown. J'ai bien aimé. Les étudiants sont merveilleux, donc je n'ai même jamais essayé d'aller ailleurs. En vacances créatives, j'ai travaillé chez Microsoft pendant un an, je suis allé au Technion à Haïfa pendant un an, et maintenant je serai à Algorand. J'ai beaucoup de collègues partout et donc l'emplacement physique de nos cours de formation n'est pas si important. Mais le plus important, ce sont les étudiants, ils sont les meilleurs ici. Je n'ai jamais essayé d'aller ailleurs, car je suis assez content ici aussi.


Cependant, malgré la renommée de Brown aux États-Unis, il est étonnamment inconnu à l'étranger. Comme vous pouvez le voir, je fais maintenant de mon mieux pour corriger cet état de fait.


La différence entre la recherche à l'université et au sein de l'entreprise


Vitaliy: Eh bien, la question suivante concerne l'équipement numérique. Vous étiez chercheur là-bas. Quelle est la différence entre travailler dans le département R&D d'une grande entreprise et travailler dans une université? Quels sont les avantages et les inconvénients?


Maurice: Pendant vingt ans, j'ai réussi à travailler chez Microsoft, travaillé en étroite collaboration avec les employés de Sun Microsystems, Oracle, Facebook et maintenant Algorand. Sur la base de tout cela, je tiens à dire qu'il est possible de mener des recherches de premier ordre dans les entreprises et à l'université. La différence importante est que dans l'entreprise, vous travaillez avec des collègues. Si j'ai soudain l'idée d'un projet qui n'existe pas encore, je dois convaincre mes pairs que c'est une bonne idée. Si je suis à Brown, je peux dire à mes élèves: travaillons sur l'antigravité! Ils iront soit à quelqu'un d'autre, soit se chargeront du projet. Oui, je devrai trouver un financement, je devrai rédiger une demande de subvention et ainsi de suite. Dans tous les cas, il y aura toujours beaucoup d'étudiants et vous pourrez prendre des décisions unilatéralement. Mais à l'université, vous ne travaillerez probablement pas avec des gens de votre niveau. , . . , - , – . -, , , «, , , ». . , , , . , - , - . , , . , , – ! , . , . .


: , , .


: , . , -: - , - . Microsoft Facebook : , . , , – . , , .


Hydra SPTDC


: , .


: , .


: , . , ?


: !


: , SPTDC – . SPTCC , (C D, Concurrent Distributed), , , , . Hydra ?


: . , , , . - – . , - . . proof-of-work, -, .


, , , . , , , – , , .


: , , . . , , , 120 . , , , . Hydra . , , ?


: ? , ?


: . , . , ? – . , - . . , . , , – . .


, . , , , , SPTDC Hydra 2019!


Hydra 2019, 11-12 2019 -. «Blockchains and the future of distributed computing» . .

Source: https://habr.com/ru/post/fr458936/


All Articles