计算机硬件系统_第1页
计算机硬件系统_第2页
计算机硬件系统_第3页
计算机硬件系统_第4页
计算机硬件系统_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机硬件系统

控制器F引运算器|

第二单元XZ第一单元

高速缓存出

接输入设备

主存储器口

外存设备总输出设备

线

第三单元第四单元

二.数据的算术运算

补码加减法运算

原码一位乘法运算原码一位除法运算

补码一位乘法运算补码一位除法运算

原码二位乘法运算

补码二位乘法运算

其它快速乘除法运算方法简介

衲码加减法的实现

[X+Y次凶补+[Y]补

田丫]补=凶补+[,]补

卜丫]补=对[丫加卜逐位取反,再在最低位加1

溢出判断:

正+正得负步或负+负得正

数字位有向符号位的进位,但符号位不产生

向更高位的进位

双符号位的值为01或10

补码加减法运算实例

X=0.1011y=-0.0101模4补码

[X]补=001011,[Y]布111011

000101

1’补

001011001011

士!°11+0,0101

io(foiio010000

X+YX-Y(溢出)

补码加减法运算的实现

需要一个ALU和两个寄存器(累加器)

1

输入门

FOX

补码表示中的符号位扩展

由[X]补求[X/2]补的方法

原符号位不变,

且符号位与数值位均右移一位,例如,

[X]称=10010贝I」[X/2]标=110010

不同位数的整数补码相加减时,

位数少的补码数的符号位向左扩展,

一直扩展到与另一数的符号位对齐。

01010101110000110101010111000011

+1111111110011100+0000000000011100

01010101010111110101010111011111

原码一位乘运算

[X*Y]原=(XS0Ys)(X*Y)

原码表示是符号位(0正1负)+数的绝对值,

求乘积通过分开处理符号位和数值,

积的符号位为被乘数与乘数二符号的异或值,

积的数值为被乘数与乘数二数的绝对值之积。

原码一位乘运算

[X*Y]原=(XS@YS)(|X*Y)

例如:X=0.1101Y-0.1011

部分积乘数

0.11010000001011

*0.10110001101101

iToi0010011110

11010001001111

00000010001111

+1101X和Y符号异或为负

0.10001111最终乘积原码表不为:

110001111

手工运算过程计算机内运算的实现方法

原码一位乘运算

例如:X=0.1101Y=-0.1011

0.1101问题:

*0.10111.加法器只有两个数据输入端

11012.加法器与乘运算数据位数相同

1101解决方案:

0000每次求出部分积,而不是一次总累加

+1101变每次左移被乘数为右移部分积

0.10001111判乘数每一位的值用固定的一位线路

手工运算过程

原码一位乘法运算的实现

需要一个ALU和三个寄存器(有右移位支持)

F/2<x]A

原码一位乘运算

例如:X=0.1101Y=-0.101^

0.1101000000累加器初值取零值

*0.1011+001101

1101001101初值0加被乘数

11010001101部分积右移,

0000将移出的一位保存起来

+1101求第一次部分积

0.10001111

手工运算过程

原码一位乘运算

例如:X=0.1101Y=-0.10^1

0.1101000110

*0.1011+001101

1101010011前次部分积加被乘数

110100100111部分积右移

0000将移出的一位保存起来

+1101求第二次部分积

0.10001111

手工运算过程

原码一位乘运算

例如:X=0.1101Y=-0.1^11

0.1101001001

*0.1011+000000

1101001001前次部分积加0

1101000100111部分积右移

0000将移出的一位保存起来

+1101求第三次部分积

0.10001111

手工运算过程

原码一位乘运算

例如:X=0.1101Y=-0.^011

0.1101000100

*0.1011+001101

1101010001前次部分积加被乘数

11010010001111部分积右移

0000将移出的一位保存起来

+1101求第四次部分积

0.10001111

最后一步2数符号异或求

手工运算过程积的符号

原码一位乘运算

例如:X=0.1101Y=-0.^011

0.1101000100

*0.1011+001101

1101010001前次部分积加被乘数

11010010001111部分积右移

0000将移出的一位保存起来

+1101求第四次部分积

0.10001111

若把乘数放在一个移位寄存器中,

该寄存起又用来接受加法器的移位

手工运算过程输出,则判乘数的某一位也更方便

原码一位乘运算

[X*Y]原=(XS@YS)(|X|*|Y|)

例如:X=0.1101Y=-0.1011

0.11010000001011

*o.io|TT]0001101.101

