2010-12-01 30 views
1

Je voudrais déterminer dans quelle mesure le code C utilise efficacement le cache du processeur et, si possible, déterminer quelles données sont présentes dans le cache et ce qui est stocké dans la mémoire principale (bien que cela soit plus agréable d'avoir) - y at-il un logiciel là-bas qui peut le faire? Je sais que cela ne rentre pas dans les attributions du débordement de pile, bien que cela soit bien sûr lié à la programmation, car j'ai l'intention de l'utiliser comme un outil pour tester le code que j'écris. S'il y a un endroit plus approprié, s'il vous plaît faites le moi savoir/mods déplacer cette question.Détermination de l'efficacité du cache processeur du code C

De plus, je préférerais (beaucoup) le logiciel à Mac OS X/Unix.

Merci!

+0

Cette efficacité ne dépend pas du processeur, car le compilateur C n'a pas beaucoup de contrôle sur l'utilisation du cache - en plus du choix des instructions? –

+0

@ ring0 - absolument, donc je m'attendrais à ce que le logiciel s'adapte au processeur particulier testé (et donc bien sûr les résultats ne sont pas applicables à différents processeurs). En termes de C - il serait utile d'avoir la possibilité pour l'outil d'indiquer, en termes de code C via les symboles de débogage générés, quel code est un hotspot pour les échecs de cache, si des structures de données entières sont dans le cache, etc. . – ljs

Répondre

3

Différents profileurs peuvent capturer des profils basés sur des échecs de cache comme alternative à l'échantillonnage basé sur un intervalle de temps régulier. Cela vous donnera une idée de l'endroit où dans votre programme vous n'utilisez pas efficacement le cache. Sur Mac OS X, consultez Shark (disponible gratuitement dans le package d'outils CHUD). Sous Linux, essayez Zoom (commercial, mais il existe une licence d'évaluation gratuite de 30 jours).