Articles sur Blog

Le bus PCI Express

L’autre jour je voulais installer un disque dur SSD pour un peu augmenter les performances de mon PC de maison. Lorsque j’ai commencé à chercher les différents modèles SSD sur Internet j’ai constaté qu’il existait 3 différents types de disque dur, les disques durs SSD utilisant le bus SATA, le connecteur des anciens disques durs magnétiques HDD, les SSD utilisant le M.2 NVMe, et surtout ce que je ne connaissais pas avant, c’est les SSD se branchant directement sur le port PCI Express. C’est vrai que le bus PCI Express et pratiquement le principal bus d’extension pour les cartes-mères des PC modernes. Je me rappelle très bien de l’évolution de ce bus, parce que ça a été toujours le seul moyen de rajouter des cartes d’extension aux PC, comme les cartes graphiques, les cartes réseau, les cartes son, les cartes TV, les cartes d’acquisition…etc. Les cartes-mères avant l’apparition du PCI Express utilisaient son grand frère le bus PCI qui avait exactement la même fonction et la même utilisation, mais contrairement aux cartes-mères modernes ces cartes-mères disposaient d’un port différent et spécifique que pour les cartes graphiques, appelé le port AGP. Et en revenant encore plus avant dans l’histoire de l’informatique, avant le port PCI il y avait son ancêtre le port ISA, que personnellement j’ai connu sur ma première carte-mère, mais que je n’ai jamais eu le besoin de l’utiliser.

Introduction à PCI Express

Malgré que le bus PCI Express soit conçu principalement pour être facile à utiliser, mais aussi conçu pour être versatile pour s’adapter à tout type varié de cartes d’extension à rajouter la carte-mère. C’est pour cette raison qu’il n’est pas si simple à utiliser, ou plutôt il est préférable de connaître ses différentes variantes pour ne pas se tromper dans son utilisation, et de bien comprendre son utilisation. La vidéo en haut est une excellente démonstration qui englobe tous les cas d’utilisation de ce port qui est de nos jours indispensable pour nos PC.

La commande réseau Ping

Le réseau informatique fait désormais partie intégrante de notre vie quotidienne, qu’il soit utilisé avec PC, tablette, téléviseur, téléphone portable, console de jeux …etc. Parce qu’on a besoin que tous ces appareils soient connectés à internet. Malheureusement notre réseau informatique à domicile ou au travail n’est pas totalement protégé des pannes et de mal fonctionnement. La détection des erreurs dans les réseaux informatiques n’est pas une tâche aisée, dans la majorité des cas il faut effectuer plusieurs tests, et mener une sorte d’enquête en appliquant la déduction pour essayer de connaître la source exacte de l’erreur. Pour effectuer les tests sur les réseaux usuellement vous aurez à utiliser 2 types d’outils ; les outils matériels comme par exemple les testeurs câbles réseau, ou le Time Domain Reflectometer (dont on a déjà parlé dans cet article). Ou les outils logiciels, il y en a beaucoup, comme par exemple, ping, traceroute, ipconfig (ou ifconfig sur linux), nslookup, netstat. Dans la vidéo en bas de la chaîne PowerCert Animated Videos on va se concentrer sur le plus simple mais le premier à utiliser, c’est la commande Ping. Elle est très simple à utiliser et surtout très efficace pour trouver la source d’erreurs. 

La commande Ping

Comprendre le fonctionnement de son propre PC

Pour un informaticien il est important de comprendre ce qui se trouve dans les entrailles de sa machine. Et le sens du terme comprendre va au-delà de reconnaitre les principaux composants d’un PC, comme par exemple le processeur, la carte-mère, la carte graphique…etc. Mais plus spécifiquement de voir à l’intérieur comment ces composants fonctionnent. Il faut savoir que sur les 20 dernières années, l’architecture des PC a énormément évolué. Comme par exemple la disparition avec le temps du chipset Northbridge et son intégration à l’intérieur des processeurs. Ou aussi l’intégration des cartes graphiques à l’intérieur des processeurs. L’apparition du multicœur qui est devenu maintenant la norme des processeurs. L’apparition du cashe de niveau 3 commun pour tous les cœurs d’un processeur. Les nouvelles technologies de bus comme le PCI-express, l’USB 3, ou le NVMe pour les disques durs SSD…etc.