ITOT-0010011110

11010001001111

00000010001111

+1101X和Y符号异或为负

0.10001111最终乘积原码表不为:

110001111

手工运算过程计算机内运算的实现方法

原码一位乘运算

[X*Y]原=(XSQYS)(|X|*|Y|)

例如:X=0.1101Y=-0.1011

0.11010000001011

*0.10110001101101

iToT0010011110

11010001001111

oooo0010001111

~+1101~X和Y符号异或为负

0.10001111最终乘积原码表不为:

110001111

手工运算过程计算机内运算的实现方法

除法运算

口在计算机内实现除运算时,存在与乘法

运算类似的几个问题:加法器与寄存器

的配合,被除数位数更长,商要一位一

位地计算出来等。这可以用左移余数得

到解决,且被除数的低位部分可以与最

终的商合用同一个寄存器,余数与上商

同时左移。

口除法可以用原码或补码计算,都比较方

便,也有一次求多位商的快速除法方案,

还可以用快速乘法器完成快速除法运算O

原码一位除运算

[Y/X]原=(XS©Ys)(|Y|/|X|)

原码一位除是指用原码表示的数相除,求出原

码表示的商。除操作的过程中,每次求出一位商。

从理解原理考虑,用恢复余数除法讲解计算机

内的实现方法更直观方便,即确定上商应为1还是

为0时,必须用被除数或中间余数减去除数,通过

检查本次求得的余数为正还是为负才能知道,而不

象人计算时用眼睛直接看出来的。若求出一个为负

的余数来,通常应首先恢复其值为正,再求下一位

商才有道理。但计算机内从来不用这种办法,而是

直接用求得的负余数求下一位商。可以吗?为什么?

原码一位除运算

[Y/X]原=(X®Y)(Y/X)

例如:X=-0.1101Y=0.1011

0.110100101100000初态

0.110110.1011011110000000第1次

110101001000010第2次

1001000101000110第3次

110111101001100第4次

1010000011101101第5次

1101

-om和Y符号异或为负

最终商原码表示为:

11101

余数为:0.0111*2-4

加减交替除法原理证明

1.若第i-1次求商余数为+RM,商1

望左移胡R。若R»o则..

2.则弟i次求向Ri=2Ri_pY若R*O商o

恢复余数为正且左移得2(Ri+Y)

3.则第i+1次求商Rj+f2(Ri+Y)-Y

=2Rj+Y

实质是:对上次负差直接左移,

本次用+Y求商即可.

原码一位除法运算的实现

需要一个ALU和三个寄存器(有左移位支持)

2F<x]A

被除数(余数)商

00101100000开始情形

x=+)110011-Y

0.101111111000000<0,商0

111100000(00左移1位

+)001101+Y

Y=00100100001>0,商1

0.110101001000[010左移1位

+)110011-Y

[丫]补=00010100011>0,商1

001010on)110左移1位

001101+)110011-Y

11110100110<0,商0

[丫]补=11101001100左移1位

+)001101+Y

11001100011101101>0,商1

原码一位除运算

[Y/X]原=(X®Y)(Y/X)

例如:X=-0.1101Y=0.1011

0.110100101100000初态

0.110110.1011011110000000第1次

110101001000010第2次

1001000101000110第3次

110111101001100第4次

1010000011101101第5次

1101

-om和Y符号异或为负

最终商原码表示为:

11101

余数为:0.0111*2-4

