Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Open source d'un appareil de temps plus précis

Les ingénieurs de Facebook ont ​​construit et open-source une appliance de temps de calcul ouverte, un composant important de l'infrastructure de synchronisation moderne. Pour rendre cela possible, nous avons créé la carte de temps - une carte PCI Express (PCIe) qui peut transformer presque n'importe quel serveur de base en une appliance de temps. Avec l'aide de la communauté OCP, nous avons créé le projet Open Compute Time Appliance et ouvert tous les aspects de l'Open Time Server. Cet article décrit le développement de la carte de pointage.

En mars 2020, nous avons annoncé que nous étions en train de basculer les serveurs de nos centres de données (ainsi que nos produits grand public) vers un nouveau service de chronométrage basé sur le Network Time Protocol (NTP). Le nouveau service, construit en interne et plus tard en open source, était plus évolutif et a amélioré la précision du chronométrage dans l'infrastructure Facebook de 10 millisecondes à 100 microsecondes. Un chronométrage plus précis permet une gestion plus avancée de l'infrastructure dans nos centres de données, ainsi qu'une performance plus rapide des bases de données distribuées.

La nouvelle architecture temporelle basée sur NTP utilise une strate 1 :un composant important qui est directement lié à une source de temps faisant autorité, telle qu'un système mondial de navigation par satellite (GNSS) ou une horloge au césium, comme indiqué ci-dessous :

De nombreuses entreprises s'appuient sur des pools NTP publics tels que time.facebook.com pour agir comme leur strate 1. Cependant, cette approche a ses inconvénients. Ces pools ajoutent une dépendance à la connectivité Internet et peuvent avoir un impact sur la sécurité et la fiabilité globales du système. Par exemple, si la connectivité est perdue ou qu'un service externe est en panne, cela peut entraîner des pannes ou une dérive du calendrier pour le système dépendant.

Pour supprimer ces dépendances, nous avons construit un nouveau matériel dédié appelé appareil temporel, qui se compose d'un récepteur GNSS et d'une horloge atomique miniaturisée (MAC). Les utilisateurs d'appareils horaires peuvent conserver une heure précise, même en cas de perte de connectivité GNSS. Lors de la construction de notre appareil de temps, nous avons également inventé une carte de temps, une carte PCIe qui peut transformer n'importe quel serveur de base en un appareil de temps.

Pourquoi le besoin d'un nouveau dispositif de temps ?

Les appareils électroménagers du commerce ont leurs propres avantages. Ils fonctionnent dès la sortie de l'emballage et comme bon nombre de ces appareils sont sur le marché depuis des décennies, ils sont testés au combat et généralement suffisamment stables pour fonctionner sans surveillance pendant une longue période.

Cependant, ces solutions s'accompagnent également de compromis :

Jusqu'à présent, les entreprises devaient accepter ces arbitrages et travailler dans les contraintes décrites ci-dessus. Nous avons décidé qu'il était temps d'essayer quelque chose de différent, alors nous avons sérieusement réfléchi à ce qu'il faudrait pour créer une nouvelle appliance temporelle, en particulier une qui utilise l'architecture x86.

Prototypage de l'appareil temporel

Voici un schéma fonctionnel de ce que nous avons envisagé :

Tout commence à partir d'un récepteur GNSS qui fournit l'heure du jour (ToD) ainsi que l'impulsion par seconde (PPS). Lorsque le récepteur est soutenu par un oscillateur à haute stabilité (par exemple, une horloge atomique ou un oscillateur à cristal contrôlé par un four), il peut fournir une heure précise à la nanoseconde. L'heure est transmise sur le réseau via une carte réseau standard qui prend en charge les entrées/sorties PPS et l'horodatage matériel des paquets, comme le NVIDIA Mellanox ConnectX-6 Dx utilisé dans notre appareil initial.

La sortie du GPSDO a été introduite dans l'horodatage EXT de la carte réseau ConnectX-6 Dx. De plus, le récepteur GNSS fournit le ToD via un port série et un protocole de rapport GPS populaire appelé NMEA. L'utilisation de l'outil ts2phc nous a permis de synchroniser l'horloge matérielle physique de la carte réseau à quelques dizaines de nanosecondes, comme indiqué ci-dessous :

Notre prototype nous a donné l'assurance que la construction d'un tel appareil était possible. Cependant, il y avait beaucoup de place pour l'amélioration.

