2 points par GN⁺ 2023-11-06 | 1 commentaires | Partager sur WhatsApp
  • L’Intel 80386 a été le premier CPU x86 32 bits et, au-delà de cela, il a apporté à la fois une mémoire plate de 4 GiB et la compatibilité avec l’écosystème x86 existant, posant ainsi les bases des systèmes d’exploitation modernes sur PC
  • Au départ, Intel accordait davantage d’importance à d’autres architectures comme l’iAPX 432 et le P7, mais la croissance du marché du PC et la compatibilité logicielle x86 ont conduit l’entreprise à faire de l’achèvement du 386 sa priorité absolue
  • Avec le 386, Intel n’a pas autorisé IBM ni AMD à en assurer une production en second source et est devenu fournisseur unique, tandis que le Compaq Deskpro 386 a ébranlé l’ordre établi des standards PC dominés par IBM
  • Ses performances n’étaient pas écrasantes face aux puces RISC contemporaines, mais le MMU intégré à tous les modèles 386 ainsi que le mode Virtual 8086 ont joué un rôle clé dans la transition vers UNIX, OS/2, Windows, NT et Linux
  • La production de masse de PC à base de 386 a diffusé le MMU jusqu’aux ordinateurs personnels grand public, et la popularisation de Windows comme la naissance de Linux sont étroitement liées à la diffusion du 386

Le x86 32 bits qu’Intel ne voulait pas

  • L’Intel 80386 a été le premier CPU 32 bits de la famille x86, mais il ne faisait pas partie des plans centraux d’Intel à l’origine
  • À la fin des années 1970, le projet le plus important d’Intel était le iAPX 432, conçu pour devenir l’architecture phare des années 1980
    • Le iAPX 432 était un CPU ambitieux qui visait à fournir au niveau matériel des fonctions de programmation orientée objet et d’allocation de stockage adaptées à des langages de haut niveau comme ADA
    • Comme sa conception semblait devoir demander beaucoup de temps avant d’arriver à maturité, Intel a lancé en 1976 le 8086 comme solution provisoire
  • La famille 8086 a remporté le contrat de l’IBM PC, tandis que le iAPX 432, arrivé tardivement en 1981, a déçu en matière de performances
    • À fréquence égale, il ne délivrait qu’environ un quart des performances du 80286, pourtant bien moins cher, dans les benchmarks
  • Même en 1982, Intel ne reconnaissait pas encore pleinement l’importance de la plateforme PC et de la compatibilité binaire logicielle, et le 80286 ressemblait lui aussi davantage à un CPU transitoire
  • Après avoir constaté l’échec de la lignée 432, les ingénieurs d’Intel ont commencé à préparer une nouvelle architecture RISC 32 bits appelée P7

Validation de l’orientation de conception du 80386

  • Bob Childs, l’un des concepteurs du 286, a formalisé de manière officieuse une idée d’extension 32 bits du 286
  • Environ six mois plus tard, Intel a estimé qu’une nouvelle itération de la famille x86 était nécessaire avant que le P7 soit prêt, et a approuvé le développement du 386
    • L’équipe initiale était petite et son budget limité
    • Une étude des besoins des clients x86 a montré que le modèle de mémoire segmentée du 8086 suscitait un mécontentement généralisé, et que le 80286 n’avait pas réellement corrigé ce problème
  • Alors qu’UNIX gagnait en importance sur des stations de travail meilleur marché, l’équipe du 386 s’est fixé pour objectif de concevoir un CPU adapté à UNIX
  • L’exigence la plus importante était l’adressage en mémoire plate
    • Afin de préserver la compatibilité avec l’existant x86, le 386 a conservé une structure segmentée
    • Mais comme chaque segment pouvait désormais atteindre 4 GiB, la présence des segments devenait dans les faits beaucoup moins contraignante
    • La prise en charge de la pagination et de la mémoire virtuelle a également été décidée à ce moment-là
  • Le jeu d’instructions existant et les registres ont été étendus à 32 bits afin de préserver la compatibilité binaire
    • Intel n’a pas retenu l’idée d’un jeu d’instructions totalement différent placé derrière un « en-tête de mode » séparé
    • En contrepartie, il n’a pas été possible d’augmenter le faible nombre de registres qui constituait l’un des points faibles du x86
  • À un moment, l’utilisation d’un nouveau bus prévu pour le P7 a été envisagée, mais l’idée a été abandonnée, car il différait trop du bus du 286 et aurait nécessité une refonte des cartes mères et des puces de support
    • Une approche moins ambitieuse, consistant à étendre le bus existant à 32 bits, a finalement été choisie
  • Aux alentours de 1984, avec la croissance du marché du PC, Intel a compris l’importance de la famille x86, et l’achèvement du 80386 est devenu la priorité absolue
    • Le projet P7 a ensuite débouché sur le i960 en 1988, avec un repositionnement vers le marché embarqué afin de ne pas cannibaliser les ventes du 386

