การเก็งกำไรเพื่อการจำลอง นวัตกรรมในการตรวจสอบ

การเก็งกำไรเพื่อการจำลอง นวัตกรรมในการตรวจสอบ

โหนดต้นทาง: 2547459

นี่เป็นแนวคิดที่น่าสนใจ โดยใช้การคาดเดาแบบขนานที่สนับสนุนโดยฮาร์ดแวร์เพื่อเร่งการจำลอง โดยต้องใช้ฮาร์ดแวร์แบบกำหนดเอง Paul Cunningham (รองประธานอาวุโส/GM, Verification at Cadence), Raúl Camposano (Silicon Catalyst, ผู้ประกอบการ, อดีต CTO ของ Synopsys และปัจจุบันคือ Silvaco CTO) และผมสานต่อแนวคิดการวิจัยของเรา และเช่นเคย เรายินดีรับฟังความคิดเห็น

การเก็งกำไรเพื่อการจำลอง

นวัตกรรม

เลือกเดือนนี้ Chronos: การเก็งกำไรแบบขนานที่มีประสิทธิภาพสำหรับตัวเร่งความเร็ว. ผู้เขียนได้นำเสนอบทความนี้ในการประชุม 2020 Conference on Architectural Support for Programming Languages ​​and Operating Systems และมาจาก MIT

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

อีกหนึ่งประเด็นที่ควรทราบที่นี่ วิธีนี้รองรับการจำลองแบบหน่วงเวลา ซึ่งแตกต่างจากเทคนิคการเร่งด้วยฮาร์ดแวร์ส่วนใหญ่

มุมมองของพอล

ว้าว ช่างเป็นกระดาษออกเทนสูงที่ยอดเยี่ยมจาก MIT! เมื่อถามเกี่ยวกับการคำนวณแบบขนาน ฉันจะนึกถึงเธรด mutexes และการเชื่อมโยงกันของหน่วยความจำทันที แน่นอนว่านี่คือการออกแบบซีพียูแบบมัลติคอร์ที่ทันสมัย แต่ไม่ใช่วิธีเดียวที่จะรองรับการทำงานแบบขนานในฮาร์ดแวร์

บทความนี้เสนอสถาปัตยกรรมทางเลือกสำหรับการขนานที่เรียกว่า Chronos ซึ่งขึ้นอยู่กับคิวงานที่สั่ง ที่รันไทม์ งานจะถูกดำเนินการตามลำดับการประทับเวลา และแต่ละงานสามารถสร้างงานย่อยใหม่ที่เพิ่มลงในคิวแบบไดนามิก การดำเนินการเริ่มต้นด้วยการวางงานเริ่มต้นบางอย่างลงในคิวและสิ้นสุดเมื่อไม่มีงานอื่นในคิว

งานในคิวจะถูกจัดสรรให้กับองค์ประกอบการประมวลผล (PE) หลายรายการพร้อมกัน ซึ่งหมายความว่า Chronos กำลังดำเนินการงานในอนาคตอย่างคาดเดาก่อนที่งานปัจจุบันจะเสร็จสมบูรณ์ หากงานปัจจุบันทำให้งานในอนาคตที่ดำเนินการอย่างคาดเดาไม่ถูกต้อง การดำเนินการของงานในอนาคตเหล่านั้นจะถูก "เลิกทำ" และจะถูกจัดคิวใหม่ การนำแนวคิดนี้ไปใช้อย่างถูกต้องในฮาร์ดแวร์นั้นไม่ใช่เรื่องง่าย แต่สำหรับผู้ใช้ภายนอกถือว่าเป็นสิ่งที่ดี คุณเพียงแค่เขียนโค้ดอัลกอริทึมของคุณราวกับว่าคิวงานกำลังดำเนินการตามลำดับบน PE เดียว ไม่จำเป็นต้องเขียนโค้ด mutexes หรือกังวลเกี่ยวกับการหยุดชะงัก

ผู้เขียนใช้ Chronos ใน SystemVerilog และคอมไพล์เป็น FPGA เอกสารส่วนใหญ่จัดทำขึ้นเพื่ออธิบายว่าพวกเขานำคิวงานไปใช้อย่างไร และการคลายฮาร์ดแวร์ที่จำเป็นใดๆ เพื่อประสิทธิภาพสูงสุด Chronos ได้รับการวัดประสิทธิภาพด้วยสี่อัลกอริธึมที่เหมาะกับสถาปัตยกรรมตามคิวงาน แต่ละอัลกอริทึมถูกนำไปใช้งานสองวิธี: วิธีแรกใช้ PE เฉพาะอัลกอริทึมเฉพาะ และวิธีที่สองใช้ RISC-V CPU แบบโอเพ่นซอร์ส 32 บิตแบบฝังตัวนอกชั้นวางเป็น PE ประสิทธิภาพของ Chronos จะถูกนำไปเปรียบเทียบกับการใช้ซอฟต์แวร์แบบมัลติเธรดของอัลกอริทึมที่ทำงานบนเซิร์ฟเวอร์ Intel Xeon โดยมีราคาใกล้เคียงกับ FPGA ที่ใช้สำหรับ Chronos ผลลัพธ์น่าประทับใจ – Chronos ปรับขนาดได้ดีกว่าการใช้เซิร์ฟเวอร์ Xeon ถึง 3 เท่าถึง 15 เท่า อย่างไรก็ตาม การเปรียบเทียบตารางที่ 3 กับรูปที่ 14 ทำให้ฉันกังวลเล็กน้อยว่ากำไรส่วนใหญ่มาจาก PE เฉพาะอัลกอริทึมมากกว่าสถาปัตยกรรม Chronos เอง

