อ่าน 12 นาที
สถาปัตยกรรมเชิงพื้นที่
ในวิทยาการคอมพิวเตอร์ สถาปัตยกรรมเชิงพื้นที่ เป็น สถาปัตยกรรมคอมพิวเตอร์ ประเภทหนึ่งที่ใช้ประโยชน์จากหน่วยประมวลผล (PE) จำนวนมากที่ประสานงานกันและสื่อสารกันโดยตรง เพื่อเรียกใช้...
สถาปัตยกรรมเชิงพื้นที่

ในวิทยาการคอมพิวเตอร์สถาปัตยกรรมเชิงพื้นที่ เป็น สถาปัตยกรรมคอมพิวเตอร์ประเภทหนึ่งที่ใช้ประโยชน์จากหน่วยประมวลผล (PE) จำนวนมากที่ประสานงานกันและสื่อสารกันโดยตรง เพื่อเรียกใช้เคอร์เนลที่สามารถขนานกันได้สูง อย่างรวดเร็วและมีประสิทธิภาพ คำว่า "เชิงพื้นที่" มาจากอินสแตนซ์ของหน่วยประมวลผลที่มักจัดเรียงเป็นอาร์เรย์หรือกริด ทั้งในเชิงตรรกะและการออกแบบซิลิคอน ภาระงานที่พบบ่อยที่สุดประกอบด้วยการคูณเมทริกซ์การคอนโวลูชันหรือโดยทั่วไปคือการหดตัวของเทนเซอร์ด้วยเหตุนี้ สถาปัตยกรรมเชิงพื้นที่จึงมักใช้ใน ตัว เร่งความเร็ว AI [ 1 ] [ 2 ]
เป้าหมายหลักของสถาปัตยกรรมเชิงพื้นที่คือการลดความหน่วงและการใช้พลังงานในการรันเคอร์เนลขนาดใหญ่มากโดยใช้ประโยชน์จากการประมวลผลแบบขนานที่ปรับขนาดได้และการใช้ข้อมูลซ้ำ พิจารณาเคอร์เนล กล่าวคือ ฟังก์ชันที่จะนำไปใช้กับอินพุตหลายรายการ ซึ่งแสดงเป็นลูป หนึ่งลูปหรือมากกว่านั้น หมายความว่าต้องกระจายการคำนวณระหว่างองค์ประกอบการประมวลผลในขณะที่ตรวจสอบให้แน่ใจว่า การพึ่งพาข้อมูลขององค์ประกอบเหล่านั้นอยู่ในองค์ประกอบเดียวกันหรืออยู่ในบริเวณเดียวกันขององค์ประกอบ[ 3 ] [ 4 ]
ในขณะที่สถาปัตยกรรมเชิงพื้นที่สามารถออกแบบหรือตั้งโปรแกรมเพื่อรองรับอัลกอริธึม ต่างๆ ได้ แต่ละภาระงานจะต้องถูกแมปไปยังองค์ประกอบการประมวลผลโดยใช้กระแสข้อมูล เฉพาะ การกำหนดรูปแบบการแมปเกี่ยวข้องกับการกำหนดการดำเนินการแต่ละรายการให้กับองค์ประกอบการประมวลผลและการจัดกำหนดการเคลื่อนย้ายข้อมูลที่ตามมา ทั้งหมดนี้ได้รับการปรับแต่งเพื่อเพิ่มความขนานของข้อมูลและการใช้ซ้ำให้ สูงสุด [ 5 ] [ 2 ]
สถาปัตยกรรมเชิงพื้นที่สามารถจำแนกได้เป็น โปรเซสเซอร์อาร์เรย์ SPMD (หรือฟังก์ชันเดียวหลายข้อมูล ) โดยที่องค์ประกอบการประมวลผลแต่ละตัวจะดำเนินการเดียวกันกับชุดย่อยของข้อมูลที่แตกต่างกัน แต่ยังคงตั้งโปรแกรมผ่านการแมปเดียว[ 6 ] สถาปัตยกรรมขององค์ประกอบการประมวลผลแต่ละตัวสามารถอยู่ในคลาส Flynn ใดก็ได้ โดยเฉพาะอย่างยิ่ง สถาปัตยกรรมเชิงพื้นที่เหมาะสำหรับแอปพลิเคชันที่มีการไหลของข้อมูลที่แสดงความสัมพันธ์ระหว่างผู้ผลิตและผู้บริโภค (เช่นการลดแบบขนาน ) หรือสามารถใช้ประโยชน์จากการแบ่งปันข้อมูลที่มีประสิทธิภาพระหว่างภูมิภาคของ PE [ 1 ]
โดยทั่วไป สถาปัตยกรรมเชิงพื้นที่สามารถพบได้ในฐานะตัวเร่งฮาร์ดแวร์ในระบบเฮเทอโรจีนัสภายใต้หมวดหมู่ที่กว้างกว่าของโปรเซสเซอร์หลายคอร์[ 7 ]
รายละเอียดการออกแบบ
องค์ประกอบหลักของสถาปัตยกรรมเชิงพื้นที่คืออาร์เรย์หลายมิติขององค์ประกอบการประมวลผล แต่ละองค์ประกอบการประมวลผลนั้นเรียบง่าย กล่าวคือหน่วยการทำงานแบบคูณและสะสมคอร์ที่ลดทอนหรือตรรกะเฉพาะแอปพลิเคชัน[ 4 ] จากนั้นองค์ประกอบการประมวลผลจะเชื่อมต่อกันและกับลำดับชั้นของหน่วยความจำผ่านบัสหรือเครือข่ายบนชิปหรือแม้แต่ ตรรกะ แบบอะซิงโครนัส [ 2 ] [ 8 ] ลำดับ ชั้นของหน่วยความจำได้รับการจัดการอย่างชัดเจนและอาจประกอบด้วยบัฟเฟอร์ บนชิปหลายตัว เช่นไฟล์รีจิสเตอร์แผ่นสแครชแพดและFIFO ซึ่งได้รับการสนับสนุนโดย DRAMนอกชิปขนาดใหญ่และ หน่วยความจำ แบบไม่ระเหย[ 1 ]
จำนวนองค์ประกอบการประมวลผล แบนด์วิดท์การเชื่อมต่อ และปริมาณหน่วยความจำบนชิปจะแตกต่างกันอย่างมากระหว่างการออกแบบและแอปพลิเคชันเป้าหมาย ตั้งแต่องค์ประกอบการประมวลผลหลายพันตัวและหน่วยความจำ หลายสิบ เมกะไบต์ สำหรับ การประมวลผลประสิทธิภาพสูง[ 9 ]ไปจนถึงองค์ประกอบหลายสิบตัวและหน่วยความจำเพียงไม่กี่กิโลไบต์สำหรับอุปกรณ์ปลายทาง[ 10 ]
ตัวชี้วัดประสิทธิภาพหลักของสถาปัตยกรรมเชิงพื้นที่คือพลังงานที่ใช้และเวลาแฝงเมื่อรันเวิร์กโหลดที่กำหนด[ 7 ] เนื่องจาก ข้อจำกัด ด้านเทคโนโลยีและแบนด์วิดท์พลังงานและเวลาแฝงที่จำเป็นในการเข้าถึงหน่วยความจำขนาดใหญ่ เช่น DRAM จึงมีอิทธิพลเหนือการคำนวณ โดยมากกว่าที่จำเป็นสำหรับการจัดเก็บข้อมูลใกล้กับหน่วยประมวลผลหลายร้อยเท่า[ 11 ] [ 12 ] นั่นเป็นเหตุผลที่ลำดับชั้นของหน่วยความจำของสถาปัตยกรรมเชิงพื้นที่มีจุดประสงค์เพื่อจำกัดการเข้าถึงค่าที่ซ้ำกันส่วนใหญ่ไว้ในหน่วยความจำบนชิปที่เร็วและมีประสิทธิภาพมากขึ้น โดยใช้การนำข้อมูลกลับมาใช้ใหม่เพื่อลดการเข้าถึงที่มีต้นทุนสูง[ 4 ]
การนำข้อมูลกลับมาใช้ใหม่