La stratégie d’Intel comme fournisseur unique du 386

  • Le 80386 a été annoncé en octobre 1985
  • À l’époque, il était courant que des sociétés de conception de puces comme Intel accordent des licences de production de leurs CPU à d’autres entreprises afin de disposer d’une seconde source
    • Les clients pouvaient ainsi éviter les pénuries de CPU en cas de problèmes de rendement chez le fournisseur principal
    • Intel et AMD entretenaient une longue relation de coopération depuis l’époque du 8085 et pratiquaient des licences croisées sur leurs produits
    • IBM disposait également, depuis 1983, d’une licence lui permettant de produire directement des 808x et des 80286
  • Avec le 80386, cette pratique a changé
    • Intel estimait qu’il était crucial de devenir fournisseur unique afin de garder le contrôle direct du CPU, le composant le plus précieux du PC
    • IBM était davantage intéressé par de lourds investissements dans le 286 que dans le futur 386
    • L’accord entre Intel et IBM a été renégocié de manière à satisfaire IBM sur le 286, mais IBM n’a pas obtenu le droit de produire le 386
  • AMD non plus ne manifestait pas un grand intérêt pour la production du 386, et l’accord de seconde source conclu avec AMD n’a pas été étendu au 386
  • À peu près à la même époque, l’affaire NEC contre Intel a abouti à une décision reconnaissant que le microcode était protégé par le droit d’auteur et ne pouvait pas être copié sans licence spécifique d’Intel
    • Même si NEC avait pu rétroconcevoir le microcode du 8086, le 386 était considéré comme un objectif quasiment hors de portée en raison de sa complexité
  • À partir de là, Intel s’est retrouvé, aux côtés de Microsoft, en position de contrôler l’avenir du marché du PC

Le Compaq Deskpro 386 et la victoire du PC clone

  • L’IBM PC a été conçu avec des composants du commerce afin d’être lancé rapidement sur le marché, ce qui a permis à d’autres entreprises d’acheter les mêmes composants pour fabriquer des compatibles
  • Le cloneur le plus ambitieux et le plus performant a été Compaq
    • À l’époque, Compaq était l’entreprise ayant atteint le plus rapidement 100 millions de dollars de chiffre d’affaires
  • Compaq a annoncé le Deskpro 386 en septembre 1986, soit presque un an après le lancement du 80386 par Intel
    • Le Deskpro 386 a été le premier ordinateur basé sur le 386
    • C’était aussi le premier PC à ne pas suivre la trajectoire par laquelle IBM cherchait à reprendre le contrôle du marché avec le PC/AT basé sur le 286
  • Bill Gates a déclaré qu’IBM ne faisait pas confiance au 386 et que Microsoft avait encouragé Compaq à construire une machine 386
    • Cet épisode a marqué un tournant en montrant qu’IBM n’était plus seul à définir les standards, et que des entreprises comme Compaq et Intel pouvaient elles aussi imposer de nouvelles directions
  • Le Compaq Deskpro 386 était très cher au départ, mais ses ventes ont été correctes et il a montré qu’IBM n’occupait plus la position de leader incontesté
  • IBM n’a lancé son premier ordinateur 386, le PS/2 model 80, que presque un an plus tard
    • La gamme PS/2 cherchait à reprendre le contrôle via un bus propriétaire très avancé pour l’époque
    • Mais IBM n’était déjà plus en position d’imposer son modèle, et la gamme PS/2 n’a pas rempli cette mission

