dc.contributor.advisor | Själander, Magnus | |
dc.contributor.advisor | Metz, David | |
dc.contributor.author | Harnes, Vetle Kristaver Widnes | |
dc.date.accessioned | 2023-10-11T17:24:44Z | |
dc.date.available | 2023-10-11T17:24:44Z | |
dc.date.issued | 2023 | |
dc.identifier | no.ntnu:inspera:142737689:34843767 | |
dc.identifier.uri | https://hdl.handle.net/11250/3095916 | |
dc.description.abstract | Ytelsen til enkeltkjerner har stagnert de siste årene, som følge av slutten på Dennard skalering og minneveggen. For å omgå dette, har maskinvare designere introdusert spesialiserte akseleratorer som utmerker seg i spesifikke arbeidsbelastninger. Disse akseleratorene lar prosessoren avlaste arbeid, som effektiviserer ytelse og energibruk. Prosessoren styrer akseleratoren ved hjelp av egendefinerte instruksjoner for å kunne avlaste oppgaver. Hvordan disse instruksjonene genereres og kommuniseres til akseleratoren, kan påvirke ytelsen i stor grad, samt bestemme forsinkelse, implementeringskostnad og silikon arealbruk. Siden hver implementasjon har ulike styrker og svakheter, må instruksjons-genereringsmetoden imøtekomme akseleratorens bruksområde og båndbreddebehov, og samtidig ta hensyn til implementeringsbyrden.
Denne avhandlingen sammenligner tre metoder for generering av instruksjoner for Bit-Serial Matrix Multiplication Overlay (BISMO), en bit-seriell matrise multiplikasjons Field Programmable Gate Arrays (FPGA) akselerator. Den første metoden er å bruke instruksjoner generert i programvare, med et register kartlagt TileLink (TL) grensesnitt som anvendes for kommunikasjon. Den andre metoden er å implementere en tett koblet Rocket Custom Coprocessor (RoCC) akselerator, som inneholder egendefinerte RISC-V instruksjoner for å kommunisere de programvare-genererte instruksjonene til akseleratoren. Den tredje metoden er å anvende en tilstandsmaskin, styrt av én enkelt programvare-generert instruksjon, til å generere instruksjoner for akseleratoren. Hovedbidraget i denne avhandlingen ligger i undersøkelsen av forskjellige instruksjons-genererings- og kommunikasjonsteknikker innen Chipyard-økosystemet. Som et biprodukt, utforsker også denne avhandlingen styrkene og svakhetene til en tett koblet RoCC-akselerator sammenlignet med en mer løst koblet Memory-Mapped I/O (MMIO) akselerator.
Disse variasjonene ble implementert i Chipyard-økosystemet og integrert i Rocket Chip på en integrert krets for å generere instruksjoner ved hjelp av Rocket kjernen. Simuleringer ble kjørt på et Alveo U250 FPGA-kort. Resultatene viser at BISMO med en RoCC-integrasjon presterer ganske likt, men litt bedre enn TL MMIO-integrasjonen i noen tilfeller. Det viser også at ved å implementere maskinvare-generering, kan man øke den samlede ytelsen til akseleratoren, med en relativt liten størrelses- og forsinkelseskostnad. | |
dc.description.abstract | In recent years, the end of Dennard scaling and the memory wall has stagnated single-core performance. Hardware designers introduced specialized accelerators that excel in specific workloads to circumvent this. These accelerators enable the Central Processing Unit (CPU) to offload work, improving performance and energy efficiency. To do this, the CPU must supervise the accelerator using custom instructions to offload tasks. How these instructions are generated and communicated to the accelerator can drastically affect performance, dictating delay, implementation overhead, and silicon real-estate usage. Because every implementation has different strengths and weaknesses, the choice of instruction generation method needs to consider the accelerator’s use case and bandwidth needs while also considering the implementation burden.
This thesis compares three methods for providing instructions for the Bit-Serial Matrix Multiplication Overlay (BISMO), a bit-serial matrix multiplication Field Programmable Gate Arrays (FPGA) accelerator. The first approach uses software-generated instructions with a register-mapped TileLink (TL) interface to provide instructions. The second implementation is a tightly coupled Rocket Custom Coprocessor (RoCC) accelerator featuring custom RISC-V instructions to provide the software-generated instructions to the accelerator. Lastly, a finite-state machine controlled by a single software-generated instruction provides instructions for the accelerator. The key contribution of this thesis lies in its investigation of various instruction generation and communication techniques within the Chipyard ecosystem. As a by-product, this thesis explores the strengths and weaknesses of a tightly coupled RoCC accelerator versus a more loosely coupled Memory-Mapped I/O (MMIO) accelerator.
These approaches were implemented in the Chipyard ecosystem and integrated into a Rocket Chip System on Chip (SoC) to generate instructions using the Rocket Core. Simulations were run on an Alveo U250 FPGA card. The results show that BISMO with an RoCC integration performs very similarly, but RoCC slightly outperforms the TL MMIO integration in some cases. It also shows that by implementing hardware generation, one can speed up the overall performance of the accelerator with a relatively tiny size and communication delay overhead. | |
dc.language | eng | |
dc.publisher | NTNU | |
dc.title | Exploring Efficient Accelerator-Core Integration Strategies: A Case Study of BISMO in Chipyard | |
dc.type | Master thesis | |