กลไกที่ช่วยให้สามารถนำกลับมาใช้ใหม่ได้ในสถาปัตยกรรมเชิงพื้นที่ ได้แก่มัลติแคสต์และการลดขนาดการนำกลับมาใช้ใหม่สามารถจำแนกได้อีกเป็นแบบเชิงพื้นที่และเชิงเวลา การเชื่อมต่อของสถาปัตยกรรมเชิงพื้นที่สามารถรองรับมัลติแคสต์เชิงพื้นที่ได้ โดยการอ่านค่าจากหน่วยความจำภายนอกหนึ่งครั้งจะถูกนำไปใช้สำหรับการเขียนหลายครั้งไปยังอินสแตนซ์ภายใน และการลดขนาดเชิงพื้นที่ ซึ่งการอ่านจากหน่วยความจำภายในจะถูกสะสมไว้ในการเขียนภายนอกเพียงครั้งเดียว[ 13 ] สิ่งเหล่านี้สามารถนำไปใช้ได้ด้วยการส่งต่อแบบองค์ประกอบต่อองค์ประกอบโดยตรง เช่น ในอาร์เรย์ซิสโตลิกหรือบนการเชื่อมต่อระหว่างการเข้าถึงหน่วยความจำ[ 7 ] การนำกลับมาใช้ใหม่เชิงเวลาเกิดขึ้นเมื่อค่าเดียวกันถูกเก็บไว้ในหน่วยความจำในขณะที่ถูกอ่าน (มัลติแคสต์) และ/หรืออัปเดตในตำแหน่งเดิม (ลดขนาด) หลายครั้งโดยไม่ต้องดึงค่าจากหน่วยความจำอื่นอีก[ 13 ]
พิจารณากรณีของเคอร์เนลที่สามารถคำนวณได้ด้วยองค์ประกอบการประมวลผลแบบขนานคล้ายALUเช่น การคูณเมทริกซ์และการคอนโวลูชัน การสื่อสารโดยตรงระหว่างองค์ประกอบการประมวลผลสามารถใช้ได้อย่างมีประสิทธิภาพสำหรับการส่งผ่านผลรวมย่อยเพื่อให้ได้การสะสมแบบกระจายตามพื้นที่ หรือการแบ่งปันข้อมูลอินพุตเดียวกันสำหรับการคำนวณแบบขนานโดยไม่ต้องเข้าถึงหน่วยความจำภายนอกซ้ำๆ[ 14 ]
ปริมาณการใช้ข้อมูลซ้ำที่สามารถใช้ประโยชน์ได้นั้นเป็นคุณสมบัติของเคอร์เนลที่กำลังทำงานอยู่ และสามารถอนุมานได้จากการวิเคราะห์การพึ่งพาข้อมูลเมื่อเคอร์เนลสามารถแสดงเป็นลูปซ้อนกันการใช้ซ้ำจะเกิดขึ้นจากการวนซ้ำที่ตามมาซึ่งเข้าถึงค่าเดียวกันบางส่วน การทับซ้อนนี้เป็นรูปแบบหนึ่งของการเข้าถึงเฉพาะที่และก่อให้เกิดโอกาสในการใช้ซ้ำสำหรับสถาปัตยกรรมเชิงพื้นที่ซึ่งมักเรียกว่า "ความคงที่" [ 15 ] [ 1 ] สำหรับเคอร์เนลที่แสดงการแปลงเชิงเส้นของดัชนี เช่นการสังเคราะห์และโดยทั่วไปแล้วรูปแบบสเตนซิลการทับซ้อนบางส่วนที่เกิดขึ้นจากหน้าต่างเลื่อนของการคำนวณยังก่อให้เกิดโอกาสในการใช้ซ้ำ ซึ่งเรียกว่า "โซนผี" หรือ "รัศมี" [ 16 ]
โดยธรรมชาติแล้ว สถาปัตยกรรมเชิงพื้นที่จะมีประสิทธิภาพมากขึ้นเมื่อมีโอกาสในการนำกลับมาใช้ใหม่มากขึ้น ในขณะเดียวกัน ทรัพยากรฮาร์ดแวร์ที่จำกัดหมายความว่าไม่สามารถใช้ประโยชน์จากโอกาสทั้งหมดได้ในคราวเดียว จึงจำเป็นต้องมีการวางแผนการคำนวณอย่างเหมาะสมเพื่อใช้ประโยชน์จากโอกาสที่มีประสิทธิภาพมากที่สุด[ 5 ]
การคำนวณแผนที่
ในการรันเคอร์เนลบนสถาปัตยกรรมเชิงพื้นที่จำเป็นต้องสร้างแผนที่ซึ่งระบุรายละเอียดว่าการดำเนินการจะดำเนินไปอย่างไร การแมปภาระงานไปยังสถาปัตยกรรมเชิงพื้นที่จำเป็นต้องผูกการคำนวณแต่ละรายการเข้ากับองค์ประกอบการประมวลผล จากนั้นจึงกำหนดตาราง เวลา ทั้งการคำนวณและการเคลื่อนย้ายข้อมูลที่จำเป็นเพื่อรองรับการคำนวณเหล่านั้น[ 17 ] การเลือกแผนที่ที่ดีเป็นสิ่งสำคัญในการเพิ่มประสิทธิภาพสูงสุด[ 5 ] จุดเริ่มต้นของแผนที่คือการแสดงโครงสร้างลูปซ้อนกัน ของเคอร์เนล เพื่อใช้ประโยชน์จากความขนานและการใช้ข้อมูลซ้ำพร้อมกัน การวนซ้ำจะต้องถูกแบ่งระหว่างองค์ประกอบการประมวลผลในขณะที่ดูแลให้ การพึ่งพาข้อมูลระหว่างการวนซ้ำได้รับการจัดการโดยองค์ประกอบเดียวกันหรือกลุ่มขององค์ประกอบ[ 3 ]