Pour augmenter la fiabilité du système, nous l'avons divisé en deux parties principales :la charge utile et la livraison. La charge utile est le temps de précision qui est essentiellement un système d'interpolation piloté par un oscillateur local pour créer des nanosecondes de mesure de temps entre des signaux PPS consécutifs reçus par le récepteur GNSS. Nous avons envisagé de mettre le récepteur GNSS, l'oscillateur local à haute stabilité et la logique de traitement nécessaire dans un facteur de forme PCIe, et nous l'avons appelé la carte de pointage (voir ci-dessous).

Voici le croquis de la carte de pointage que nous avions initialement envisagé sur une serviette :

Nous avons utilisé un MAC embarqué, un récepteur GNSS multibande et un FPGA pour implémenter le moteur temporel. Le travail du moteur de temps est d'interpoler en nanosecondes la granularité requise entre des signaux PPS consécutifs. Le récepteur GNSS fournit également un ToD en plus d'un signal 1 PPS. En cas de perte de réception GNSS, le moteur temporel s'appuie sur la synchronisation en cours de l'horloge atomique basée sur un ensemble moyen des impulsions PPS consécutives.

Le moteur de temps est constitué d'un ensemble de blocs de traitement implémentés sur le FPGA de la carte de pointage. Ces blocs de traitement incluent divers sous-systèmes de filtrage, de synchronisation, de vérification des erreurs, d'horodatage et liés à PCIe pour permettre à la carte de pointage de fonctionner comme un périphérique système qui fournit une heure précise pour le serveur de temps ouvert.

Il convient de noter que la précision d'un récepteur GNSS est de quelques dizaines de nanosecondes, tandis que la synchronisation continue requise (étalonnage) du MAC est de moins de 10 picosecondes (1000 fois plus précise).

Au début, cela semble impossible. Cependant, le système GNSS fournit une synchronisation basée sur une communication continue avec l'heure standard. Cette capacité permet à l'horloge embarquée du GNSS d'être constamment synchronisée avec une source de temps fournie à sa constellation, lui conférant pratiquement aucune erreur de dérive à long terme. Par conséquent, l'étalonnage du MAC est effectué via une comparaison d'un compteur piloté par MAC et de l'impulsion PPS fournie par le GNSS. Prendre plus de temps pour la comparaison nous permet d'atteindre une plus grande précision d'étalonnage pour le MAC. Bien sûr, c'est en tenant compte du fait que le MAC est un système invariant dans le temps linéaire.

Dans ce schéma fonctionnel, vous pouvez voir un signal de 10 MHz de l'horloge au rubidium entrant dans le moteur de temps. Ce signal d'horloge peut être remplacé par une entrée SMA 10 MHz. Le signal d'horloge alimente un module d'horloge numérique et une PLL numérique (12,5x résultant de 25 et divisé par 2), ce qui donne une fréquence de 125 MHz. Les 125 MHz (périodes de 8 nanosecondes) alimentent l'unité ToD.

L'unité ToD associe les incréments de 8 nanosecondes en valeurs numériques de 0b000001 puisque le LSB (bit le moins significatif) est associé à 250 picosecondes (piloté à partir de 32 bits de précision inférieure à la seconde sur le gPTP).

D'autre part, le signal PPS provenant du GNSS filtré est utilisé pour prendre un instantané du résultat des incréments. Si le 125 MHz est précis, les incréments accumulés devraient se traduire par des intervalles d'exactement 1 seconde. Cependant, en réalité, il y a toujours un décalage entre la valeur accumulée et un intervalle théorique d'une seconde.


Les valeurs peuvent être ajustées à l'aide d'une boucle de régulation interne PI (proportionnelle et intégrale). L'ajustement peut être effectué soit en modifiant la valeur 0b000001 par pas de 250 picosecondes, soit en ajustant finement la PPL 12,5x. De plus, d'autres réglages (plus précis) peuvent être appliqués en pilotant l'oscillateur au rubidium.

Plus un GNSS n'est pas disponible, plus la précision temporelle est perdue. Le taux de détérioration de la précision temporelle est appelé maintien. Habituellement, la durée d'efficacité est décrite comme un délai pour la précision et le temps qu'il faut pour le dépasser. Par exemple, la durée de vie d'un MAC est inférieure à 1 microseconde pendant 24 heures. Cela signifie qu'après 24 heures, la précision de l'heure est non déterministe mais précise à 1 microseconde près.

