En cas de cache miss, si ton processeur fait des acces memoires asynchrones, tu ne prends pas la penalite. Tu prends la penalite au moment ou tu tentes d'acceder au resultat de ton acces memoire (Dependance read after write). Tu vas avoir du mal a compense cette penalite, car si ton compilo a bien fait les choses, toutes les operations suivantes decoulent de cette lecture (Actuellement avec une representation sous forme d'automate du processeur et avec une bonne description de son fonctionnement, tu peux obtenir de bon resultat avec gcc).
Donc je ne vois pas ou l'out-of-order va pouvoir faire quelque chose, a part continuer a charger les unite de reservation avec des calculs qui ne pourront de toute facon pas s'executer. C'est d'ailleur pour ca qu'Intel a mis en place l'hyperthreading sur PIV, c'est pour compenser les bulles du pipeline qui deviennent de plus en plus importante avec l'augmentation de la frequence et que le simple out-of-order ne peut compenser.
Effectivement, il y a de l'alea dynamique, mais le compenser n'est necessaire que si le code que tu utilises ne prend pas ou peu en compte la structure du processeurs. Le cas qui se presente pour toutes les familles de processeurs ayant une compatibilite binaire, ou forcement l'out of order est utile.
Je penses que si on a les sources et que l'on peut decrire suffisemment precisement l'automate qui represente le processeur, le code produit n'utilisera pas ou peu les capacites out of order de la machine cible.
[^] # Re: open Hardware
Posté par cedric . En réponse au journal open Hardware. Évalué à 1.
Donc je ne vois pas ou l'out-of-order va pouvoir faire quelque chose, a part continuer a charger les unite de reservation avec des calculs qui ne pourront de toute facon pas s'executer. C'est d'ailleur pour ca qu'Intel a mis en place l'hyperthreading sur PIV, c'est pour compenser les bulles du pipeline qui deviennent de plus en plus importante avec l'augmentation de la frequence et que le simple out-of-order ne peut compenser.
Effectivement, il y a de l'alea dynamique, mais le compenser n'est necessaire que si le code que tu utilises ne prend pas ou peu en compte la structure du processeurs. Le cas qui se presente pour toutes les familles de processeurs ayant une compatibilite binaire, ou forcement l'out of order est utile.
Je penses que si on a les sources et que l'on peut decrire suffisemment precisement l'automate qui represente le processeur, le code produit n'utilisera pas ou peu les capacites out of order de la machine cible.