La vie exceptionnelle du CEO de NVidia


Ce jour-ci lors de l’écriture de ce blog, NVidia se positionne comme l’entreprise avec le capital le plus grand au monde. Son capital est de 4 trillions de dollars, faisons de NVidia la première entreprise à dépasser cette barre de 4 trillions. Dépassant ainsi des entreprises de grandes envergure, comme Apple, Microsoft, ou Tesla. NVidia arrive même à dépasser des pays qui sont des puissances économiques, comme la France, l’Angleterre, ou le Canada. Son capital est quasiment le double du PIB de tous les pays africains réunis. La vidéo en bas est celle d’une conférence faite par le CIO de l’entreprise NVidia nommée Jensen Huang (surnommé l’homme à la veste de cuir, et faisant des présentations dans sa cuisine) faite à l’université de Stanford. Jensen Huang lui-même a été diplômé de cette prestigieuse université. Sur la vidéo il raconte son expérience professionnelle et anecdotes privées tout au long de sa carrière.


Jensen Huang à l’instar de Elon Musk ou Sundar Pichai (CEO de Google) est la personnification du rêve américain. Venant d’une famille moyenne vivant à Taiwan, ils ont immigré aux États-Unis lorsque Jensen Huang avait 9 ans. Ses débuts étaient modestes, il a même travaillé comme plongeur dans un bistrot. Il a ensuite travaillé dans des boites informatiques de renom, comme LSI Logic et AMD, dont la dernière où il a développé des processeurs. L’idée de la création d’une entreprise fut en 1993 avec 2 autres amis. Le nom de la société était NVidia faisant référence au mot latin Invidia (envie ou jalousie en Français). L’entreprise a eu des hauts et des bas comme n’importe quelle entreprise. Mais NVidia avait une particularité spécifique, c’est de savoir flairer les technologies futures. Au tout début, l’entreprise a misé sur les cartes graphiques rajoutées au PC pour leur permettre de faire fonctionner des jeux au même niveau que les consoles. NVidia n’était pas la première entreprise à créer les cartes graphiques, mais sans doute c’était la première à créer des GPU (Processeur graphique). Là il faut bien faire la distinction entre une carte graphique et son processeur. Ensuite l’entreprise a eu le flair de faire de ses cartes graphiques un hardware incontournable pour le minage des bitcoins. Et plus récemment un tournant stratégique majeur dans les investissements de l’entreprise pour créer du hardware destiné à l’intelligence artificielle. C’est pratiquement le pas qu’il a propulsé vers le podium des entreprises internationales avec le capital le plus grand au monde.

Décortiquer les composantes internes d’un PC


Il y a une chaîne excellente sur YouTube du nom de Deus Ex Silicium, spécialisée dans le décorticage des appareils électroniques. Plus récemment une vidéo est publiée spécialement pour les composantes internes les plus importantes d’un ordinateur. Il faut signaler tout d’abord que la vidéo est très longue, mais pour un passionné d’électronique ça passe très très vite. L’avantage avec Deus Ex Silicium, c’est que les vidéos s’attardent sur le détail électronique, ça permet de faire connaissance avec des concepts que vous ne verrez sur aucune autre vidéo. Les composantes en question sont, la carte mère, la mémoire RAM, les disques durs, SSD et HDD, et la Carte Graphique, et ça parle beaucoup plus d’électronique que d’informatique. Vous avez sûrement remarqué qu’il n’y a pas le composant le plus important qui est le Processeur, ni le boîtier d’alimentation. Le premier c’est qu’il est trop complexe pour le rajouter à la vidéo sans la rendre beaucoup trop longue, et le 2e est beaucoup moins important que les autres composantes.


