เราต้องการ xPU จำนวนมากจริง ๆ หรือไม่?

"ในช่วงไม่กี่ปีที่ผ่านมา มีการออกประกาศเกี่ยวกับสถาปัตยกรรมโปรเซสเซอร์ใหม่เกือบทุกวัน โดยมีตัวย่อสามตัวอักษร – TPU, IPU, NPU แต่อะไรทำให้พวกเขาแตกต่างจริงๆ? มีสถาปัตยกรรมโปรเซสเซอร์ที่มีเอกลักษณ์มากมายจริงๆ หรือมีอะไรเกิดขึ้นอีกไหม

"

ในช่วงไม่กี่ปีที่ผ่านมา มีการออกประกาศเกี่ยวกับสถาปัตยกรรมโปรเซสเซอร์ใหม่เกือบทุกวัน และได้รับอักษรย่อสามตัว-TPU, IPU, NPU แต่อะไรทำให้พวกเขาแตกต่างจริงๆ? มีสถาปัตยกรรมโปรเซสเซอร์ที่มีเอกลักษณ์มากมายจริงๆ หรือมีอะไรเกิดขึ้นอีกไหม

ในปี 2018 จอห์น แอล. เฮนเนสซีและเดวิด เอ. แพตเตอร์สัน บรรยายในหัวข้อ "ยุคทองใหม่ของสถาปัตยกรรมคอมพิวเตอร์" พวกเขากังวลเกี่ยวกับ CPU และการพัฒนา แต่นี่เป็นเพียงส่วนเล็ก ๆ ของสมการทั้งหมด Michael Frank นักวิจัยด้าน IP ของ Arteris และสถาปนิกระบบกล่าวว่า: "จากมุมมองของ CPU xPU เหล่านี้ส่วนใหญ่ไม่ใช่โปรเซสเซอร์จริง" “พวกมันเป็นเหมือน GPU มากกว่า ซึ่งเป็นตัวเร่งความเร็วสำหรับปริมาณงานพิเศษ และพวกเขามีความหลากหลายมากมายภายใน แมชชีนเลิร์นนิงคือตัวประมวลผลประเภทหนึ่ง คุณสามารถเรียกมันว่าตัวเร่งการเรียนรู้ของเครื่องจักรได้ แต่พวกมันเร่งส่วนการประมวลผลของส่วนต่างๆ ให้เร็วขึ้น”

สาระสำคัญของโปรเซสเซอร์สามารถต้มได้สามอย่าง “ในการวิเคราะห์ขั้นสุดท้าย มันจะกลับไปที่สถาปัตยกรรมชุดคำสั่ง (ISA)” Manuel Uhm ผู้อำนวยการฝ่ายการตลาดชิปของ Xilinx กล่าว “สิ่งนี้กำหนดสิ่งที่คุณต้องการทำ จากนั้น คุณมี I/O และหน่วยความจำ ซึ่งสนับสนุน ISA และงานที่พยายามทำให้สำเร็จ นี่จะเป็นช่วงเวลาที่น่าสนใจมากในอนาคต เพราะเราจะได้เห็นมากกว่าสองหรือสามปีที่ผ่านมา เวลาสำหรับนวัตกรรมและการเปลี่ยนแปลงที่มากขึ้น”

สถาปัตยกรรมใหม่จำนวนมากไม่ใช่โปรเซสเซอร์ตัวเดียว “สิ่งที่เราเห็นคือการรวมกันของโปรเซสเซอร์ประเภทต่างๆ หรือเอ็นจิ้นที่ตั้งโปรแกรมได้ซึ่งมีอยู่ใน SoC เดียวกันหรือระบบเดียวกัน” Pierre-Xavier Thomas ผู้อำนวยการกลุ่มของ Cadence กล่าว เทคโนโลยี และการตลาดเชิงกลยุทธ์ “กระจายงานซอฟต์แวร์ไปยังฮาร์ดแวร์ต่างๆ หรือเอ็นจิ้นที่ตั้งโปรแกรมได้แบบยืดหยุ่น โปรเซสเซอร์ทั้งหมดอาจแชร์ API ร่วมกัน แต่โดเมนการดำเนินการจะแตกต่างกัน ที่นี่คุณจะได้เห็นการประมวลผลประเภทต่างๆ พร้อมคุณสมบัติที่แตกต่างกัน”

