เธรดของการดำเนินการใน CPU และความแตกต่างกับกระบวนการของซอฟต์แวร์

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

เรามักจะได้ยินหรืออ่านหัวข้อของแนวคิดการดำเนินการเมื่อได้ยินเกี่ยวกับ CPU ใหม่ แต่ยังรวมถึงในโลกของซอฟต์แวร์ด้วย นั่นคือเหตุผลที่เราตัดสินใจที่จะอธิบายความแตกต่างระหว่างกระบวนการหรือเธรดของการดำเนินการในซอฟต์แวร์และสิ่งที่เทียบเท่าที่สำคัญในฮาร์ดแวร์

กระบวนการในซอฟต์แวร์

เธรดของการดำเนินการใน CPU

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

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

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

แนวคิดของฟองสบู่หรือหยุดใน CPU

กระบวนการ Burbuja

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

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

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

ประสิทธิภาพขึ้นอยู่กับระบบปฏิบัติการ

กระบวนการ Sistema Operativo

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

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

การก้าวกระโดดสู่แกนไฮบริดได้เกิดขึ้นแล้วในโลกของ ARM โปรเซสเซอร์ที่ระบบปฏิบัติการเช่น iOS และ Android ต้องปรับให้เข้ากับการใช้แกนของการแสดงต่าง ๆ ที่ทำงานพร้อม ๆ กัน ในขณะเดียวกัน ชุดควบคุมของการออกแบบในอนาคตจะต้องซับซ้อนยิ่งขึ้นใน x86 วัตถุประสงค์? ว่าแต่ละกระบวนการในซอฟต์แวร์ถูกดำเนินการในเธรดที่เหมาะสมของฮาร์ดแวร์และตัว CPU เองมีความเป็นอิสระมากขึ้นในการดำเนินการของกระบวนการ

การดำเนินการของกระบวนการบน GPU เป็นอย่างไร?

TFLOPS Velocidad GPU

GPU ในหน่วย shader ของพวกมันยังรันโปรแกรมด้วย แต่โปรแกรมของพวกมันไม่ได้เรียงตามลำดับ เธรดการดำเนินการแต่ละอันประกอบด้วยคำสั่งและข้อมูล ซึ่งมีสามเงื่อนไขที่แตกต่างกัน:

  • พบข้อมูลถัดจากคำสั่งและสามารถดำเนินการได้โดยตรง
  • คำสั่งค้นหาที่อยู่หน่วยความจำของข้อมูลและต้องรอให้ข้อมูลมาจากหน่วยความจำไปยังรีจิสเตอร์ของหน่วย shader
  • ข้อมูลขึ้นอยู่กับการดำเนินการของเธรดการดำเนินการก่อนหน้า

แต่ a GPU ไม่ได้รันระบบปฏิบัติการที่สามารถจัดการกับเธรดต่างๆ ได้ การแก้ไขปัญหา? GPU ทั้งหมดใช้อัลกอริธึมในตัวกำหนดเวลาของแต่ละหน่วย shader ซึ่งเทียบเท่ากับหน่วยควบคุม อัลกอริธึมนี้เรียกว่า Round-Robin และประกอบด้วยการให้เวลาดำเนินการในวงจรนาฬิกากับแต่ละเธรดการดำเนินการ/คำสั่ง หากยังไม่ได้รับการแก้ไขในขณะนั้น มันจะไปที่คิวและดำเนินการคำสั่งถัดไปในรายการ

โปรแกรม shader ไม่ได้ถูกคอมไพล์ในโค้ด เนื่องจาก ISA ภายในของแต่ละ GPU มีความแตกต่างกันอย่างมาก ผู้ควบคุมมีหน้าที่รวบรวมและบรรจุเธรดการดำเนินการที่แตกต่างกัน แต่โค้ดโปรแกรมมีหน้าที่จัดการ พวกเขา. . ดังนั้นจึงเป็นกระบวนทัศน์ที่แตกต่างจากวิธีที่ CPU ดำเนินการกระบวนการต่างๆ