คำใบ้โปรเซสเซอร์คืออะไร?

ในบริบทของคู่มือนักพัฒนาซอฟต์แวร์สถาปัตยกรรม Intel® 64 และ IA-32 ฉันต้องการทราบว่าคำว่า "คำใบ้" หมายถึงอะไร

ฉันเห็นมันในบางส่วน:

  1. ในคำอธิบายของ PREFETCHWT1 -ดึงคำใบ้ T1 ล่วงหน้าโดยมีเจตนาที่จะเขียน

  2. ในการแนะนำ SSE4 โดยกล่าวว่า "เทคโนโลยียังให้คำแนะนำที่สามารถปรับปรุงปริมาณงานหน่วยความจำเมื่ออ่านจากประเภทหน่วยความจำ WC ที่ไม่สามารถแคชได้" ซึ่งทำให้ฉันพบคำตอบที่เขียนได้ดีนี้ เกี่ยวกับหน่วยความจำ WC

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

  4. คำแนะนำคำแนะนำการโหลดสตรีมมิ่งนั้นเอง MOVNTDQA "ให้คำแนะนำที่ไม่ชั่วคราว"

  5. นอกจากนี้ในคู่มือนี้ ฉันพบว่า Transactional Synchronization Extensions(TSX) ใช้ "คำนำหน้าคำใบ้" ใน XACQUIRE และ XRELEASE

  6. ในส่วน AVX 512 บิต เมื่ออธิบาย VGATHERPF0DPD และบริษัท (มีคำสั่งประเภทนี้อีก 7 ประเภท ซึ่งทั้งหมดนี้มาพร้อมกับตัวเลือก /PS) ในสถานการณ์เหล่านี้ เรามีคำใบ้ T0 หรือ T1 โดยใช้ดัชนี dword หรือ qword

  7. เวลาที่ชาญฉลาดที่สุดที่ฉันเห็นคำใบ้ที่ใช้ในคู่มือ (รายการนี้ตามลำดับ) มาในส่วน 10.4.6.1 ที่อ่านว่า

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

นี่อยู่ในส่วน 'คำแนะนำในการควบคุมแคช' ที่เกี่ยวข้องกับ MOVNTQ, MOVNTPS, MASKMOVQ ดังนั้นคำใบ้ชั่วคราวจะเขียนลงในบรรทัดแคชหรือไม่

ดังนั้นในเวลานี้ ฉันเริ่มรู้สึกว่าฉันเข้าใจคำแนะนำแล้ว ดูเหมือนว่ามันอาจจะเป็น "ตัวชี้พิเศษ" แต่พวกมันก็ถูกเรียกว่าพอยน์เตอร์ บางทีพวกมันอาจเป็นส่วนหนึ่งของพอยน์เตอร์ใช่ไหม? แต่แล้วฉันก็เริ่มสงสัยด้วยซ้ำว่าเมื่อฉันอ่าน คำตอบของ Stack Overflow กับสิ่งที่ตรงกันข้ามกับคำใบ้ คือ. ดูเหมือนว่าคำว่า "คำใบ้" นี้จะใช้ในระดับนามธรรมที่สูงขึ้นตามที่ฉันเห็นใน คำตอบนี้โดยใช้ FreeBSD manpage

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

อย่างที่คุณเห็นฉันสับสน หลงทาง และหวาดกลัว สำหรับคะแนนโบนัสมีใครสามารถอธิบายคำแนะนำโดยใช้การเปรียบเทียบได้หรือไม่

ขอบคุณ


person Robert Houghton    schedule 30.07.2019    source แหล่งที่มา
comment
คำใบ้เป็นเพียงข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานเฉพาะบางอย่างที่ CPU สามารถใช้สำหรับการเพิ่มประสิทธิภาพได้ คำแนะนำยังสามารถถูกละเว้นได้   -  person Jester    schedule 30.07.2019
comment
คำแนะนำคือข้อมูลเพิ่มเติมที่คุณให้ไว้เพื่อช่วยให้โปรเซสเซอร์ตัดสินใจได้อย่างถูกต้องเมื่อมีการเสนอตัวเลือกต่างๆ มากมาย และไม่สามารถตัดสินใจได้จากบริบทเพียงอย่างเดียว (คำนี้ไม่เฉพาะเจาะจงสำหรับโปรเซสเซอร์)   -  person Yves Daoust    schedule 30.07.2019
comment
ขอตัวอย่างหน่อยได้ไหม?   -  person Robert Houghton    schedule 30.07.2019
comment
ตัวอย่างเช่น MOVNTDQA จะเหมือนกับ MOVDQA เว้นแต่จะแจ้งโปรเซสเซอร์ว่าคุณจะไม่นำค่านี้กลับมาใช้ใหม่ นั่นคือคำใบ้ที่ไม่ใช่ชั่วคราว ซีพียูสามารถหลีกเลี่ยงการโหลดข้อมูลลงในแคชได้ (แต่คุณได้ค้นพบสิ่งนั้นแล้ว) นอกจากนี้ยังมีคำใบ้การทำนายสาขาที่จะบอก cpu ว่าคาดว่าจะมีการกระโดดหรือไม่   -  person Jester    schedule 30.07.2019
comment
คำสั่งเหล่านั้นเองก็ถือว่าเป็นคำใบ้เพราะเป็นคำสั่งที่จัดการกับแคชหรือไม่   -  person Robert Houghton    schedule 30.07.2019
comment
MOVNTDQA ตัวมันเองไม่ใช่คำใบ้ มีฟังก์ชันที่เหมาะสม: ทำการถ่ายโอนข้อมูล คำใบ้เพียงให้ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่คุณตั้งใจจะใช้ข้อมูล XACQUIRE/XRELEASE เป็นคำใบ้ ซึ่งเป็นคำนำหน้าที่ใช้กับคำสั่งอื่น คำแนะนำไม่จำเป็นต้องจัดการกับแคช XACQUIRE ไม่ได้จัดการกับแคช คำแนะนำสาขาไม่เกี่ยวข้องกับแคช คำแนะนำคือข้อมูลทั่วไปที่คุณสามารถส่งผ่านไปยัง cpu เพื่อให้สามารถทำงานได้ดีขึ้น มันควรจะสามารถทำงานเดิมได้โดยไม่ต้องแจ้งให้ทราบ แต่อาจช้ากว่านั้น   -  person Jester    schedule 30.07.2019
comment
ขอบคุณมากสำหรับคำพูดเหล่านี้ มันช่วยได้ แต่ตอนนี้ฉันสงสัยว่าคำใบ้เป็นเพียงสิ่งที่ปรับโค้ด asm ให้เหมาะสมหรือไม่ หรือโค้ดโดยทั่วไป (C โดยใช้อินทรินซิกหรืออะไรก็ตาม) ดังนั้นหลังจากการคอมไพล์โปรแกรมจะทำงานได้ดีขึ้น?   -  person Robert Houghton    schedule 30.07.2019
comment
ใช่ว่าถูกต้อง   -  person Jester    schedule 30.07.2019
comment
Hint ถูกใช้ที่นี่เป็นคำภาษาอังกฤษทั่วไป ไม่ใช่ความหมายเฉพาะของคอมพิวเตอร์ ดังนั้น นอกเหนือจากคำตอบในที่นี้แล้ว พจนานุกรมทั่วไปอาจช่วยได้   -  person prl    schedule 30.07.2019


คำตอบ (1)


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

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

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

person Ross Ridge    schedule 30.07.2019