Architecture d’un PC

La vidéo en haut de la chaîne YouTube Computer Science Lessons, donne une explication relativement approfondie de la composition interne d’un PC. Personnellement je trouve que c’est important de comprendre comment se comporte notre PC et de pouvoir comprendre et suivre l’état des différents composants en suivant leurs profile par un logiciel comme CPU-Z par exemple.

Motifs géométriques de l’architecture islamique

Concernant notre culture arabo-musulmane, on peut dire que nos ancêtres avaient vraiment excellé dans deux domaines artistiques particuliers, qui sont les motifs géométriques utilisés dans la décoration architecturale, et l’art de la calligraphie arabe. Ça m’a toujours fasciné de connaître comment ces motifs géométriques qui semblent à première vue complexes, étaient façonnés. La chaîne Youtube de TEDEd donne quelques techniques basiques utilisées géométriquement pour créer ces motifs. Le procédé est assez simple mais le résultat est majestueux. La première pensée qui m’est venu après avoir vu cette vidéo était de créer un petit programme qui peut générer automatiquement avec peu de configuration ce genre de motif. Ça doit probablement exister, mais personnellement je n’ai jamais croisé un programme qui peut réaliser cette tâche. À mon sens ça présage un fort potentiel et des possibilités infinies. Ça pourrait même faire le sujet d’un projet pour étudiants, avec probablement la bibliothèque graphique C++ RayLib.

Géométrie des motifs islamiques

Le concept de la mémoire virtuelle

Personnellement je suis un enseignant en architecture des ordinateurs, et j’essaye de parler le moins possible dans mes cours de la mémoire virtuelle. Pourquoi ? parce que ça va rajouter un degré de confusion pour la compréhension du fonctionnement de la mémoire pour les étudiants. Malgré ça dans le cas pratique, la mémoire virtuelle est quasiment implémentée dans toutes les machines modernes. Elle se peut qu’elle soit quad même absente dans les systèmes simplistes comme les microcontrôleurs et quelques systèmes embarqués. En tout cas il est très simple de reconnaître si un possesseur utilise la mémoire virtuelle ou non, il suffit de chercher s’il dispose d’un MMU, car c’est le composant en charge de cette technologie.

La mémoire virtuelle

La vidéo en haut de la chaîne YouTube Computerphile expose très bien le concept de la ma mémoire virtuelle, malgré cela j’aimerais juste rajouter quelques observations personnelles. Comme par exemple le mécanisme de la mémoire virtuelle semble a priori apporter de la complexité superflue à la machine, mais en réalité il est très pratique. Car premièrement d’un point de vue technique, il est très simple à implémenter. Et deuxièmement, ça permet d’incorporer beaucoup d’autres mécanismes. Comme par exemple la protection de la mémoire, lorsqu’un programme est limité à son espace et ne peut pas accéder aux données d’un autre programme. Ou encore l’utilisation du swapping ou pagination avec le disque dur, utilisés principalement lorsque la RAM n’a pas d’espace suffisant pour contenir toutes les données d’un programme, ainsi le disque dur prend le rôle d’un approvisionneur de mémoire.

Un dernier point technique concernant l’utilisation de la mémoire virtuelle, c’est que cette dernière est réalisée par un composant interne au processeur appelez le MMU (Memory Management Unit). Dans l’utilisation réelle, le système d’exploitation sollicite le MMU pour gérer la mémoire virtuelle. Il important aussi de savoir que le MMU utilise une partie de la RAM pour sauvegarder ses tables de transition, en ayant en plus une minuscule mémoire cashe dans le processeur s’appelant TLB (Translation Lookaside Buffer), lui permettant d’accélérer les opérations de transition. Bien sûr j’aimerais rappeler que cette mémoire cashe est totalement différente du cache principal du processeur, lui aussi géré par le MMU. 

Monter un PC en 2022 