เพื่อเป็นตัวอย่างประกอบ ตัวอย่างการแมปต่อไปนี้เน้นที่การคูณเมทริกซ์ แต่ทุกอย่างยังคงสามารถนำไปใช้กับเคอร์เนลแบบขนานข้อมูล ใดๆ ก็ได้ การเลือกนี้เกิดจากข้อเท็จจริงที่ว่างานส่วนใหญ่เกี่ยวกับสถาปัตยกรรมเชิงพื้นที่มุ่งเน้นไปที่ การสนับสนุน เครือข่ายประสาทและการเพิ่มประสิทธิภาพที่เกี่ยวข้อง[ 18 ] [ 19 ] โปรดทราบว่าการขนานการคูณเมทริกซ์ที่คล้ายกันนี้ได้รับการกล่าวถึงในบริบทของระบบมัลติโปรเซสเซอร์ด้วย
สามารถสร้างแผนที่ทั้งหมดได้ผ่านการแปลงวนซ้ำสามครั้งของเคอร์เนลเดิม: [ 20 ]
- การจัดเรียงลูป (หรือการแบ่งบล็อก ) ส่งผลให้ได้ เมทริกซ์บล็อกที่มีขนาดเล็กลงเรื่อยๆซึ่งสามารถจัดเก็บในหน่วยความจำภายในได้ กระบวนการนี้จะทำซ้ำสำหรับหน่วยความจำทุกตัวในลำดับชั้น โดยแต่ละตัวจะสร้างสำเนาซ้อนกันของลูปดั้งเดิม ในช่วงเวลาใดๆ ระหว่างการทำงาน หน่วยความจำแต่ละตัวจะต้องการจัดเก็บเฉพาะข้อมูลที่จำเป็นสำหรับการวนซ้ำในสำเนาของลูปและหน่วยความจำภายในเท่านั้น
- การประมวลผลแบบขนานคล้ายกับการแบ่งส่วนย่อย แต่ส่วนย่อยต่างๆ จะถูกประมวลผลพร้อมกันบนหน่วยประมวลผลหลายตัว แทนที่จะประมวลผลตามลำดับ
- การจัดลำดับการคำนวณลูปสามารถจัดลำดับใหม่ได้อย่างอิสระภายในแต่ละสำเนาของลูปซ้อนกันเดิม การเปลี่ยนแปลงนี้จะส่งผลต่อรูปแบบการเข้าถึงข้อมูล ทำให้ค่าเดียวกันถูกใช้ในรอบการทำงานที่ต่อเนื่องกันเปลี่ยนไป ทั้งในแง่ของเวลาและวิธีการใช้งาน
แต่ละระดับของลำดับชั้นหน่วยความจำมีหน้าที่ในการดำเนินการตามรอบการทำงานที่ได้รับมอบหมาย หลังจากการประมวลผลแบบขนานแล้ว องค์ประกอบการประมวลผลแต่ละตัวจะรันลูปภายในเดียวกันบนข้อมูลที่แตกต่างกันบางส่วน การใช้ข้อมูลซ้ำเป็นสิ่งที่แฝงอยู่ในรูปแบบนี้ การแบ่งส่วนช่วยให้สามารถใช้ข้อมูลซ้ำในเชิงเวลาได้ ในขณะที่การประมวลผลแบบขนานช่วยให้สามารถใช้ข้อมูลซ้ำในเชิงพื้นที่ได้ สุดท้าย ลำดับของการคำนวณจะเป็นตัวกำหนดว่าค่าใดบ้างที่สามารถนำกลับมาใช้ซ้ำได้จริง[ 3 ] [ 13 ]
ในตัวอย่างนี้ ลองพิจารณาสถาปัตยกรรมเชิงพื้นที่ที่ประกอบด้วยหน่วยความจำชั่วคราวขนาดใหญ่ที่เก็บตัวดำเนินการทั้งหมด และอาร์เรย์ของ หน่วยประมวลผล ขนาด 16x16แต่ละหน่วยมีไฟล์รีจิสเตอร์ขนาดเล็กและหน่วยคูณและสะสม จากนั้น ให้แกนหลักดั้งเดิมเป็นการคูณเมทริกซ์นี้:
M , K , N = 128 , 64 , 256 สำหรับm ใน[ 0 : M ): สำหรับk ใน[ 0 : K ): สำหรับn ใน[ 0 : N ): Out [ m ][ n ] += W [ m ][ k ] * In [ k ][ n ]การแมปแบบสมบูรณ์ ซึ่งมีเคอร์เนลแบบเรียงต่อกันและขนานกัน รวมถึงการไหลของข้อมูลที่ระบุไว้อย่างครบถ้วน สามารถเขียนได้ดังนี้ การวนซ้ำที่กระจายไปยังหน่วยประมวลผลเพื่อทำงานพร้อมกันจะถูกทำเครื่องหมายด้วยpfor:
# ================ หน่วยความจำภายนอก ================= สำหรับm_mem ใน[ 0 : 8 ): สำหรับk_mem ใน[ 0 : 1 ): สำหรับn_mem ใน[ 0 : 16 ): # ========= ข้ามหน่วยประมวลผล ========== สำหรับm_par ใน[ 0 : 16 ): สำหรับk_par ใน[ 0 : 16 ): # ========= ภายในหน่วยประมวลผล ========== สำหรับn_pe ใน[ 0 : 16 ): สำหรับm_pe ใน[ 0 : 1 ): สำหรับk_pe ใน[ 0 : 4 ): m = m_mem * 16 + m_par + m_pe k = k_mem * 16 * 4 + k_par * 4 + k_pe n = n_mem * 16 + n_pe Out [ m ][ n ] += W [ m ][ k ] * In [ k ][ n ]การนำข้อมูลชั่วคราวกลับมาใช้ใหม่สามารถสังเกตได้ในรูปแบบของความคงที่ โดยที่เอาต์พุตจะสะสมอยู่ในตำแหน่งเดิมระหว่างk_peการวนซ้ำ และน้ำหนักจะคงที่ระหว่างn_memการวนซ้ำ การนำข้อมูลเชิงพื้นที่กลับมาใช้ใหม่เกิดขึ้นจากการลดเอาต์พุตลงk_parและการกระจายอินพุตไปทั่วm_parแต่ละองค์ประกอบการประมวลผลจะเห็นไทล์น้ำหนักที่ไม่ซ้ำกัน ในขณะที่อนุมานโอกาสในการนำกลับมาใช้ใหม่ที่ใช้โดยการแมป ลูปใดๆ ที่มีการวนซ้ำเพียงครั้งเดียวจะต้องถูกละเลย ในขณะที่สำหรับตัวดำเนินการแต่ละตัว จะต้องพิจารณาเฉพาะลูปที่มีผลต่อมิติของมันเท่านั้น[ 15 ]
การเพิ่มประสิทธิภาพการทำแผนที่
จำนวนการแมปที่เป็นไปได้ที่สามารถทำได้นั้นแตกต่างกันไปตามฮาร์ดแวร์เป้าหมาย แต่แทบจะไม่น้อยกว่าพันล้าน เนื่องจากมีชุดค่าผสมที่เป็นไปได้จำนวนมากที่เกิดจากการตัดสินใจข้างต้น[ 21 ] ด้วยเหตุนี้ การค้นหาชุดการแปลงที่ดีที่สุดที่ให้การใช้ข้อมูลซ้ำสูงสุด และด้วยเหตุนี้จึงมีความหน่วงแฝงในการทำงานและการใช้พลังงานต่ำที่สุดสำหรับสถาปัตยกรรมเชิงพื้นที่และเคอร์เนล จึงเป็นปัญหาการเพิ่มประสิทธิภาพ ที่ ท้าทาย[ 17 ] [ 22 ] [ 19 ]
การออกแบบสถาปัตยกรรมเชิงพื้นที่ส่วนใหญ่ได้รับการพัฒนาควบคู่ไปกับเทคนิคการทำแผนที่ที่ปรับแต่ง[ 1 ] อย่างไรก็ตาม ความซับซ้อนของปัญหานี้กระตุ้นให้เกิดการพัฒนาเครื่องมือทำแผนที่เฉพาะที่สามารถใช้งานได้กับสถาปัตยกรรมเชิงพื้นที่หลากหลายรูปแบบ และใช้หลักการเชิงฮิวริสติก ทั่วไป ที่สามารถค้นหาแผนที่ที่ดีได้อย่างสม่ำเสมอภายในเวลาที่เหมาะสม[ 5 ] เทคนิคที่นำมาใช้กับปัญหานี้ได้สำเร็จ ได้แก่: [ 7 ]
- การค้นหาแบบตัดแต่งเนื่องจากแผนที่จำนวนมากให้พฤติกรรมที่เหมือนกัน จึงสามารถตัดแต่งแผนที่ที่ซ้ำซ้อนได้ (เช่น ลูปการจัดลำดับใหม่ด้วยการวนซ้ำเพียงครั้งเดียว) จากนั้น การค้นหาแบบสุ่มมักจะสามารถค้นหาแผนที่ที่ดีได้[ 5 ] [ 22 ]
- อัลกอริทึมทางพันธุกรรมถูกนำมาใช้เพื่อปรับปรุงชุดการแมปแบบสุ่มที่หลากหลายในเบื้องต้นโดยการย้ายการแปลงลูปที่ประสบความสำเร็จมากที่สุดระหว่างกัน[ 20 ]
- การจำลองการอบอ่อนยังเริ่มต้นจากกลุ่มการแมปแบบสุ่ม โดยใช้การแปลงแบบสุ่มซ้ำๆ กับกลุ่มการแมปเหล่านั้น การแปลงแต่ละครั้งจะถูกเก็บรักษาไว้ด้วยความน่าจะเป็นที่แปรผันตรงกับการปรับปรุงประสิทธิภาพ และแปรผันผกผันกับเวลาที่ผ่านไปนับตั้งแต่เริ่มการสำรวจ[ 23 ]
- การเขียนโปรแกรมจำนวนเต็มสามารถนำไปใช้ได้โดยการปรับเปลี่ยนปัญหาการกำหนดการวนซ้ำของเคอร์เนลให้กับลูปต่างๆ และจัดลำดับใหม่ให้เป็นปัญหาการกำหนดทั่วไปจากนั้นจึงสามารถแก้ไขได้โดยใช้เครื่องมือเฉพาะ เช่นGurobi [ 17 ]
ตัวอย่าง
แพลตฟอร์มสถาปัตยกรรมเชิงพื้นที่
ในปี 1992 มีการเสนอ "เครื่องจักรเชิงพื้นที่" เป็นแนวทางในการคำนวณแบบขนาน[ 24 ] ในปี 2013 มีการเสนอมาตรฐานการเขียนโปรแกรมสำหรับ "การคำนวณเชิงพื้นที่" [ 25 ]นักวิทยาศาสตร์คอมพิวเตอร์ที่ETH Zurichได้เสนอแบบจำลอง "คอมพิวเตอร์เชิงพื้นที่" สำหรับการคำนวณแบบขนานที่มีประสิทธิภาพด้านพลังงาน[ 26 ] AMD อธิบายAMD XDNAว่าเป็น "สถาปัตยกรรม NPU แบบการไหลของข้อมูลเชิงพื้นที่" [ 27 ]
ASICซึ่งเป็นการออกแบบตัวเร่งฮาร์ดแวร์แบบกำหนดเองอย่างสมบูรณ์ เป็นรูปแบบที่พบได้บ่อยที่สุดในการพัฒนาสถาปัตยกรรมเชิงพื้นที่ ส่วนใหญ่เป็นเพราะ ASIC เข้ากันได้ดีกับเป้าหมายการออกแบบประสิทธิภาพของสถาปัตยกรรมเชิงพื้นที่[ 7 ]
FPGAสามารถมองได้ว่าเป็นสถาปัตยกรรมเชิงพื้นที่ที่มีความละเอียดสูงและมีความยืดหยุ่นสูง เช่นเดียวกับCGRA [ 1 ]อย่างไรก็ตามทั้งสอง ไม่ได้จำกัดอยู่เพียงแค่การปฏิบัติตามแบบแผนสถาปัตยกรรมเชิงพื้นที่เท่านั้น เพราะอาจสามารถกำหนดค่าใหม่เพื่อทำงานต่างๆ ได้เกือบทุกงาน ดังนั้นจึงควรพิจารณาว่าเป็นสถาปัตยกรรมเชิงพื้นที่ก็ต่อเมื่อตั้งค่าให้ทำงานในลักษณะนั้นเท่านั้น ในความเป็นจริง มีการพัฒนารูปแบบสถาปัตยกรรมเชิงพื้นที่หลายแบบเพื่อใช้งานบน FPGA [ 28 ] [ 19 ]
อาร์เรย์ซิสโตลิกเป็นรูปแบบหนึ่งของสถาปัตยกรรมเชิงพื้นที่ โดยใช้โครงข่ายของโหนดการคำนวณที่มีการเชื่อมต่อที่ตั้งโปรแกรมได้ ทำให้การคำนวณดำเนินไปพร้อมกับการเคลื่อนย้ายข้อมูลไปพร้อมกันจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง กราฟการไหลของการคำนวณของอาร์เรย์ซิสโตลิกจะสอดคล้องกับpforการแมปสถาปัตยกรรมเชิงพื้นที่ โดยธรรมชาติ [ 29 ]
อาร์เรย์อะซิงโครนัสของโปรเซสเซอร์แบบง่ายเป็นต้นแบบของสถาปัตยกรรมเชิงพื้นที่ตาม แบบแผน MIMDและมุ่งเป้าไปที่ภาระงานการประมวลผลสัญญาณดิจิทัล[ 1 ] [ 30 ]
สถาปัตยกรรมดาต้าโฟลว์ยังเป็นต้นแบบของสถาปัตยกรรมเชิงพื้นที่ในฐานะ แนวทาง ทั่วไปในการใช้ประโยชน์จากความขนานกันในหน่วยการทำงานหลายหน่วย โดยจะรันโปรแกรมโดยเริ่มการคำนวณแต่ละครั้งทันทีที่การพึ่งพาข้อมูลเป็นไปตามเงื่อนไขและฮาร์ดแวร์ที่ต้องการพร้อมใช้งาน สถาปัตยกรรมเชิงพื้นที่ทำให้แนวคิดนี้ง่ายขึ้นโดยการกำหนดเป้าหมายไปที่เคอร์เนลเฉพาะ แทนที่จะขับเคลื่อนการดำเนินการตามความพร้อมของข้อมูล สถาปัตยกรรมเหล่านี้จะใช้การพึ่งพาข้อมูลของเคอร์เนลแบบคงที่เพื่อกำหนดดาต้าโฟลว์ของสถาปัตยกรรมทั้งหมดก่อนการดำเนินการผ่านการแมป[ 5 ]
ไม่ใช่สถาปัตยกรรมเชิงพื้นที่
ตัวประมวลผลสัญญาณดิจิทัลเป็นตัวประมวลผลเฉพาะทางที่มีเส้นทางข้อมูลแบบกำหนดเองเพื่อดำเนินการคำนวณทางคณิตศาสตร์หลายอย่างได้อย่างรวดเร็ว พร้อมกัน และซ้ำๆ บนชุดตัวอย่างข้อมูล แม้จะมีเคอร์เนลเป้าหมายที่เหมือนกัน แต่ตัวประมวลผลสัญญาณดิจิทัลตัวเดียวก็ไม่ใช่สถาปัตยกรรมเชิงพื้นที่ เนื่องจากขาดความขนานเชิงพื้นที่โดยธรรมชาติเหนืออาร์เรย์ขององค์ประกอบการประมวลผล อย่างไรก็ตาม ตัวประมวลผลสัญญาณดิจิทัลสามารถพบได้ใน FPGA และ CGRA ซึ่งอาจเป็นส่วนหนึ่งของการออกแบบสถาปัตยกรรมเชิงพื้นที่ขนาดใหญ่ที่สร้างขึ้น[ 19 ]
Tensor Coreที่มีอยู่ในGPU ของ Nvidiaตั้งแต่ซีรีส์ Volta แม้ว่าจะเร่งความเร็วการคูณเมทริกซ์ แต่ก็ไม่ได้จัดเป็นสถาปัตยกรรมเชิงพื้นที่เช่นกัน เนื่องจากเป็นหน่วยการทำงานแบบฮาร์ดแวร์ที่ไม่แสดงคุณสมบัติเชิงพื้นที่ด้วยตัวเอง อีกทั้งมัลติโปรเซสเซอร์แบบสตรีมมิ่งที่มี Tensor Core หลายตัว ก็ไม่ใช่สถาปัตยกรรมเชิงพื้นที่ แต่เป็นตัวอย่างของSIMTเนื่องจากมีการแบ่งปันการควบคุมระหว่างเธรด GPU หลายเธรด[ 7 ]
สถาปัตยกรรมเชิงพื้นที่ที่เกิดขึ้นใหม่หรือแหวกแนว
การประมวลผลในหน่วยความจำเสนอให้ทำการคำนวณกับข้อมูลโดยตรงภายในหน่วยความจำที่จัดเก็บไว้ เป้าหมายคือการปรับปรุงประสิทธิภาพและความหนาแน่นของการคำนวณโดยการลดการถ่ายโอนข้อมูลที่มีค่าใช้จ่ายสูงและนำฮาร์ดแวร์หน่วยความจำที่มีอยู่มาใช้ซ้ำ[ 31 ] ตัวอย่างเช่น ตัวดำเนินการหนึ่งตัวของการคูณเมทริกซ์สามารถจัดเก็บไว้ในหน่วยความจำ ในขณะที่อีกตัวหนึ่งค่อยๆ ถูกนำเข้ามา และหน่วยความจำเองก็สร้างผลลัพธ์สุดท้าย เมื่อมองแต่ละกลุ่มของเซลล์หน่วยความจำที่ทำการคำนวณระหว่างตัวดำเนินการที่จัดเก็บไว้และตัวดำเนินการที่เข้ามา เช่น การคูณ เป็นองค์ประกอบการประมวลผล ธนาคารหน่วยความจำที่สามารถประมวลผลในหน่วยความจำได้สามารถมองได้ว่าเป็นสถาปัตยกรรมเชิงพื้นที่ที่มีการไหลของข้อมูลที่กำหนดไว้ล่วงหน้า ความกว้างและความสูงของธนาคารก่อให้เกิดลักษณะpforเฉพาะ [ 32 ]
คอมพิวเตอร์เชิงปัญญาที่พัฒนาขึ้นเป็นส่วนหนึ่งของการวิจัยเกี่ยวกับระบบประสาทเทียมเป็นตัวอย่างของสถาปัตยกรรมเชิงพื้นที่ที่มุ่งเป้าไปที่การเร่งความเร็วของเครือข่ายประสาทแบบสไปค์องค์ประกอบการประมวลผลแต่ละอย่างเป็นแกนหลักที่จัดการเซลล์ประสาท หลายเซลล์ และไซแนปส์ ของพวกมัน โดยจะรับสไปค์ที่ส่งไปยังเซลล์ประสาทจากแกนหลักอื่นๆผสานรวมสไปค์เหล่านั้น และในที่สุดก็จะส่งต่อสไปค์ที่สร้างขึ้น แกนหลักเชื่อมต่อกันผ่านเครือข่ายบนชิปและโดยปกติจะทำงานแบบอะซิงโครนัส การแมปของพวกมันประกอบด้วยการกำหนดเซลล์ประสาทให้กับแกนหลักในขณะที่ลดระยะทางรวมที่สไปค์เดินทางให้น้อยที่สุด ซึ่งทำหน้าที่เป็นตัวแทนของพลังงานและเวลาแฝง [ 8 ] [ 33 ]
การนำไปใช้งานเฉพาะเจาะจง