Une importante observation à faire signaler, c’est que pratiquement toute composante représente en elle-même un mini système informatique. Par exemple, le disque dur SSD comporte un processeur entier dédié à la gestion de l’SSD, de la mémoire RAM dédiée, une mémoire ROM, et d’autres composantes. Ça forme ce qu’on appelle un Système Embarqué contenant toutes les composantes informatiques nécessaire pour former un système informatique. Et c’est pratiquement la même chose pour les autres composantes. Vous pouvez même observer ça sur le plus simple des périphériques, comme la souris par exemple, ou l’imprimante. Il faut bien se mettre à l’esprit que dans un PC il existe un très grand nombre de processeurs à part le processeur central, ainsi qu’un très grand nombre de mémoire ROM et RAM à part la mémoire centrale. Et on peut dire que pour un informaticien/électronicien, c’est très alléchant de pouvoir les récupérer et les utiliser dans d’autres projets.

Processeur RISC-V 

Dans l’informatique domestique, ou la micro-informatique (PC). Deux noms de processeurs très connus partagent le marché depuis très longtemps, et avec souvent une concurrence féroce. En l’occurrence les processeurs d’Intel, et les processeurs d’AMD. Mais il y a une décennie de cela, un nouveau processeur a été développé, et qui semble prometteur pour prendre une part dans ce marché concurrentiel très prisé. C’est un processeur nommé RISC-V, développé par un groupe de chercheurs de l’université de Berkeley, pour remédier à un gros désavantage des processeurs actuels, qui est les droits d’utilisation. RISC-V propose une architecture ouverte, plus précisément appelée open ISA. Ce qui permet à n’importe quelle entreprise dans le monde de fabriquer son propre processeur et d’être compatible avec le logiciel des processeurs RISC-V. Ce qui n’est pas le cas pour les autres processeurs. Des droits, ou ce qu’on appelle parfois Royalties, doivent être payés par quiconque voulant utiliser la même architecture qu’eux. Avec des prix qui sont souvent très onéreux, ce qui limite énormément la concurrence dans ce marché.

Jusqu’à maintenant, le processeur RISC-V a gagné beaucoup de popularité dans les processeurs dits processeurs de Systèmes Embarqués. C’est le marché des processeurs pour les appareils électroniques ou les machines qui ne sont pas des PC. Mais comme présenté sur la vidéo en haut, de la chaîne YouTube Explaining Computers. Beaucoup de personnes pensent que le processeur possède beaucoup de potentiel pour concurrencer avec les processeurs du marché des PC. Notamment grâce à son architecture simple, modulaire et extensible. Qui semble plus maîtrisée que l’architecture x86 des processeurs AMD et Intel, avec son important héritage de plus de 40 ans, lui infligeant (pour des raisons de rétrocompatibilité) beaucoup de technologies et d’instructions devenues de nos jours obsolètes. 

Introduction aux architectures des ordinateurs

Voici une vidéo qui fait un excellent travail pédagogique pour faire comprendre plus ou moins en détail comment une architecture d’ordinateur fonctionne à l’intérieur. Plus précisément, et en suivant l’architecture de von Neumann (Illustré sur l’image en bas), la vidéo se focalise principalement sur l’interconnexion entre les 3 composantes des architectures de von Neumann, qui sont le processeur, la mémoire, et les unités d’entrée/sortie. Cela dit, il est important d’avoir une vue globale sur l’architecture et comment elle fonctionne d’une manière générale et théorique, il est aussi très important de comprendre le détail. Ainsi, la vidéo suivante démontre en détail comment le processeur arrive à communiquer avec la mémoire et les unités d’entrée/sortie.

L’achitecture de von Neumann

Néanmoins, un point très important à prendre en considération. L’explication donnée dans cette vidéo concerne plus particulièrement les architectures anciennes, des architectures pratiquement des années 80. De nos jours, les ordinateurs et les PC ont totalement évolué et changé de manière de communiquer. C’est devenu beaucoup plus complexe pour que ça soit enseigné à des étudiants universitaires en première ou 2e année. La vidéo en question est celle de la chaîne YouTube de Ron Mattino, c’est une très bonne chaîne bien connue pour faire de la vulgarisation en informatique et en électronique.

Introduction aux architectures des ordinateurs

