title: Main memory performance for realistic data access in FPGA systems: An experimental study
title: Απόδοση κύριας μνήμης για ρεαλιστικές προσβάσεις δεδομένων σε συστήματα FPGA: Μια πειραματική μελέτη
Creators: name: Αργυριου Μαρια
Publisher: name: Technical University of Crete
Year: 2021

description: Nowadays, computationally demanding applications, such as Convolutional Neural Networks (CNN), are mapped to hardware accelerators like Field Programmable Gate Arrays (FPGAs) due to customizable datapath with designer-tunable parallelism and pipelining. Memory is in many cases the limiting factor of every performance-bound application but its real performance is often overlooked. Most studies and benchmarks on memory subsystems focus on best-case scenarios for memory access times. Μemory access times and throughput are affected by such factors as the memory controller’s performance, buffering, the need (or lack of) a microprocessor for on-FPGA data transfer, and even the capabilities of Computer-Aided Design (CAD) tools and frameworks. This study, prompted by CNN applications on mid-range single- and multi-FPGA systems focuses on the experimental memory evaluation, aiming at providing the designer with realistic figures which can be used towards on-FPGA buffer sizing, computation-to-memory I/O estimation to avoid bottlenecks, and even pipeline strategy. Detailed experimental results have been obtained by memory access patterns which represent realistic scenarios, and these are presented and analyzed in this thesis. One of the conclusions from this work is that when random accesses are required, large numbers of such accesses performed together lead to better results vs. fewer, scattered accesses. The results of this work not only show a significant deviation from ideal transfer rates of the DDR memory channel (which can approach 20 GBytes/sec), but they are also substantially lower than the internal AXI port maximum bandwidth of 4.8 GBytes/sec, the degradation being due to internal to the FPGA data transfers and the DDR controller.
description: Σήμερα, επιταχυντές υλικού όπως οι Field Programmable Gate Arrays (FPGAs) χρησιμοποιούνται σε υπολογιστικά απαιτητικές εφαρμογές, όπως τα Convolutional Neural Networks (CNN), εξαιτίας της προσαρμοστικότητάς τους και των δυνατοτήτων που προσφέρουν στον σχεδιαστή για παραλληλισμό και pipelining. Η μνήμη είναι σε πολλές περιπτώσεις ο περιοριστικός παράγοντας για εφαρμογές όπου η ταχύτητα των επιταχυντών είναι σημαντική, αλλά η πραγματική απόδοσή της συχνά παραβλέπεται. Οι περισσότερες έρευνες σε υποσυστήματα μνήμης επικεντρώνονται σε μελέτες όπου οι χρόνοι πρόσβασης στη μνήμη είναι βέλτιστοι. Οι χρόνοι αυτοί και η απόδοσή της επηρεάζονται από παράγοντες όπως ο controller της μνήμης, το buffering, η ανάγκη (ή η έλλειψη) ενός μικροεπεξεργαστή για on-FPGA μεταφορά δεδομένων και από τις δυνατότητες των εργαλείων σχεδίασης. Η παρούσα μελέτη, παρακινούμενη από εφαρμογές που υλοποιούν CNN αρχιτεκτονικές σε συστήματα με μια ή περισσότερες FPGA, επικεντρώνεται στην πειραματική αξιολόγηση της μνήμης, με στόχο να παρέχει στον σχεδιαστή ρεαλιστικά αποτελέσματα που μπορούν να χρησιμοποιηθούν για την εύρεση του μεγέθους των buffers στις FPGA, την αποφυγή bottlenecks μέσα από τον υπολογισμό του I/O, ακόμη και την επιλογή της κατάλληλης pipelining μεθοδολογίας. Τα πειραματικά αποτελέσματα προσομοιώνουν μοτίβα πρόσβασης της μνήμης που αντιπροσωπεύουν ρεαλιστικά σενάρια, τα οποία παρουσιάζονται και αναλύονται σε αυτήν την εργασία. Ένα από τα συμπεράσματα από αυτήν την εργασία είναι ότι όταν απαιτούνται τυχαίες προσβάσεις, μεγάλος αριθμός τέτοιων προσπελάσεων που εκτελούνται μαζί οδηγούν σε καλύτερα αποτελέσματα έναντι λιγότερων διάσπαρτων προσβάσεων. Τα αποτελέσματα αυτής της εργασίας όχι μόνο δείχνουν αξιοσημείωτη απόκλιση από τους ιδανικούς ρυθμούς μεταφοράς δεδομένων από τη μνήμη (οι οποίοι μπορεί να προσεγγίσουν τα 20 GBytes/sec), αλλά είναι επίσης σημαντικά χαμηλότερα από το μέγιστο bandwidth της AXI θύρας (4,8 GBytes/sec). H υποβάθμιση αυτή οφείλεται στον τρόπο μεταφοράς δεδομένων στις FPGA και στον controller της μνήμης.