补码乘除法运算

原码乘除法实现不难,但有两个问题:

符号位与数值位分别处理,

若数据为补码形式,可能多两次原T卜码变换

也可以直接用补码完成乘除法运算

即从补码开始,直接得到补码的积或商

下面看一看补码乘除运算的算法

补码乘法运算

补码乘法的实现算法,先复习两个概念:

补—补

[X][X/2]=XsXsX1X2...Xn

[X]补—X=・X0+WXj*2』

i=l

补码乘法

[X]补=XSXxx2…….xn

[Y]补=YSYiY2…….Yn

nn

Y=-Yo+工Yj*2.i=W(Yi+i.Yi)*2』

i=li=0

补码乘法运算

[X*Y]补=[X]补夫[Y]补

n

[Y]补—(-Y0+5Y「2-i)

&i=l

.丫0*2。+YJ21+丫2*2]+…+Yn*2-n

-丫0*2。+(丫1*2。-%*2-1)+(丫2*2-1-丫2*2・2)+...+

(Y「Yo)*2。+2X)*2-】+…+(丫什「丫口*2^

Y=-Yo+工K*2“=W(X+iYj)*2・i

i=li=0

补码乘法运算

[X*Y]补=[X]补*[Y]补

用Y的值乘[X]补,达到[X]补乘[Y]补

求出[X*Y]补,不必区分符号与数值位。’

乘数最低一位之后要补初值为0的一位附加线

路,并且每次乘运算需要看附加位和最低位两

位取值的不同情况决定如何计算部分积,其规

则是:

00+0£(X+1-X)*2-i

01+被乘数[X]补

1o一被乘数i=0

11+0

部分积乘数附加位

000000I101100开始情形

。00000ol1011000+0并右移

11001110-X

110011

111001101011并右移

11110011ol10111+0并右移

00110101+X

001001

000100111010并右移

11001110-X

110111111010且不再移位

X=+0.1101[X*Y]补=101111110

Y=-0.1010即X*Y=-0.10000010

补码除法运算

补码除法与原码除法很类似

差别仅在于:

被除数与除数为补码表示,

直接用补码除,求出反码商,

再修正为近似的补码商.

实现中,求第一位商要判2数符号的同异,

同号,作减法运算,异号,则作加运算;

上商,余数与除数同号,商1,作减求下位商,

余数与除数异号,商0,作加求下位商;

商的修正:多求一位后舍入,或最低位恒置1

被除数商

11011100000开始情形

+)001101+Y,二数异号

-00010000001符号同,商1

0010000oopt0余数左移

+)110011-Y

-11101100o|10符号异,商0

1101100oil00余数左移

+)001101+Y

-00001100101符号同,商1

000110011010余数左移

+)110011-Y

-11100101010符号异,商0

110010|10101左移,最低位商1

结果10101

原码一位乘运算

例如:X=0.1101Y=-0.1^11

0.1101001001

*0.1011+000000

1101001001前次部分积加0

1101000100111部分积右移

0000将移出的一位保存起来

+1101求第三次部分积

0.10001111

手工运算过程

原码一位乘运算

[X*Y]原=(XS@YS)(|X*Y)

例如:X=0.1101Y-0.1011

部分积乘数

0.11010000001011

*0.10110001101101

iToi0010011110

11010001001111

00000010001111

+1101X和Y符号异或为负

0.10001111最终乘积原码表不为:

110001111

手工运算过程计算机内运算的实现方法

计算机硬件系统

控制器F引运算器|

第二单元XZ第一单元

高速缓存出

接输入设备

主存储器口

外存设备总输出设备

线

第三单元第四单元

补码加减法运算的实现

需要一个ALU和两个寄存器(累加器)

1

输入门

FOX

原码一位乘法运算的实现

需要一个ALU和三个寄存器(有右移位支持)

F/2<x]A

原码一位除法运算的实现

需要一个ALU和三个寄存器(有左移位支持)

2F<x]A

