[Advcomparch] Απορία επί του Tomasulo / Double Load στο ίδιο block

Konstantinos Nikas knikas at cslab.ece.ntua.gr
Wed Jul 8 13:31:11 EEST 2015


> Τι συμβαίνει δεδομένου ότι το miss time στο πρώτο είναι 6 και το hit time
> στο r2 είναι 2?
> Mε την διαπίστωση του miss, θα σβηστεί στον πρώτο χρόνο  ότι υπάρχει στην
> cache ?
> Γιατί π.χ αν δεν σβηστούν και προλάβει να διαβάσει το r2 ότι θέλει, το LRU
> θα μετακινηθεί και άρα τα δεδομένα της address θα έπρεπε αλλού να
> αποθηκευτούν
>


To πότε ενημερώνεται η LRU και επιλέγεται το victim που θα γίνει evict
είναι θέμα υλοποίησης. Θα διακινδύνευα να πω ότι συνήθως γίνεται όταν
έρχεται το καινούριο block μέσα στην cache.

Σε κάθε περίπτωση, στο πλαίσιο της άσκησης μπορείτε να κάνετε όποια
παραδοχή θέλετε.

Κ.





> Στις 7 Ιουλίου 2015 - 5:37 μ.μ., ο χρήστης Εμμανουήλ Βλατάκης-Γκαραγκούνης
> <tetraktida42 at gmail.com> έγραψε:
>>>
>>> Ειδικότερα με απασχολεί η superscalar περίπτωση και η pipeline διαχείριση
>>> των Load & Stores
>>>
>>> SCENARIO
>>>
>>> Ας πούμε ότι είμαστε σε απλή non-superscalar αρχιτεκτονική και θέλουμε να
>>> εκτελέσουμε τις ακόλουθες δύο εντολές με αλγόριθμο Tomasulo:
>>>
>>> ld r1, 0 (address)
>>> ld r2, 1 (address)
>>> Ας υποθέσουμε ότι:
>>> 1) το cache block χωραει από [address+0]...[address+7]
>>> 2) το block δεν βρίσκεται στην cache, συνεπώς έχουμε miss.
>>> 5) Hit time = 2, Miss time = 5
>>>
>>> A)
>>> Υποθέτω ότι αν είναι non-pipelined το function unit που χρησιμοποιεί το
>>> load τότε αναγκαστικά θα τρέξει μόνο η πρώτη εντολή το EXECUTE και θα κάνει
>>> miss ενώ η δεύτερη θα περιμένει και στην συνέχεια θα κάνει hit
>>>
>>> B)
>>> Αν τώρα υποθέσουμε ότι είναι pipelined το function unit , η ερώτηση μου
>>> είναι τότε η πρώτη και πάλι θα δει miss, και θα διαρκέσει από το 2ο εως  τον
>>> 7ο γύρο αλλά η δεύτερη δεν θα δει επίσης το block να βρίσκεται στην cache
>>> και εκείνη θα κάνει και εκείνη miss ή στις caches υπάρχει κάποιο πρωτόκολλο
>>> στην περίπτωση που προσπαθήσεις να κάνεις read κάτι που βρίσκεται σε
>>> διαδικασία μεταφοράς?
>>>
>>> Γιατί αν παράδειγμα :
>>> από το 2ο εως το 7ο τρέχει η 1η load
>>> από το 3ο εως το 8ο τρέχει 2η load
>>> Αρχίζω να αναρωτιέμαι διάφορα πράγματα για το consistency της
>>> διαδικασίας...
>>>
>>> Γ)
>>> Επίσης σε περίπτωση που έχουμε superscalar αρχιτεκτονική και έχουμε ας
>>> πούμε δύο cdb,
>>> γράφουν ταυτόχρονα στην cache?
>>>
>>> Δ)
>>> Τέλος κάτι ίσως προφανέστερο των παραπάνω.
>>> Αν έχουμε 2- superscalar αρχιτεκτονική π.χ και έχουμε δύο data bus, αλλά
>>> η μνήμη μας παρέχει ένα port, τότε υποθέτω ότι έχουμε bottleneck και θα
>>> αναγκαστεί η μία εκ των δύο load ακόμα και αν είναι για ανεξάρτητα block να
>>> περιμένει σωστά?
>>>
>>> Ευχαριστώ πολύ προκαταβολικά
>>> Μανόλης.
>>
>>
>> +) Επίσης ένα πάλι παράδοξο σενάριο είναι να έχουμε:
>>
>> ld/st r1, 0 ( address )
>> ld/st r2, 0 ( address' )
>>
>> 1) να βρίσκεται το block της address στην cache
>> 2) το block της address και της address' στην cache συμπίπτουν
>> Από απορία τι συμβαίνει δεδομένου ότι το hit time στο πρώτο είναι 2 ή 3
>> και το miss time στο r2 είναι 5.
>> Καθώς μεταφέρεται κάτι από τον επεξεργαστή στην cache ταυτόχρονα
>> μεταφέρεται και από την μνήμη στην cache?
>> Πάλι το consistency μου φαίνεται περίεργο.
>
>



-- 
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


More information about the Advcomparch mailing list