Le contexte concurrentiel et les performances du 386

  • En 1985, le principal concurrent de la famille x86 d’Intel était la famille 680x0 de Motorola
    • Beaucoup considéraient que le 68000 était très supérieur au 8086, et que le 80286 avait manqué l’occasion d’évoluer vers une architecture plus propre
    • Le 68020 constituait l’évolution naturelle vers le 32 bits des CPU Motorola
  • Avec le 80386, Intel a disposé pour la première fois d’un concurrent réellement sérieux
    • Grâce à son MMU intégré et à son espace d’adressage plat de 4 GiB, il pouvait aussi viser le lucratif marché des stations de travail
  • Sur ce marché, de nombreuses entreprises adoptaient des conceptions RISC
    • Le RISC promettait des puces plus rapides et moins coûteuses à produire
    • Le 386 était un design CISC reposant sur un microcode lourd pour gérer le jeu d’instructions complexe du x86 et les modes d’adressage du 80286
  • Dans les benchmarks, le 386 affichait des performances moyennes
    • L’Intel 80386 à 16 MHz atteignait 4 MIPS, et à 25 MHz 6 MIPS
    • Le Motorola 68030 à 25 MHz atteignait lui aussi 6 MIPS
    • Le Mips R2000 à 16 MHz montait à 16 MIPS, le Motorola 88000 à 16 MHz à 17 MIPS et l’Intel i960CA à 33 MHz à 66 MIPS
  • Sans être révolutionnaires en performances, ses caractéristiques étaient suffisantes pour rester dans la course

Le 386SX et la diffusion du logiciel 32 bits

  • Une fois pleinement engagé sur le 386, Intel a introduit le 386SX en 1988
  • Le 386SX était identique au 386 d’origine sur le plan interne, tandis que le 386 d’origine a été renommé 386DX
    • Son bus de données externe était en 16 bits
    • Il était proposé dans un boîtier plastique moins coûteux
    • Il pouvait être installé sur des cartes mères 16 bits bon marché
  • L’objectif principal du 386SX était de remplacer le 286 dans une gamme de prix comparable
    • Le 286 disposait encore de fournisseurs en seconde source
  • Au début des années 1990, la base installée de 386 était devenue suffisamment importante pour permettre à davantage d’éditeurs de logiciels d’exploiter les capacités 32 bits et des fonctionnalités plus modernes
  • Le fait que tous les modèles 386, y compris les plus abordables, intègrent un MMU a été décisif

Le MMU et la transformation de la gestion mémoire

  • MMU signifie Memory Management Unit, un composant matériel qui convertit automatiquement les adresses virtuelles en adresses physiques
  • Les premiers programmes pouvaient voir l’intégralité de l’espace d’adressage de la machine
    • Tant que cet espace restait petit, cela restait gérable, mais avec l’exécution simultanée de plusieurs programmes et l’impossibilité pour le système d’exploitation de rester en ROM, les problèmes d’isolation sont devenus majeurs
  • L’une des premières solutions a été la segmentation
    • Le registre de segment joue le rôle d’adresse de base
    • Lorsqu’un programme accède à une adresse, une valeur 16 bits est ajoutée au registre de segment pour produire une adresse physique
    • Si la limite de taille du segment est dépassée, un fault est déclenché, ce qui permet une isolation entre programmes
    • Le 8086 utilisait ce modèle segmenté pour les accès mémoire
  • Le 80286 disposait d’un MMU segmenté très riche en fonctionnalités, capable de gérer une mémoire plus complexe et d’accéder jusqu’à 16 MiB
    • OS/2 1.x exploitait ce MMU pour offrir une expérience plus moderne
  • Pour les programmeurs PC, la mémoire segmentée restait très contraignante et difficile à manipuler
  • Les conceptions de MMU plus modernes reposent sur la pagination
    • Le MMU divise l’espace d’adressage virtuel en pages de taille fixe
    • Lors d’un accès à une page, il lit un descripteur de page pour obtenir les informations de traduction vers l’adresse physique
    • Comme ces descripteurs résident généralement en mémoire, un cache TLB contenant les descripteurs récemment utilisés est employé pour des raisons de performance
  • De nombreux OS modernes, en particulier les ports d’UNIX, s’accommodaient mieux de la pagination
    • Certaines stations de travail à base de 68000 utilisaient leur propre MMU externe paginé au lieu du MC68451
    • Motorola a introduit le 68851, un MMU externe pour le 68020

