VISC สถาปัตยกรรม CPU แบบมัลติเธรดพร้อมคอร์เสมือน

VISC สถาปัตยกรรม CPU แบบมัลติเธรด

หากคุณติดตามโลกของไมโครโปรเซสเซอร์มาระยะหนึ่งแล้ว สิ่งที่แน่นอนที่สุดคือคุณจะคุ้นเคยกับคำย่อ RISC และ CISC ซึ่งไม่ใช่อะไรมากไปกว่าคำจำกัดความของโครงสร้างของชุดคำสั่งที่โปรเซสเซอร์จัดการ ในช่วงไม่กี่ปีที่ผ่านมากระบวนทัศน์ใหม่ได้รับการขนานนามว่า VISC ประกอบด้วยอะไรบ้าง?

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

VISC เป็นชุดคำสั่งหรือไม่?

ขุมทรัพย์

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

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

สงครามระหว่าง RISC และ CISC จึงเป็นฝ่ายชนะในสมัยก่อน แต่ด้วยกับดักที่ x86 ซึ่งเป็นสถาปัตยกรรม CISC ที่ใช้กันอย่างแพร่หลายที่สุด ได้สร้างกับดักของพฤติกรรมภายในเหมือน RISC จนถึงทุกวันนี้ ยกเว้น ARM, ISA RISC ส่วนที่เหลือหายไปหรือใกล้จะหายสาบสูญ ยิ่งไปกว่านั้น แม้แต่ ARM ยังได้นำแนวคิดเรื่องการแบ่งคำสั่งออกเป็นคำสั่งที่ง่ายกว่า ดังนั้นกระบวนทัศน์ทั้งสองนอกการกำหนด ISA ทั่วไปของครอบครัวจึงสูญพันธุ์ไปแล้ว

กฎหมายของ Amdahl

เลย์ เดอ อัมดาห์ล

เพื่อให้เข้าใจโปรแกรม เราต้องเข้าใจว่าโปรแกรมมีสองส่วนที่แตกต่างกัน:

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

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

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

VISC และคอร์เสมือน

อาร์คิเทกตูรา VISC

เมื่อเราอธิบายทั้งหมดข้างต้นแล้ว เราสามารถอธิบายความหมายของตัวย่อ VISC ได้ ซึ่งคำจำกัดความคือคำตอบสำหรับคำถามต่อไปนี้: เมื่อสร้าง microinstructions ในขั้นตอนถอดรหัส มันทำงานไม่ได้หรือ ควบคู่ไปกับหลายคอร์แทนที่จะทำในสิ่งเดียวกัน?

คำตอบสำหรับคำถามเกี่ยวกับสถาปัตยกรรม VISC ซึ่งเปิดตัวครั้งแรกโดยบริษัท Soft Machines ในปี 2015 เพื่อเป็นแนวคิดในการปรับปรุงประสิทธิภาพของ CPU สตาร์ทอัพเล็กๆ นี้ถูกซื้อโดย อินเทล ในปี 2016 และพวกเขาก็ได้ทำงานเพื่อพัฒนาสถาปัตยกรรม VISC นับตั้งแต่นั้นมา มันทำงานอย่างไร? มันสามารถกำหนดได้ง่ายมาก: เธรดเดียวของการดำเนินการถูกส่งไปยัง Global Front End ของโปรเซสเซอร์ ซึ่งจะถูกแปลงเป็นหลาย ๆ อันที่ทำหน้าที่เดียวกันและทำงานแบบขนานและรันในคอร์เสมือน กระบวนการแปลงจะดำเนินการที่ระดับซอฟต์แวร์ผ่านเลเยอร์การแปล แต่เราต้องจำไว้ว่าสิ่งนี้อาจเป็นเรื่องง่ายๆ เหมือนกับไมโครคอนโทรลเลอร์ที่ทำการถ่ายโอนคำสั่ง

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

VISC และประสิทธิภาพ

เรนดิเมียนโต VISC

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

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

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

โปรเซสเซอร์เหล่านี้มีอยู่ในปัจจุบันหรือไม่?

ซีพียู VISC

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

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

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