คอมพิวเตอร์ใช้อุปกรณ์พกพาที่มองข้ามหรือไม่


12

มีรายละเอียดมากมายเกี่ยวกับตัวเสริมแบบพกพา lookahead เช่น Kogge-Stone, Lander-Fischer เป็นต้นในหลักสูตร CS ของวิทยาลัย พวกเขาอธิบายว่า "พบบ่อยในอุตสาหกรรม" อย่างไรก็ตามฉันไม่สามารถหาหลักฐานใด ๆ (นอกเหนือจากห่วงโซ่การขนส่งของแมนเชสเตอร์) จากครั้งล่าสุดที่มีการใช้จริงทุกที่โดยเฉพาะ การค้นหาโดย Google จะส่งคืนหน้าวารสารและงานวิจัยทางวิชาการเท่านั้น อย่างน้อยที่สุดจะมีการใช้งานตามสมมุติฐาน

คำถามของฉันคือมีการใช้สถานที่ / การใช้งานที่เฉพาะเจาะจง add-carryahead หรือพวกเขาไม่เกี่ยวข้องกับโลกแห่งความจริง?


1
รอบเวลาของตัวประมวลผลประสิทธิภาพสูงและรอบเวลาเพิ่มความหน่วงแน่นอนชี้ไปที่พวกเขาไม่ได้ใช้ripple-carry (แต่จะอนุญาตให้เลือกแบบพกพา) แม้แต่กระบวนการ 22nm ของ Intel การกระเพื่อมผ่าน 64 บิตในน้อยกว่า 300ps อาจไม่น่าเป็นไปได้
Paul A. Clayton

@ PaulA.Clayton ฉันได้รับความประทับใจจากการดูเอกสารข้อมูลบางอย่างที่มีการใช้ตัวเลือกแบบพกพาหรือตัวถอดรหัสเหมือนตัวถอดรหัส
qwr

คำตอบ:


16

นี่เป็นคำถามที่ตรงไปตรงมาพร้อมคำตอบที่ซับซ้อนมาก

ก่อนอื่นพื้นหลังบางส่วน

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

ประการที่สองคุณต้องพิจารณาวงจรชีวิตทั้งหมดของโครงการ adder ที่เหมาะสมสำหรับการทำให้เกิด VLSI อาจไม่เหมาะสมสำหรับการทำให้เกิด FPGA หากการออกแบบกำลังจะผ่านขั้นตอนการทดสอบบน FPGA ... คุณจะได้ภาพ

ประการที่สามไม่ adder ทุกทำเท่ากัน บน CPU ทั่วไปมีส่วนเสริมมากมายที่แขวนอยู่รอบ ๆ ซึ่งทำงานต่างกัน อาจมีจำนวนเต็ม ALU หลายตัวซึ่งเป็นเลขลอยตัว mantissa adder ซึ่งเป็น adder ที่ทำการคำนวณที่อยู่ adder ที่คำนวณเป้าหมายสาขาและอื่น ๆ นั่นไม่นับส่วนเสริมที่ประหยัดได้ที่คุณพบในหน่วยคูณที่ทันสมัย แต่ละคนมีลักษณะและข้อ จำกัด ของตัวเอง

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

สุดท้ายและที่สำคัญที่สุดคือผู้เล่นรายใหญ่ (เช่น Intel, AMD, NVIDIA) มีรายละเอียดในระดับต่ำเกี่ยวกับรายละเอียดการใช้งานอย่างชัดเจนเนื่องจากพวกเขาคิดว่าพวกเขาสามารถรับกระดาษและ / หรือสิทธิบัตรได้ ถึงอย่างนั้นคุณก็มักจะไม่สามารถมั่นใจได้ว่าสิ่งที่พวกเขาทำจริง ๆ โดยไม่มีวิศวกรรมย้อนกลับ

ต้องบอกว่ามีบางสิ่งที่เรารู้

สิ่งสำคัญที่คุณต้องรู้คือเมธอดแบบพกพา - อัลเลเฮดคือแบบเอกสารสำเร็จรูปและไม่จำเป็นต้องมีวิธีการในตัวเอง การเปรียบเทียบอาจเป็นไปตามลำดับที่นี่

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

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

เช่นเดียวกับวงจรบวก ยกตัวอย่างเช่นเป็นที่ทราบกันว่าหน่วย Pentium 4 จำนวนเต็มใช้ตัวบวก Han-Carlson ซึ่งเป็นการผสมผสานระหว่าง Kogge-Stone และ Brent-Kung (ฮัน - คาร์ลสันเป็นที่น่าสนใจเป็นพิเศษเพราะมันเป็น "จุดหวาน" ในการแลกเปลี่ยนระหว่างความล่าช้าในการแพร่กระจายและพื้นที่ตายซึ่งยังค่อนข้างมีประสิทธิภาพด้านพลังงาน) มันมักจะจ่ายเงินเพื่อใช้หลายวิธีผสมกัน

