8.2.1 串行除法
OR1200中使用的串行除法算法是“试商法”。设被除数是m,除数是n,商保存在s中,被除数的位数是k,其计算步骤如下(为了便于说明,在此处所有数据的最低位称之为第1位,而不称为第0位):
(1)取出被除数的最高位m[k],使用被除数的最高位减去除数n,如果结果大于等于0,则商的s[k]为1,反之为0。
(2)如果上一步得出的结果是0,表示当前的被减数小于除数,则取出被除数m[k-1],与当前被减数组合为下一轮的被减数;如果上一步得出的结果是1,表示当前的被减数大于除数,则利用第2步中减法的结果与被除数剩下的值的最高位m[k-1]组合为下一轮的被减数。k等于k-1。
(3)新的被减数减去除数,如果结果大于等于0,则商的s[k]为1,否则s[k]为0,后面的步骤重复2-3,直到k等于1。
上述步骤可以使用图8.4描述。
图8.4 试商法的运算过程
以1101除以0010为例, 采用试商法时的计算步骤如表8.2所示。
试商法进行除法运算需要的时间与操作数的位数有关,对于32位的OR1200处理器而言,如果采用试商法进行除法运算,那么至少需要32个时钟周期才能得到除法结果。