Comme approche alternative, nous comptons sur la nouvelle génération d'horloges atomiques à puce et miniaturisées avec leur capacité à recevoir des entrées PPS. Cela permet au moteur de temps de la carte de temps de transmettre la syntonisation ultraprécise de l'oscillateur à haute stabilité au composant plutôt que d'utiliser des ressources numériques pour atteindre la cible.

En règle générale, plus le réglage est précis, meilleures sont les performances d'efficacité pouvant être obtenues. En termes de livraison, l'utilisation d'une carte réseau avec une synchronisation précise garantit que les paquets réseau reçoivent des horodatages très précis, ce qui est essentiel pour garder l'heure précise car elle est partagée avec d'autres serveurs sur le réseau. Une telle carte réseau peut également recevoir un signal PPS directement de la carte de pointage.

Après avoir conceptualisé l'idée et diverses itérations de mise en œuvre, nous avons pu mettre en place un prototype.

L'appareil du temps en action

La carte de pointage permet de transformer n'importe quelle machine x86 avec une carte réseau capable d'horodatage matériel en une appliance de temps. Ce système ne sait pas s'il fonctionne pour NTP, PTP, SyncE ou tout autre protocole de synchronisation horaire, car la précision et la stabilité fournies par la carte de pointage sont suffisantes pour presque tous les systèmes.

La beauté de l'utilisation de cartes PCIe est que la configuration peut être assemblée même sur un PC domestique, à condition qu'il dispose de suffisamment d'emplacements PCIe disponibles.

La prochaine étape serait d'installer Linux. Le pilote de carte de pointage est inclus dans le noyau Linux 5.15 ou plus récent. Ou, il peut être construit à partir du référentiel OCP GitHub sur le noyau 5.12 ou plus récent.

Le pilote exposera plusieurs périphériques, y compris l'horloge PHC, GNSS, PPS et l'horloge atomique série :

$ ls -l /sys/class/timecard/ocp0/

lrwxrwxrwx. 1 racine 0 3 août 19:49 appareil -> ../../../0000:04:00.0/

-r–r–r–. 1 racine 4096 3 août 19:49 gnss_sync

lrwxrwxrwx. 1 racine 0 3 août 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/

lrwxrwxrwx. 1 racine 0 3 août 19:49 pps -> ../../../../../virtual/pps/pps1/

lrwxrwxrwx. 1 racine 0 3 août 19:49 ptp -> ../../ptp/ptp2/

lrwxrwxrwx. 1 racine 0 3 août 19:49 ttyGNSS -> ../../tty/ttyS7/

lrwxrwxrwx. 1 racine 0 3 août 19:49 ttyMAC -> ../../tty/ttyS8/

Le pilote nous permet également de surveiller la carte de pointage, le récepteur GNSS et l'état de l'horloge atomique et de flasher un nouveau flux binaire FPGA à l'aide du devlink cli.

Il ne reste plus qu'à configurer le serveur NTP et/ou PTP pour utiliser la carte de pointage comme horloge de référence. Pour configurer chrony, il suffit de spécifier l'attribut refclock :

$ grep refclock /etc/chrony.conf
refclock PHC /dev/ptp2 tai poll 0 trust

Et profitez d'un serveur NTP Stratum 1 très précis et stable :

$ sources chronyques
210 Nombre de sources =1
Nom MS/adresse IP Strate Sondage Reach LastRx Dernier échantillon
===============================================================================
#* PHC0 0 0 377 1 +4ns[ +4ns] +/- 36ns

Pour le serveur PTP (par exemple, ptp4u) il faudra d'abord synchroniser la carte de pointage PHC avec la NIC PHC. Cela peut être facilement fait en utilisant l'outil phc2sys qui synchronisera les valeurs d'horloge avec la haute précision restant généralement à un seul chiffre de la nanoseconde :

$ phc2sys -s /dev/ptp2 -c eth0 -O 0 -m

Pour plus de précision, il est recommandé de connecter la carte de pointage et la carte réseau à la même voie CPU PCIe. Pour plus de précision, on peut connecter la sortie PPS de la carte de pointage à l'entrée PPS de la carte réseau.

