ทำไมคุณไม่สามารถมีทั้งคำสั่งสูงต่อรอบและความเร็วสัญญาณนาฬิกาสูง


37

Megahertz Myth กลายเป็นกลยุทธ์การส่งเสริมการขายเนื่องจากความแตกต่างระหว่างโปรเซสเซอร์ INTEL 8086 ของพีซีและโปรเซสเซอร์ Rockwell 6502 ของ Apple 8086 วิ่งที่ 4.77MHz ในขณะที่ 6502 วิ่งที่ 1MHz อย่างไรก็ตามคำแนะนำในการ 6502 ต้องใช้รอบน้อยลง ในความเป็นจริงมีจำนวนน้อยกว่าที่วิ่งเร็วกว่า 8086 ทำไมบางคำสั่งจึงต้องใช้รอบน้อยลง และทำไมคำแนะนำของ 6502 จึงไม่ต้องการรอบการทำงานที่น้อยลงจึงใช้งานร่วมกับโปรเซสเซอร์ความเร็วสูงของ 8086

บทความของ Wikipedia สำหรับคำแนะนำต่อรอบ (IPC) กล่าว

ปัจจัยที่ควบคุม IPC
ระดับคำสั่งที่กำหนดต่อวินาทีสามารถทำได้ด้วย IPC สูงและความเร็วสัญญาณนาฬิกาต่ำ ... หรือจาก IPC ต่ำและความเร็วสัญญาณนาฬิกาสูง

ทำไมคุณไม่สามารถมีทั้งคำสั่งสูงต่อรอบและความเร็วสัญญาณนาฬิกาสูง

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

หรือนี่อาจจะเกี่ยวกับการทำงานของไปป์ไลน์? ฉันไม่แน่ใจว่าทำไมคำแนะนำในไปป์ไลน์แบบสั้นแตกต่างจากคำแนะนำในไปป์ไลน์ที่ยาว

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

อ้างอิง:

คำแนะนำต่อรอบเทียบกับจำนวนรอบที่เพิ่มขึ้น

http://en.wikipedia.org/wiki/Instructions_per_cycle

http://en.wikipedia.org/wiki/Clock_cycle


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

@Synetech, Intel kinda sorta ทำเช่นนั้นโดยการนำเสนอชุดคำสั่ง CISC เป็นโปรแกรมเมอร์แล้วแปลงเป็นคำสั่ง RISCier บนชิป
soandos

เมื่อฉันพูดว่าทั้งสองได้รวมกันฉันหมายถึงผู้ผลิตชิปที่แตกต่างอย่างสิ้นเชิง ฉันไม่มีรายชื่ออยู่ในมือ แต่มีคนอื่น (ไม่ใช่ Intel / AMD) ที่ทำสิ่งต่าง ๆ เช่นนั้น (คนส่วนใหญ่ลืมว่ามีผู้ผลิตชิปมากมายเพราะ Intel และ AMD ครองตลาดเดสก์ท็อปอยู่แล้ว)
Synetech

คำตอบ:


21

TL; DR

ท่อที่สั้นกว่าหมายถึงความเร็วสัญญาณนาฬิกาที่เร็วขึ้น แต่อาจลดปริมาณงานได้ ดูคำตอบ # 2 และ 3 ที่ด้านล่าง (พวกเขาสั้นฉันสัญญา)

รุ่นที่ยาวกว่า:

มีบางสิ่งที่ต้องพิจารณาที่นี่:

  1. คำแนะนำบางอย่างใช้เวลาเดียวกัน
  2. ไม่ใช่คำแนะนำทั้งหมดขึ้นอยู่กับสิ่งที่ทำทันที (หรือแม้กระทั่งสิบหรือยี่สิบ) คำแนะนำกลับ

ไปป์ไลน์ที่ง่ายมาก (สิ่งที่เกิดขึ้นในชิป Intel สมัยใหม่เกินกว่าความซับซ้อน) มีหลายขั้นตอน:

Fetch -> Decode -> Access Memory -> Execute -> Writeback -> การอัพเดตตัวนับโปรแกรม

ในแต่ละครั้ง -> มีค่าใช้จ่ายเวลาที่เกิดขึ้น นอกจากนี้ทุกติ๊ก (วงจรนาฬิกา) ทุกอย่างจะย้ายจากสเตจหนึ่งไปยังสเตจต่อไปดังนั้นสเตจที่ช้าที่สุดของคุณจะกลายเป็นความเร็วสำหรับสเตจทั้งหมด (จริงๆจ่ายให้พวกมันมีความยาวเท่ากันมากที่สุด)

