Moteur scalaire hybride intégré 32/64 bits pour le traitement du signal en temps réel
(github.com/PJHkorea)Il s’agit d’un projet open source que j’avais déjà partagé du côté BCI, et je le republie ici au cas où certains éléments pourraient vous être utiles.
L’objectif était de maximiser les temps d’inactivité afin de maintenir une faible dissipation thermique, tout en détectant rapidement des signaux sans bruit.
L’idée était de porter un seul code sur une seule puce, puis d’organiser l’ensemble dans une structure parallèle en damier afin que, lorsqu’un bruit sévère survient — comme la perte d’un capteur — le nœud concerné demande à ses voisins est, ouest, sud et nord de le contourner, de manière à maintenir le système en fonctionnement quoi qu’il arrive.
Ce qui suit présente la philosophie et les fonctionnalités associées.
Ce projet se concentre sur l’implémentation d’un moteur cœur de détection de signal en temps réel et d’accélération du bruit, optimisé pour les environnements embarqués natifs 64 bits. En excluant totalement les lourds calculs matriciels multidimensionnels et les équations aux dérivées partielles (PDE), il atteint une efficacité élevée.
L’architecture matérielle de base subit de fortes contraintes en traitement temps réel haute fréquence à cause du bruit électrique et des pertes de signal des capteurs. Ce moteur résout ce problème au niveau logiciel en s’appuyant sur une topologie de puces en grille à faible coût. Au lieu d’utiliser des single-board computers (SBC) coûteux, il emploie une grille de microcontrôleurs (MCU) bon marché qui ne communiquent qu’avec leurs voisins directs (est, ouest, sud, nord). Il faut imaginer une disposition matérielle dense en forme d’échiquier, composée de puces MCU ultra-compactes et peu coûteuses. Cette structure garantit un timing d’exécution déterministe à 1 kHz et offre une excellente tolérance aux pannes.
0 % de cache miss grâce aux registres scalaires platsPour respecter un timing de boucle déterministe strict à 1 kHz, les tableaux multidimensionnels (float[][]) et le pointer chasing ont été complètement abandonnés. À la place, tous les algorithmes ont été entièrement aplatis au niveau des registres scalaires (p00, p11). Cela permet à la FPU native 64 bits de mapper directement les registres et d’exécuter les opérations en un seul cycle d’horloge.
Rotation d’état sans branchement (traitement if à gigue nulle)Afin d’éviter les flush du pipeline CPU, les instructions conditionnelles (if) ont été entièrement retirées du chemin d’exécution principal. L’atténuation du bruit est gérée de manière fluide via le mécanisme de rotation d’état verticale de la couche 1, qui utilise une rotation continue pour effectuer un notch filtering efficace des bruits de forte énergie.
Mise à l’échelle en temps réel via l’approximation rationnelle de Padé [1/1]Dans une boucle haute fréquence, appeler des fonctions transcendantes lourdes comme exp() représente un risque important pour le timing d’un CPU embarqué. Ce moteur les remplace par l’approximation rationnelle de Padé, transformant la courbe exponentielle en une simple équation arithmétique. Cela réduit drastiquement le coût de calcul nécessaire au mapping continu.
Contournement de maillage sans dérivées (isolation autonome des défauts)Si un nœud subit un bruit persistant et extrême ou une perte physique de signal, la couche 1 déclenche automatiquement une apoptose cellulaire locale et diffuse un signal d’isolement aux nœuds voisins. Au lieu de recalculer de lourdes équations aux dérivées partielles sur l’ensemble de la grille, le moteur applique un couplage à signe négatif croisé (-) aux sorties adjacentes. Cette astuce mathématique ingénieuse génère spontanément une vorticité horaire (vorticity, curl), ce qui permet de détourner en douceur le flux du signal en diagonale autour de la zone morte jusqu’à ce que le nœud défectueux retrouve un état stable.
1 commentaires
Si le planificateur embarqué à circulation de phase à triple châssis, intégrant un noyau de commutation à isolation constante externe, vous intéresse, je vous serais reconnaissant de consulter
fluxmesh_constant_slot_test.hetREADME4-3.md.