[Advcomparch] Υλοποίηση lock
Lambros Flokas
lamflokas at gmail.com
Mon Jul 1 20:38:03 EEST 2013
Ευχαριστώ πολύ.Μετά από αρκετή ώρα και ψάξιμο βρήκα την λύση (η οποία την
είχα σκεφτεί από την αρχή αλλά λόγω της παρανόησης που παρουσίασες νόμιζα
ότι ήταν λάθος) αλλά τώρα κατάλαβα ακόμα καλύτερα την διαφορά στην απόδοση
ttas και tas.
2013/7/1 Nikos Anastopoulos <anastop at cslab.ece.ntua.gr>
> Καλησπέρα,
>
>
> On 06/30/2013 11:51 AM, Lambros Flokas wrote:
>
>> Έχω μια απορία για την υλοποίηση της lock.Δυστυχώς μετά από αρκετές
>> προσομοιώσεις κατάλαβα ότι κάτι πήγαινε λάθος με την υλοποίηση μου και
>> το επιβεβαίωσα με το DDEBUG του locks_scalability.Το πρόβλημα είναι ότι
>> ακόμα δεν είμαι σίγουρος γιατί είναι λάθος η υλοποίηση και δεν μπορώ
>> πλέον να αντιληφθώ πως θα κάνουμε χρήση της compare and swap (προσπάθησα
>> να βρω εναλλακτικές εντολές του gcc αλλά αν και δούλευαν στο debug
>> έλεγαν ότι έχουν κάποιους περιορισμούς οπότε τις άφησα)
>> Η υλοποίηση μου βασιζόταν στο εξής : Η compare and swap κάνει swap μόνο
>> όταν το lock είναι oldval αλλά εμείς στο test and set θέλουμε να κάνουμε
>> set κάθε φορά έτσι κι αλλιώς οπότε σκέφτηκα να του δώσω σαν oldval την
>> ίδια την τιμή του lock δηλαδή *lock.
>>
>
> Παρόλο που δε φαίνεται από τα semantics της __sync_val_compare_and_swap
> στην εκφώνηση, η αλήθεια είναι ότι σε *κάθε* κλήση της, ανεξαρτήτως των
> τρεχόντων περιεχομένων του ptr, εκτελείται μια "ακριβή" ατομική εντολή που
> γράφει πάνω στο bus. Θεωρείτε δηλαδή ότι σε κάθε περίπτωση γίνεται εγγραφή
> της μνήμης, όπως κάνει και η test-and-set.
>
> Όπως και να 'χει, η TTAS υλοποίηση θα πρέπει να διαφοροποιηθεί από την
> TAS στο ότι κάνει απλά και "φθηνά" reads στην lock μεταβλητή μέσα σε ένα
> loop, και μόνο όταν αυτή *φανεί* ξεκλείδωτη επιχειρεί το "ακριβό" atomic
> operation.
>
> Ελπίζω να βοήθησα.
>
>
> N.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cslab.ece.ntua.gr/pipermail/advcomparch/attachments/20130701/4b69d5f7/attachment.htm>
More information about the Advcomparch
mailing list