[Advcomparch] Relaxed models και αναδιάταξη εντολών.

Konstantinos Nikas knikas at cslab.ece.ntua.gr
Mon Jul 1 17:08:26 EEST 2013


Καλησπέρα,

από ότι καταλαβαίνω έχει δημιουργηθεί μια παρεξήγηση όσον αφορά την
αναδιάταξη των εντολών.

Η αναδιάταξη λοιπόν των εντολών μνήμης επιτρέπεται καταρχάς εφόσον δεν
επηρεάζονται τα data dependencies.  Για να κατανοήσετε καλύτερα το τί
γίνεται, φανταστείτε έναν out-of-order επεξεργαστή, στα LD/ST queues του
οποίου μπαίνουν οι αντίστοιχες εντολές μνήμης. Είναι προφανές, ότι τυχόν
αναδιάταξη μπορεί να αφορά μόνο εντολές που είναι έτοιμες να εκτελεστούν
(να πάνε στη μνήμη)! Έτσι στην περίπτωση:

lw r4, 0(r8)
sw r4, 0(r9)

η 2η εντολή ποτέ δε θα είναι έτοιμη πριν εκτελεστεί η πρώτη και άρα δεν
πρόκειται να αναδιαταχθεί. Για τις εντολές τώρα που είναι έτοιμες να πάνε
στη μνήμη, η αναδιάταξη επιτρέπεται μόνο μεταξύ αυτών που πηγαίνουν σε
διαφορετική θέση της μνήμης. Δηλαδή στον κώδικα:

sw r1, 0(r8)
sw r2, 0(r8)

δεν επιτρέπεται η αναδιάταξη.

Όσον αφορά τα control dependencies τα πράγματα δεν είναι απόλυτα ξεκάθαρα,
μιας και δεν εξαρτώνται από το memory model αλλά από την υλοποίηση σε κάθε
επεξεργαστή. π.χ. για τον κώδικα:

while (flag == 0) continue;
assert (x == 1);

o Power επεξεργαστής σέβεται το control dependence και δεν επιτρέπει την
αναδιάταξη (βάζοντας ένα implicit barrier ανάμεσα στις 2 εντολές) ενώ ο ARM
δεν το σέβεται και μπορεί να αναδιατάξει τις εντολές (κάτι που ισχύει και
στα περισσότερα σύγχρονα συστήματα). Εμείς γενικά θεωρούμε ότι ισχύει το
2ο, δηλαδή στον κώδικα

while (flag == 0) ;
print A;

μπορεί να υπάρξει αναδιάταξη. Σκεφτείτε το πάλι ως εξής. Έχετε έναν
οut-of-order processor, ο οποίος κάνει branch predicition και "τυχαίνει" το
prediction να λέει ότι το branch θα είναι NT (δε θα εκτελεστεί δηλαδή ξανά
το loop). Αυτό έχει σαν αποτέλεσμα να μπαίνουν κάθε φορά στο LD queue τα
load flag, load A τα οποία και μπορούν να αναδιαταχθούν μιας και πάνε σε
διαφορετικές διευθύνσεις. Προφανώς σε κάθε λάθος prediction, κάνεις flush
το LD queue, όταν όμως το prediction στο τελευταίο iteration θα είναι
σωστό, τότε μπορεί να έχει διαβαστεί το A πριν να διαβάσεις ότι flag!=0.

Κ.




2013/7/1 Σαρρής θεόδωρος <el09148 at mail.ntua.gr>

