Inscrivez-vous aborder le mode vs Direct mode d'adressage
J'ai rencontré cette question dans un test papier. Il a déclaré,
Lequel de ces modes d'adressage est le plus rapide? Pourquoi?
- Registre mode d'adressage
- Direct mode d'adressage
Maintenant, selon moi, inscrivez-vous aborder mode devrait être plus rapide que le registre est le plus rapide de l'emplacement de la mémoire dans l'ordinateur. Est-ce la bonne réponse?
S'il vous plaît aider. Grâce
OriginalL'auteur Fahad Uddin | 2012-05-02
Vous devez vous connecter pour publier un commentaire.
Registre accède à la plus rapide. Toutefois, l'accès à la mémoire peut être rapide si les données de la mémoire que vous souhaitez accéder est déjà dans la CPU cache de données.
Aussi, je vous serais très reconnaissant si vous clair que la valeur directe, je suis en train seront stockées dans la mémoire principale, à droite?
Premiers résultats de recherche: 1, 2.
Je sais à propos de cache. Même si sa cache, cache de mémoire est plus lent comparativement au registre de la mémoire en raison de sa taille, donc inscrivez-vous aborder devraient être mieux en tout cas.
c'est la comparaison entre le registre et pas seulement la mémoire, mais de mémoire c'est une partie de l'instruction décodée (et se trouve dans le code cache pas cache de données si cette réponse n'est pas trop profond et il est plus inutile de l'omi que utile )
OriginalL'auteur Alexey Frunze
La différence entre les deux modes d'adressage est...la source de l'adresse...Pour direct mode d'adressage l'adresse de l'élément à être accessible directement codé dans l'instruction, de sorte que l'instruction est plus grand, dans certains cas, beaucoup plus grandes de sorte qu'il exige plus de cycles d'horloge d'accès, idéalement, il est dans le cache, comme c'est le octets immédiatement à la suite de l'opcode et l'extraction de l'opcode provoque normalement au moins une ligne de cache derrière les cheveux, avec rien, mais la plus ancienne des plates-formes x86, je ne vois pas comment vous pouvez l'obtenir à l'endroit où vous êtes l'exécution de l'instruction, sans le reste de l'instruction et de la prochaine quelques/plusieurs instructions déjà les cheveux et dans le tuyau. Même de vieux processeurs x86 avait une récupération de la file d'attente de taille.
Inscrivez-vous aborder signifie que l'adresse de l'élément en cours d'accès est dans un registre. En supposant que l'adresse était déjà là, alors que c'est plus rapide parce que vous n'avez pas de subir la plus grande instruction, extra, cycles, plus de la ligne de cache brûlé pour l'enseignement. Où vous devez être prudent avec cette argument est de dire par exemple l'instruction juste avant le chargement de l'immédiat adresse dans le registre.
Le second est plus rapide que le premier (pour les choses qui peuvent être comparées à ce niveau), en raison de la taille de l'instruction et de cache supplémentaires brûlées et les cycles de prendre.
MAIS
l'adressage direct est plus rapide, car dans l'ensemble il prend moins de cycles d'extraction et d'exécution (pour les choses qui peuvent être comparés).
Ce que je veux dire par des choses qui peuvent être comparés? Le mode d'adressage a à voir avec l'endroit où l'adresse vient DE. une fois que vous commencez à l'EXÉCUTION de cette instruction et d'effectuer un mémoire de cycle, puis les deux sont égaux, c'est une adresse sur un bus, à comparer les deux instructions de la taille des données est le même. il peut très bien être le cas que direct adddressing est plus rapide pour certains programme de test simplement parce que pour que programme de test les données est toujours dans le cache de données, où, pour que le programme de test de la inscrivez-vous aborder version n'est pas ou n'est parfois pas. Donc, les choses qui peuvent être comparées entre les deux instructions sont de la taille de l'instruction, ce qui conduit à des cycles et de la ligne de cache, il brûle. Une ligne de cache peut contenir de nombreux basé sur les registres des instructions, mais seulement quelques-direct/immédiate en fonction des instructions, par aide directe/immédiat, vous avez un coût d'opportunité et d'engager plus de mémoire les cycles lors de l'exécution du programme. OUI, beaucoup de ces cycles sont en parallèle sur quoi que ce soit à distance moderne.
De sorte que ces types de questions ont à faire avec si ou pas, vous comprenez le jeu d'instructions, et en fonction de votre degré de retour, qu'il soit ou non vous comprenez qu'est-ce que les coûts réels sont. Même sans expérience, il suffit d'essayer une expérience ne sera vraisemblablement pas ou ne montrent pas de différence que vous avez de l'artisanat de l'expérience autour de la caches.
Je recommande fortement le livre Le Zen du Langage d'Assemblage par Michael Abrash
http://www.amazon.com/Zen-Assembly-Language-Knowledge-Programming/dp/0673386023/ref=sr_1_1?ie=UTF8&qid=1335971069&sr=8-1
PAS la liberté qui vient avec un gros black de programmation graphique livre que l'on est incomplète. Vous pouvez obtenir une copie utilisée en bon état (acheté une seconde et c'était mieux que mon premier que j'ai acheté dans le magasin et a vécu sur une étagère). Les détails sur 8088 et 8086 ont été dépassées lorsque le livre a été imprimé, qui n'est pas l'importance du livre, l'important est de comprendre comment s'attaquer au problème, comment penser le problème et d'obtenir un élémentaire de mieux comprendre ce qui se passe derrière les coulisses. C'est beaucoup plus compliqué aujourd'hui, toujours compréhensible, mais je recommande de commencer avec une base comme ça avant de sauter dans ce que vous voyez aujourd'hui. Esp avec x86 (je vous recommande fortement d'apprendre quelque chose, quoi que ce soit, autres que x86 en premier lorsque vous commencez à regarder les bus et la mise en cache, etc). http://github.com/dwelch67/amber_samples. J'ai nettoyé et mis à l'ambre processeur (arm2 clone) disponible à l'aide d'outils open source, de sorte que vous pouvez voir des choses en cours d'exécution à l'intérieur du processeur. Une version de l'ambre a un cache. Encore une fois un tremplin, en ajoutant mmus et de multi cœurs, etc ajoute à la complexité.
Super réponse courte, l'adressage direct code à l'aide d'un plus d'instruction, plus de cycles que inscrivez-vous aborder uniquement lorsque les deux instructions sont comparés les uns aux autres. De mémoire effets secondaires, la mise en cache, etc peut confondre ou de neutraliser les différences.
OriginalL'auteur old_timer