计算机组成原理 第4讲_乘法
- 格式:ppt
- 大小:194.50 KB
- 文档页数:27
计算机组成原理第四章指令系统4.1 指令系统的发展与性能需求4.1.1指令系统的发展程序:计算机的程序是由一系列的机器指令组成的。
指令就是计算机执行某种操作的命令。
这里某种操作其实很有意思啊20世纪50年代,所支持的指令系统只有定点加减,逻辑运算、数据传送、转移等十几至几十条指令。
60年代后期,除以上基本指令,还设置了乘除运算、浮点运算、十进制运算、字符串处理,指令数目多达几百条,寻址方式也趋多样化计算机的指令有微指令、机器指令和宏指令。
微指令:微程序级的命令,属于硬件。
宏指令:若干条机器指令组成的软件指令,属于软件。
机器指令:介于微指令和宏指令之间,通常简称为指令。
每一条指令可完成一个独立的算术运算或算术逻辑运算操作。
4.1.2指令系统的性能要求完备性指令系统丰富、功能齐全、使用方便。
有效性该指令系统编写的程序能够高效率地运行。
高效率主要表现在程序占据存储空间小、执行速度快。
规整性对称性匀齐性指令格式和数据格式的一致性兼容性系列机各机种之间具有相同的基本结构和共有的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。
4.2 指令格式机器指令机器指令是机器字来表示。
表示一条指令的机器字,就称为指令字,通常简称指令。
指令格式,则是指令字用二进制代码来表示的结构形式,通常由操作码字段和地址码字段组成。
一条指令的结构如下形式来表示:操作码字段OP 地址码字段A操作码设计计算机时,对指令系统的每一条指令都要规定一个操作码。
操作码字段应该执行怎样的操作?加法,减法,乘法,除法,取数,存数等等。
一般来说,一个包含n位的操作码最多能表示2n条指令。
地址码有几个操作数地址,称为几操作数或几地址指令。
在早期,一般操作数有被操作数、操作数和操作结果这三种数,所以就形成了三地址指令格式。
后来发展成二地址格式、一地址格式和零地址格式。
(1)零地址指令:只有操作码,没有地址码。
(2)一地址指令只有一个地址码,指定一个操作数,另一个操作数是隐含的。
沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:阵列乘法器的设计与实现院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2014年1月10日目录第1章总体设计方案 01.1设计原理 01.2设计思路 (1)1.3设计环境 (2)第2章详细设计方案 (2)2.1总体方案的设计与实现 (3)2.1.1总体方案的逻辑图 (4)2.1.2器件的选择与引脚锁定 (4)2.1.3编译、综合、适配 (6)2.2功能模块的设计与实现 (6)2.2.1一位全加器的设计与实现 (6)2.2.2 4位输入端加法器的设计与实现 (9)2.2.3 阵列乘法器的设计与实现 (13)第3章硬件测试 (16)3.1编程下载 (16)3.2 硬件测试及结果分析 (16)参考文献 (19)附录(电路原理图) (20)第1章总体设计方案1.1 设计原理阵列乘法器采用类似人工计算的方法进行乘法运算。
人工计算方法是用乘数的每一位去乘被乘数,然后将每一位权值对应相加得出每一位的最终结果。
如图1.1所示,用乘数的每一位直接去乘被乘数得到部分积并按位列为一行,每一行部分积末位与对应的乘数数位对齐,体现对应数位的权值。
将各次部分积求和,即将各次部分积的对应数位求和即得到最终乘积的对应数位的权值。
为了进一步提高乘法的运算速度,可采用大规模的阵列乘法器来实现,阵列乘法器的乘数与被乘数都是二进制数。
可以通过乘数从最后一位起一个一个和被乘数相与,自第二位起要依次向左移一位,形成一个阵列的形式。
这就可将其看成一个全加的过程,将乘数某位与被乘数某位与完的结果加上乘数某位的下一位与被乘数某位的下一位与完的结果再加上前一列的进位进而得出每一位的结果,假设被乘数与乘数的位数均为4位二进制数,即m=n=4,A×B可用如下竖式算出,如图1.1所示。
X4 X3 X2 X1 =A× Y4 Y3 Y2 Y1 =B X4Y1 X3Y1 X2Y1 X1Y1X4Y2 X3Y2 X2Y2 X1Y2X4Y3 X3Y3 X2Y3 X1Y3(进位) X4Y4 X3Y4 X2Y4 X1Y4Z8 Z7 Z6 Z5 Z4 Z3 Z2 Z1图1.1 A×B计算竖式X4 ,X3 ,X2 ,X1 ,Y4 ,Y3 ,Y2 ,Y1为阵列乘法器的输入端,Z1-Z8为阵列乘法器的输出端,该逻辑框图所要完成的功能是实现两个四位二进制既A(X)*B(Y)的乘法运算,其计算结果为C(Z) (其中A(X)=X4X3X2X1 ,B(Y)=Y4Y3Y2Y1,C(Z)=Z8Z7Z6Z5Z4Z3Z2Z1而且输入和输出结果均用二进制表示 )。
第二章运算器本章知识要点及要求如下所示:1、掌握数据信息的表示方法,包括原码、补码、反码、移码及定、浮点数的表示方法;2、了解非数值数据(字符和汉字)的表示方法;3、掌握定点数的加、减、乘、除运算;4、了解定点运算器的组成与结构;5、掌握浮点运算方法,了解浮点运算器的基本结构。
●补码一位乘法(1)求 [ X ]补, [ Y]补, [-X ]补(2)求 [ X ]补* [ Y]补:通过求和n、右移n-1次得到乘积(3)[X*Y]补=……(4)验证●X*Y-----→Z●由(4), [X*Y]补=……---→X*Y=Z1●Z和Z1相等,结果正确例12:已知X=+13,Y=-11,N=5,用补码一位乘法求X*Y解:(1)[ X]补=[ +13 ]补= [ +1101B ]补=01101B [ -X]补= =10011B[ Y]补=[ -11]补= [ -1011B ]补=10101B(2)高位积乘数/低位积Y1Y000 0000 1 0 1 0 1 0 +[(Y0 -Y1)*X ]补11 001111 0011 1 0 1 0 1 0右移11 1001 1 1 0 1 0 1 +[(Y0 -Y1)*X ]补00 110100 0110 1 1 0 1 0 1右移00 0011 0 1 1 0 1 0 +[(Y0 -Y1)*X ]补11 001111 0110 0 1 1 0 1 0右移11 1011 0 0 1 1 0 1 +[(Y0 -Y1)*X ]补00 110100 1000 0 0 1 1 0 1右移00 0100 0 0 0 1 1 0 +[(Y0 -Y1)*X ]补11 001111 0111 0 0 0 1(3) [X*Y]补=1101110001B(4)验证●X*Y=+13*(-11)=-143●由(3),[X*Y]补=1101110001B可知,X*Y=-010001111B=-143结果一致,正确思考:一、以下数据,结果如何?1、X=-13,Y=+112、X=+13,Y=+113、X=-13,Y=-114、X=-13/16,Y=-11/165、X=+13/16,Y=-11/166、X=-13/16,Y=+11/167、X=+13/16,Y=+11/16二、乘法运算对标记位的影响?三、比较补码乘法和原码乘法。
《计算机组成原理》课程设计报告课程设计题目:两个数的乘法运算小组成员:….完成日期:第十一周模型机设计实验一、实验目的综合运用所学计算机原理知识,设计并实现较为完整的模型计算机。
其功能为:输入两个数,进行两个正数(二进制4位)的乘法运算,输出结果。
二、实验内容编写程序,运行程序,观察并记录运行结果。
三、实验仪器1、ZY15CompSys12BB计算机组成原理及系统结构教学实验箱一台2、排线若干3、PC机一台四、预备知识1、数据格式8位,其格式如下:其中第7位为符号位,数值表示范围是:-1≤X<127。
2、指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问存储器、转移指令和停机指令。
(1)算术逻辑指令规定:算术逻辑指令的名称、功能和具体格式见表2—3。
(2)访存指令及转移指令模型机设计2条访存指令,即存数(STA)、取数(LAD),2条转移指令,即无条件转移(负均可)本模型机规定变址寄存器RI指定为寄存器R2。
(3)I/O指令其中,在IN 指令中,addr=01,选中“输入”中的开关组作为输入设备,在OUT指令中,addr=10时,表示选中“输出单元”中的数码块作为输出设备。
(4)停机指令HALT指令,机器码为60H,用于实现停机操作。
3、指令系统复杂模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。
表2-3列出了各条指令的格式、汇编符号、指令功能。
我们依然采用复杂模型机指令系统中的部分指令。
五、实验的机器指令程序如下:地址内容助记符说明00 14 IN R0 ; 作计数器用,00000001→R001 15 IN R1 ; 输入X的值,0000xxxx→R102 05 STA R1 ; X→22H03 2204 15 IN R2 ; 输入Y→R2,0000xxxx→R205 06 STA R2 ; R2→23H06 2307 42 CLR R2 ; R2清零08 06 STA R2 ; 存入结果R2→24H09 240A 02 LAD R2 ; 提取[23H]→R20B 230C 6A RRC R2,R2 ; R2带进位右循环一位→R2 0D 06 STA R2 ; 循环结果→23H0E 230F 02 LAD R2 ; 提取结果S,[24H]→R210 2411 0C BZC [15H] ; 有进位跳转到15H12 1513 08 JMP [18H] ; 无条件跳转到[18H]14 1815 01 LAD R1 ; 提取X→R116 2217 56 ADC R1,R2 ; R1+R2→R218 6A RRC R2,R2 ; R2带进位右循环一位→R219 06 STA R2 ; 循环结果→24H1A 241B70 RLC R0,R0 ; R0带进位左循环一位→R0 1C 0C BZC [20H] ; 有进位跳转到20H1D 201E 08 JMP [0AH] ; 无条件跳转到[0AH]1F 0A20 2A OUT R2 ; 输出R2中的结果21 60 HATL ; 停机22 XX23 XX24 XX六、程序机器指令和微程序以上程序的机器指令如下:$P0014 $P0115 $P0205 $P0322$P0416 $P0506 $P0623 $P0772$P0806 $P0924 $P0A02 $P0B23$P0C6A $P0D06 $P0E23 $P0F02$P1024 $P110C $P1215 $P1308$P1418 $P1501 $P1622 $P1756$P186A $P1906 $P1A24 $P1B70$P1C0C $P1D20 $P1E08 $P1F0A$P202A $P2160微程序如下$M00018108 $M0101ED82 $M0200C050$M0300A004 $M0400E098 $M0501B406$M06959B41 $M07298838 $M0801ED8A$M0901ED8C $M0A00A01E $M0B018001$M0C00201F $M0D019801 $M0E19880F$M0F019801 $M1001ED83 $M11001001$M12030401 $M13018016 $M143D9A01$M1501A205 $M16318207 $M1731820E$M18009001 $M19028401 $M1A05DB81$M1B0180DC $M1C018001 $M1D05DB8D$M1E070A08 $M1F068A09七、复杂模型机的数据通路框图WE图2-7复杂模型机数据通路框图八、复杂模型机实验接线图接到指令单元接到开关单元九、复杂模型机实验流程图十、课程设计总结1、成员总结体会…2、遇到的问题和解决的方法等1)寄存器不够用。
计算机组成原理原码乘法器
计算机组成原理中,原码乘法器是一种常见的电路设计。
原码乘法器可以用来进行二进制的乘法运算,它是计算机中常用的数字运算电路之一。
原码乘法器可以处理多个输入数据,并生成一个输出结果。
在电路设计中,原码乘法器通常包括多个模块,如部分积模块、加法器模块、移位器模块等。
这些模块可以组成一个完整的原码乘法器电路。
原码乘法器的工作原理是将输入数据转换为二进制形式,然后利用加法器和移位器等模块进行运算,最终得到输出结果。
原码乘法器的设计需要考虑电路的速度、功耗、面积等因素,同时还需考虑乘法器的精度和误差等问题。
在现代的计算机中,原码乘法器通常被优化为更加高效的电路结构,例如Booth乘法器、Wallace乘法器、Array乘法器等。
这些优化的乘法器可以大大提升计算机的运算速度和效率,使计算机能够更加高效地进行数字运算。
- 1 -。
计算机组成原理乘法指令的信息流程 Here's the information flow of a multiplication instruction in the context of computer organization principles Instruction Fetch (IF): The computer retrieves the multiplication instruction from memory based on the current value of the Program Counter (PC). The PC then increments to point to the next instruction. Instruction Decode (ID): The control unit within the CPU decodes the fetched multiplication instruction to determine the sources of the operands (e.g., registers, memory), the target register, and the specific operation to be performed. Execution (EX): Following the decoding results, the Arithmetic Logic Unit (ALU) performs the multiplication operation. The operands can be values from two registers or a register and an immediate value. The result of the multiplication is typically stored in the target register. Memory Access (MEM): If the multiplication operation involves data from memory, the result may need to be written back to a specified location in memory after the execution phase. Write Back (WB): Finally, the result of the multiplication operation is written back to the target register or memory location, making it available for subsequent instructions to use. Throughout this process, the control unit is also responsible for ensuring the correct order and timing of instruction execution, as well as handling any interrupts and exceptions that may occur. The specific implementation of multiplication instructions and their performance (such as speed and resource consumption) can vary depending on the processor architecture. For example, some processors may use a hardware multiplier to accelerate multiplication operations, while others may implement multiplication through a series of additions and shift operations. In modern CPUs, multiplication operations are often pipelined, meaning that multiple multiplication operations can be executed in parallel at different stages simultaneously, thereby improving the processor's throughput and efficiency.
[计算机组成原理]Booth算法——补码⼀位乘法x * y = z运算规则:1.和原码⼀位乘法不同,补码⼀位乘法的符号位是参加运算的,且运算结果和所有参加运算的数都是补码形式。
2.乘数 x 取双符号位参与运算,部分积的初始值为0;乘数 y 取单符号位参与运算。
3.乘数 y ⾸先在末尾添加⼀个辅助位 0 ,每次讨论都是取 y 的最后两位,但每次移动仅移动⼀位。
4.判断 y 的最后两位是规则如下:00 或者 11 时,直接右移⼀位;01时,先加 x的补,然后右移⼀位;10时,先加 -x的补,然后右移⼀位。
5.有个特例,最后⼀步不⽤右移了。
举个栗⼦:设 x = -0.1101 , y = 0.1011则 [x]补 = 11.0011 ,[-x]补 = 00.1101⼀开始部分积初始值:00.0000先给y补⼀个辅助位0,得到 y = 0.10110⾸先,从y的最后两位开始看,0.10110 ,为 10 ,对应规则 “先加[-x]补,再右移⼀位” :部分积 00.0000 + 00.1101 = 00.1101 ,右移⼀位得到 00.01101接着,y 右移⼀位再看,0.10110,为 11 ,对应规则“直接右移⼀位”:部分积 00.001101然后,y再右移⼀位再看,0.10110 ,为 01 ,对应规则“先加[x]补,再右移⼀位”:00.001101 部分积+ 11.0011 [x]补--------------------= 11.011001 部分积部分积 00.001101 + 11.0011 = 11.011001 ,右移⼀位得到11.1011001 (注意这⾥符号位移动后,仍然保持为 11)接着,y再右移⼀位再看,0.10110 ,为 10 ,对应规则“先加[-x]补,再右移⼀位”:部分积 11.1011001 + 00.1101 = 00.1000001 ,右移⼀位得到 00.01000001最后,y再右移⼀位再看,0.10110 ,为 01 ,对应规则“先加[x]补,再右移⼀位”:部分积 00.01000001 + 11.0011 = 11.01110001 ,但这已经是最后⼀步,不⽤再右移了,所以最后结果是 1.01110001 (注意:这是x*y的补码)。