[Advcomparch] Απορίες πάνω στα θέματα της εαρινής του 2013

Konstantinos Nikas knikas at cslab.ece.ntua.gr
Mon Sep 8 17:40:00 EEST 2014


> Όταν κάποιος επεξεργαστής κάνει read
> miss, θέλει 2 κύκλους για το BusRd και επιπλέον 8 κύκλους για να φέρει το
> δεδομένο από την κύρια μνήμη ή από την cache του άλλου επεξεργαστή? Και αφού
> έρθει το block στην cache του θα κάνει ακόμα 1 κύκλο για να ξαναδιαβάσει και
> να κάνει hit? Δηλαδή θα έχουμε συνολικά 2+8+1 κύκλους ή 2+8?

2+8

>
> Τέλος, πάνω στο θέμα του load flush που ρώτησε ένας συνάδελφος νωρίτερα,
> ακόμα δηλαδή κι αν δεν έχει ολοκληρωθεί το EX του load όταν γίνει flush, από
> τη στιγμή που ξεκινά θεωρούμε ότι αν εμείς αργότερα στον κώδικα κάνουμε
> access δεδομένα που θα έφερνε αυτό το load στην cache, θα κάνουμε hit?

Το ξαναλέω και πιστεύω ότι είμαι αρκετά σαφής:

Ο επεξεργαστής κάποια στιγμή στέλνει ένα request στη μνήμη. Αν για
κάποιο λόγο αποφασίσει ότι δε το χρειάζεται πια (π.χ. γιατί βρισκόταν
σε κάποιο misspredicted branch), ΔΕΝ ζητά από τη μνήμη να το ακυρώσει.

Κ.

>
> Η.Κ.
>
> Στις 8 Σεπτεμβρίου 2014 - 2:44 μ.μ., ο χρήστης Konstantinos Nikas
> <knikas at cslab.ece.ntua.gr> έγραψε:
>>
>> Καλησπέρα,
>>
>> >
>> > Στο θέμα 2ο της εαρινής του 2013 όταν δυο επεξεργαστές έχουν το ίδιο
>> > block
>> > σε κατάσταση shared και το ζητήσει ένας τρίτος, κατάσταση που συμβαίνει
>> > για
>> > την πρόσβαση P3: read 0x00000000, τότε υποθέτουμε ότι ένας από τους
>> > άλλους
>> > δυο θα στείλει το block στον P3?
>>
>> Η εκφώνηση είναι σαφής και ορίζει ότι το πρωτόκολλο χρησιμοποιεί
>> cache-to-cache transfers.
>>
>> > Κι αν ναι, αυτός που θα το στείλει επιλέγεται στην τύχη?
>>
>> Στη συγκεκριμένη περίπτωση ναι (ή ότι άλλο θέλετε να υποθέσετε).
>>
>> > Επίσης, στην ίδια περίπτωση θα έχουμε μεταφορά προς τη
>> > μνήμη?
>>
>> Εφόσον η κύρια μνήμη είναι updated, για ποιό λόγο να ενημερωθεί ξανά;
>>
>>
>> > Όταν κάνουμε miss τότε θέλουμε 8 κύκλους για να φέρουμε το δεδομένο στη
>> > μνήμη. Μέσα σε αυτούς τους 8 κύκλους θεωρούμε ότι γίνεται και η ανάγνωση
>> > του
>> > δεδομένου από τον επεξεργαστή ή, όπως λέγαμε και στο 5ο εξάμηνο,
>> > ξαναεκτελείται η εντολή μετά την μεταφορά και κάνει hit, οπότε θέλουμε
>> > συνολικά 8+1 κύκλους?
>>
>> Στο συγκεκριμένο θέμα θεωρούμε ότι οι 2 κύκλοι του BusRdX/BusRd
>> περιέχουν και το access (το οποίο οδηγεί σε miss και άρα σε bus
>> transaction). Είναι αλήθεια ότι δεν ήταν πολύ καλά ορισμένο και δόθηκε
>> διευκρίνιση. Σε άλλα θέματα, η περιγραφή είναι καλύτερη.
>>
>> Επομένως το miss παίρνει τουλάχιστον 2 κύκλους. Η συνολική διάρκεια
>> εξαρτάται από το τι πρέπει να κάνεις με δεδομένα κτλ.
>>
>> > Όταν δυο διαφορετικά blocks της μνήμης μας κάνουν map στο ίδιο
>> > cache-line τότε το ένα δεν μπορεί να ακυρώσει το άλλο, ε?
>>
>> Νομίζω ότι σε αυτό δεν χρειάζεται να απαντήσω.
>>
>> Κ.
>>
>>
>> --
>> 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
>
>
>
>
> --
> Ilias-Stylianos Karabasis
> +30 6976724404
> Studeng at School of Electrical
> & Computer Engineering
> National Technical University of Athens
>



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