สมมติว่าคุณมี 5 คำแนะนำและคุณต้องการที่จะดำเนินการ (รูปที่นำมาจากวิกิพีเดียที่นี่ไม่มีการอัปเดตพีซี) มันจะมีลักษณะเช่นนี้:

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

แม้ว่าแต่ละคำสั่งจะใช้เวลา 5 รอบนาฬิกาในการทำให้เสร็จสมบูรณ์ แต่คำสั่งที่เสร็จสมบูรณ์จะออกมาจากท่อทุกรอบ หากเวลาที่ใช้สำหรับแต่ละสเตจคือ 40 ns และ 15 ns สำหรับบิตกลาง (โดยใช้ไพพ์ไลน์สเตจหกชั้นด้านบนของฉัน) มันจะใช้เวลา 40 * 6 + 5 * 15 = 315 ns เพื่อรับคำแนะนำครั้งแรก

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

ความแตกต่างที่แท้จริงคือในตัวอย่างที่มีการวางท่อฉันได้รับคำแนะนำใหม่เสร็จแล้ว (หลังจากอันแรก) ทุกๆ 60 ns ในที่ไม่ใช่ pipelined มันใช้เวลา 240 ทุกครั้ง นี่แสดงให้เห็นว่าท่อส่งก๊าซมีความสามารถในการปรับปรุงปริมาณงานได้ดี

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

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

คำตอบ # 2:

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

คำตอบ # 3:

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


3
ท่อสั้นหมายถึงความเร็วของนาฬิกาช้าลง ! Pentium 4 มีนาฬิกาสูงเนื่องจากท่อยาวนี่คือ WP: "NetBurst แตกต่างจาก P6 (Pentium III, II, ฯลฯ ) โดยมีขั้นตอนการสอนที่ลึกมากเพื่อให้ได้ความเร็วสัญญาณนาฬิกาที่สูงมาก" ประเด็นก็คือคุณทำเพียงเล็กน้อยต่อด่านเพื่อให้ได้ความเร็วสูง สิ่งนี้ไม่ได้พิสูจน์ว่าสามารถใช้การได้และ Intel ก็สูญเสียโมเมนตัมอย่างมากต่อ AMD เนื่องจากสิ่งนี้ พวกเขากลับไปที่สถาปัตยกรรม Pentium 3 และมาพร้อมกับ "แกนหลัก"
stolsvik

@stolsvik คุณช่วยอธิบายสิ่งนี้ได้ไหม มันทำให้รู้สึกไม่ให้ฉัน (มีขั้นตอนน้อยคั่นระหว่างหมายถึงทุกคนเท่ากันรอบนาฬิกาจะสั้นลงทำให้ความเร็วสัญญาณนาฬิกาสูงกว่า)
soandos

4
หนึ่งเวทีท่อจะทำต่อวงจรนาฬิกา ; ไปป์ไลน์ทั้งหมดก้าวหน้าหนึ่งก้าวต่อหนึ่งนาฬิกา - ดึงคำแนะนำใหม่ที่ด้านล่าง "เปล่ง" คำแนะนำเสร็จที่ด้านบน ดังนั้นความคิดกับ Pentium 4 จึงต้องทำตามขั้นตอนเล็ก ๆ ที่รวดเร็วในการแสดงให้นาฬิกาสูง แต่ต้องใช้ท่อยาว เบาะแสที่มีไปป์ไลน์ (โปรเซสเซอร์ทั้งหมดใช้ตัวประมวลผลหนึ่งตัว) คือคุณมีคำแนะนำหลายอย่างที่กำลังดำเนินการอยู่ตลอดเวลา ไปป์ไลน์ที่ยาวหมายความว่ามีคำแนะนำมากมายที่กำลังดำเนินการ - และหากการคาดคะเนสาขาล้มเหลวคุณจะต้องล้างข้อมูลไปป์ทั้งหมด
stolsvik

สำหรับคำตอบ # 2 ของคุณ CPU จะเข้าถึงข้อมูลผ่านแคชเท่านั้น (การเข้าถึงหน่วยความจำมักจะโปร่งใสจากมุมมองของคำสั่ง) การชะลอความเร็วสัญญาณนาฬิกาจะไม่ส่งผลต่อระยะเวลาที่ข้อมูลจะมาจาก RAM (หากไม่ได้อยู่ในแคช) นอกจากนี้ความกว้างของบัสมีผลกับความเร็วของการดำเนินการ SIMD ที่เกี่ยวข้องกับขนาดตัวถูกดำเนินการของคุณ (เช่นฉันสามารถโหลดตัวถูกดำเนินการ 8 8 บิตบนบัส 64 บิตได้ครั้งละครั้ง แต่ฉันยังต้องโหลดค่า 64 64 บิตด้วยตนเอง ถ้าฉันมีตัวถูกดำเนินการ 64 บิต)
พัฒนา