三.定点运算器的功能与组成

完成算数与逻辑运算

ALU:计算出结果及其特征

通用寄存器组:存放参加运算的数据和运

算结果(包括标志寄存器)

乘商寄存器:用于完成硬件乘除法

数据通路(datapath)

我们以教学计算机的运算器为例来详细讲解。

教学计算机的运算器概述

教学计算机的运算器的组成与设计

字长16位,用4片4位的位片结构的Am2901组成

1.要详细介绍Am2901芯片的内部组成和实现的功能

2.怎样连接4片Am2901成为16位的运算器(Am2902)

3.怎样解决运算器实用中的几个问题:

(1)Am2901最低位的进位输入信号

(2)如何处理运算结果的标志位

(3)如何处理移位指令、置'UC和清'(FC触发器的指令

(4)如何支持硬件乘、除法指令

重点是前2项内容和第3项中的⑴(2)

教学计算机运算器的控制和使用(包括教学实验)

输出YAm2901内部组成

/OE二选一

(无动画)

算逻运算部件

16个累加器

乘商寄存器Q

Q3|I|Q0B16个k.A口地址功能

一二选———

通用寄存器彳血址8种运算功能

Y8种数据组合

RAM38种结果处理

Am2901芯

片是一个4位的

位片结构的运算

符号位F3器器件,其内部组

结果为零F=0000

成讲解如下:

结果溢出OVR

Cn+4

进位输出

第一个组成部分是

3位功能选择码8种运算功能算逻运算部件ALU,

000R+S完成3种算术运算

001S-R和5种逻辑运算

共计8种功能。

010R-S

011R①

S其输出为F,两

100

_RAS路输入为S、R,

101RAS最低位进位Cn,

四个状态输出信

110R(DS

号如图所示。

111R0)S

第二个组成部分

是通用寄存器组

由16个寄存器构

<

F3成,并通过B口

F=0000Cn

OVR与A口地址选择

Cn+4被读的寄存器,

B口地址还用于

指定写入寄存器

B锁存器A锁存器

通过B口地址、

A口地址A口地址读出的

数据将送到B、

B口地址A锁存器,要写

[(写入)入寄存器的数据

由一个多路选择

器送来。

一组三选一门

完成把ALU的

输出、或左移

一位、或右移

一位的值送往

通用寄存器组

,最高、最低

位移位信号有

双向入/出问题

一组三选一门

完成Q寄存器

的左移一位、

或右移一位、

或接收ALU输

出值的功能,

最高、最低位

移位信号有双

向入/出问题。

一组二选一门,

选择把A口数据

或ALU结果送出

芯片,以给出输

出Y的数据,Y

输出的有无还受

输出使能/OE信

号的控制,仅当

/OE为低是才有

Y输出,/OE为

高,Y输出为高

阻态。

8种结果处理

3位控制码通用寄存器Q寄存器Y输出

000Q—FF

001F

010B-FA

011B—FF

100B―F/2Q—F/2F

101B―F/2F

110B—2FQ—2FF

111B—2FF

运算器,三大件

运算暂存乘除快

多路选通连起来

数据组合有内外

运算功能指明白

存移输出巧安排

运算功能选择

―151413

数据组合选择

―12II10

运算结果处理

―181716

Am2901内部组成

组成

算逻运算部件

16个累加器

乘商寄存器Q

Q3|I|Q0B16个k.A口地址功能

一二选———

通用寄存器彳血址8种运算功能

Y18〜168种数据组合

◄—

RAM38种结果处理

运算器的时钟脉冲信号

运算器的时钟脉冲信号CP

教学计算机的主频:1.8432MHZ/3

沿

通用寄存器接受

Am2901的操作使用

控制信号

操作功能

B口A口18171615141312II10Cn

R0-R0+R100000001on0000010

R2<-R2-R0001000000100010011

右移

RO<-RO+R1000000011010000010

Q<-ROY<-F/00000000001000

0000

RO<-ROAR1Y<-A口000000010101000010

RO—ROARlY<-F00000001Oil1000010

入出信号及引脚

4片Am2901之间的连接

F=0

F15

Y15〜12YU〜8Y7〜4Y3T)

OVER

4-

盘Cin

学高位

RAN(15RAIHO

Am2901Am2901Am2901Am2901

Q15QO

cII

A口□JL

B口------

18〜—It

15〜3L

&〜°D15〜12Dll〜8D7〜4D3〜0

+5VAm2902

Cin

Cn+zCn+yCn+x

F=0□

OVER

Y15〜12YU〜8Y7〜4-

F15

A盘IS

高位

AMO

一Am2901Am2901Am2901Am2901

Q15fQO

CP-1-r

A口

B口

18〜6一

15〜3

I2Y

D15〜12DU〜8D7〜4D3〜O

入出信号及引脚

Y15〜Y0

CPOOE

Cy

F=0—

OverCin

F15—运算器部件

RAM15一RAM0

k

Q15~THaQO

A3〜AOB3〜B0」8〜1615〜1312〜10

D运〜D0

⑴如何提供ALU最低位进位皤

不同指令需求Cin例子最低位进位控制码

ADD指令0R0+R1+000

INC指令1R0+0*运01

ADC指令CR0+R1+CJ算10

SUB指令1R0+/R1+1、00

DEC指令0R0+/0+0遮01

SBB指令(原理)CR0+/R1+C算

实现中C—/Cy,因此1勺R0+/R1+/C10

实验量测波形方波D+0+方波11

最低位进位信号由SCi编码和加、减运算选择共同决定

最低位进位信号Cin的逻辑表达式

Cin=/BU*B10*/MI5*/MI4*/MI3

+Bll*/B10*/MI5*/MI4*/MI3*C

+/Bll*/B10*/MI5*/MI4*MI3

+Bll*/B10*/MI5*/MI4*MI3*/C

+Bll*B10*TCLK2

16位运算器最低位进位输入信号Cin

运算功能码

Cy最o

G

[F=0低

A1

【OVRL位

16位的3进c

F15

位/C

方波

RAM15运算器RAMO

3E

Q15

"D15〜0

B口

A口18〜10

(2)如何处理计算结果标志位

算术与逻辑的运算指令结果产生标志位的值

该标志位的值只在执行运算步骤接受

算术运算指令的结果影响C、Z、V、S

逻辑运算指令的结果只影响Z

其他指令或其他执行步骤不接受标志位的值

由此可见:

若设置标志位寄存器,

会有接收或不接受标志位的值这样两种处理

(依据什么指令的什么时刻)

几条影响C触发器的指令

指令中有STC(C-1)、CLC指令(C-0)

指令中有RCL、RCR、SHL、SHR指令,

他们的移位输出要传送进C

对乘除法指令的支持

指令中MULSR指令,DIVSR指令

他们的运行用到了移位输出要传送进C

(还决定寄存器的移位输入)

乘法,联合右移位

通用寄荐器|~~)Q寄荐器

除法,联合左移位

/F15______

m通》存寤.Q寄存器

状态寄存器的控制

用3位码控制有8处来源

SSTB343332cZVS

000不变三位不变(CZV,S)

001接受ALU状态输出(Cy,ZRQV,F15)

010接收内部总线输出(IB7654)

0110三位不变

1001三位不变

101RAMO三位不变

110RAMI5三位不变

111QO三位不变

状态寄存器的逻辑表达式

C:=/B34*/B33*/B32*CV:=/B34*/B33*/B32*V

+/B34*/B33*B32*Cy+/B34*/B33*B32*OV

+/B34*B33*/B32*IB7+/B34*B33*/B32*IB5

+B34*/B33*/B32+/B34*B33*B32*V

+B34*/B33*B32*RAMO+B34*V

+B34*B33*/B32*RAM15

+B34*B33*B32*QO

Z:=/B34*/B33*/B32*ZS:=/B34*/B33*/B32*S

+/B34*/B33*B32*ZR+/B34*/B33*B32*F15

+/B34*B33*/B32*IB6+/B34*B33*/B32*IB4

+/B34*B33*B32*Z+/B34*B33*B32*S

+B34*Z+B34*S

16位运算器的状态寄存器

SS:来自内部总线IB

Y15〜0

C一四

GCin

位F=0

Z-A

LOV16位的

V-1志

F15

s-位

0,1,RAMO

Q0,RAM15

RAM15运算器RAMO

Q15;3E

B口WVo

A口18〜10

(3)寄存器移位输入信号

2位控制码左移(MI7)右移(/MI7)指令

SSH(B9B8)RAMOQ0RAM15Q15

000/0/SHLSHR

01C/C/RCLRCR

10Q15/F15CyRAM0DIVMUL

实现中,具体移位输入信号是用

SSH编码和ALU中的结果处理控制信号17

(这里用MI7表示,移位方向)共同决定的

左右移位输入信号逻辑表达式

RAM15=/B/B8*C

+B9*/B8*Cy

Q15=B9*RAMO

RAMO=/B*B8*C

+B9*/B8*Q15

Q0=B9*/B8*/F15

RAMI5.OE=/MI7

Q3.OE=/MI7

RAMO.OE=MI7

QO.OE=MI7

16位运算器的最高位、最低位移位输入信号

RAM15运算器出M0移-0

oGG

AQ15A输-C

CL

入L

33—Q15

Cy信

号1/F15

RAMOB口Oil11II」D15〜0号

SSHA口18〜10f左移控制

16位运算器的完整组成

।来自内部总线IBsCil运算功能码

L/-------在Y15〜OQJ\

四0

G

G低

位F=O

AA1

Cin位

L标:OVR16位的L

进C

3

1志F15

位/C

方波

O,1,RAMO

Q0,RAM15

RAMO移0

移RAM15

0一G运算器

3E输

A输Q15C

C一入

L

入Q15

3

Cy一信

/F15

号IT

RAMO-0B口D15〜O

右移控制]tfSSHA口18〜IOtI左移控制

完整16位运算器的脱机实验

।।来自内部总线IBsCil运算功能码

II/-------介Y15〜0JI

四0

G

G低

位F=0

AA1

L标L

进c

16位的3

1志F15

位/c

方波

O,1,RAMO

Q0,RAM15

移0

0一G运算器

A输RAM15:RAMOc

C一入

L

入Q15

3Q15Q0

Cy一信

/F15

RAMO-0号

B口D15〜0

右移控制]tA口18〜10SSHItt左移控制

