2011-10-16 7 views
0

J'ai étudié ce qui compose un processeur et comment la mémoire à accès aléatoire est structurée, mais je ne comprends pas registre pour enregistrer les opérations de comparaison. "Pourquoi enregistrer pour enregistrer des opérations de comparaison généralement plus rapide que l'opération équivalente sur deux entrées de données dans la mémoire vive?"Enregistrez-vous pour enregistrer des comparaisons

Répondre

0

L'accès RAM, lorsqu'il se trouve à l'extérieur du cache, est très lent. Accéder aux données sur votre module DDR3 est plusieurs centaines de fois plus lent que d'accéder aux registres (ou même au cache L1). Les processeurs de bureau (ou de serveur ou d'ordinateur portable) d'aujourd'hui perdent la plupart de leur temps pour accéder à des données en dehors de leur cache (L1), par ex. sur les modules RAM DDR3. Pour mettre les chiffres en perspective: l'accès à un registre ou à une donnée L1 mise en cache prend au plus quelques cycles (donc, sur une machine 3GHz cela veut dire typiquement une nanoseconde). L'acquisition de données sur vos modules RAM DDR3 prend environ 200 ou 300 nanosecondes. Pendant tout ce temps, votre processeur pourrait exécuter plus d'une centaine d'instructions machine.

C'est pourquoi la localité de données est de plus en plus importante. Et cela a des conséquences même sur le code que nous écrivons: l'analyse d'une liste chaînée peut être beaucoup plus lente que l'analyse d'un tableau.

Les détails sont difficiles: il est très difficile de prédire le pire temps d'exécution d'une petite routine sur les processeurs actuels.