“ คำแนะนำต่อรอบ” คืออะไร


23

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

ตัวอย่างเช่นฉันอยู่ภายใต้การแสดงผลที่สี่คอร์ซีพียูสามารถรันสี่คำสั่งต่อรอบดังนั้นซีพียูสี่คอร์ที่ทำงานที่ 2Ghz จะทำงาน 8 พันล้านต่อวินาที เป็นกรณีนี้หรือไม่?

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


ไม่นั่นไม่ใช่กรณี ซีพียู x86 ที่ทันสมัยสามารถรักษาคำสั่งสามคำสั่งต่อหนึ่งคอร์ต่อรอบภายใต้สภาวะที่เหมาะสมในขณะที่คำสั่งบางอย่างอาจต้องการหลายสิบรอบ
David Schwartz

คำตอบ:


22

คำหลักที่คุณอาจจะมองขึ้นไปเป็นCISC , RISCและสถาปัตยกรรม superscalar

CISC

ในสถาปัตยกรรม CISC (x86, 68000, VAX) การเรียนการสอนหนึ่งคำสั่งนั้นมีประสิทธิภาพ แต่ต้องใช้เวลาหลายรอบในการประมวลผล ในสถาปัตยกรรมที่เก่ากว่าจำนวนรอบได้รับการแก้ไขในปัจจุบันจำนวนรอบต่อการเรียนการสอนมักจะขึ้นอยู่กับปัจจัยต่าง ๆ (แคช hit / miss, ทำนายสาขา ฯลฯ ) มีตารางสำหรับค้นหาสิ่งของนั้น บ่อยครั้งที่มีการอำนวยความสะดวกในการวัดจำนวนรอบของการเรียนการสอนบางอย่างภายใต้สถานการณ์ที่เกิดขึ้นจริง (ดูเคาน์เตอร์วัดประสิทธิภาพ )

หากคุณมีความสนใจในรายละเอียดของ Intel, คู่มืออ้างอิงการเพิ่มประสิทธิภาพ Intel 64 และ IA-32นั้นเป็นสิ่งที่ดีมาก

RISC

สถาปัตยกรรม RISC (ARM, PowerPC, SPARC) หมายถึงโดยทั่วไปคำสั่งที่ง่ายมากใช้เวลาเพียงไม่กี่รอบเท่านั้น

superscalar

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

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


9
สำหรับฉันแล้ว "แอสเซมบลีไลน์" เปรียบเทียบแสดงให้เห็นถึงการวางท่อแบบง่าย ๆ ไม่ใช่สถาปัตยกรรมแบบซูเปอร์คาร์ Superscalar เกี่ยวข้องกับการจำลองชิ้นส่วนของฮาร์ดแวร์ CPU (เช่นขั้นตอนของไปป์ไลน์ที่เป็นคอขวด) เพื่อปรับปรุงทรูพุต
sblair

2
ฉันกำลังเพิ่มความกะทัดรัด: RISC = ชุดคำสั่งลดลง; CISC = ชุดคำสั่งที่ซับซ้อน คำอธิบายที่ดีลุดวิกสำหรับการชี้อัตราส่วนการเข้าชม / การแคชและ (ในที่สุด) ชี้ให้เห็น TLB การอธิบายสถาปัตยกรรมไมโครโปรเซสเซอร์ไม่ใช่เรื่องง่ายโดยเฉพาะอย่างยิ่งการยัดมันลงในโพสต์เดียว (ขนาดกะทัดรัดพอสมควร)! :)
osij2is

1
จากสิ่งที่ฉันได้ยินซีพียูในสมัยนี้ใช้เวลาส่วนใหญ่ในการรองานเพื่อแสดงจากหน่วยความจำหลัก อย่างน้อยนั่นคือการตอบสนองที่ฉันได้รับเมื่อฉันถามว่าทำไมไม่มีคอร์ประมวลผลเพิ่มเติมในซีพียู
surfasb

32

วิธีที่ฉันชอบคิดว่ามันคือการเปรียบเทียบซักผ้า คำแนะนำของ CPU เปรียบเสมือนการซักผ้าจำนวนมาก คุณต้องใช้ทั้งเครื่องซักผ้าและเครื่องอบผ้าสำหรับการโหลดแต่ละครั้ง สมมติว่าแต่ละใช้เวลา 30 นาทีในการทำงาน นั่นคือวงจรนาฬิกา ซีพียูรุ่นเก่าจะใช้งานเครื่องซักผ้าจากนั้นเรียกใช้เครื่องอบแห้งใช้เวลา 60 นาที (2 รอบ) เพื่อสิ้นสุดการโหลดแต่ละครั้ง

