【计算机组成原理】定点数的乘法运算

定点乘法运算

在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位 = 两数的符号位异或乘积的数值部分 = 两个正数相乘之积

设n位被乘数和乘数用定点整数表示:(定点小数也同样适用)
被乘数 [x] = xfxn-1 ··· x1x0
乘数 [y] = yfyn-1 ··· y1y0
乘积 [z] 的符号是 (xf⊕yf) ,数值部分是 (xn-1 ··· x1x0) (yn-1 ··· y1y0)
(xf、 yf是符号)

人工算法和机器的矛盾

设 x = 1101,y = 1011,用我们习惯的方法求乘积,过程如下:
在这里插入图片描述
与十进制的乘法相似。(乘数和被乘数是定点小数也一样)

❗但是,人们习惯的算法对计算机来说并不适用:
n位的机器,对于两个n位数相乘,乘积可能为2n位
②只有两个操作数相加的加法器,无法将n个位积一次性加起来

因此,早起计算机为了简化硬件结构,采用串行的1位乘法方案→多次执行“加法-移位”操作(串行乘法器)。然而串行方法太慢,满足不了我们的需求,因此串行乘法器已经被淘汰。

自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生。目前广泛使用的是流水式阵列乘法器→并行乘法器!

不带符号的阵列乘法器

n位无符号数 × n位无符号数 会产生 n×n 个位积,n+n-1个列和。
并行乘法器关键是快速产生 n×n 个位积,对位积进行相加运算产生n+n-1个列和

请添加图片描述在这里插入图片描述在这里插入图片描述
这种乘法器要实现n位 × n位 运算,需要n(n-1)个全加器n2个与门

带符号的阵列乘法器

在讲带符号的阵列乘法器的原理前,我们先看算术运算部件设计中常用的求补电路

求补电路

图2.6是一个有使能控制的二进制对2求补电路图(二进制对2求补:计算二进制数的2’s complement,即二进制数的补码)

逻辑表达式:
C-1=0
Ci = ai + Ci-1
a*i = ai ⊕ ECi-1

在这里插入图片描述
最右端起始链式输入C-1必须永远设置成 “0”
当控制信号线 E=1 时,是对2求补操作;
E=0 时,输出和输入相等。→显然我们可以 用符号位来作为控制信号

求补电路的思想

先看由补码求原码的运算:
[101100100] → [110011100]

[111010000] → [100110000]

[101011011] → [110100101]

通过观察可以知道:正数的补码不变,负数的补码等于从右边开始,遇到第一个真值的1以后,除了符号位外0变1,1变0

由此得求补电路的思想
①如果符号位是0,数据不变
②如果符号位是1,符号位不变,数据位从右边开始的第一个1以后除符号位全部取反

✨️间接补码乘法运算的步骤

设 [A] = anan-1…a1a0和 [B] = bnbn-1…b1b0均为用定点表示的(n+1)位带符号整数的补码。求 [A]×[B]的步骤如下:

① 将 [A] 和 [B] 的数值位an-1…a1a0和bn-1…b1b0经过求补电路后变成 |[A]| 和 |[B]|,该补码电路称为算前求补器

② 将两个n位正整数 |[A]| 和 |[B]| 送给 n×n 位不带符号的阵列乘法器由此产生2n位原码乘积

③ 将2n位原码乘积经过求补电路变成补码,该补码电路称为算后求补器

④ 将A和B的符号位an和bn进行异或,作为结果的符号位

在这里插入图片描述
在这里插入图片描述

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 12:36:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 12:36:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 12:36:05       82 阅读
  4. Python语言-面向对象

    2024-04-22 12:36:05       91 阅读

热门阅读

  1. 星期一(蓝桥杯)

    2024-04-22 12:36:05       35 阅读
  2. Remove the specified nodes in the linked list with dummy header

    2024-04-22 12:36:05       32 阅读
  3. python开发应该具备哪些能力

    2024-04-22 12:36:05       34 阅读
  4. Linux技术问答系列-NO7

    2024-04-22 12:36:05       35 阅读
  5. 【Qt之·Qt插件开发·导出插件类的步骤】

    2024-04-22 12:36:05       29 阅读
  6. C++20实践入门之类模板学习笔记

    2024-04-22 12:36:05       32 阅读
  7. Linux 远程联机服务(二)- Rsh服务器

    2024-04-22 12:36:05       30 阅读
  8. 数据结构-并查集

    2024-04-22 12:36:05       29 阅读
  9. Mac下 allure的下载与配置

    2024-04-22 12:36:05       34 阅读
  10. C - Perfect String

    2024-04-22 12:36:05       36 阅读
  11. 《AI聊天类工具之八—— 小悟空》

    2024-04-22 12:36:05       40 阅读
  12. Vue-admin-template关于TagView缓存问题

    2024-04-22 12:36:05       31 阅读
  13. uniapp如何适配ipad

    2024-04-22 12:36:05       33 阅读