เนื่องจากนี่เป็นบล็อกการยืนยัน ฉันได้ขยายมาตรฐานการจำลองระดับเกทอย่างเป็นธรรมชาติ อุตสาหกรรม EDA ได้ลงทุนอย่างหนักเพื่อพยายามจำลองลอจิกแบบขนาน และพิสูจน์ให้เห็นได้ยากว่าจะเห็นประโยชน์มหาศาลนอกเหนือจากกรณีการใช้งานเฉพาะบางกรณี สาเหตุหลักมาจากประสิทธิภาพของการจำลองในโลกแห่งความเป็นจริงส่วนใหญ่ถูกควบคุมโดยคำสั่งโหลด/จัดเก็บที่ขาดหายไปในแคช L3 และส่งออกไปยัง DRAM มี testcase เพียงอันเดียวที่เป็นเกณฑ์เปรียบเทียบในเอกสารนี้ และเป็นโปรแกรมพกพาบันทึก adder ขนาดเล็กแบบ 32 บิต หากคุณกำลังอ่านบล็อกนี้และสนใจที่จะทำการเปรียบเทียบอย่างละเอียดมากกว่านี้ โปรดแจ้งให้เราทราบ หาก Chronos สามารถปรับขนาดได้ดีในการจำลองโลกแห่งความเป็นจริง มันจะมีมูลค่าเชิงพาณิชย์มหาศาล!

มุมมองของราอูล

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

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

พื้นที่ โครโนส ระบบถูกนำไปใช้ในเฟรมเวิร์ก AWS FPGA เป็นระบบที่มี 16 ไทล์ แต่ละอันมี 4 องค์ประกอบการประมวลผลเฉพาะแอปพลิเคชัน (PE) ซึ่งทำงานที่ 125MHz ระบบนี้ถูกเปรียบเทียบกับพื้นฐานที่ประกอบด้วย 20-core/40-thread 2.4 GHz Intel Xeon E5-2676v3 ซึ่งได้รับการคัดเลือกโดยเฉพาะเนื่องจากราคาของมันเทียบได้กับ FPGA (ประมาณ 2 ดอลลาร์ต่อชั่วโมง) รันงานเดียวบน PE เดียว Chronos เร็วกว่าพื้นฐาน 2.45 เท่า เมื่อจำนวนของงานที่ทำพร้อมกันเพิ่มขึ้น การใช้งาน Chronos จะปรับความเร็วขึ้นเป็น 44.9 เท่าแบบสัมพันธ์กันบนไทล์ 8 แผ่น ซึ่งสอดคล้องกับความเร็วที่เพิ่มขึ้น 15.3 เท่าของการใช้งาน CPU พวกเขายังเปรียบเทียบการใช้งานตามวัตถุประสงค์ทั่วไป RISC-V มากกว่า PE เฉพาะแอปพลิเคชัน PE เร็วกว่า RISC-V ถึง 5 เท่า

ฉันพบว่าเอกสารนี้น่าประทับใจเพราะครอบคลุมทุกอย่างตั้งแต่แนวคิดไปจนถึงคำจำกัดความของรูปแบบการดำเนินการ SLOT ไปจนถึงการนำฮาร์ดแวร์ไปใช้ และการเปรียบเทียบโดยละเอียดกับ Xeon CPU แบบดั้งเดิมสำหรับ 4 แอปพลิเคชัน ความพยายามนั้นสำคัญมาก Chronos มี SystemVerilog มากกว่า 20,000 บรรทัด ผลลัพธ์คือความเร็วเฉลี่ย 5.4 เท่า (จาก 4 แอปพลิเคชัน) เมื่อเทียบกับซอฟต์แวร์เวอร์ชันคู่ขนาน เนื่องจากความขนานที่มากขึ้นและการใช้การดำเนินการเชิงคาดเดาที่มากขึ้น บทความนี้ควรค่าแก่การอ่านสำหรับการใช้งานที่ไม่ใช่งานจำลอง กระดาษมีสามตัวอย่าง

แชร์โพสต์นี้ผ่าน:

ประทับเวลา:

เพิ่มเติมจาก กึ่งวิกิ