การปรับเวลาใหม่
การปรับเวลาใหม่ (Retiming)เป็นเทคนิคการเคลื่อนย้ายตำแหน่งโครงสร้างของสลักหรือรีจิสเตอร์ในวงจรดิจิทัลเพื่อปรับปรุงประสิทธิภาพ พื้นที่ และ/หรือ ลักษณะ การใช้พลังงานในลักษณะที่ยังคงรักษาพฤติกรรมการทำงานที่เอาต์พุตไว้ การปรับเวลาใหม่นี้ได้รับการอธิบายครั้งแรกโดยCharles E. LeisersonและJames B. Saxeในปี 1983 [ 1 ]
เทคนิคนี้ใช้กราฟแบบมีทิศทางโดยที่จุดยอดแทนบล็อกคอมบิเนชันแบบอะซิงโครนัส และขอบแบบมีทิศทางแทนชุดของรีจิสเตอร์หรือแลตช์ (จำนวนรีจิสเตอร์หรือแลตช์อาจเป็นศูนย์) แต่ละจุดยอดจะมีค่าที่สอดคล้องกับความล่าช้าผ่านวงจรคอมบิเนชันที่มันแทน หลังจากนั้น เราสามารถพยายามปรับปรุงวงจรให้เหมาะสมที่สุดโดยการย้ายรีจิสเตอร์จากเอาต์พุตไปยังอินพุตและในทางกลับกัน – คล้ายกับการย้ายแบบบับเบิลพุชชิ่งสามารถใช้การดำเนินการสองแบบได้ คือ การลบรีจิสเตอร์ออกจากอินพุตแต่ละตัวของจุดยอดในขณะที่เพิ่มรีจิสเตอร์ไปยังเอาต์พุตทั้งหมด และในทางกลับกัน การเพิ่มรีจิสเตอร์ไปยังอินพุตแต่ละตัวของจุดยอดและลบรีจิสเตอร์ออกจากเอาต์พุตทั้งหมด ในทุกกรณี หากปฏิบัติตามกฎ วงจรจะมีพฤติกรรมการทำงานเหมือนเดิมก่อนที่จะปรับเวลาใหม่
คำอธิบายอย่างเป็นทางการ
การกำหนดปัญหาการปรับเวลาใหม่เบื้องต้นตามที่ Leiserson และ Saxe อธิบายไว้มีดังนี้ กำหนดให้กราฟแบบมีทิศทาง ซึ่งจุดยอดแทนเกตตรรกะหรือองค์ประกอบหน่วงเวลาแบบผสมในวงจร สมมติว่ามีขอบแบบมีทิศทางระหว่างองค์ประกอบสองตัวที่เชื่อมต่อกันโดยตรงหรือผ่านรีจิสเตอร์หนึ่งตัวขึ้นไป ให้ค่าน้ำหนักของแต่ละขอบเป็นจำนวนรีจิสเตอร์ที่อยู่ตามขอบในวงจรเริ่มต้น ให้เป็นการหน่วงเวลาการแพร่กระจายผ่านจุดยอดเป้าหมายในการปรับเวลาใหม่คือการคำนวณค่าหน่วงเวลา จำนวนเต็ม สำหรับแต่ละจุดยอดเพื่อให้ค่าน้ำหนักที่ปรับเวลาใหม่ของทุกขอบไม่เป็นลบ มีการพิสูจน์ว่าสิ่งนี้จะรักษาฟังก์ชันการทำงานของเอาต์พุตไว้[ 2 ]
ลดระยะเวลาของนาฬิกาให้น้อยที่สุดด้วยการไหลของเครือข่าย
การปรับเวลาที่พบบ่อยที่สุดคือการลดคาบเวลาของนาฬิกา ให้เหลือน้อยที่สุด เทคนิคอย่างง่ายในการปรับคาบเวลาของนาฬิกาให้เหมาะสมที่สุดคือการค้นหาคาบเวลาที่น้อยที่สุดที่เป็นไปได้ (เช่น การใช้การค้นหาแบบไบนารี )
สามารถตรวจสอบ ความเป็นไปได้ของคาบเวลาของนาฬิกาได้หลายวิธีโปรแกรมเชิงเส้นด้านล่างนี้เป็นไปได้ก็ต่อเมื่อเป็นคาบเวลาของนาฬิกาที่เป็นไปได้ ให้เป็นจำนวนรีจิสเตอร์ขั้นต่ำตามเส้นทางใดๆ จากไป(ถ้ามีเส้นทางดังกล่าวอยู่) และเป็นค่าหน่วงเวลาสูงสุดตามเส้นทางใดๆ จากไปที่มีรีจิสเตอร์ W(u,v) ตัว ปัญหาคู่ขนานของโปรแกรมนี้คือปัญหาการหมุนเวียนต้นทุนต่ำสุดซึ่งสามารถแก้ไขได้อย่างมีประสิทธิภาพในฐานะปัญหาเครือข่าย ข้อจำกัดของวิธีการนี้เกิดขึ้นจากการแจงนับและขนาดของเมทริกซ์และ
| ที่ให้ไว้ | และช่วงเวลาเป้าหมายของนาฬิกา | |
| หา | ||
| โดยที่ | ||
| ถ้า | ||
ลดระยะเวลาของนาฬิกาให้น้อยที่สุดด้วย MILP
อีกทางเลือกหนึ่ง ความเป็นไปได้ของช่วงเวลาของนาฬิกา สามารถแสดงได้ในรูปของ โปรแกรมเชิงเส้นจำนวนเต็มผสม(MILP) จะมีคำตอบและฟังก์ชันหน่วงเวลาที่ถูกต้องก็ต่อเมื่อช่วงเวลานั้นเป็นไปได้เท่านั้น
| ที่ให้ไว้ | และช่วงเวลาเป้าหมายของนาฬิกา | |
| หา | และ | |
| โดยที่ | ||
สูตรและส่วนขยายอื่นๆ
สูตรทางเลือกช่วยให้สามารถลดจำนวนรีจิสเตอร์และลดจำนวนรีจิสเตอร์ภายใต้ข้อจำกัดด้านความล่าช้า บทความเริ่มต้นประกอบด้วยส่วนขยายที่อนุญาตให้พิจารณาการแบ่งปัน fan-out และแบบจำลองความล่าช้าทั่วไปมากขึ้น งานต่อมาได้กล่าวถึงการรวมความล่าช้าของรีจิสเตอร์[ 3 ]แบบจำลองความล่าช้าที่ขึ้นอยู่กับโหลด[ 3 ]และข้อจำกัดการถือครอง[ 4 ]
ปัญหา
การปรับจังหวะเวลา (Retiming) มีการนำไปใช้ในอุตสาหกรรมบ้างแล้ว แม้ว่าจะยังไม่แพร่หลายนัก ข้อเสียหลักคือการเข้ารหัสสถานะของวงจรถูกทำลาย ทำให้การดีบั๊ก การทดสอบ และการตรวจสอบทำได้ยากขึ้นอย่างมาก การปรับจังหวะเวลาบางครั้งอาจต้องใช้ตรรกะการเริ่มต้นที่ซับซ้อนเพื่อให้วงจรเริ่มต้นในสถานะเริ่มต้นที่เหมือนกัน สุดท้าย การเปลี่ยนแปลงในโครงสร้างของวงจรมีผลกระทบต่อขั้นตอนการสังเคราะห์เชิงตรรกะและทางกายภาพอื่นๆ ซึ่งทำให้การออกแบบเสร็จสมบูรณ์ได้ยาก
ทางเลือกอื่นๆ
การจัดตารางเวลาแบบคลาดเคลื่อนของสัญญาณนาฬิกา (Clock skew scheduling) เป็นเทคนิคที่เกี่ยวข้องกับการปรับวงจรลำดับให้เหมาะสมที่สุด ในขณะที่การปรับเวลา (Retiming) เปลี่ยนตำแหน่งโครงสร้างของรีจิสเตอร์ การจัดตารางเวลาแบบคลาดเคลื่อนของสัญญาณนาฬิกาจะเปลี่ยนตำแหน่งเชิงเวลาของรีจิสเตอร์โดยการกำหนดเวลาการมาถึงของสัญญาณนาฬิกา ขีดจำกัดล่างของคาบเวลานาฬิกาขั้นต่ำที่ทำได้ของทั้งสองเทคนิคคือเวลาเฉลี่ยสูงสุดของวงจร (กล่าวคือ ความล่าช้ารวมของวงจรตามเส้นทางใดๆ หารด้วยจำนวนรีจิสเตอร์ตามเส้นทางนั้น)
ดูเพิ่มเติม
หมายเหตุ
- ↑ Leiserson, Charles E.; Rose, Flavio M.; Saxe, James B. (1983). "การเพิ่มประสิทธิภาพวงจรซิงโครนัสด้วยการปรับเวลาใหม่ (ฉบับร่างเบื้องต้น)" การประชุม Caltech ครั้งที่สามว่าด้วยการรวมวงจรขนาดใหญ่มาก Springer. หน้า87–116 . doi : 10.1007/978-3-642-95432-0_7 . ISBN 978-3-540-12369-9.
- ↑ Leiserson, Charles E.; Saxe, James B. (มิถุนายน 1991). "การปรับเวลาวงจรซิงโครนัส". Algorithmica . 6 (1). Springer: 5– 35. doi : 10.1007/BF01759032 . S2CID 18674287 .
- 1 2 Lalgudi, KN; Papaefthymiou, MC (1997). "การปรับเวลาวงจรทริกเกอร์ขอบภายใต้แบบจำลองความล่าช้าทั่วไป" IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 16 (12): 1393– 1408. doi : 10.1109/43.664222 .
- ↑ Papaefthymiou, Marios C. (1998). "การปรับเวลาใหม่ที่มีประสิทธิภาพเชิงอะซิมโทติกภายใต้ข้อจำกัดการตั้งค่าและการคงค่า". รายงานการประชุมนานาชาติ IEEE/ACM ว่าด้วยการออกแบบโดยใช้คอมพิวเตอร์ช่วย ประจำปี 1998 - ICCAD '98หน้า396–401 . doi : 10.1145/288548.289060 . ISBN 1-58113-008-2.
ลิงก์ภายนอก
- การนำเสนอเกี่ยวกับการปรับเวลาใหม่จาก MIT
- อัลกอริทึมการปรับเวลาการลงทะเบียนระดับเกตที่ปลอดภัยและสมบูรณ์แบบ