【CSA】 CH2 Instruction Systems 指令系统

2024-01-22 16:59

本文主要是介绍【CSA】 CH2 Instruction Systems 指令系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CH2 Instruction Systems

指令系统

三种类型指令系统,CISC,RISC,VLIW:超长指令字

指令系统的设计:指令的格式设计、指令系统的功能设计、指令系统的性能评价

数据表示

确定哪些数据类型用数据表示来实现的原则
• 缩短程序的运行时间
• 减少CPU与主存储器之间的通信量
• 这种数据表示的通用性和利用率

高级数据表示


  1. 自定义数据表示

数据的属性通过指令中的操作码来解释,高级语言适用类型说明语句指定数据类型,运算符不反应数据类型,高级语言和机器语言之间的语义差距需要依靠编译器弥补

为了缩短高级语言和机器语言的语义差距,可以让机器中的每个数据都加上类型标识符 也就是类似于描述符

image-20220524153654129

[例题] 假设X处理机的数据不带标志符,其指令字长和数据字长均为32位;Y处理机的数据带标志符,数据字长增加至35位,其中3位是标志符,其指令字长由32位减少至30位。并假设一条指令平均访问两个操作数,每个操作数平均被访问R次。分别计算这两种不同类型的处理机中程序所占用的存储空间。

[解答] X和Y处理机程序占用的存储空间总和分别为

		32I是指令占用的空间、2*32 / R 操作数空间?$B_x = 32I + 2*32 / R,B_y = 30I + 2*35I / R$比值:$B_y / B_x = \frac{15R+35}{16R+32}$当𝑅 > 3时,有By / Bx <1;而实际应用中经常是𝑅 > 10。所以,标志符的处理机所占用的存储空间通常要小。

标识符数据表示方法的[优点]:

  1. 简化了指令系统。
  2. 由硬件实现一致性检查和数据类型转换。
  3. 简化程序设计,缩小了人与计算机之间的语义差距。
  4. 简化编译器,使高级语言与机器语言之间的语义差距大大缩短。
  5. 支持数据库系统,一个软件不加修改就可适用于多种数据类型。
  6. 方便软件调试,在每个数据中都有陷井位。

