Out Of Order Execution คืออะไร?

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

สเกลาร์ย่อยเป็นสเกลาร์ระดับสูง

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

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

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

การรักษาไปป์ไลน์ที่ป้อนด้วยข้อมูล

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

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

การพึ่งพาที่สำคัญ

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

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

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

บทสรุป

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



Leave a Comment

วิธีการโคลนฮาร์ดไดรฟ์

วิธีการโคลนฮาร์ดไดรฟ์

ในยุคดิจิทัลสมัยใหม่ ที่ข้อมูลเป็นทรัพย์สินที่มีค่า การโคลนฮาร์ดไดรฟ์บน Windows อาจเป็นกระบวนการที่สำคัญสำหรับหลายๆ คน คู่มือที่ครอบคลุมนี้

วิธีแก้ไขไดรเวอร์ WUDFRd ไม่สามารถโหลดบน Windows 10 ได้

วิธีแก้ไขไดรเวอร์ WUDFRd ไม่สามารถโหลดบน Windows 10 ได้

คุณกำลังเผชิญกับข้อความแสดงข้อผิดพลาดขณะบูตเครื่องคอมพิวเตอร์ซึ่งระบุว่าไดรเวอร์ WUDFRd ไม่สามารถโหลดบนคอมพิวเตอร์ของคุณได้ใช่หรือไม่?

วิธีแก้ไขรหัสข้อผิดพลาด NVIDIA GeForce Experience 0x0003

วิธีแก้ไขรหัสข้อผิดพลาด NVIDIA GeForce Experience 0x0003

คุณพบประสบการณ์รหัสข้อผิดพลาด NVIDIA GeForce 0x0003 บนเดสก์ท็อปของคุณหรือไม่? หากใช่ โปรดอ่านบล็อกเพื่อดูวิธีแก้ไขข้อผิดพลาดนี้อย่างรวดเร็วและง่ายดาย

Roomba Stops, Sticks and Turns Around – Fix

Roomba Stops, Sticks and Turns Around – Fix

Fix a problem where your Roomba robot vacuum stops, sticks, and keeps turning around.

วิธีลบ GPU ออกจากพีซีที่ใช้ Windows ในปี 2023

วิธีลบ GPU ออกจากพีซีที่ใช้ Windows ในปี 2023

คุณจำเป็นต้องลบ GPU ออกจากพีซีของคุณหรือไม่? เข้าร่วมกับฉันในขณะที่ฉันอธิบายวิธีลบ GPU ออกจากพีซีของคุณในคำแนะนำทีละขั้นตอนนี้

วิธีการติดตั้ง NVMe SSD ในเดสก์ท็อปและแล็ปท็อป

วิธีการติดตั้ง NVMe SSD ในเดสก์ท็อปและแล็ปท็อป

ซื้อ NVMe M.2 SSD ใหม่ แต่ไม่รู้ว่าจะติดตั้งอย่างไร? อ่านเพื่อเรียนรู้วิธีติดตั้ง NVMe SSD บนแล็ปท็อปหรือเดสก์ท็อป

Logic Bomb คืออะไร?

Logic Bomb คืออะไร?

ลอจิกบอมบ์คือเหตุการณ์ด้านความปลอดภัยที่ผู้โจมตีดำเนินการล่าช้า อ่านต่อเพื่อหาข้อมูลเพิ่มเติม

SoC คืออะไร?

SoC คืออะไร?

หากคุณเคยดูภายในพีซีทาวเวอร์ คุณจะเห็นว่ามีส่วนประกอบต่างๆ มากมาย แล็ปท็อปทั่วไปของคุณมีส่วนประกอบที่เหมือนกันเป็นส่วนใหญ่

การเข้ารหัสแบบอสมมาตรคืออะไร?

การเข้ารหัสแบบอสมมาตรคืออะไร?

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

Steam Deck: วิธีฟอร์แมตการ์ด SD

Steam Deck: วิธีฟอร์แมตการ์ด SD

Steam Deck มีตัวเลือกพื้นที่เก็บข้อมูลสามแบบ: 64GB eMMC, 256GB NVMe SSD และ 512GB NVMe SSD ขึ้นอยู่กับคลังเกมของคุณและขนาดของเกม