Dans les différents langages d'assemblage MUL (x86)/MULT (mips) se réfèrent à la multiplication. C'est une boîte noire pour le programmeur. Je m'intéresse à la façon dont un processeur accomplit une multiplication indépendamment de l'architecture. Disons que j'ai deux valeurs de 16 bits dans mes registres et que je suis le processeur, donc je dois implémenter MUL en utilisant les autres instructions de bidouillage que j'ai (et, ou, xor, pas, shl, shr, etc.). Que dois-je faire?Comment les processeurs implémentent-ils des instructions comme MUL/MULT?
Répondre
http://en.wikipedia.org/wiki/Multiplication_ALU Wikipédia énumère différentes méthodes pour faire de la multiplication dans un circuit numérique. Lorsque j'ai travaillé sur un projet d'ajout d'instructions SIMD à un processeur de type DEC Alpha dans Verilog au collège, nous avons implémenté un Wallace tree multiplier, principalement parce qu'il fonctionnait en nombre de cycles et qu'il était facile à canaliser.
EDIT: Vous avez mentionné l'utilisation d'autres instructions de manipulation de bits, sur les processeurs modernes, la multiplication ne serait pas codée comme ceci; Ce serait une façon de ralentir et le processeur serait abattu dans les cas-tests.
This page montre les portes logiques pour un multiplicateur combinatoire 4 * 4. Vous pouvez travailler à partir de là.
Here is somebody's lab où ils décrivent la construction d'un multiplicateur de 16 bits à partir de 4 multiplicateurs à 4 bits, chacun construit avec des portes ET et des additionneurs complets. Conception complète, disposition des puces et formes d'onde de simulation.
les deux liens sont maintenant morts: / –
- 1. PBS (couple) ne considère pas les processeurs quad core comme 4 processeurs
- 2. Processeurs d'assemblage et multicœurs
- 3. Comment fonctionnent les instructions préparées?
- 4. Comment créer des instructions OR pour NHibernate?
- 5. affinité Configuration des processeurs multi-cœurs x86
- 6. Enregistrement des instructions MySQL DELETE
- 7. Oracle: suivi des instructions SQL
- 8. Comment puis-je réutiliser des expressions dans des instructions LINQ?
- 9. Comment déclarer des variables et utiliser des instructions dans LINQPad?
- 10. Comment utiliser les clauses IN avec les instructions préparées mysqli
- 11. mysqli_real_escape_string ET les instructions préparées?
- 12. si les instructions dans mysql?
- 13. Instructions DRY LINQ pour les tables avec des colonnes communes
- 14. Est-ce que les processeurs Intel et AMD ont le même assembleur?
- 15. Installation de Curl IDE/RTE sur les processeurs AMD
- 16. Développement de noyaux pour supporter plusieurs processeurs
- 17. Quand est-il approprié d'utiliser les processeurs de contexte Django?
- 18. Erreur lors de l'utilisation des instructions import.jxl ...
- 19. Où fermer les instructions dans JDBC
- 20. Différences entre les instructions préparées et les instructions directes utilisant Oracle ODBC
- 21. Comment utiliser les instructions préparées avec Enterprise Library?
- 22. Comment écrire des instructions préparées pour SQLite dans l'iPhone
- 23. Comment puis-je résumer des instructions préparées mysqli en PHP?
- 24. Comment utiliser des instructions paramétrables avec DB2 Text Search?
- 25. Pourquoi le comportement des autres est-il différent dans les instructions for/while par opposition aux instructions if/try?
- 26. paperclip exécuter processeurs sur le style sélectionné
- 27. Comment exécuter une des instructions SQL Oracle avec VBScript
- 28. Où les instructions utilisées dans SQL
- 29. Comment afficher l'historique des révisions comme les révisions
- 30. namespaces .NET et en utilisant des instructions
Je pense que cpus n'appelle pas ses propres instructions pour des raisons d'efficacité. Je n'avais pas d'autre moyen de m'exprimer, puisque le niveau le plus bas que j'ai jamais connu jusqu'ici est l'asm. Merci pour l'aide! – George
Parfois, ils le font. x86 est un ISA compliqué et a des instructions très étranges. Ces instructions sont traduites en un programme de micro-code interne. Regardez http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svg, vous verrez une unité de décodage complexe et un séquenceur de micro-code, ce qui fait – Michael
C'est encore pire que sur les processeurs modernes - distribué l'exécution d'ordre, la prédiction de branche, l'hyperthreading, etc., ainsi que le microcode, il est presque juste de dire que l'ISA x86 s'exécute dans une machine virtuelle qui est implémentée dans le microcode et les circuits. Mais il n'est presque jamais nécessaire de s'inquiéter à ce sujet ... –