[Advcomparch] MESI protocol

Konstantinos Nikas knikas at cslab.ece.ntua.gr
Mon Jul 6 17:08:50 EEST 2015


Καλησπέρα,

σχετικά με διάφορες ερωτήσεις που έχουν γίνει στη λίστα ή και εκτός
αυτής για το MESI protocol:

1. Γενικότερα έχουν προταθεί και υλοποιηθεί διάφορες εκδόσεις του
MESI. Εμείς στο μάθημα χρησιμοποιούμε την αρχική έκδοση, όπως αυτή
περιγράφηκε από τους ερευνητές στο University of Illinois και η οποία
είναι γνωστή ως Illinois protocol. Από εκεί είναι και το FSM που
δίνουμε στις διαφάνειες.

2. Στο Illinois protocol χρησιμοποιούνται όπου είναι δυνατό
cache-to-cache transfers. Για αυτό το λόγο όταν μια cache έχει το
block σε E/M, τότε σε περίιπτωση που ζητηθεί από κάποια άλλη κάνει
Flush, δηλαδή παρέχει τα data στον επεξεργαστή που τα ζήτησε. Αν το
block είναι σε S, σημαίνει ότι το αντίγραφο βρίσκεται σε πολλές
caches. Στην περίπτωση αυτή, πρέπει τα data να τα δώσει μόνο ένας
επεξεργαστής ενώ οι υπόλοιποι πραγματοποιούν μόνο την μετάβαση που
προβλέπεται από το FSM χωρίς να μεταδώσουν δεδομένα (δηλ. Flush' =
μόνο 1 επεξεργαστής δίνει data).

3. Όσον αφορά την ενημέρωση της κύριας μνήμης (ή πιο γενικά του
επόμενου επιπέδου της ιεραρχίας) είναι νομίζω προφανές ότι το πιο
εύκολο είναι να πραγματοποιείται σε κάθε flush. Κάθε φορά δηλαδή που
κάποιος επεξεργαστής βάζει data στο bus (είτε κάνει Flush είτε
Flush'), η κύρια μνήμη τα διαβάζει και αυτή και ενημερώνεται (όλες οι
caches και η μνήμη βρίσκονται πάνω στο ίδιο bus). Με αυτό τον τρόπο
διασφαλίζεται ότι όταν ένα block είναι σε κατάσταση S η μνήμη είναι
up-to-date και επομένως δε χρειάζεται να κάνουμε WB όταν κάνουμε evict
ένα S block.

K.

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