> Γεια σας. Με ποιο τρόπο σέβεται ο επεξεργαστής τα data και control
> dependecies; Γιατί αν σέβεται τα data hazards πρέπει σε ένα (1a)A=1
> (1b)Print A να μην θεωρούμε εφικτό 1b->1a γιατί είναι RAW hazard. Ομοίως
> για τα control dependecies (1a)While (A==0) ; (1b)Print A πρέπει να μην
> θεωρούμε εφικτό 1b->1a. Από τις διαφάνειες και τα παλιά θέματα εγώ έχω
> καταλάβει ότι στα δύο παραδείγματα που ανέφερα το RMO επιτρέπει αυτές τις
> αναδιατάξεις.
> Ευχαριστώ,
> Σαρρής Θεόδωρος
>
>
> On Mon, 1 Jul 2013 15:04:40 +0300, Konstantinos Nikas wrote:
>
>> Καλησπέρα,
>>
>> Στο συγκεκριμένο παράδειγμα που
>> αναφέρεις, το block παραμένει στο Ι παρά
>> το PrWr γιατί η cache είναι write-no-allocate.
>> Δηλαδή αν κάνει write miss, δεν κάνει allocate
>> το block στην cache.
>>
>> Για το δεύτερο ερώτημα, καταρχάς
>> αναφερόμαστε σε κάποιο από τα μοντέλα
>> που παρουσιάστηκαν στο μάθημα. Κατά
>> δεύτερον, τα consistency models ασχολούνται
>> μόνο με τη σειρά των memory εντολών. Οι
>> τυχόν αναδιατάξεις των υπόλοιπων
>> εντολών είναι θέμα του επεξεργαστή
>> και δεν έχει σχέση με το coherence/consistency.
>>
>> Βέβαια, ακόμα και το πλέον relaxed memory order,
>> δε σημαίνει ότι επιτρέπονται όλες οι
>> πιθανές αναδιατάξεις. Μη ξεχνάτε ότι ο
>> επεξεργαστής εξακολουθεί και σέβεται
>> τα data και control dependencies!
>>
>> Κ.
>>
>> 2013/6/29 Ανδρέας Παντελόπουλος
>>
>>  Καλησπέρα,στο FSM του simple V/I protocol
>>> (διαφ.30) παρατηρώ ότι με PrWr στην Ι
>>> ξαναγυρνάει στην κατάσταση Ι.
>>> Κανονικά δεν θα έπρεπε να γίνεται
>>> μετάβαση στην κατάσταση V ?
>>>
>>> Επίσης,στην θεωρητική άσκηση της 3ης
>>> σειράς αναφέρεστε στο "πλέον relaxed memory
>>> order".Τι σημαίνει αυτό ακριβώς? Στην
>>> ουσία οποιαδήποτε αναδιάταξη
>>> εντολών ή αναδιάταξη εντολών που
>>> επιτελούν λειτουργίες μνήμης ?
>>>
>>> Ευχαριστώ πολύ.
>>> ______________________________**_________________
>>> Advcomparch mailing list
>>> Advcomparch at lists.cslab.ece.**ntua.gr<Advcomparch at lists.cslab.ece.ntua.gr>[1]
>>> http://lists.cslab.ece.ntua.**gr/mailman/listinfo/**advcomparch<http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch>[2]
>>>
>>
>> --
>> Dr. Konstantinos Nikas
>> Computing Systems Laboratory
>> School of Electrical and Computer Engineering
>> National Technical University of Athens
>>
>> Tel: +30-210-7724159
>>  e-mail: knikas at cslab.ece.ntua.gr [4]
>> http://www.cslab.ece.ntua.gr/~**knikas<http://www.cslab.ece.ntua.gr/~knikas>[5]
>>
>> Links:
>> ------
>> [1] mailto:Advcomparch at lists.**cslab.ece.ntua.gr<Advcomparch at lists.cslab.ece.ntua.gr>
>> [2] http://lists.cslab.ece.ntua.**gr/mailman/listinfo/**advcomparch<http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch>
>> [3] mailto:padelopoulos at gmail.com
>> [4] mailto:knikas at cslab.ece.ntua.**gr <knikas at cslab.ece.ntua.gr>
>> [5] http://www.cslab.ece.ntua.gr/~**knikas<http://www.cslab.ece.ntua.gr/~knikas>
>>
>
> ______________________________**_________________
> Advcomparch mailing list
> Advcomparch at lists.cslab.ece.**ntua.gr<Advcomparch at lists.cslab.ece.ntua.gr>
> http://lists.cslab.ece.ntua.**gr/mailman/listinfo/**advcomparch<http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch>
>



-- 
Dr. Konstantinos Nikas
Computing Systems Laboratory
School of Electrical and Computer Engineering
National Technical University of Athens

Tel: +30-210-7724159
e-mail: knikas at cslab.ece.ntua.gr
http://www.cslab.ece.ntua.gr/~knikas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cslab.ece.ntua.gr/pipermail/advcomparch/attachments/20130701/743d8e90/attachment-0001.htm>


More information about the Advcomparch mailing list