2
สำหรับคำตอบ # 1 เมื่อคุณพูดว่า "ถ้ามีคำสั่งที่ไม่ได้ใช้สเตจ mem นั้นรอบแล้วฉันสามารถทำเพิ่มนอกจากนี้" นี่เป็นเท็จ การดำเนินการตามคำสั่งไม่อยู่ในระดับการเรียนการสอนไม่ใช่ระดับไมโครดำเนินการ หากมีการเรียนการสอนไม่จำเป็นต้องใช้สองรันในท่อนี้จะทำให้เกิดฟองสบู่ในท่อ สุดท้ายสถาปัตยกรรม x86 มี ALU แยกต่างหากเพื่อคำนวณที่อยู่หน่วยความจำแบบ on-the-fly ระหว่างการอ่าน / เขียนหน่วยความจำ (อนุญาตสำหรับการ[EBX+ECX*4+100]กำหนดที่อยู่สไตล์)
พัฒนา

8

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

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

ฉันสามารถออกแบบตัวประมวลผลแบบง่ายมากที่ประมวลผลหนึ่งขั้นตอนของคำสั่ง RISC ทุกรอบและถ้านี่เป็นพื้นฐานของ CPU ของฉันฉันอาจจะบรรลุรอบที่สูงมากต่อวินาทีเนื่องจากความซับซ้อนที่ลดลงของสิ่งที่ถือว่าเป็น วงจร"

รายละเอียดเกี่ยวกับฟิสิกส์และวิศวกรรมไฟฟ้าจำนวนมากที่ฉันไม่เข้าใจจริง ๆ แต่จำไว้ว่าอัตรานาฬิกาไม่ได้เกิดขึ้นเพียงแค่เพิ่มแรงดันไฟฟ้าอินพุตให้กับโปรเซสเซอร์และหวังสิ่งที่ดีที่สุด อย่างน้อยที่สุดโปรไฟล์การระบายความร้อนก็เป็นอีกหนึ่งความกังวลที่จำเป็น


สิ่งนี้ไม่ได้ตอบคำถามของเขา (ซึ่งไม่เกี่ยวข้องกับสาเหตุที่ทำให้สิ่งต่าง ๆ ไม่สามารถเร่งความเร็วได้) เขาถามว่ามีรอบการทำงานเพิ่มขึ้นอีกเท่าไร = ทำงานได้มากขึ้นตลอดเวลา
ดังนั้น

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

5

ต่อไปนี้เป็นคำอธิบายที่ง่ายมาก (อาจผิดเพี้ยนไปอย่างมาก) คำอธิบาย: สมมติว่าคุณมีงานที่ต้องทำพูดเพิ่มตัวเลข 32 บิตสองตัว คุณสามารถทำได้สองวิธี คุณสามารถแยกมันเป็นก้าวเล็ก ๆ จำนวนมากหรือคุณสามารถแบ่งมันเป็นก้าวเล็ก ๆ จำนวนมากก็ได้

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

หรือคุณอาจพูดว่า "ดึงหมายเลขแรกเข้าสู่การลงทะเบียนจากนั้นดึงหมายเลขที่สองจากนั้นเพิ่มบิตที่มีนัยสำคัญน้อยที่สุดจากนั้นเพิ่มบิตที่มีนัยสำคัญน้อยที่สุดเป็นอันดับสองด้วยการยกจากก่อนหน้าจากนั้นเพิ่มที่สามอย่างน้อย ... จากนั้นเพิ่มบิตที่สำคัญที่สุดหากมีการพกพาให้ตั้งค่าสถานะโอเวอร์โฟลว์จากนั้นเขียนผลลัพธ์ลงในหน่วยความจำ " ตอนนี้คุณมีขั้นตอนจำนวนมาก แต่ในแต่ละขั้นตอนสามารถทำได้อย่างรวดเร็วอย่างไร้เหตุผล ดังนั้นคุณมีคำแนะนำต่ำต่อรอบ (1/36 หรือในกรณีนี้) แต่ความเร็วสัญญาณนาฬิกาของคุณอาจสูงมากเนื่องจากแต่ละรอบมีเพียงเล็กน้อยที่น่าสนใจ

ในการมีทั้งคำสั่งสูงต่อรอบและความเร็วสัญญาณนาฬิกาสูงคุณจะต้องแบ่งคำสั่งที่ซับซ้อนออกเป็นขั้นตอนง่าย ๆ จำนวนน้อยมาก แต่นั่นไม่สามารถทำได้เพราะคำสั่งนั้นซับซ้อน

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


