Quels sont les registres du CPU et comment sont-ils utilisés, en particulier WRT multithreading?
Cette question et ma réponse ci-dessous sont principalement en réponse à une zone de confusion dans une autre question.
À la fin de la réponse, il y a quelques questions WRT "volatile" et le fil de synchronisation que je ne suis pas entièrement convaincu sur - je recevoir des commentaires et des réponses alternatives. Le point de la question concerne principalement les registres du CPU et de la façon dont ils sont utilisés, cependant.
Pourriez-vous un lien à l'autre question à laquelle vous répondez?
Je ne suis pas entièrement sûr que c'est approprié. Le gars a répondu à une autre question de la mienne, et sa réponse est une réponse correcte à la mauvaise question (ou peut-être que je n'avais pas le mot de la question de droit). Il y avait quelque chose d'étrange à propos de la formulation que j'ai d'abord cru me manquait quelque chose, mais plus tard, m'a amené à croire que le gars répondant ne comprend pas vraiment les registres du CPU. Les commentaires n'étaient clairement pas de travail et n'étaient pas assez longs.
Je ne suis pas entièrement sûr que c'est approprié. Le gars a répondu à une autre question de la mienne, et sa réponse est une réponse correcte à la mauvaise question (ou peut-être que je n'avais pas le mot de la question de droit). Il y avait quelque chose d'étrange à propos de la formulation que j'ai d'abord cru me manquait quelque chose, mais plus tard, m'a amené à croire que le gars répondant ne comprend pas vraiment les registres du CPU. Les commentaires n'étaient clairement pas de travail et n'étaient pas assez longs.
OriginalL'auteur Steve314 | 2010-03-05
Vous devez vous connecter pour publier un commentaire.
Registres du CPU sont de petites zones de stockage de données sur le silicium du PROCESSEUR. Pour la plupart des architectures, ils sont le premier lieu toutes les opérations à faire (données est chargé de la mémoire, de l'opération, et a repoussé).
Quel que soit le thread est en cours d'exécution utilise les registres et possède le pointeur d'instruction (qui dit qui l'instruction qui vient après). Lorsque le système d'exploitation swaps dans un autre thread, tous les CPU de l'état, y compris les registres et le pointeur d'instruction, pour être sauvé, quelque part, effectivement la lyophilisation de l'état du thread pour quand il vient ensuite revenir à la vie.
Beaucoup plus de documentation sur tout cela, bien sûr, tous sur la place. Wikipédia sur les registres. Wikipédia sur la commutation de contexte. pour les débutants. Edit: ou lire Steve314 de réponse. 🙂
Pour être explicite au sujet de quelque chose que certaines personnes parviennent à obtenir confus au sujet de: Chaque thread "voit" comme en cours d'exécution sur un PROCESSEUR unique avec des registres (et le reste de l'architecture de l'état (insn pointeur, drapeau registre)) qu'il a un contrôle total sur, tout comme un programme monothread. Chaque cœur d'un PROCESSEUR multi-core a son propre ensemble de registres. les Threads ne peuvent même pas voir les uns les autres registres, s'ils le voulaient. (débogueurs travail en regardant à l'enregistrer (par l'OS) architecture de l'état alors que la cible thread est suspendu.)
L'Hyperthreading (et d'autres SMT implémentations) fournit plusieurs "logiques" de la Cpu sur un seul matériel de base. c'est à dire un matériel de base peut suivre plusieurs contextes de thread, chacun avec leur propre architecture de l'état (y compris le pointeur d'instruction et de registres). Les Processeurs modernes utilise le registre de renommer utile d'utiliser beaucoup plus de physique des registres de registres architecturaux, alors généralement le physique fichier de registre est juste compétitifs partagé entre la logique des Processeurs (aka threads matériels).
OriginalL'auteur Ben Zotto