第二章数据的表示与指令系统设计 内容提要 指令系统是计算机系统中硬件与软件界面的重要标志。数 据是指令系统所处理的对象,它的类型与表示方式对于一台计算 机来说是非常重要的。在此首先对计算机中的数据类型与表示作 以简单的介绍,然后讲述指令系统的设计方法、CISC与RISC计 算机的特点等
第二章 数据的表示与指令系统设计 • 内容提要: 指令系统是计算机系统中硬件与软件界面的重要标志。数 据是指令系统所处理的对象,它的类型与表示方式对于一台计算 机来说是非常重要的。在此首先对计算机中的数据类型与表示作 以简单的介绍,然后讲述指令系统的设计方法、CISC与RISC计 算机的特点等
第二章数据的表示与 指令系统设计 2.1数据的类型与表示 2.2指令系统设计 2.3CSC和RSC计算机比较
第二章 数据的表示与 指令系统设计 2.1 数据的类型与表示 2.2 指令系统设计 2.3 CISC和RISC计算机比较
2.1数据的类型与表示 2.1.1数据类型 2.1.2数据表示 2.1.3定点数与浮点数 2.1.4向量数据表示 2.1.5自定义数据表示
2.1 数据的类型与表示 2.1.1 数据类型 2.1.2 数据表示 2.1.3 定点数与浮点数 2.1.4 向量数据表示 2.1.5 自定义数据表示
2.1.1数据类型 在计算机中数据有三种,一种是用户定义的数据;另一种是系 统数据;第三种是指令字。 数据类型与数据不同,它除了一组数值的集合之外,还包括作 用于该数值集合上的操作集。比如整型数据类型是指整型数据和相 应的算术运算操作集; 布尔数据类型是指布尔数据(真和假)和相应的运算:“与 或 非 异或”等。 从系统结构的观点出发,数据类型可分为基本数据、结构数据 和抽象数据类型。本节主要讨论基本数据类型和结构数据类型
2.1.1 数据类型 在计算机中数据有三种,一种是用户定义的数据;另一种是系 统数据;第三种是指令字。 数据类型与数据不同,它除了一组数值的集合之外,还包括作 用于该数值集合上的操作集。比如整型数据类型是指整型数据和相 应的算术运算操作集; 布尔数据类型是指布尔数据(真和假)和相应的运算:“与”、 “或”、“非”、“异或”等。 从系统结构的观点出发,数据类型可分为基本数据、结构数据 和抽象数据类型。本节主要讨论基本数据类型和结构数据类型
1基本数据类型 基本数据类型是指可由计算机直接表示,通过指令直接操作的数据。 包括 二进制位、二进制位串、整数、自然数(正整数)、实数(浮点数) 布尔数和字符。 进制位是二进制数的基本单位,可对其进行各种算术逻辑运算 二进制位串是指若干位二进制数,可对其进行各种算术/逻辑运算和 移位操作,其位数称为长度,常用表示;当L=8时,称为一个字节,也 称为字节数据。 布尔数也是—位二进制数,其值有“真”和“假”,可对其进行 与”、“或”、“非”、“异或”等布尔操作。 字符是符号的数字化表示,目前采用的主要是ASCI码,用7位二进 制串表示—个字符;在一些大的系统中,常采用 EBCDIC码,是用8位 进制串表示一个字符。 至于整数、自然数(正整数)、实数(浮点数),是按照数学习惯 所用到的数据类型。除了用二进制表示的数据之外,还可以使用十进制 数,但是在计算机中都是用二进制位串来表示的,可对其进行各种算术 运算和移位操作,也可按照逻辑数进行逻辑运算
1.基本数据类型 基本数据类型是指可由计算机直接表示,通过指令直接操作的数据。 包括: 二进制位、二进制位串、整数、自然数(正整数)、实数(浮点数)、 布尔数和字符。 二进制位是二进制数的基本单位,可对其进行各种算术/逻辑运算。 二进制位串是指若干位二进制数,可对其进行各种算术/逻辑运算和 移位操作,其位数称为长度,常用L表示;当L=8时,称为一个字节,也 称为字节数据。 布尔数也是一位二进制数,其值有“真”和“假”,可对其进行 “与”、“或”、“非”、“异或”等布尔操作。 字符是符号的数字化表示,目前采用的主要是ASCII码,用7位二进 制串表示一个字符;在一些大的系统中,常采用EBCDIC码,是用8位二 进制串表示一个字符。 至于整数、自然数(正整数)、实数(浮点数),是按照数学习惯 所用到的数据类型。除了用二进制表示的数据之外,还可以使用十进制 数,但是在计算机中都是用二进制位串来表示的,可对其进行各种算术 运算和移位操作,也可按照逻辑数进行逻辑运算
2结构数据类型 结构数据类型是由一组相互关联的数据元素复合而成的数据类型, 相互之间的关联称为数据结构。结构数据类型一般不能直接由硬件表示 和识别,需要通过映象的方式存储到存储器的一维空间中去。常见的向 量、数组、字符串、堆栈、队列、记录等都属于结构数据类型。 其中向量、数组、字符串、记录等般由用户定义和使用;堆栈可 以由用户定义和使用,也可以由操作系统定义和使用;队列通常只在操 作系统中定义和使用。除此之外,还有图、表、树及链表等,也是在操 作系统中定义和使用
2.结构数据类型 结构数据类型是由一组相互关联的数据元素复合而成的数据类型, 相互之间的关联称为数据结构。结构数据类型一般不能直接由硬件表示 和识别,需要通过映象的方式存储到存储器的一维空间中去。常见的向 量、数组、字符串、堆栈、队列、记录等都属于结构数据类型。 其中向量、数组、字符串、记录等一般由用户定义和使用;堆栈可 以由用户定义和使用,也可以由操作系统定义和使用;队列通常只在操 作系统中定义和使用。除此之外,还有图、表、树及链表等,也是在操 作系统中定义和使用
2.1.2数据表示 1.数据表示 (1)数据表示是指计算机硬件所能直接表示和识别数据的形式。 它硏究的是由硬件直接表示和识别,指令系统可以直接调用的数据类型。 因此数据表示与数据类型有着密切的关系。比如 要直接识别和处理整型数据,计算机就必须有相应的指令和整型数 据运算部件 若要直接识别和处理浮点数,就必须要有浮点运算的指令和浮点运 算器 若要直接识别和处理布尔型数据,就必须要有逻辑运算指令和进行 逻辑运算的部件等。 属于数据表示的数据类型一般是最常用,也是比较简单的数据类型 比如: 整型数据、实型数据、布尔数据、字符串、堆栈等 在向量机中,向量也可以被硬件直接识别,通过向量指令来调用
2.1.2 数据表示 1. 数据表示 (1)数据表示是指计算机硬件所能直接表示和识别数据的形式。 它研究的是由硬件直接表示和识别,指令系统可以直接调用的数据类型。 因此数据表示与数据类型有着密切的关系。比如: 要直接识别和处理整型数据,计算机就必须有相应的指令和整型数 据运算部件; 若要直接识别和处理浮点数,就必须要有浮点运算的指令和浮点运 算器; 若要直接识别和处理布尔型数据,就必须要有逻辑运算指令和进行 逻辑运算的部件等。 属于数据表示的数据类型一般是最常用,也是比较简单的数据类型, 比如: 整型数据、实型数据、布尔数据、字符串、堆栈等; 在向量机中,向量也可以被硬件直接识别,通过向量指令来调用
(2)数据结构硏究的主要是面向系统软件和面向应用领域所需要处理 的数据类型,它研究数据类型的逻辑结构与物理结构之间的关系与算法。除 了数据表示所硏究的数据之外,其它数据般都属于数据结构所要硏究的内 谷 数据表示和数据结构分别是数据类型的子集。它确定哪些数据用数据表 示实现,哪些数据用数据结构实现,实质上是硬软件之间的主要界面之- 也是计算机系统设计中硬软件分配中的一项重要的内容。 2·确定数据表示的原则 通过以上分析,已经知道数据表示的重要性。那么,如何确定哪些数据 类型用数据表示来实现呢?以下有四个方面的意见,供读者参考。 ①有利于提高数据处理能力,缩短程序的运行时间 ②可减少CPU与主存之间的数据传送量; ③通用性强,利用率高; ④还要综合考虑系统结构的复杂性、可实现性以及总的性能价格比。 下面通过实例,进一步说明在计算机中数据表示的重要性
(2)数据结构研究的主要是面向系统软件和面向应用领域所需要处理 的数据类型,它研究数据类型的逻辑结构与物理结构之间的关系与算法。除 了数据表示所研究的数据之外,其它数据一般都属于数据结构所要研究的内 容。 数据表示和数据结构分别是数据类型的子集。它确定哪些数据用数据表 示实现,哪些数据用数据结构实现,实质上是硬软件之间的主要界面之一, 也是计算机系统设计中硬软件分配中的一项重要的内容。 2.确定数据表示的原则 通过以上分析,已经知道数据表示的重要性。那么,如何确定哪些数据 类型用数据表示来实现呢?以下有四个方面的意见,供读者参考。 ① 有利于提高数据处理能力,缩短程序的运行时间; ② 可减少CPU与主存之间的数据传送量; ③ 通用性强,利用率高; ④ 还要综合考虑系统结构的复杂性、可实现性以及总的性能价格比。 下面通过实例,进一步说明在计算机中数据表示的重要性
【例2.1】比较用定点机实现浮点运算和浮点机运算的效果。 设有一台定点机,在进行科学运算时的速度是每秒1千万次。如 果用来实现32位的浮点运算,平均每次要执行100条以上的指令,访 问存储器的次数也要增加100倍。这就是说,实际的运算速度至少下 降100倍。如果用同档次(主频相同,字长都是32位)的浮点机运算 虽然浮点运算的指令周期般是定点运算指令周期的3倍,那么在浮 点机上进行浮点运算的速度仍然要比定点机进行浮点运算快33倍以 上
【例2.1】比较用定点机实现浮点运算和浮点机运算的效果。 设有一台定点机,在进行科学运算时的速度是每秒1千万次。如 果用来实现32位的浮点运算,平均每次要执行100条以上的指令,访 问存储器的次数也要增加100倍。这就是说,实际的运算速度至少下 降100倍。如果用同档次(主频相同,字长都是32位)的浮点机运算, 虽然浮点运算的指令周期一般是定点运算指令周期的3倍,那么在浮 点机上进行浮点运算的速度仍然要比定点机进行浮点运算快33倍以 上
【例2.2】比较普通计算机实现向量运算和向量机运算的效果。 设在普通计算机上实现两个200×200矩阵的加法运算。如果用普通 的计算机实现二维矩阵运算,一般需要编写双重循环程序,其中内循环 200次,外循环200次,这就是说,需要执行4000次加法指令。如果 台向量机有200个处理器,且具有向量数据表示,那么对于200×200矩 阵的加法运算,仅需要执行200次运算就可以了;如果向量机有 200×200=40000个处理器,那么仅执行次运算指令就可以完成全部 运算。显然,用向量机求解要比普通计算机快得多。另外,在普通计算 机上运算时访问存储器的次数(访存周期)至少为4×40000次;而在 200个处理器的向量机上,访问存储器的次数(访存周期)可估算为 4×200次,在200×200个处理器的向量机上,访问存储器的次数(访存 周期)仅为4次。为了便于比较,没有考虑其它辅助指令
【例2.2】比较普通计算机实现向量运算和向量机运算的效果。 设在普通计算机上实现两个200×200矩阵的加法运算。如果用普通 的计算机实现二维矩阵运算,一般需要编写双重循环程序,其中内循环 200次,外循环200次,这就是说,需要执行40000次加法指令。如果一 台向量机有200个处理器,且具有向量数据表示,那么对于200×200矩 阵的加法运算,仅需要执行200次运算就可以了;如果向量机有 200×200=40000个处理器,那么仅执行一次运算指令就可以完成全部 运算。显然,用向量机求解要比普通计算机快得多。另外,在普通计算 机上运算时访问存储器的次数(访存周期)至少为4×40000次;而在 200个处理器的向量机上,访问存储器的次数(访存周期)可估算为 4×200次,在200×200个处理器的向量机上,访问存储器的次数(访存 周期)仅为4次。为了便于比较,没有考虑其它辅助指令