Εφαρμογές με υψηλές υπολογιστικές απαιτήσεις, π.χ αλγόριθμοι για διαχείριση
δεδομένων, αλγόριθμοι ρομποτική όρασης, απαιτούν πολύ καλές επιδόσεις που
σπάνια συναντώνται σε προσωπικούς υπολογιστές. Έτσι δημιουργείται η
ανάγκη της υλοποίησής τους σε πιο εξελιγμένα μέσα για την αποδοτική τους
εκτέλεση. Μια τέτοια υλοποίηση επιτυγχάνεται με τη χρήση customized
hardware επιταχυντών, στους οποίους αναθέτουμε την εκτέλεση των πιο
βαριών υπολογιστικά kernels.
Ο στόχος αυτής της εργασίας είναι η παροχή ενός αποτελεσματικού συν‐
σχεδιασμού hardware/software για την καλύτερη υλοποίηση τέτοιων
απαιτητικών αλγορίθμων. Για το σκοπό αυτό, ύστερα από την διαδικασία του
profiling που έγινε στους κώδικές μας, επιλέξαμε να υλοποιήσουμε σε
επαναπροσαρμόσιμο hardware, τα kernels με το μεγαλύτερο critical path. Η
πλατφόρμα που χρησιμοποιήσαμε για την υλοποίηση αυτή είναι το Xilinx
Virtex‐6 (xc6vlx240t).
Σε σύγκριση με τις ήδη υπάρχουσες υλοποιήσεις, σε αυτή την εργασία
ασχολούμαστε με την υλοποίηση του Median αλγόριθμου, στοχεύοντας σε δύο
διαφορετικούς τομείς: (i) την υλοποίηση ενός φίλτρου για την αφαίρεση
θορύβου από εικόνες (ii)και την υλοποίηση αλγορίθμου επιλογής με στόχο τη
διερεύνηση σε λίστες δεδομένων.
Καθώς, ο στόχος μας επηρεάζει τον τρόπο υλοποίησης τόσο ως προς την
επίδοση όσο και ως προς το σύνολο των απαιτούμενων πόρων, αναπτύξαμε δυο
διαφορετικές εκδόσεις αυτού του αλγορίθμου. Η πρώτη υλοποίηση
χρησιμοποιεί τον ελάχιστο αριθμό πόρων (μνήμη) και η δεύτερη χαρακτηρίζεται
από πιο υψηλές επιδόσεις. Αξιοσημείωτη είναι η εφαρμογή ακόμα και της
δεύτερης υλοποίησης σε μεγάλο πλήθος αριθμών, δεδομένου των
περιορισμένων πόρων μνήμης των FPGA .
Nα αναφέρουμε τέλος και την μεγάλη αύξηση της επίδοσης που επιτύχαμε σε
σύγκριση με την εκτέλεση στην CPU .
Data intensive applications (e.g. computer vision and data management
algorithms) impose considerable performance overheads that rarely are
sufficiently implemented onto general‐purpose computers. Instead of this, more
advanced implementation medium are absolutely required in order to support
sufficient performance. An example affects the usage of customized hardware
accelerators, where the most computational intensive kernels are executed.
The goal of this thesis is to provide an efficient hardware/software co‐design
implementation of such a data intensive algorithm. For this purpose, all the
timing critical kernels, as they already derived from profiling procedure, were
implemented onto reconfigurable hardware. More specifically, the target
reconfigurable medium is a state‐of‐the‐art Xilinx Virtex‐6 (xc6vlx240t), whereas
regarding the rest kernels (non‐timing critical) are actually mapped onto a
general‐purpose CPU.
Even though the introduced solution is applicable to various application
intensive applications, at this thesis we are dealing with the implementation of
Median algorithm targeting to two different application domains: (i) the
implementation of Median filtering targeting to remove impulsive noise from
data, and (ii) an algorithm for data querying.
Since the scope of this thesis affects the sufficient implementation of this
algorithm, in terms both of performance and amount of utilized resources, two
different versions of this algorithm were developed. More specifically, the first of
them employees the minimum amount of memory blocks, whereas the second
one is characterized by increased performance. Note that the second
implementation is very important due to inherent limitation about memory
blocks found in FPGAs. Additionally, we have to highlight that based on our
exploration results we achieve significant increased performance compared to
the software implementation (C++).