โปรเซสเซอร์สามารถประมวลผล IPS ได้มากกว่าความถี่ได้อย่างไร [ซ้ำ]


14

นี่เป็นสิ่งที่ฉันไม่สามารถคาดศีรษะได้ โปรเซสเซอร์สมัยใหม่ทุกตัวสามารถดำเนินการคำสั่งเพิ่มเติมได้ต่อวินาทีกว่าความถี่

ฉันเข้าใจได้ว่าเหตุใดโปรเซสเซอร์ระดับล่างจึงสามารถใช้งาน IPS ได้น้อยกว่าความถี่ ตัวอย่างเช่นATmega328ดำเนินการประมาณ 16 MIPS ที่ 16 MHZ (หรืออย่างน้อยนั่นคือสิ่งที่ฉันได้รับการบอกเล่า) และZ80ดำเนินการ 0.5 MIPS ที่ 4 MHz แต่ Pentium 4 Extreme สามารถทำงานได้มากกว่า 9 GIPS ที่ 3.2 GHz เท่านั้น นั่นคือประมาณสามคำแนะนำต่อรอบนาฬิกา!

ทำสิ่งนี้ได้อย่างไรและทำไมจึงไม่ใช้กับโปรเซสเซอร์ขนาดเล็กเช่นไมโครคอนโทรลเลอร์AVR

ผมพบว่าข้อมูลทั้งหมดของฉันยกเว้น ATmega328 จากที่นี่


3
ลองดูที่ Wikipedia เพื่อหาคำที่ฉวัดเฉวียนเช่นการวางท่อสถาปัตยกรรมซูเปอร์สเกลาร์การดำเนินการตามคำสั่งมัลติเธรดแบบหลายแกนหลายแกนการขยายเวกเตอร์ (SSE, ... , AVX), การแคชเป็นต้น ทั้งหมดในทุกค่า CPI สามารถต่ำกว่า 1.0
Paebbels

7
คุณหมายถึง 9 GIPS สำหรับ Pentium 4 ไม่ใช่ MIPS ใช่ไหม
Calimo

5
การโปรโมตตนเอง: CPU จะส่งคำสั่งมากกว่าหนึ่งคำสั่งต่อรอบได้อย่างไร ถูกถามในการแลกเปลี่ยนกองวิศวกรรมไฟฟ้า (คำตอบของฉันได้รับการยอมรับและอาจ upvoted สูงเกินไป)
Paul A. Clayton

ฉันสงสัยอยู่เสมอว่าฉันจะไม่โหวตอะไรถ้ามันสูงกว่าที่ฉันคิดว่ามันควรจะเป็นหรือไม่? หรืออัปยศเสมอถ้าฉันคิดว่าความพยายามและคุณภาพของโพสต์ควรได้รับรางวัลหรือไม่
Peter Cordes

@PeterCordes มีปรัชญาการลงคะแนนที่แตกต่างกัน การอ้างสิทธิ์บางอย่าง "มีประโยชน์" เป็นเพียงเกณฑ์เดียวเท่านั้นบางข้อพิจารณาว่าเป็นประโยชน์ (สำหรับคำตอบ) ฉันมักจะพิจารณาการนับคะแนนแบบสัมบูรณ์ ("ดี", "ดี", "ดี" โพสต์ป้ายบอกเป็นนัยว่าควรได้รับการพิจารณา) รวมถึงการนับคะแนนเสียงแบบสัมพัทธ์ (ซึ่งช่วยตอบการจัดอันดับ) Meta.SE น่าแปลกใจที่ดูเหมือนจะไม่ได้มีมากในหัวข้อนี้และ " ฉันควรลงคะแนนได้อย่างไร? " ไม่ได้มีคำตอบ!
Paul A. Clayton

คำตอบ:


23

นี่คือสาเหตุที่การรวมกันของคุณสมบัติของโปรเซสเซอร์ที่ทันสมัย

สิ่งแรกที่มีส่วนร่วมในการ IPS สูงคือความจริงที่ว่าโปรเซสเซอร์ที่ทันสมัยมีหน่วยดำเนินการหลายอย่างที่สามารถทำงานได้อย่างอิสระ ในภาพด้านล่าง (ยืมมาจากWikipedia: Intel Core Microarchitecture ) คุณสามารถดูได้ที่ด้านล่างว่ามีหน่วยปฏิบัติการแปดหน่วย (แสดงเป็นสีเหลือง) ที่สามารถดำเนินการคำสั่งพร้อมกันได้ทั้งหมด ไม่ใช่ทุกหน่วยที่สามารถรักษาความปลอดภัยของคำสั่งประเภทเดียวกัน แต่อย่างน้อย 5 หน่วยสามารถทำการดำเนินการ ALU และมีหน่วยที่สามารถใช้งาน SSE ได้สามหน่วย

ป้อนคำอธิบายรูปภาพที่นี่

รวมกับท่อส่งคำสั่งยาวซึ่งสามารถรวบรวมคำสั่งได้อย่างมีประสิทธิภาพเพื่อให้หน่วยคำสั่งเหล่านั้นดำเนินการตามคำสั่ง ( ไม่จำเป็น) หากหน่วยประมวลผลที่ทันสมัยสามารถมีคำสั่งจำนวนมากได้ทันทีในเวลาที่กำหนด

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

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

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

