กลับไปหน้าบทความ

อ่าน 2 นาที

การทำนายการพึ่งพาหน่วยความจำ

การทำนายความสัมพันธ์ของหน่วยความจำ (Memory dependence prediction ) เป็นเทคนิคที่ใช้ในไมโครโปรเซสเซอร์ ประสิทธิภาพสูง ที่ประมวล ผลแบบ ไม่เรียงลำดับ (out-of-order execution)

การทำนายการพึ่งพาหน่วยความจำ

การทำนายความสัมพันธ์ของหน่วยความจำ (Memory dependence prediction ) เป็นเทคนิคที่ใช้ในไมโครโปรเซสเซอร์ ประสิทธิภาพสูง ที่ประมวล ผลแบบ ไม่เรียงลำดับ (out-of-order execution) เพื่อทำนายความสัมพันธ์ที่แท้จริงระหว่างการโหลดและการจัดเก็บในขณะ ที่ทำการ ประมวลผลคำสั่งด้วยข้อมูลความสัมพันธ์ที่ทำนายได้ โปรเซสเซอร์สามารถตัดสินใจที่จะประมวลผลการโหลดและการจัดเก็บบางอย่างแบบไม่เรียงลำดับ ในขณะที่ป้องกันไม่ให้การโหลดและการจัดเก็บอื่นๆ ประมวลผลแบบไม่เรียงลำดับ (ให้อยู่ในลำดับที่ถูกต้อง) ต่อมาใน ขั้นตอนการประมวลผล แบบไปป์ไลน์ จะใช้เทคนิคการแยกแยะหน่วยความจำ ( memory disambiguation techniques) เพื่อตรวจสอบว่าการโหลดและการจัดเก็บนั้นถูกประมวลผลอย่างถูกต้องหรือไม่ และหากไม่ถูกต้อง จะทำการกู้คืน

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

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

การทำนายการพึ่งพาหน่วยความจำ (Memory dependence prediction) เป็นการปรับปรุงประสิทธิภาพบนพื้นฐานของการคาดเดาการพึ่งพาหน่วยความจำ (Memory dependency speculation) ความหมายของการดำเนินการตามลำดับ (Sequential execution semantics) บ่งชี้ว่าคำสั่งจัดเก็บและโหลดข้อมูลจะทำงานตามลำดับที่โปรแกรมกำหนด อย่างไรก็ตาม เช่นเดียวกับการดำเนินการนอกลำดับของคำสั่งอื่นๆ อาจเป็นไปได้ที่จะดำเนินการกับหน่วยความจำสองคำสั่งในลำดับที่แตกต่างจากที่โปรแกรมกำหนดไว้ ซึ่งเป็นไปได้เมื่อการดำเนินการทั้งสองเป็นอิสระต่อกัน ในการคาดเดาการพึ่งพาหน่วยความจำ อาจอนุญาตให้คำสั่งโหลดทำงานก่อนคำสั่งจัดเก็บที่อยู่ก่อนหน้า การคาดเดาจะสำเร็จเมื่อคำสั่งโหลดเป็นอิสระจากคำสั่งจัดเก็บ กล่าวคือ เมื่อคำสั่งทั้งสองเข้าถึงตำแหน่งหน่วยความจำที่แตกต่างกัน การคาดเดาจะล้มเหลวเมื่อคำสั่งโหลดขึ้นอยู่กับคำสั่งจัดเก็บ กล่าวคือ เมื่อการเข้าถึงทั้งสองทับซ้อนกันในหน่วยความจำ ในการออกแบบนอกลำดับสมัยใหม่ในยุคแรกๆ ไม่ได้มีการใช้การคาดเดาหน่วยความจำ เนื่องจากประโยชน์ของมันมีจำกัด เมื่อขอบเขตของการดำเนินการนอกลำดับเพิ่มขึ้นมากกว่าไม่กี่สิบคำสั่ง จึงมีการใช้การคาดเดาการพึ่งพาหน่วยความจำแบบง่ายๆ ในการคาดการณ์การพึ่งพาหน่วยความจำแบบง่าย[ 2 ]อนุญาตให้โหลดข้ามการจัดเก็บก่อนหน้าได้ เช่นเดียวกับการคาดการณ์ในรูปแบบใดๆ ก็ตาม สิ่งสำคัญคือต้องชั่งน้ำหนักประโยชน์ของการคาดการณ์ที่ถูกต้องกับค่าปรับที่ต้องจ่ายสำหรับการคาดการณ์ที่ไม่ถูกต้อง เมื่อขอบเขตของการดำเนินการนอกลำดับเพิ่มขึ้นเป็นหลายสิบคำสั่ง ประโยชน์ด้านประสิทธิภาพของการคาดการณ์แบบง่ายจะลดลง เพื่อรักษาประโยชน์ของการคาดการณ์การพึ่งพาหน่วยความจำแบบก้าวร้าวในขณะที่หลีกเลี่ยงต้นทุนของการคาดการณ์ผิดพลาด จึงมีการเสนอตัวทำนายหลายตัว