2

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

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


การวางท่อช่วยให้ความเร็วสัญญาณนาฬิกาสูงขึ้นในบางกรณีเนื่องจากคำสั่งแต่ละคำสั่งจะแบ่งออกเป็น การดำเนินงานขนาดเล็กเหล่านี้เป็นการดำเนินการที่ง่ายมากโดยใช้วงจรขนาดเล็กที่เชื่อมต่อกันในห่วงโซ่

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

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

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


1

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

ความเร็วสัญญาณนาฬิกานั้นแท้จริงแล้วเป็นการตัดสินใจตามอำเภอใจ (มากหรือน้อย) โดยผู้ออกแบบ CPU บางครั้งก็มีเหตุผลที่ดี (ประสิทธิภาพ) บางครั้งสำหรับคนจน (โฆษณา)

สมมติว่าซีพียูที่กำหนดมีส่วนผสมของคำสั่งที่ใช้ระหว่าง 1 ถึง 100 นาโนวินาที (ns) เพื่อเสร็จสิ้น คุณสามารถตั้งค่าอัตรานาฬิกาที่ 1 "เห็บ" คือ 100 ns (10 MHz) ซึ่งหมายความว่าทุกคำสั่งจะเสร็จสิ้นใน 1 ขีด อย่างไรก็ตามหากเวลาการดำเนินการคำสั่งถูกกระจายอย่างสม่ำเสมอนั่นหมายความว่าหน่วยการคำนวณของคุณจะไม่ได้ใช้งาน 50% ของเวลา (ความเร็วในการประมวลผลเฉลี่ยจะอยู่ที่ 50ns และปล่อยให้อีก 50ns ของเห็บไม่ได้ใช้งาน) หากคุณตั้งค่าขีด จำกัด ของคุณเป็น 10ns คำแนะนำจะอยู่ในช่วงระหว่าง 1 ถึง 10 ขีด แต่หน่วยจะไม่ว่างมากกว่า 9ns ก่อนที่คำสั่งถัดไปจะเริ่มขึ้นและค่าเฉลี่ยของการใช้งานจะเท่ากับ 5ns

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

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

TL; DR

CPU สามารถทำงาน X ให้สำเร็จภายในไม่กี่วินาที หากคุณใช้ความเร็วสัญญาณนาฬิกา H และ I IPC เรามี I = X / H การเปลี่ยน H ไม่ได้เปลี่ยน X แต่มีผลในทางกลับกันฉัน


1
ความเร็วสัญญาณนาฬิกาอยู่ไกลจากการตัดสินใจโดยพลการ จะต้องเลือกอย่างระมัดระวังเป็นฟังก์ชั่นของแรงดันไฟฟ้าของ CPU รวมถึงความยาวการติดตาม IC (เพื่อหลีกเลี่ยงความล่าช้าในการแพร่กระจายมากเกินไป)
พัฒนา

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

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

0

เราไม่สามารถมีทั้งคำสั่งสูงต่อรอบและความเร็วสัญญาณนาฬิกาสูงเนื่องจากข้อกำหนดนั้นขัดแย้งกัน

หนึ่งสามารถแสดงให้เห็นว่าในการประมาณแรก IPC ขึ้นอยู่กับความซับซ้อน (A) ของการออกแบบเป็น

IPC = a sqrt (A)

ในขณะที่ความถี่สูงสุด (F) ทำได้โดยการออกแบบมาตราส่วนเป็น [1]

F = 1 / {b + c sqrt (A)}

ด้วยพารามิเตอร์ a, b และ c

ดังนั้นการเพิ่มความซับซ้อนของ muarch จึงเพิ่ม IPC ด้วยค่าใช้จ่ายในการลดความถี่ในการทำงานในขณะที่การลดความซับซ้อนนั้นจะเพิ่มความถี่ที่ค่าใช้จ่ายของ IPC สิ่งนี้สอดคล้องกับทั้งสองกรณีสุดขั้วที่กล่าวถึงในบทความวิกิพีเดีย แต่วิกิพีเดียไม่สามารถพูดถึงชื่อ: อัจฉริยะและความเร็ว - อสูร

  • การออกแบบอัจฉริยะ: IPC สูงและความถี่ต่ำ
  • การออกแบบความเร็วปีศาจ: ความถี่สูงและ IPC ต่ำ

[1] ผู้เขียนบางคนอ้างว่าการแสดงออกของความถี่คือ "1 / {b + c A}" แทน แต่ในทั้งสองกรณีการเพิ่มความซับซ้อนช่วยลดความถี่ที่ทำได้สูงสุด

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