ไปป์ไลน์:เมื่อคุณใช้ทั้งสองอย่างในเวลาเดียวกัน - คุณล้างภาระจากนั้นในขณะที่มันกำลังแห้งคุณล้างภาระต่อไป การโหลดครั้งแรกใช้เวลา 2 รอบเพื่อเสร็จสิ้น แต่การโหลดครั้งที่สองเสร็จสิ้นหลังจากผ่านไปอีก 1 รอบ ดังนั้นโหลดส่วนใหญ่ต้องการเพียง 1 รอบยกเว้นการโหลดครั้งแรก

Superscalar: นำซักรีดทั้งหมดไปที่เครื่องซักผ้า รับเครื่องซักผ้า 2 เครื่องและโหลดทั้งสองเครื่อง เมื่อเสร็จแล้วให้หา 2 เครื่องอบแห้งและใช้ทั้งคู่ ตอนนี้คุณสามารถล้างและตากแห้ง 2 ครั้งใน 60 นาที นั่นคือโหลด 2 ครั้งใน 2 รอบ การโหลดแต่ละครั้งยังคงใช้เวลา 2 รอบ แต่คุณสามารถทำได้มากกว่านี้ เวลาเฉลี่ยคือ 1 การโหลดต่อรอบ

Superscalar พร้อม Pipelining: ล้าง 2 โหลดแรกจากนั้นขณะที่สิ่งเหล่านี้กำลังแห้งให้โหลดเครื่องซักผ้าด้วย 2 โหลดถัดไป ทีนี้การโหลด 2 ครั้งแรกยังคงใช้เวลา 2 รอบจากนั้นอีก 2 รอบถัดไปจะเสร็จสิ้นหลังจากเพิ่มอีก 1 รอบ ดังนั้นส่วนใหญ่คุณจะทำการโหลด 2 ครั้งในแต่ละรอบ

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

นี่เป็นสิ่งที่ยอดเยี่ยมมากเราสามารถทำได้มากกว่าการซักแปดเท่าในเวลาที่เท่ากันโดยไม่ต้องสร้างเครื่องจักรเร็วขึ้น (เพิ่มความเร็วนาฬิกาสองเท่า: เครื่องซักผ้าที่ต้องใช้เวลาเพียง 15 นาทีเท่านั้น)

ตอนนี้เรามาพูดถึงสิ่งที่ผิดพลาด:

ท่อส่งฟอง: คุณมีคราบที่ไม่ได้ออกมาในการซักดังนั้นคุณตัดสินใจที่จะซักอีกครั้ง ตอนนี้เครื่องอบแห้งกำลังนั่งรอที่จะทำอะไรซักอย่าง

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

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

การคาดคะเนสาขา:คุณเริ่มซักเสื้อผ้าที่สะอาดในกรณีที่คุณเปื้อนพวกมันในภายหลังเพื่อทำความสะอาดแล้ว ... โอเคนี่คือที่การเปรียบเทียบแตกสลาย ...


การเปรียบเทียบที่ดี ฉันจะขโมยมัน
dmckee

6
และการทำไฮเปอร์เธรดก็เหมือนมีหลาย ๆ คนซักเสื้อผ้าด้วยเครื่องซักผ้าเดียวกัน
Ronald Pottol

1
การคาดคะเนสาขา: คุณเริ่มซักเสื้อผ้าซึ่งคุณคิดว่าคุณจะต้องใช้ในสัปดาห์หน้า
Akash

2
ไฮเปอร์เธรด: คุณเริ่มรับซักรีดของคนอื่นและโฆษณาจำนวนเครื่องซักผ้าที่คุณมี (1) ในไม่ช้าคุณจะพบว่าเครื่องซักผ้าของคุณมีพื้นที่มากกว่ากางเกงที่คุณซักอยู่ไม่ใช่แค่กางเกงอีกคู่ แต่มีขนาดเล็กกว่า ดังนั้นคุณควรใส่ถุงเท้าบางอันด้วย ตอนนี้คุณโฆษณาเครื่องซักผ้า 2 เครื่องและหวังว่าผู้คนจะซักผ้าที่มีความหลากหลายพอที่จะให้คุณ "เติมหลุม" ด้วยสิ่งของขนาดเล็ก เมื่อผู้ชายคนนี้ที่เคยมาพร้อมกับกางเกงยีนส์สกปรก 10 ตัวและถุงเท้า 1 คู่วางสิ่งของของเขามันก็ช้าเหมือนเดิม
Florenz Kley

@Akash คุณซักเสื้อผ้าที่ไม่มีคราบเลยใช่ไหม?
Kevin Panko

3

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

ขออภัยมันซับซ้อนเกินไปสำหรับคำตอบที่ตรง จอนสโต๊คไม่ได้งานที่ดีของการอธิบายกับบทความนี้


2

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

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


1

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


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