Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Incrustado

Código abierto de un dispositivo de tiempo más preciso

Los ingenieros de Facebook han creado y abierto un dispositivo de tiempo de cómputo abierto, un componente importante de la infraestructura de temporización moderna. Para hacer esto posible, creamos la tarjeta de tiempo, una tarjeta PCI Express (PCIe) que puede convertir casi cualquier servidor básico en un dispositivo de tiempo. Con la ayuda de la comunidad de OCP, establecimos el proyecto Open Compute Time Appliance Project y abrimos todos los aspectos del Open Time Server. Este artículo describe el desarrollo de la tarjeta de tiempo.

En marzo de 2020, anunciamos que estábamos en el proceso de cambiar los servidores de nuestros centros de datos (junto con nuestros productos de consumo) a un nuevo servicio de cronometraje basado en el Protocolo de tiempo de red (NTP). El nuevo servicio, construido internamente y luego de código abierto, fue más escalable y mejoró la precisión del cronometraje en la infraestructura de Facebook de 10 milisegundos a 100 microsegundos. Un cronometraje más preciso permite una gestión de la infraestructura más avanzada en nuestros centros de datos, así como un rendimiento más rápido de las bases de datos distribuidas.

La nueva arquitectura de tiempo basada en NTP utiliza un Estrato 1, un componente importante que está directamente vinculado a una fuente de tiempo autorizada, como un Sistema de navegación por satélite global (GNSS) o un reloj de cesio, como se muestra a continuación:

Muchas empresas confían en grupos de NTP públicos como time.facebook.com para actuar como su Estrato 1. Sin embargo, este enfoque tiene sus inconvenientes. Estos grupos agregan dependencia a la conectividad a Internet y pueden afectar la seguridad y confiabilidad general del sistema. Por ejemplo, si se pierde la conectividad o se cae un servicio externo, pueden producirse interrupciones o cambios en el tiempo del sistema dependiente.

Para eliminar estas dependencias, hemos creado una nueva pieza de hardware dedicada llamada dispositivo de tiempo, que consta de un receptor GNSS y un reloj atómico miniaturizado (MAC). Los usuarios de dispositivos de tiempo pueden mantener la hora exacta, incluso en caso de pérdida de conectividad GNSS. Mientras construíamos nuestro dispositivo de tiempo, también inventamos una tarjeta de tiempo, una tarjeta PCIe que puede convertir cualquier servidor básico en un dispositivo de tiempo.

¿Por qué es necesario un nuevo dispositivo horario?

Los electrodomésticos listos para usar tienen sus propios beneficios. Funcionan desde el primer momento y, debido a que muchos de estos dispositivos han estado en el mercado durante décadas, se han probado en batalla y, en general, son lo suficientemente estables como para funcionar sin supervisión durante mucho tiempo.

Sin embargo, estas soluciones también vienen con compensaciones:

Hasta ahora, las empresas han tenido que aceptar estas compensaciones y trabajar dentro de las limitaciones descritas anteriormente. Decidimos que era hora de probar algo diferente, por lo que analizamos seriamente lo que se necesitaría para construir un nuevo dispositivo de tiempo, específicamente, uno que use la arquitectura x86.

Creación de un prototipo del dispositivo del tiempo

Aquí hay un diagrama de bloques de lo que imaginamos:

Todo comienza con un receptor GNSS que proporciona la hora del día (ToD) y un pulso por segundo (PPS). Cuando el receptor está respaldado por un oscilador de alta estabilidad (por ejemplo, un reloj atómico o un oscilador de cristal controlado por horno), puede proporcionar un tiempo con una precisión de nanosegundos. El tiempo se entrega a través de la red a través de una tarjeta de red lista para usar que admite entrada / salida de PPS y sellado de tiempo de hardware de paquetes, como el NVIDIA Mellanox ConnectX-6 Dx utilizado en nuestro dispositivo inicial.

La salida del GPSDO se introdujo en el sello de tiempo EXT de la tarjeta de red ConnectX-6 Dx. Además, el receptor GNSS proporciona el ToD a través de un puerto serie y un protocolo de informes GPS popular llamado NMEA. El uso de la herramienta ts2phc nos permitió sincronizar el reloj del hardware físico de la NIC hasta un par de decenas de nanosegundos, como se muestra a continuación:

