Quel mécanisme de micrologiciel / matériel permet un arrêt forcé?

41

Bien que je ne le sache pas avec certitude, je suis à peu près sûr que le fait d'appuyer sur le bouton d'alimentation de tous les ordinateurs les forcera à s'éteindre après différentes durées. Ceci est particulièrement utile si l'ordinateur se bloque ou si une autre erreur nécessite un redémarrage total.

Ce qui m'intéresse, c'est de savoir si ce mécanisme d'arrêt forcé est codé en dur dans les microprogrammes sous-jacents de l'ordinateur. Ou si cela est intégré à l'ordinateur au niveau matériel. Si le mécanisme était un microprogramme, il est logique de supposer qu'une erreur au niveau de la CPU empêcherait ce mécanisme de se déclencher correctement, ce qui m'amène à penser qu'il s'agit d'une fonction matérielle.

Pour résumer: le mécanisme universel (je suppose) d’arrêt de la force est-il intégré au niveau du matériel ou du microprogramme? Et quelqu'un peut-il élaborer sur les mécanismes de la nature, des variantes et de l'histoire générale?

utilisateur4493605
la source
7
@EJP Faux. Voir ma réponse :)
DavidPostill
2
Sur certains des périphériques personnalisés avec lesquels j'ai travaillé ont également un bouton d'alimentation souple et sont alimentés par batterie (rendant difficile le cycle d'alimentation difficile pour un utilisateur), nous ajoutons explicitement un microcontrôleur ou des circuits de minuterie + logique séparés (ou une section dédiée sur un FPGA) pour gérer l’alimentation lorsque le micrologiciel est suffisamment complexe pour permettre une mise hors tension forcée s’il est verrouillé par un bogue du micrologiciel.
Jason C
4
La plupart des déclarations avec "tout" sont fausses.
Paŭlo Ebermann
2
En cas d'échec, il existe une autre solution de sauvegarde entièrement matérielle comprenant un câble noir épais à l'arrière avec un connecteur à 3 broches. Si vous supprimez cette option, l'arrêt sera également forcé.
Darren H
3
@ DarrenH pas sur un ordinateur portable avec une batterie non amovible. Flattenter la batterie fonctionnerait, mais la mienne a une durée de vie supérieure à 10 heures (par exemple)
Chris H

Réponses:

45

Le mécanisme d’arrêt de force universel est-il intégré au niveau du matériel ou du micrologiciel?

La carte mère (matériel) et le BIOS (firmware) sont impliqués dans le processus.

La mise sous tension (mise en marche et à l’arrêt) se fait par des circuits sur la carte mère. Les circuits sont déclenchés pour changer d'état par un court-circuit momentané de deux points dans le circuit. Cela se fait par le bouton-poussoir du panneau avant. Une connexion à court terme de ce bouton suffit. Le circuit de la carte mère a également une deuxième et troisième fonction qu’il peut remplir.

Le BIOS est généralement configuré pour que, si le circuit est déjà à l'état ON et que le contact momentané soit maintenu fermé pendant au moins 4 secondes, l'une des deux actions soit effectuée. Soit le système s’arrête immédiatement (comme si vous éteigniez un commutateur), soit la carte mère passe en état de "veille" et attend de se réveiller. Laquelle de ces deux options est faite est quelque chose que vous avez défini dans les écrans de configuration du BIOS. **

C'est la raison pour laquelle la carte mère n'est jamais totalement "Off" dans la plupart des situations d'exploitation. Même lorsqu'il est éteint, une petite partie de celui-ci est consacrée à la vérification des entrées provenant de quelques sources (comme le bouton-poussoir en façade, certains périphériques USB et peut-être un modem), de manière à pouvoir répondre en mettant le système sous tension. système entier. Pour couper réellement toute alimentation, vous pouvez soit débrancher le cordon d’alimentation, soit utiliser l’interrupteur physique situé à l’arrière du bloc d’alimentation pour l’éteindre.

Source Comment fonctionne le bouton d'alimentation?


Les commutateurs modernes ne contiennent aucune magie. En fait, ils sont moins compliqués et coûteux que les véritables interrupteurs physiques.

Ces commutateurs ne sont que des entrées dans un micro-contrôleur. Le microcontrôleur peut dire quand vous appuyez sur le bouton, et le reste est codé par la politique dans le micrologiciel pour décider quoi faire à ce sujet. Le pouvoir est généralement commuté avec des transistors. Cela signifie que le bouton lui-même ne doit pas gérer de haute tension ou de forte intensité, il y a donc beaucoup plus d'options pour le faire et pour qu'il soit petit. Il peut s'agir d'un commutateur à membrane, par exemple, que vous n'utiliseriez jamais pour commuter l'alimentation murale.

Cela signifie qu'un peu de l'appareil est généralement allumé, au moins suffisamment pour alimenter le micro-contrôleur. Cependant, les micro-contrôleurs modernes peuvent consommer une quantité d'énergie infime en ne faisant rien d'autre que d'attendre un signal de commutation indiquant que cette puissance est sans importance dans la plupart des cas.

Dans certains cas, le bouton provoque la mise sous tension du micro lorsque vous appuyez dessus, ce qui active alors certains transistors, un relais ou un autre moyen de le maintenir sous tension. Lorsque vous appuyez sur le bouton pour éteindre l'appareil, le micro ferme tout, y compris lui-même.

Source Comment fonctionnent ces boutons d'alimentation modernes sur les appareils répond par Olin Lathrop

DavidPostill
la source
1
Pour préciser, le bouton d'alimentation est-il géré directement par le processeur principal comme la plupart des codes BIOS ou le microprogramme qui le gère-t-il s'exécute-t-il sur un microcontrôleur comme dans la deuxième partie de votre réponse?
slebetman
3
Je crois que c'est les deux: appuyer sur le bouton génère un événement ACPI pour la CPU, mais il y a aussi une CPU non principale qui la surveille pour implémenter un véritable arrêt forcé s'il est maintenu sans réponse du processeur. Sinon, vous risquez de vous retrouver dans une situation où les interruptions sont désactivées et ACPI est désactivé, et vous ne pouvez pas forcer l'arrêt.
pjc50
6

Le mécanisme d’arrêt de force universel (je suppose) est-il intégré au niveau du matériel ou du microprogramme?

Sans chercher de références, il existe une logique assez simple ici: ils doivent travailler au niveau du matériel car ils ne disposent d'aucun processeur dans le socket.

Bien sûr, le PC ne fera pas tout ce travail alors, mais vous pouvez toujours le mettre sous tension techniquement; Si votre carte mère a la capacité de vous donner des messages (par des bips sonores ou un petit code à 2 chiffres), vous obtiendrez probablement le code "mauvais processeur / pas de processeur". Vous pourrez également l'éteindre avec un appui long, ce qui est la partie importante ici.

De plus, n'oubliez pas que dans tous les cas où le système est dans un état profondément incontrôlable (c'est-à-dire en mode mono-utilisateur / panique du noyau Linux / BSOD, etc.) et à toutes fins utiles dans une impasse, le bouton fonctionne toujours (au moins la longue pression).

Notez que "niveau matériel" est déjà un terme assez large; En d'autres termes, il peut facilement s'agir de quelques transistors à un petit µC dédié avec quelques bits de NVRAM (qui conserveraient les valeurs configurées par le BIOS, par exemple sur le comportement de la presse courte), ce que la plupart des gens appellerait encore "matériel".

AnoE
la source