ทำไมโปรเซสเซอร์รุ่นใหม่ถึงเร็วขึ้นด้วยความเร็วสัญญาณนาฬิกาเท่ากัน?


38

ยกตัวอย่างเช่นทำไม Core i5 แบบดูอัลคอร์ 2.66 GHz จะเร็วกว่า 2.66 GHz Core 2 Duo ซึ่งเป็นอัลคอร์ด้วย?

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

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



ว้าวทั้งความก้าวหน้าและของดาวิดเป็นคำตอบที่ยอดเยี่ยม ... ฉันไม่รู้ว่าจะเลือกแบบ
ไหน

ยังมีชุดคำสั่งที่ดีกว่าและมีการลงทะเบียนมากขึ้น เช่น MMX (เก่ามากตอนนี้) และ x86_64 (เมื่อเอเอ็มดีคิดค้น x86_64 พวกเขาเพิ่มการปรับปรุงความเข้ากันได้บางอย่างเมื่ออยู่ในโหมด 64 บิตพวกเขารู้ว่าการเปรียบเทียบจะไม่เกิดขึ้น)
ctrl-alt-delor

สำหรับการปรับปรุงสถาปัตยกรรม x86 อย่างแท้จริงจำเป็นต้องมีชุดคำสั่งใหม่ แต่ถ้าทำไปแล้วจะไม่เป็น x86 อีกต่อไป มันจะเป็น PowerPC, mips, Alpha, ... หรือ ARM
ctrl-alt-delor

คำตอบ:


30

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

  1. แคชที่มีขนาดใหญ่หมายถึงการเสียเวลาน้อยกว่าการรอความทรงจำ

  2. หน่วยดำเนินการเพิ่มเติมหมายถึงการรอเวลาน้อยลงในการเริ่มปฏิบัติการคำสั่ง

  3. การคาดคะเนสาขาที่ดีขึ้นหมายถึงใช้เวลาน้อยลงโดยเฉพาะการดำเนินการตามคำสั่งที่ไม่จำเป็นต้องดำเนินการจริง

  4. การปรับปรุงหน่วยการดำเนินการหมายถึงใช้เวลาน้อยลงในการรอคำแนะนำให้เสร็จสมบูรณ์

  5. ท่อที่สั้นกว่าหมายความว่าท่อจะเต็มเร็วขึ้น

และอื่น ๆ


ผมเชื่อว่าสถาปัตยกรรมหลักมีท่อ 14-15 เวที ( โทษ ) และสะพาน Nehalem / แซนดี้มีประมาณ 14-17 ท่อเวที ( โทษ )
Breakthrough

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

นั่นคือสิ่งที่ผมหมายถึงผมคิดว่าลึกท่อของตัวเองยังคงเหมือนเดิมหรือเพิ่มขึ้น นอกจากนี้ในคู่มือการใช้งาน Intel 64 และ IA-32 SW Devการกล่าวถึงครั้งสุดท้ายของการเปลี่ยนท่อส่งน้ำมันเป็นฉบับ 1, Ch. 2.2.3 / 2.2.4 (สถาปัตยกรรมแบบไมโครโปรเซสเซอร์ Intel Core / Atom)
พัฒนา

2
ความพยายามที่จะเพิ่มความเร็วสัญญาณนาฬิกาส่งผลให้ท่อยาวขึ้น นั่นไร้สาระ (มากถึง 31 ด่าน!) ในตอนท้ายของยุค NetBurst ทุกวันนี้มันเป็นการตัดสินใจทางวิศวกรรมที่ละเอียดอ่อนด้วยข้อดีและข้อเสียทั้งสองวิธี
David Schwartz

ยังมีการปรับปรุงการทำนายสาขาการเรียนการสอนการจัดเรียงใหม่ / เพิ่มประสิทธิภาพ / MUX ปรับปรุงหน่วย miniaturization (ลดความร้อน) และตายออกแบบ (ปรับปรุงหนึ่งตายเส้นทาง / วงจร ฯลฯ ) ...
ฌอนวิลสัน

40