La structure du MMU du 80386 et ce qui le distingue

  • Le 386 devait convenir aux OS modernes tout en restant compatible avec le 8086, le 80286 et les logiciels x86 existants
  • Pour cela, le MMU du 386 a été organisé presque comme deux dispositifs distincts
    • L’un pour le mode segmenté
    • L’autre pour le mode paginé
  • Les deux fonctionnent en chaîne
    • L’adresse logique passe d’abord par l’unité de segmentation pour être transformée en adresse linéaire
    • Si la pagination est désactivée, cette adresse linéaire devient directement l’adresse physique
    • Si la pagination est activée, le processeur récupère les descripteurs de page via le TLB ou en mémoire pour produire l’adresse physique réelle
  • L’unité de segmentation ne peut pas être désactivée, mais il est possible de représenter tout l’espace mémoire sous forme d’un segment de 4 GiB commençant à l’adresse 0, ce qui permet un usage de type mémoire plate
  • L’unité de pagination découpe les segments en pages de 4 KiB
  • Le 80386 a introduit quatre niveaux de privilège, les rings
    • Ils servent à protéger la mémoire privilégiée contre les lectures et écritures non privilégiées
    • C’était l’un des éléments fondamentaux sur lesquels reposent les OS modernes protégés
  • Le MMU intervient aussi dans le mode Virtual 8086
    • Un programme 8086 s’exécute comme s’il contrôlait tout un 8086 disposant de jusqu’à 1 MiB de mémoire
    • Plusieurs machines virtuelles V86 peuvent fonctionner simultanément
    • Les opérations comme l’accès à des ressources protégées déclenchent des interruptions, que des logiciels privilégiés traitent ensuite
  • Le MMU du 386 a été conçu comme une partie intégrée et cohérente du CPU
    • Dans des conditions idéales, il n’affecte pas les performances des accès mémoire
    • Le MC68851 ajoute toujours au minimum un cycle de latence
  • Dans la famille 68000, un MMU n’était pas systématiquement présent
    • Le 68020 nécessitait un MMU externe
    • Les versions EC à bas coût des 68030 et 68040 n’intégraient pas de MMU
  • Sur le 80386, tous les modèles, y compris le 386SX d’entrée de gamme, incluaient un MMU
    • Les programmes exploitant le MMU et les modes de fonctionnement avancés pouvaient donc tourner sur n’importe quel 386

La transition des systèmes d’exploitation rendue possible par le 386

  • Le véritable impact du 386 ne se mesurait pas à ses performances brutes, mais au fait qu’il a rendu possibles les systèmes d’exploitation modernes sur PC
  • Xenix

    • Xenix faisait partie des premiers ports d’UNIX pour micro-ordinateurs, issus de la collaboration entre Microsoft et SCO
    • Un port 8086 avait été annoncé en 1980, mais l’absence de véritable MMU empêchait la protection mémoire ainsi que la séparation entre espace utilisateur et espace noyau
    • La version 286 exploitait le mode protégé et se rapprochait davantage d’un UNIX de station de travail
    • En 1987, le port 386 a réduit l’écart grâce à la pagination et est devenu le premier OS 32 bits moderne à fonctionner sur x86
  • OS/2

    • OS/2 a d’abord été développé conjointement par Microsoft et IBM, avant que Microsoft ne s’en retire pour se concentrer sur Windows
    • Lancé en 1987, il visait au départ le 286
    • Cela s’expliquait par le fait qu’une grande partie de la gamme IBM PS/2 embarquait des 286
    • Il utilisait bien le mode protégé et était considéré comme un OS avancé à l’époque
    • OS/2 n’est devenu un OS 32 bits qu’avec la version 2.0 en 1992
    • Jusque-là, le modèle de mémoire segmentée et l’absence du mode Virtual 8086 limitaient la prise en charge des applications DOS, au point de le laisser derrière Windows/386
    • OS/2 2.0 a été le premier OS 32 bits largement utilisé sur ordinateur personnel
  • Windows

    • À partir de Windows/386 en 1987, Windows a proposé un environnement d’exploitation spécifique au 80386
    • Windows/386 restait cependant un OS 16 bits et n’exposait pas d’espace mémoire plat 32 bits
    • Il utilisait en revanche les fonctions du 386 pour virtualiser les sessions DOS via le mode Virtual 8086
    • Plusieurs sessions DOS pouvaient ainsi s’exécuter en parallèle sans interférer entre elles
    • C’était essentiel pour de nombreuses entreprises dépendantes des logiciels DOS
    • Grâce au MMU, il fournissait aussi de la mémoire étendue par le biais de pilotes en mode protégé émulant l’EMS
    • Cette approche a été améliorée avec Windows 3.0 et Windows 3.1, et Windows 3.1 a rencontré un immense succès
    • Windows for Workgroups 3.11 en 1993 a abandonné la prise en charge des CPU antérieurs au 386, et de nombreux pilotes ainsi que l’accès aux fichiers sont passés en 32 bits
    • Windows 95 a exploité pleinement le MMU du 386
      • Il exposait un espace mémoire plat
      • Il utilisait la pagination et la mémoire virtuelle
      • Une partie du code restait 16 bits, mais DOS était presque réduit à un simple rôle de chargeur d’amorçage
  • Windows NT

    • Le premier Windows NT est sorti en juillet 1993
    • Alors que Windows 95 a évolué à partir de Windows 3.11 en conservant une partie de son héritage 16 bits, NT a été développé dès le départ comme un Windows 32 bits « pur »
    • L’une des caractéristiques majeures de NT était son indépendance matérielle, mais son port le plus important visait le 80386
    • Il utilisait pleinement la pagination, le supervisor mode et la protection mémoire
    • NT partageait pratiquement la même API que Windows 95, ce qui lui permettait d’exécuter de nombreuses applications Win32
    • NT4 a commencé à influencer le marché des UNIX pour stations de travail au milieu des années 1990
    • Windows 11 est un descendant direct du noyau NT
  • Linux

    • Le système d’exploitation le plus étroitement lié au 386 est Linux
    • Linus Torvalds a acheté un nouveau PC 386 vers janvier 1991
    • Puriste de l’informatique formé sur le 68008, Linus n’aimait pas les PC, mais il a expliqué que l’arrivée du 386 les avait soudain rendus séduisants
    • Le 386 pouvait faire ce que faisait le 68020
    • En 1990, il était devenu bien moins cher grâce à la production de masse et à l’arrivée de clones bon marché
    • Ce PC 386 convenait parfaitement à Minix, un petit clone d’UNIX destiné à enseigner les principes internes des systèmes d’exploitation
    • Linus n’étant pas satisfait de l’émulateur de terminal de Minix, il a commencé à écrire le sien
    • Un bon terminal était important pour se connecter aux ordinateurs de l’université
    • Il l’a écrit en bare metal afin d’apprendre le fonctionnement du matériel 386
    • Il a mis en place la gestion du clavier et l’affichage à l’écran
    • En concevant le tout autour de deux threads indépendants, il a écrit un petit task switcher
    • Pour télécharger des programmes, il lui fallait un pilote de disque pour les stocker, et en ajoutant les fonctionnalités une à une, il a fini par former le système d’exploitation qui allait devenir Linux
    • Au milieu de 1991, Linus a demandé une copie de la spécification POSIX et, le 25 août 1991, il a annoncé sur le groupe de discussion comp.os.minix qu’il travaillait sur un nouveau système d’exploitation
    • Il l’avait alors décrit comme « just a hobby, won’t be big and professional like gnu »

