指令系统经历了简单-复杂-简单的螺旋式演变,请阐述RISC和CISC的特征:
- CISC,复杂指令系统计算机:
- 软件硬化:指令功能复杂
- 支持高级语言程序:增加新的复杂指令和复杂寻址方式
- 软件兼容:向上向后兼容
- 仅约20%的指令使用频度高,占据约80%的时间
- 研制周期长,难以调试,难以维护,可靠性差
- RISC,精简指令系统计算机:
- 优先选取使用频率较高的简单指令
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有取数/存数指令会访存,其它指令访问寄存器
- CPU中通用寄存器数量相当多
- CPU采用流水线结构,大部分指令可在一个时钟周期内完成(CPI<1)
- 控制单元设计以硬布线控制逻辑为主(对比于微程序控制)
- 采用编译优化技术,以减少程序执行时间
- CISC,复杂指令系统计算机:
指令系统设计的原则:
- 完备性
- 规整性
- 高效性
- 兼容性
操作数的类型有:
- 地址(看作无符号数)
- 数字(定点数,浮点数)
- 字符(非数值领域,字符数字化表示,如ASCII码)
- 逻辑数(各位间无关联,无进位)
主存编址方式分为按字编址和按字节编址,请阐述其优缺点:
- 按字编址:简单,但无法按字节操作,特别是非数值处理领域很不灵活,空间利用率低。
- 按字节编址:兼备字节地址和字地址,兼备字节操作和字操作,空间利用率高,但较为复杂,同等地址总线能寻址的地址范围较小。
多字节数据存放于一个字单元,有两种编址顺序:
- 小端方式:低位数据存放于低地址单元
- 大端方式:低位数据存放于高地址单元
存放边界问题:
- 边界对齐:浪费空间但访问效率高
- 边界不对齐:节省空间但可能需多次访问且控制复杂
指令的操作类型:
- 数据传送指令
- 数据运算指令
- 算术运算指令
- 逻辑运算指令
- 移位指令
- 位操作指令
- 程序控制指令
- 无条件转移指令
- 条件转移指令
- 调用与返回指令
- 陷阱指令
- I/O指令
- 其它指令
指令的格式:指令由操作码和地址码组成,操作码指明操作的性质,地址码指明操作数的地址,即操作对象所在的位置,或者下一条指令在主存中的地址。其中地址码的格式取决于CPU结构(堆栈型,累加器型,通用寄存器型(细分为RR,RS))
指令字长:一条指令中包含的二进制码位数,取决于操作码长度,地址码长度和地址码个数。选取原则是:指令字长尽可能短,各信息位利用率尽可能高。分为等长指令字结构和边长指令字结构,前者结构和控制逻辑简单,后者灵活且指令信息位利用率高。
操作码扩展技术:当采用定长指令字格式,且多种地址码结构混合使用时,可以利用地址码个数较少的指令空出的地址码字段,来增加操作码的位数。常用等长扩展法(如4-8-12),可采用保留一个码点的15/15/15…扩展法,也可采用每次保留一个标志位的8/64/512扩展法。
指令寻址方式:顺序寻址和跳跃寻址
数据寻址:
- 立即寻址:所需操作数直接在指令地址码部分给出
- 寄存器寻址:EA=Ri,Operand=(Ri)
- 存储器寻址:
- 直接寻址:EA=A,Operand=(A)
- 存储器间接寻址:EA=(A),Operand=((A))
- 寄存器间接寻址:EA=(Ri),Operand=((Ri))
- 偏移寻址
- 相对寻址:EA=(PC)+A
- 基址寻址:EA=(Rb)+A
- 变址寻址:EA=(Rx)+A
- 段寻址:(DS)与EA=(Rb)+A错位相加
- 堆栈寻址
- 复合寻址
程序定位方式:
- 直接定位:直接使用主存物理地址来编写或编译程序,程序较大时采用覆盖技术,分段调入。
- 静态定位方式:加载到主存时由操作系统的加载程序一次性为指令和数据分配主存物理地址,一旦装入,运行期间不可移动。程序较大时也采用覆盖技术。
- 动态定位方式:程序执行过程中进行逻辑地址到物理地址的转换,需要硬件支持,采用基址寻址方式实现,一个程序可以被分配在多个不连续的物理空间,多个程序可共享存放在主存中的同一程序段,支持虚拟存储器,为用户提供大于物理空间的逻辑地址空间。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不如吃茶去!
评论