การเร่งความเร็วฮาร์ดแวร์

การเร่งความเร็วด้วยฮาร์ดแวร์คือการใช้ฮาร์ดแวร์ของคอมพิวเตอร์ซึ่งเรียกว่าตัวเร่งความเร็วฮาร์ดแวร์เพื่อทำงานเฉพาะอย่างได้เร็วกว่าที่ซอฟต์แวร์ ซึ่งทำงานบน หน่วยประมวลผลกลาง (CPU) ทั่วไป จะทำได้ การแปลงข้อมูล ใดๆ ที่สามารถคำนวณได้ด้วยซอฟต์แวร์ที่ทำงานบน CPU ก็สามารถคำนวณได้ด้วยตัวเร่งความเร็วฮาร์ดแวร์ที่เหมาะสม หรือโดยการผสมผสานทั้งสองอย่าง
โดยทั่วไปแล้ว เพื่อให้การประมวลผลมีประสิทธิภาพมากขึ้น เราสามารถลงทุนเวลาและเงินในการปรับปรุงซอฟต์แวร์ ปรับปรุงฮาร์ดแวร์ หรือทั้งสองอย่าง มีวิธีการต่างๆ มากมาย ซึ่งแต่ละวิธีก็มีข้อดีและข้อเสียแตกต่างกันไป ในแง่ของการลดความหน่วงเพิ่มปริมาณงานและลดการใช้พลังงาน
ข้อดีโดยทั่วไปของการมุ่งเน้นไปที่ซอฟต์แวร์อาจรวมถึงความอเนกประสงค์ที่มากขึ้นการพัฒนา ที่รวดเร็วยิ่งขึ้น ต้นทุนด้านวิศวกรรมที่ไม่เกิดขึ้นประจำที่ต่ำลงความสามารถ ในการพกพาที่สูงขึ้น และความสะดวกในการอัปเดตคุณสมบัติหรือแก้ไขข้อบกพร่องโดยแลกมาด้วยค่าใช้จ่ายในการคำนวณการดำเนินงานทั่วไปที่ สูงขึ้น
ข้อดีของการมุ่งเน้นไปที่ฮาร์ดแวร์อาจรวมถึงความเร็วที่เพิ่มขึ้นการใช้พลังงาน ที่ลดลง [ 1 ]ความหน่วงที่ต่ำลงการทำงานแบบขนาน ที่เพิ่มขึ้น [ 2 ]และแบนด์วิดท์และการใช้พื้นที่และส่วนประกอบการทำงานที่มีอยู่บนวงจรรวมได้ อย่างมีประสิทธิภาพมากขึ้น โดยแลกกับความสามารถในการอัปเดตการออกแบบที่ลดลงเมื่อสลักลงบนซิลิคอน แล้ว และต้นทุนที่สูงขึ้นของการตรวจสอบการทำงานเวลาในการออกสู่ตลาด และความต้องการชิ้นส่วนที่มากขึ้น
ในลำดับชั้นของระบบประมวลผลดิจิทัล ตั้งแต่โปรเซสเซอร์ทั่วไปไปจนถึง ฮาร์ดแวร์ ที่ปรับแต่งได้อย่างเต็มที่จะมีการแลกเปลี่ยนระหว่างความยืดหยุ่นและประสิทธิภาพ โดยประสิทธิภาพจะเพิ่มขึ้นหลายเท่าตัวเมื่อแอปพลิเคชันใด ๆ ถูกนำไปใช้ในระดับที่สูงขึ้นในลำดับชั้นนั้น (นั่นคือ ไปสู่ปลายทางที่ปรับแต่งได้มากขึ้น) [ 3 ]ลำดับชั้นนี้รวมถึงโปรเซสเซอร์ทั่วไป เช่น CPU [ 4 ]โปรเซสเซอร์เฉพาะทางมากขึ้น เช่นshaders ที่ตั้งโปรแกรมได้ ในGPU [ 5 ]แอปพลิเคชันที่ใช้งานบนfield-programmable gate arrays (FPGAs) [ 6 ] และฟังก์ชันคงที่ที่ ใช้งานบนapplication-specific integrated circuits (ASICs) [ 7 ]
การเร่งความเร็วด้วยฮาร์ดแวร์มีข้อดีในด้านประสิทธิภาพและใช้งานได้จริงเมื่อฟังก์ชันคงที่ ดังนั้นจึงไม่จำเป็นต้องอัปเดตมากเท่ากับในโซลูชันซอฟต์แวร์ ด้วยการถือกำเนิดของอุปกรณ์ลอจิก ที่ตั้งโปรแกรม ใหม่ได้ เช่น FPGA ข้อจำกัดของการเร่งความเร็วด้วยฮาร์ดแวร์สำหรับอัลกอริทึมที่คงที่อย่างสมบูรณ์จึงผ่อนคลายลงตั้งแต่ปี 2010 ทำให้สามารถใช้การเร่งความเร็วด้วยฮาร์ดแวร์กับโดเมนปัญหาที่ต้องการการแก้ไขอัลกอริทึมและการควบคุมการไหล ของการประมวลผล ได้[ 8 ] [ 9 ]อย่างไรก็ตาม ข้อเสียคือในโครงการโอเพนซอร์สหลายโครงการ จำเป็นต้องใช้ไลบรารีที่เป็นกรรมสิทธิ์ซึ่งไม่ใช่ผู้จำหน่ายทุกรายที่เต็มใจจะแจกจ่ายหรือเปิดเผย ทำให้ยากต่อการรวมเข้ากับโครงการดังกล่าว
ภาพรวม
วงจรรวมถูกออกแบบมาเพื่อจัดการกับการทำงานต่างๆ ทั้งสัญญาณอนาล็อกและดิจิทัล ในด้านคอมพิวเตอร์ สัญญาณดิจิทัลเป็นสัญญาณที่พบได้บ่อยที่สุดและโดยทั่วไปจะแสดงในรูปเลขฐานสองฮาร์ดแวร์และซอฟต์แวร์ของคอมพิวเตอร์ใช้การแสดงผลเลขฐานสอง นี้ ในการคำนวณ โดยการประมวลผลฟังก์ชันบูลีนบนอินพุตเลขฐานสอง แล้วส่งผลลัพธ์ออกไปเพื่อจัดเก็บหรือประมวลผลเพิ่มเติมโดยอุปกรณ์อื่นๆ
ความเท่าเทียมกันเชิงคำนวณของฮาร์ดแวร์และซอฟต์แวร์
เนื่องจากเครื่องจักรทัวริง ทุกเครื่อง สามารถประมวลผลฟังก์ชันที่คำนวณได้ ทุกฟังก์ชัน จึงเป็นไปได้เสมอที่จะออกแบบฮาร์ดแวร์แบบกำหนดเองที่ทำงานเหมือนกับซอฟต์แวร์ที่กำหนด ในทางกลับกัน ซอฟต์แวร์ก็สามารถใช้เพื่อจำลองการทำงานของฮาร์ดแวร์ที่กำหนดได้เสมอ ฮาร์ดแวร์แบบกำหนดเองอาจให้ประสิทธิภาพต่อวัตต์สูงกว่าสำหรับฟังก์ชันเดียวกันกับที่ระบุไว้ในซอฟต์แวร์ภาษาสำหรับการอธิบายฮาร์ดแวร์ (HDL) เช่นVerilogและVHDL สามารถจำลอง ความหมายเดียวกันกับซอฟต์แวร์และสังเคราะห์การออกแบบเป็นเน็ตลิสต์ที่สามารถตั้งโปรแกรมลงใน FPGA หรือประกอบเป็นเกตตรรกะของ ASIC ได้
คอมพิวเตอร์แบบโปรแกรมที่จัดเก็บไว้
การประมวลผลด้วยซอฟต์แวร์ส่วนใหญ่เกิดขึ้นบนเครื่องที่ใช้สถาปัตยกรรมฟอน นอยมันน์ซึ่งเรียกรวมกันว่าคอมพิวเตอร์แบบจัดเก็บโปรแกรมโปรแกรมคอมพิวเตอร์ถูกจัดเก็บเป็นข้อมูลและประมวลผลโดยโปรเซสเซอร์โปรเซสเซอร์เหล่านี้ต้องดึงและถอดรหัสคำสั่ง รวมถึงโหลดตัวดำเนินการข้อมูลจากหน่วยความจำ (เป็นส่วนหนึ่งของวงจรคำสั่ง ) เพื่อประมวลผลคำสั่งที่ประกอบเป็นโปรแกรมซอฟต์แวร์ การพึ่งพาแคช ร่วมกัน สำหรับโค้ดและข้อมูลนำไปสู่ "คอขวดฟอน นอยมันน์" ซึ่งเป็นข้อจำกัดพื้นฐานเกี่ยวกับปริมาณงานของซอฟต์แวร์บนโปรเซสเซอร์ที่ใช้สถาปัตยกรรมฟอน นอยมันน์ แม้แต่ในสถาปัตยกรรมฮาร์วาร์ดที่ได้รับการปรับปรุงแล้วซึ่งคำสั่งและข้อมูลมีแคชแยกกันในลำดับชั้นของหน่วยความจำก็ยังมีค่าใช้จ่ายเพิ่มเติมในการถอดรหัสโอ เปอ เรเตอร์โค้ด ของคำสั่ง และการมัลติเพล็กซ์หน่วยประมวลผลที่มีอยู่บนไมโครโปรเซสเซอร์หรือไมโครคอนโทรลเลอร์ซึ่งนำไปสู่การใช้ประโยชน์จากวงจรต่ำ โปรเซสเซอร์สมัยใหม่ที่ให้ การทำงาน แบบมัลติเธรดพร้อมกันใช้ประโยชน์จากการใช้ประโยชน์จากหน่วยประมวลผลที่มีอยู่ไม่เต็มที่และความขนานในระดับคำสั่งระหว่างเธรดฮาร์ดแวร์ต่างๆ
หน่วยประมวลผลฮาร์ดแวร์
โดยทั่วไปแล้ว หน่วยประมวลผลฮาร์ดแวร์ไม่ได้อาศัยสถาปัตยกรรมแบบ von Neumann หรือ Harvard ที่ได้รับการดัดแปลง และไม่จำเป็นต้องดำเนินการขั้นตอนการดึงและถอดรหัสคำสั่งในวงจรคำสั่งและไม่ต้องเสียค่าใช้จ่ายเพิ่มเติมในขั้นตอนเหล่านั้น หากมีการระบุการคำนวณที่จำเป็นไว้ใน การออกแบบฮาร์ดแวร์ ระดับการถ่ายโอนรีจิสเตอร์ (RTL) ต้นทุนด้านเวลาและพื้นที่วงจรที่เกิดขึ้นจากขั้นตอนการดึงและถอดรหัสคำสั่งสามารถนำกลับมาใช้ใหม่และนำไปใช้ในด้านอื่น ๆ ได้
การนำทรัพยากรกลับมาใช้ใหม่นี้ช่วยประหยัดเวลา พลังงาน และพื้นที่วงจรในการคำนวณ ทรัพยากรที่นำกลับมาใช้ใหม่สามารถนำไปใช้สำหรับการคำนวณแบบขนานที่เพิ่มขึ้น ฟังก์ชันอื่นๆ การสื่อสาร หรือหน่วยความจำ ตลอดจนเพิ่มขีด ความสามารถ ในการรับส่งข้อมูล อย่างไรก็ตาม การนำทรัพยากรกลับมา ใช้ใหม่นี้แลกมาด้วยการลดประโยชน์ใช้สอยทั่วไปลง
สถาปัตยกรรมฮาร์ดแวร์ที่กำลังเกิดขึ้นใหม่
การปรับแต่ง RTL ที่มากขึ้นในการออกแบบฮาร์ดแวร์ช่วยให้สถาปัตยกรรมที่เกิดขึ้นใหม่ เช่น การประมวลผลในหน่วยความจำ ( in-memory computing) สถาปัตยกรรมที่กระตุ้นด้วยการส่งข้อมูล ( Transport Triggered Architectures : TTA) และเครือข่ายบนชิป (Networks-on-Chip : NoC) ได้รับประโยชน์มากขึ้นจากความใกล้ชิดของข้อมูลกับบริบทการทำงาน ซึ่งจะช่วยลดความหน่วงในการประมวลผลและการสื่อสารระหว่างโมดูลและหน่วยการทำงานต่างๆ
ฮาร์ดแวร์แบบกำหนดเองมีข้อจำกัดในความสามารถในการประมวลผลแบบขนานโดยพื้นที่และบล็อกตรรกะที่มีอยู่บนชิปวงจรรวมเท่านั้น[ 10 ]ดังนั้น ฮาร์ดแวร์จึงมีอิสระมากกว่าซอฟต์แวร์ในการนำเสนอการประมวลผลแบบขนาน จำนวนมาก บนโปรเซสเซอร์เอนกประสงค์ ซึ่งเปิดโอกาสให้สามารถนำ โมเดล เครื่องเข้าถึงแบบสุ่มขนาน (PRAM) มาใช้ได้
เป็นเรื่องปกติที่จะสร้าง หน่วยประมวลผล แบบมัลติคอร์และหลายคอร์จากแผนผัง IP core ของไมโครโปรเซสเซอร์บน FPGA หรือ ASIC ตัวเดียว[ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ]ในทำนองเดียวกัน หน่วยการทำงานเฉพาะทางสามารถประกอบแบบขนานได้ เช่นในการประมวลผลสัญญาณดิจิทัลโดยไม่ต้องฝังอยู่ในIP core ของโปรเซสเซอร์ ดังนั้น การเร่งความเร็วด้วยฮาร์ดแวร์จึงมักถูกนำมาใช้สำหรับงานที่ซ้ำซากและคงที่ซึ่งเกี่ยวข้องกับการแยกเงื่อนไข น้อย โดยเฉพาะอย่างยิ่งกับข้อมูลจำนวนมาก นี่คือวิธีการที่ GPU ตระกูล CUDAของNvidiaถูกนำไปใช้
ตัวชี้วัดการดำเนินการ
เนื่องจากความคล่องตัวของอุปกรณ์เพิ่มขึ้น จึงมีการพัฒนาตัวชี้วัดใหม่ๆ ที่วัดประสิทธิภาพสัมพัทธ์ของโปรโตคอลการเร่งความเร็วเฉพาะ โดยพิจารณาลักษณะต่างๆ เช่น มิติทางกายภาพของฮาร์ดแวร์ การใช้พลังงาน และปริมาณงาน ซึ่งสามารถสรุปได้เป็นสามประเภท ได้แก่ ประสิทธิภาพของงาน ประสิทธิภาพในการใช้งาน และความยืดหยุ่น ตัวชี้วัดที่เหมาะสมจะพิจารณาพื้นที่ของฮาร์ดแวร์ควบคู่ไปกับปริมาณงานและพลังงานที่ใช้ไป[ 16 ]
แอปพลิเคชัน
ตัวอย่างของการเร่งความเร็วฮาร์ดแวร์ ได้แก่ ฟังก์ชันการเร่งความเร็ว บิตบลิตในหน่วยประมวลผลกราฟิก (GPU) การใช้เมมริสเตอร์เพื่อเร่งความเร็วเครือข่ายประสาทและ การเร่งความเร็วฮาร์ดแวร์ นิพจน์ปกติสำหรับการควบคุมสแปมในอุตสาหกรรมเซิร์ฟเวอร์ ซึ่งมีจุดประสงค์เพื่อป้องกันการโจมตี ปฏิเสธการให้บริการนิพจน์ปกติ (ReDoS) [ 17 ] ฮาร์ดแวร์ที่ทำการเร่งความเร็วอาจเป็นส่วนหนึ่งของ CPU ทั่วไป หรือหน่วยแยกต่างหากที่เรียกว่าตัวเร่งความเร็วฮาร์ดแวร์ แม้ว่าโดยปกติแล้วจะมีการอ้างถึงด้วยคำ ที่เฉพาะเจาะจงกว่า เช่น ตัวเร่งความเร็ว 3 มิติ หรือตัวเร่งความเร็วการเข้ารหัส
โดยทั่วไปแล้ว โปรเซสเซอร์จะทำงานแบบเรียงลำดับ (คำสั่งจะถูกประมวลผลทีละคำสั่ง) และได้รับการออกแบบมาเพื่อรันอัลกอริทึมทั่วไปที่ควบคุมโดยการดึงคำสั่ง (ตัวอย่างเช่น การย้ายผลลัพธ์ชั่วคราวไปและกลับจากไฟล์รีจิสเตอร์ ) ตัวเร่งฮาร์ดแวร์ช่วยปรับปรุงการทำงานของอัลกอริทึมเฉพาะโดยอนุญาตให้ มี การทำงานพร้อมกัน มากขึ้น มีเส้นทางข้อมูล เฉพาะ สำหรับตัวแปรชั่วคราวและลดค่าใช้จ่ายในการควบคุมคำสั่งในวงจรการดึง-ถอดรหัส-ประมวลผล
โปรเซสเซอร์สมัยใหม่เป็นแบบมัลติคอร์และมักมีหน่วยประมวลผลแบบขนาน "คำสั่งเดียว ข้อมูลหลายชุด" ( SIMD ) หน่วยดังกล่าวสามารถรวมอยู่ในCPUหรือมีให้โดยส่วนประกอบเพิ่มเติม เช่นเอ็นจิ้น AI ของ AMD [ 18 ]ถึงกระนั้น การเร่งความเร็วด้วยฮาร์ดแวร์ก็ยังคงให้ประโยชน์ การเร่งความเร็วด้วยฮาร์ดแวร์เหมาะสำหรับอัลกอริทึมที่ต้องใช้การคำนวณอย่างหนักซึ่งดำเนินการบ่อยครั้งในงานหรือโปรแกรม ขึ้นอยู่กับความละเอียด การเร่งความเร็วด้วยฮาร์ดแวร์อาจแตกต่างกันไปตั้งแต่หน่วยการทำงานขนาดเล็กไปจนถึงบล็อกการทำงานขนาดใหญ่ (เช่นการประมาณการเคลื่อนไหวในMPEG-2 )
หน่วยเร่งความเร็วฮาร์ดแวร์ตามการใช้งาน
ดูเพิ่มเติม
- ซีจีอาร์เอ
- คอมพิวเตอร์สำหรับปฏิบัติการที่มีฟังก์ชันการทำงาน
- โคโปรเซสเซอร์
- การเร่งความเร็ววิดีโอ DirectX (DXVA)
- การเข้าถึงหน่วยความจำโดยตรง (DMA)
- การจำแนกประเภทสถาปัตยกรรมคอมพิวเตอร์แบบขนาน ของฟลินน์
- คำสั่งเดียว ข้อมูลหลายชุด (SIMD)
- คำสั่งเดียว หลายเธรด (SIMT)
- คำสั่งหลายชุด ข้อมูลหลายชุด (MIMD)
- การสังเคราะห์ระดับสูง
- ไมโครโปรเซสเซอร์แบบซอฟต์แวร์
- ลำดับเหตุการณ์ของฮาร์ดแวร์กราฟิกคอมพิวเตอร์ 3 มิติยุคแรก