background image

85

Για τη σωστή διαµόρϕωση της εξόδου, απαιτείται κατάλληλος µετασχηµατισµός των

δεδοµένων, όπως περιγράϕεται στην Εξίσωση (4.1). Η µονάδα αποκοπής, βασιζόµενη

στην εν λόγω εξίσωση, αποµονώνει τα απαραίτητα ψηϕία της κατάστασης ανάλογα

µε το επιλεγµένο µήκος εξόδου (576, 832, 1088 ή 1152 bits) και υλοποιείται µέσω

πολυπλέκτη 4 προς 1.

State

[x, y, z] = ((Pad r XOR r)|c) × [64 × (5y + x) + z]

(4.1)

Η

παραπάνω

εξίσωση

ορίζει

τον

τρόπο

µε

τον

οποίο

διαµορϕώνεται

η

τελική

κατάσταση εξόδου του συστήµατος, µε βάση το αποτέλεσµα της πράξης XOR µεταξύ

του συµπληρωµένου µηνύµατος και των

r bits, καθώς και την προσάρτηση των c

bits.

Η µονάδα αποκοπής διασϕαλίζει ότι η έξοδος ανταποκρίνεται ακριβώς στο

επιθυµητό µήκος, ανάλογα µε τις απαιτήσεις της εϕαρµογής.

4.4.3

Η αρχιτεκτονική του αλγορίθµου SHA-3

Στην παρούσα µελέτη,

ένας από τους βασικούς ερευνητικούς µας στόχους ήταν

η

επιτάχυνση

της

εκτέλεσης

µέσω

της

µείωσης

του

συνολικού

αριθµού

κύκλων

ρολογιού,

επιτυγχάνοντας

παράλληλα

τη

διατήρηση

της

ελάχιστης

δυνατής

επιϕάνειας

σε

(slices).

Η

βασική

αρχιτεκτονική

του

µπλοκ

γύρων

µετατροπής

παρουσιάζεται

στο

Σχήµα

4.4,

όπου

ο

µετρητής

κυµαίνεται

από

0

έως

23,

υποδεικνύοντας ότι στην αρχική µορϕή δεν εϕαρµόζεται βελτιστοποίηση για µείωση

του συνολικού αριθµού των κύκλων ρολογιού.

Η στρατηγική ξετυλίγµατος (loop unrolling) αποτελεί µια τεχνική βελτιστοποίησης

που στοχεύει στη µείωση της επιβάρυνσης από βρόχους σε υλοποιήσεις αλγορίθµων,

αυξάνοντας

την

αποδοτικότητα

και

µειώνοντας

το

χρόνο

εκτέλεσης.

Στη

βασική

υλοποίηση

του

αλγορίθµου

SHA-3,

όπως

απεικονίζεται

στο

Σχήµα

4.4,

ο

υπολογισµός

πραγµατοποιείται

µέσω

ενός

ενιαίου

µπλοκ

µετασχηµατισµών

ακολουθώντας τη σειρά των λειτουργιών

θ, ρ, π, χ, και ι. Η εϕαρµογή της τεχνικής

ξετυλίγµατος επιδιώκει την περαιτέρω βελτίωση της απόδοσης του αλγορίθµου,

επιτρέποντας την εκτέλεση πολλαπλών µπλοκ µετασχηµατισµών εντός ενός κύκλου

ρολογιού, µειώνοντας έτσι σηµαντικά τη συνολική καθυστέρηση.

Στην παρούσα εργασία εϕαρµόστηκε η στρατηγική ξετυλίγµατος δύο σταδίων (loop

unrolling by 2), όπως απεικονίζεται στο Σχήµα 4.5.

Συγκεκριµένα, ένα επιπλέον