Analyse de l’ordinateur de la fusée qui s’est posée sur la Lune

Ça a été dit que le moment où l’humain a foulé le premier pied sur la lune, était un grand pas pour l’humanité. Et c’était vrai, c’était une révolution sans précédent. Dans la vidéo qui suit, on va voir une analyse croustillante sur l’ordinateur de bord qui a beaucoup aidé à la réalisation de cette mission. L’ordinateur en question s’appelle Apollo Guidance Computer (AGC), un ordinateur très faible techniquement en comparaison aux normes des ordinateurs des temps modernes. Historiquement, c’était un ordinateur qui a été développé par l’université du Massachusetts dans le début des années 60 avec des techniques, disons-le, ingénieuses et peu présentes dans les architectures modernes. On peut aussi mentionner des procédés obsolètes comme par exemple ; L’utilisation du complément-à-1 un pour représenter les entiers, alors que toutes les architectures modernes utilisent le complément-à-2. Ou l’utilisation de la technologie obsolète de mémoire dite mémoires à tores de ferrite. Ou l’utilisation des banques de mémoire lorsque l’architecture possède peu de bites pour adresser la mémoire dans sa totalité. Néanmoins, l’AGC utilise des techniques, à mon avis, qui sont révolutionnaires pour l’époque. Comme l’encodage de l’adressage indirect utilisant une technique pour hacker une instruction et la fusionner avec la suivante. Ou l’utilisation de l’adressage mémoire pour accéder aux différents registres, ce qui simplifie significativement la programmation. Ou l’instruction bizarre, jamais vu de ma part, appelée CCS “Count, Compare, and Skip”. Ce qui m’a aussi marqué c’est l’utilisation des portes discrètes universelles NAND pour construire toutes l’architecture.

Présentation sur Apollo Guidance Computer

Moi personnellement, ces voyages dans le passé sur les architectures de l’époque, j’en raffole. J’ai même développé une passion dans l’exploration et la compréhension des architectures des machines et des consoles du passé. Vous allez voir sur la vidéo beaucoup d’explication technique concernant l’architecture des ordinateurs et la conception hardware, du passé. À mon avis, c’est l’un des meilleurs endroits aux étudiants pour apprendre et se familiariser avec ce domaine du hardware. La vidéo a été conjointement présentée par Michael Steil (voici son blog) and Christian Hessmann, le premier est un nom bien connu dans ce spécifique domaine. Comme de coutume, ça a été présenté à la plus grande convention de hacker en Europe, le Chaos Computer Club, qui se déroule tous les ans en Allemagne (leur site web et chaine Youtube), dans laquelle Michael Steil est souvent invité.

Apprendre l’électronique avec Arduino

Personnellement, je trouve la plateforme Aduino, l’un des meilleurs moyens pour permettre aux étudiants et aux initiés de faire une introduction aux systèmes embarqués. Pour faire simple, les systèmes embarqués sont des systèmes qui nécessitent des connaissances en électronique pour construire la plateforme physique, et en informatique pour programmer la plateforme. Ainsi, pour pouvoir faire du système embarqué, il faut au minimum avoir des connaissances dans les 2 disciplines.

Cours approfondi sur Arduino

J’ai déjà à plusieurs reprises écrit sur Arduino. Mais cette fois-ci, je suis tombé sur une vidéo très approfondie sur le sujet. Parce que, Premièrement, la vidéo ne nécessite de l’étudiant aucune connaissance préalable en informatique et en électronique. Et Deuxièmement, ce qui est le plus intéressant, c’est que l’étudiant n’est pas obligé d’avoir une carte Arduino matérielle pour pouvoir suivre ce cours. Car on retrouve sur la vidéo une référence à un simulateur qui arrive à faire la simulation d’Arduino et de l’électronique avec en plus une superbe interface bien agréable. C’est le simulateur online tinkercad.

