计算机组成 您所在的位置:网站首页 risc指令集和cisc指令集的区别 计算机组成

计算机组成

2023-05-28 15:32| 来源: 网络整理| 查看: 265

(因为图片一直上传不了,所以图片都放在网盘里了,可以提取查看,不好意思了 百度网盘 请输入提取码) 第一章计算机的基本结构

 

类型:嵌入式计算机(embedded computer)、个人计算机(personal computer)、服务器(server)和企业系统(enterprise system)、超级计算机(super computer)和网格计算机(grid computer)、云计算(cloud computing)

功能部件:

输入\输出设备(I\O device)、存储器(memory)、算术逻辑部件(ALU)、控制器(control unit)

处理器(processor):ALU、control unit

信息:指令(instruction)或称为机器指令(machine instruction)、数据(data)

程序: 执行任务的指令序列,储存在存储器,除了操作员和I\O设备等外部中断外,计算机被所储存的程序控制

数据:指令的操作数和字符,存储在存储器

输入设备:键盘、触摸板、鼠标、操作杆、轨迹球

存储器:存储程序和数据

主存储器(primary memory)也称为主存(main memory)

程序执行时必须存储在主存里

一般按固定大小的组进行存储单元(cell)处理,这样的组称为字,字的位数为计算机的字长