L’impact de long terme du 80386

  • Le 80386 est souvent considéré comme le CPU le plus important de la famille x86
  • Techniquement, c’était une bonne puce, mais pas une révolution en matière de performances, et elle restait derrière les puces RISC contemporaines sur ce terrain
  • L’essentiel résidait dans son MMU moderne et rapide ainsi que dans ses multiples modes de fonctionnement
    • Il permettait d’accéder à 4 GiB de mémoire plate
    • Il conservait la compatibilité avec les logiciels x86 existants
    • Il a permis à Windows de se moderniser progressivement
  • Les capacités de gestion mémoire du 386 étaient suffisamment bonnes pour que les CPU qui lui ont succédé deviennent plus puissants sans ajouter grand-chose de majeur dans ce domaine pendant près de 20 ans
  • Le noyau principal de Linux n’a abandonné la prise en charge du i386 qu’en 2013
  • Sur le plan commercial aussi, l’importance du 386 a été considérable
    • Intel ne croyait pas au départ à la demande pour un x86 32 bits, mais a fini par comprendre que le x86 représentait l’avenir
    • Ce changement a envoyé au marché un signal clair que le x86 allait perdurer
    • L’adoption du 386 par les grands fabricants de clones a contribué à écarter IBM et à montrer qu’il existait une alternative ouverte crédible
    • En devenant l’unique fournisseur du CPU x86 le plus puissant, Intel a franchi une étape décisive vers sa domination du marché des processeurs
  • Avec la production de masse des machines à base de 386, les prix ont rapidement baissé et l’accès à un MMU s’est démocratisé
    • Windows a introduit l’informatique moderne auprès de millions de personnes
    • Le noyau NT a montré qu’un OS robuste pouvait tourner même sur des PC bon marché « beige »
    • On peut dire que Linux est à ce point lié au 386 qu’il n’aurait probablement pas existé sans lui