La vidéo en question est celle de la chaîne YouTube du site web éducatif www.freecodecamp.org, et comme vu précédemment dans d’autres blogs, c’est un excellent site plein de nombreux cours et tutoriels en informatique.

Le premier code de Wozniak pour Apple-1

Pour ceux qui ne le savent pas encore, Steve Wozniak avec Steve Jobs sont les cofondateurs de la célèbre firme technologique Apple. Avant la création de cette firme, Steve Wozniak à l’aide de son ami Steve Jobs, ont conçu dans un garage leur première machine Apple-1. Et on soupçonne que le premier code que Wozniak a développé pour cette machine soit son Monitor System. Au tout début, Apple-1 n’avait pas de système d’exploitation (même que Apple-1 officiellement n’a jamais reçu de Système d’Exploitation), ainsi Wozniak a imaginé le développement d’un petit moniteur pour cette machine, appelé Woz Monitor. Par principe, le moniteur est un outil de débogage et de configuration matérielle, en sachant que son principal rôle est de donner la capacité à l’utilisateur d’accéder et de modifier directement la mémoire et les périphériques de la machine. Le moniteur que Wozniak a développé est très simple, il se comporte que de 256 octets, écrit en assembleur 6502, et son code est entièrement disponible et bien expliqué sur Internet (sur cette page) et sur GitHub. Le code du moniteur est très populaire pour les machines faite maison.

Woz Monitor source code

La vidéo en haut et celle de Ben Eater. Personnellement, moi j’en raffole des vidéos de Ben Eater, parce qu’ils sont très académiques, bien clairs, et très bien expliquées. Sur la vidéo, il explique l’utilisation du moniteur pour sa propre machine faite maison. 

La programmation d’un émulateur

Étant actuellement un enseignant en architecture des ordinateurs, et un enseignant de programmation et structures de données dans le passé. Je peux sereinement suggérer aux étudiants en informatique, que le meilleur exercice pour maitriser les 2 disciplines est de développer soi-même un émulateur. Alors c’est quoi un émulateur ? L’émulateur par définition est un logiciel qui va reproduire ou répliquer exactement le même comportement d’une machine donnée sur une machine hôte différente. Vous pouvez par exemple émuler une console du type Nintendo sur un PC de bureau. L’émulateur va se comporter exactement comme une console Nintendo le ferait réellement. Vous aurez ainsi l’équivalent d’une console installé sur un PC et vous pourrez jouer à cette console. 

Le fait de programmer un émulateur est très enrichissant pour un étudiant. Ça va premièrement, le faire investir en programmation sur un projet relativement de grande envergure, à la différence des petits exercices et travaux pratiques qu’il a l’habitude de faire dans lequel il doit planifier au préalable et construire une architecture logicielle qu’il doit suivre et soutenir tout au long du projet. Et deuxièmement, il doit bien maîtriser l’architecture de la machine à émuler. Il doit effectivement reproduire en logiciel les composantes hardwares de la machine. Ainsi, il va reconstruire le processeur avec toutes ses instructions et ses caractéristiques, il doit aussi reproduire les mémoires de la machine, le système vidéo, le système de son, les entrées/sorties… etc. Sur la vidéo en bas de la chaîne YouTube Computerphile, un émulateur pour la célèbre machine Atari 2600 est grossièrement décrit par le docteur Steve Bagley.

L’émulateur de machines

Il faut savoir que les consoles de jeux sont principalement les émulateurs les plus connus parmi les émulateurs de toutes les machines. Pour la simple raison que ça va permettre aux utilisateurs de jouer à ces machines sur leurs propres ordinateurs. Malheureusement, ces consoles de jeux sont parmi les machines les plus dures à émuler, en raison de la complexité de leur système graphique. Cependant, pour un étudiant avec un bon niveau en programmation et en architecture des ordinateurs, Il lui est possible de développer des émulateurs jusqu’à la 4e génération des consoles de jeux, même si que pour faire tourner de simple démo ou homebrew, incluant ainsi des consoles comme la Nintendo NES, SNES, Sega Mega Drive, Master System…etc. Ce qu’on appelle les consoles à 16 bits. À partir de la 5e génération, ou les consoles dites 32 bits, ça devient difficile pour un simple étudiant de développer tout seul un émulateur pour une machine de ce type, en raison que ces machines sont devenues beaucoup plus puissantes que les précédentes, principalement à cause de l’intégration de la technologie 3D. On peut compter parmi ces consoles, la Sony Playstation 1, La Sega Saturn, La Nintendo 64. Jusqu’aux dernières générations de consoles. 