位运算器脱机实验

用16

四Y15〜Y0(用16个指示灯显示结果)

个ssTn介ns。

指c

示一

zCyCin

灯-F=0

显V◄—Over

示S-F15

运算器部件

RAM15一-R4M0

+QU

D15〜D0

SSH18〜612-0(用16个开关提供输入数据)

------------------------通过24位微型开关

A口B口SCiSSH18〜615〜3122〜-00SST提供控制信号

16位运算器的操作使用

控制信号

操作功能

B口A口SST18〜615〜312〜0CnSSH

0

R0-R0+R100000001001011000001/

00

R2<-R2-R0001000000010100010011/

00

右移逻堆t右移00

RO<-RO+R10000000170011010000010001

与c循环右木夕

Q<-ROY<-F/000000100000010000/

0000

联合左移

RO|Q<-R0-R3|Q000000110011100010010010

0-R0AR1Y-A口0000000100101010000100/

实现补码加减运算的逻辑电路

F-X

力口F◄—Y

X-F

Vrx-X+Y

IX—X・Y

F-X

F-/Y

F-1

X-F

实现补码加减运算的逻辑电路

必要完善:

单累加器变多累积器:

两个选通门均变为多路

送0还是送1到ALU处理

接收门送每个累加器。

支持寄存器移位功能:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论