[Advcomparch] Απορίες
Konstantinos Nikas
knikas at cslab.ece.ntua.gr
Thu Apr 3 16:05:17 EEST 2014
ΟΚ τώρα κατάλαβα. Ναι προφανώς χρειάζεσαι και το συνολικό αριθμό των
entries. Στη συγκεκριμένη περίπτωση δίναμε 16 entries.
Απλά είχε γίνει κάποιο λάθος κατά τη δημιουργία των λύσεων. Το
διορθώσαμε (μαζί με άλλο ένα λάθος στο ίδιο θέμα) και το ανεβάσαμε στο
site.
K.
2014-04-03 15:53 GMT+03:00 George Matikas <g_matikas at hotmail.com>:
> Σας ευχαριστώ για την άμεση απάντηση στις απορίες μου!
>
> Όσον αφορά την 3η απορία μου:
>
> 3) Αυτό που εννοώ είναι ότι, πέραν του μεγέθους (2, 2) για τον global
> history predictor, δεν χρειαζόμαστε και τον αριθμό των bits που
> διευθυνσιοδοτούν τον πίνακα PHT; Γιατί από το μέγεθος (2, 2) αυτό
> που συμπεραίνουμε μόνο είναι ότι για κάθε εγγραφή του PHT έχουμε
> 4 2-bit predictors. Αλλά χωρίς τον αριθμό bit που ανέφερα παραπάνω
> δεν γνωρίζουμε πόσες εγγραφές έχει ο PHT συνολικά και οπότε δεν
> μπορούμε να συμπεράνουμε αν τα δύο branches “πέφτουν” τελικά
> πάνω στην ίδια τετράδα 2-bit predictors του PHT (αν δηλαδή έχουμε
> aliasing) ή αν πέφτουν σε διαφορετικές τετράδες.
>
> Ευχαριστώ,
> Ματίκας Γεώργιος
>
>
> On Thursday, 3 April 2014 at 12:48 μ.μ., Konstantinos Nikas wrote:
>
>> Καλημέρα,
>>
>> 1) Τα παραδείγματα στα οποία αναφέρεσαι είναι από το βιβλίο (Παράρτημα
>> Α5, σχήματα Α33, Α34 στην ελληνική (3η) έκδοση), όπου μπορείς να βρεις
>> λίγο παραπάνω λεπτομέρειες.
>>
>> Στη διαφάνεια 40 η εντολή κάνει stall γιατί όπως έχουμε μάθει στο απλό
>> 5-stage pipeline δεν μπορεί να βρίσκεται παραπάνω από μια εντολή στο
>> ίδιο στάδιο. Όπως όμως λέει το κείμενο (και εμείς στην παράδοση),
>> μπορεί το πρόβλημα αυτό να αντιμετωπιστεί με επιπλέον υλικό. Έτσι
>> καταλήγουμε στη διαφάνεια 41, όπου σωστά υποθέτεις ότι οι εντολές
>> μπορούν να βρίσκονται ταυτόχρονα στο ΜΕΜ, καθώς μόνο μια από αυτές
>> χρησιμοποιεί τη μνήμη και άρα δεν υπάρχει πραγματικός structural
>> hazard.
>>
>> 2) Το loop unrolling προφανώς βοηθάει στα control stalls. Βοηθάει όμως
>> και στα data hazards stalls (αναφερόμαστε πάντα σε in-order
>> επεξεργαστή). Σκέψου τον εξής κώδικα:
>>
>> for(i = 0; i < N; i++)
>> a[i]++;
>>
>> o οποίος σε επίπεδο assembly είναι ld -> add -> st με RAW
>> dependencies, τα οποία προκαλούν stalls. Αν κάνεις unrolling, τότε ο
>> compiler θα μπορέσει να αναδιατάξει τις εντολές και να επικαλύψει έτσι
>> τα stalls με χρήσιμη δουλειά.
>>
>> 3) Δεν είμαι σίγουρος ότι καταλαβαίνω τι με ρωτάς. Όταν λέμε ότι
>> υπάρχει ένας global history predictor, δίνουμε και τα χαρακτηριστικά
>> του (στο θέμα που αναφέρεις λέμε ότι είναι (2,2)) με βάση τα οποία
>> μπορείτε να τον "σχεδιάσετε" και να καταλάβετε τη δομή και τη
>> λειτουργία του.
>>
>> Κ.
>>
>>
>> 2014-04-03 2:46 GMT+03:00 George Matikas <g_matikas at hotmail.com (mailto:g_matikas at hotmail.com)>:
>> > Γεια σας!
>> >
>> > Καθώς προετοιμάζομαι για την ερχόμενη εξέταση της Παρασκευής μου γεννήθηκαν
>> > κάποιες απορίες. Θα μπορούσατε να με βοηθήσετε να τις λύσω;
>> >
>> > 1) Στις διαφάνειες "Lec1-overview-13" στη σελίδα 41, αναφέρει ότι υπάρχει το ενδεχόμενο
>> > να εμφανιστεί structural hazard λόγω ταυτόχρονης εγγραφής του register file στο στάδιο WB.
>> > Ωστόσο, πιστεύω ότι αυτό δεν είναι εφικτό, αφού πάντα πριν το στάδιο WB βρίσκεται στο
>> > pipeline του παραδείγματος το στάδιο MEM. Άρα θα έχουμε εκεί structural hazard και
>> > επομένως stall και δεν θα συμπέσουν ποτέ 2 WB στάδια. Μία σκέψη που μου πέρασε από το
>> >
>> > μυαλλό είναι ότι δεν μας πειράζει που θα πέσουν δύο ή περισσότερα στάδια MEM μαζί από
>> > τη στιγμή που οι εντολές αυτές δεν κάνουν τίποτα στα στάδια αυτά (δηλαδή δεν διαβάζουν
>> > ή γράφουν τη μνήμη), οπότε και γι’ αυτό επιτρέπουμε να πέσουν μαζί και δεν έχουμε stall
>> > όπως ανέφερα παραπάνω. Ωστόσο, η σκέψη αυτή αναιρείται από την προηγούμενη σελίδα
>> > των διαφανειών (σελ. 40) όπου τοποθετείται ένα επιπλέον stall ανάμεσα στις 2 τελευταίες
>> > εντολές για να μην συμπέσουν τα στάδια MEM τους, παρόλο που η μία δεν κάνει τίποτα σε
>> > αυτό το στάδιο.
>> >
>> > 2) Στις διαφάνειες αναφέρετε συχνά σε ένα συγκεκριμένο slide (πχ "Lec5-dynamic-13.pps”
>> > σελ. 3) ότι το loop unrolling βοηθάει στα Data Hazard Stalls, αλλά δεν μπορώ να καταλάβω
>> >
>> > γιατί αυτό συμβαίνει. Μήπως το βελάκι προοριζόταν να δείχνει ότι το loop unrolling βοηθάει
>> > στα Control Stalls;
>> >
>> > 3) Όταν αναφέρετε ότι μας δίνεται “ένας” global history predictor, όπως πχ στο θέμα 3 της
>> > εξέτασης Ιουλίου 2010, εννοείται ότι κάθε εντολή άλματος έχει τις δικιές της εγγραφές
>> > στον PHT με βάση τα τελευταία bits του PC ή ότι όλες έχουν το ίδιο σετ εγγραφών και
>> > όλες χρησιμοποιούν αυτό;
>> >
>> >
>> > Ευχαριστώ εκ των προτέρων,
>> > Ματίκας Γεώργιος
>> >
>> >
>> > _______________________________________________
>> > Advcomparch mailing list
>> > Advcomparch at lists.cslab.ece.ntua.gr (mailto:Advcomparch at lists.cslab.ece.ntua.gr)
>> > http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>>
>>
>>
>>
>>
>> --
>> 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 (mailto:knikas at cslab.ece.ntua.gr)
>> http://www.cslab.ece.ntua.gr/~knikas
>
>
>
--
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