Facebook์€ ์›์ž ์‹œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฐฉํ˜• PCIe ์นด๋“œ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

Facebook์€ ์†Œํ˜• ์›์ž ์‹œ๊ณ„ ๋ฐ GNSS ์ˆ˜์‹ ๊ธฐ ๊ตฌํ˜„์„ ํฌํ•จํ•˜์—ฌ PCIe ๋ณด๋“œ ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ๊ฐœ๋ฐœ ๋‚ด์šฉ์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ์‹œ๊ฐ„ ๋™๊ธฐํ™” ์„œ๋ฒ„์˜ ์ž‘๋™์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋“œ ์ œ์ž‘์— ํ•„์š”ํ•œ ์‚ฌ์–‘, ํšŒ๋กœ๋„, BOM, Gerber, PCB ๋ฐ CAD ํŒŒ์ผ์ด GitHub์— ๊ฒŒ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณด๋“œ๋Š” ์›๋ž˜ ๋ชจ๋“ˆ์‹ ์žฅ์น˜๋กœ ์„ค๊ณ„๋˜์–ด SA5X, mRO-50, SA.45s ๋ฐ u-blox RCB-F9T์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ธฐ์„ฑ ์›์ž ์‹œ๊ณ„ ์นฉ ๋ฐ GNSS ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋œ ์‚ฌ์–‘์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ธฐ์„ฑํ’ˆ ๋ณด๋“œ ์ƒ์‚ฐ์ด Orolia์—์„œ ์‹œ์ž‘๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Facebook์€ ์›์ž ์‹œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฐฉํ˜• PCIe ์นด๋“œ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

Time Card๋Š” ์ธํ”„๋ผ์— ๋ฐฐํฌํ•˜๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ์งํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ(Time Master) ์ •ํ™•ํ•œ ์‹œ๊ฐ„ ์„œ๋ฒ„(Open Time Server)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋ณด๋‹ค ๊ธ€๋กœ๋ฒŒํ•œ Time Appliance ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ์‹œ๊ฐ„ ๋™๊ธฐํ™”. ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •ํ™•ํ•œ ์‹œ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์— ์˜์กดํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ๋‚ด์žฅ๋œ ์›์ž์‹œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉด ์œ„์„ฑ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋†’์€ ์ˆ˜์ค€์˜ ์ž์œจ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ธฐ์ƒ ์กฐ๊ฑด์ด๋‚˜ ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•ด).

ํ”„๋กœ์ ํŠธ์˜ ํŠน์ง•์€ ๊ธฐ๋ณธ ์ •ํ™•ํ•œ ์‹œ๊ฐ„ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜์ ์ธ ๋„คํŠธ์›Œํฌ ์นด๋“œ์™€ ํƒ€์ž„ ์นด๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” x86 ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์˜ ์ผ๋ฐ˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋ฒ„์—์„œ๋Š” GNSS๋ฅผ ํ†ตํ•ด ์œ„์„ฑ์œผ๋กœ๋ถ€ํ„ฐ ์ •ํ™•ํ•œ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ์›์ž์‹œ๊ณ„๋Š” GNSS๋ฅผ ํ†ตํ•œ ์ •๋ณด ํš๋“์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋†’์€ ์ •ํ™•๋„๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ์•ˆ์ •์ ์ธ ๋ฐœ์ง„๊ธฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๋ณด๋“œ์—์„œ GNSS๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ์‹คํŒจ ์‹œ ์ •ํ™•ํ•œ ์‹œ๊ฐ„๊ณผ์˜ ํŽธ์ฐจ๋Š” ํ•˜๋ฃจ ์•ฝ 300๋‚˜๋…ธ์ดˆ๋กœ ์ถ”์ •๋œ๋‹ค.

Facebook์€ ์›์ž ์‹œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฐฉํ˜• PCIe ์นด๋“œ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

Linux์˜ ๊ฒฝ์šฐ ocp_pt ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ์œผ๋ฉฐ Linux 5.15 ์ปค๋„์˜ ์ฃผ์š” ๊ตฌ์„ฑ์— ํฌํ•จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๋Š” PTP POSIX(/dev/ptp2), ์ง๋ ฌ์„ ํ†ตํ•œ GNSS(/dev/ttyS7), ์ง๋ ฌ์„ ํ†ตํ•œ ์›์ž ์‹œ๊ณ„(/dev/ttyS8) ๋ฐ ๋‘ ๊ฐœ์˜ i2c ์žฅ์น˜(/dev/i2c-*) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์—์„œ ํ•˜๋“œ์›จ์–ด ์‹œ๊ณ„(PHC) ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NTP(Network Time Protocol) ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ Chrony ๋ฐ NTPd๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. PTP(Precision Time Protocol) ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ์‹œ๊ฐ„ ๊ฐ’ ๋ณต์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” phc4sys ์Šคํƒ๊ณผ ํ•จ๊ป˜ ptp4u ๋˜๋Š” ptp2l์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์›์ž์‹œ๊ณ„๋ถ€ํ„ฐ ๋„คํŠธ์›Œํฌ ์นด๋“œ๊นŒ์ง€.

GNSS ์ˆ˜์‹ ๊ธฐ์™€ ์›์ž์‹œ๊ณ„์˜ ์ž‘๋™ ์กฐ์ •์€ ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋‘์—์„œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค์นญ ๋ชจ๋“ˆ์˜ ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์€ FPGA๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์€ ptp4l ๋ฐ chronyd์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ GNSS ์ˆ˜์‹ ๊ธฐ ๋ฐ ์›์ž ์‹œ๊ณ„์˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ˆ˜์ค€์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Facebook์€ ์›์ž ์‹œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฐฉํ˜• PCIe ์นด๋“œ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹œ์žฅ์—์„œ ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๊ฐœ๋ฐฉํ˜• ๋ณด๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์ด์œ ๋Š” ํ•ด๋‹น ์ œํ’ˆ์˜ ๋…์  ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๊ตฌํ˜„์˜ ์ •ํ™•์„ฑ, ์ œ์•ˆ๋œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ ๊ฐ„์˜ ๋ถˆ์ผ์น˜(๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ)๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์˜ค๋ž˜๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๊ณต๋˜๊ณ  ์ทจ์•ฝ์  ์ˆ˜์ •์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๋ช‡ ๋‹ฌ ๋˜๋Š” ๋ช‡ ๋…„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ), ์ œํ•œ๋œ ๋ชจ๋‹ˆํ„ฐ๋ง(SNMP) ๋ฐ ๊ตฌ์„ฑ ์˜ต์…˜(์ž์ฒด CLI ๋˜๋Š” ์›น UI ์ œ๊ณต)๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€