Skip to content

SirLentas/cache_simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

cache_simulator

Ζητούμενο

Γράψτε πρόγραμμα assembly MIPS για εκτέλεση στον προσομοιωτή EduMips64 και τον προσομοιωτή κρυφών μνημών DineroIV, το οποίο να εκτελεί τον παρακάτω απλό υπολογισμό:  Εκτελεί την πράξη X=X+YZ, όπου X[i][j], Υ[i][j], Ζ[i][j] τυχαίοι τετραγωνικοί πίνακες (8 byte κάθε ακέραιος – oι Χ, Υ, Ζ αποθηκεύονται στο τμήμα δεδομένων του προγράμματος από την αρχή) με διαστάσεις 50x50 (δηλαδή i, j=0, 1, ..., 49) και αφού ολοκληρώσει την πράξη X=X+YZ, υπολογίζει τον αριθμό των αρνητικών (n), μηδενικών (z) και θετικών (p) αριθμών. Στο τέλος εκτυπώνει τα τρία αυτά αποτελέσματα σε μία γραμμή.  Ο χρόνος εκτέλεσης της εκτύπωσης του αποτελέσματος θα συνυπολογίζεται στο συνολικό χρόνο εκτέλεσης του προγράμματός σας.

Τεκμηρίωση

EduMips64

Οι πίνακες που χρησιμοιποήθηκαν περιέχουν τυχαίους αριθμούς απο το -127 μεχρι το 127. Η ανολογία αρνιτικών με θετικών αριθμων έχει καθοριστεί με τυχαιότητα 50% αρνιτικοι 50% θετικοί. Στην αρχή του κωδικά έχουμε ορίσει τις αναλογες μεταβλητές που ζητάτα η άσκηση στους αντιστιχους καταχωρητές ως εξής :

Ο R2 αντιστιχεί στο i

Ο R3 αντιστιχεί στο j

Ο R4 αντιστιχεί στο k

Ο R7 αντιστιχεί στο X[i,j]

Ο R9 αντιστιχεί στο Z[i,j]

Ο R11 αντιστιχεί στο Y[i,j]

Ο R5 αντιστιχεί στην μεγιστη διάσταση του πινακα (50)

Ο R14 αντιστιχεί το πλήθος των μηδενικών

Ο R15 αντιστιχεί το πλήθος των θετικών

Ο R16 αντιστιχεί το πλήθος των αρνητικών Για τον υπολογισμού του στοιχείου x[i,j] χρησιομοποιήτε μια τριπλή εμφολευμένη επανάληψη η οποία έχει την εξή δομη for j=1 μεχρι 50 1 for k=1 μεχρι 50 2 for i=1 μεχρι 50 3 end end end Η επανάληψη αυτή μας βοηθάει να υπολογίσουμε το γινόμενο των πινάκων Υ[i][j] * Ζ[i][j] Στον 2ο βρογχο καθε φορά φορτώνουμε την τιμή του X[i,j] και αρχικοποιπούμε το offset στην αρχή της κάθε γραμμής και της κάθε στηλής οπου θα γίνει ο πολλαπλασιαμός. Στον 3ο βρόγχο γίνεται ο πολλαπλασιασμός του στοιχείου Z[k,j] * Y[i,k] όπου το αποτέλεσμα φορτώνετε στον καταχωρητή low και από εκεί το βάζουμε στον καταχωριτή r12.Στην συνέχεια γίνετε η πρόσθεση με το X[i,j] και το αποτέλεσμα και το αποτέλεσμα φυλάσσετε στον καταχωρητή R7.Μετά το τέλος της επανάληψης η τιμή του R& ελέγχετε αν είναι μηδενική ,θετική ή αρνητική. Στην αρχή θεωρήσαμε ότι οι θετικοί αριθμοί είναι 2500 και στην συνέχεια μετά από κάθε έλεγχο που γίνετε στον καταχωρητή R7 αν ο αριθμός είναι αρνητικός ή μηδενικό τότε το πλήθος τον θετικών μειώνετε και αυξάνετε ο ανάλογος μετρητής. Μετά το τέλος των επαναλήψεων το πρόγραμμα τυπώνει το πλήθος των θετικών, των αρνητικών και τα μηδενικά που παρουσιαστήκαν.

Dinero

Οι επιλογές σχεδίασης με βάση τις οποίες βρήκαμε τον καλύτερο συνδυασμο μεταξύ αποδοσης και υλικου είναι η ενιαία μνημη Cache L1 με μεγεθος 16Κ bytes, μεγεθος μπλοκ 4, 2-way associativity και μεγεθος μπλοκ L2 16. Έτσι το συνολικό CPI = [((1762365)+(358060)+1283918)/1157657]*[(1000/900)+(2%)], όπου 176236 είναι τα L1 misses και 3580 είναι τα misses του L2.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published