สร้างหรือสร้างต้นแบบสถาปัตยกรรมเชิงพื้นที่ในฐานะตัวเร่งความเร็วอิสระ :
- Eyeriss : [ 1 ]ตัวเร่งการเรียนรู้เชิงลึกที่พัฒนาโดย ห้องปฏิบัติการ CSAILของMITโดยเฉพาะทีมของVivienne Sze และนำเสนอในปี 2016 โดยใช้พื้นที่เก็บข้อมูลชั่วคราวขนาด 108 KB และตารางองค์ประกอบการประมวลผล ขนาด 12x14แต่ละตารางมีไฟล์ลงทะเบียนขนาด 0.5 KB นอกจากนี้ยังมีการออกแบบ Eyeriss v2 [ 14 ]ซึ่งเป็นรุ่นต่อยอด โดยใช้การเชื่อมต่อแบบลำดับชั้นระหว่างองค์ประกอบการประมวลผลเพื่อชดเชยการขาดแบนด์วิดท์ในรุ่นดั้งเดิม
- DianNao : [ 10 ]กลุ่มของตัวเร่งการเรียนรู้เชิงลึกที่พัฒนาขึ้นที่ICTซึ่งมีทั้งแบบที่เน้นการประมวลผลแบบ Edge และแบบที่เน้นการประมวลผลประสิทธิภาพสูง สถาปัตยกรรมพื้นฐานใช้อาร์เรย์ที่ปรับเปลี่ยนได้ของตัวคูณตัวบวกและหน่วยการทำงานเฉพาะการเปิดใช้งาน เพื่อทำให้เลเยอร์ การเรียนรู้เชิงลึกส่วนใหญ่ ขนาน กัน
- Simba : [ 2 ] สถาปัตยกรรมเชิงพื้นที่ โมดูลมัลติชิปแบบทดลองที่พัฒนาโดยNvidiaแต่ละชิปมีหน่วยความจำประมาณ 110 KB และมีองค์ประกอบการประมวลผล 16 ตัว โดยแต่ละตัวมีหน่วยคูณและสะสมเวกเตอร์ที่สามารถทำการคูณแบบดอทโปรดักต์ระหว่างเวกเตอร์ 8 องค์ประกอบได้ มีการติดตั้งชิปสูงสุด6x6ในโมดูลเดียวกัน
- NVDLA : [ 34 ]อาร์เรย์องค์ประกอบการประมวลผลแบบพาราเมตริกมิติเดียวแบบโอเพ นซอร์สที่เชี่ยวชาญด้านคอนโวลูชัน พัฒนา โดย Nvidia
- หน่วยประมวลผลเทนเซอร์ (TPU): พัฒนาโดยGoogleและใช้งานภายในศูนย์ข้อมูลของ Google ตั้งแต่ปี 2015 เวอร์ชันแรกใช้อาร์เรย์ซิสโตลิกขนาดใหญ่256x256ที่สามารถประมวลผลได้ 92 TeraOps/วินาที และหน่วยความจำออนชิปขนาดใหญ่ 28 MB ที่จัดการด้วยซอฟต์แวร์[ 9 ]มีการพัฒนาเวอร์ชันต่อมาอีกหลายเวอร์ชันที่มีความสามารถเพิ่มขึ้น[ 12 ]
- TrueNorth : [ 8 ]ชิปนิวโรโมฟิกที่ผลิตโดยIBMในปี 2014 มีคอร์ 4096 คอร์ สามารถจัดการเซลล์ประสาทจำลองได้ 256 เซลล์ และไซแนปส์ 64,000 เซลล์ ไม่มีนาฬิกา สากล และคอร์ทำงานแบบขับเคลื่อนด้วยเหตุการณ์โดยใช้ตรรกะทั้งแบบซิงโครนัสและอะซิงโครนัส
สถาปัตยกรรมเชิงพื้นที่ที่ผสานรวมเข้ากับผลิตภัณฑ์หรือแพลตฟอร์ม ที่มีอยู่เดิม :
- Gemmini : [ 28 ] [ 29 ]ตัวเร่งการเรียนรู้เชิงลึกแบบอาร์เรย์ซิสโตลิกที่พัฒนาโดยUC Berkeley ซึ่งเป็นส่วนหนึ่งของ ระบบนิเวศRISC-Vแบบโอเพนซอร์ส[ 35 ]การกำหนดค่าพื้นฐานคือ อาร์เรย์ 16x16ที่มีหน่วยความจำ 512 KB และมีจุดประสงค์เพื่อควบคุมผ่านแกนที่เชื่อมต่อกันอย่างแน่นหนา
- AI Engine : [ 36 ]ตัวเร่งความเร็วที่พัฒนาโดยAMDและรวมอยู่ใน ผลิตภัณฑ์ Ryzen AI series ของพวกเขา โดยแต่ละองค์ประกอบการประมวลผลเป็น คอร์ VLIWที่รองรับSIMDซึ่งเพิ่มความยืดหยุ่นของสถาปัตยกรรมเชิงพื้นที่และทำให้สามารถใช้ประโยชน์จากความขนานของงานได้ เช่นกัน
ภาระงานที่แสดงให้ เห็นว่าทำงานบนสถาปัตยกรรมเชิงพื้นที่เหล่านี้ ได้แก่: AlexNet [ 1 ] ResNet [ 2 ] [ 28 ] BERT [ 21 ] [ 28 ]การคำนวณทางวิทยาศาสตร์[ 18 ]
ดูเพิ่มเติม
- ตัวประมวลผลสัญญาณดิจิทัล
- การเพิ่มประสิทธิภาพการซ้อนลูป
- โปรเซสเซอร์หลายคอร์
- หน่วยประมวลผลประสาท
- แบบจำลองโพลีโทป
- การประมวลผลแบบสมมาตรหลายตัว
- อาร์เรย์ซิสโตลิก
- หน่วยประมวลผลภาพ
อ่านเพิ่มเติม
- Sze, Vivienne; Chen, Yu-Hsin; Yang, Tien-Ju; Emer, Joel S. (2022). การประมวลผลโครงข่ายประสาทเทียมเชิงลึกอย่างมีประสิทธิภาพ . สำนักพิมพ์ Morgan & Claypool. ISBN 978-3-031-01766-7.
ลิงก์ภายนอก
- โครงการ Eyeriss (MIT)
- คู่มือเกี่ยวกับตัวเร่งความเร็วฮาร์ดแวร์สำหรับโครงข่ายประสาทเทียมเชิงลึก (MIT)
- ภาพรวม Timeloop/Accelergy
- Nvidia Research: ซิมบ้า
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ สถาปัตยกรรมเชิงพื้นที่
ในวิทยาการคอมพิวเตอร์ สถาปัตยกรรมเชิงพื้นที่ เป็น สถาปัตยกรรมคอมพิวเตอร์ ประเภทหนึ่งที่ใช้ประโยชน์จากหน่วยประมวลผล (PE) จำนวนมากที่ประสานงานกันและสื่อสารกันโดยตรง เพื่อเรียกใช้...
รายละเอียดการออกแบบ
องค์ประกอบหลักของสถาปัตยกรรมเชิงพื้นที่คืออาร์เรย์หลายมิติขององค์ประกอบการประมวลผล แต่ละองค์ประกอบการประมวลผลนั้นเรียบง่าย กล่าวคือ หน่วยการทำงาน แบบคูณและสะสม คอร์ ที่ลดทอนหรือตรรกะเฉพาะแอปพลิเคชัน [ 4 ]...
การนำข้อมูลกลับมาใช้ใหม่
กลไกที่ช่วยให้สามารถนำกลับมาใช้ใหม่ได้ในสถาปัตยกรรมเชิงพื้นที่ ได้แก่ มัลติแคสต์ และ การลดขนาด การนำกลับมาใช้ใหม่สามารถจำแนกได้อีกเป็นแบบเชิงพื้นที่และเชิงเวลา การเชื่อมต่อของสถาปัตยกรรมเชิงพื้นที่สามารถรองรับมัลติแคสต์เชิงพื้นที่ได้...
การคำนวณแผนที่
ใน การรันเคอร์เนลบนสถาปัตยกรรมเชิงพื้นที่ จำเป็นต้องสร้างแผนที่ซึ่งระบุรายละเอียดว่า การดำเนินการ จะดำเนินไปอย่างไร การแมปภาระงานไปยังสถาปัตยกรรมเชิงพื้นที่จำเป็นต้อง ผูก การคำนวณแต่ละรายการเข้ากับองค์ประกอบการประมวลผล จากนั้นจึง กำหนดตาราง เวลา...