2009-03-28 12 views
7

異なるアセンブリ言語では、MUL(x86)/ MULT(mips)は乗算を指します。それはプログラマーのためのブラックボックスです。私は、アーキテクチャに関係なく、実際にCPUが乗算をどのくらい達成するかに興味があります。私はレジスタに2つの16ビット値があり、私はCPUだと言います。私はMULを実装する必要があります。他のビットバイディング命令(xor、not、shl、shrなど)を使用します。何をすればよいでしょうか?CPUがMUL/MULTのような命令をどのように実装していますか?

答えて

7

http://en.wikipedia.org/wiki/Multiplication_ALUには、デジタル回路で乗算を行うさまざまな方法が記載されています。

大学でVerilogのDEC AlphaライクなプロセッサにSIMD命令を追加するプロジェクトに取り組んだとき、私たちはWallace tree multiplierを実装しました。主な理由は、一定のサイクル数で実行され、パイプラインが簡単でした。

編集:他のビットの手書き命令を使用して説明しましたが、最新のプロセッサでは乗算はこのようにマイクロコード化されません。それは遅くなるだろうし、プロセッサはベンチマークで虐殺されるだろう。

+0

私はcpusが効率の理由から自分の命令を呼び出すわけではありませんが、私は自分自身を表現するために他の方法を持っていませんでした。なぜなら、私が今までに行ったことのない最低レベルは、asmだからです。助けてくれてありがとう! – George

+0

時には彼らがします。 x86は複雑なISAであり、いくつかの非常に奇妙な命令があります。これらの命令は、内部のマイクロコードプログラムに変換されます。 http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svgを見ると、複雑なデコードユニットとマイクロコードシーケンサが表示されます。これはこれを行います。 – Michael

+0

現代のCPUよりもさらに悪い分岐予測、ハイパースレッディングなど、マイクロコードと並んで、x86 ISAはマイクロコードと回路で実装された仮想マシンで動作すると言っても過言ではありません。しかし、それについて心配する必要はほとんどありません... –

3

This pageは、4 * 4の組み合わせ乗算器の論理ゲートを示しています。あなたはそこから仕事をすることができます。

Here is somebody's labここでは、それぞれ4つの4ビット乗算器から16ビット乗算器を構築することを説明しており、それぞれがANDゲートと全加算器で構築されています。フルデザイン、チップレイアウト、シミュレーション波形

+1

両方のリンクは現在死んでいる:/ –

関連する問題