การออกแบบโปรเซสเซอร์เพื่อมอบประสิทธิภาพสูงนั้นเป็นมากกว่าแค่การเพิ่มอัตรานาฬิกา มีวิธีอื่น ๆ อีกมากมายในการเพิ่มประสิทธิภาพเปิดใช้งานผ่านกฎหมายของมัวร์และเครื่องมือในการออกแบบโปรเซสเซอร์ที่ทันสมัย

อัตรานาฬิกาไม่สามารถเพิ่มได้เรื่อย ๆ

  • จากภาพรวมในครั้งแรกดูเหมือนว่าหน่วยประมวลผลจะประมวลคำสั่งเพียงลำพังโดยที่ประสิทธิภาพเพิ่มขึ้นผ่านอัตรานาฬิกาที่สูงขึ้น อย่างไรก็ตามการเพิ่มอัตรานาฬิกาอย่างเดียวไม่เพียงพอ การใช้พลังงานและความร้อนเพิ่มขึ้นตามอัตรานาฬิกาที่สูงขึ้น

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

กราฟแสดงความเร็วสัญญาณนาฬิกาในพีซีผู้ที่ชื่นชอบการเล่นเกมเป็นเวลาหลายปี
กราฟแสดงความเร็วสัญญาณนาฬิกาในพีซีผู้คลั่งไคล้การใช้งานในช่วงหลายปีที่ผ่านมา แหล่งที่มาของภาพ

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

สตรีมคำสั่งต่อเนื่องที่ดูเหมือนจะสามารถขนานกันได้

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

การวางท่อแบ่งคำแนะนำออกเป็นชิ้นเล็ก ๆ ซึ่งสามารถดำเนินการแบบขนาน

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

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

ไดอะแกรมของขั้นตอนการสอนห้าขั้นตอน
แหล่งที่มาของภาพ

อย่างไรก็ตามการวางท่อสามารถแนะนำอันตรายที่ต้องแก้ไขเพื่อให้แน่ใจว่าการทำงานของโปรแกรมถูกต้อง

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

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

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

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

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

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

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

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

แคชใช้เพื่อเพิ่มความเร็วในการเข้าถึงหน่วยความจำ

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

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

  • แคชยังได้รับการจัดระเบียบในหลายระดับขนาดแตกต่างกันเพื่อเพิ่มประสิทธิภาพการทำงานเนื่องจากแคชที่ใหญ่กว่ามักจะช้ากว่าแคชที่เล็กกว่า ตัวอย่างเช่นโปรเซสเซอร์อาจมีแคชระดับ 1 (L1) ซึ่งมีขนาดเพียง 32 KB ในขณะที่แคชระดับ 3 (L3) อาจมีขนาดใหญ่หลายเมกะไบต์ ขนาดของแคชรวมถึงความสัมพันธ์ของแคชซึ่งมีผลต่อวิธีการที่ตัวประมวลผลจัดการการแทนที่ข้อมูลในแคชแบบเต็มส่งผลกระทบอย่างมากต่อประสิทธิภาพที่ได้รับจากแคช

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

  • ไม่ใช่ทุกคำสั่งในลำธารคำสั่งขึ้นอยู่กับแต่ละอื่น ๆ ตัวอย่างเช่นแม้ว่าa + b = cจะต้องดำเนินการก่อนc + d = e, a + b = cและd + e = fมีความเป็นอิสระและสามารถดำเนินการได้ในเวลาเดียวกัน

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

ไดอะแกรมของการดำเนินการที่ไม่เป็นไปตามคำสั่ง
แหล่งที่มาของภาพ

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

