อ่าน 3 นาที
การประมวลผลแบบขนานระดับคำสั่ง
การประมวลผลแบบขนานระดับคำสั่ง ( ILP ) คือ การดำเนินการ แบบขนานหรือพร้อมกันของลำดับคำสั่งในโปรแกรมคอมพิวเตอร์โดยเฉพาะอย่างยิ่ง ILP...
การประมวลผลแบบขนานระดับคำสั่ง

การประมวลผลแบบขนานระดับคำสั่ง ( ILP ) คือ การดำเนินการ แบบขนานหรือพร้อมกันของลำดับคำสั่งในโปรแกรมคอมพิวเตอร์โดยเฉพาะอย่างยิ่ง ILP หมายถึงจำนวนคำสั่งเฉลี่ยที่ดำเนินการในแต่ละขั้นตอนของการประมวลผลแบบขนานนี้[ 2 ] : 5
การอภิปราย
ILP ไม่ควรสับสนกับConcurrencyใน ILP จะมีเธรดการทำงานของกระบวนการ เพียง เธรด เดียว ในทางกลับกัน Concurrency เกี่ยวข้องกับการกำหนดเธรดหลายเธรดให้กับ คอร์ของ CPUในลักษณะสลับกันอย่างเคร่งครัด หรือในรูปแบบขนานที่แท้จริงหากมีคอร์ CPU เพียงพอ โดยในอุดมคติแล้วควรมีหนึ่งคอร์สำหรับแต่ละเธรดที่สามารถทำงานได้
การ ประมวล ผลแบบขนานระดับคำสั่งมีสองแนวทาง ได้แก่ฮาร์ดแวร์และซอฟต์แวร์
ILP ถูกนำไปใช้ในรูปแบบการประมวลผลแบบขนานไดนามิกในระดับฮาร์ดแวร์หรือการประมวลผลแบบขนานคงที่ในระดับซอฟต์แวร์ การประมวลผลแบบขนานในระดับฮาร์ดแวร์นั้น โปรเซสเซอร์จะตัดสินใจว่าจะดำเนินการคำสั่งใดแบบขนานกันในขณะที่โค้ดกำลังทำงานอยู่ ในขณะที่การประมวลผลแบบขนานในระดับซอฟต์แวร์หมายความว่าคอมไพเลอร์จะวางแผนล่วงหน้าว่าจะดำเนินการคำสั่งใดแบบขนานกัน[ 3 ] โปรเซสเซอร์ x86รุ่นใหม่ใช้เทคนิคหลายอย่างเพื่อให้บรรลุการประมวลผลแบบขนานในระดับฮาร์ดแวร์ ในขณะที่ สถาปัตยกรรม Itaniumทำให้การประมวลผลแบบขนานในระดับซอฟต์แวร์เป็นไปได้อย่างมีนัยสำคัญ แต่ก็ต้องอาศัยการประมวลผลแบบขนานในระดับซอฟต์แวร์เพื่อให้โค้ดมีประสิทธิภาพด้วย
พิจารณาโปรแกรมต่อไปนี้:
e = a + b f = c + d m = e * f ขั้นตอนที่ 3 ขึ้นอยู่กับผลลัพธ์ของขั้นตอนที่ 1 และ 2 ดังนั้นจึงไม่สามารถคำนวณได้จนกว่าทั้งสองขั้นตอนจะเสร็จสมบูรณ์ อย่างไรก็ตาม ขั้นตอนที่ 1 และ 2 ไม่ขึ้นอยู่กับขั้นตอนอื่นใด ดังนั้นจึงสามารถคำนวณพร้อมกันได้ หากเราสมมติว่าแต่ละขั้นตอนสามารถเสร็จสมบูรณ์ได้ภายในหนึ่งหน่วยเวลา ดังนั้นคำสั่งทั้งสามนี้จะเสร็จสมบูรณ์ได้ภายในสองหน่วยเวลาโดยรวม ทำให้ได้ค่า ILP เท่ากับ 3/2
เป้าหมายของ ผู้ออกแบบ คอมไพเลอร์และโปรเซสเซอร์คือการระบุและใช้ประโยชน์จาก ILP ให้ได้มากที่สุดเท่าที่จะเป็นไปได้ โดยทั่วไปแล้วโปรแกรมทั่วไปจะถูกเขียนขึ้นภายใต้โมเดลการประมวลผลแบบลำดับ ซึ่งคำสั่งต่างๆ จะถูกประมวลผลทีละคำสั่งและตามลำดับที่โปรแกรมเมอร์กำหนด ILP ช่วยให้คอมไพเลอร์และโปรเซสเซอร์สามารถซ้อนทับการประมวลผลของหลายคำสั่ง หรือแม้กระทั่งเปลี่ยนลำดับการประมวลผลของคำสั่งได้
ปริมาณการประมวลผลแบบขนานภายใน (ILP) ในโปรแกรมนั้นขึ้นอยู่กับลักษณะการใช้งาน ในบางสาขา เช่น กราฟิกและการคำนวณทางวิทยาศาสตร์ปริมาณอาจมีมาก อย่างไรก็ตาม งานประมวลผลอย่างเช่นการเข้ารหัสลับอาจมีการประมวลผลแบบขนานน้อยกว่ามาก
เทคนิคทางสถาปัตยกรรมระดับจุลภาคที่ใช้ในการใช้ประโยชน์จาก ILP ได้แก่:
- การประมวลผลแบบไปป์ไลน์คำสั่งซึ่งการประมวลผลคำสั่งหลายคำสั่งสามารถซ้อนทับกันได้บางส่วน
- การประมวลผล แบบซูเปอร์สเกลาร์ (Superscalar execution), VLIW (VLIW ) และแนวคิดที่เกี่ยวข้องอย่างใกล้ชิดกับการประมวลผลคำสั่งแบบขนานอย่างชัดเจน (Explicitly Parallel Instruction Computing)ซึ่ง ใช้ หน่วยประมวลผล หลาย หน่วยในการประมวลผลคำสั่งหลายคำสั่งพร้อมกัน
- การประมวลผลแบบ ไม่เรียงลำดับ ( Out-of-order execution)คือการประมวลผลคำสั่งในลำดับใดก็ได้ที่ไม่ละเมิดความสัมพันธ์ของข้อมูล โปรดทราบว่าเทคนิคนี้ไม่ขึ้นอยู่กับการประมวลผลแบบไปป์ไลน์และการประมวลผลแบบซูเปอร์สเกลาร์ การใช้งานการประมวลผลแบบไม่เรียงลำดับในปัจจุบันจะดึง ILP (Independent Level Persistent Processing) ออกมาจากโปรแกรมทั่วไปแบบไดนามิก (กล่าวคือ ในขณะที่โปรแกรมกำลังทำงานและไม่ได้รับความช่วยเหลือจากคอมไพเลอร์) อีกทางเลือกหนึ่งคือการดึงความขนานนี้ออกมาในระหว่างการคอมไพล์และส่งข้อมูลนี้ไปยังฮาร์ดแวร์ เนื่องจากความซับซ้อนของการปรับขนาดเทคนิคการประมวลผลแบบไม่เรียงลำดับ อุตสาหกรรมจึงได้พิจารณาชุดคำสั่ง ใหม่ ซึ่งเข้ารหัสการทำงานอิสระหลายรายการต่อคำสั่งอย่างชัดเจน
- การเปลี่ยนชื่อรีจิสเตอร์หมายถึงเทคนิคที่ใช้เพื่อหลีกเลี่ยงการจัดลำดับการทำงานของโปรแกรมโดยไม่จำเป็น ซึ่งเกิดจากการนำรีจิสเตอร์มาใช้ซ้ำในการดำเนินการเหล่านั้น และใช้เพื่อเปิดใช้งานการประมวลผลแบบไม่เรียงลำดับ
- การประมวลผลแบบคาดการณ์ล่วงหน้า (Speculative execution ) คือการอนุญาตให้ประมวลผลคำสั่งทั้งหมดหรือบางส่วนของคำสั่งก่อนที่จะแน่ใจว่าควรประมวลผลหรือไม่ รูปแบบการประมวลผลแบบคาดการณ์ล่วงหน้าที่ใช้กันทั่วไปคือ การคาดการณ์การไหลของโปรแกรม (Control flow speculation) ซึ่งคำสั่งที่อยู่หลังคำสั่งควบคุมการไหลของโปรแกรม (เช่น คำสั่งกระโดด) จะถูกประมวลผลก่อนที่จะกำหนดเป้าหมายของคำสั่งควบคุมการไหลของโปรแกรม นอกจากนี้ยังมีการเสนอและใช้งานรูปแบบการประมวลผลแบบคาดการณ์ล่วงหน้าอื่นๆ อีกหลายรูปแบบ เช่น การประมวลผลแบบคาดการณ์ล่วงหน้าโดยใช้การทำนายค่า (Value prediction) การทำนายการพึ่งพาหน่วยความจำ ( Memory dependence prediction)และ การทำนายความหน่วง ของแคช (Cache latency prediction )
- การคาดการณ์สาขา (Branch prediction ) คือเทคนิคที่ใช้เพื่อหลีกเลี่ยงการหยุดชะงักเนื่องจากต้องรอการแก้ไขความสัมพันธ์ของคำสั่งควบคุม การคาดการณ์สาขาใช้ร่วมกับการประมวลผลแบบคาดการณ์ล่วงหน้า (speculative execution)
ILP (Integrated Programming) ถูกนำไปใช้ประโยชน์ทั้งโดยคอมไพเลอร์และฮาร์ดแวร์ แต่คอมไพเลอร์ยังให้ ILP ที่แฝงอยู่และโดยปริยายในโปรแกรมแก่ฮาร์ดแวร์ผ่านการเพิ่มประสิทธิภาพในระหว่างการคอมไพล์ เทคนิคการเพิ่มประสิทธิภาพบางอย่างสำหรับการดึง ILP ที่มีอยู่ในโปรแกรม ได้แก่การจัดตารางคำสั่ง การจัดสรร /การเปลี่ยนชื่อรีจิสเตอร์ และการเพิ่มประสิทธิภาพการเข้าถึงหน่วยความจำ
สถาปัตยกรรมดาต้าโฟลว์เป็นสถาปัตยกรรมอีกประเภทหนึ่งที่ระบุ ILP ไว้อย่างชัดเจน ตัวอย่างล่าสุดคือสถาปัตยกรรม TRIPS
ในช่วงไม่กี่ปีที่ผ่านมา เทคนิค ILP ได้ถูกนำมาใช้เพื่อปรับปรุงประสิทธิภาพ แม้ว่าความแตกต่างระหว่างความถี่ในการทำงานของโปรเซสเซอร์และเวลาในการเข้าถึงหน่วยความจำจะเพิ่มขึ้น (การออกแบบ ILP ในยุคแรก เช่นIBM System/360 Model 91ใช้เทคนิค ILP เพื่อเอาชนะข้อจำกัดที่เกิดจากไฟล์รีจิสเตอร์ที่มีขนาดค่อนข้างเล็ก) ในปัจจุบัน ค่าปรับจากการพลาดแคชในหน่วยความจำหลักนั้นทำให้ CPU ต้องเสียเวลาหลายร้อยรอบการทำงาน แม้ว่าในทางทฤษฎีแล้วจะสามารถใช้ ILP เพื่อทนต่อความหน่วงของหน่วยความจำดังกล่าวได้ แต่ต้นทุนด้านทรัพยากรและการใช้พลังงานที่เกี่ยวข้องนั้นไม่สมดุลกัน ยิ่งไปกว่านั้น ความซับซ้อนและความหน่วงของโครงสร้างฮาร์ดแวร์พื้นฐานมักส่งผลให้ความถี่ในการทำงานลดลง ซึ่งยิ่งลดประโยชน์ใดๆ ลงไปอีก ดังนั้น เทคนิคที่กล่าวมาข้างต้นจึงไม่เพียงพอที่จะป้องกันไม่ให้ CPU หยุดทำงานเนื่องจากข้อมูลภายนอกชิป ในทางกลับกัน อุตสาหกรรมกำลังมุ่งไปสู่การใช้ประโยชน์จากระดับการขนานที่สูงขึ้นซึ่งสามารถใช้ประโยชน์ได้ผ่านเทคนิคต่างๆ เช่นการประมวลผลแบบหลายโปรเซสเซอร์และการประมวลผลแบบหลายเธรด[ 4 ]
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Aiken, Alex; Banerjee, Utpal; Kejariwal, Arun; Nicolau, Alexandru (30 พฤศจิกายน 2016). การประมวลผลแบบขนานระดับคำสั่ง . คอมพิวเตอร์ระดับมืออาชีพ (ฉบับที่ 1). Springer. ISBN 978-1-4899-7795-3ISBN 1-4899-7795-3.(276 หน้า)
ลิงก์ภายนอก
- แนวทางในการแก้ไขปัญหาเกี่ยวกับกำแพงแห่งความทรงจำ
- บทความในนิตยสาร Wired ที่อ้างอิงถึงเอกสารข้างต้น
- https://www.scribd.com/doc/33700101/Instruction-Level-Parallelism#scribd
- http://www.hpl.hp.com/techreports/92/HPL-92-132.pdf เก็บถาวรเมื่อ 2016-03-04 ที่Wayback Machine
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การประมวลผลแบบขนานระดับคำสั่ง
การประมวลผลแบบขนานระดับคำสั่ง ( ILP ) คือ การดำเนินการ แบบขนานหรือพร้อมกันของลำดับคำสั่งในโปรแกรมคอมพิวเตอร์โดยเฉพาะอย่างยิ่ง ILP...
การอภิปราย
ILP ไม่ควรสับสนกับ Concurrency ใน ILP จะมีเธรดการทำงานของ กระบวนการ เพียง เธรด เดียว ในทางกลับกัน Concurrency เกี่ยวข้องกับการกำหนดเธรดหลายเธรดให้กับ คอร์ของ CPU ในลักษณะสลับกันอย่างเคร่งครัด หรือในรูปแบบขนานที่แท้จริงหากมีคอร์ CPU เพียงพอ...
ดูเพิ่มเติม
การพึ่งพาข้อมูล การประมวลผลแบบขนานระดับหน่วยความจำ (MLP)
อ่านเพิ่มเติม
Aiken, Alex; Banerjee, Utpal; Kejariwal, Arun; Nicolau, Alexandru (30 พฤศจิกายน 2016). การประมวลผลแบบขนานระดับคำสั่ง . คอมพิวเตอร์ระดับมืออาชีพ (ฉบับที่ 1). Springer. ISBN 978-1-4899-7795-3 ISBN 1-4899-7795-3 . (276 หน้า)