マイクロコントローラでの乗算よりもハードウェアの除算に時間がかかるのはなぜですか?たとえば、dsPICでは、除算には19サイクルかかりますが、乗算には1クロックサイクルしかかかりません。
私には、いくつかのチュートリアルを経て事業化アルゴリズムと乗算アルゴリズムウィキペディアに。これが私の推論です。
除算アルゴリズムは、ウィキペディアで復元する低速除法のように、再帰的なアルゴリズムです。これは、stepの(中間)結果がstep k
への入力として使用されるk+1
ことを意味します。つまり、これらのアルゴリズムは並列化できません。したがって、n
除算を完了するには少なくともサイクルが必要n
ですが、被除数のビット数は異なります。16ビットの配当の場合、これは少なくとも16サイクルに相当します。
乗算アルゴリズムは再帰的である必要はありません。つまり、並列化することが可能です。ただし、乗算アルゴリズムにはさまざまな種類があり、マイクロコントローラーで使用できるアルゴリズムはわかりません。ハードウェア/マイクロコントローラーで乗算はどのように機能しますか?
Dadda乗算器アルゴリズムを見つけました。これは、完了までに1クロックサイクルしかかからないはずです。ただし、ここで得られないのは、ダダのアルゴリズムが3つのステップで進行するのに対し、ステップ1の結果はステップ2などで使用されるということです。これによると、完了するには少なくとも3クロックサイクルかかります。