其中的任何单元在指明了地址后都能在一个很短的固定时间内访问到的存储器称为随机访问储存器(RAM),访问一个字需要的时间叫做存储器访问时间(这个时间与访问的字所在位置无关

价格贵,必须的,断电后无法保存信息

高速缓存(cache)

主存的辅佐手段,属于RAM设备,更快,更小,为了提高指令的执行速率,用于储存正在执行的程序段以及所有相关的数据,与处理器紧密耦合,存放指令副本和指令执行所需的数据,方便处理器使用

辅助存储器(secondary memory)

磁盘(magnetic disk)、光盘(optical disk,DVD和CD),闪存设备(flash memory device)

运算器:

算术逻辑单元(ALU),操作数进入处理器,被储存在寄存器,一个寄存器可以存一个字的数据,寄存器的访问时间快于高速缓存

输出设备:打印机,图形显示器等

控制器:高效的中枢系统,将控制信息传送到其他设备并检测它们的状态,计算机内所有的活动都由控制器控制

指令:Load R2 LOC 将LOC地址下的操作数夺取而覆盖到A2寄存器里面

Store R4 LOC 将寄存器R4中的操作数复制到LOC,R4原始内容保存下来了

指令寄存器:(instruction register,IR)保存当前正在执行的指令

程序计数器:(program counter PC)另一种专用寄存器,包含了下一条即将被读取和执行指令的存储器地址,在一条指令被执行过程中,PC的内容相应地更新为下一条将被执行指令的地址

通用寄存器:(general-purpose register),也称作处理器寄存器,包括保存从存储器中载入的待处理的操作数的功能。

设备发出一个中断信号,向处理器提出服务请求,处理器通过执行中断服务程序(interrupt-service routine)来提供所请求的服务。

数的表示及算术运算:

原码(sign-and-magnitude),反码(one's-complement),补码(two's-complement)

原码:即我们将十进制数字转换为二进制后的数字为原码 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外. 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1.

1、符号数与无符号数的人为规定性:一个数是有符号还是无符号数都是人为规定的。进行二进制运算时用无符号数或是补码运算时,结果都是正确的。10000100+00001110 若规定为无符号数,即 132+146=146D 。若规定为有符号数,则为 -124+14=-110,而[-110]补=10010010。解释:10000100 是 -124 的补码,0001110 是 14 的补码,在机器中运算后得出的结果是 [-110] 的补码。机器中的有符号数运算一般就是补码运算。

2、补码加减法运算:计算机中,当确定为有符号数运算时,符号数一律用补码表示,运算时符号位和数字位一起参加运算。运算结果也用补码表示。

两符号数相加公式:[X+Y]补=[X]补+[Y]补

两符号数相减公式:[X-Y]补=[X]补+[-Y]补

符号扩展:

符号扩展是指计算机对于小字节转换成大字节的规则。

比如char(1字节)转换成int(4字节),多出来的3个字节到底填充什么?

规则如下:

当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0,即全填充0。

上面那句话的本意是指:

负数扩展后,还是负数,且值不变;正数扩展后还是正数,值不变。

浮点数(floating-point number):二进制小数点(radix point)是浮动的数字

计算机发展历程:

第一代:真空管(vacuum tubes)技术实现逻辑功能,开发了磁心存储器和磁带存储设备

第二代:晶体管(transistor)取代真空管,广泛使用磁心存储器和磁鼓存储设备,开发了最早的高级语言

第三代:集成电路(integrated circuit),微程序,并行流水线

第四代:超大规模集成电路(VLSI)

问题:按照图 1-2 中所示的部件之间的数据传输以及一些简单的控制命令,列出执行如下机器指令 所需的步骤: Load R2.LOC 1.3 节中给出了所需步骤的概述。假设包含该指令的存储单元的地址最初是在寄存器 PC 中解答:所需的步骤是:

将指令字的地址从寄存器 PC 发送到存储器中,并发出一个读控制命令 等待所请求的字从存储器中取回,然后把它装入寄存器IR 中,它在IR 中被控制电路解释(或译码)以便确定所需执行的操作。 递增寄存器 PC的内容以指向存储器中的下一条指令。 将地址值 LOC 从寄存器IR中的指令发送到存储器并发出一个读控制命令等待所请求的字从存储器中取回,然后将其装入寄存器 R2 中。

第二章指令集体系结构

计算机中的字

图片1

习惯上我们用从0到2^(k-1)(k取某个值)的数字作为储存器连续单元的地址,因此存储器可以有高达2^k个可寻址单元,2^k个地址构成了计算机的地址空间(address space),例如一个24位的地址生成一个具有2^24个存储单元的地址空间,即16M

1k=2^10,1M=2^20,1G=2^30;

按字节寻址

按字节寻址存储器(byte-addressable memory)

图片2

大端由小到大,小段由大到小。

存储器操作:

read操作:将一个指定存储单元中的内容拷贝传送到处理器,存储器中的内容保持不变

write操作:从处理器向一个指定的存储单元传送一条信息,它将覆盖这个单元原有的内容

寄存器传送标记

R2←[LOC]:存储器单元中的内容被传送到处理器寄存器R2中

R4←[R2]+[R3]:将存储器R2和R3的内容相加,并将他们的和放到寄存器R4中

这种标记方式为寄存器传送标记(Register Transfer Notation,RTN)

注意:RTN表达式的右边总是表示一个值,而左边总是存放这个值的单元名

汇编语言符号

表示机器指令和程序

Load R2,LOC

执行这条指令的时候LOC内容不变,R2原有内容被覆盖

Add R4,R2,R3

源寄存器R2和R3保存着源操作数,R4为目的寄存器

RISC和CISC指令集

CISC和RISC特点和区别

CISC(微程序) RISC(硬布线) 指令系统 复杂、庞大 简单、精简 指令数目 一般大于200条 一般小于100条 指令字长 不固定 定长 可访存指令 不加限制 只有load/store指令 各种指令执行时间 相差较大 多数指令在一个时钟周期完成 各种指令的使用频度 相差很大 都比较常用 通用寄存器的数量 较少 多 目标代码 难以优化生成高效的目标代码 采用优化编译,生成代码较高效 控制方式 绝大多数为微程序控制 绝大多数为组合逻辑

RISC的指令数,寻址方式和指令格式种类相对CISC少

RISC采用指令流水线技术,使大部分指令在一个时钟周期内完成,适合流水线的指令系统的特征有:

指令长度应尽量一致 指令格式应尽量规整 保证Load/store指令外的其它指令都不访问存储器 数据和指令在存储中对齐存放 边界对齐

精简指令集计算机:Reduced Instruction Set Computer,RISC

复杂指令集计算机:Complex Instruction Set Computer,CISC

RISC关键特性:

每条指令为一个字长

使用load/store体系结构(load/store architecture)

只能通过Load和Store指令访问存储器操作数

算术或逻辑运算中涉及的所有操作数都必须在处理器寄存器中,或者是其中一个操作数在指令字中被明确给出

Load 目的操作数,源操作数 (Load 处理器寄存器 存储单元)

Add 目的操作数 源操作数1,源操作数2(three-operand/three-address)

store 源操作数 目的操作数

指令执行和线性序列

按照地址递增的顺序一次一条地取出并执行指令,这种方式叫做线性序列(straight-line sequencing)

图片3

转移

图片4

Branch_if_[R2]>0 LOOP 只要R2的内容大于0,就重复执行这个循环

Branch_if_[R4]>[R5] LOOP 汇编语言写作: Branch_greater_than R4, R5, LOOP

寻址方式

寄存器方式(register mode:操作数是一个处理器寄存器中的内容,在指令中给出寄 存器名称 绝对方式 (absolute mode ):操作数在一个存储单元中,指令中明确地给出了这个单元 的地址。

变址方式(index mode):操作数的有效地址是通过将一个寄存器中的内容加上一个常数值而生成

X(Ri) Ri为变址寄存器(index register) EA=X+[Ri]

有效地址(effective address,EA):真实地址

图片5

带变址的基址方式:(Ri,Rj) 其中 Ri为变址寄存器 Rj为基址寄存器,EA=[Ri]+[Rj]

x(Ri,Rj) EA=x+[Ri]+[Rj]

Move R4,#NUM1 #NUM1表示NUM1的地址,可以通过Add R4,R0,#NUM1实现

图片6

子程序(subroutine)

当一个程序将控制转移到一个子程序时,称其为调用(call)子程序,执行这个转移操作的指令叫做调用(call)指令子程序通过返回(Return)指令返回到调用它的程序。

Return指令通过链接寄存器(link register)的间接跳转返回到调用程序中

Call指令执行操作:

将PC中的内容存储到链接寄存器

转移到由Call指令指定的目标地址中去

Return指令执行操作:

转移到链接寄存器所保存的地址中去

当调用一个子程序时,程序必须要给子程序提供参数,这种信息交换就做参数传递(parameter passing)

移位

逻辑移位:左移LShiftL,右移LShiftR

LShiftL Ri,Rj,count

1.逻辑移位 逻辑移位是对无符号数进行的,左移和右移都是补零

例如:0101

左移1位:1010

右移1位:0010

2.算术移位 算术移位是对有符号数进行的,符号位不变,对数值位进行移动

符号位都不变

真值 码制 添加代码 正数 原码,反码,补码 左移和右移都加0 负数 原码 左移和右移都加0 负数 补码 左移加0 负数 补码 右移加1 负数 反码 左移和右移都加1 例如:

正数 0,0110(+6)

左移1位:0,1100

左移2位:0,1000

右移1位:0,0011

右移2位:0,0001

负数 1,0110(-6原码)

左移1位:1,1100

左移2位:1,1000

右移1位:1,0011

右移2位:1,0001

负数 1,1010(-6补码)

左移1位:1,0100

左移2位:1,1000

右移1位:1,1101

右移2位:1,1110

负数 1,1001(-6反码)

左移1位:1,0011

左移2位:1,0111

右移1位:1,1100

右移2位:1,1110

CISC指令集:不受限于load/store体系结构

大多数CISC算术和逻辑指令使用二地址指令格式,如 Add 目的操作数 源操作数 Add B, A;即为B=A+B B←[A]+[B],为了避免原来B内容被覆盖可以这样执行二地址指令,Move C , B; Add C,A;

初始化指令:Clear R2

Move指令一般形式:Move destination, source ,其中源操作数和目的操作数都可以是一个存储单元或者一个处理器寄存器,包含了Load和Store指令的功能,不仅可以在存储器和处理器寄存器之间移动操作数,还可以在两个存储单元或者两个寄存器之间传递操作数

CISC除了五种基本寻址方式:立即方式,寄存器方式,绝对方式,间接方式和变址方式外还有三种

自动增量方式(autoincrement mode)

操作数的有效地址是指令中指定的一个寄存器的内容,在访问该操作数后,寄存器内容会自动增加,指向存储器下一个操作数,写作(Ri)+,32位字长的按字节寻址的存储器中访问连续字,这个增量为4

2.自动减量方式(autodecrement mode)(与自动增量方式恰恰相反)

指令中指定寄存器的内容首先做自动减量操作,然后作为这个操作数的有效地址使用,写作-(Ri)

3.相对方式(relative mode)

在变址寻址方式中用程序计数器代替通用寄存器Ri来获得有效地址 ,即X(PC)

条件码

N(负数):如果结果是负数则置为1,否则清除为0

Z(零):如果结果是0则置为1,否则清除为0

V(溢出):如果发生算术溢出则置为1,否则清除为0

C(进位):如果运算结果有一个进位输出则置为1,否则清除为0

RISC和CISC最终VS

RISC 风格指令集的特点是

寻址方式简单。

每一条指令都能放到一个单独的字中

由于寻址方式简单,所以指令集中的指令数较少。

只能对处理器寄存器中的操作数执行算术和逻辑运算。Load/store 体系结构不允许从一个存储元直接传输数到勇一个单元,这样的传输必须要通过一个处理器寄存器。

指令简单,这有助于处理单元使用如在第6 章中所介绍的流水线技术来快速地执行指令

程序的大小往往较大,因为执行复杂的任务需要较多但较简单的指令。

CISC 风格指令集的特点是

寻址方式比较复杂。

指令比较复杂,一条指令可能跨多个字

有很多用来实现复杂任务的指令。

对存储器中的操作数以及处理器寄存器中的操作数都可以执行算术和逻辑运算

通过便用Move 指今可以从一个存储单元传输数据到另一个单元

程序的大小往往较小,因为执行复杂的在务需要较少但较复杂的指令。

第三章基本输入/输出

访问I/O设备

处理器将地址空间中的一些地址分配给I/O单元,而不是主存储器,习惯上称这些为I/O寄存器(I/Oregister)

由于I/O设备和存储器共享同一个地址空间,所以这种方式被称为存储器映射I/O(memory-mapped I/O)

Load R2,DATAIN, DATAIN是输入设备中的一个寄存器地址

Store R2, DATAOUT, DATAOUT单元是输出设备中的一个寄存器

程序控制I/O

图片7

READWAIT 读取 KIN标志

当KIN=0时,转移到 READWAIT

将数据从 KBD_DATA 传输到 R5

WRITEWAIT 读取 DOUT 标志

当DOUT=0 时转移到 WRITEWAIT

将数据从 R5 传输到 DISP_DATA

处理器读取状态标志(status flag)以确定其状态,称为处理器正在轮询(roll)I/O设备

RISC风格的程序控制I/O:

图片8

CISC风格程序控制I/O

图片9

中断

响应中断请求(interrupt request)时执行的中断服务程序,中断时正在执行的程序会断开执行,但是正在执行的指令必须先完成了再相应中断,因为PC保存的是下一条指令的地址,当中断完成返回原程序的时候,PC值重新回到下一条指令地址,而不是中断时的指令地址

子程序调研和中断的区别

子程序被调用时执行的是调用程序请求的功能,因此,对状态信息和寄存器内容的潜在改变是可以预期的。而中断服务程序可能与收到中断请求时正在执行的程序毫不相关。因此在于始执行中断服务程序之前,必须将该中断服务程序执行期间可能会改变的状态信息和处理器害存器的内容都保存起来。这些保存的信息在被中断的程序重新开始执行前必须被重新装入。这样,原来的程序就可以继续执行,除了时间延迟以外不受中断的任何影响。

保存寄存器也会增加从接收中断清求到开始执行中断服务程序之间的时间延迟。这一延迟被称为中断等待 (interrupt latency)

中断确认信号(interrupt acknowledge signal)

中断的允许与禁止

处理器有一个状态寄存器(status register),包含了有关当前操作状态的信息,其中的IE位被分配用于允许/禁止中断,IE=1时,处理器接受并处理I/O设备的中断请求,同时I/O设备接口上有一个控制寄存器,其中包含了管理设备操作模式的信息,有一个位是用于中断控制。

I/O中断属于异常(exception)的一种

第五章基本处理部件

指令的执行

Load指令

Load R5,x(R7)

1)取出指令并递增程序计数器的值。

2)对指令进行译码并从寄存器文件中读取寄存器R7的内容

