산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

더 정확한 시간 기기 공개

Facebook 엔지니어는 최신 타이밍 인프라의 중요한 구성 요소인 개방형 컴퓨팅 시간 어플라이언스를 구축하고 오픈 소스로 제공했습니다. 이를 가능하게 하기 위해 우리는 거의 모든 상용 서버를 시간 장치로 바꿀 수 있는 PCI Express(PCIe) 카드인 시간 카드를 고안했습니다. OCP 커뮤니티의 도움으로 Open Compute Time Appliance 프로젝트를 수립하고 Open Time Server의 모든 측면을 오픈 소스로 제공했습니다. 이 기사에서는 타임 카드의 개발에 대해 간략히 설명합니다.

2020년 3월에 우리는 데이터 센터의 서버를 (소비자 제품과 함께) NTP(Network Time Protocol) 기반의 새로운 시간 기록 서비스로 전환하는 중이라고 발표했습니다. 사내에서 구축된 후 나중에 오픈 소스로 제공되는 새로운 서비스는 확장성이 향상되었으며 Facebook 인프라의 시간 기록 정확도가 10밀리초에서 100마이크로초로 향상되었습니다. 더 정확한 시간 기록은 데이터 센터 전반에 걸쳐 고급 인프라 관리를 가능하게 할 뿐만 아니라 분산 데이터베이스의 더 빠른 성능을 가능하게 합니다.

새로운 NTP 기반 시간 아키텍처는 아래에 표시된 것처럼 GNSS(Global Navigation Satellite System) 또는 세슘 시계와 같은 신뢰할 수 있는 시간 소스에 직접 연결된 중요한 구성 요소인 Stratum 1을 사용합니다.

많은 회사에서 time.facebook.com과 같은 공용 NTP 풀을 사용하여 Stratum 1 역할을 합니다. 그러나 이 접근 방식에는 단점이 있습니다. 이러한 풀은 인터넷 연결에 대한 종속성을 추가하고 시스템의 전체 보안 및 안정성에 영향을 줄 수 있습니다. 예를 들어, 연결이 끊기거나 외부 서비스가 다운되면 종속 시스템의 중단이나 타이밍 드리프트가 발생할 수 있습니다.

이러한 종속성을 제거하기 위해 GNSS 수신기와 소형 원자 시계(MAC)로 구성된 시간 기기라는 새로운 전용 하드웨어를 구축했습니다. 시간 기기 사용자는 GNSS 연결이 끊긴 경우에도 정확한 시간을 유지할 수 있습니다. 시간 장치를 구축하는 동안 우리는 모든 상용 서버를 시간 장치로 바꿀 수 있는 PCIe 카드인 시간 카드도 발명했습니다.

새로운 시간 장치가 필요한 이유는 무엇입니까?

기성 시간 가전 제품에는 고유한 이점이 있습니다. 상자에서 꺼내자마자 작동하며 이러한 장치 중 상당수가 수십 년 동안 시장에 출시되었기 때문에 전투 테스트를 거쳤으며 일반적으로 오랫동안 감독 없이 작동할 수 있을 정도로 안정적입니다.

그러나 이러한 솔루션에는 다음과 같은 단점도 있습니다.

