Données générales du MV / 8000 sur les «bits sans mode»

10

Je lis "L'âme d'une nouvelle machine" de Tracy Kidder où une équipe de Data General conçoit une nouvelle machine (nom de code "Eagle", plus tard nommé MV / 8000). Il s'agit d'une extension 32 bits d'une architecture précédente (Eclipse 16 bits). Un des thèmes tournants semble être qu'ils ne veulent pas créer une machine avec un bit de mode et qu'ils y sont parvenus.

Cependant, il ignore comment cela est techniquement réalisé, et il ne explique pas pourquoi il était si attrayant de créer une machine sans bit de mode. Le livre n'est pas un livre technique, il se pourrait donc que les détails aient été en quelque sorte déformés. Cependant, vous avez le sentiment en lisant ce livre qu'une solution de "mode bit" était courante (et donc réalisable) à l'époque, mais a été jugée peu attrayante par les ingénieurs peut-être pour des raisons esthétiques. Le livre fait également apparaître comme une tâche extrêmement difficile de créer un design sans bit de mode, qui a été en quelque sorte surmonté par cette équipe particulière.

J'ai trouvé cette description de la façon dont cela a été réalisé:

http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt

Il semble s'agir essentiellement d'utiliser une partie précédemment inutilisée de l'espace opcode pour les nouvelles instructions. Je dois admettre que j'étais un peu déçu que ce soit "juste ça". Je pense également que cela laisse encore des questions sans réponse:

Premièrement, comment les processus 16 bits ont-ils vécu dans l'espace d'adressage 32 bits? Parce que je pense que c'est le principal défi de faire une extension 32 bits "sans bit de mode". Par contre, l'extension du jeu d'instructions est une entreprise relativement courante. Comme il n'y a pas de description de la façon dont cela s'est produit, on pourrait supposer que le code 16 bits accède simplement à la mémoire comme il l'a toujours fait, peut-être qu'il voit un certain type de vue virtualisée / mise en banque de la mémoire (avec de nouveaux registres CPU contrôlant où se trouve la première adresse) ou quelque chose comme ca. Mais je ne sais pas s'il y a plus que ça. Dans ce cas, on pourrait affirmer qu'il s'agissait en quelque sorte d'une solution "bit de mode". Les processus en mode 16 bits pourraient fonctionner en parallèle avec les autres processus grâce à des fonctionnalités spéciales ajoutées au processeur.

