為什麼在微控制器上硬件除法比乘法要花更長的時間?例如,在dsPIC上,除法需要19個週期,而乘法僅需要一個時鐘週期。
我瀏覽了一些教程,包括Wikipedia上的 除法算法 和 乘法算法 。這是我的理由。
除法算法(類似於Wikipedia上的具有恢復功能的慢除法)是一種遞歸算法。這意味著將步驟 k
的(中間)結果用作步驟 k + 1
的輸入,這意味著這些算法無法並行化。因此,至少需要 n
個週期才能完成除法,而 n
是除數中的許多位。對於16位分紅,至少等於16個週期。
乘法算法不需要遞歸,這意味著可以並行化它。但是,有許多不同的乘法算法,我不知道微控制器可以使用哪種算法。乘法如何在硬件/微控制器上工作?
我找到了 Dadda乘法器算法,該算法只需要一個時鐘週期即可完成。但是,我沒有得到的是Dadda的算法分三步進行,而步驟1的結果用於步驟2,依此類推。因此,這至少需要三個時鐘週期才能完成。