ความจริงก็คือชื่อส่วนใหญ่เป็นการตลาด

“ประเด็นคือผู้คนใช้ชื่อและตัวย่อเหล่านี้เพื่อวัตถุประสงค์สองประการที่แตกต่างกัน” Simon Davidmann ซีอีโอของ Imperas Software กล่าว “อันหนึ่งใช้เพื่ออธิบายสถาปัตยกรรมของโปรเซสเซอร์ เช่น SIMD (Single Instruction Multiple Data) อีกส่วนกำหนดส่วนแอปพลิเคชันที่กำลังระบุ จึงสามารถกำหนดสถาปัตยกรรมโปรเซสเซอร์ หรือชื่อแบรนด์ของหน่วยประมวลผลเทนเซอร์ (TPU) พวกเขากำลังตั้งชื่อสถาปัตยกรรมที่แตกต่างกันหรือเป็นเนื้อเดียวกันไม่ใช่โปรเซสเซอร์แต่ละตัว”

ประวัติความเป็นมา

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

การเกิดขึ้นของ RISC-V ทำให้ ISA ได้รับความสนใจเป็นอย่างมาก Uhm ของ Xilinx กล่าวว่า "ผู้คนต้องการเข้าใจ ISA เพราะเป็น ISA ที่กำหนดว่าโปรเซสเซอร์ได้รับการปรับให้เหมาะสมสำหรับงานที่กำหนดไว้อย่างไร “พวกเขาสามารถดูที่ ISA และเริ่มรอบการคำนวณได้ หาก ISA มีคำสั่งดั้งเดิมและทำงานที่ 1 GHz ฉันสามารถเปรียบเทียบกับ ISA โปรเซสเซอร์อื่น ซึ่งอาจต้องใช้สองคำสั่งสำหรับฟังก์ชันเดียวกัน แต่โปรเซสเซอร์ทำงานที่ 1.5 GHz อันไหนที่ทำให้ฉันไปได้ไกลกว่ากัน? พวกเขาทำการคำนวณทางคณิตศาสตร์สำหรับหน้าที่ที่สำคัญ”

มีวิธีการบรรจุหลายวิธีสำหรับ CPU บางครั้ง IO หรือหน่วยความจำจะอยู่ในแพ็คเกจเดียวกัน เรียกว่าหน่วยไมโครคอนโทรลเลอร์ (MCU)

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

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

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

การพัฒนาที่สำคัญต่อไปคือหน่วยประมวลผลกราฟิก (GPU) ซึ่งผิดข้อตกลงเพราะแต่ละองค์ประกอบหรือไปป์ไลน์การประมวลผลมีหน่วยความจำของตัวเองและไม่สามารถแก้ไขได้นอกโปรเซสเซอร์ เนื่องจากหน่วยความจำมีจำกัด หมายความว่าไม่สามารถดำเนินการประมวลผลใดๆ ได้ตามอำเภอใจ แต่สามารถทำงานได้เฉพาะงานที่วางไว้ในพื้นที่หน่วยความจำที่ให้ไว้เท่านั้น

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

แม้ว่าจะมีการกำหนดตัวเร่งความเร็วอื่นๆ ไว้มากมาย แต่ GPU—และ GPU วัตถุประสงค์ทั่วไปในภายหลัง (GPGPU)—ได้กำหนดกระบวนทัศน์การเขียนโปรแกรมและสแต็กซอฟต์แวร์ที่ทำให้ใช้งานได้ง่ายกว่าตัวเร่งความเร็วรุ่นก่อน Davidmann แห่ง Imperas กล่าวว่า "เป็นเวลาหลายปีที่งานบางงานได้รับความเชี่ยวชาญ “มีซีพียูสำหรับโปรแกรมแบบต่อเนื่อง มีตัวประมวลผลกราฟิกที่เน้นการประมวลผลข้อมูลสำหรับ จอภาพ และนำเราไปสู่โลกคู่ขนานอย่างสูง ใช้องค์ประกอบการประมวลผลขนาดเล็กจำนวนมากเพื่อทำงาน ตอนนี้มีงานแมชชีนเลิร์นนิง”

