2009-03-28 6 views
7

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

7

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.

+0

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

+0

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

+0

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 ... –

3

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.

+1

les deux liens sont maintenant morts: / –

Questions connexes