Superscalar คืออะไร?

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

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

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

ไปป์ไลน์เป็นสเกลาร์

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

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

ในความเป็นจริง โปรแกรมมีความซับซ้อนและลดปริมาณงานลง ตัวอย่างเช่น หากคุณมีคำสั่งเพิ่มเติมสองคำสั่ง “a = b + c” และ “d = e + f” คำสั่งเหล่านี้สามารถเรียกใช้ในไปป์ไลน์โดยไม่มีปัญหา อย่างไรก็ตาม หากคุณมี “a = b + c” ตามด้วย “d = a + e” แสดงว่าคุณมีปัญหา สมมติว่าสองคำสั่งนี้ต่อกันโดยตรง กระบวนการคำนวณค่าใหม่ของ "a" จะไม่เสร็จสมบูรณ์ ให้เขียนกลับไปในหน่วยความจำเพียงอย่างเดียวก่อนที่คำสั่งที่สองจะอ่านค่าเก่าของ "a" แล้วให้คำตอบที่ผิดสำหรับ “ด”.

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

การขยายไปป์ไลน์เป็นซุปเปอร์สเกลาร์

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

ในตัวประมวลผลไปป์ไลน์ superscalar สามารถมีมากกว่าหนึ่งคำสั่งในแต่ละขั้นตอนของไปป์ไลน์ในแต่ละรอบ ซึ่งช่วยให้สามารถประมวลผลคำสั่งได้สูงสุดมากกว่าหนึ่งคำสั่งต่อรอบ

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

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

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

บทสรุป

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

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

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