Table of Contents
Comprendre l'ombrage du registre et ses avantages dans les systèmes embarqués
L'ombrage de registre est une technique fondamentale dans la conception de systèmes embarqués fiables et sûrs. Il s'agit de maintenir une copie de logiciel et un ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Qu'est-ce que l'ombre d'un registre?
À son cœur, l'ombre d'un registre duplique le contenu d'un registre matériel dans un emplacement de mémoire que le logiciel peut lire et écrire rapidement. Les registres du matériel contrôlent les périphériques, les minuteurs système, les contrôleurs d'interruption et les fonctions de processeur de base. Directement, lire ou écrire ces registres peut introduire des problèmes de synchronisation, des conditions de course, ou des effets secondaires accidentels.
- Lisez l'état actuel prévu sans avoir besoin d'une transaction de bus.
- Valider les modifications proposées avant de les engager sur le matériel.
- Restaurer un bon état connu après une erreur système ou une erreur transitoire.
- Fournir une vue cohérente de l'état du matériel sur plusieurs composants logiciels.
Les registres d'ombre sont généralement stockés dans une mémoire vive accessible au processeur. La technique est particulièrement utile lorsque les registres ont des effets côté lecture (p. ex., en supprimant un drapeau d'interruption en lecture) ou lorsque les mises à jour matérielles sont asynchrones au flux logiciel.
La différence entre le miroir et le tampon
L'ombre n'est pas la même que le miroir du registre matériel, où plusieurs registres physiques détiennent la même valeur pour fournir une redondance (p. ex., dans les conceptions tolérantes aux défauts). Il n'y a pas non plus un simple tampon logiciel utilisé pour encacher les valeurs du registre. L'ombre du registre véritable implique que la copie du logiciel est l'image faisant autorité de ce que le registre matériel devrait contenir. Toute écriture dans l'ombre est éventuellement appliquée au registre matériel (souvent par une routine de retour d'écriture dédiée), et toute lecture de l'ombre est censée correspondre au matériel à moins qu'une erreur ne se soit produite.
Avantages de l'ombre d'enregistrement
Nous examinons ci-dessous chaque avantage en détail, illustrant comment l'ombre contribue directement à la justesse et à la robustesse du système.
Sécurité accrue
Dans les systèmes critiques pour la sécurité, un enregistrement non intentionnel peut causer un comportement imprévisible d'un appareil, pouvant entraîner des dommages matériels ou des dommages humains. L'enregistrement d'ombres permet d'atténuer ce risque en exigeant du logiciel qu'il valide d'abord une nouvelle valeur proposée contre le registre d'ombre avant d'écrire sur le matériel. Par exemple, un contrôleur moteur peut masquer le registre du cycle de travail PWM. Le logiciel peut vérifier que le nouveau cycle de travail se situe dans les limites autorisées (p. ex. 0% à 100%) et qu'aucune écriture simultanée n'est en attente avant la mise à jour du registre du matériel réel.
De plus, si une valeur corrompue est inscrite au registre du matériel en raison d'un bug logiciel ou d'un bit-flip dans le bus, la copie d'ombre peut être utilisée pour restaurer l'état correct. De nombreuses normes de sécurité, telles que ISO 26262 (automotive) et CEI 61508 (industriel), exigent des mécanismes qui détectent et récupèrent les défaillances d'un seul point.
Fiabilité accrue
La fiabilité des systèmes embarqués dépend de la capacité de détecter et de gérer avec grâce les erreurs. En comparant la valeur du registre d'ombres avec la valeur réelle du registre matériel (en utilisant soit un firmware scrut, soit un logiciel de lecture assistée), le système peut détecter des anomalies qui indiquent une erreur transitoire, une écriture mal acheminée ou une défaillance du registre lui-même.
Par exemple, dans un contrôleur d'interface réseau (NIC), l'ombre du pointeur de queue du descripteur transmis peut être jumelée au registre matériel après la fin d'une opération DMA. Un défaut de concordance peut indiquer que le moteur DMA n'a pas correctement mis à jour le pointeur, permettant au logiciel de récupérer en réinitialisant la file de descripteurs plutôt que de perdre un paquet.
Réponse plus rapide
Les registres d'ombres permettent aux logiciels de réagir rapidement aux changements de l'état du système sans attendre un cycle de lecture matérielle. Considérez un registre d'état d'interruption qui verrouille les événements de plusieurs périphériques. Au lieu de lire à plusieurs reprises le registre d'état matériel (ce qui peut impliquer un protocole de bus lent), la routine de service d'interruption peut lire la copie d'ombre mise à jour par une routine de sondage antérieure.
En suivant le nombre de fois qu'un registre a été mis à jour (par un compteur d'ombres), le firmware peut prévoir quand un composant peut s'épuiser, ou il peut détecter un taux anormalement élevé de mises à jour qui pourraient indiquer une condition de défaut. Cette réponse préventive n'est possible que parce que le logiciel a une vue locale et cohérente de l'historique du registre.
Déboguage simplifié
Les techniques traditionnelles de débogage exigent une rupture de l'exécution pour lire le registre matériel, ce qui peut modifier l'état du système (par exemple, en éliminant un bit d'état). Les registres d'ombre peuvent être lus à tout moment sans affecter le matériel, ce qui les rend idéales pour une surveillance non intrusive. Les développeurs peuvent placer des points d'arrêt déclenchés par des erreurs de couplage de registres d'ombres ou des instantanés de registres d'ombres log pendant le fonctionnement normal.
De nombreux systèmes d'exploitation en temps réel (RTOS) et outils de débogage prennent en charge les points de veille sur les adresses mémoire appartenant à des registres d'ombres. Cela permet au développeur de détecter la première écriture à une ombre, ce qui permet de déterminer le chemin de code exact qui modifie un réglage critique.
Considérations relatives à la mise en œuvre
Pour éviter de nouveaux modes de défaillance, il faut concevoir avec soin un système d'ombre efficace.
Synchronisation après la réinitialisation et les défauts
Après une remise à zéro du système, les registres matériels sont initialisés à leurs valeurs de remise à zéro, mais les copies d'ombres en RAM ne sont pas définies (ou conservent des valeurs statiques). Le code de démarrage doit copier les valeurs de remise à zéro de tous les registres shaded dans la zone d'ombre avant que n'importe quel périphérique ne soit utilisé. De même, après une sortie de veille ou une exception, les registres shadow ne peuvent plus refléter l'état matériel, de sorte qu'une étape de resynchronisation est essentielle.
Atomicité et cohérence
Lorsque la mise à jour d'un registre qui couvre plusieurs largeurs de bus (p. ex. un registre 32 bits accessible par un bus 16 bits), l'écriture à l'ombre doit être effectuée atomiquement par rapport à l'écriture matérielle. Autrement, une interruption pourrait se produire entre la mise à jour de l'ombre et l'écriture matérielle, laissant le système dans un état incohérent. L'utilisation de barrières mémoire et de sections critiques (interruptions inutilisables ou séquences sans verrouillage) est obligatoire.
Contrôle d'accès
Dans les systèmes qui exécutent un RTOS privilégié et des tâches non privilégiées, l'ombre d'un registre peut être combinée avec une unité de protection de la mémoire (MPU) pour n'accorder l'accès à l'écriture qu'au pilote propriétaire du registre. Cela empêche une tâche voyou de corrompre un réglage critique à travers l'ombre. La configuration MPU doit être validée au démarrage.
Rendement en tête
Chaque écriture dans un registre matériel par ombre introduit au moins deux opérations : une écriture dans l'ombre et une écriture (éventuellement conditionnelle) dans le matériel. Dans les chemins à haut débit (p. ex., les pointeurs tampons DMA mis à jour chaque paquet), ce montant peut être inacceptable. Les concepteurs doivent sélectionner soigneusement les registres à ombre. En général, seuls les registres de configuration et les registres d'état qui sont lus peu fréquemment ou qui contrôlent les fonctions critiques pour la sécurité sont hombres.
Meilleures pratiques
L'adoption des pratiques suivantes maximisera la valeur de l'observation des registres tout en minimisant les risques associés.
- Mettre à jour l'ombre immédiatement après toute modification de registre matériel. Cela garantit que l'ombre reste une réflexion précise de l'état prévu. Tout retard introduit une fenêtre d'incohérence qui pourrait être exploitée par une faute. Utilisez une seule fonction ou une macro qui écrit à la fois l'ombre et le registre matériel dans une section critique.
- Utilisez les opérations atomiques pour les registres à mots multiples. Si un registre consomme deux adresses mémorisées, utilisez une seule transaction (p. ex., charge/stockage 64 bits sur CPU 32 bits) ou désactivez les interruptions pendant la séquence d'écriture.
- Vérifier périodiquement l'intégrité de l'ombre. Dans une tâche de fond de faible priorité, lisez les registres du matériel et comparez-les avec les copies de l'ombre. Tout défaut doit être enregistré et, si nécessaire, déclencher une action corrective (p. ex., réécrire la valeur de l'ombre au matériel). La période de vérification doit être plus courte que la latence de défaut attendue requise par le niveau d'intégrité de sécurité.
- Restrictions d'accès à l'application. Utilisez le MPU ou une liste de contrôle d'accès logiciel pour limiter les modules de code qui peuvent modifier chaque registre d'ombre.
- Consider l'ombre assistée par le matériel Certains microcontrôleurs offrent des registres d'ombre dédiés à l'ombre dans le matériel pour les périphériques critiques (p. ex. configuration d'horloge).Ces derniers offrent les mêmes avantages avec zéro logiciel en tête pour la synchronisation.
Défis et échanges
Bien que l'ombre d'enregistrement soit bénéfique, elle n'est pas une balle d'argent. Plusieurs défis doivent être pesés par rapport aux avantages:
- Impression mémoire: L'ombrage de chaque registre dans un périphérique complexe peut consommer une RAM importante. Dans les systèmes profondément intégrés avec seulement kilooctets de RAM, ce frais peut être prohibitif.
- Chaque enregistrement écrit devient une transaction en plusieurs étapes. Cela peut rendre les pilotes plus difficiles à maintenir et plus enclins aux bogues si ce n'est pas bien abstractionné.
- Effets secondaires de timing hidden: Si le registre matériel est sensible à la lecture (p. ex., en éliminant une interruption déclenchée par le bord), la routine de mise à jour de l'ombre pourrait lire le matériel par inadvertance, causant une perte silencieuse d'un événement. La fonction de mise à jour ne doit écrire au registre matériel, jamais le lire, à moins qu'une lecture séparée ne soit utilisée.
- Cohérence dans le contexte d'interruption:[ Si une interruption modifie un registre matériel directement (sans passer par l'ombre), l'ombre sera périmée. Ceci est courant lorsque le matériel efface automatiquement un bit d'état après une interruption. L'ISR doit synchroniser l'ombre après avoir géré l'interruption.
Malgré ces défis, les avantages en matière de sécurité, de fiabilité et de débogabilité l'emportent généralement sur les coûts des systèmes non extrêmement restreints.
Applications réelles dans le monde
Unités de commande du moteur automobile (ECU)
Les calculateurs modernes gèrent des dizaines de actuateurs et de capteurs via les bus CAN et FlexRay. L'ombre d'enregistrement est utilisée pour les registres de synchronisation des moteurs. Une ombre mal adaptée peut détecter une écriture corrompue causée par une baisse de tension transitoire, permettant à l'ECU de déclencher un mode de limp-home plutôt qu'un arrêt complet.
Dispositifs implantables médicaux
Les fabricants de produits et les pompes à insuline se fient aux registres d'ombre pour s'assurer que les paramètres de livraison des traitements (p. ex., largeur de l'impulsion, dosage) ne sont jamais mal écrits. L'ombre est stockée dans une banque de RAM séparée qui est protégée par un code de correction d'erreur (ECC).
Systèmes de contrôle de vol aérospatial
Les systèmes à fil volant qui utilisent une redondance triple-modulaire peuvent encore bénéficier de registres d'ombres dans chaque voie. Même avec trois voies, une faille transitoire dans un registre d'une voie pourrait causer un désaccord. L'ombre permet à la voie locale de détecter la faille et de réinitialiser le registre sans impliquer l'électeur.
Techniques alternatives et complémentaires
L'ombre du registre est souvent combinée avec d'autres méthodes de fiabilité:
- Error‐Correcting Code (ECC) sur le bus de registre: ECC peut corriger les erreurs monobit dans le registre matériel, mais il ne peut pas se protéger contre les bogues logiciels qui écrivent la mauvaise valeur.
- Read‐back after write: Au lieu d'une ombre, le logiciel peut lire le registre matériel après chaque écriture et vérifier la valeur. Cela consomme plus de bande passante de bus et peut modifier l'état du registre si la lecture a des effets secondaires.
- Hardware watchdog qui surveille l'intégrité des registres:[ Certains SoC ont un vérificateur d'intégrité matérielle qui compare périodiquement les registres d'ombre (chargés en comparateurs dédiés) à l'état matériel.
Pour les systèmes où des performances élevées et une sécurité élevée sont requises, une approche hybride est recommandée : registres critiques pour la sécurité des ombres tout en laissant les registres de données à haute fréquence non éclipsés mais protégés par un CRC de bout en bout ou par la parité.
Conclusion
En maintenant une copie logicielle des registres du matériel critique, les développeurs acquièrent la capacité de valider les écritures, de détecter les défauts et de restaurer l'état correct sans latence et les effets secondaires de l'accès continu au matériel. Bien que la mise en œuvre nécessite une attention particulière à la synchronisation, à l'atomicité et aux frais de mémoire, le rendement de l'investissement en termes d'intégrité du système est important.
Pour plus de détails sur la gestion des registres matériels et la conception intégrée de la tolérance aux défauts, consultez le Manuel de référence de l'architecture ARM pour la gestion des registres au niveau du CPU, ou la norme de sécurité fonctionnelle des véhicules routiers ISO 26262 pour obtenir des conseils sur la couverture diagnostique.