สองเธรด หนึ่งคอร์: หลักการทำงานของ Simultaneous Multithreading

พื้นหลังและแรงจูงใจ
  • เหตุผลของการนำ SMT มาใช้: ถูกนำมาใช้เพื่อเพิ่มการใช้ทรัพยากรของโปรเซสเซอร์ให้คุ้มค่ามากขึ้น ภายในโปรเซสเซอร์มีรีจิสเตอร์หลายร้อยตัว รวมถึงหน่วย load/store และหน่วยคำนวณหลายชุด เพื่อใช้ทรัพยากรเหล่านี้ให้มีประสิทธิภาพยิ่งขึ้น จึงมีการใช้เทคนิคการประมวลผลแบบขนานระดับคำสั่ง (ILP)
  • Instruction pipelining: แบ่งการรันคำสั่งออกเป็นหลายขั้นตอน และในแต่ละ cycle จะสามารถนำคำสั่งใหม่เข้ามาประมวลผลเพิ่มได้ ยิ่ง pipeline ลึกมาก ก็ยิ่งประมวลผลคำสั่งแบบขนานได้มากขึ้น
  • สถาปัตยกรรม superscalar: สามารถออกคำสั่งได้หลายคำสั่งในแต่ละ cycle ตัวอย่างเช่น โปรเซสเซอร์ Intel Core i7 รุ่นใหม่สามารถออกคำสั่งได้ 4 คำสั่งต่อ cycle
  • การสูญเปล่าแนวนอนและแนวตั้ง: เป็นการสูญเสียทรัพยากรที่เกิดขึ้นเมื่อไม่สามารถหาคำสั่งอิสระได้เพียงพอ การสูญเปล่าแนวนอนเกิดขึ้นเมื่อโปรเซสเซอร์หาคำสั่งอิสระได้ไม่พอ ส่วนการสูญเปล่าแนวตั้งเกิดขึ้นเมื่อคำสั่งทั้งหมดขึ้นต่อคำสั่งที่กำลังรันอยู่ในขณะนั้น
การทำ SMT ในโปรเซสเซอร์ Intel
  • การทำซ้ำ architectural state: เพื่อให้รันสองเธรดพร้อมกันได้ โปรเซสเซอร์จะทำซ้ำ architectural state ของตน ส่งผลให้โปรเซสเซอร์จริงหนึ่งตัวมองเห็นเป็น logical processor สองตัวในระบบปฏิบัติการ
  • การแชร์และการทำซ้ำทรัพยากร: ทรัพยากรบางอย่างถูกทำซ้ำ ขณะที่บางอย่างถูกแชร์ การตัดสินใจว่าจะทำซ้ำหรือไม่ขึ้นอยู่กับหลายปัจจัย เช่น การใช้พลังงานและพื้นที่จริงบนชิป

ไมโครสถาปัตยกรรมของโปรเซสเซอร์

  • Frontend, backend และ retirement unit: ไมโครสถาปัตยกรรมของโปรเซสเซอร์แบ่งออกเป็นสามส่วน โดย frontend ทำหน้าที่ดึงและถอดรหัสคำสั่ง backend จัดสรรทรัพยากรสำหรับการประมวลผลและรันคำสั่ง ส่วน retirement unit จะ commit ผลลัพธ์ของคำสั่งที่รันแล้วเข้าสู่ architectural state
รายละเอียดของการทำ SMT
  • Frontend: ประกอบด้วยองค์ประกอบหลายส่วน เช่น instruction pointer, trace cache, ITLB cache และ uop queue โดยแต่ละองค์ประกอบจะถูกทำซ้ำหรือแชร์เพื่อรองรับ logical processor สองตัว
  • Backend: ประกอบด้วย resource allocator, register renaming, instruction ready queue และ instruction scheduler โดย resource allocator จะสลับไปมาระหว่าง logical processor ในแต่ละ cycle
  • Retirement unit: ติดตามคำสั่งเมื่อพร้อมจะ commit เข้าสู่ architectural state และทำการ commit ตามลำดับที่ถูกต้อง

ระบบย่อยหน่วยความจำ

  • TLB: แคชขนาดเล็กที่ใช้แปลง virtual address เป็น physical address โดยมีการแชร์แบบไดนามิกระหว่าง logical processor ทั้งสอง
  • L1, L2, L3 cache: แต่ละ CPU core มี L1 cache ของตัวเอง ส่วน L2 cache อาจแตกต่างกันไปตามไมโครสถาปัตยกรรม และ L3 cache จะถูกแชร์ระหว่างหลายคอร์

ผลกระทบของ SMT ต่อประสิทธิภาพ

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

บทสรุป

  • การตัดสินใจว่าจะใช้ SMT หรือไม่: SMT ถูกออกแบบมาเพื่อเพิ่มการใช้ทรัพยากรของ CPU และเพิ่ม throughput ของคำสั่ง แต่ก็มี trade-off ทั้งด้านประสิทธิภาพและความปลอดภัย จึงควรตัดสินใจว่าจะใช้ SMT หรือไม่ตามลักษณะของ workload

สรุปโดย GN⁺

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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น