Καλησπερα,ασχολουμαι με την φετινη 3η ασκηση και συγκεκριμενα στο Β κομματι που εχουμε και ROB.εχω τις 2 εξης αποριες:1)στη πρωτη εντολη LD F0,8(R1) γιατι εμείς αρχικά κάνουμε load το Α[1] και οχι το Α[0]?2)μηπως θα ητάν εύκολη μια σύντομη περιγραφη ενός global predictor (1,1) η αν υπαρχει καποιο παραδειγμα που μπορω να δω για να καταλαβω τη μεταβολη του history?ευχαριστω εκ των προτερων
1) Στην άσκηση υποθέτουμε ότι ο R1 περιέχει τη διεύθυνση βάσης ενός πίνακα, δηλαδή η διεύθυνση 0(R1)=A(0). Στη load όμως δίνει offset οπότε αφού φορτώνεις το 8(R1) τότε προφανώς φορτώνεις το A(1).
2) Τσέκαρε τις διαφάνειες του μαθηματος απ'τη σελίδα 30 και μετά για τους two-level predictors. (μ,ν) σημαίνει ότι ο προβλέπτης κρατά ιστορικό των τελευταίων μ διακλαδώσεων. Δηλαδή υπάρχει ένας καταχωρητής μήκους μ bits (Branch History Register) στον οποίο αποθηκεύονται 0 ή 1 ανάλογα με τα αποτέλεσματα των τελευταίων μ διακλαδώσεων. Αυτό σημαίνει ότι υπάρχουν 2^μ πιθανοί συνδυασμοί taken/not taken για τις τελευταίες μ διακλαδώσεις. Αν το σκεφτείς κι αλλιώς ένας δυαδικός αριθμός μ ψηφίων μπορεί να πάρει 2^μ διαφορετικές τιμές.
Εκτός απ'τον BHR, τώρα, υπάρχει ένας πίνακας (Pattern History Table) από ν-bit προβλέπτες όπου η κάθε καταχώρηση του πίνακα αντιστοιχεί στην πρόβλεψη για το εκάστοτε ιστορικό.
Ένας (1,1) global predictor λοιπόν διατηρεί ιστορικό μίας διακλάδωσης, άρα ενός μπιτ, κι έτσι έχουμε δύο περιπτώσεις: 0 ή 1. Για τις δύο αυτές περιπτώσεις διατηρούμε 2 ξεχωριστούς προβλέπτες του 1 μπιτ. Αν η πιο πρόσφατη διακλάδωση ήταν 0 (not taken) τότε στην επόμενη διακλάδωση η πρόβλεψη θα προέλθει απ'τον πρώτο 1-bit προβλέπτη. Αν η πιο πρόσφατη διακλάδωση ήταν 1 (taken) τότε στην επόμενη διακλάδωση η πρόβλεψη θα προέλθει απ' τον δεύτερο 1-bit προβλέπτη.
Πρόσεξε όμως ότι μόλις γίνει γνωστό το πραγματικό αποτέλεσμα της διακλάδωσης ενημερώνεται μόνο ένας εκ των δύο 1-bit predictors που διαθέτεις! Όχι και οι δύο! Ενημερώνεις, δηλαδή, μόνο αυτόν που χρησιμοποιηθηκε.
Ελπίζω να βοήθησα!
On Tue, 3 Jul 2012 18:06:18 +0300, manos panagiwtakhs wrote:
Καλησπερα, ασχολουμαι με την φετινη 3η ασκηση και συγκεκριμενα στο Β κομματι που εχουμε και ROB.εχω τις 2 εξης αποριες: 1)στη πρωτη εντολη LD F0,8(R1) γιατι εμείς αρχικά κάνουμε load το Α[1] και οχι το Α[0]? 2)μηπως θα ητάν εύκολη μια σύντομη περιγραφη ενός global predictor (1,1) η αν υπαρχει καποιο παραδειγμα που μπορω να δω για να καταλαβω τη μεταβολη του history? ευχαριστω εκ των προτερων
advcomparch@lists.cslab.ece.ntua.gr