I detta dokument beskriver vi ett generaliserat tillvägagångssätt för att härleda en anpassad datalayout i flera minnesbanker för array-baserade beräkningar, för att underlätta högbandbredd parallella minnesåtkomster i moderna arkitekturer där flera minnesbanker samtidigt kan mata en eller flera funktionella enheter. Vi använder inte en fast datalayout, utan väljer istället applikationsspecifika layouter enligt åtkomstmönster i koden. En unik egenskap hos detta tillvägagångssätt är dess flexibilitet i närvaro av kodomordning omvandlingar, såsom loop boet omvandlingar som vanligen tillämpas på array-baserade beräkningar. Vi har implementerat denna algoritm i DEFACTO-systemet, en designmiljö för att automatiskt kartlägga C-program till maskinvaruimplementeringar för FPGA-baserade system. Vi presenterar experimentella resultat för fem multimediakärnor som visar fördelarna med detta tillvägagångssätt. Våra resultat visar att anpassad datalayout ger resultat lika bra som, eller bättre än, naiva eller fasta cykliska layouter, och är betydligt bättre för vissa åtkomstmönster och i närvaro av kodomordning transformationer. När det används i samband med orullande slingor i ett bo för att exponera parallellism på undervisningsnivå, observerar vi mer än 75 % minskning av antalet minnesåtkomstcykler och uppfarter som sträcker sig från 3,96 till 46,7 för 8 minnen, jämfört med att använda ett enda minne utan orullning.
I REF föreslås en anpassad minnesdatalayout för att parallellisera minnesåtkomster baserat på det övergripande åtkomstmönstret.
Custom data layout for memory parallelism
{'venue': 'International Symposium on Code Generation and Optimization, 2004. CGO 2004.', 'journal': 'International Symposium on Code Generation and Optimization, 2004. CGO 2004.', 'mag_field_of_study': ['Computer Science']}