1 commentaires

 
GN⁺ 2023-11-06
Avis de Hacker News
  • Je pense que la conception finale du 80386 a beaucoup bénéficié du Motorola 68000 et du m68020 qui a suivi.
    Si Motorola n’avait pas sorti un vrai CPU 32 bits sans compromis, Intel aurait probablement proposé encore une solution provisoire après le 80286. Le 80286 lui-même n’était pas vraiment destiné à être le véritable successeur du 8086/8088.
    Même le 80386 réel comportait beaucoup de compromis. À part une file de prélecture d’instructions de 16 octets, il n’avait aucun cache, alors que le m68020 avait un cache d’instructions de 256 octets. Il n’avait pas non plus d’instructions atomiques, et LOCK n’était pas très utile pour cela ; c’est pourquoi beaucoup d’OS actuels prennent en charge le 80486 mais pas le 80386. À cause de la compatibilité 8086, qui imposait le mode réel ou VM86, il a fallu assez longtemps avant que les logiciels exploitent les nouvelles fonctions du 80386.
    Cela restait néanmoins une puce importante, et elle montrait déjà les premiers signes d’un schéma qui deviendrait familier chez Intel : des tentatives de ne pas concurrencer x86, ou de créer d’autres marchés au détriment de x86 (iAPX 432, puis l’Itanic vingt ans plus tard), des fonctionnalités ajoutées à la hâte comme celles du 80286 et qu’il a ensuite fallu traîner éternellement au titre de la compatibilité legacy, ou encore le fait de rattraper tardivement les autres quand ils avaient tous une fonctionnalité que tout le monde voulait (la prise en charge 32 bits plate à l’époque, puis la prise en charge 64 bits vingt ans plus tard).

    • La machine sur laquelle Linus Torvalds a écrit le premier noyau Linux était un 386, et le fait que Linux ait pris en charge dès le départ les nouvelles fonctions du 386 a été l’une des raisons de son essor rapide.
    • Je me demande si l’absence d’instructions atomiques sur le 386 a vraiment été si importante. À ma connaissance, le 386 n’avait pas de multiprocessing symétrique (SMP), et dans un environnement monoprocesseur, désactiver les interruptions permet de rendre les opérations atomiques.
  • À l’époque, Intel traversait une grave crise, et toute l’entreprise jouait gros sur la réussite de cette puce.
    Elle aurait très facilement pu prendre la mauvaise direction, comme Data General, Honeywell, CDC, AST, Tandy, Olivetti, Xerox, DEC Rainbow, AT&T Hobbit, Wang 2200 ou Unisys. Il y a là un fort biais du survivant. La plupart des géants d’autrefois, comme SDS, SDC ou Fairchild, sont aujourd’hui presque oubliés.
    À l’origine, l’histoire d’Intel était plutôt celle d’un fabricant de mémoire. On peut considérer qu’elle se trouve encore aujourd’hui dans une position tout aussi délicate. Sa part de marché dans le mobile et l’électronique grand public est pratiquement de 0 %, et même dans ses derniers bastions essentiels, NVIDIA, AMD et ARM avancent comme s’ils pillaient son château. J’espère qu’Intel s’en sortira cette fois encore.

    • Le choix d’Andy Grove de faire passer Intel de la mémoire aux microprocesseurs a été une décision stratégique remarquable.
      « Le succès d’une entreprise porte en lui les graines de son autodestruction. Le succès engendre la complaisance, et la complaisance engendre l’échec. Seuls les paranoïaques survivent. »
      La direction d’Intel dans les années 2010 n’a pas assez prêté attention à cette phrase.
    • Le DEC Rainbow aurait pu s’en sortir correctement s’il n’avait pas obligé les gens à acheter des disquettes propriétaires à 5 dollars pièce.
      DEC aurait dû emballer le LSI-11 comme une machine grand public. Les logiciels existaient déjà, et ils étaient d’un très haut niveau. J’avais un H-11, c’était une excellente machine.
    • NVIDIA ne sait pas faire de bons CPU, et même ses SoC sont difficilement considérables comme à la pointe. À part des secteurs qui se soucient surtout de l’approvisionnement longue durée en composants, comme l’automobile, et la Nintendo Switch, son adoption sur le marché grand public est très limitée.
      Si la Switch utilise encore un chipset Tegra datant de 2015, c’est probablement parce que même une entreprise aussi grande que Nintendo n’a pas pu pousser NVIDIA à produire une nouvelle conception. ARM ne fabrique pas de CPU serveur largement disponibles pour le grand public, et les produits existants sont tous accaparés par les fournisseurs cloud. En dehors du Mac, il n’existe pas non plus de CPU ARM vraiment utilisables pour ordinateurs de bureau ou portables. Qualcomm a plombé ce marché pendant plusieurs années.
      Tant qu’ARM ne proposera pas une solution capable de rivaliser avec Rosetta, et que Qualcomm ne sortira pas de cette mentalité consistant à lancer un produit dès qu’il « tourne à peu près » — une approche qui peut passer chez les fabricants de smartphones mais pas sur le marché PC/desktop — l’adoption d’ARM sur ce marché paraît difficile.
      Au final, la seule menace qui reste pour Intel est AMD, mais AMD n’a pas la capacité de production en fabs suffisante pour menacer réellement le fossé défensif d’Intel. Cela peut être, ou non, très frustrant pour l’état de la concurrence dans l’informatique généraliste.
    • Quel est l’espoir d’Intel aujourd’hui ? Existe-t-il au moins un CPU desktop dérivé de Quark, façon Dothan ?
  • J’aimerais qu’on arrête de plaquer sur le 386 l’interprétation rétrospective du « 32 bits plat ». Ce n’était manifestement pas l’objectif ; il s’agissait plutôt d’adopter des fonctions importantes d’architecture à capacités, considérées à l’époque comme l’avenir
    C’est le contexte d’avant que des idées comme Unix/C/RISC/le modèle à superviseur unique ne supplantent, dans des domaines comme la sécurité, les trente années précédentes de recherche sur les OS de mainframes et de mini-ordinateurs
    Ce que cet article ne précise pas vraiment, c’est que les registres de segment devenaient désormais, en gros, des indices de sélecteur dans une table dotée de champs adresse de base + longueur (en pages ou en octets) et de contrôles de droits d’exécution. Et ces sélecteurs, ainsi que la GDT/LDT/IDT/TSS, les call gates, task gates, etc., étaient tous conçus pour prendre en charge une hiérarchie de privilèges à quatre niveaux, par exemple utilisateur/bibliothèque/pilote/noyau
    En faisant circuler des sélecteurs d’accès, on pouvait aussi imposer des choses comme des limites de taille de structures de données ; c’est pour cela que FS/GS ont été ajoutés, afin que chaque registre général puisse avoir son propre masque de permissions
    Si l’on y repense un instant, un pointeur (une capacité, c’est-à-dire un sélecteur) pouvait avoir non seulement une adresse de base, mais aussi une limite imposée par le matériel, et le modèle de permissions pouvait empêcher une fonction comme strcpy() d’écrire dans une mémoire autre que le tampon cible ou son propre espace de travail. Le langage et l’OS pouvaient empêcher une fonction appelée d’écrire dans la pile de l’appelant, voire l’obliger à s’exécuter sur une pile entièrement séparée. Et ce n’était que le début
    Près de quarante ans plus tard, l’industrie essaie encore de se remettre de l’erreur qui a consisté à concevoir les OS et les langages de programmation autour d’un modèle mémoire plat et d’un simple modèle de privilèges utilisateur/superviseur. Le 386 fournissait un support matériel pour écrire des fonctionnalités d’OS qui restent rares aujourd’hui. Il suffit de regarder CHERI, par exemple

    • Même si un « pointeur (une capacité, c’est-à-dire un sélecteur) peut avoir non seulement une adresse de base, mais aussi une limite imposée par le matériel », il n’y a que 8 000 pointeurs possibles dans la LDT, et 8 000 dans la GDT. Le modèle de segments x86 n’est pas très adapté à l’implémentation de capacités
    • Cela fait longtemps que je ne suis plus grsecurity, mais je ne serais pas surpris que les registres de segment soient encore utilisés. Par exemple dans le cas de PaX UDEREF
      https://forums.grsecurity.net/viewtopic.php?f=7&t=3046
      https://pax.grsecurity.net/docs/PaXTeam-H2HC12-PaX-kernel-se...
    • Le mode protégé fondé sur les segments, dans son ensemble, avait déjà été introduit avec le 286. Le 386 s’est surtout contenté d’ajouter FS/GS et de porter les segments à 32 bits
  • Je veux souligner à quel point le 386SX a été important. Mon père voulait un PC pour moi et a demandé à un ami de lui assembler un clone de 286, mais cet ami lui a finalement donné un 386SX
    Il a dit : « c’est presque le même prix qu’un 286, mais ce que tu reçois est clairement un CPU 32 bits », et il avait raison. Je pouvais faire tourner Win 3.11 dessus. Un CPU 32 bits disponible au prix d’un 286, donc relativement abordable : c’était un produit génial

  • Le 286 mérite aussi une certaine reconnaissance ici. Le 286 avait un débit d’instructions par cycle bien meilleur que la génération précédente, ce qui en faisait une puce assez sous-estimée, et cela conduit à l’un des principaux reproches faits au 386
    Lorsqu’il exécutait du code 16 bits existant, le débit d’instructions par cycle du 386 était fondamentalement le même que celui du 286, et ses premières fréquences, à 12 MHz, étaient assez peu enthousiasmantes. Tant que les fréquences n’ont pas vraiment augmenté et que les gens n’ont pas commencé à utiliser les fonctions 32 bits, il n’était guère plus qu’un concurrent DOS/286 coûteux

  • Peu après la sortie du 386, alors que j’étais adolescent, j’ai acheté mon premier ordinateur. À l’époque, il y avait à la fois des PC 286 et 386 sur le marché, mais le 386 coûtait nettement plus cher
    Je ne comprenais pas bien la différence à ce moment-là, alors j’ai acheté un système 286, et quelques années plus tard, quand j’ai compris, j’ai beaucoup regretté de ne pas avoir économisé davantage pour prendre un 386. Peu après, j’ai commencé à écrire de l’assembleur bas niveau, comme le bootstrap système d’un OS jouet, mais je ne pouvais pas utiliser le mode protégé 32 bits. En plus, à un moment donné, des jeux réservés au 386 ont commencé à sortir, et je me suis senti assez mis à l’écart jusqu’à l’achat de mon premier 486

  • Intel a fait évoluer la famille x86 après le 386 jusqu’au Pentium Pro puis à amd64 ; je me demande pourquoi Motorola n’a pas fait de même avec le 68k
    J’ai déjà vu des discussions qui traitaient comme une évidence l’idée que le 68k était devenu obsolète et devait être remplacé par PowerPC, mais cela ressemble à de la spéculation. Je n’ai jamais vu d’argument technique, et le 68k me paraît être une architecture plus propre à faire évoluer que le x86 après le 286

    • Il ne se vendait pas assez d’ordinateurs utilisant le 68k pour créer une demande suffisante de puces ; ils ne pouvaient donc pas rivaliser avec Intel sur les prix, ni justifier de gros investissements en R&D. Intel avait le marché des compatibles PC, et donc une demande énorme pour ses puces
    • Le problème n’était pas technique : c’était l’absence de la « montagne d’argent » à laquelle Intel avait accès, combinée au fait que les clients exigeaient la rétrocompatibilité
      Intel a lui aussi essayé au moins deux fois de migrer vers l’i860 ou Itanic, sans succès. Améliorer x86 est donc devenu le choix gagnant
      https://news.ycombinator.com/item?id=37796469
    • Si l’on demande s’il y a eu des tentatives commerciales de construire des systèmes IDE, VESA, PCI autour de processeurs 68k, il y en a eu dans une certaine mesure. Il y avait le bus VME
      C’était une tentative de créer un bus standard fonctionnant entre plusieurs fournisseurs et adapté aussi aux CPU 88k. Ce n’a pas été un immense succès, mais cela a quand même eu un certain succès
  • L’expression « le plus important » me semble contenir un peu d’interprétation rétrospective. Si le 8086/8088 ne s’était pas imposé par accident via l’IBM PC, il n’y aurait probablement pas eu de 80286, et encore moins de 80386
    Cela dit, le 386 a été une réalisation d’ingénierie qui a changé le monde. Dans une chronologie plus juste et plus équitable, je pense que le 68030 aurait dominé le monde, mais on ne peut pas dénigrer ce qu’Intel a accompli

    • Pour le 386, peut-être, mais le 286 était probablement déjà terminé, ou presque, au moment du lancement de l’IBM PC
  • Le 386 a été le premier de cette famille à prendre en charge la mémoire virtuelle avec pagination à la demande, ce qui a considérablement élargi ce que les OS pouvaient faire. Personnellement, je considère que c’est la fonctionnalité la plus importante apportée par le 386
    Mon deuxième PC était un 386 qui faisait tourner SCO UNIX. Mon premier PC était un Heathkit H-8 à base de 8080 qui faisait tourner CP/M

  • J’ai été surpris par le passage indiquant que Bob Childs était l’un des concepteurs du 286 et qu’il avait, de façon informelle, réfléchi pendant environ six mois à l’idée d’une extension 32 bits du 286
    Comment une telle chose est-elle possible ? En 30 ans de carrière, je n’ai jamais eu un poste où personne ne me mettait la pression pour produire quelque chose de visible tous les quelques jours.