C’est presque nostalgique pour moi ce type de contenu. Lorsque j’étais étudiant au début des années 2000 j’étais très branché dans le domaine du matériel informatique, ou ce qu’on appelle maintenant en argot le “matos informatique”. Et je me rappelle qu’à l’époque internet n’était pas aussi prolifique qu’aujourd’hui, il y avait peu de sites internet et pas du tout de YouTube spécialiste dans ce domaine. Malgré cela, il y avait une alternative qui me manque aujourd’hui et qui était tout aussi attrayante, c’était les magazines. À l’époque en Algérie, était disponible un magazine que j’appréciais particulièrement, c’était le magazine PC expert. Un magazine mensuel qui à force de le lire va vraiment renforcez vos connaissances dans ce domaine pour devenir un féru en matos.

Montage PC en 2022

C’est une nouvelle époque, les médias ont changé, mais le sentiment d’engouement pour ces nouvelles technologies reste le même. La vidéo en haut de la chaîne YouTube PCBuilderChannel est une excellente vidéo d’introduction au montage PC. Pour ma part, un informaticien doit connaître plus ou moins le processus de construction de sa propre machine, même si c’est un développeur ou un administrateur de base de données et que le hardware l’intéresse peu. 

Les machines virtuelles

L’utilisation des machines virtuelles devient de plus en plus fréquente en cause principalement des vertus que cette technologie dispose et aussi surtout de la puissance fulgurante des PC modernes. Le concept des machines virtuelles est assez simple, c’est tout simplement un logiciel qui permet de simuler où émuler une autre machine sur votre PC. Par exemple vous pouvez aisément installer Linux dans une machine virtuelle créée et émulée par votre système Windows. Ça veut dire en d’autres mots que vous pouvez créer une machine virtuellement à l’intérieur de votre PC. Bien sûr la machine virtuelle va utiliser beaucoup de ressources de votre machine actuelle, mais dans la plupart des cas ça vaut le coup d’installer une nouvelle machine à l’intérieur de votre machine.

Explication de la virtualisation

La vidéo haut et celle de la chaîne YouTube PowerCertAnimated, Je trouve que c’est une excellente vidéo qui permet d’exposer d’une façon concise le concept des machines virtuelles. En contrepartie la vidéo en bas de la chaîne YouTube ExplainingComputers est l’implémentation concrète par l’exemple de l’installation d’une distribution Linux sur une machine Windows en utilisant VirtualBox

Installation de Linux dans Windows

John Carmack le meilleur programmeur au monde !

On va présenter là l’un des meilleurs programmeurs au monde, en tout cas selon les dires de nombreux acteurs de l’industrie du software. John Carmack est un développeur qui a su affirmer sa notoriété au fil du temps sur différents projets. Tout observateur de la carrière de John Carmack peut constater que John avait toujours un pas en avance en technologie par rapport à tout le monde, c’était ce qu’on appelle un précurseur dans son domaine.

La carrière de John avait commencé dans l’industrie des jeux vidéo, avec la société Id Software, cofondé entre autres, avec un très grand nom de l’industrie aussi nommé John Romero. Leur premier grand hit était le jeu vidéo Commander Keen, dans lequel la première fois où les PC implémentaient les jeux en side scrolling 2D (semblable au jeu comme Super Mario Bros), réservé auparavant aux consoles de jeux vidéo équipées du hardware spécifique pour le faire. John Carmack a réussi par des petits hacks à implémenter la même technique sur PC. Le 2-ième hit est Wolfenstein 3D, là encore John Carmack réussit à introduire et à populariser une technologie jusque-là très marginale, et qui va bouleverser le monde vidéoludique après, “la 3D”. À la base, le PC dans les débuts des années 90 n’avait ni la puissance suffisante ni le hardware spécifique pour implémenter la 3D. Pour cela, il fallait aussi utiliser des techniques précises pour le réaliser, car le moteur du jeu Wolfenstein 3D est très particulier, ça permettait de rendre la 3D, mais avec beaucoup de restrictions. Par exemple, tous les murs de l’environnement doivent être construits avec des ongles de 90° suivant le schéma d’une matrice. C’était le prix à payer pour afficher de la 3D sur des machines à quelques mégahertz de puissance. Le 3-ème hit est Doom, et là encore c’est une grande révolution, puisque historiquement c’est le jeu qui a lancé le genre des FPS (First Person Shooter), et toujours avec des restrictions sur le moteur pour pouvoir afficher de la 3D avec quelques dizaines de mégahertz maintenant sur les machines et sans utiliser de l’accélération hardware 3D. Le 4-ème hit et le jeu Quake, est encore une fois une nouvelle révolution dans le domaine vidéoludique, c’est l’apparition du multijoueur online.