Nuestro prototipo nos dio la confianza de que era posible construir un aparato de este tipo. Sin embargo, había mucho margen de mejora.

Para aumentar la confiabilidad del sistema, lo dividimos en dos partes principales:carga útil y entrega. La carga útil es el tiempo de precisión que es esencialmente un sistema de interpolación impulsado por un oscilador local para crear nanosegundos de medición de tiempo entre señales PPS consecutivas recibidas por el receptor GNSS. Consideramos colocar el receptor GNSS, el oscilador local de alta estabilidad y la lógica de procesamiento necesaria en un factor de forma PCIe, y lo llamamos tarjeta de tiempo (ver más abajo).

Aquí está el boceto de la tarjeta de tiempo que imaginamos inicialmente en una servilleta:

Usamos un MAC integrado, un receptor GNSS multibanda y un FPGA para implementar el motor de tiempo. El trabajo del motor del tiempo es interpolar en nanosegundos la granularidad requerida entre señales PPS consecutivas. El receptor GNSS también proporciona un ToD además de una señal de 1 PPS. En caso de pérdida de recepción GNSS, el motor del tiempo se basa en la sincronización continua del reloj atómico basado en un conjunto promedio de pulsos PPS consecutivos.

El motor de tiempo consta de un conjunto de bloques de procesamiento implementados en la FPGA de la tarjeta de tiempo. Estos bloques de procesamiento incluyen varios subsistemas de filtrado, sincronización, verificación de errores, sellado de tiempo y relacionados con PCIe para permitir que la tarjeta de tiempo funcione como un periférico del sistema que proporciona tiempo de precisión para el servidor de tiempo abierto.

Cabe señalar que la precisión de un receptor GNSS está dentro de las decenas de nanosegundos, mientras que la sincronización (calibración) continua requerida del MAC está dentro de los 10 picosegundos (1000 veces más precisa).

Al principio, esto suena imposible. Sin embargo, el sistema GNSS proporciona una sincronización basada en una comunicación continua con la hora estándar. Esta capacidad permite que el reloj integrado GNSS se sincronice constantemente con una fuente de tiempo proporcionada a su constelación, lo que prácticamente no le proporciona errores de deriva a largo plazo. Por lo tanto, la calibración del MAC se realiza mediante una comparación de un contador controlado por MAC y el pulso PPS proporcionado por GNSS. Dedicar más tiempo a la comparación nos permite lograr una mayor precisión de calibración para el MAC. Por supuesto, esto es teniendo en cuenta que el MAC es un sistema invariante en el tiempo lineal.

En este diagrama de bloques, puede ver una señal de 10 MHz del reloj de rubidio que ingresa al motor de tiempo. Esta señal de reloj se puede reemplazar por una entrada SMA de 10 MHz. La señal de reloj se alimenta a un módulo de reloj digital y un PLL digital (12.5x resultó de 25 y dividido por 2), lo que da como resultado una frecuencia de 125 MHz. Los 125 MHz (períodos de 8 nanosegundos) se alimentan a la unidad ToD.

La unidad ToD asocia los incrementos de 8 nanosegundos en valores digitales de 0b000001 ya que el LSB (bit menos significativo) está asociado a 250 picosegundos (impulsados ​​desde 32 bits de precisión de subsegundos en el gPTP).

Por otro lado, la señal PPS que proviene del GNSS se utiliza para tomar una instantánea del resultado de los incrementos. Si 125 MHz es exacto, los incrementos acumulados deberían resultar en intervalos de exactamente 1 segundo. Sin embargo, en realidad, siempre hay un desajuste entre el valor acumulado y un intervalo teórico de 1 segundo.


Los valores se pueden ajustar mediante un lazo de control interno PI (proporcional e integral). El ajuste se puede realizar modificando el valor 0b000001 en pasos de 250 picosegundos o ajustando el PPL de 12,5x. Además, se pueden aplicar más ajustes (más finamente afinados) dirigiendo el oscilador de rubidio.

Cuanto más tiempo no esté disponible un GNSS, más precisión de tiempo se perderá. La tasa de deterioro de la precisión del tiempo se denomina remanente. Por lo general, el remanente se describe como un período de tiempo para la precisión y el tiempo que se tarda en superarlo. Por ejemplo, el remanente de un MAC es de 1 microsegundo durante 24 horas. Esto significa que después de 24 horas, la precisión de la hora no es determinista, pero es precisa en 1 microsegundo.