สถาปัตยกรรม Superscalar อนุญาตให้มีคำสั่งหลายคำสั่งภายในสตรีมคำสั่งเพื่อดำเนินการในเวลาเดียวกัน

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

  • สถาปัตยกรรม Superscalarใช้ประโยชน์จากความเท่าเทียมในระดับคำสั่งนี้โดยอนุญาตให้ส่งคำสั่งไปยังหน่วยการทำงานหลายหน่วยพร้อมกัน โปรเซสเซอร์อาจมีหน่วยการทำงานหลายประเภทที่เฉพาะเจาะจง (เช่น ALU จำนวนเต็ม) และ / หรือประเภทหน่วยการทำงานที่แตกต่างกัน (เช่นทศนิยมและหน่วยจำนวนเต็ม) ซึ่งคำสั่งอาจถูกส่งพร้อมกัน

  • ในตัวประมวลผล superscalar คำสั่งถูกกำหนดเวลาไว้ในการออกแบบที่ไม่เป็นไปตามคำสั่ง แต่ขณะนี้มีพอร์ตที่มีปัญหาหลายพอร์ตทำให้สามารถออกและดำเนินการคำสั่งต่าง ๆ ได้ในเวลาเดียวกัน วงจรถอดรหัสคำสั่งแบบขยายช่วยให้โปรเซสเซอร์สามารถอ่านคำสั่งได้หลายคำสั่งในแต่ละรอบนาฬิกาและกำหนดความสัมพันธ์ระหว่างกัน โปรเซสเซอร์ประสิทธิภาพสูงที่ทันสมัยสามารถกำหนดเวลาได้สูงสุดแปดคำสั่งต่อรอบนาฬิกาขึ้นอยู่กับสิ่งที่แต่ละคำสั่งทำ นี่คือวิธีที่ตัวประมวลผลสามารถทำตามคำแนะนำได้หลายคำสั่งต่อรอบสัญญาณนาฬิกา ดู: เอ็นจิ้นการแฮส Haswellบน AnandTech

ไดอะแกรมของเครื่องมือการดำเนินการ Haswell
แหล่งที่มาของภาพ

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

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

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

  • ในการดำเนินการที่ซับซ้อนเหล่านี้โปรเซสเซอร์ที่ทันสมัยใช้ปฏิบัติการไมโคร (μops) คำแนะนำที่ซับซ้อนจะถูกถอดรหัสเป็นลำดับของμopsซึ่งถูกเก็บไว้ในบัฟเฟอร์เฉพาะและกำหนดเวลาสำหรับการดำเนินการแยกต่างหาก (ตามขอบเขตที่อนุญาตโดยการพึ่งพาข้อมูล) สิ่งนี้ช่วยเพิ่มพื้นที่ให้กับโปรเซสเซอร์เพื่อใช้ประโยชน์จาก ILP เพื่อเพิ่มประสิทธิภาพให้ดียิ่งขึ้นสามารถใช้แคชμopพิเศษเพื่อจัดเก็บถอดรหัสμopsเมื่อเร็ว ๆ นี้เพื่อให้μopsสำหรับคำสั่งที่ดำเนินการล่าสุดสามารถค้นหาได้อย่างรวดเร็ว

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


ดังนั้นเทคนิคเหล่านี้จะปรับปรุงประสิทธิภาพตัวประมวลผลเมื่อเวลาผ่านไปได้อย่างไร

  • ท่อส่งน้ำมันมีความยาวมากขึ้นในช่วงหลายปีที่ผ่านมาลดระยะเวลาที่ต้องใช้ในการทำให้แต่ละขั้นตอนเสร็จสมบูรณ์ อย่างไรก็ตามเหนือสิ่งอื่นใดท่อยาวเพิ่มโทษสำหรับการทำนายสาขาที่ไม่ถูกต้องดังนั้นไปป์ไลน์จะไม่ยาวเกินไป ในความพยายามที่จะไปให้ถึงความเร็วสัญญาณนาฬิกาสูงมากโปรเซสเซอร์ Pentium 4 ใช้ท่อยาวมากถึง 31 ขั้นตอนในเพรสคอตต์ เพื่อลดการขาดดุลประสิทธิภาพการประมวลผลจะพยายามที่จะทำงานตามคำสั่งถึงแม้ว่าพวกเขาอาจล้มเหลวและจะพยายามจนกว่าพวกเขาจะประสบความสำเร็จ นี้นำไปสู่การใช้พลังงานที่สูงมากและลดประสิทธิภาพการทำงานที่ได้จากHyper-Threading โปรเซสเซอร์รุ่นใหม่ไม่ได้ใช้ไพพ์ไลน์เป็นเวลานานโดยเฉพาะอย่างยิ่งเนื่องจากการปรับสเกลของอัตรานาฬิกาถึงกำแพงแล้วHaswellใช้ไปป์ไลน์ซึ่งมีความยาวระหว่าง 14 ถึง 19 ขั้นตอนและสถาปัตยกรรมที่ใช้พลังงานต่ำใช้ท่อที่สั้นกว่า (Intel Atom Silvermontมี 12 ถึง 14 ขั้นตอน)

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

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

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

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

  • นอกเหนือจากข้างต้นแล้วการรวมส่วนต่าง ๆ ที่มากขึ้นก่อนหน้านี้ภายนอกซีพียูเช่นนอร์ ธ บริดจ์ตัวควบคุมหน่วยความจำและเลน PCIe ลด I / O และเวลาแฝงหน่วยความจำ สิ่งนี้จะเพิ่มปริมาณงานโดยการลดจุดขายที่เกิดจากความล่าช้าในการเข้าถึงข้อมูลจากอุปกรณ์อื่น


