Pourquoi la puce ROM du BIOS n'est-elle pas faite en utilisant la technologie CMOS?

9

Après avoir lu un cours sur le matériel informatique sur le BIOS / CMOS, je ne parviens toujours pas à déterminer la raison pour laquelle la puce ROM du BIOS n'est pas construite à l'aide de la technologie CMOS, et pourquoi elle est connectée à une puce distincte appelée "CMOS" pour stocker le informations de configuration.

C'est de la note de conférence :

Les programmes sont stockés sur la puce BIOS du système, tandis que les données modifiables sont stockées sur une puce CMOS

Groupe de matériel CMOS : matériel commun, nécessaire mais susceptible de changer - RAM, disques durs, lecteurs de disquette, ports série et parallèle

Je sais que le BIOS est stocké dans une mémoire flash et que la technologie CMOS MOSFET dissipe moins d'énergie par rapport aux autres implémentations.

Pourquoi est-ce seulement la ROM du BIOS qui n'utilise pas CMOS, comme les autres périphériques de stockage - quel est exactement l'avantage? Et pourquoi les informations de configuration du BIOS ne peuvent-elles pas être stockées dans sa propre puce ROM au lieu de la "puce CMOS"?

Kais
la source
1
Le CMOS n'a-t-il pas besoin d'une batterie pour conserver les données? C'est une chose de perdre les paramètres de configuration et d'horloge lorsque la batterie meurt, mais ce serait un désastre si le BIOS était perdu. Vous pouvez modifier votre dernière phrase. Je ne peux pas comprendre ce que vous demandez.
Transistor
1
Le bios est ROM tandis que les paramètres sont RAM
Tony Stewart Sunnyskyguy EE75
1
@Kais aucune partie d'une ROM n'est accessible en écriture. C'est contraire au sens même du terme. Entre les deux technologies - Eraseble programmable ROM a commencé à faire ce que vous proposez est possible, et maintenant que dans la programmation circuit est simple, cela en fait est souvent fait. Mais en même temps, en gardant un faible angle de puissance d'une puce en vie sur la batterie pour être une horloge et de conserver certains paramètres est également devenu possible, de sorte que est également une option utilisée dans certains systèmes.
Chris Stratton
2
« ROM » signifie « lecture seule mémoire ». Il n'est par définition pas accessible en écriture. Typiquement, une ROM réelle implique la personnalisation des couches de métallisation ou même des transistors constitutifs réels. En revanche, il existe de nombreuses sortes de mémoires "Read Mostly" (PROM, EPROM, EEPROM, Flash, etc.) dont le contenu peut être modifié, mais avec plus de limitations de vitesse et de nombre de fois qu'une RAM. En général, aujourd'hui, vous ne trouvez qu'une vraie ROM à l'intérieur d'un processeur (et même alors, il se peut que ce soit quelque chose que vous ne pouvez pas écrire), tandis qu'un périphérique externe va être accessible en écriture avec les bonnes connexions.
Chris Stratton
1
Par exemple, dans un système moderne, vous pouvez avoir une petite ROM à l'intérieur du processeur qui sait lire le contenu d'un flash NOR série en mémoire et commencer à les exécuter. Le BIOS du flash NOR est ensuite exposé à la mise à niveau, tandis que le petit talon de démarrage qui le copie du flash vers la RAM et y saute est définitivement fixé au moment de la fabrication de la puce.
Chris Stratton

Réponses:

33

Vous mélangez la technologie de mise en œuvre avec des termes familiers pour la fonctionnalité.

CMOS - Complémentary Metal Oxide Semiconductor - est une méthode de fabrication de circuits logiques et connexes utilisant des transistors à effet de champ à canal N et à canal P. L'une de ses caractéristiques déterminantes est une consommation d'électricité statique extrêmement faible - l'énergie est presque uniquement utilisée lors d'un changement d'état. En conséquence, une puce de mémoire statique CMOS peut conserver son contenu pendant des années sur une batterie et est un endroit pratique pour stocker des informations semi-permanentes.

Le BIOS et le code de démarrage associé sont traditionnellement stockés dans des périphériques PROM ou EPROM. Les EPROM à l'ère du PC IBM étaient généralement fabriquées dans des technologies pré-CMOS comme NMOS, mais la distinction critique est qu'elles n'étaient généralement pas inscriptibles lorsqu'elles étaient installées sur l'ordinateur, mais uniquement dans un programmeur spécial. De plus, alors que de nombreux systèmes et clones contemporains utilisaient des EPROM, les versions de production réelles de l'IBM-PC utilisaient des PROM non reprogrammables moins chères (les brochages étaient généralement compatibles en utilisation).

