Spelling suggestions: "subject:"squarer"" "subject:"squarers""
1 |
Κυκλώματα ύψωσης στο τετράγωνο για το σύστημα αριθμητικής υπολοίπωνΣπύρου, Αναστασία 22 September 2009 (has links)
Στα σύγχρονα ψηφιακά συστήματα η ανάγκη για γρήγορους υπολογισμούς είναι πλέον από τους πιο καθοριστικούς παράγοντες. Άλλοι ιδιαίτερα κρίσιμοι παράγοντες είναι η απαιτούμενη επιφάνεια του κυκλώματος και η κατανάλωση ενέργειας. Ωστόσο, ο χρόνος παραμένει ένας από τους πιο σημαντικούς για πλήθος εφαρμογές. Τα αριθμητικά κυκλώματα, όπως αθροιστές, πολλαπλασιαστές και κυκλώματα ύψωσης στο τετράγωνο, είναι πλέον αναπόσπαστο κομμάτι των ψηφιακών κυκλωμάτων, γι’ αυτό η επιτάχυνση των λειτουργιών αυτών είναι ένας στόχος στην κατεύθυνση του οποίου πολλές διαφορετικές αρχιτεκτονικές έχουν προταθεί. Η μείωση της καθυστέρησης στις αριθμητικές μονάδες θα δώσει μεγάλη βελτίωση στη συνολική απόδοση των συστημάτων, μιας και οι περισσότερες εφαρμογές εμπεριέχουν πλήθος αριθμητικών πράξεων.
Η πράξη της ύψωσης στο τετράγωνο αποτελεί ειδική περίπτωση της πράξης του πολλαπλασιασμού, στην οποία ο πολλαπλασιαστέος ισούται με τον πολλαπλασιαστή. Ο λόγος για τον οποίο χρησιμοποιούμε εξειδικευμένα κυκλώματα για την πράξη αυτή είναι η εκμετάλλευση του γεγονότος ότι τα δύο έντελα είναι ίσα, κάτι που οδηγεί σε ελαχιστοποίηση του χρόνου που απαιτείται για την ολοκλήρωση της πράξης, αλλά και μείωση της απαιτούμενης επιφάνειας. Η πράξη της ύψωσης στο τετράγωνο χρησιμοποιείται σε πολλές εφαρμογές των υψηλής απόδοσης επεξεργαστών ψηφιακού σήματος (digital signal processors – DSP). Τέτοιες εφαρμογές συμπεριλαμβάνουν φιλτράρισμα σήματος (signal filtering), επεξεργασία εικόνας (image processing), και διαμόρφωση για τηλεπικοινωνιακά συστήματα. Η πράξη της ύψωσης στο τετράγωνο μπορεί, επίσης, να χρησιμοποιηθεί αποδοτικά στην υλοποίηση κρυπτογραφικών αλγορίθμων για την αποφυγή της χρονοβόρας διαδικασίας της ύψωσης σε δύναμη.
Το Σύστημα Αριθμητικής Υπολοίπων (RNS), είναι ένα αριθμητικό σύστημα το οποίο παρουσιάζει σημαντικά πλεονεκτήματα στην ταχύτητα με την οποία μπορούν να γίνουν οι αριθμητικές πράξεις. Στο RNS οι αριθμοί αναπαρίστανται σαν ένα σύνολο από υπόλοιπα. Για να αναπαραστήσουμε έναν αριθμό ορίζουμε ένα σύνολο από πρώτους μεταξύ τους ακεραίους που ονομάζεται βάση του συστήματος P={p1,p2,…pk}. Η αναπαράσταση ενός αριθμού X στο RNS ορίζεται ως το σύνολο των υπολοίπων του Χ ως προς τα στοιχεία της βάσης Ρ. Προκύπτει, έτσι, ότι X={x1,x2,…,xk} όπου το xi είναι το υπόλοιπο της διαίρεσης του X με το στοιχείο της βάσης pi και συμβολίζεται με Xi=|X|pi. Κάθε ακέραιος Χ που ανήκει στο εύρος τιμών 0<=X<M, όπου Μ είναι το γινόμενο όλων των στοιχείων της βάσης P, έχει μοναδική αναπαράσταση στο RNS. Μια αριθμητική πράξη δύο εντέλων, η οποία μπορεί να είναι πρόσθεση, αφαίρεση ή πολλαπλασιασμός, ορίζεται ως εξής: {z1,z2,…,zk} = {x1,x2,…,xk}*{y1,y2,…,yk}, όπου zi = (xi*yi) modpi. Συνεπώς, κάθε αριθμητική πράξη εφαρμόζεται σε παράλληλες μονάδες (μία για κάθε στοιχείο της βάσης), καθεμία από τις οποίες διαχειρίζεται μικρούς αριθμούς (υπόλοιπα), αντί μιας μονάδας που θα χρειαζόταν να διαχειριστεί μεγάλους αριθμούς.
Ένα από τα πιο δημοφιλή σύνολα βάσης είναι αυτά της μορφής {2^n, 2^n -1, 2^n+1}, λόγω του ότι προσφέρουν πολύ αποδοτικά κυκλώματα με κριτήριο το γινόμενο της επιφάνειας επί το τετράγωνο της καθυστέρησης (area * time^2), καθώς επίσης και αποδοτικούς μετατροπείς από και προς το δυαδικό σύστημα. Για το λόγο αυτό η υλοποίηση αποδοτικών modulo(2^n-1) και modulo(2n+1) κυκλωμάτων είναι σημαντική. Το πρόβλημα που παρουσιάζεται είναι ότι ενώ οι modulo(2^n) και modulo(2^n-1) αριθμητικές χρειάζονται το πολύ n δυαδικά ψηφία για την αναπαράσταση όλων των δυνατών υπολοίπων, στη modulo(2^n+1) αρχιτεκτονική χρειάζονται (n+1) ψηφία. Το πρόβλημα αυτό λύνεται με τη χρήση diminished-1 αναπαράστασης. Στη diminished-1 αναπαράσταση, κάθε αριθμός Χ αναπαρίσταται ως X-1=X-1. Έτσι, απαιτούνται n δυαδικά ψηφία για την αναπαράσταση, χρειάζονται, όμως, κυκλώματα μετατροπής από και προς την diminished-1 αναπαράσταση. Όταν χρησιμοποιείται η diminished-1 αναπαράσταση η τιμή εισόδου ίση με 0 χειρίζεται ξεχωριστά.
Στα πλαίσια της εργασίας αναλύονται υπάρχουσες αρχιτεκτονικές και προτείνονται νέες για κυκλώματα ύψωσης στο τετράγωνο στο Σύστημα Αριθμητικής Υπολοίπων (RNS). Οι προτεινόμενες αρχιτεκτονικές βελτιώνουν την καθυστέρηση και, ταυτόχρονα, μειώνουν τις απαιτήσεις σε επιφάνεια. / Fast computations are of major importance in modern digital systems. Other critical factors are the area and the energy consumption. However, delay is still one of the most important ones for a variety of applications. Due to the fact that arithmetic circuits, such as adders, multipliers and squarers, have been integral components of most digital systems, many schemes have been proposed in the direction of accelerating arithmetic operations. As most applications contain a big number of arithmetic operations, delay reduction in arithmetic units will lead to significant improvement in the total system’s performance.
Squaring is a special case of multiplication, where the multiplier equals the multiplicand. The reason for using a special circuit for squaring is to benefit from the fact that the two operands are equal, which reduces the delay and the area needed for the calculation of the square. The squaring operation is used in many applications of high performance digital signal processors. Such applications include signal filtering, image processing and modulation of communication components. Squarers can also find applicability in several cryptographic algorithms for the implementation of modular exponentiations.
The Residue Number System is an arithmetic system in which arithmetic operations can be calculated in high speed. In the RNS numbers are represented as a set of residues. In order to represent a number we define a set of pairwise relative prime integers P={p1,p2,…pk}, which is the system’s base. Every number X is represented with the set of the residues occurred after the division of X by each element of the base, P. Thus, X={x1,x2,…,xk}, where xi stands for the residue of the division of X by the ith element of the base, pi, which is denoted as Xi=|X|pi. In the RNS there is a unique representation for every integer X that 0<=X<M, where M is the product of all the elements of the base. A two-operant arithmetic operation, which can be an addition, a subtraction or a multiplication, is defined as {z1,z2,…,zk} = {x1,x2,…,xk}*{y1,y2,…,yk}, where zi = (xi*yi) modpi. Consequently, arithmetic operations are performed to parallel units (one unit for each element of the base) each one handling small residues, instead of a single unit that handles large numbers.
One of the most popular base sets is those of the form {2^n, 2^n -1, 2^n+1}, due to the fact that they offer very efficient circuits when considering the area*time^2 criterion and efficient converters from/to the binary system. Thus, the design of efficient modulo (2^n-1) and modulo (2^n+1) circuits is of high importance. The problem that arises is that while in modulo(2^n) and modulo(2^n-1) arithmetic n bits are sufficient for the representation of all possible residues, in modulo(2^n+1) arithmetic (n+1) bits are needed. This can be solved by the use of the diminished-1 representation. In the diminished-1 representation every number X is represented as X-1=X-1. Therefore, n bits are sufficient for the representation, but converters from/to the diminished-1 representation are needed. In cases that the diminished-1 representation is used, operands with value 0 is treated separately.
For the needs of this thesis, existing architectures of squaring circuits in the RNS are studied and new ones are proposed. The proposed architectures improve the system’s delay, while, in parallel, reduce the area needs.
|
2 |
Calcul flottant haute performance sur circuits reconfigurables / High-performance floating-point computing on reconfigurable circuitsPasca, Bogdan Mihai 21 September 2011 (has links)
De plus en plus de constructeurs proposent des accélérateurs de calculs à base de circuits reconfigurables FPGA, cette technologie présentant bien plus de souplesse que le microprocesseur. Valoriser cette flexibilité dans le domaine de l'accélération de calcul flottant en utilisant les langages de description de circuits classiques (VHDL ou Verilog) reste toutefois très difficile, voire impossible parfois. Cette thèse a contribué au développement du logiciel FloPoCo, qui offre aux utilisateurs familiers avec VHDL un cadre C++ de description d'opérateurs arithmétiques génériques adapté au calcul reconfigurable. Ce cadre distingue explicitement la fonctionnalité combinatoire d'un opérateur, et la problématique de son pipeline pour une précision, une fréquence et un FPGA cible donnés. Afin de pouvoir utiliser FloPoCo pour concevoir des opérateurs haute performance en virgule flottante, il a fallu d'abord concevoir des blocs de bases optimisés. Nous avons d'abord développé des additionneurs pipelinés autour des lignes de propagation de retenue rapides, puis, à l'aide de techniques de pavages, nous avons conçu de gros multiplieurs, possiblement tronqués, utilisant des petits multiplieurs. L'évaluation de fonctions élémentaires en flottant implique souvent l'évaluation en virgule fixe d'une fonction. Nous présentons un opérateur générique de FloPoCo qui prend en entrée l'expression de la fonction à évaluer, avec ses précisions d'entrée et de sortie, et construit un évaluateur polynomial optimisé de cette fonction. Ce bloc de base a permis de développer des opérateurs en virgule flottante pour la racine carrée et l'exponentielle qui améliorent considérablement l'état de l'art. Nous avons aussi travaillé sur des techniques de compilation avancée pour adapter l'exécution d'un code C aux pipelines flexibles de nos opérateurs. FloPoCo a pu ainsi être utilisé pour implanter sur FPGA des applications complètes. / Due to their potential performance and unmatched flexibility, FPGA-based accelerators are part of more and more high-performance computing systems. However, exploiting this flexibility for accelerating floating-point computations by manually using classical circuit description languages (VHDL or Verilog) is very difficult, and sometimes impossible. This thesis has contributed to the development of the FloPoCo software, a C++ framework for describing flexible FPGA-specific arithmetic operators. This framework explicitly separates the description of the combinatorial functionality of an arithmetic operator, and its pipelining for a given precision, operating frequency and target FPGA.In order to be able to use FloPoCo for designing high performance floating-point operators, we first had to design the optimized basic blocks. We first developed pipelined addition architectures exploiting the fast-carry lines present in modern FPGAs. Next, we focused on multiplication architectures. Using tiling techniques, we proposed novel architectures for large multipliers, but also truncated multipliers, based on the multipliers found in modern FPGA DSP blocks. We also present a generic FloPoCo operator which inputs the expression of a function, its input and output precisions, and builds an optimized polynomial evaluator for the fixed-point evaluation of this function. Using this building block we have designed floating-point operators for the square-root and exponential functions which significantly outperform existing operators. Finally, we also made use of advanced compilation techniques for adapting the execution of a C program to the flexible pipelines of our operators.
|
Page generated in 0.022 seconds