Como enfoque alternativo, contamos con la nueva generación de relojes atómicos miniaturizados y a escala de chip con capacidad para recibir entradas PPS. Esto permite que el motor de tiempo de la tarjeta de tiempo transfiera la sintonización de ultraprecisión del oscilador de alta estabilidad al componente en lugar de usar recursos digitales para alcanzar el objetivo.

Como principio general, cuanto más precisa sea la afinación, mejor será el rendimiento remanente que se puede lograr. En términos de entrega, el uso de una NIC con sincronización precisa garantiza que los paquetes de red reciban marcas de tiempo muy precisas, lo cual es fundamental para mantener la hora precisa, ya que se comparte con otros servidores de la red. Tal NIC también puede recibir una señal PPS directamente desde la tarjeta de tiempo.

Después de conceptualizar la idea y varias iteraciones de implementación, pudimos armar un prototipo.

El dispositivo del tiempo en acción

La tarjeta de tiempo permite que cualquier máquina x86 con una NIC capaz de sellar la hora del hardware se convierta en un dispositivo de tiempo. Este sistema es independiente de si se ejecuta para NTP, PTP, SyncE o cualquier otro protocolo de sincronización de tiempo, ya que la precisión y estabilidad que proporciona la tarjeta de tiempo es suficiente para casi cualquier sistema.

La belleza de usar tarjetas PCIe es que la configuración se puede ensamblar incluso en una PC doméstica, siempre que tenga suficientes ranuras PCIe disponibles.

El siguiente paso sería instalar Linux. El controlador de la tarjeta de tiempo se incluye en el kernel de Linux 5.15 o posterior. O se puede compilar desde el repositorio de OCP GitHub en el kernel 5.12 o más reciente.

El controlador expondrá varios dispositivos, incluido el reloj PHC, GNSS, PPS y la serie del reloj atómico:

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

lrwxrwxrwx. 1 root 0 3 de agosto 19:49 dispositivo -> ../../../0000:04:00.0/

-r – r – r–. 1 raíz 4096 3 de agosto 19:49 gnss_sync

lrwxrwxrwx. 1 raíz 0 3 de agosto 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/

lrwxrwxrwx. 1 raíz 0 3 de agosto 19:49 pps -> ../../../../../virtual/pps/pps1/

lrwxrwxrwx. 1 raíz 0 3 de agosto 19:49 ptp -> ../../ptp/ptp2/

lrwxrwxrwx. 1 raíz 0 3 de agosto 19:49 ttyGNSS -> ../../tty/ttyS7/

lrwxrwxrwx. 1 raíz 0 3 de agosto 19:49 ttyMAC -> ../../tty/ttyS8/

El controlador también nos permite monitorear la tarjeta de tiempo, el receptor GNSS y el estado del reloj atómico y flashear un nuevo flujo de bits FPGA usando devlink cli.

Lo único que queda por hacer es configurar el servidor NTP y / o PTP para usar la tarjeta de tiempo como reloj de referencia. Para configurar Chrony, uno simplemente necesita especificar el atributo refclock:

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

Y disfrute de un servidor NTP Stratum 1 muy preciso y estable:

fuentes de $ chronyc
210 Número de fuentes =1
MS Nombre / dirección IP Estrato Encuesta Alcance LastRx Última muestra
=============================================================================
# * PHC0 0 0 377 1 + 4ns [+ 4ns] +/- 36ns

Para el servidor PTP (por ejemplo, ptp4u), primero deberá sincronizar la tarjeta de tiempo PHC con la NIC PHC. Esto se puede hacer fácilmente usando la herramienta phc2sys que sincronizará los valores del reloj con la alta precisión que generalmente se mantiene dentro de un solo dígito de nanosegundos:

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

Para mayor precisión, se recomienda conectar la tarjeta de tiempo y la NIC al mismo carril de CPU PCIe. Para mayor precisión, se puede conectar la salida PPS de la tarjeta de tiempo a la entrada PPS de la NIC.