กฎการก่อสร้างอื่นใดที่สามารถอธิบายสถาปัตยกรรมใหม่ทั้งหมดได้ ในอดีต อาร์เรย์ของโปรเซสเซอร์มักจะเชื่อมต่อกันด้วยหน่วยความจำหรือโทโพโลยีเครือข่ายแบบตายตัว (เช่น เมชหรือวงแหวน) สิ่งที่เพิ่งเกิดขึ้นคือการรวมกันของ Network on Chip (NoC) ซึ่งช่วยให้โปรเซสเซอร์ที่ต่างกันแบบกระจายสามารถสื่อสารได้อย่างยืดหยุ่นมากขึ้น ในอนาคตยังสามารถสื่อสารโดยไม่ต้องใช้หน่วยความจำ

“ในเวลานี้ NoC มีเพียงข้อมูลเท่านั้น” Frank of Arteris กล่าว “ในอนาคต NoC สามารถขยายไปยังพื้นที่อื่น ๆ ที่การสื่อสารระหว่างตัวเร่งความเร็วเป็นมากกว่าข้อมูล สามารถส่งคำสั่ง ส่งการแจ้งเตือน ฯลฯ ข้อกำหนดด้านการสื่อสารของอาเรย์คันเร่งอาจแตกต่างจากข้อกำหนดด้านการสื่อสารของ CPU หรือ SoC มาตรฐาน อย่างไรก็ตาม เครือข่ายบนชิปจะไม่จำกัดคุณไว้ในส่วนย่อย คุณสามารถเพิ่มประสิทธิภาพและปรับปรุงประสิทธิภาพโดยรองรับความต้องการด้านการสื่อสารพิเศษของตัวเร่งความเร็ว”

สถาปัตยกรรมการใช้งาน

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

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

ML ได้เพิ่มความต้องการของตนเอง “เมื่อใช้โครงข่ายประสาทเทียมและแมชชีนเลิร์นนิงเพื่อสร้างระบบอัจฉริยะ คุณต้องใช้เฟรมเวิร์กซอฟต์แวร์และสแต็กซอฟต์แวร์ทั่วไปเพื่อตั้งโปรแกรมเครือข่ายใหม่และแมปกับฮาร์ดแวร์” โทมัสกล่าวเสริม “จากนั้น คุณสามารถปรับแอปพลิเคชันซอฟต์แวร์ให้เข้ากับฮาร์ดแวร์ที่เหมาะสมจากมุมมองของ PPA สิ่งนี้ผลักดันความต้องการการประมวลผลและโปรเซสเซอร์ประเภทต่างๆ เพื่อให้สามารถตอบสนองความต้องการเหล่านี้ได้ในระดับฮาร์ดแวร์”

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

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

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

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

ส่วนหนึ่งของกระบวนการต้องมีการแบ่งพาร์ติชัน “ไม่มีโปรเซสเซอร์ประเภทใดที่สามารถปรับให้เหมาะสมกับแต่ละภารกิจของโปรเซสเซอร์ได้FPGA ไม่ดี CPU ไม่ดี GPU ไม่ดี DSP ก็จำเป็นเช่นกัน” อืมกล่าว “เราสร้างชุดอุปกรณ์ที่ประกอบด้วยสิ่งเหล่านี้ทั้งหมด แต่ส่วนที่ยากในฝั่งลูกค้าคือพวกเขาต้องให้ข้อมูลอัจฉริยะเพื่อกำหนดว่าส่วนใดของระบบโดยรวมจะถูกกำหนดเป้าหมายที่โปรเซสเซอร์หรือลอจิกที่ตั้งโปรแกรมได้หรือใน AI เครื่องยนต์ ทุกคนต้องการเครื่องมือวิเศษอัตโนมัตินั้น ซึ่งเป็นเครื่องมือที่สามารถตัดสินใจวางมันลงบน CPU ทันที วางบน FPGA และวางบน GPU เครื่องมือนั้นไม่มีอยู่ในปัจจุบัน”

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

