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

รูปแบบการประมวลผล SIMT ได้ถูกนำไปใช้กับGPU หลายตัว และมีความเกี่ยวข้องกับการประมวลผลทั่วไปบนหน่วยประมวลผลกราฟิก (GPGPU) เช่นซูเปอร์คอมพิวเตอร์ บางเครื่อง รวม CPU กับ GPU เข้าด้วยกัน โดยในILLIAC IVนั้น CPU คือBurroughs B6500
รูปแบบการทำงานของ SIMT ยังคงเป็นเพียงวิธีการนำเสนอแนวคิด SIMD ที่มีเงื่อนไขพื้นฐานให้กับโปรแกรมเมอร์เท่านั้น โปรแกรมต้องได้รับการออกแบบโดยคำนึงถึง SIMD ที่มีเงื่อนไข การออกคำสั่ง (เป็นการออกอากาศแบบซิงโครนัส) จะถูกจัดการโดยหน่วยควบคุมเดียว SIMT จึงไม่สามารถ อนุญาตให้เธรด (PE, เลน) แยกออกจาก กันโดยการแตกสาขาได้ เนื่องจากมีเพียงหน่วยควบคุมเท่านั้นที่มีตัวนับโปรแกรม ดังนั้น หากเป็นไปได้ ควรหลีกเลี่ยงการแตกสาขา[ 2 ] [ 3 ]
ความแตกต่างจากรุ่นอื่นๆ
วิธีที่ง่ายที่สุดในการทำความเข้าใจ SIMT คือการจินตนาการถึงระบบมัลติคอร์ ( MIMD ) ที่แต่ละคอร์มีไฟล์รีจิสเตอร์ของตัวเอง หน่วยคำนวณและ ตรรกะ (ALU ) ของตัวเอง (ทั้ง SIMD และแบบสเกลาร์) และแคชข้อมูลของตัวเอง แต่แตกต่างจากระบบมัลติคอร์มาตรฐานที่มีแคชคำสั่งและตัวถอดรหัสคำสั่งอิสระหลายตัว รวมถึงรีจิสเตอร์ตัวนับโปรแกรมอิสระหลายตัว คำสั่งจะถูกส่งไปยังคอร์ SIMT ทั้งหมดพร้อมกันจาก หน่วย เดียวที่มีแคชคำสั่งเดียวและตัวถอดรหัสคำสั่งเดียวซึ่งอ่านคำสั่งโดยใช้ตัวนับโปรแกรมเดียว
ความแตกต่างที่สำคัญระหว่างเลน SIMT และ SIMDคือ หน่วยประมวลผลแต่ละหน่วยในอาร์เรย์ SIMT มีหน่วยความจำเฉพาะที่ของตนเอง และอาจมีตัวชี้สแต็กที่แตกต่างกันโดยสิ้นเชิง (และด้วยเหตุนี้จึงทำการคำนวณกับชุดข้อมูลที่แตกต่างกันโดยสิ้นเชิง) ในขณะที่ ALU ในเลน SIMD ไม่รู้จักหน่วยความจำโดยตัวมันเอง และไม่มีไฟล์รีจิสเตอร์สิ่งนี้แสดงให้เห็นได้จากILLIAC IVแต่ละคอร์ SIMT เรียกว่าหน่วยประมวลผล (PE) และแต่ละ PE มีหน่วยความจำแยกต่างหากของตนเอง (PEM) แต่ละ PE มี "รีจิสเตอร์ดัชนี" ซึ่งเป็นที่อยู่ใน PEM ของมัน[ 4 ] [ 1 ] ในILLIAC IV Burroughs B6500 ทำหน้าที่หลักในการจัดการ I/O แต่ยังส่งคำสั่งไปยังหน่วยควบคุม (CU) ซึ่งจะจัดการการกระจายเสียงไปยัง PE นอกจากนี้ B6500 ในบทบาทของโปรเซสเซอร์ I/O ยังสามารถเข้าถึงPEM ทั้งหมด ได้
นอกจากนี้ แต่ละ PE อาจถูกเปิดใช้งานหรือปิดใช้งาน หาก PE ใดปิดใช้งาน มันจะไม่ดำเนินการตามคำสั่งที่ส่งมาจากหน่วยควบคุม แต่จะอยู่ในสถานะว่างจนกว่าจะถูกเปิดใช้งาน กล่าวได้ว่าแต่ละ PE นั้นถูกกำหนดเงื่อนไข ไว้แล้ว
สิ่งที่สำคัญอีกประการหนึ่งคือความแตกต่างระหว่าง SIMT และSPMD - Single Program Multiple Data SPMD เช่นเดียวกับระบบมัลติคอร์มาตรฐาน มีตัวนับโปรแกรมหลายตัว ในขณะที่ SIMT มีเพียงตัวเดียวในหน่วยควบคุม (หนึ่งหน่วย)
ประวัติศาสตร์
ในอนุกรมวิธานของฟลินน์เอกสารต้นฉบับของฟลินน์อ้างถึงตัวอย่างทางประวัติศาสตร์สองตัวอย่างของโปรเซสเซอร์ SIMT ที่เรียกว่า "โปรเซสเซอร์อาร์เรย์" ได้แก่SOLOMONและILLIAC IV [ 1 ] SIMT ได้รับการแนะนำโดยNVIDIAในสถาปัตยกรรมไมโคร GPU Teslaด้วยชิป G80 [ 5 ] [ 6 ] ATI Technologiesซึ่งปัจจุบันคือAMDได้ออกผลิตภัณฑ์ที่แข่งขันกันในเวลาต่อมาเล็กน้อยในวันที่ 14 พฤษภาคม 2550 คือชิป GPU "R600"ที่ใช้TeraScale 1
คำอธิบาย
โปรเซสเซอร์ SIMT ดำเนินการ "เธรด" หลายรายการ (หรือ "รายการงาน" หรือ "ลำดับการดำเนินการเลน SIMD") พร้อมกันภายใต้การควบคุมของหน่วยกลางเดียว รูปแบบนี้มีคุณสมบัติร่วมกันกับเลน SIMD [ 7 ]
ILLIAC IV ได้บันทึกกลไก "การแตกแขนง"ของตนไว้อย่างละเอียดซึ่งเป็นต้นแบบของการปกปิดคำกริยา ใน ปัจจุบัน
เนื่องจากเวลาในการเข้าถึงข้อมูลของRAM ทุก ประเภทที่ใช้กันอย่างแพร่หลาย (เช่นDDR SDRAM , GDDR SDRAM , XDR DRAMเป็นต้น) ยังค่อนข้างสูง ทำให้เกิดปรากฏการณ์ที่เรียกว่า " กำแพงหน่วยความจำ " วิศวกรจึงคิดค้นวิธีการซ่อนความหน่วงที่เกิดขึ้นอย่างหลีกเลี่ยงไม่ได้ในการเข้าถึงหน่วยความจำแต่ละครั้ง ดังที่แสดงในดีไซน์ของ ILLIAC IV หน่วยประมวลผลกราฟิก (PE) แต่ละตัวทำงานที่ความเร็วสัญญาณนาฬิกาที่ช้ากว่า CPU มาตรฐาน แต่ชดเชยความเร็วสัญญาณนาฬิกาที่ขาดไปโดยการทำงานแบบขนานของ PE จำนวนมาก ผลลัพธ์ก็คือ ความเร็วที่ช้าลงของแต่ละ PE นั้นเหมาะสมกับความเร็วของ RAM มากขึ้น กลยุทธ์นี้ได้ผลเนื่องจากภาระงานของ GPU นั้นเป็นแบบขนานโดยธรรมชาติ และตัวอย่างหนึ่งคือการเรนเดอร์แบบไทล์
SIMT มีจุดประสงค์เพื่อจำกัดค่าใช้จ่ายในการดึงคำสั่ง[ 8 ]กล่าวคือ ความหน่วงที่เกิดจากการเข้าถึงหน่วยความจำ และใช้ใน GPU รุ่นใหม่ (เช่นของNVIDIAและAMD ) ร่วมกับ 'การซ่อนความหน่วง' เพื่อให้สามารถประมวลผลได้อย่างมีประสิทธิภาพสูงแม้จะมีความหน่วงมากในการดำเนินการเข้าถึงหน่วยความจำ เช่นเดียวกับ SIMD ข้อดีที่สำคัญอีกประการหนึ่งคือการแบ่งปันตรรกะควบคุมโดยเลนข้อมูลจำนวนมาก ซึ่งนำไปสู่การเพิ่มความหนาแน่นของการคำนวณ บล็อกตรรกะควบคุมหนึ่งบล็อกสามารถจัดการเลนข้อมูลได้ N เลน แทนที่จะทำซ้ำตรรกะควบคุม N ครั้ง
ข้อเสียของการประมวลผลแบบ SIMT คือ เนื่องจากมีตัวนับโปรแกรมเพียงตัวเดียว"การปิดบังเงื่อนไข"จึงเป็นกลยุทธ์เดียวในการควบคุมการประมวลผลต่อ PE ซึ่งส่งผลให้การใช้งานในอัลกอริธึมที่ซับซ้อนมีประสิทธิภาพต่ำ
ศัพท์เฉพาะ
| NVIDIA CUDA | โอเพ่นซีแอล | เฮนเนสซีและแพตเตอร์สัน[ 9 ] |
|---|---|---|
| ด้าย | รายการงาน | ลำดับการทำงานของเลน SIMD |
| วาร์ป | กลุ่มย่อย | ลำดับคำสั่ง SIMD |
| ปิดกั้น | กลุ่มงาน | เนื้อหาของลูปเวกเตอร์ |
| ตาราง | เอ็นดีเรนจ์ | ลูปเวกเตอร์ |
GPU ของ NVIDIA มีแนวคิดของกลุ่มเธรดที่เรียกว่า "warp" ซึ่งประกอบด้วยเธรดฮาร์ดแวร์ 32 เธรดที่ทำงานพร้อมกัน GPU ของ AMD เทียบเท่ากับ"wavefront"แม้ว่าจะประกอบด้วยเธรดฮาร์ดแวร์ 64 เธรดก็ตาม ใน OpenCL เรียกว่า "sub-group" สำหรับคำศัพท์นามธรรมของ warp และ wavefront CUDA ยังมีคำสั่ง warp shuffle ซึ่งทำให้การแลกเปลี่ยนข้อมูลแบบขนานในกลุ่มเธรดเร็วขึ้น[ 10 ]และ OpenCL อนุญาตให้รองรับคุณสมบัติที่คล้ายกันโดยส่วนขยาย cl_khr_subgroups [ 11 ]
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ คำสั่งเดียว หลายเธรด
การประมวลผลแบบคำสั่งเดียว หลายเธรด ( SIMT ) เป็นรูปแบบการประมวลผลที่ใช้ในการประมวลผลแบบขนานโดยที่ "หน่วยควบคุม" ส่วนกลางเพียงหน่วยเดียวจะส่งคำสั่งไปยัง "หน่วยประมวลผล" หลายหน่วย...
ความแตกต่างจากรุ่นอื่นๆ
วิธีที่ง่ายที่สุดในการทำความเข้าใจ SIMT คือการจินตนาการถึงระบบมัลติคอร์ ( MIMD ) ที่แต่ละคอร์มีไฟล์รีจิสเตอร์ของตัวเอง หน่วยคำนวณและ ตรรกะ (ALU ) ของตัวเอง (ทั้ง SIMD และแบบสเกลาร์) และแคชข้อมูลของตัวเอง...
ประวัติศาสตร์
ใน อนุกรมวิธานของฟลินน์ เอกสารต้นฉบับของฟลินน์อ้างถึงตัวอย่างทางประวัติศาสตร์สองตัวอย่างของโปรเซสเซอร์ SIMT ที่เรียกว่า "โปรเซสเซอร์อาร์เรย์" ได้แก่ SOLOMON และ ILLIAC IV [ 1 ] SIMT ได้รับการแนะนำโดย NVIDIA ใน สถาปัตยกรรมไมโคร GPU Tesla ด้วยชิป G80 [ 5 ] [ 6...
คำอธิบาย
โปรเซสเซอร์ SIMT ดำเนินการ "เธรด" หลายรายการ (หรือ "รายการงาน" หรือ "ลำดับการดำเนินการเลน SIMD") พร้อมกันภายใต้การควบคุมของหน่วยกลางเดียว รูปแบบนี้มีคุณสมบัติร่วมกันกับ เลน SIMD [ 7 ]