[缺点]:

  1. 数据和指令长度可能不一致:可以通过精心设计指令系统来解决
  2. 指令[执行速度]降低,但是采用标志符设计,程序的设计编译调试实践都会降低
  3. 硬件复杂度增加

  1. 数据描述符:对向量、数据、记录等数据,由于元素属性相同,采用数据描述符

    数据描述符与标志符的区别:标志符只作用于一个数据,而数据描述符要作用于一组数据

  2. 向量、数组数据表示

    增设数组数据表示,组成向量机

    对于向量A,需要指明基地址、位移量、向量长度、元素步距

    向量有效长度的起点:基地址+位移量

  3. 堆栈数据表示

    堆栈数据结构在编译和子程序调用中很有用

    堆栈机器的特点:1)有高速寄存器组成的硬件堆栈;2)丰富的堆栈操作指令,功能强大;3)支持高级语言编译;4)支持子程序的嵌套和递归调用

  4. 原则:看系统效率是否提高:时间和存储空间是否减少

    通用性和利用率是否提高

  5. 浮点数表示

    数符阶符阶码数值小数点尾数
    1bit1bitp位.m位

    image-20220531103218628

    最小尾数:1 * r m − 1 r_m^{-1} rm1

    最大尾数: 全 111 最 大 1 − r m − m ′ 全111最大1 - r_m^{-m'} 1111rmm

寻址技术

编址方式

  • 一般:字节编址,字访问
  • 部分机器:位编址,字访问
  • 辅助存储器:块编址,位访问

字节编址 字访问的问题:

谈字节编址字访问的地址信息浪费问题_TalesOV的博客-CSDN博客

关于地址的浪费:

字编址32位去访问,地址的最低两位都是00.如果32位机器按照半字(两个字节)寻址,那么最后一个二进制位会是0

与访问的最小单位有关系

双字地址最末三个二进制位必须为000,单字地址最末两位必须为00,半字地址最末一位必须为0

大端小端问题

0x123456

大端:数据从高字节向低字节排列(从左往右 0x123456)

小端:数据从低字节向高字节排列(0x654321)

零地址空间个数(不懂)

•三个零地址空间:通用寄存器、主存储器、输入输出设备独立编址
• 两个零地址空间:主存储器与输入输出设备统一编址
• 一个零地址空间:最低端是通用寄存器,最高端是输入输出设备,
中间为主存储器
• 隐含编址方式:堆栈、Cache等

一个零地址空间,即所有存储设备统一编址,地址低端是通用寄存器,最高端是I/O设备,中间绝大多数给主存。

并行存储器的编址技术
• 高位交叉编址:主要用来扩大存储器容量。
• 低位交叉编址:主要是提高存储器速度。

模m低位交叉编址:

image-20220531110320904

寻址规则
• 体地址𝑗=𝐴 𝑚𝑜𝑑 𝑚
• 体内地址𝑖 = 𝐴/𝑚

适合于单处理机内的数据存取和带Cache的主存

同样还有模M高位交叉编址

适合于共享存储器的多机系统,适用于指令和数据分别存于不同分体中

image-20220531110756228

输入输出设备的编址

一台设备一个地址:仅对输入输出设备本身进行编址,需要通过指
令中的操作码来识别该输入输出设备接口上的有关寄存器
Ø 一台设备两个地址:数据寄存器、状态或控制寄存器。
Ø 多个编址寄存器共用同一个地址的方法:
• 依靠地址内部来区分,适用于被编址的寄存器的长度比较短
• “下跟法”隐含编址方式,必须按顺序读写寄存器。
Ø 一台设备多个地址:增加编程的困难

寻址方式

  • 立即数寻址
  • 面向寄存器寻址
  • 面向主存储器寻址
    • 直接寻址
    • 间接寻址
    • 变址寻址
  • 面向堆栈寻址

定位方式主要研究程序的主存物理地址在什么时间确定,采用什
么方式来实现

地址转化

程序需要定位的主要原因:
• 程序的独立性
• 程序的模块化设计
• 数据结构在程序运行过程中,其大小往往是变化的
• 有些程序本身很大,大于分配给它的主存物理空间

定位方式

Ø 直接定位方式:在程序装入主存储器之前,程序中的指令和数据的主存物理就已经确定了的称为直接定位方式。
Ø 静态定位:在程序装入主存储器的过程中随即进行地址变换,确定指令和数据的主存物理地址的称为静态定位方式。
Ø 动态定位:在程序执行过程中,当访问到相应的指令或数据时才进行地址变换,确定指令和数据的主存物理地址的称为动态定位方式。

动态定位需要:增加相应的基址寄存器和地址加法器硬件,在程序不做变换直接装入主存的同时,将装入主存的起始地址存入对应该道程序使用的基址寄存器中

程序执行时,通过地址加法器将逻辑地址加上基址寄存器内的程序基址,形成有效的物理地址

可在指令中加入相应的标志位来指明指令地址是否需要加基址

指令系统的优化设计

主要目标:节省程序的存储空间,指令格式尽量规整,便于译码

操作码的优化表示

操作码的三种编码方法:固定长度、Huffman编码、扩展编码

优化操作码编码的目的:节省程序存储空间

Huffman编码

概率高的用最短的位数来处理

操作码的平均长度公式: H = − ∑ p i ∗ l o g 2 p i , p i 是 第 i 种 操 作 码 出 现 的 概 率 H = -\sum pi*log_2p^i,pi是第i种操作码出现的概率 H=pilog2pi,pii

固定长编码相对于最优Huffman编码的信息冗余量: R = 1 − − ∑ p i ∗ l o g 2 p i l o g 2 n 分 母 需 要 向 上 取 整 R = 1-\frac{-\sum pi*log_2p_i}{log_2n} 分母需要向上取整 R=1log2npilog2pi

最短平均长度 H o p t 是 一 个 理 想 值 H_{opt} 是一个理想值 Hopt

然后算信息冗余量R = 1 - Hopt / H实际 就是冗余量

huffman缺点:

  • 操作码长度很不规整,硬件译码困难
  • 与地址码共同组成固定长的指令比较困难
扩展编码法

操作码长度不是定长,但是只有 有限几种码长

image-20220531161510314

4-8-12等长扩展编码法:

image-20220531163310540

一个是从每次15个 一个是 8/64/512

RISC CISC

  • 按CISC方向:增强原有指令的功能以及设置更为复杂的新指令,取代
    原先由软件子程序完成的功能,实现软件功能的硬化
  • 按RISC方向:通过减少指令种类和简化指令功能来降低硬件设计的复
    杂度,提高指令执行速度

RISC 定义以及特点

  1. 减少指令和寻址方式种类:指令系统只选择高频指令,减少指令数量,一般不超
    过100条;减少寻址方式,一般不超过两种
  2. 固定指令格式:精减指令格式限制在两种以内,并使全部指令都在相同的长度
  3. 大多数指令在单周期内完成:让所有指令都在一个周期内完成
  4. 采用LOAD/STORE结构:扩大通用寄存器数量(一般不少于32个),尽量减少访存,
    所有指令只有存(STORE)/取(LOAD)指令可以访存,其他指令只对寄存器操作
  5. 硬布线逻辑:大多数指令采用硬联逻辑,少数指令采用微程序实现,提高指令执
    行速度
  6. 优化编译:通过精减指令和优化设计编译程序,简单有效地支持高级语言实现
延时转移

为了使指令流水线不断流,在转移指令之后插入一条没有数据相关和控制相关的有效指令,而转移指令被延迟执行,这种技术称为延迟转移技术

采用指令延迟转移技术时,指令序列的调整由编译器自动进行,用户不必干预

类似于指令重排

采用延迟转移技术的两个限制条件
• 被移动指令在移动过程中与所经过的指令之间没有数据相关
• 被移动指令不破坏条件码,至少不影响后面的指令使用条件码

Ø如果找不到符合上述条件的指令,必须在条件转移指令后面插入空操作
Ø如果指令的执行过程分为多个流水段,则要插入多条指令
• 插入1条指令成功的概率比较大,插入2条或2条以上指令成功的概率明显下降(找不到啊)

指令取消技术

采用指令延时技术,经常找不到可以用来调整的指令,
• 可考虑采用另一种方法:指令取消技术
• 分为两种情况:
(1) 向后转移(适用于循环程序)
(2) 向前转移(IF THEN )

重叠寄存器窗口技术

原因:在RISC中,子程序比CISC中多,因为传送参数而访问存储器的信息
量很大
Ø实现方法:设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。
在每个过程使用的几个窗口中:
• 有一个窗口是与前一个过程共用
• 有个窗口是与下一个过程共用

image-20220531173532583

指令流调整技术
高速缓冲存储器Cache
优化设计编译器

情况:
(1) 向后转移(适用于循环程序)
(2) 向前转移(IF THEN )

重叠寄存器窗口技术

原因:在RISC中,子程序比CISC中多,因为传送参数而访问存储器的信息
量很大
Ø实现方法:设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。
在每个过程使用的几个窗口中:
• 有一个窗口是与前一个过程共用
• 有个窗口是与下一个过程共用

[外链图片转存中…(img-RtfEEKgr-1653990253811)]

指令流调整技术
高速缓冲存储器Cache
优化设计编译器

指令系统的发展和改进

这篇关于【CSA】 CH2 Instruction Systems 指令系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633630

相关文章

ARM SIMD instruction -- movi

MOVI       Move Immediate (vector). This instruction places an immediate constant into every vector element of the destination SIMD&FP register。       立即移动(向量)。此指令将一个立即常数放入目标SIMD&FP寄存器的每个向量元素中。

阅读笔记(四)NoSQL的选择指引《NoSQL database systems: a survey and decision guidance》

一. 前言   《NoSQL database systems: a survey and decision guidance》是一篇很好的综述类论文,详细的论述了NoSQL的特点和各种不同NoSQL数据库的选择依据。   传统的关系型数据库(relational database management systems ,RDBMSs)可以在保证一致性、可靠性、稳定性的前提下提供强有力的数据存储

Cannot merge new index 65636 into a non-jumbo instruction

在将ADT和SDK Tool升级到最新(分别是21.1和16.0.1)之后,我的一个工程(相对比较大)在编译并运行的时候,出现错误,Eclipse控制台输出如下信息:       Unable to execute dex: Cannot merge new index 67208 into a non-jumbo instruction!       Conversion to Dalv

【计算机组成原理】四、指令系统:2.指令的寻址方式(指令寻址、数据寻址)

指令的寻址方式 文章目录 指令的寻址方式3.指令寻址3.1顺序寻址3.2跳跃寻址 4.数据寻址4.1直接寻址4.2间接寻址4.3寄存器寻址4.4寄存器间接寻址4.5隐含寻址4.6立即寻址4.7偏移寻址4.7.1基址寻址4.7.2变址寻址4.7.3相对寻址 4.8堆栈寻址 3.指令寻址 指令寻址:确定下一条指令存放的地址。 程序计数器PC:指明一条指令的存放地址。 【注意

数学生物学-4-混乱系统(Chaotic Systems)

混沌系统(Chaotic Systems)是一种复杂且非线性的动态系统,其基本概念和特征有: 对初始条件的敏感依赖性: 混沌系统的核心特征之一是对初始条件的极端敏感性,这一特性通常被称为“蝴蝶效应”。这意味着即使是极其微小的差异在初始状态也可能随时间放大,导致系统行为的显著不同。例如,天气预报模型中微小误差的累积可能导致长期预测的显著偏差。这种敏感性使得混沌系统的确切长期行为变得难以预测。

计算机组成原理(4):指令系统/控制器

1 指令格式 【补充知识】   计算机语言的层级关系:机器语言 - 汇编语言 - 高级语言; ​ 机器语言用二进制来编写,用来反映硬件的语言。但是二进制编写太难了,就诞生了汇编语言,对其编程进行封装、简化; ​ 计算机工作的本质就是连续执行一条条机器语言,每一条机器语言的语句 称为 ==机器指令,==是一组有意义的二进制代码; ​ 将全部机器指令的集合 称为 机器的 指令系统 ; ​

Fine-tuning与 Instruction Tuning

Instruction Tuning是指什么 Instruction Tuning 是一种机器学习技术,特别是在自然语言处理 (NLP) 领域中,用于优化模型的行为,使其能够更好地遵循自然语言指令。它是在预训练和微调之后的一种技术,以进一步提升模型在实际应用中的表现。 现代 NLP 模型通常经历三个阶段: 预训练(Pretraining):模型在大规模未标注的数据上进行训练,学习语言的基本结

计算机组成原理----指令系统课后习题

对应的知识点: 指令系统 扩展操作码的计算: 公式: 对扩展操作码而言,若地址长度为n,上一层留出m种状态,下一层可扩展出 mx2^n 种状态 1.设计某指令系统时,假设采用 16 位定长指令字格式,操作码使用扩展编码方式,地址码为6位,包含零地址,一地址和二地址3种格式的指令,若二地址指令有12条,一地址指令有254条,则零地址指令的条数最多为() A.0        B.2

Ch2:链路层

一、 概述 本章讨论了Internet协议族中的最底层协议,链路层协议。我们比较了以太网和IEEE802.2/802.3的封装格式,以及SLIP和PPP的封装格式。由于SLIP和PPP经常用于低速的链路,二者都提供了压缩不常变化的公共字段的方法。这使交互性能得到提高。 大多数的实现都提供环回接口。访问这个接口可以通过特殊的环回地址,一般为127.0.0.1。也可以通过发送IP数据报给主

ARM指令系统概述

摘译自Matteo Franchin的PPT《ARMv8-A A64 ISA Overview》。 寄存器 ARM共有31个通用寄存器和2个特殊寄存器,都是64位。31个通用寄存器用X0到X30来表示,两个特殊寄存器是SP和ZR。 SP是栈指针,其内容是栈底的地址,必须满足16字节对齐的条件,否则无法使用。例如: ADD SP, SP, #8 这种用法是错误的,因为所得到的SP不满足16字