เปลี่ยน “นามธรรม”

ในอดีต ISA กำหนดขอบเขตฮาร์ดแวร์/ซอฟต์แวร์ และหน่วยความจำสามารถระบุได้อย่างต่อเนื่อง เมื่อมีโปรเซสเซอร์หลายตัว พวกมันมักจะจัดวางหน่วยความจำ

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

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

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

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

สรุป

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

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

ในช่วงไม่กี่ปีที่ผ่านมา มีการออกประกาศเกี่ยวกับสถาปัตยกรรมโปรเซสเซอร์ใหม่เกือบทุกวัน โดยมีตัวย่อสามตัวอักษร – TPU, IPU, NPU แต่อะไรทำให้พวกเขาแตกต่างจริงๆ? มีสถาปัตยกรรมโปรเซสเซอร์ที่มีเอกลักษณ์มากมายจริงๆ หรือมีอะไรเกิดขึ้นอีกไหม

ในปี 2018 จอห์น แอล. เฮนเนสซีและเดวิด เอ. แพตเตอร์สัน บรรยายในหัวข้อ "ยุคทองใหม่ของสถาปัตยกรรมคอมพิวเตอร์" พวกเขากังวลเกี่ยวกับ CPU และการพัฒนา แต่นี่เป็นเพียงส่วนเล็ก ๆ ของสมการทั้งหมด Michael Frank นักวิจัยด้าน IP ของ Arteris และสถาปนิกระบบกล่าวว่า: "จากมุมมองของ CPU xPU เหล่านี้ส่วนใหญ่ไม่ใช่โปรเซสเซอร์จริง" “พวกมันเป็นเหมือน GPU มากกว่า ซึ่งเป็นตัวเร่งความเร็วสำหรับปริมาณงานพิเศษ และพวกเขามีความหลากหลายมากมายภายใน แมชชีนเลิร์นนิงคือตัวประมวลผลประเภทหนึ่ง คุณสามารถเรียกมันว่าตัวเร่งการเรียนรู้ของเครื่องจักรได้ แต่พวกมันเร่งส่วนการประมวลผลของส่วนต่างๆ ให้เร็วขึ้น”

สาระสำคัญของโปรเซสเซอร์สามารถต้มได้สามอย่าง “ในการวิเคราะห์ขั้นสุดท้าย มันจะกลับไปที่สถาปัตยกรรมชุดคำสั่ง (ISA)” Manuel Uhm ผู้อำนวยการฝ่ายการตลาดชิปของ Xilinx กล่าว “สิ่งนี้กำหนดสิ่งที่คุณต้องการทำ จากนั้น คุณมี I/O และหน่วยความจำ ซึ่งสนับสนุน ISA และงานที่พยายามทำให้สำเร็จ นี่จะเป็นช่วงเวลาที่น่าสนใจมากในอนาคต เพราะเราจะได้เห็นมากกว่าสองหรือสามปีที่ผ่านมา เวลาสำหรับนวัตกรรมและการเปลี่ยนแปลงที่มากขึ้น”

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

ความจริงก็คือชื่อส่วนใหญ่เป็นการตลาด

