2017-06-10 1 views
0

J'essaie de calculer le taux de succès du cache d'instruction. J'ai simulé une cache dans mon simulateur et l'ai alimenté avec un PC. Je me demande si je dois rapporter le taux de succès en tant que le nombre de PC trouvés dans le cache ou le nombre de PC qui sont trouvés ET un champ d'OpCode d'eux est assorti?Est-ce que l'instruction cache cache l'opcode?

Ces questions remontent à la nature du but du cache d'instructions. Est-ce que le cache d'instructions est utilisé pour récupérer les OpCodes? Comme nous l'avons dans Buffer Target Buffer (BTB) dans lequel nous stockons la cible de branche. Dans le cas de BTB, nous calculons le taux de réussite une fois que le PC est touché et que les cibles correspondent. (plus en détail: et une fois que le prédicteur de branche prédit correctement et que la branche est prise.) Je veux savoir s'il existe une telle chose pour le cache d'instructions.

Répondre

1

Vous confondez le concept de prédicteur de branche et de cache. Les prédicteurs de branche sont utilisés pour prédire le résultat de la branche. Si la branche est prédite, le PC suivant est pris dans le BTAC (cache d'adresse cible de branche). Les informations de hit sont fournies plus tard lorsque la cible et la direction de la branche réelle sont calculées. C'est ici que vous comparez la direction prédite et le résultat de la branche avec les résultats réels. Vous obtenez un coup si tous les match. D'autre part, les caches sont utilisés pour stocker des données pour donner un accès rapide aux données à la CPU. Donc, vous n'auriez pas besoin de comparer les "opcodes" pour obtenir un coup.

Bien que vous ayez toujours besoin de stocker les opcodes pour pouvoir les récupérer lors d'un hit. Pour obtenir un accès au cache, vous devez simplement obtenir le tag de la ligne de cache valide et le comparer avec le tag actuel. Ici, la balise n'est rien d'autre que quelques bits du PC en fonction de l'implémentation de votre cache.