3)计算有效地址

4)读取存储器中的源操作数。

5)将操作数装人目的寄存器 R5 中

Store指令

Store R6,X(R8)

1)取出指令并递增程序计数器的值。 2)对指进行译码并读取寄存器 R6和R8的内容 3)计算有效地址:X+[R8]。 4)将寄存器R6的内容存人存储单元X+[R8]中。 5)空操作

Add指令

Add R3, R4, R5

1)取出指令并递增程序计数器的值。 2)对指令进行译码并读取源存器 R4 和 R5 的内容 3)计算和:[R4]+[R5]。 4)空操作。 5)将计算结果装人目的寄存器 R3 中

涉及算术或逻辑运算的指令可以使用类似的步骤执行。它们与Load 指全的不同之处在以下两个方面:

有两个源寄存器,或者有一个源寄存器以及一个立即源操作数。

不需要访问存储器操作数

取出并执行指令的五步动作序列

图片10

第八章存储器系统

处理器和存储器之间的连接由地址线、数据线和控制线组成

internal memory(primary memory)内存:main memory(主存),cache,processor register,........

存储器访问时间(memory access time):从开始传输一个数据字的操作到结束传输所用的时间

存储器周期(memory circle time):两个连续的存储器操作开始时刻之间的最小时间延迟