การทำนายการพึ่งพาหน่วยความจำแบบเลือก[ 2 ] [ 3 ]จะหยุดการโหลดเฉพาะจนกว่าจะแน่ใจว่าไม่มีการละเมิดเกิดขึ้น มันไม่ได้ทำนายการพึ่งพาอย่างชัดเจน ตัวทำนายนี้อาจทำให้การโหลดล่าช้ากว่าที่จำเป็นและส่งผลให้ประสิทธิภาพต่ำกว่าที่ควรจะเป็น ในความเป็นจริง ในบางกรณีมันทำงานได้แย่กว่าการคาดเดาการโหลดทั้งหมดอย่างง่ายๆ ตั้งแต่เนิ่นๆ เนื่องจากบ่อยครั้งการคาดเดาผิดพลาดและกู้คืนเร็วกว่าการรอให้คำสั่งจัดเก็บก่อนหน้าทั้งหมดทำงาน การทำนายการพึ่งพาหน่วยความจำที่แม่นยำได้รับการพัฒนาที่มหาวิทยาลัยวิสคอนซิน–แมดิสัน โดยเฉพาะอย่างยิ่งการคาดเดาและการซิงโครไนซ์แบบไดนามิก[ 2 ] [ 3 ]จะทำให้การโหลดล่าช้าเฉพาะเมื่อจำเป็นเท่านั้นโดยการทำนายคำสั่งจัดเก็บที่แน่นอนที่การโหลดควรจะรอ ตัวทำนายนี้ทำนายการพึ่งพาที่แน่นอน (คู่คำสั่งจัดเก็บและการโหลด) ตัวทำนายคำพ้องความหมาย[ 1 ] จะ จัดกลุ่มการพึ่งพาทั้งหมดที่ใช้คำสั่งโหลดหรือคำสั่งจัดเก็บร่วมกัน ตัว ทำนาย ชุดคำสั่งจัดเก็บ[ 4 ]แสดงถึงการพึ่งพาที่เป็นไปได้หลายรายการอย่างมีประสิทธิภาพโดยการจัดกลุ่มคำสั่งจัดเก็บที่เป็นไปได้ทั้งหมดที่การโหลดอาจขึ้นอยู่กับ ตัว ทำนาย อุปสรรคการจัดเก็บ[ 5 ]ถือว่าคำสั่งการจัดเก็บบางอย่างเป็นอุปสรรค กล่าวคือ การดำเนินการโหลดหรือจัดเก็บที่ตามมาทั้งหมดจะไม่ได้รับอนุญาตให้ข้ามการจัดเก็บเฉพาะนั้น ตัวทำนายอุปสรรคการจัดเก็บไม่ได้ทำนายการพึ่งพาอย่างชัดเจน ตัวทำนายนี้อาจทำให้การโหลดที่ตามมาซึ่งเป็นอิสระล่าช้าโดยไม่จำเป็น การทำนายการพึ่งพาหน่วยความจำมีแอปพลิเคชันอื่นนอกเหนือจากการจัดกำหนดการโหลดและการจัดเก็บ ตัวอย่างเช่นการซ่อนหน่วยความจำแบบคาดการณ์[ 1 ]และการข้ามหน่วยความจำแบบคาดการณ์[ 1 ]ใช้การทำนายการพึ่งพาหน่วยความจำเพื่อปรับปรุงการสื่อสารค่าผ่านหน่วยความจำให้มีประสิทธิภาพยิ่งขึ้น

การเปรียบเทียบกับการคาดการณ์การแตกแขนง

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

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

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Memory_dependence_prediction&oldid=1124959224 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การทำนายการพึ่งพาหน่วยความจำ

การทำนายความสัมพันธ์ของหน่วยความจำ (Memory dependence prediction ) เป็นเทคนิคที่ใช้ในไมโครโปรเซสเซอร์ ประสิทธิภาพสูง ที่ประมวล ผลแบบ ไม่เรียงลำดับ (out-of-order execution)

การเปรียบเทียบกับการคาดการณ์การแตกแขนง

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

ดูเพิ่มเติม

การประมวลผลแบบขนานระดับหน่วยความจำ การแยกแยะความจำ ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Memory_dependence_prediction&oldid=1124959224 "