Analyse hardware de la PlayStation 1

L’une des merveilles technologiques qu’a connu le monde vidéoludique dans son histoire est sans doute la PlayStation 1 de la marque Sony, pour ma part c’est la meilleure console de jeux vidéo de tous les temps. Sa sortie en 1994 a marqué un tournant technologique sans précédent, elle présentait des performances en 3D dépassant de loin son homologue PC, avec un prix 2 à 3 fois moins cher (pour rappel à l’époque de sa sortie les PC tournés encore sur Windows 3.11), une prouesse qui a ébloui toute personne concernée par la technologie. Et une question se posait, comment Sony avait réussi à produire un tel exploit technologique ?

La réponse de nos jours est désormais simple et bien connue, c’est en 2 mots; spécialisation et optimisation. La PlayStation d’un point de vue général n’était pas plus puissante que les PCs de l’époque, mais dans son domaine, en occurrence la 3D, elle était très très en avance, son architecture globalement était orientée vers le rendu 3D en optimisant au maximum les coûts des composants, les concepteurs ont voulu dès le début construire une architecture simple à programmer étant les début de la 3D, avec le moindre coût. Sur le diagramme en bas on peut avoir un aperçu de cette architecture.

Architecture de la PlayStation 1

Un très bon article (voici son lien,c’est aussi la source du diagramme) arrive à décortiquer d’une manière relativement détaillée l’architecture. On peut ainsi observer sur le diagramme que la PlayStation 1 dispose d’un processeur de 33.87 MHz dérivé de MIPS et implémentant le jeu d’instruction MIPS I (le même étudié dans le module Architecture des Ordinateur). Généralement MIPS dispose de 4 slots pour rajouter des Co-processeurs, le processeur de la PlayStation n’utilise que 2, le MMU (pour la gestion de mémoire virtuelle) et le GTE (Geometry Transformation Engine) module purement mathématique accélérant les calculs de transformation et des projections géométriques des polygones qui représente une bonne partie du moteur de rendu 3D. Sur le même silicone du processeur se trouve aussi un DMA (Direct Memory Access) automatisant et accélèrent le transfert de donnés entre différentes mémoires, et le MDEC (Motion Decoder) pour la lecture du flux vidéo, en raison que le processeur n’a pas assez de puissant pour le faire d’une manière logiciel, les processeurs actuels (de 4 à 5 GHz) peuvent le faire facilement et ne disposent pas forcément un composant dédié.

Le processeur est ensuite raccordé au bus sur le quel sont rattachés : une RAM de 2 Mo du type EDO RAM, le GPU (Graphics processing unit) responsable de l’affichage graphique, le SPU (Sound Processing Unit) l’unité responsable du son, le CD-ROM controller, le BIOS (Basic Input/Output System) sous forme d’une ROM de 512 Ko contenant principalement le programme de démarrage de la machine, et une interface pour la communication avec les manettes et les cartes mémoires. Le GPU de la PlayStation est relativement primitif, il ne peut essentiellement que dessiner des triangles, sachant que le triangle est la forme primitive élémentaire constituant une scène en 3D, la commande de dessiner un triangle et ses paramètres lui provient du processeur, il dispose d’une mémoire propre VRAM de taille 1 Mo. L’unité de son aussi dispose de 512 Ko de mémoire SRAM. L’image en bas illustre la carte-mère et la disposition physique des composants.

Carte-mère de la PlayStation 1

Voilà, on vient de faire un petit survol sur l’architecture de la PlayStation 1, je vous conseille fortement de lire l’article qui détail beaucoup plus l’architecture, (lien de l’article). Il est probable que je consacrerai dans le futur inchaallah un tutoriel bien plus détaillé et approfondi pour arriver au moins à implémenter des petits programmes sur la machine, ces petits programmes sont généralement appelés démos. En conclusion, il est facilement observable que l’architecture d’une PlayStation 1 et totalement différente d’un PC, on avait vu dans le module de l’Architecture des Ordinateurs que le PC suivait plus ou moins l’architecture de Von Neumann qui est relativement simple, alors que la PlayStation suit un modèle totalement différent, plus éparpillé et plus distribué éventuellement pour optimiser au-mieux les caractéristiques vidéoludique de la machine.

État de l’art sur les processeurs