随机访问存储器(Random-access memory,RAM):任何一个存储单元的访问时间都相同,而且与存储单元的地址无关

虚拟存储器(virtual memory):将程序活动部分存放主存储器,剩余部分存放在较大容量的辅助存储设备中

图片11

第九章算术运算

全加器(Full Adder, FA)

图片12

图片13

行波进位加法器(ripple-carry adder)

由多个全加器级联而成

图片14

通过任何一个特定工艺制造的门构成的组合电路所需的延迟,是该电路中最长信号传输路径上所有逻辑门延迟的总和。在图9-2a所示电路,Cn-1在2(n-1)个门延迟后得到,Sn-1需要再经过一个异或门延迟后得到,最终进位输出Cn需要经历2n个门延迟后才能得到。因此,如果使用行波进位加法器实现图9-3所示的加法/减法部件,在2n个门延迟后得到所有的求和位

减少加法器延迟:

使用最快的电子工艺

使用超前进位网络的逻辑门网络

超前进位加法器

图片15

Gi为生成函数,Pi为传播函数

图片16

所有的进位都可以在加载输人操作数X、Y及Co三个门延迟后得到,因为生成所有Pi与Gi信号只需要一个门延迟,再加上生成 Ci+1 的与-或电路中的两个门延迟,此时已经生成所有进位。再经过一个异或门延迟,将得到所有的求和位。因此,n位加法过程总共只需要四个门延迟,而与n关。

