Αν κατάλαβα καλά, για τον υπολογισμό του IPC θα χρησιμοποιήσουμε τον ακόλουθο τύπο: IPC= Instructions / Cycles όπου Instructions=1,000,000,000 και Cycles= 1,000,000,000 + (L1D_misses+L1I_misses)*L1_penalty + L2_misses*L2_penalty. Στο μάθημα όμως αλλά και στη mailing list την περσινή, αναφέρατε ότι ο υπολογισμός των κύκλων μπορεί να γίνει και από τα στατιστικα, γι' αυτό και το script καλεί 2 φορές τις pstat, ptime, ούτως ώστε να υπολογίσουμε το σωστό αριθμό κύκλων. Πώς μπορεί να γίνει αυτό; Αφού στα αποτελέσματα που παίρνουμε, τα cycles και total instructions είναι πάντα ίσα και απέχουν από την πρώτη φορά που καλέσαμε τις pstat, ptime αριθμό ίσο με 1,000,000,000 που είναι ο αριθμός των εκτελούμενων εντολών. Κάτι είχατε αναφέρει στο μάθημα για υπολογισμό μέσω της L1 cache είτε από μια αφαίρεση των τελικών στατιστικών από τα αρχικά, αλλά δεν το είχα συγκρατήσει. Μπορείτε να το επαναλάβετε εδώ;
On 2/6/2010 3:57 μμ, Panayiotis Hadjichristodoulou wrote:
Αν κατάλαβα καλά, για τον υπολογισμό του IPC θα χρησιμοποιήσουμε τον ακόλουθο τύπο: IPC= Instructions / Cycles όπου Instructions=1,000,000,000 και Cycles= 1,000,000,000 + (L1D_misses+L1I_misses)*L1_penalty + L2_misses*L2_penalty. Στο μάθημα όμως αλλά και στη mailing list την περσινή, αναφέρατε ότι ο υπολογισμός των κύκλων μπορεί να γίνει και από τα στατιστικα, γι' αυτό και το script καλεί 2 φορές τις pstat, ptime, ούτως ώστε να υπολογίσουμε το σωστό αριθμό κύκλων. Πώς μπορεί να γίνει αυτό; Αφού στα αποτελέσματα που παίρνουμε, τα cycles και total instructions είναι πάντα ίσα και απέχουν από την πρώτη φορά που καλέσαμε τις pstat, ptime αριθμό ίσο με 1,000,000,000 που είναι ο αριθμός των εκτελούμενων εντολών. Κάτι είχατε αναφέρει στο μάθημα για υπολογισμό μέσω της L1 cache είτε από μια αφαίρεση των τελικών στατιστικών από τα αρχικά, αλλά δεν το είχα συγκρατήσει. Μπορείτε να το επαναλάβετε εδώ;
On 06/02/2010 03:57 PM, Panayiotis Hadjichristodoulou wrote:
Αν κατάλαβα καλά, για τον υπολογισμό του IPC θα χρησιμοποιήσουμε τον ακόλουθο τύπο: IPC= Instructions / Cycles όπου Instructions=1,000,000,000 και Cycles= 1,000,000,000 + (L1D_misses+L1I_misses)*L1_penalty + L2_misses*L2_penalty. Στο μάθημα όμως αλλά και στη mailing list την περσινή, αναφέρατε ότι ο υπολογισμός των κύκλων μπορεί να γίνει και από τα στατιστικα, γι' αυτό και το script καλεί 2 φορές τις pstat, ptime, ούτως ώστε να υπολογίσουμε το σωστό αριθμό κύκλων. Πώς μπορεί να γίνει αυτό; Αφού στα αποτελέσματα που παίρνουμε, τα cycles και total instructions είναι πάντα ίσα και απέχουν από την πρώτη φορά που καλέσαμε τις pstat, ptime αριθμό ίσο με 1,000,000,000 που είναι ο αριθμός των εκτελούμενων εντολών. Κάτι είχατε αναφέρει στο μάθημα για υπολογισμό μέσω της L1 cache είτε από μια αφαίρεση των τελικών στατιστικών από τα αρχικά, αλλά δεν το είχα συγκρατήσει. Μπορείτε να το επαναλάβετε εδώ;
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
Καλησπέρα,
προφανώς σε μια προσομοίωση μπορείτε να χρησιμοποιήσετε τις pstat, ptime κτλ για να παρακολουθήσετε τα διάφορα στατιστικά που σας ενδιαφέρουν. Το θέμα όμως είναι αυτά να είναι ακριβή :-)!
Στη συγκεκριμένη άσκηση έχουμε προτείνει να χρησιμοποιήσετε τις caches θέτοντας μηδενικά penalties. Επομένως, τα στατιστικά που δίνει ο simics δεν είναι ακριβή και για αυτό σας έχουμε δώσει το θεωρητικό μοντέλο που θα χρησιμοποιήσετε για να υπολογίσετε τον αριθμό των κύκλων. Αν τώρα κάποιος ορίσει μη μηδενικά cache penalties, τότε προφανώς θα μπορεί να χρησιμοποιήσει τις pstat, ptime για τους αντίστοιχους υπολογισμούς.
Κ.
advcomparch@lists.cslab.ece.ntua.gr