La vidéo suivante est produite par la chaîne Youtube Computerphile, une excellente chaîne de se spécialisant sur diverses technologies en informatique. La vidéo est animé par le Docteur Steve Bagley (le lien de son site personnel) de l’université de Nottingham en Angleterre, il fait la présentation d’un état de l’art sur le fonctionnement externe et interne des processeurs (CPU). La présentation touche des concepts importants dans l’Architecture des Ordinateurs comme l’architecture de Von neumann, l’interaction CPU-RAM, l’exécution des instructions à travers les compartiments internes du CPU, dont Fetch, Decode, Execute, l’exécution en pipeline et le phénomène du pipeline hazard (ou risques du pipeline), qui exige un traitement spécifique pour certaines instructions.

À l’intérieur du CPU

La nouvelle génération des disques durs SSD M.2 NVMe

Il est bien connu que les disques durs mécaniques HDD à base de technologie magnétique tendent à disparaître, et sont replacés peu à peu par les disques durs SSD (pour Solid State Drive) à base de technologie à mémoire flash, en raison de plusieurs avantages comme la rapidité, la robustesse, l’encombrement, la consommation…etc. Malencontreusement la technologie SSD fait actuellement face à un problème hérité des disques durs HDD, qui utilisent l’interface SATA et le protocole AHCI conçus au départ spécifiquement aux disques durs HDD mécaniques et qui ne deviennent plus optimaux pour la technologie flash, d’où l’émergence de la technologie SSD M.2 NVMe (M.2 étant le l’interface et NVMe le protocole). La vidéo suivante explique plus en détail cette nouvelle technologie.

Disques durs SSD M.2 NVMe

Le Processeur éducatif nommé Scott

À cette période de l’année, à l’université, c’est le summum, le sommet de la course vers la quête de l’apprentissage pour les étudiants. J’ai pu visualiser récrément une excellente vidéo sur le thème qui intéresse particulièrement les étudiants du Module Architecture des Ordinateurs, la vidéo en bas est plus centrée sur la micro-architecture, le narrateur explique le fonctionnement interne d’un processeur, avec en plus son interaction avec les autres composants d’un PC, comme la RAM, le moniteur et le clavier.

Processeur de l’intérieur

Le processeur en question est le processeur Scott, c’est un processeur académique développé par John Scott, le processeur reste comme un processeur simpliste par rapport aux processeurs actuels, mais les concepts de base restent les mêmes. John Scott a probablement acquis les bases de la conception Hardware et la conception des processeurs tout au long de sa carrière en travaillant à la silicon valley dans des entreprises comme Intel et IBM. La conception de ce processeur a abouti au final à un livre ; But How Do It Know? – The Basic Principles of Computers for Everyone, plusieurs autres éléments et informations sont accessibles sur le site consacré à ce livre, www.buthowdoitknow.com

Arduino cheat sheet

Le terme cheat sheet désigne littéralement en Français feuille de copiage, quelque chose que les profs méprisent particulièrement, mais dans ce cas-ci c’est pour la bonne cause. Les cheat sheets ou encore appelés quick refererece ou encore memento, sont généralement des images de grande taille contenant l’essentiel et juste nécessaire formules, concepts ou règles pour un domaine scientifique ou une technologie donnée. Par exemple pour les 2 cheat sheets d’Arduino en bas on trouve les principales formes d’instruction de programmation d’Arduino (quasi identique au C++), les bibliothèques, les caractéristiques matérielles…etc., c’est juste pour titre référentiel ou pour s’en rappeler mais pas pour apprendre ou maîtriser cette technologie. Les cheat sheets y on a pour tous les domaines, mathématiques, physique, chimie, électronique, langages de programmation…etc. Cliquez sur l’image pour agrandir, et utilisez le zoom pour le PDF

Arduino cheat sheet
Arduino-cheatsheet

Le processeur MOS 6502