超前进位加法器(carry-lookahead adder)

图片17

对长操作数会受扇入(fan-in,即输入数目)影响,最后的与门和或门生成Ci+1时需要的扇入为i+4

8个4位超前进位加法器可以如图9-2那样连接起来构成一个32位加法器。级联中高端的4位加法器生成求和位S31、S30、S29、S28以及进位位所需的延计算如下:低端加法器的进位输出4在输入操作数X、Y及Co加载到 32位加法器3个门延迟后得到.之后,第二个加法器的输出C8再经过2个门延迟后获得,C12需要再经过2个门延迟,依次类推。最后,高端4位加法器的进位输人 C28 可以在(6x 2)+ 3 =15 个门延后获得。这样,C32和高端加法器内的所有进位还需要2个门延迟后才能得到,而4个求和位需要再经历 1个门延迟才能获得,一共是18个门延迟。

无符号数乘法

阵列乘法器(Manual Multiplication)

图片18

顺序电路乘法器(sequential multiplication)

图片19

Q处LSB位是1,则A需要加被乘数M,否则,不用加,但是无论Q处的LSB位是什么都需要全体左移位,C储存A+M的进位,若Q是n位,则需要n个周期才能完成顺序电路乘法运算

有符号数乘法

正乘法与负被乘数相乘

算出来的中间积需要符号扩展

图片20

负乘数与负被乘数,用乘数和被乘数的补码按照正乘数的情况进行运算

Booth算法

利用[XY]补=[X]补+[Y]补

被乘数、乘数换成补码形式

乘数重编码(最低位的后面隐含一个0)

图片21

乘数每一位乘以被乘数,1乘等于加上被乘数,-1乘等于加上被乘数的补码,0乘等于0,中间积符号扩展到2n位(假设乘数有n位)

最后去掉最高位,取结果的补码

img

实例:

图片22

比较:

图片23

整数除法

恢复除法(restoring division)

!不考

执行以下三步 n次:

1)将A与Q左移一位。

2)从A 中减去 M,并将结果放回 A

3)如果A的符号为1,上商qo为0,将M加回到A中(即恢复A);否则上qo为1。

图片24

不恢复除法

第一阶段:执行以下两个步骤 n 次

1)如果A的符号为0,将A和Q左移一位,并用A减去M:否则,将A和Q左移,并将M加到A上

2)现在,如果A的符号为0,上商初始qo为1;否则,上商qo为0。

第2阶段:如果A的符号为1,将M加到A上。

在执行第1阶段n个周期之后,需要执行第2阶段以便在A 中设置适当的正余数。

图片25

注意:第1阶段的每个周期只执行一次加法或减法操作,第2阶段可能还要执行最后一次加法操作(保证正余数)。

浮点数及其运算

单精度

图片26

双精度

图片27

尾数(mantissa)如B=1.M=1.b-1b-2......b-23

二进制小数点位于第一个有效位的右方时,我们说这个数是规格化的(normalized)

比例因子的基数2以及尾数的前导位1都是固定的

指数域中在储的值并不是实际的有符号指数 E,而是一个无符号整E’= E + 127。这被称为余127( cxcess-127)格式。这样,E 的值范围为0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有