8Close10
SCPCDOn the 2022-05-06 at 08:41pm
DEATH (./5) :
(tes photos ne sont pas passées)
Chez moi ça marche (c)
Quelqu'un à une idée de comment les afficher correctement ? (j'ai mis sur mon site vu que le "envoyer un fichier depuis votre ordinateur" n'avait pas l'air de fonctionner et j'ai la flemme de retester)


Si le pipeline et le prefetch fonctionne réellement lors d'accès à la DRAM, alors il y a clairement un manque d'optimisation du fonctionnement. 10 cycles entre 2 accès DRAM ? Sérieux ? Désolé mais c'est injustifiable. De toute façon il y a tellement de latence entre 2 accès que du coup,
le pipeline ne sert à rien puisque le temps que le chargement suivant s'effectue, tout le pipeline est déjà vide.
Non, ce n'est pas un "manque d'optimisation", c'est tout simplement l'effet de bord de la synch successif de signaux et tu peux pas y couper si tu veux monter en fréquences.


La 1ere optimisation serait de latcher les données venant du bus dram directement dans le buffer du prefetch, et si possible et si nécessaire de latcher les 1er 16bit dans le 1er étage du pipeline. On gagne plusieurs cycles sur un évènement qui a des chance de se produire fréquemment (prefetch vide, 1er étage du pipeline vide)
C'est tout simplement impossible de faire ça car non seulement ça va être super compliquer à coder, mais en plus tu oublies tous les problèmes de partage de bus ainsi que tous les problèmes de temps de propagation d'avoir des MUX de partout sur un bus de 64-bit et le tout sans compter les problèmes de fonderie.


D'après ce que tu dis, la logique du contrôleur mémoire DRAM est mal optimisé et il n'y a aucune gestion de prefetch à ce niveau.
Non, ce n'est pas "mal optimisé", c'est juste que le GPU n'est pas seul sur le bus et donc il faut aussi de la logique pour gérer les priorités et le partage de bus et donc il y a des synch.


Je n'invente rien, c'est le b.a-ba d'un processeur "moderne", et je ne parle pas de prédiction. Il vaut mieux charger au max en avance et de tout jeter si nécessaire, que de passer son temps à attendre.
La phase n°1 c'est le prefetch, la phase n°2 c'est un cache, la phase n°3 c'est le superscalaire, la phase n°4 c'est la prédictions avec pre-execution d'instructions en parallèle, la phase n°5 c'est l'hyperthreading.
Ce que tu dis c'est de faire la phase n°4 sur la phase n°1, ce qui n'est pas envisageable car tu vas bouffer la bande passante des autres CPU pour au final ne rien faire : d'où l’intérêt d'avoir implémenté les phases n°2 & 3 avant.
Chaque phase nécessite un niveau d'implémentation plus compliqués et donc de la surface de silicium en plus (sans compter le temps de dev/tests en plus).

Comme dit par Zero, TOM était aux limites de ce qui était possible de faire dans le process utilisé de l'époque, donc ce n'est pas possible de faire beaucoup mieux.
Il y a des défauts, mais c'est comme ça, ce n'est pas possible de faire des miracles non plus wink.