Question

Variables registre sont un moyen bien connu pour avoir accès rapide (register int i). Mais pourquoi sont des registres sur le haut de la hiérarchie (registres, cache, mémoire principale, la mémoire secondaire)? Quelles sont toutes les choses qui rendent l'accès aux registres si vite?

Était-ce utile?

La solution

Les registres sont une partie essentielle de la CPU, et une grande partie du jeu d'instructions d'une unité centrale de traitement sera adapté pour travailler contre les registres plutôt que des emplacements de mémoire. Accès à la valeur d'un registre exigera généralement très peu de cycles d'horloge (probablement juste 1), dès que la mémoire est accessible, les choses deviennent contrôleurs / bus mémoire plus complexes et cache Impliquez-vous et l'opération va prendre beaucoup plus de temps.

Autres conseils

Les registres sont des circuits qui sont littéralement câblés directement à l'unité ALU, qui contient les circuits de calcul. Chaque cycle d'horloge, l'unité de registre du noyau de CPU peut alimenter une demi-douzaine de variables dans les autres circuits. En fait, les unités du datapath (ALU, etc.) peuvent alimenter des données entre eux directement, via le réseau de dérivation , qui d'une manière forme un niveau hiérarchique au-dessus de registres - mais ils utilisent encore des registres ont numéros pour traiter les uns les autres. (La section de commande d'une unité centrale de traitement en pipeline entièrement cartes dynamiquement des unités de chemin de données pour enregistrer des numéros).

Le mot-clé register en C ne fait rien utile et vous ne devriez pas l'utiliser. Le compilateur décide quelles variables doivent être dans les registres et quand.

Les registres sont essentiellement la mémoire interne de la CPU. les accès ainsi registres sont plus faciles et plus rapide que tout autre type d'accès mémoire.

Les petits souvenirs sont généralement plus rapides que les grands; ils peuvent également exiger moins de bits à l'adresse. Un mot d'instruction 32 bits peut contenir trois adresses de registre à quatre bits et ont beaucoup de place pour l'opcode et d'autres choses; une adresse mémoire 32 bits serait complètement remplir un mot d'instruction ne laissant aucune place pour rien d'autre. En outre, le temps nécessaire pour adresser une mémoire augmente à une vitesse plus que proportionnelle au log de la taille de la mémoire. L'accès à un mot d'un espace mémoire 4 gig prendra des dizaines, voire des centaines de fois plus longtemps que l'accès à un fichier à partir d'un registre de 16 mots.

Une machine qui peut traiter la plupart des demandes d'information à partir d'un petit fichier de registre rapide sera plus rapide que celui qui utilise pour tout une mémoire plus lente.

Chaque microcontrôleur a une unité centrale de traitement comme le projet de loi mentionné, qui a les composants de base de ALU, un peu de RAM ainsi que d'autres formes de mémoire pour aider à ses opérations. La RAM est ce que vous faites référence à la mémoire principale.

L'ALU gère l'ensemble des opérations logiques arthimetic et à opérer sur des opérandes pour effectuer ces calculs, il charge les opérandes dans des registres, exécute les opérations sur ceux-ci, puis le programme accède au résultat stocké dans ces registres directement ou indirectement, .

Étant donné que les registres sont les plus proches du coeur de la CPU (a.k.a le cerveau de votre processeur), ils sont plus élevés dans la chaîne et les opérations effectuées directement ofcourse sur les registres prennent le moins de cycles d'horloge.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top