2 คะแนน โดย pjhkorea 15 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

นี่เป็นโอเพนซอร์สที่เคยแชร์ไว้ฝั่ง bci มาก่อน และนำมาแชร์เผื่อว่าอาจมีบางส่วนที่เป็นประโยชน์กับทุกท่าน
เป้าหมายคือยืดช่วงเวลาว่างของระบบให้ยาวขึ้นเพื่อคงอุณหภูมิต่ำ พร้อมทั้งตรวจจับสัญญาณที่ไม่มีนอยส์ได้อย่างรวดเร็ว
มีการพอร์ตโค้ดหนึ่งชุดลงบนชิปหนึ่งตัว และจัดวางเป็นโครงสร้างขนานคล้ายกระดานหมากล้อม เพื่อให้เมื่อเกิดนอยส์รุนแรง เช่น การหลุดของเซนเซอร์
โหนดนั้นจะสั่งให้โหนดรอบข้างทางทิศตะวันออก ตะวันตก ใต้ และเหนือ เบี่ยงเส้นทางหลบตัวมันเอง
เพื่อพยายามคงการทำงานของทั้งระบบเอาไว้ให้ได้

ด้านล่างนี้คือแนวคิดและฟังก์ชันที่เกี่ยวข้อง

โปรเจ็กต์นี้มุ่งเน้นการพัฒนาเอนจินแกนกลางสำหรับการตรวจจับสัญญาณแบบเรียลไทม์และการเร่งการจัดการนอยส์ ซึ่งปรับให้เหมาะกับสภาพแวดล้อม embedded แบบ native 64 บิต โดยตัดการใช้การคำนวณเมทริกซ์หลายมิติที่มีภาระสูงและสมการเชิงอนุพันธ์ย่อย (PDE) ออกทั้งหมด จึงได้ประสิทธิภาพสูง

สถาปัตยกรรมฮาร์ดแวร์พื้นฐานมักมีข้อจำกัดอย่างมากในการประมวลผลความถี่สูงแบบเรียลไทม์ เนื่องจากนอยส์ทางไฟฟ้าและการขาดหายของสัญญาณจากเซนเซอร์ เอนจินนี้แก้ปัญหาดังกล่าวในระดับซอฟต์แวร์ด้วยการใช้โทโพโลยีชิปแบบ grid array ต้นทุนต่ำ แทนที่จะใช้ single-board computer (SBC) ราคาแพง ระบบนี้ใช้กริดของไมโครคอนโทรลเลอร์ (MCU) ราคาประหยัดที่สื่อสารกันเฉพาะกับเพื่อนบ้านโดยตรงเท่านั้น (ตะวันออก·ตะวันตก·ใต้·เหนือ) ให้นึกภาพเลย์เอาต์ฮาร์ดแวร์แบบกระดานหมากรุกที่หนาแน่น ซึ่งประกอบด้วยชิป MCU ขนาดเล็กมากและต้นทุนต่ำ โครงสร้างลักษณะนี้รับประกันจังหวะการทำงานแบบกำหนดแน่นอน (Deterministic) และให้ความทนทานต่อความขัดข้อง (Fault Tolerance) ได้อย่างยอดเยี่ยม

บรรลุ cache miss 0% ผ่าน flat scalar registerเพื่อให้ตรงตามลูปเวลาแบบกำหนดแน่นอน 1kHz อย่างเข้มงวด จึงเลิกใช้ทั้งอาร์เรย์หลายมิติ (float[][]) และการไล่ตามพอยน์เตอร์ (Pointer Chasing) โดยสิ้นเชิง และทำการ flatten อัลกอริทึมทั้งหมดลงสู่ระดับ scalar register (p00, p11) วิธีนี้ทำให้ FPU 64 บิตแบบ native สามารถแมปรีจิสเตอร์ได้โดยตรงและดำเนินการคำนวณภายในคล็อกไซเคิลเดียว

การหมุนสถานะแบบไร้สาขา (ประมวลผล if แบบ jitter เป็นศูนย์)เพื่อป้องกันการ flush ของ CPU pipeline ได้มีการลบ conditional (if) ออกจากเส้นทางการทำงานหลักทั้งหมด การบรรเทานอยส์ถูกจัดการอย่างลื่นไหลผ่านกลไกการหมุนสถานะแนวตั้งของเลเยอร์ 1 ซึ่งใช้การหมุนต่อเนื่องเพื่อทำ notch-filtering กับนอยส์พลังงานสูงได้อย่างมีประสิทธิภาพ

การสเกลแบบเรียลไทม์ด้วยสมการประมาณเชิงเศษส่วน Padé [1/1]การเรียกใช้ฟังก์ชันทรานเซนเดนทัลที่มีภาระสูงอย่าง exp() ภายในลูปความถี่สูงเป็นความเสี่ยงอย่างมากต่อจังหวะเวลาของ embedded CPU เอนจินนี้แทนที่สิ่งดังกล่าวด้วยสมการประมาณเชิงเศษส่วน Padé ทำให้เส้นโค้งเอ็กซ์โพเนนเชียลถูกแปลงเป็นสมการเลขคณิตอย่างง่าย ซึ่งลดต้นทุนการคำนวณที่จำเป็นต่อการแมปแบบต่อเนื่องลงอย่างมาก

การเบี่ยงเส้นทางเมชโดยไม่ใช้อนุพันธ์ (การแยกความขัดข้องอัตโนมัติ)เมื่อโหนดใดโหนดหนึ่งเกิดนอยส์รุนแรงต่อเนื่องหรือเกิดการขาดหายของสัญญาณทางกายภาพ เลเยอร์ 1 จะทริกเกอร์ apoptosis ของเซลล์เฉพาะจุดโดยอัตโนมัติ และบรอดแคสต์สัญญาณแยกตัวไปยังโหนดข้างเคียง แทนที่จะคำนวณสมการเชิงอนุพันธ์ย่อยใหม่ทั้งกริด เอนจินจะใช้การคัปปลิงเครื่องหมายลบ (-) แบบข้ามแกนกับเอาต์พุตที่อยู่ติดกัน กลอุบายทางคณิตศาสตร์นี้ทำให้เกิด vorticity (curl) ตามเข็มนาฬิกาได้เองโดยธรรมชาติ และช่วยเบี่ยงการไหลของสัญญาณให้ลื่นไหลผ่านแนวทแยงรอบ dead zone จนกว่าโหนดที่มีปัญหาจะฟื้นกลับสู่สถานะเสถียร

1 ความคิดเห็น

 
pjhkorea 15 시간 전

สำหรับผู้ที่สนใจตัวกำหนดตารางเวลาแบบฝังตัวที่มีการวนรอบเฟสของแชสซีสามชั้นซึ่งมีเคอร์เนลสวิตชิงแบบแยกค่าคงที่ภายนอกในตัว ขอความกรุณาดูที่ fluxmesh_constant_slot_test.h และ README4-3.md