<울>
  • 대부분의 경우 구식이며 종종 소프트웨어 보안 문제에 취약합니다. 기능 요청 및 보안 수정 사항을 구현하는 데 몇 달 또는 몇 년이 걸릴 수 있습니다.
  • 이러한 장치는 폐쇄형 소스 소프트웨어와 함께 제공되므로 구성 및 모니터링이 제한적이고 어렵습니다. 구성은 독점적인 CLI 또는 웹 UI를 통해 수동으로 수행되지만 모니터링에는 이러한 용도로 설계되지 않은 프로토콜인 SNMP가 사용되는 경우가 많습니다.
  • 사용자가 수리할 수 없는 독점 하드웨어가 포함됩니다. 부품 하나가 고장나면 쉽게 교체할 수 있는 방법이 없습니다. 수리를 위해 공급업체에 배송하거나 완전히 새 기기를 구입해야 합니다.
  • 기성품 장치는 소량으로 만들어지기 때문에 더 높은 이윤을 남기고 시간이 지남에 따라 작동 비용이 매우 많이 들 수 있습니다. 기성 장치와 관련된 높은 비용은 업계의 많은 사람들에게 한계를 만듭니다. 오픈 소스 버전은 더 광범위한 응용 프로그램의 문을 열 것입니다.
  • 지금까지 기업은 이러한 절충안을 수용하고 위에서 설명한 제약 조건 내에서 작업해야 했습니다. 우리는 지금이 뭔가 다른 것을 시도할 때라고 결정하고 새로운 시간 어플라이언스, 특히 x86 아키텍처를 사용하는 어플라이언스를 구축하는 데 무엇이 필요한지 진지하게 살펴보았습니다.

    시간 장치 프로토타입

    다음은 우리가 구상한 블록 다이어그램입니다.

    이 모든 것은 시간(ToD)과 초당 1펄스(PPS)를 제공하는 GNSS 수신기에서 시작됩니다. 수신기가 안정성이 높은 발진기(예:원자 시계 또는 오븐 제어 수정 발진기)로 뒷받침되면 나노초 단위의 정확한 시간을 제공할 수 있습니다. 시간은 초기 어플라이언스에 사용된 NVIDIA Mellanox ConnectX-6 Dx와 같은 패킷의 하드웨어 타임스탬프 및 PPS 입/출력을 지원하는 기성 네트워크 카드를 통해 네트워크를 통해 전달됩니다.

    GPSDO의 출력은 ConnectX-6 Dx 네트워크 카드의 EXT 타임스탬프에 입력되었습니다. 또한 GNSS 수신기는 직렬 포트와 NMEA라는 널리 사용되는 GPS 보고 프로토콜을 통해 ToD를 제공합니다. ts2phc 도구를 사용하여 아래와 같이 NIC의 물리적 하드웨어 클록을 수십 나노초까지 동기화할 수 있었습니다.

    우리의 프로토타입은 그러한 어플라이언스를 구축하는 것이 가능하다는 확신을 주었습니다. 그러나 개선의 여지가 많았습니다.

    시스템의 신뢰성을 높이기 위해 페이로드와 전달의 두 가지 주요 부분으로 나눴습니다. 페이로드는 본질적으로 GNSS 수신기가 수신한 연속적인 PPS 신호 사이의 나노초 시간 측정을 생성하기 위해 국부 발진기에 의해 구동되는 보간 시스템인 정밀 시간입니다. 우리는 GNSS 수신기, 고안정성 국부 발진기, 필요한 처리 로직을 PCIe 폼 팩터에 넣는 것을 고려했고 이를 타임 카드라고 불렀습니다(아래 참조).

    다음은 냅킨에 처음 구상했던 시간표의 스케치입니다.

    우리는 온보드 MAC, 다중 대역 GNSS 수신기 및 FPGA를 사용하여 시간 엔진을 구현했습니다. 시간 엔진의 역할은 연속적인 PPS 신호 사이에 필요한 세분성을 나노초 단위로 보간하는 것입니다. GNSS 수신기는 1PPS 신호 외에 ToD도 제공합니다. GNSS 수신이 손실된 경우 시간 엔진은 연속적인 PPS 펄스의 평균 앙상블을 기반으로 하는 원자 시계의 지속적인 동기화에 의존합니다.

    시간 엔진은 시간 카드의 FPGA에 구현된 일련의 처리 블록으로 구성됩니다. 이러한 처리 블록에는 다양한 필터링, 동기화, 오류 검사, 타임 스탬프 및 PCIe 관련 하위 시스템이 포함되어 있어 타임 카드가 오픈 타임 서버에 정확한 시간을 제공하는 시스템 주변 장치로 작동할 수 있습니다.

    GNSS 수신기의 정확도는 수십 나노초 이내인 반면 MAC의 필요한 진행 중인 동기화(교정)는 10피코초(1,000배 더 정확함) 이내라는 점에 유의해야 합니다.

    처음에는 불가능하게 들립니다. 그러나 GNSS 시스템은 표준시와의 지속적인 통신을 기반으로 타이밍을 제공합니다. 이 기능을 통해 GNSS 온보드 클록이 해당 성좌에 제공된 시간 소스와 지속적으로 동기화되어 장기 드리프트 오류가 거의 발생하지 않습니다. 따라서 MAC의 보정은 MAC 구동 카운터와 GNSS 제공 PPS 펄스의 비교를 통해 수행됩니다. 비교에 더 많은 시간을 할애하면 MAC에 대해 더 높은 정확도의 보정을 달성할 수 있습니다. 물론 이것은 MAC이 선형 시불변 시스템이라는 점을 고려한 것입니다.

    이 블록다이어그램에서 시간 엔진으로 들어가는 루비듐 클록의 10MHz 신호를 볼 수 있습니다. 이 클럭 신호는 10MHz SMA 입력으로 대체될 수 있습니다. 클록 신호는 디지털 클록 모듈과 디지털 PLL(12.5x는 25를 2로 나눈 값)에 공급되어 125MHz 주파수가 됩니다. 125MHz(8나노초 주기)는 ToD 장치에 공급됩니다.

    ToD 단위는 LSB(최하위 비트)가 250피코초(gPTP에서 32비트의 서브초 정확도에서 구동됨)와 연결되기 때문에 디지털 값 0b000001의 8나노초 증분을 연결합니다.

    반면에 GNSS에서 필터링된 PPS 신호는 증분 결과를 스냅샷하는 데 사용됩니다. 125MHz가 정확하면 누적 증분이 정확히 1초 간격이 되어야 합니다. 그러나 실제로는 누적된 값과 이론상의 1초 간격 사이에는 항상 불일치가 있습니다.


    내부 PI(비례 및 적분) 제어 루프를 사용하여 값을 조정할 수 있습니다. 조정은 0b000001 값을 250피코초 단위로 변경하거나 12.5x PPL을 미세 조정하여 수행할 수 있습니다. 또한 루비듐 오실레이터를 조종하여 추가(더 미세하게 조정된) 조정을 적용할 수 있습니다.

    GNSS를 사용할 수 없는 시간이 길수록 시간 정확도가 더 많이 손실됩니다. 시간 정확도 저하의 비율을 홀드오버라고 합니다. 일반적으로 홀드오버는 정확성을 위한 기간과 이를 초과하는 데 걸리는 시간으로 설명됩니다. 예를 들어 MAC의 홀드오버는 24시간 동안 1마이크로초 이내입니다. 즉, 24시간 후 시간 정확도는 비결정적이지만 1마이크로초 이내에 정확합니다.

    대안적인 접근 방식으로 우리는 PPS 입력을 수신할 수 있는 기능을 갖춘 차세대 칩 규모 및 소형 원자 시계를 기대하고 있습니다. 이를 통해 타임 카드의 타임 엔진은 목표에 도달하기 위해 디지털 리소스를 사용하는 대신 고정밀 발진기의 초정밀 합성을 구성 요소에 전달할 수 있습니다.

    일반적으로 튜닝이 정확할수록 달성할 수 있는 홀드오버 성능이 향상됩니다. 전달 측면에서, 정확한 타이밍이 있는 NIC를 사용하면 네트워크 패킷이 매우 정확한 타임스탬프를 수신할 수 있으며, 이는 네트워크를 통해 다른 서버와 공유되므로 정확한 시간을 유지하는 데 중요합니다. 이러한 NIC는 타임 카드에서 직접 PPS 신호를 수신할 수도 있습니다.

    아이디어와 다양한 구현 반복을 개념화한 후 프로토타입을 만들 수 있었습니다.

    시간 장치 작동

    타임 카드를 사용하면 하드웨어 타임 스탬프가 가능한 NIC가 있는 모든 x86 시스템을 타임 어플라이언스로 전환할 수 있습니다. 이 시스템은 NTP, PTP, SyncE 또는 기타 시간 동기화 프로토콜에 대해 실행되는지 여부에 관계없이 시간 카드가 제공하는 정확성과 안정성이 거의 모든 시스템에 충분하기 때문에 불가지론적입니다.

    PCIe 카드 사용의 장점은 사용 가능한 PCIe 슬롯이 충분하기만 하면 가정용 PC에서도 설정을 조립할 수 있다는 것입니다.

    다음 단계는 Linux를 설치하는 것입니다. 타임 카드 드라이버는 Linux 커널 5.15 이상에 포함되어 있습니다. 또는 커널 5.12 이상의 OCP GitHub 리포지토리에서 빌드할 수 있습니다.

    드라이버는 PHC 시계, GNSS, PPS 및 원자 시계 직렬을 포함한 여러 장치를 노출합니다.

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

    lrwxrwxrwx. 1 루트 0 8월 3일 19:49 장치 -> ../../../0000:04:00.0/

    -r-r-r-. 1 루트 4096 8월 3일 19:49 gnss_sync

    lrwxrwxrwx. 1 루트 0 8월 3일 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/

    lrwxrwxrwx. 1 루트 0 8월 3일 19:49 pps -> ../../../../../virtual/pps/pps1/

    lrwxrwxrwx. 1 루트 0 8월 3일 19:49 ptp -> ../../ptp/ptp2/

    lrwxrwxrwx. 1 루트 0 8월 3일 19:49 ttyGNSS -> ../../tty/ttyS7/

    lrwxrwxrwx. 1 루트 0 8월 3일 19:49 ttyMAC -> ../../tty/ttyS8/

    드라이버를 사용하면 타임 카드, GNSS 수신기 및 원자 시계 상태를 모니터링하고 devlink cli를 사용하여 새 FPGA 비트스트림을 플래시할 수도 있습니다.

    남은 일은 시간 카드를 참조 시계로 사용하도록 NTP 및/또는 PTP 서버를 구성하는 것뿐입니다. chrony를 구성하려면 refclock 속성을 지정하기만 하면 됩니다.

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

    그리고 매우 정확하고 안정적인 NTP Stratum 1 서버를 즐기십시오.

    $ 만성 소스
    210 소스 수 =1
    MS 이름/IP 주소 Stratum Poll Reach LastRx 마지막 샘플
    ===================================================================================
    #* PHC0 0 0 377 1 +4ns[ +4ns] +/- 36ns

    PTP 서버(예:ptp4u)의 경우 먼저 타임 카드 PHC를 NIC PHC와 동기화해야 합니다. 이것은 일반적으로 나노초의 한 자릿수 내에서 유지되는 높은 정밀도로 시계 값을 동기화하는 phc2sys 도구를 사용하여 쉽게 수행할 수 있습니다.

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

    정밀도를 높이려면 타임 카드와 NIC를 동일한 CPU PCIe 레인에 연결하는 것이 좋습니다. 정밀도를 높이려면 타임 카드의 PPS 출력을 NIC의 PPS 입력에 연결할 수 있습니다.

    정확성을 검증하고 확인하기 위해 여러 스위치와 독립 GNSS 안테나를 통해 동일한 네트워크에 연결된 Calnex Sentinel이라는 외부 검증 장치를 사용했습니다. PPS 테스트와 NTP 및/또는 PTP 프로토콜을 수행할 수 있습니다.

    파란색 선은 NTP 측정 결과를 나타냅니다. 48시간 측정 간격 동안 정밀도가 ±40마이크로초 이내로 유지됩니다.

    주황색 선은 PTP 측정 결과를 나타냅니다. 오프셋은 나노초 범위 내에서 실질적으로 0입니다.

    실제로 타임 카드 출력과 Calnex Sentinel의 내부 참조 간의 1PPS를 비교하면 결합된 오류 범위가 ±200나노초 이내임을 알 수 있습니다.

    그러나 더 중요한 것은 이러한 측정이 시간 기기 출력의 안정성을 입증한다는 것입니다.

    GNSS 신호 손실이 발생한 경우 원자 기반 타임 카드의 시간 드리프트(홀드오버라고도 함)가 24시간당 1마이크로초 이내로 유지되도록 해야 합니다. 다음은 24시간 간격 동안 원자 시계(SA.53s)의 홀드오버를 보여주는 그래프입니다. 보시다시피 PPS 드리프트는 원자 시계 사양 내에 있는 300나노초 내에 유지됩니다.

    타임 카드의 모듈식 설계를 통해 원자 시계를 OCXO(오븐 제어 수정 발진기) 또는 TCXO(온도 보상 수정 발진기)로 교체할 수 있어 홀드오버 기능이 저하된 예산 솔루션에 사용할 수 있습니다.

    시간 기기의 디자인 공개

    매우 정확하고 저렴하며 공급업체 잠금이 없는 장치를 구축하는 것은 그 자체로 성취였습니다. 하지만 우리는 업계에 더 큰 영향을 미치고 싶었습니다. 우리는 연구원에서 대규모 클라우드 데이터 센터에 이르기까지 모든 사람에게 무료로 제공하고 저렴하게 공개하고 싶었습니다.

    이것이 우리가 OCP(Open Compute Project)와 협력하여 완전히 새로운 TAP(Time Appliance Project)를 만든 이유입니다. OCP 우산 아래에서 우리는 사양, 회로도, 역학, BOM 및 소스 코드를 포함하여 Time Appliance Project GitHub 리포지토리에서 오픈 소스를 제공했습니다. 이제 PCB를 인쇄하고 작은 부품을 납땜하는 것이 무섭게 들리지 않는 한 누구나 일반 시간 기기 비용의 일부만으로 자신의 시간 카드를 만들 수 있습니다. 또한 우리는 타임 카드를 제작 및 판매할 Orolia와 정밀 타이밍 지원 ConnectX-6 Dx(및 정밀 타이밍 지원 BlueField-2 DPU)를 판매하는 Nvidia와 같은 여러 공급업체와 협력했습니다.

    www.opentimeserver.com에 Open Time Server 사양을 게시했으며 하드웨어(시간 카드, 네트워크 카드 및 상용 서버)와 소프트웨어(OS 드라이버, NTP 및/또는 PTP 서버)를 결합하는 방법을 자세히 설명합니다. ) 시간 기기를 구축합니다. 이 사양을 기반으로 어플라이언스를 구축하면 장치를 유지 관리하는 엔지니어에게 완전한 제어 권한이 부여되어 모니터링, 구성, 관리 및 보안이 향상됩니다.

    시간 장치는 모든 사람을 위한 타이밍 인프라를 개선하기 위한 여정에서 중요한 단계이지만 해야 할 일이 더 있습니다. 우리는 자체 서버 동기화의 정밀도와 정확성 개선을 포함하여 다른 요소에 대해 계속 작업할 것이며 이 작업을 개방형 컴퓨팅 커뮤니티와 계속 공유할 것입니다.


    임베디드

    1. 모래시계
    2. 파이썬 수면()
    3. 시간이 곧 돈입니다:유지보수 소프트웨어를 사용하여 시간을 절약하고 보다 효율적으로 지출하기 위한 팁
    4. 제조업체가 재고 관리에 대한 오래된 아이디어를 버릴 시간
    5. 공급망 리더, 이제 공격할 때입니다
    6. 디지털 트윈:서부 해안 열차가 정시에 운행하도록 돕고 있습니까?
    7. 파이썬 - 날짜 및 시간
    8. HMI란 무엇입니까?
    9. Crescent Crown은 자동화 구현을 통해 비용 및 시간 효율성 향상
    10. 제조 및 배송을 보다 간소화하는 방법