ScholarGate
ผู้ช่วย

ส่วนขยายชุดคำสั่ง

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

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

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

Scope

หัวข้อนี้ครอบคลุมถึงวิธีการที่ชุดคำสั่งมีการพัฒนาเมื่อเวลาผ่านไปผ่านส่วนขยายที่เป็นทางเลือกหรือบังคับ: ส่วนขยาย SIMD และเวกเตอร์สำหรับการประมวลผลข้อมูลแบบขนาน, คำสั่งการเข้ารหัสและการจัดการบิต, พรีมิทีฟแบบอะตอมมิกและการซิงโครไนซ์, และรูปแบบส่วนขยายแบบโมดูลาร์ของ ISA เช่น RISC-V โดยจะกล่าวถึงเป้าหมายและข้อจำกัดของการขยาย ISA โดยไม่ทำให้เกิดปัญหาความเข้ากันได้ หัวข้อนี้ไม่รวมถึงฮาร์ดแวร์แบบขนานพื้นฐานที่ใช้ในการประมวลผลคำสั่งเหล่านี้ (โปรเซสเซอร์ SIMD และเวกเตอร์) และโครงสร้างการเข้ารหัสพื้นฐาน (รูปแบบคำสั่งและการเข้ารหัส)

Core questions

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

Key concepts

  • ส่วนขยาย SIMD
  • ส่วนขยายเวกเตอร์
  • คำสั่งการเข้ารหัส
  • คำสั่งอะตอมมิกและการซิงโครไนซ์
  • ส่วนขยายแบบโมดูลาร์และทางเลือก
  • ความเข้ากันได้แบบย้อนหลัง
  • การจัดการพื้นที่รหัสการทำงาน (opcode space)

Mechanisms

ส่วนขยายจะใช้พื้นที่รหัสการทำงาน (opcode space) ที่ยังไม่ได้ใช้งาน และกำหนดคำสั่ง รีจิสเตอร์ หรือสถานะใหม่ ซอฟต์แวร์จะตรวจจับส่วนขยายที่มีอยู่ขณะรันไทม์ (เช่น ผ่านแฟล็กคุณสมบัติ) และส่งไปยังเส้นทางโค้ดที่ได้รับการปรับปรุง ส่วนขยาย SIMD และเวกเตอร์จะเพิ่มรีจิสเตอร์แบบกว้างและการดำเนินการที่ใช้คำสั่งเดียวกับองค์ประกอบข้อมูลหลายรายการ; ISA แบบโมดูลาร์ เช่น RISC-V จะกำหนดมาตรฐานพื้นฐานขนาดเล็กและรายการส่วนขยายที่เป็นทางเลือกที่ผู้ใช้งานสามารถนำมาประกอบกันได้

Clinical relevance

ส่วนขยายเป็นวิธีการที่ชุดคำสั่งสามารถรองรับปริมาณงานใหม่ๆ ได้โดยไม่ต้องละทิ้งระบบนิเวศซอฟต์แวร์ของตน ตระกูล SIMD เช่น x86 SSE/AVX และ ARM NEON ช่วยเร่งความเร็วงานมัลติมีเดีย วิทยาศาสตร์ และการเรียนรู้ของเครื่อง; ส่วนขยายการเข้ารหัสช่วยเร่งความเร็วในการเข้ารหัส; และส่วนขยายแบบโมดูลาร์ช่วยให้ ISA เดียวกันสามารถปรับขนาดได้ตั้งแต่ไมโครคอนโทรลเลอร์ขนาดเล็กไปจนถึงซูเปอร์คอมพิวเตอร์

History

ส่วนขยาย SIMD เข้าสู่ CPU กระแสหลักในช่วงปลายทศวรรษ 1990 ด้วย Intel MMX และ SSE และต่อมาคือ AVX รวมถึง ARM NEON ส่วนขยายเฉพาะสำหรับการเข้ารหัส และล่าสุดคือการเรียนรู้ของเครื่องได้ตามมา ISA ของ RISC-V ซึ่งออกแบบมาตั้งแต่ต้นโดยมีพื้นฐานที่เรียบง่ายพร้อมส่วนขยายที่เป็นทางเลือกที่ได้มาตรฐาน ทำให้รูปแบบส่วนขยายแบบโมดูลาร์มีความชัดเจนและเป็นหัวใจสำคัญ

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Krste Asanović

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

โปรแกรมใช้ส่วนขยายที่โปรเซสเซอร์บางตัวไม่มีได้อย่างไร?
ซอฟต์แวร์จะตรวจจับขณะรันไทม์ว่าโปรเซสเซอร์รองรับส่วนขยายใดบ้าง โดยปกติจะทำได้โดยการสอบถามแฟล็กคุณสมบัติ และเลือกเส้นทางโค้ดที่ได้รับการปรับปรุงเมื่อมีส่วนขยาย หรือกลับไปใช้คำสั่งพื้นฐานหากไม่มี เพื่อรักษาความถูกต้องในการทำงานของฮาร์ดแวร์
RISC-V เป็นแบบโมดูลาร์หมายความว่าอย่างไร?
RISC-V กำหนดชุดคำสั่งจำนวนเต็มพื้นฐานที่บังคับขนาดเล็ก พร้อมด้วยชุดส่วนขยายที่เป็นทางเลือกที่ได้มาตรฐาน (สำหรับการคูณ, อะตอมมิก, จุดทศนิยม, เวกเตอร์ และอื่นๆ) การนำไปใช้งานจะรวมเฉพาะส่วนขยายที่จำเป็นเท่านั้น ดังนั้น ISA เดียวกันจึงสามารถครอบคลุมตั้งแต่คอร์ฝังตัวขนาดเล็กไปจนถึงโปรเซสเซอร์ประสิทธิภาพสูง

Methods for this concept

Related concepts