Personnellement le processeur MOS 6502 est l’un de mes processeurs préférés, pour plusieurs bonnes raisons à mon point de vue, c’est un processeur 8 bits relativement simple avec un jeu d’instructions en tout de 56 instructions, qui en dépit de sa simplicité reste un processeur robuste avec des mécanismes dans son assembleur qui le rendent plus puissant, notamment ses douzaines (ou plus) de modes d’adressage. Le 6502 est aussi un processeur avec un énorme succès commercial, notamment son intégration dans d’importantes machines des années 80, comme le Apple-1, le Apple-2, Commodore PET et 64, la Nintendo NES, Atari 2600…etc. La vidéo en bas est celle d’une conférence sur le processeur, elle est présentée par un nom bien connu dans le domaine du hack du Hardware rétro, c’est Michael Stail (voici son blog), actuellement il est entrain de développer le noyau software d’une nouvelle machine rétro appelée Cammander X16 (plus de détails sur le lien).

Il faut savoir que la présentation est technique, destinée principalement à des connaisseurs dans le domaine, des fins d’études, des doctorants/chercheurs, des hackeurs…etc. Une bonne partie ne serait pas totalement compréhensible par des étudiants de 1-ière ou 2-ème année, mais ça reste toujours une excellente présentation pour avoir une petite idée sur le processeur 6502 et le Hardware en général. La présentation traite trois parties, la 1-ière est celle de l’architecture du processeur, les registres programmables, le jeu d’instructions, les modes d’adressages…etc., ce qui se fait généralement dans un module d’Architecture des Ordinateur. La 2-ème est celle de la microarchitecture, concernant la construction matérielle interne du processeur, sachant qu’un grand travail de reverse engineering a été fait sur le processeur pour comprendre sa microarchitecture, puisque à la base ce processeur est commercial et sa microarchitecture n’a jamais été rendue publique. Et dernièrement, l’extraction des connaissances et l’expertise du fonctionnement du processeur, et une compréhension poussée de son fonctionnement au-delà de son manuel, en créant un simulateur du processeur au niveau transistor (lien du simulateur online), comprendre les bugs hardware et les instructions non documentées…etc. Bon visionnage.

Programmation online des machines rétro

La programmation sur des machines anciennes est très en vogue ces derniers temps, c’est une manière très particulière et plaisante de programmer, dans le sens où la programmation est de très bas niveau, pas de langage évolué, le plus souvent c’est de l’assembleur, le langage C au plus, ça implique aussi une maîtrise totale de l’architecture, car il n’y a pas de système d’exploitation ni de pilote pour les périphériques, ni aucune couche intermédiaire pour faciliter la programmation. Dans un sens c’est très pédagogique dans l’apprentissage des architectures des ordinateurs.

Machines programmables sur 8bitworkshop.com

Le site web 8 bit workshop est un site qui offre plusieurs machines rétro à programmer, dont les consoles Nintendo NES, l’Atari 2600, le PC Apple II+, des machines de jeux arcades…etc, comme c’est présenté sur l’image en haut. L’interface du site web est représentée sur l’image en bas. L’avantage d’utiliser la programmation online est d’éviter de faire l’installation de tous les outils nécessaire pour faire ce type de programmation, comme un éditeur de texte, un assembleur/compilateur, un émulateur, un éditeur de graphique, un débogueur…etc, ça permet aussi de faire la sauvegarde online, et de profiter directement de plusieurs exemples à tester sur le site. Si vous envisagez autrement de faire la même chose sur PC, pour programmer la NES par exemple vous aurez besoin d’installer Notepad++ (ou autres) comme éditeur de texte pour écrire le code source, de cc65 pour compiler/assembler le code, c’est une chaîne à outils pour le processeur 6502 (le processeur de la NES) qui contient entre autres un assembleur, un compilateur C, un éditeur de liens, un débogueur…etc. Mesen un émulateur pour faire tourner votre jeu sur PC comme s’il était sur une machine NES réel, il fait aussi office d’un excellent débogueur. De Asprite et Tiled pour réaliser des graphismes compatibles avec la NES…etc.

Interface de l’IDE NES du site web 8 bit workshop

,Dans tous les cas, la programmation sur les machines rétro donne au programmeur un contrôle total de la machine et ainsi une compréhension accrue du hardware, avec en plus un degré plus élevé de complexité. Tandis que les machines modernes sont plus faciles à programmer mais le prix de cette facilité c’est au détriment de plusieurs couches logicielles, comme les pilotes, les API, le système d’exploitation, qui masquent au programmeur le fonctionnement réel de la couche matériel.

La carte Arduino