La conception PC-AT a ensuite ajouté une mémoire CMOS sur batterie pour stocker des paramètres personnalisables et également (peut-être dans le même appareil) une horloge en temps réel persistante. Cela est devenu familièrement appelé CMOS par les utilisateurs finaux, bien qu'il ne s'agissait bien sûr que d'une utilisation particulière permise par une technologie de puces qui se propageait alors rapidement.

Aujourd'hui, bien sûr, nous n'utilisons plus d'E / PROM parallèles pour le BIOS, mais utilisons plutôt un flash série NOR et transférons le contenu dans une RAM plus rapide pour l'exécution. Les puces FLASH modernes sont en fait constituées de technologies dérivées du CMOS. Et ils peuvent généralement être reprogrammés en circuit. Il appartient vraiment au concepteur du système s'il souhaite mettre des informations de configuration semi-permanentes dans une RAM sauvegardée par batterie ou dans un flash reprogrammable - l'utilisateur final ou le système d'exploitation post-démarrage peut avoir peu de visibilité réelle dans une distinction.

Mais même si le flash est utilisé pour les paramètres, il y aura toujours généralement une horloge en temps réel à faible puissance qui continuera de fonctionner sur batterie.

Chris Stratton
la source
1
Lorsque le CPU démarre pour la première fois, la RAM n'est même pas initialisée (l'initialisation DRAM est complexe). Tout ce qu'il fait est d'exécuter du code à un emplacement spécifique (généralement c'est la puce du BIOS sur SPI, mais soi-disant vous pouvez programmer des démarrages ultérieurs pour rechercher le BIOS sur un PCI ou un LPC hérité pour des raisons de débogage). La seule chose qui est placée dans la RAM est des choses comme l'IVT (Interrupt Vector Table) et le code associé qui ne sont utiles qu'avant de quitter le mode réel. L'exécution réelle du BIOS au démarrage du CPU ne se produit pas en mémoire. Voir wiki.osdev.org/System_Initialization_(x86) pour plus de détails.
forêt
1
@forest - il est peu probable que cela soit vrai, et n'est pas réellement pris en charge par la description assez large de votre lien. Il peut finir par s'exécuter à partir d'un ram de cache réutilisé ou quelque chose, mais l'exécution directement à partir de SPI ne fonctionne tout simplement pas très bien, et il est extrêmement probable qu'elle soit évitée. Il est alors tout à fait évident qu'une fois que la RAM du système principal est en place, le bios va s'exécuter à partir de cela - un tel ombrage était courant même à l'époque des bios EPROM parallèles.
Chris Stratton
1
Oui, une fois la mémoire principale initialisée, les IVT, BDA, EBDA, etc. sont copiés là-bas. Avant cela cependant, il est exécuté directement. Il n'est pas exécuté en cache (ce serait le mode CAR, Cache-As-RAM, qui nécessite une initialisation explicite par le BIOS).
forêt
1
Veuillez consulter stackoverflow.com/questions/5300527/… qui explique cela plus en détail. En particulier, comment le bloc de démarrage du BIOS est exécuté directement sur SPI. Cela est possible en mappant cette zone du BIOS à la mémoire (bien sûr, avant que la mémoire ne soit réellement initialisée, c'est donc comme MMIO). Ce n'est donc pas seulement vrai, c'est vrai.
forêt
Chris Stratton, « mais plutôt d' utiliser série NOR flash et transférer le contenu dans la RAM plus rapide pour l' exécution » Et comment faites vous envisagez ce « transfert de contenu » autre que l' exécution des initiales « déplacement de données » code directement à partir de SPI?
Ale..chenski
12

À l'époque où le PC a été inventé pour la première fois, la majeure partie de la logique était des puces NMOS et TTL énergivores. Le CMOS était très nouveau et les seuls circuits du PC qui l'utilisaient étaient associés à des choses qui devaient fonctionner sur batterie lorsque l'alimentation était coupée, comme la RAM de configuration et l'horloge en temps réel.

De nos jours, presque toute la logique est CMOS, y compris le CPU gourmand en énergie et la mémoire EEPROM flash qui contient le BIOS. Donc, dans un sens, votre question est basée sur une prémisse invalide - l'EEPROM flash est CMOS. Cependant, pour une raison quelconque, le terme "CMOS" dans un PC se réfère toujours uniquement aux fonctions RAM et RTC.

Si vous demandez pourquoi le BIOS n'est pas stocké dans de la RAM volatile plutôt que dans un flash non volatile, c'est parce que les batteries tombent en panne, et l'effacement du BIOS "brique" efficacement l'ordinateur, nécessitant du matériel spécialisé pour le redémarrer.

Dave Tweed
la source
1
"Donc, dans un sens, votre question est basée sur une prémisse invalide - la mémoire flash EEPROM est CMOS" - La phrase "Les programmes sont stockés sur la puce du BIOS du système, tandis que les données modifiables sont stockées sur un CMOS" m'a un peu dérouté, maintenant J'ai compris.
Kais
"Si vous demandez pourquoi le BIOS n'est pas stocké dans la RAM volatile plutôt que dans le flash non volatile, c'est parce que les batteries échouent" Non, je veux dire le contraire - pourquoi les informations sur la puce CMOS ne sont pas stockées dans le flash du BIOS.
Kais
3
@Kais, car une mémoire flash ne peut pas être écrasée arbitrairement, et la gestion de la réécriture de pages entières de mémoire flash complique les choses de manière sujette aux erreurs. En outre, il existe des éléments tels que les journaux d'événements stockés par certains BIOS, cela présente le risque d'user votre flash et / ou de vous retrouver avec des données corrompues si l'alimentation tombe en panne au mauvais moment. Une véritable mémoire EEPROM serait possible - mais a) elle est LENTE à écrire, et b) vous avez quand même une batterie basse consommation pour l'horloge .
rackandboneman
1
... également parce que l'ensemble du système a été conçu avant que le flash ne soit couramment disponible, de sorte que le BIOS a été stocké dans l'une ou l'autre des PROM (qui utilise des fusibles pour déterminer si chaque bit est 1 ou 0, et ne peut être changé que de 1 à 0 mais pas à nouveau) ou ROM masquée (qui utilise une couche de fils métalliques superposés sur la puce pour la programmer et ne peut pas être modifiée du tout après la fabrication), donc un appareil séparé était nécessaire, et tout a été nécessaire pour conserver la compatibilité descendante depuis lors .
Jules
8

Je pense que vous confondez deux utilisations de l'acronyme "CMOS". Il existe des puces entièrement construites avec la technologie complémentaire des transistors MOS. En fait, presque toutes les puces de nos jours sont construites de cette façon, y compris une grande partie des circuits de contrôle numérique sur une puce Flash.

L'autre utilisation du CMOS a persisté dans l'industrie du PC depuis les premiers jours pour se référer à la puce qui stockait certains paramètres et à l'horloge en temps réel avec une batterie connectée. À l'époque (début des années 80), la majeure partie des grosses puces d'un PC étaient de la technologie NMOS et les puces logiques diverses étaient des transistors bipolaires (TTL, LSTTL, etc.). La seule puce CMOS utilisée était la puce RTC et est donc devenue connue sous le nom de "CMOS".

De nos jours, le RTC n'est plus une puce distincte sur un périphérique d'architecture PC. Au lieu de cela, il est intégré directement dans le chipset de la carte mère (qui est d'ailleurs produit avec des circuits MOS complémentaires). Il est rare qu'un BIOS utilise de nos jours la mémoire RAM sauvegardée par batterie dans la partie RTC du chipset pour stocker les paramètres. Au lieu de cela, le BIOS utilise quelques pages du périphérique de stockage Flash SPI pour enregistrer ses paramètres de manière non volatile. En tant que tel, il y a des paramètres minimaux qui se perdent dans un PC lorsque la batterie est déchargée ou déconnectée. Les paramètres minimaux perdus lors de la suppression de la batterie sont certains qui contrôlent le comportement de mise sous tension et de réinitialisation du chipset et ne sont en fait même pas stockés dans des cellules RAM alimentées par batterie, mais plutôt dans des loquets flipflop spéciaux à faible puissance alimentés par la pièce. batterie cellulaire.

Michael Karas
la source
2

Voir aussi /superuser/989499/what-does-a-cmos-chip-look-like : cela nous fournit un lien pratique vers l'original fiche technique MC146818 .

Cette puce a été mappée en mémoire et a fourni des emplacements de 64 octets. 14 d'entre eux étaient pour l'horloge, laissant le reste comme RAM à usage général. La puce entière a été alimentée par la batterie pendant que le PC était éteint, afin de garder l'horloge en temps réel.

pjc50
la source