Deuxièmement, pourquoi était-il si attrayant de créer une machine sans bit de mode? Beaucoup des avantages présentés dans le livre sont que les clients voulaient exécuter de vieux logiciels. Mais cela ne semble pas parler contre un bit de mode, car le but de l'utilisation d'un bit de mode est d'avoir une compatibilité descendante. Quand AMD a étendu x86 à 64 bits, du moins d'après ma compréhension du mot "mode bit", ils ont exactement ajouté un bit de mode. Un bit spécial qui ferait du CPU en mode 64 bits. Et un autre bit qui ferait exécuter un processus dans un "sous-mode" du mode 64 bits (pour permettre la compatibilité avec les applications 32 bits). L'essence du sous-mode est que le CPU interprète le flux d'instructions comme les anciennes instructions 32 bits mais que les accès à la mémoire 32 bits effectués sont résolus en utilisant le nouveau format de tables de pages (configuré par le système d'exploitation 64 bits) et finalement mappé à l'espace d'adressage physique complet. En outre, le code 32 bits peut être préempté par du code 64 bits. Comme la solution Data General, cela a également permis à un programme 32 bits de s'exécuter sous des programmes 64 bits (16 bits vs 32 bits dans le cas DG). Du point de vue du client, il ne semble donc pas y avoir de différence du tout. Par conséquent, le seul avantage aurait pu être dans la mise en œuvre, simplifiant la conception, mais le livre ne donne pas l'impression que c'est le problème, car le bit de mode semblait commun même à cette époque (et il semble que les architectures ultérieures aient également utilisé comme le montre le cas x64).

Je suis sûr qu'il y a quelque chose qui m'a manqué, donc ce serait génial si quelqu'un pouvait discuter plus sur les détails techniques et les vertus de cette conception "sans mode".

Morty
la source
À cette époque - les jours où l'on déplaçait la taille courante des mots de 16 bits à 32 bits - la plupart des nouvelles architectures 32 bits avaient des jeux d'instructions entièrement différents à partir de la même ligne de 16 bits du mfr - même si elles pouvaient également s'exécuter le jeu d'instructions 16 bits avec un "bit de mode". Cela a conduit à une incertitude marketing, car les personnes qui mettaient à niveau des projets vers de nouvelles machines 32 bits ne voyaient aucune raison de rester avec le même mfr - tant qu'il s'agissait d'une nouvelle architecture, pourquoi ne pas choisir le meilleur des nouvelles machines à partir de n'importe quel mfr. Le manque de "bit de mode" suggère une transition "incrémentielle" plus facile: Par conséquent, restez avec DG.
davidbak

Réponses:

8

La réponse est qu'Ed deCastro, président de Data General Management, avait mis en place une équipe d'ingénieurs en Caroline du Nord spécialement pour concevoir le CPU de prochaine génération. Il nous a confié la tâche du support et des améliorations incrémentielles, l'équipe du Massachusetts. Trois fois, nous avons proposé une nouvelle architecture majeure, à chaque fois avec un bit de mode très sensible, et l'avons décrite comme une amélioration incrémentielle modeste. À chaque fois, Ed a vu notre déguisement et a rejeté la proposition, s'attendant à ce que l'équipe de Caroline du Nord réussisse. Ed croyait que quelle que soit la façon dont nous tentions de dissimuler nos propositions, il saurait que c'était une architecture de nouvelle génération si elle avait un bit de mode. Nous avons donc dû proposer une architecture de nouvelle génération sans bit de mode, même si cela la rendait moins efficace. C'est ainsi que nous l'avons dépassé Ed deCastro. Voir l'âme d'une nouvelle machine,

Carl Alsing
la source
Salut Carl, merci pour l'info, oui, j'ai aussi l'impression (en lisant le livre) que la discussion en mode-bit portait beaucoup sur les implications politiques. Bon avec des informations privilégiées - le MV / 8000 semble être un projet très excitant à faire partie.
Morty
6

En théorie, "aucun mode bit" ne vous permettrait d'utiliser l'ancien système d'exploitation 16 bits sans aucune modification, et ce système d'exploitation pourrait lancer des applications 32 bits, bien que les nouvelles applications 32 bits soient bloquées avec 16 bits d'adresse virtuelle, serait donc en mesure d'utiliser les registres 32 bits et les nouvelles instructions, mais se comporterait mal s'ils accédaient à des adresses virtuelles supérieures à .216

Avec un bit de mode, l'ancien système d'exploitation 16 bits aurait dû être modifié pour déterminer si le programme était 16 bits ou 32 bits, puis régler le bit de mode de manière appropriée avant de lancer le programme.

En pratique, il semble que le MV / 8000 ait en fait un bit de mode. Ailleurs sur la page Web de Mark Smotherman à Clemson, il a publié les données générales, ECLIPSE MV / 8000 Principles of Operation , 1980 . Si vous regardez dans l'annexe E (à partir de la page 369), vous verrez que le MV / 8000 avait deux mécanismes de table de pages complètement différents. La machine spécifique avec laquelle le MV / 8000 était rétrocompatible était le C / 350, et le C / 350 avait une unité de protection et d'allocation de mémoire 16 bits spécifique, avec des moyens spécifiques de contrôler cette unité. Pour un fonctionnement logique à physique 32 bits, vous devez plutôt activer l'unité de traduction d'adresse (décrite au chapitre 3, à partir de la page 31).

En pratique, cela signifie que lorsque vous exécutez une instruction 16 bits en mode 32 bits, il est spécifié que les 16 bits les plus élevés de l'adresse logique sont définis sur 0. Il doit également y avoir une spécification sur ce qui arrive à la haute 16 bits d'une adresse lorsque vous exécutez une instruction 32 bits en mode 16 bits, mais je n'ai pas pu la trouver lors de ma brève lecture du manuel.

Il s'agit donc moins de savoir si un bit de mode est une bonne ou une mauvaise chose. C'est plus qu'il n'y avait pas de raison particulièrement bonne d'utiliser un bit de mode pour différencier les instructions 16 bits et 32 ​​bits. Les instructions 16 bits utilisent 16 bits d'adresse logique (avec les 16 bits les plus élevés réglés sur 0) et des registres 16 bits, et les instructions 32 bits utilisent 32 bits d'adresse logique et des registres 32 bits. L'ancien système d'exploitation "ne fonctionne que" sur la nouvelle machine, mais vous pouvez également essayer les nouvelles instructions en exécutant un nouveau programme sous l'ancien système d'exploitation.

Logique errante
la source
Salut OK, cela rend l'objectif avec "pas de bit de mode" plus clair - donc l'objectif était de pouvoir démarrer les o / s 16 bits d'origine, mais toujours de lancer un programme 32 bits à partir de là. Cependant, comme vous le dites, il serait impossible d'utiliser l'espace d'adressage logique 32 bits à partir de programmes 32 bits exécutés dans ce mode. D'une certaine manière, c'est similaire à ce qu'Intel a fait avec la transition de 16 bits à 32 bits. Ici, il était également possible d'exécuter des instructions 32 bits (accéder à la partie supérieure des registres) à partir d'un programme 16 bits (en cours d'exécution, par exemple, sous MS-DOS). Cependant, en même temps, ils avaient ...
Morty
... bits de mode pour entrer dans le "vrai" mode protégé 32 bits (qui permettait également la pagination). Une différence est cependant qu'en mode 32 bits, le codage des instructions 32 bits est différent du codage des instructions 32 bits en mode 16 bits (car la "valeur par défaut" est différente), mais la capacité est la même. D'un autre côté, avec la transition x86 vers 64 bits, le codage des instructions a été complètement modifié, donc un programme 32 bits (ou un programme 16 bits) ne peut pas utiliser les registres 64 bits, etc. / s lancement du processus en mode 64 bits ("Mode long").
Morty
Cependant, on pourrait encore s'interroger sur le bien-fondé de souligner cette conception "sans bit de mode" car il y a tout d'abord un bit de mode, et il semble que ce soit vraiment un cas d'angle ("Running old os, and new application") où il offre tout avantage - la plupart des clients ne voudraient-ils pas utiliser le nouveau système d'exploitation qui peut tirer pleinement parti du matériel? La caractéristique importante ici est que le nouveau système d'exploitation peut exécuter les anciennes applications! Mais comme le lien que j'ai envoyé mentionne, ce n'est même pas possible, les programmes nécessitent une nouvelle liaison et même une recompilation (en raison de changements dans les o / s) rendant le CPU compatible. aspect théorique!
Morty