Réellement Arduino est un terme qui peut désigner plusieurs choses en même temps, ça peut désigner le hardware qui est une carte sous forme de Kit pour microcontrôleur, comme sur l’image en bas à gauche. Ça peut aussi désigner le software, c’est un IDE pour développer ce qu’on appel des Sketchs, ce sont des programmes à exécuter sur le microcontrôleur de la carte Arduino, c’est représenté sur la photo en bas à droite. Le terme peut aussi designer le projet open source qui englobe le hardware et le software et une communauté réputée très active avec énormément de projets utilisant Arduino (pour plus d’information vous pouvez voir le site web officiel d’Arduino, ou sa définition sur Wikipédia).

La carte Arduino à gauche et l’IDE Arduino à droite

Autrement dit l’Arduino est un microcontrôleur 8 bits, initialement c’était le Atmega 328 de marque AVR, il est programmable avec l’IDE Arduino utilisant un langage spécifique sous forme d’un sous-ensemble du langage C/C++, Actuellement il existe des Arduino à base de microcontrôleur à plus grande puissance comme ceux d’ARM ou d’Intel. Mais pour bien comprendre Arduino il faut tout d’abord définir c’est quoi un microcontrôleur ? Le microcontrôleur est un processeur avec une RAM, une ROM/Mémoire Flash et beaucoup de connecteurs d’entrées/sorties, le tout est encapsulé sur une même puce (comme la puce sur la carte Arduino sur l’image en haut). Le microcontrôleur en soit est de très faible puissance, le processeur est de fréquence de 10 à 100 Mhz, la RAM est de quelques kilo-octets, de même pour la ROM et la mémoire flash. Le microcontrôleur et contrairement à un processeur normal, est destiné pour les systèmes embarqués, il est utilisé à l’intérieur des appareils électroniques pour les contrôler et potentiellement les programmer, on peut les trouver par exemple dans les machine à laver, les robots de cuisine, les imprimantes, les scanners, les voitures, les machines à distributions automatiques…etc, ce sont tous des appareils qui utilisent les microcontrôleurs pour contrôler leur fonctionnement interne, vous pouvez apercevoir quelques exemples sur l’image en bas.

Quelques exemples d’appareils électroniques utilisant les microcontrôleurs

Les microcontrôleurs ont toujours existé, pour plus de 20 ans au moins. À l’université par exemple, au département de l’électronique ont (avant la démocratisation d’Arduino) toujours été connu pour l’utilisation du microcontrôleur PIC, néanmoins ce dernier reste extrêmement difficile à programmer, les étudiants en général ne pouvaient l’utiliser qu’après 5 années d’études. L’Arduino au contraire est extrêmement accessible, pratiquement un étudiant de première année avec quelques connaissances en programmation en C/C++ comme les tests, les boucles et les fonctions, peut facilement programmer sur Arduino. La plate forme Arduino facilite grandement l’utilisation des microcontrôleurs pour les projets concernant des domaines comme les systèmes embarqués, le hardware, le hack, la robotique et l’électronique, vous pouvez voir quelques projets en Arduino sur les images en bas.

Exemples de projets à base d’Arduino

Il existe plusieurs variantes de l’Arduino actuellement disponibles, mais 3 d’entre elles sont plus connus parmi tous les autres, elles sont représentées sur l’image en bas de gauche à droite : l’Arduino uno, c’est l’Arduino standard, l’Arduino nano, c’est l’Arduino minimaliste, et l’Arduino mega, la version étoffée et complète d’Arduino. Tous les trois sont disponibles en Algérie avec des prix abordables pour l’étudiant, allant de 1200 DA à 4500 DA dans les vendeurs locaux d’électronique ou sur Ouedkniss. Plusieurs autres accessoires sont aussi disponibles pour réaliser différents types de projets, vous pouvez voir par exemple sur l’image tout en bas des accessoires comme, des capteurs de distance, des afficheurs, des LEDs, des moteurs, une télécommande, transmission sans fils…etc. L’Arduino reste à mon avis la meilleure porte pour l’étudiant lui permettant d’entrer dans le domaine des systèmes embarqués même pour les étudiants en première année.

De gauche à droite : Arduino uno, Arduino nano, Arduino mega
Accessoires utilisables avec Arduino