6
นี่อาจทำให้โพสต์บล็อกที่ดี
Mokubai

การปรับปรุงประสิทธิภาพการใช้พลังงานก็เป็นปัจจัยหนึ่งเช่นกันเนื่องจากกำแพงไฟฟ้า
Paul A. Clayton

มันไม่ได้เกี่ยวกับความรวดเร็วของนาฬิกาอีกต่อไปแล้วมันเป็นมากกว่าเกี่ยวกับจำนวนคำสั่งต่อรอบนาฬิกาที่สามารถประมวลผลได้ หากหน่วยประมวลผลมีแบนด์วิดท์ในการประมวลผล 4x มากข้อมูลจากหน่วยความจำแคชหน่วยประมวลผลที่มีประสิทธิภาพได้เร็วขึ้น 4x แม้ว่ามันจะมีนาฬิกาช้าลง นี่คือสาเหตุที่เอเอ็มดีประสบปัญหามากมายในการพยายามจับคู่ผลิตภัณฑ์ของ Intel
Ramhound

18

การอ้างอิงที่ชัดเจนแน่นอนคือIntel 64 และ IA-32 สถาปัตยกรรมซอฟต์แวร์คู่มือการใช้งานสำหรับนักพัฒนา พวกเขามีรายละเอียดการเปลี่ยนแปลงระหว่างสถาปัตยกรรมและพวกเขาเป็นทรัพยากรที่ดีในการเข้าใจสถาปัตยกรรม x86

ฉันขอแนะนำให้คุณดาวน์โหลดไดรฟ์ข้อมูลที่รวมกัน 1 ถึง 3C (ลิงก์ดาวน์โหลดแรกในหน้านั้น) เล่มที่ 1 บทที่ 2.2 มีข้อมูลที่คุณต้องการ


ความแตกต่างทั่วไปบางอย่างที่ฉันเห็นอยู่ในบทนั้นเปลี่ยนจากสถาปัตยกรรมหลักไปเป็นสถาปัตยกรรมของ Nehalem / Sandy Bridge คือ:

  • ปรับปรุงการทำนายสาขาการฟื้นตัวที่รวดเร็วจากการคาดคะเนผิด
  • เทคโนโลยี HyperThreading
  • คอนโทรลเลอร์หน่วยความจำแบบรวม, แคชการทำงานใหม่
  • การจัดการข้อยกเว้นจุดลอยตัวที่เร็วขึ้น (เฉพาะ Sandy Bridge)
  • การปรับปรุงแบนด์วิดท์ LEA (Sandy Bridge เท่านั้น)
  • ส่วนขยายคำสั่ง AVX (Sandy Bridge เท่านั้น)

รายการทั้งหมดสามารถพบได้ในลิงค์ที่ให้ไว้ข้างต้น (เล่ม 1, Ch. 2.2)


0

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

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

ดังนั้นหากต้องการพีซีที่ "เร็วกว่า" ให้ซื้อด้วย CPU ที่มีแคชที่ใหญ่ที่สุดที่คุณสามารถซื้อได้


-1

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

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

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