John Romero le cofondateur de Id Software, travaillant sur Doom (1993)

En 2013 Carmack rejoint la société d’Oculus VR pour entamer une nouvelle orientation dans sa carrière. Pour rappel la société Oculus VR est une société spécialiste dans la réalité virtuelle et la réalité augmentée. C’est une société qui a été acquise par Meta (anciennement Facebook) et ces produits représentent maintenant le fer de lance de Meta pour son projet de réalité virtuelle appelée Metaverse. Entre-temps Carmack a aussi l’occasion de toucher diverses technologies dans sa carrière, dont la technologie aérospatiale des diffusés, l’énergie de la fusion nucléaire, et récemment la technologie de l’intelligence artificielle. Plus précisément, de l’Intelligence Artificielle Générale (ou AGI). C’est de l’intelligence artificielle pour la création d’agent autonome qui a la capacité d’apprendre ce que peut apprendre un humain normal. C’est le genre d’intelligence artificielle qu’on voit dans les films de science-fiction. Apparemment c’est la technologie que Carmack consacre le plus de temps actuellement.

John Carmack reçu dans le Podcast de Lex Fridman

Sur la vidéo en haut, on peut voir un podcast ou interview de 5h de Camark fait par Lex Fridman (voici sa chaîne YouTube et le lien de son site web), un enseignant-chercheur dans l’université d’MIT, et une figure bien connue dans le domaine de l’intelligence artificielle. La discussion est très enrichissante, ça permet de mettre en lumière la manière de penser de l’un des meilleurs programmeurs au monde, et aussi avoir un aperçu sur l’univers de la haute technologie. 

Adresse IP

Que vous soyez informaticien ou pas, à un moment ou un autre dans votre vie vous aurez à faire face à ce qu’on appelle les adresses IP. Les adresses IP impliquent le plus souvent votre réseau informatique à l’intérieur de la maison et la connexion à Internet. Ils sont généralement vus par le commun des mortels comme des nombres magiques et incompréhensibles. Mais en réalité c’est tout autre, il suffit de les représenter sous format binaire pour qu’ils deviennent très simples à utiliser.

Par définition une adresse IP est une adresse unique donnée à une machine dans un réseau informatique. Ils sont utilisés pour identifier les différentes machines et de pouvoir simplifier la communication entre elles. Ajouter à cela, le masque sous-réseau qui est un mécanisme qui permet de structurer, de hiérarchiser, et de subdiviser un grand réseau en plusieurs petits réseaux plus maniables et plus organisés. La vidéo en bas de la chaîne YouTube PowerCert est une excellente vidéo pédagogique pour faire comprendre la notion l’adresse IP pour un utilisateur lambda.

Adresses IP et masques sous-réseaux

Apprendre le Python

Sans exagération ni de subjectivité, actuellement le langage Python et l’un des langages les plus utilisés en informatique. C’est un langage plutôt orienté vers les applications de bureau, les serveurs web, le calcul scientifique, script et automatisation des tâches, l’intelligence artificielle, data science…etc. D’un point de vue pédagogique, on peut clairement distinguer deux écoles de formation de programmation. L’école classique, comprenant entre autres le langage C et C++. C’est l’école dans la manière de formation se focalise sur une compréhension bas-niveau de la programmation, l’étudiant généralement, assimile en profondeur le fonctionnement de la machine. En contrepartie, il lui est très difficile de réaliser une application complète et finie. La deuxième école se focalise sur un apprentissage haut-niveau, et ça implique généralement le langage Python ou Javascript. Dans lesquels les concepts de programmation sont étudiés d’une manière générique, mais avec l’accès à un arsenal d’outils prêts à être utilisés à la volée. Avec cette dernière école, il devient plus facile de concevoir des applications complètes et prêtes à être utilisées, même si elles sont le plus souvent des applications ballonnées et peu optimisées. La vidéo en bas présente un cours très structuré, et très abordable pour les débutants concernant le langage Python. Ça a été réalisé par l’académicien Mosh Hamedani, possédant une chaîne YouTube et ainsi site web CodeWithMosh.com avec plusieurs vidéos et cours pour apprendre différents langages de programmation. 

Cours en Python