"บริสุทธิ์" ตัวเสริมแบบพกพา lookahead ยังคงเป็นบรรทัดฐานในวงจรสังเคราะห์ (เช่นถ้าคุณป้อนตัวดำเนินการ Verilog "+" ให้กับ Cadence หรือ Synopsys) เมื่อพูดถึงการออกแบบมือซีพียูระดับไฮเอนด์รุ่นใหม่ เอ็นจิ้นการดำเนินการตามคำสั่งดูเหมือนจะเคลื่อนไปสู่การออกแบบที่แตกต่างกันเล็กน้อยสำหรับหน่วยจำนวนเต็ม

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

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


6

ใช่คอมพิวเตอร์หลายเครื่องใช้อุปกรณ์พกพาพกพา ฉันได้ออกแบบไมโครโพรเซสเซอร์เก่า ๆ แล้วและฉันสามารถยกตัวอย่างได้

ALU บน Intel 8008 (โปรเซสเซอร์ 8 บิตแรก) รวมวงจรแบบพกพาขนาดใหญ่ที่ใช้กับตรรกะแบบไดนามิก วงจรนี้กินพื้นที่ตายมากพอ ๆ กับ ALU Carry Lookahead แสดงอยู่ในแผ่นข้อมูล 8008รูปที่ 3 ฉันไม่ได้เห็นโปรเซสเซอร์ตัวอื่นในทศวรรษ 1970 ที่มีตัวพกติดตัวสำหรับ ALU ดังนั้น 8008 นั้นค่อนข้างแปลกในเรื่องนี้

6502 ใช้ carry-lookahead ดั้งเดิมสำหรับการเพิ่มตัวนับโปรแกรม (PC) ตรวจพบว่าจะมีการส่งจากไบต์ล่างของพีซีและใช้สิ่งนี้เพื่อเพิ่มไบต์บน สิ่งนี้จะช่วยลดการกระเพื่อมของการพกพาจาก 16 บิตเป็น 8 บิต ALU ของ 6502 ใช้กระเพื่อมกระเพื่อมแม้ว่าลอจิกแบบพกพาจะกลับด้านสำหรับบิตสลับซึ่งจะตัดอินเวอร์เตอร์ออกจากเส้นทางและทำให้เร็วขึ้นเล็กน้อย

Z-80 มีตัวเพิ่มขึ้น / ลดลง 16 บิตที่ใช้สำหรับการอัปเดตพีซีคำแนะนำ inc / dec และตัวนับลูป มันใช้โครงสร้าง carry-skip เพื่อดำเนินการคำนวณสำหรับกลุ่มของสองบิต นอกจากนี้ยังใช้ carry-lookahead เพื่อสร้างการแบกจากบิต 0-7, 7-11 และ 12-14 การพกพาอื่น ๆ จะคำนวณด้วยการกระเพื่อม ( รายละเอียด ) ALU ของ Z-80 น่าประหลาดใจคือ 4 บิตดังนั้นการดำเนินการ 8 บิตแต่ละครั้งจะผ่านสองผ่าน ALU

ในทางตรงกันข้าม 8085 ใช้กระเพื่อมระลอกสำหรับการเพิ่ม / ลดลง 16 บิต แต่เช่นเดียวกับ 6502 มันจะเพิ่มความเร็วขึ้นเล็กน้อยด้วยการแปลงลอจิกของการถือในการสลับบิต

ARM-1มี ALU 32 บิตโดยไม่มีการดำเนินการ lookahead พกเพียงระลอก นอกจากนี้ยังใช้เคล็ดลับในการย้อนกลับการพกพาในบิตสลับ

ในโลกมินิคอมพิวเตอร์ตัวประมวลผลจำนวนมากถูกสร้างขึ้นจากชิป ALU 74181 4 บิตที่รู้จักกันดีซึ่งมีการพกพาภายใน lookahead ตัวอย่าง ได้แก่ Data General Nova, Xerox Alto, VAX-11/780 และ TI-990 (ดูรายการ Wikipedia ที่ยาวขึ้น) ระลอกคลื่นที่ใช้เหล่านี้บางตัวมีอยู่ระหว่างชิป 4 บิตแต่ละตัวและบางตัวใช้ชิป 74182 ที่มีชิป lookahead สำหรับการมองเต็ม

เพื่อสรุปไมโครโปรเซสเซอร์ที่แตกต่างกันใช้เทคนิคการพกพาที่หลากหลายขึ้นอยู่กับเป้าหมายประสิทธิภาพและการดำเนินการใดที่อยู่บนเส้นทางวิกฤติ ALU สามารถใช้กระเป๋าถือแบบเต็มหัว (เช่น 8008) หรือแม้กระทั่งขนาดครึ่งเดียว (เช่น Z-80) ส่วนเพิ่มอาจเป็นปัญหาด้านประสิทธิภาพเนื่องจากโดยทั่วไปแล้วจะเป็น 16 บิตในตัวประมวลผล 8 บิตซึ่งทำให้เกิดการหน่วงเวลาของการกระเพื่อมเป็นสองเท่า ส่วนเพิ่มสามารถมีระลอกกระเพื่อม (8085), หนึ่งพก lookahead (6502) หรือหลายขั้นตอน lookahead พก (Z-80)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.