Pour valider et confirmer la précision, nous avons utilisé un dispositif de validation externe appelé Calnex Sentinel connecté au même réseau via plusieurs commutateurs et une antenne GNSS indépendante. Il peut effectuer des tests PPS ainsi que des protocoles NTP et/ou PTP :

La ligne bleue représente les résultats de mesure NTP. La précision reste de ±40 microsecondes tout au long de l'intervalle de mesure de 48 heures.

La ligne orange représente les résultats de mesure PTP. Le décalage est pratiquement de 0 dans une plage de nanosecondes.

En effet, lorsque nous comparons 1 PPS entre la sortie de la carte de pointage et la référence interne du Calnex Sentinel, nous voyons que l'erreur combinée se situe dans les ±200 nanosecondes :

Mais ce qui est encore plus important, c'est que ces mesures démontrent la stabilité des sorties temporelles de l'appareil.

En cas de perte du signal GNSS, nous devons nous assurer que la dérive dans le temps (c'est-à-dire le maintien) de la carte de pointage atomique reste inférieure à 1 microseconde toutes les 24 heures. Voici un graphique montrant l'efficacité de l'horloge atomique (SA.53s) sur un intervalle de 24 heures. Comme vous pouvez le voir, la dérive PPS reste dans les 300 nanosecondes, ce qui est dans la spécification de l'horloge atomique.

La conception modulaire de la carte de pointage permet d'échanger l'horloge atomique avec un oscillateur à cristal contrôlé par four (OCXO) ou un oscillateur à cristal à température compensée (TCXO) pour une solution économique avec le compromis sur les capacités de conservation.

Open-sourcing de la conception de l'appliance temporelle

Construire un appareil très précis, peu coûteux et sans verrouillage du fournisseur était une réussite en soi. Mais nous voulions avoir un plus grand impact sur l'industrie. Nous voulions vraiment le rendre gratuit et le rendre ouvert et abordable pour tous, du chercheur scientifique au grand centre de données cloud.

C'est pourquoi nous nous sommes engagés avec l'Open Compute Project (OCP) pour créer un tout nouveau Time Appliance Project (TAP). Sous l'égide d'OCP, nous avons ouvert le code source sur le référentiel GitHub du projet Time Appliance, y compris les spécifications, les schémas, la mécanique, la nomenclature et le code source. Maintenant, tant qu'imprimer le PCB et souder de minuscules composants ne semble pas effrayant, n'importe qui peut créer sa propre carte de pointage pour une fraction du coût d'un appareil de temps ordinaire. Nous avons également travaillé avec plusieurs fournisseurs tels qu'Orolia qui construira et vendra des cartes de pointage, et Nvidia qui vend le ConnectX-6 Dx capable de chronométrage de précision (et le DPU BlueField-2 capable de chronométrage de précision).

Nous avons publié une spécification Open Time Server sur www.opentimeserver.com, qui explique en détail comment combiner le matériel (carte de pointage, carte réseau et serveur de base) et le logiciel (pilote du système d'exploitation, serveur NTP et/ou PTP ) pour construire l'appareil de temps. La construction d'une appliance basée sur cette spécification donnera un contrôle total aux ingénieurs chargés de la maintenance de l'appareil, améliorant ainsi la surveillance, la configuration, la gestion et la sécurité.

L'appliance de temps est une étape importante dans le cheminement pour améliorer l'infrastructure de synchronisation pour tout le monde, mais il reste encore beaucoup à faire. Nous continuerons à travailler sur d'autres éléments, notamment l'amélioration de la précision et de l'exactitude de la synchronisation de nos propres serveurs, et nous avons l'intention de continuer à partager ce travail avec la communauté informatique ouverte.


Embarqué

  1. Sablier
  2. Sommeil Python()
  3. Le temps, c'est de l'argent :astuces pour utiliser un logiciel de maintenance pour gagner du temps et dépenser plus efficacement
  4. Il est temps pour les fabricants de jeter leurs vieilles idées sur la gestion des stocks
  5. Chefs de la chaîne d'approvisionnement, il est temps de jouer à l'offensive
  6. Des jumeaux numériques :aider les trains de la côte ouest à circuler à l'heure ?
  7. Python - Date et heure
  8. Qu'est-ce qu'une IHM ?
  9. Crescent Crown devient plus efficace en termes de coûts et de temps grâce à la mise en œuvre de l'automatisation