“ประเด็นคือผู้คนใช้ชื่อและตัวย่อเหล่านี้เพื่อวัตถุประสงค์สองประการที่แตกต่างกัน” Simon Davidmann ซีอีโอของ Imperas Software กล่าว “อันหนึ่งใช้เพื่ออธิบายสถาปัตยกรรมของโปรเซสเซอร์ เช่น SIMD (Single Instruction Multiple Data) อีกส่วนกำหนดส่วนแอปพลิเคชันที่กำลังระบุ จึงสามารถกำหนดสถาปัตยกรรมโปรเซสเซอร์ หรือชื่อแบรนด์ของหน่วยประมวลผลเทนเซอร์ (TPU) พวกเขากำลังตั้งชื่อสถาปัตยกรรมที่แตกต่างกันหรือเป็นเนื้อเดียวกันไม่ใช่โปรเซสเซอร์แต่ละตัว”

ประวัติความเป็นมา

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

การเกิดขึ้นของ RISC-V ทำให้ ISA ได้รับความสนใจเป็นอย่างมาก Uhm ของ Xilinx กล่าวว่า "ผู้คนต้องการเข้าใจ ISA เพราะเป็น ISA ที่กำหนดว่าโปรเซสเซอร์ได้รับการปรับให้เหมาะสมสำหรับงานที่กำหนดไว้อย่างไร “พวกเขาสามารถดูที่ ISA และเริ่มรอบการคำนวณได้ หาก ISA มีคำสั่งดั้งเดิมและทำงานที่ 1 GHz ฉันสามารถเปรียบเทียบกับ ISA โปรเซสเซอร์อื่น ซึ่งอาจต้องใช้สองคำสั่งสำหรับฟังก์ชันเดียวกัน แต่โปรเซสเซอร์ทำงานที่ 1.5 GHz อันไหนที่ทำให้ฉันไปได้ไกลกว่ากัน? พวกเขาทำการคำนวณทางคณิตศาสตร์สำหรับหน้าที่ที่สำคัญ”

มีวิธีการบรรจุหลายวิธีสำหรับ CPU บางครั้ง IO หรือหน่วยความจำจะอยู่ในแพ็คเกจเดียวกัน เรียกว่าหน่วยไมโครคอนโทรลเลอร์ (MCU)

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

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

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

การพัฒนาที่สำคัญต่อไปคือหน่วยประมวลผลกราฟิก (GPU) ซึ่งผิดข้อตกลงเพราะแต่ละองค์ประกอบหรือไปป์ไลน์การประมวลผลมีหน่วยความจำของตัวเองและไม่สามารถแก้ไขได้นอกโปรเซสเซอร์ เนื่องจากหน่วยความจำมีจำกัด หมายความว่าไม่สามารถดำเนินการประมวลผลใดๆ ได้ตามอำเภอใจ แต่สามารถทำงานได้เฉพาะงานที่วางไว้ในพื้นที่หน่วยความจำที่ให้ไว้เท่านั้น

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

แม้ว่าจะมีการกำหนดตัวเร่งความเร็วอื่นๆ ไว้มากมาย แต่ GPU—และ GPU วัตถุประสงค์ทั่วไปในภายหลัง (GPGPU)—ได้กำหนดกระบวนทัศน์การเขียนโปรแกรมและสแต็กซอฟต์แวร์ที่ทำให้ใช้งานได้ง่ายกว่าตัวเร่งความเร็วรุ่นก่อน Davidmann แห่ง Imperas กล่าวว่า "เป็นเวลาหลายปีที่งานบางงานได้รับความเชี่ยวชาญ “มีซีพียูสำหรับโปรแกรมแบบต่อเนื่อง มีตัวประมวลผลกราฟิกที่เน้นการประมวลผลข้อมูลสำหรับหน้าจอและนำเราไปสู่โลกคู่ขนานสูง ใช้องค์ประกอบการประมวลผลขนาดเล็กจำนวนมากเพื่อทำงาน ตอนนี้มีงานแมชชีนเลิร์นนิง”

กฎการก่อสร้างอื่นใดที่สามารถอธิบายสถาปัตยกรรมใหม่ทั้งหมดได้ ในอดีต อาร์เรย์ของโปรเซสเซอร์มักจะเชื่อมต่อผ่านหน่วยความจำหรือโทโพโลยีเครือข่ายแบบตายตัว (เช่น เมชหรือวงแหวน) สิ่งที่เพิ่งเกิดขึ้นคือการรวมกันของ Network on Chip (NoC) ซึ่งช่วยให้โปรเซสเซอร์ที่ต่างกันแบบกระจายสามารถสื่อสารในรูปแบบที่ยืดหยุ่นมากขึ้น ในอนาคตยังสามารถสื่อสารโดยไม่ต้องใช้หน่วยความจำ