Les processeurs RISC vs CISC

Toute personne parcourant l’évolution historique des processeurs à travers le temps, serait sûrement appelée sur une période dans le début des années 80, concernant un débat dans la communauté scientifique et industrielle autour l’évolution des processeurs dans les années à venir. Il y avait pratiquement 2 camps, un camp qui pensait que les avancées en électronique permettraient de créer des processeurs plus évolués et plus capables et que les processeurs devraient être plus complexes et plus riches. Le 2-ième camp n’approuvait pas cette idée, et suggérait que les processeurs devraient rester plus simples, et que la complexité des applications doit être léguer au Software. Après plusieurs débats houleux, il s’est avéré que c’est le 2-ième camp malgré un nombre d’adhérents réduit et un raisonnement semblant contre intuitif, les années à la suite leur ont donné raison.

RISC vs CISC selon David Patterson

Ce 2-ième camp est principalement représenté par les 2 figures bien connu dans le domaine des architectures des ordinateurs, David Patterson et John L. Hennessy, ils sont actuellement désignés comme les parrains de l’architecture des ordinateurs. Ils sont très célèbres dans le domaine académique par leurs 2 livres références Computer Organization and Design et Computer Architecture: A Quantitative Approach. Ils ont eux aussi l’honneur d’avoir le prix équivalant au prix Nobel en informatique qui est le prix Turing en 2017. David Patterson se charge actuellement du développement du très prometteur nouveau processeur open source RISC-V, et John L. Hennessy est bien connu pour être le cofondateur du célèbre processeur MIPS. Sur la vidéo en haut, on a une partie de l’interview de David Patterson par le célèbre académicien Lex Fridman, sur laquelle David Patterson va relater les faits et les événements qui se sont déroulés à cette époque. 

Analyse hardware de la Gameboy

Ça m’a toujours fasciné le sentiment de comprendre des machines que j’ai personnellement utilisées quand j’étais plus petit, animé par cette curiosité que j’avais à l’époque pour comprendre comment ça fonctionnait mais stoppé par le manque de connaissances pour le faire. On n’est pas encore au point de comprendre à 100% comment les anciennes machines fonctionnent, mais disons qu’une grande partie du hardware de ces anciennes machines a été révélé. Et ça principalement grâce à de nombreux hackers qui ont réussi à faire un énorme travail de reverse engineering réussissant à explorer ces machines qui sont de pour des raisons de secret industriel souvent était toujours fermées.

Le hardware de la Nintendo Gameboy

Sur la vidéo en haut on peut voir Michael Steil (voici son blog), l’un des hackers qui ont beaucoup contribué au reverse engineering et à la documentation de nombreuses machines. Et dans cette vidéo il fait une intervention lors d’une conférence organisée par le Chaos Computer Club, la plus grande association de hackers en Europe.

Il est vrai que cette vidéo est relativement technique, il devient difficile pour un étudiant dans les premières années universitaires, ou même pour un informaticien n’ayant pas d’expérience de dans le domaine de suivre et de comprendre toute la vidéo. Mais le plus important est d’avoir un aperçu global sur l’architecture d’un matériel réel, et d’essayer d’assimiler les concepts utilisés et les mots clés du domaine, assimiler entre 20 et 30% de la vidéo c’est déjà pas mal. Delà on peut facilement constater le grand écart entre ce qui se fait en université dans les modules de la conception hardware et les architectures matérielles réelles qui de loin sont beaucoup plus complexes.