• 计算机组成原理——指令系统(课程笔记)


    说明

    1. 博客作为笔记备份,不定时更新
    2. 参考内容为《计算机组成原理(第3版)》唐朔飞 高等教育出版社;王道考研《计算机组成原理考研复习指导2023》
    3. 文中的例题摘自王道考研《计算机组成原理考研复习指导2023》,大多是我个人认为较为典型的题目以及错题的部分整理

    指令系统

    1. 指令格式

    • 基本概念
      • 指令:指示计算机执行某种操作的命令
      • 指令系统:一台计算机的所有指令的集合。位于硬件和软件的交界面上

    1.1 指令基本格式

    操作码字段地址码字段
    • 操作码:指出指令应该执行怎样的操作以及具有何种功能
    • 地址码:给出被操作的信息的地址
    • 指令长度:一条指令中包含的二进制代码的位数
    • 指令字长:一个指令字中包含二进制代码的总位数。指令字长取决于操作码的长度、操作码地址的长度和操作码地址的个数
    • 分类
      • 零地址指令:只给出操作码,没有显式地址
        • 不需要操作数的指令,例如空指令、停机指令、关中断指令
        • 零地址的运算类指令仅用在堆栈计算机中。 通常参与运算的两个操作数隐含的从栈顶和次栈顶弹出,送至运算器运算,运算结果再隐含的压入堆栈
      • 一地址指令
        • O P ( A 1 ) → A 1 OP(A_1) \rightarrow A_1 OP(A1)A1
        • ( A C C ) O P ( A 1 ) → A C C (ACC)OP(A_1)\rightarrow ACC (ACC)OP(A1)ACC;注意运算结果存放在ACC中
      • 二地址指令
        • ( A 1 ) O P ( A 2 ) → A 1 (A_1)OP(A_2)\rightarrow A_1 (A1)OP(A2)A1 A 1 A_1 A1:目的操作数, A 2 A_2 A2:源操作数
      • 三地址指令
        • ( A 1 ) O P ( A 2 ) → A 3 (A_1)OP(A_2)\rightarrow A_3 (A1)OP(A2)A3
      • 四地址指令
        • ( A 1 ) O P ( A 2 ) → A 3 , A 4 = 下 一 条 要 执 行 的 指 令 地 址 (A_1)OP(A_2)\rightarrow A_3,A_4=下一条要执行的指令地址 (A1)OP(A2)A3,A4=

    1.2 定长操作码指令格式

    • 在指令字的最高位部分分配固定的若干位(定长)表示操作码
    • 一般n位操作码字段的指令最大可表示 2 n 2^n 2n条指令
    • 对于简化计算机硬件设计,提高指令译码和识别速度有利

    1.3 扩展操作码指令格式

    在这里插入图片描述

    • 不允许短码作为长码的前缀,即短操作码不能与长操作码的前面部分相同
    • 各个指令的操作码不可重复
    • 通常,使用频率低用长码,使用频率高用短码

    1.4 指令的操作类型

    • 数据传送:e.g.MOV、LOAD、STORE
    • 算术和逻辑运算:e.g.ADD、SUB、CMP、MUL、DIV、INC、DEC、AND、OR、NOT、XOR
    • 移位操作:算术移位、逻辑移位、循环移位
    • 转移操作:e.g.:JMP、BRANCH、CALL、RET、TRAP
      • 注:调用指令和转移指令的区别:执行调用指令时必须保存下一条指令的地址(返回地址),当子程序执行结束时,根据返回地址返回到主程序继续执行;转移指令不返回执行

    1.5 例题

    变长指令字结构

    1. P 156 P_{156} P156)一个计算机系统采用32位单字长指令,地址码为12位,若定义了250条二地址指令,则还可以有()条单地址指令
      A. 4K B. 8K C. 16K D. 24K
      解答:地址码为12位,二地址指令的操作码长度为32-12-12=8位,已经定义了250条二地址指令, 2 8 − 250 = 6 2^8-250=6 28250=6,所以可以设计出 6 × 2 12 = 24 K 6\times 2^{12}=24K 6×212=24K

    定长指令字结构(指令格式设计)

    1. 某模型机共有64种操作码,位数固定,且具有以下特点:
      (1)采用一地址或二地址格式
      (2)有寄存器寻址、直接寻址和相对寻址(位移量-128~+127)3中寻址方式
      (3)有16个通用寄存器,算术运算和逻辑运算的操作数均在寄存器中,结果也在寄存器中
      (4)取数/存数指令在通用寄存器和存储器之间传送数据
      (5)存储器容量为1MB,按字节寻址
      要求设计算术逻辑指令、取数/存数指令和相对转移指令的格式,并简述理由
      解答
      (1)算术逻辑指令
      算术逻辑指令为“寄存器–寄存器”型,取单字长为16位,格式为:
    OP 6位M 2位 R i R_i Ri 4位 R j R_j Rj 4位

    OP为操作码,6位,可实现64种操作;M为寻址特征,4位,反映寄存器寻址、直接寻址、相对寻址; R i   R j R_i\ R_j Ri Rj各取4位,指出源操作数和目的操作数的寄存器编号
    (2)取数/存数指令
    取数/存数指令为“寄存器–存储器”型,取双字长为32位,格式为:
    |OP 6位|M 2位| R i R_i Ri 4位| A 1 A_1 A1 4位|
    | A 2 A_2 A2 |
    OP为操作码,6位不变;M为寻址特征,2位不变; R i R_i Ri为4位,为源操作数地址(存数指令)或目的操作数(取数指令); A 1 , A 2 A_1,A_2 A1,A2共20位,为存储器地址,可直接访问按字节编址的1MB的存储器
    (3)相对转移指令为一地址指令格式,取单字长为16位,格式为:

    OP 6位M 2位A 8位

    OP为操作码,6位不变;M为寻址特征,2位不变;A为位移量,8位,采用补码表示,对应偏移量为-128~+127

    2. 指令的寻址方式

    2.1 一些概念

    • 形式地址A:指令中的地址码字段A并不代表操作数的真实地址
    • 有效地址EA:形式地址结合寻址方式,可计算出操作数在寄存器中的真实地址
    • (A):表示地为A的数值,e.g. EA=(A)

    2.2 指令寻址和数据寻址

    • 指令寻址
      • 顺序寻址方式
        • 程序计数器PC加一(1个指令字长),自动形成下一条指令地址
      • 跳跃寻址方式
        • 通过转移类指令实现
        • 下一条指令的地址不由PC自动给出,而由本条指令给出的下条指令的地址
        • 跳跃的地址分为绝对地址和相对地址,跳跃的结果是当前指令修改PC的值,所以下一条指令的地址仍然通过PC给出
    • 数据寻址
      • 指如何在指令中表示一个操作数的地址。为区别各种数据寻址方式,通常在指令中设一个字段,表示寻址方式,指令格式:
    操作码寻址特征形式地址A

    2.3 常见的数据寻址方式

    隐含寻址

    • 不显式给出操作数地址,而在指令中隐含操作数地址
    • 优点:有利于缩短指令字长
    • 缺点:需增加存储操作数或隐含地址的硬件

    立即(数)寻址

    • 指令的地址字段直接给出操作数本身,又称立即数,采用补码表示
    • 优点:指令在执行阶段不访问主存,指令的执行时间短
    • 缺点:A的位数限制了立即数的范围

    直接寻址

    • 指令中的形式地址A就是操作数的有效地址EA,即EA=A
    • 优点:简单,指令在执行阶段只访问一次主存,不需要设计专门计算操作数的地址
    • 缺点:A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改

    间接寻址

    • EA = (A)
    • 可以是一次间址,还可以是多次间址
    • 优点:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可方便的完成子程序的返回)
    • 缺点:指令在执行阶段要多次访存(一次间址要访存两次,多次间址需根据存储字的最高位确定访存次数
    • 由于访问速度慢,一般不常用,一般问到扩大寻址范围时,通常指寄存器间接寻址

    寄存器寻址

    • 指令字中直接给出操作数所在的寄存器编号,即 E A = R i EA=R_i EA=Ri,其操作数在 R i R_i Ri所指的寄存器中
    • 优点:指令在执行阶段不访问主存,只访问寄存器,因为寄存器数量较少,对应地址码长度较小,使得指令字短,又因为不用访存,指令执行速度快,支持向量/矩阵运算
    • 缺点:寄存器价格昂贵,个数有限

    寄存器间接寻址

    • R i R_i Ri给出的是操作数所在主存单元的地址,即 E A = ( R i ) EA = (R_i) EA=(Ri)
    • 特点:比一般间接寻址快,但指令执行阶段需要访问主存

    相对寻址

    • E A = ( P C ) + A EA = (PC)+A EA=(PC)+A,A是相对于当前指令地址的位移量,可正可负,补码表示
    • 优点:操作数的地址不是固定的,它随着PC值的变化而变化,而且与指令地址之间总是相差一个固定值,因此便于程序浮动,广泛用于转移指令(程序浮动 :在多道程序设计系统中,对程序有一些特殊要求,也就是说,程序可以随机地从主存的一个区域移动到另一个区域,程序被移动后仍丝毫不影响它的执行,这种技术称为“程序浮动”。)
    • :对于转移指令JMP A,当CPU从存储器中取出一字节时,会自动执行 ( P C ) + 1 → P C (PC)+1\rightarrow PC (PC)+1PC,若转移指令的地址为X,且占2B,在取出该指令后,PC的值会增加2,即 ( P C ) = X + 2 (PC)=X+2 (PC)=X+2,在执行完该指令后,会自动跳转到 X + 2 + A X+2+A X+2+A的地址继续执行

    基址寻址

    • E A = ( B R ) + A EA = (BR)+A EA=(BR)+A,其中基址寄存器既可以采用专用寄存器,也可以采用通用寄存器
    • 基址寄存器是面向操作系统的,其内容又操作系统或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关型。
    • 在程序执行过程中,基址寄存器的内容不变,形式地址可变。
    • 采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定
    • 优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自己的程序位于主存的哪个空间区域,因此有利于多道程序设计,并可用于编制浮动程序,但偏移量A的位数较短

    变址寻址

    • E A = ( I X ) + A EA = (IX)+A EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器
    • 变址寄存器面向用户,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)
    • 优点:可扩大寻址范围(变址寄存器的位数大于形式地址A的位数);在数组处理的过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可访问数组中任一数据的地址,特别适合循环程序的编制。偏移量(IX)的位数足以表示整个存储空间
    • 基址寻址 VS 变址寻址
      • 基址寻址面向系统,主要用于为多道程序或数据分配存储空间,基址寄存器的内容常由操作系统或管理程序给出,在程序执行过程中其值不可变,而指令字中的A是可变的
      • 变址寻址立足于用户,主要用于处理数组问题,变址寄存器的内容由用户设定,在程序执行过程中可变,而指令字中的A不可变

    堆栈寻址

    • 硬堆栈:寄存器堆栈;软堆栈:从主存中划出一段区域作为堆栈
    • 在采用堆栈寻址的计算机系统中,大部分指令表面上都表现为无操作数指令的形式,因为操作数地址都隐含使用了SP
    • 通常在读/写堆栈中的一个单元的前后都伴有自动完成对SP内容的增量或减量操作

    寻址方式的特点和适用情况

    • 立即寻址操作数获取便捷,通常用于为寄存器赋初值
    • 直接寻址相对于立即寻址,缩短了指令长度
    • 间接寻址扩大了寻址范围,便于编制程序,易于完成子程序的返回
    • 寄存器寻址的指令字较短,指令执行速度较快
    • 寄存器间接寻址扩大了寻址范围
    • 基址寻址扩大了操作数寻址范围,适用于多道程序设计,常用于为程序或数据分配存储空间
    • 变址寻址主要用于处理数组问题,适合编址循环程序
    • 相对寻址用于控制程序的执行顺序、转移等

    2.4 例题

    对基本概念的理解

    1. 指令系统中采用不同寻址方式的目的是()
      A. 提供扩展操作码的可能并降低指令译码难度
      B. 可缩短指令字长,扩大寻址空间,提高编程的灵活性
      C. 实现程序控制
      D. 三者均正确
      解答:采用不同的寻址方式是为了缩短指令字长,扩大寻址范围,提高编程的灵活性,但这也提高了指令译码的复杂度,程序控制是靠转移指令而非寻址方式实现的。选B
    2. 在指令寻址的各种方式中,获取操作数最快的是()
      A. 直接寻址 B. 立即寻址 C. 寄存器寻址 D. 间接寻址
      解答:立即寻址指令直接给出操作数,最快;其次是寄存器寻址,只需访问一次寄存器;然后是直接寻址,需访问一次主存;最后是间接寻址,需访问主存两次或多次。注意:寄存器间接寻址取操作数的速度接近直接寻址
    3. 指令寻址方式有顺序和跳跃两种,采用跳跃寻址方式可以实现()
      A. 程序浮动
      B. 程序的无条件浮动和条件浮动
      C. 程序的无条件转移和条件转移
      D. 程序的调用
      解答:跳跃寻址通过转移类指令实现,可用来实现程序的条件或无条件转移。
      错误原因:错选了B,原因:不理解程序浮动
    4. 对按字节寻址的机器,程序计数器和指令寄存器的位数各自取决于()
      A. 机器字长,存储器的字数
      B. 存储器的字数,指令字长
      C. 指令字长,机器字长
      D. 地址总线长度,存储器的字数
      解答:机器按字节寻址,PC给出下一条指令字的访存地址(指令在内存中的地址),因此取决于存储器的字数;指令寄存器IR用于接收取得的指令,因此取决于指令字长

    数据寻址方式

    1. 假设某条指令的第一个操作数采用寄存器间接寻址方式,指令中给出的寄存器编号为8,8号寄存器中的内容为1200H,地址为1200H的单元中的内容为12FCH,地址为12FCH的单元中的内容为38D8H,地址38D8H的单元中的内容为88F9H,则该操作数的有效地址为()
      A. 1200H B. 12FCH C. 38D8H D. 88F9H
      解答:寄存器间接寻址: E A = ( R i ) EA = (R_i) EA=(Ri),因此EA=1200H
      错误原因:粗心,认为要选的是有效地址中的内容

    关于地址的计算

    1. ( 2014 ) (2014) (2014)某计算机有16个通用寄存器,采用32位定长指令字,操作码字段(含寻址方式位)为8位,STORE指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式,若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则STORE指令中偏移量的取指范围为()
      A. -32768~+32767 B. -32767~+32768 C. -65536~+65535 D. -65535~+65536
      解答:指令格式 O P   A 1   A 2 OP \ A_1\ A_2 OP A1 A2,OP占8位,剩下24位;源操作数采用寄存器直接寻址,有16个通用寄存器,需要4位,剩下20位;目的操作数采用基址寻址, E A = ( B R ) + A EA =(BR)+A EA=(BR)+A,基址寄存器用掉4位,剩余16位,偏移量用补码表示,因此范围为-32768~+32767
      错误原因:最后一步用16位的补码表示范围时计算错,错选C。直接算出了 2 1 6 = 65536 2^16=65536 216=65536,然后就认为了范围是 -65536~+65535
    2. 2020 2020 2020)某计算机采用16位定长指令字格式,操作码位数和寻址方式位数固定,指令系统有48条指令,支持直接、间接、立即、相对4中寻址方式,在单地址指令中,直接寻址方式的可寻址范围是()
      A. 0~255 B. 0~1023 C. -128~127 D. -512~511
      解答:4种寻址方式,M占2位,有48条指令,OP占6位;单地址指令中地址字段占8位,直接寻址方式访问区域是主存,因此寻址范围是0~255。注意:主存的地址不能为负,内存的地址都用无符号数表示。
      错误原因:错选了C。这回默认了用8位补码表示范围,算对了8位补码的表示范围,但是!主存地址是用无符号数表示的!
    3. 2019 2019 2019)某计算机采用大端方式,按字节编址,某指令中操作数的机器数为1234 FF00H,该操作数采用基址寻址方式,形式地址(用补码表示)为FF12H,基址寄存器的内容为F000 0000H,则该操作数的LSB(最低有效字节)所在的地址为()
      A. F000 FF12H B. F000 FF15H C. EFFF FF12H D. EFFF FF15H
      解答:EA=(BR)+A,A使用补码表示=FF12H = 1111 1111 0001 0010B,A的原码为1000 0000 1110 1110B = -EEH,BR中的内容是无符号数,因此EA=F000 0000H - EEH = EFFF FF12H,因为采用大端方式,所以最低有效字节存储在EFFF FF15H,选D

    标志寄存器

    1. 2011 2011 2011)某机器有一个标志寄存器,其中有进位/借位标志CF,零标志ZF,符号标志SF和溢出标志OF,条件转移指令bgt(无符号整数比较大于时转移)的转移条件是()
      A. C F + O F = 1 CF+OF=1 CF+OF=1 B. S F ‾ + Z F = 1 \overline{SF}+ZF=1 SF+ZF=1 C. C F + Z F ‾ = 1 \overline{CF+ZF}=1 CF+ZF=1 D. C F + S F ‾ = 1 \overline{CF+SF}=1 CF+SF=1
      解答:bgt指令比较A,B,将A,B相减,若 A > B A\gt B A>B则A-B一定没有进位/借位,也不为0,因此CF和ZF均为0.选C
      补充:内容来自《汇编语言程序设计(第5版)》钱晓捷 电子工业出版社 P 39 P_{39} P39
      • 进位标志CF
        • 当加减运算结果的最高有效位有进位或借位时,将设置进位标志位1,即CF=1,;反之CF=0
        • 进位标志是针对无符号整数运算设计的,反映无符号数加减运算是否超出范围、是否需要利用进位/借位反映正确结果
      • 溢出标志OF
        • 用于表示有符号整数进行加减运算的结果是否超出范围
        • OF是针对有符号整数运算设计的
      • 进位标志 VS 溢出标志
        • 进位标志表示无符号整数运算结果是否超出范围,超出范围后加上进位或借位运算结果仍然正确
        • 溢出标志表示有符号整数运算结果是否超出范围,超出范围运算结果不正确
        • 若将参与运算的操作数认为是无符号数,则应该关心进位;若将参与运算的操作数认为是有符号数,则应该关心溢出
      • 零标志ZF
        • 反映运算结果是否为0
      • 符号标志SF
        • 反映运算结果是正数还是负数
        • 因为符号位是二进制数的最高位,所以运算结果的最高位是符号标志的状态

    易错点

    • PC取指后的值的变化;执行跳转指令后PC值的变化
    • 主存地址用无符号数表示,不可能为负

    3. 程序的机器级代码表示

    这部分内容可结合《汇编语言程序设计(第5版)》钱晓捷 的内容复习

    3.1 常用汇编指令

    • x86处理器的通用寄存器
    32bit说明
    EAX累加器,高、低两字节可独立使用
    EBX基址寄存器,高、低两字节可独立使用
    ECX计数寄存器,高、低两字节可独立使用
    EDX数据寄存器,高、低两字节可独立使用
    ESI变址寄存器
    EDI变址寄存器
    EBP堆栈基指针
    ESP堆栈顶指针
    • 汇编指令格式
    特点AT&T格式Intel格式
    大小写只能用小写字母大小写不敏感
    源/目的操作数位置第一个为源操作数,第二个为目的操作数,方向从左到右第一个为目的操作数,第二个为源操作数,方向从右到左
    前缀寄存器前加“%”,立即数前加“$“寄存器和立即数不需要加前缀
    内存寻址使用“(”和“)”使用“[”“]”
    数据长度指令操作码后紧跟一个字符,表明操作数带下,b:字节;w:字;l:双字在操作码后显式注明byte ptr、word ptr、dword ptr
    • 常用指令
      • 数据传送指令
        • mov指令
          • m o v   d e s t ,   s r c    ; d e s t ← s r c mov\ dest,\ src\ \ ; dest\leftarrow src mov dest, src  ;destsrc
          • 源操作数:立即数、寄存器或主存单元
          • 目的操作数:寄存器或主存单元
          • 内容复制,但不能用于直接从内存复制到内存
        • push指令
          • p u s h   r e g 32 / m e m / c o n 32   ; s p ← s p − 4 , s s : [ s p ] ← r e g 32 / m e m / c o n 32 push\ reg32/mem/con32 \ ;sp\leftarrow sp-4,ss:[sp]\leftarrow reg32/mem/con32 push reg32/mem/con32 ;spsp4,ss:[sp]reg32/mem/con32
        • pop指令
          • p o p   r e g 32 / m e m / c o n 32   ; s s : [ s p ] ← r e g 32 / m e m / c o n 32 , s p ← s p + 4 pop\ reg32/mem/con32\ ;ss:[sp]\leftarrow reg32/mem/con32,sp\leftarrow sp+4 pop reg32/mem/con32 ;ss:[sp]reg32/mem/con32,spsp+4
      • 算术逻辑运算指令
        • add/sub
        • inc/dec
        • imul
        • idiv
        • and/or/xor
        • not
        • neg
        • shl/shr
      • 控制流指令
        • jmp:无条件转移
        • **j c o n d i t i o n condition condition
        • cmp/test:不保存操作结果,仅根据运算结果设置CPU状态字中的条件码
        • call/ret
          • call:先将当前执行执行地址入栈,然后无条件转移到指示的地址。call指令保存调用之前的地址信息,当call指令结束时,返回调用之前的地址
          • ret:实现子程序的返回,弹出栈中保存的指令地址,然后无条件转移到保存的指令地址执行

    3.2过程调用的机器级表示

    • 假设过程P调用过程Q
      • P将入口参数(实参)放在Q能访问到的地方
      • P将返回地址存到特定的地方,然后控制转移到Q
      • Q保存P的现场(通用寄存器的内容),并为自己的非静态局部变量分配空间
      • 执行Q
      • Q恢复P的现场,将返回结果放到P能访问到的地方,并释放局部变量所占用的空间
      • Q取出返回地址,将控制转移到P
    • 举例

    3.3 选择语句的机器级表示

    • 标志位
      • CF:最近无符号整数加减运算后的进位/借位情况
      • ZF:最近的操作运算结果是否为0
      • SF:最近的有符号数运算结果的符号
      • OF:最近的有符号数运算结果是否溢出

    3.4 循环语句的机器级表示

    使用条件测试和跳转组合起来实现循环

    3.5 例题

    4. CISC & RISC

    • 82定律:对传统的CISC指令研究表明,有20%的较简单的指令被反复使用,约占整个程序的80%;而80%左右的指令很少用到,约占程序的20%
    • 比较
    对比项目CISCRISC
    指令系统复杂庞大简单精简
    指令数目一般为200条以上一般少于100条
    指令字长不固定定长
    可访存指令不限制仅有LOAD/STORE可以访存
    各种指令的执行时间相差较大绝大多数在一个周期内完成
    各种指令的执行频度相差较大都比较常用
    通用寄存器数量较少
    目标代码难以用优化编译生成高效的目标代码程序采用优化的编译程序,生成代码较为高效
    控制方式绝大多数为微程序控制绝大多数为组合逻辑控制
    指令流水线可以通过一定方式实现必须实现
    • RISC的主要优点
      • 更能充分利用VLSI芯片的面积。CISC的控制器大多采用微程序控制,其控制存储器在CPU芯片内所占面积达50%以上;RISC控制器采用组合逻辑,其硬布线逻辑只占CPU芯片面积的10%左右
      • RISC更能提高运算速度。RISC的指令数、寻址方式和指令格式种类少,设有多个通用寄存器,采用流水线技术,所以运算速度快,大多指令在一个时钟周期内完成。补充(来自课本 P 333 P_{333} P333):RISC机采用寄存器窗口堆叠技术,程序嵌套时不必将寄存器内容保存到存储器中,所以又提高的执行速度;采用组合逻辑控制,比微程序控制的CISC机延迟小,缩短了CPU周期
      • 便于设计,可降低成本,提高可靠性。RISC指令系统简单,因此机器设计周期短;逻辑简单,因此可靠性高
      • 有利于编译程序代码优化,有效支持高级语言程序。RISC指令种类少,寻址方式少,使得编译程序容易选择更有效的指令和寻址方式,并适当的调整指令顺序,使得代码执行更高效
    • CISC的兼容性优于RISC
      • CISC大多数能实现软件兼容,即高档机包含了低档机的全部指令,并可以加以扩充;但RISC简化了指令系统,指令数量少,格式和老机器也有所不同,因此大多数的RISC机不能与老机器兼容

    5.小结

    • 为什么要引入指令系统
      • 引入指令系统后,避免了用户和二进制代码直接接触,使得用户编写程序更加方便
      • 指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围
    • 寻址方式对指令系统的影响
      • 寻址方式的多样化能让用户编程更加方便,但多重寻址方式会造成CPU结构的复杂化,也不利于指令流水线的运行
      • 寻址方式太少虽能提高CPU的效率,但对于用户来说,少数几种寻址方式会使编程变得复杂,难以满足用户的需求

    更新文档

    更新日期更新内容
  • 相关阅读:
    实现Quartz.NET的HTTP作业调度
    【系统稳定性 - 调优】3.4 常见Binder相关异常调优总结
    排序算法——希尔排序
    4D毫米波雷达硬件系统架构
    PhotoZoom 8全新版免费手机图片放大工具
    LaTex 使用颜色突出文中链接或引用
    TensorFlow的transformer类模型文件转换为pytorch
    给ShardingSphere提了个PR
    Linux:文件搜索
    新工作感悟~辞旧迎新~
  • 原文地址:https://blog.csdn.net/qq_45800517/article/details/125423029