“ในเวลานี้ NoC มีเพียงข้อมูลเท่านั้น” Frank of Arteris กล่าว “ในอนาคต NoC สามารถขยายไปยังพื้นที่อื่น ๆ ที่การสื่อสารระหว่างตัวเร่งความเร็วเป็นมากกว่าข้อมูล สามารถส่งคำสั่ง ส่งการแจ้งเตือน ฯลฯ ข้อกำหนดด้านการสื่อสารของอาเรย์คันเร่งอาจแตกต่างจากข้อกำหนดด้านการสื่อสารของ CPU หรือ SoC มาตรฐาน อย่างไรก็ตาม เครือข่ายบนชิปจะไม่จำกัดคุณไว้ในส่วนย่อย คุณสามารถเพิ่มประสิทธิภาพและปรับปรุงประสิทธิภาพโดยรองรับความต้องการด้านการสื่อสารพิเศษของตัวเร่งความเร็ว”

สถาปัตยกรรมการใช้งาน

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

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

ML ได้เพิ่มความต้องการของตนเอง “เมื่อใช้โครงข่ายประสาทเทียมและแมชชีนเลิร์นนิงเพื่อสร้างระบบอัจฉริยะ คุณต้องใช้เฟรมเวิร์กซอฟต์แวร์และสแต็กซอฟต์แวร์ทั่วไปเพื่อตั้งโปรแกรมเครือข่ายใหม่และแมปกับฮาร์ดแวร์” โทมัสกล่าวเสริม “จากนั้น คุณสามารถปรับแอปพลิเคชันซอฟต์แวร์ให้เข้ากับฮาร์ดแวร์ที่เหมาะสมจากมุมมองของ PPA สิ่งนี้ผลักดันความต้องการการประมวลผลและโปรเซสเซอร์ประเภทต่างๆ เพื่อให้สามารถตอบสนองความต้องการเหล่านี้ได้ในระดับฮาร์ดแวร์”

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

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

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

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

ส่วนหนึ่งของกระบวนการต้องมีการแบ่งพาร์ติชัน “ไม่มีโปรเซสเซอร์ประเภทใดที่สามารถปรับให้เหมาะสมกับงานโปรเซสเซอร์แต่ละตัวได้ – FPGA ไม่ดี, CPU ไม่ดี, GPU ไม่ดี, DSP ก็จำเป็นเช่นกัน” Uhm กล่าว “เราสร้างชุดอุปกรณ์ที่ประกอบด้วยสิ่งเหล่านี้ทั้งหมด แต่ส่วนที่ยากในฝั่งลูกค้าคือพวกเขาต้องให้ข้อมูลอัจฉริยะเพื่อกำหนดว่าส่วนใดของระบบโดยรวมจะถูกกำหนดเป้าหมายที่โปรเซสเซอร์หรือลอจิกที่ตั้งโปรแกรมได้หรือใน AI เครื่องยนต์ ทุกคนต้องการเครื่องมือวิเศษอัตโนมัตินั้น ซึ่งเป็นเครื่องมือที่สามารถตัดสินใจวางมันลงบน CPU ทันที วางบน FPGA และวางบน GPU เครื่องมือนั้นไม่มีอยู่ในปัจจุบัน”

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

เปลี่ยน “นามธรรม”

ในอดีต ISA กำหนดขอบเขตฮาร์ดแวร์/ซอฟต์แวร์ และหน่วยความจำสามารถระบุได้อย่างต่อเนื่อง เมื่อมีโปรเซสเซอร์หลายตัว พวกมันมักจะจัดวางหน่วยความจำ

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

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

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

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

สรุป

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

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