พวกเขาสามารถสร้างตัวประมวลผลขนาดเล็กที่ซับซ้อนเช่นเดียวกับตัวประมวลผลขนาดใหญ่และบรรลุประสิทธิภาพที่คล้ายกัน แต่แล้วความต้องการพลังงานและการระบายความร้อนจะเพิ่มขึ้นชี้แจง


ฉันไม่เคยรู้เลยว่ามีหน่วยปฏิบัติการพิเศษและมากกว่าหนึ่งหน่วย แต่ก็ยังดีที่มี Arduino superscalar ฉันจะไม่คำนึงถึงความต้องการด้านพลังงานและการระบายความร้อนหากมันให้ปริมาณงานที่มากกว่า ขอบคุณสำหรับคำตอบ.
Jaca

1
หากคุณต้องการโปรเซสเซอร์ superscalar ให้ใช้หนึ่งตัว แต่ Arduinos ครอบครองช่องสำหรับผู้ที่คำนึงถึงความต้องการด้านพลังงานและการระบายความร้อน (และต้นทุนและความซับซ้อน) ของโปรเซสเซอร์ superscalar
David Schwartz

4

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

ดีกว่าการพยายามที่จะอธิบายมันเองนี่เป็นจุดเริ่มต้นที่ดี


3

เพื่อให้ได้พื้นฐานมากกว่าคำตอบของ Mokubai:

ซีพียู Superscalar วิเคราะห์สตรีมคำสั่งสำหรับการอ้างอิงข้อมูล (และอื่น ๆ ) ระหว่างคำแนะนำ คำแนะนำที่ไม่ขึ้นอยู่กับแต่ละอื่น ๆ สามารถทำงานแบบขนาน

ซีพียูเดสก์ทอป x86 ทั่วไปเรียกคำสั่ง 16 หรือ 32B ทุกรอบสัญญาณนาฬิกา Intel ออกแบบเนื่องจาก Core2 สามารถออกคำสั่งได้สูงสุด 4 คำสั่งต่อรอบ (หรือ 5 หากมีการเปรียบเทียบและสาขาที่สามารถมาโครฟิวส์)

ดูคำตอบที่ดีของ Mobukai สำหรับลิงก์และรายละเอียดเกี่ยวกับวิธีการที่ CPU ใช้งานจริงเกี่ยวกับงานของการแยกความเท่าเทียมในระดับคำสั่งเท่าที่พวกเขาทำจากรหัสที่พวกเขาทำงาน

ดูhttp://www.realworldtech.com/sandy-bridge/และบทความที่คล้ายกันสำหรับสถาปัตยกรรมซีพียูอื่น ๆ สำหรับคำอธิบายในเชิงลึกของสิ่งที่อยู่ภายใต้ประทุน


-2

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

แต่แหล่งข้อมูลอื่นอาจเป็นได้ว่า "คำสั่ง" แต่ละอันมีปริมาณข้อมูลจำนวนหนึ่งที่ถือว่าเป็นอินพุตคำสั่งของโปรเซสเซอร์ หากการนับแหล่งที่มาของเขาเพียงแค่นับสิ่งที่หน่วยประมวลผลเป็นคำแนะนำ แต่ถ้าแหล่งที่มาของเขานับสิ่งที่มนุษย์จะเรียกว่า "คำสั่ง" แล้ว: เพิ่มว่าไม่ใช่คำสั่งทุกคำสั่งตราบเท่าที่คำสั่งอื่น ๆ (หนึ่งอาจเป็น 12 ไบต์, อื่นอาจเป็น 56 ไบต์ ฯลฯ ) ดังนั้นถ้ามันโหลด 64 ไบต์ของวัสดุแต่ละรอบเป็น "คำสั่ง" (หรือคำแนะนำแบบเต็มมากที่สุดเท่าที่จะทำได้ก่อนที่จะกดปุ่ม 64 ไบต์) และหนึ่งมีหกคำแนะนำใน 64 ไบต์นั้นจากนั้นหกคำแนะนำ (เช่นคุณและฉันอาจพิจารณาพวกเขา ) จะเสร็จสิ้นในรอบนั้น

เนื่องจากคำสั่งพื้นฐานมาก ๆ (คำจำกัดความ "สมเหตุสมผล") เป็นของเหลือจากวันแรกที่มีความยาวการสอน 8 ไบต์และคำแนะนำพื้นฐานมากคือโดยคำนิยามบางทีอาจใช้อย่างไม่เป็นสัดส่วนเพียงแค่นี้จะไปอีกนาน กว่าความถี่จะอนุญาต


มันใกล้เคียงกับวิธีการทำงานของซีพียูเล็กน้อย แต่การดึงข้อมูลเครื่องหลาย ๆ ตัวต่อรอบเป็นเพียงส่วนหนึ่งของการทำงานของซีพียูระดับซุปเปอร์คาร์ (และความยาวของอินสแตนโดยเฉลี่ยมีค่ามากกว่า 4 ไบต์สำหรับ x86) ไพพ์ไลน์แบบลึกหมายความว่าคำสั่งที่ถูกดึงมาในขณะนี้อาจไม่เสร็จสิ้นการดำเนินการเป็นระยะเวลา 15 รอบ (หรือนานกว่านั้นมากถ้าเก็บแคชไว้นาน ดำเนินการต่อไป) คำอธิบายของคุณไม่ได้อธิบายการออกแบบที่วางท่อเลย นอกจากนี้ยังไม่ชัดเจนในสิ่งที่คุณคิดว่าคือความแตกต่างระหว่าง 8bit 8086 add al, blและ add eax, ebx80386
Peter Cordes

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