Para validar y confirmar la precisión, hemos utilizado un dispositivo de validación externo llamado Calnex Sentinel conectado a la misma red a través de varios conmutadores y una antena GNSS independiente. Puede realizar pruebas PPS, así como protocolos NTP y / o PTP:

La línea azul representa los resultados de la medición NTP. La precisión se mantiene dentro de ± 40 microsegundos durante el intervalo de medición de 48 horas.

La línea naranja representa los resultados de la medición de PTP. El desplazamiento es prácticamente 0 dentro del rango de nanosegundos.

De hecho, cuando comparamos 1 PPS entre la salida de la tarjeta de tiempo y la referencia interna del Calnex Sentinel, vemos que el error combinado varía dentro de ± 200 nanosegundos:

Pero lo que es aún más importante es que estas medidas demuestran la estabilidad de los resultados del dispositivo de tiempo.

En caso de pérdida de la señal GNSS, debemos asegurarnos de que la deriva de tiempo (también conocida como remanente) de la tarjeta de tiempo con respaldo atómico se mantenga dentro de 1 microsegundo cada 24 horas. Aquí hay un gráfico que muestra el remanente del reloj atómico (SA.53s) en un intervalo de 24 horas. Como puede ver, la deriva de PPS se mantiene dentro de los 300 nanosegundos, que está dentro de las especificaciones del reloj atómico.

El diseño modular de la tarjeta de tiempo permite el intercambio del reloj atómico con un oscilador de cristal controlado por horno (OCXO) o un oscilador de cristal con compensación de temperatura (TCXO) para una solución económica con el compromiso de las capacidades de retención.

Código abierto del diseño del dispositivo del tiempo

Construir un dispositivo que sea muy preciso, económico y libre de bloqueo de proveedores fue un logro en sí mismo. Pero queríamos tener un mayor impacto en la industria. Queríamos liberarlo de verdad y hacerlo abierto y asequible para todos, desde un científico investigador hasta un gran centro de datos en la nube.

Es por eso que nos comprometimos con Open Compute Project (OCP) para crear un nuevo Time Appliance Project (TAP). Bajo el paraguas de OCP, utilizamos código abierto en el repositorio de GitHub de Time Appliance Project, incluidas las especificaciones, los esquemas, la mecánica, la lista de materiales y el código fuente. Ahora, siempre que imprimir la PCB y soldar componentes pequeños no suene atemorizante, cualquiera puede construir su propia tarjeta de tiempo por una fracción del costo de un dispositivo de tiempo normal. También trabajamos con varios proveedores, como Orolia, que construirá y venderá tarjetas de tiempo, y Nvidia, que venderá el ConnectX-6 Dx con capacidad de sincronización de precisión (y la DPU BlueField-2 con capacidad de sincronización de precisión).

Publicamos una especificación de Open Time Server en www.opentimeserver.com, que explica con gran detalle cómo combinar el hardware (tarjeta de tiempo, tarjeta de red y un servidor básico) y el software (controlador del sistema operativo, NTP y / o servidor PTP ) para construir el dispositivo del tiempo. La construcción de un dispositivo basado en esta especificación dará control total a los ingenieros que mantienen el dispositivo, mejorando el monitoreo, la configuración, la administración y la seguridad.

El dispositivo de tiempo es un paso importante en el viaje para mejorar la infraestructura de tiempo para todos, pero hay más por hacer. Continuaremos trabajando en otros elementos, incluida la mejora de la precisión y exactitud de la sincronización de nuestros propios servidores, y tenemos la intención de seguir compartiendo este trabajo con la comunidad informática abierta.


Incrustado

  1. Ecuaciones de constantes de tiempo
  2. Reloj de arena
  3. Sueño de Python ()
  4. El tiempo es dinero:consejos para usar software de mantenimiento para ahorrar tiempo y gastar más eficientemente
  5. Es hora de que los fabricantes descarten viejas ideas sobre la gestión de inventario
  6. Líderes de la cadena de suministro, es hora de jugar a la ofensiva
  7. Gemelos digitales:¿ayudar a que los trenes de la costa oeste funcionen a tiempo?
  8. Python - Fecha y hora
  9. ¿Qué es un HMI?
  10. Crescent Crown se vuelve más rentable y eficiente en tiempo mediante la implementación de la automatización
  11. Cómo optimizar su fabricación y envío