Έχουμε πλέον φτάσει στην εποχή που όλοι οι επεξεργαστές στηρίζονται σε πολυπύρηνες αρχιτεκτονικές για να μπορέσουν να αυξήσουν την απόδοσή τους και να παρακάμψουν τους τεχνολογικούς περιορισμούς που συναντούσαν τα μονοπύρηνα συστήματα. Ωστόσο η ταυτόχρονη αξιοποίηση πολλαπλών πυρήνων από μια εφαρμογή δεν είναι εύκολη διαδικασία.
Στην προσπάθεια να υλοποιήσουμε παράλληλα προγράμματα που θα χρησιμοποιούν πολλαπλά νήματα (threads), ώστε να εκμεταλλεύονται όλους τους πυρήνες του επεξεργαστή ήρθαμε μπροστά στην πρόκληση του συγχρονισμού τους στις προσβάσεις σε κοινή μνήμη. Ο συγχρονισμός αυτός αποδείχτηκε μια περίπλοκη και δύσκολη διαδικασία. Οι συμβατικοί τρόποι συγχρονισμού περιόρισαν την απόδοση των παράλληλων προγραμμάτων και οδήγησαν στην αναζήτηση νέων καλύτερων μεθόδων που θα προσφέρουν μεγαλύτερη κλιμακωσιμότητα.
Την λύση στο πρόβλημα αυτό φαίνεται να δίνει το Transactional Memory. Πιο συγκεκριμένα το Hardware Transactional Memory υπόσχεται να δώσει ένα εύρωστο, απλό και κλιμακώσιμο τρόπο για συγχρονισμό παράλληλων νημάτων σε κοινή μνήμη. Μέσα από τους Haswell επεξεργαστές της Intel που προσφέρουν για πρώτη φορά σε εμπορική μορφή μια υλοποίηση Hardware Transactional Memory, θέλουμε να εξετάσουμε τις δυνατότητές του, να δούμε τα πλεονεκτήματά του, αλλά και τους περιορισμούς που εισάγει η χρήση του.
Ο πειραματισμός και η αξιολόγηση του Hardware Transactional Memory των Haswell επεξεργαστών γίνεται μέσα από την παραλληλοποίηση δομών Red Black Tree. Τα Red Black Trees είναι γνωστά για την περίπλοκη δομή τους και την δυσκολία παραλληλοποίησής τους, με τις μέχρι σήμερα συμβατικές μεθόδους συγχρονισμού.
Nowadays every processor is based on multi-core architectures to enable them to increase their performance and to circumvent technological limitations encountered in single-core systems. However the simultaneous use of multiple cores by a single application is not an easy process.
Trying to implement parallel programs that use multiple threads, to exploit all CPU cores, we came across the challenge of synchronizing their accesses to shared memory. This synchronization has proved to be a complex and difficult process. Conventional methods of synchronization have limited the performance of parallel programs and led to the pursuit of new better methods that will offer greater scalability.
The solution to this problem seems to be given by the Transactional Memory. More specifically, the Hardware Transactional Memory, promises to provide a robust, simple and scalable way to synchronize parallel threads using shared memory. Through Intel's Haswell processors, that offer for the first time in a commercial form an implementation of Hardware Transactional Memory, we want to observe its capabilities, to find out its advantages and also its limitations.
The experimentation and evaluation of Haswell's Hardware Transactional Memory implementation is becoming possible by implementing parallel Red Black Tree structures. Red Black Trees are known for their complex structure and the difficulty of implementing parallel versions of them, with the conventional synchronization methods.