可编程的cpu

上传人:wm****3 文档编号:40984900 上传时间:2018-05-27 格式:DOC 页数:13 大小:54.50KB
返回 下载 相关 举报
可编程的cpu_第1页
第1页 / 共13页
可编程的cpu_第2页
第2页 / 共13页
可编程的cpu_第3页
第3页 / 共13页
可编程的cpu_第4页
第4页 / 共13页
可编程的cpu_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《可编程的cpu》由会员分享,可在线阅读,更多相关《可编程的cpu(13页珍藏版)》请在金锄头文库上搜索。

1、要说到设计的复杂程度,那还是要说到设计的复杂程度,那还是 CPUCPU 了!这个不用讨论,很简单的道理你看看了!这个不用讨论,很简单的道理你看看 显卡芯片的更新速度和显卡芯片的更新速度和 CPUCPU 的更新速度就可见一斑了。还是简单说说他们的设的更新速度就可见一斑了。还是简单说说他们的设 计原理吧。计原理吧。CPU:CPU:但是,现在我要问一句:但是,现在我要问一句:“什么是什么是 CPUCPU?”我相信大多数人并不知道什么我相信大多数人并不知道什么 是是 CPUCPU。当然,你可以回答。当然,你可以回答 CPUCPU 是中央处理器,或者来一句英文:是中央处理器,或者来一句英文: Centr

2、alCentral ProcessingProcessing UnitUnit。是的,没错。但,。是的,没错。但,RISCRISC 和和 CISCCISC 是什么?什么是是什么?什么是 “9“9 路超标量设计路超标量设计”、“20“20 级流水线级流水线”?什么是?什么是“解码解码”,为什么,为什么 AthlonAthlon 和和 PIIIPIII 的解码过程需要的时钟周期大大大于其他的的解码过程需要的时钟周期大大大于其他的 RISCRISC 处理器处理器? ?这些都不是一句这些都不是一句 “中央处理器中央处理器”所能够回答的。所能够回答的。 一、一、 指令系统指令系统要讲要讲 CPUCPU,

3、就必须先讲一下指令系统。指令系统指的是一个,就必须先讲一下指令系统。指令系统指的是一个 CPUCPU 所能够处所能够处 理的全部指令的集合,是一个理的全部指令的集合,是一个 CPUCPU 的根本属性。比如我们现在所用的的根本属性。比如我们现在所用的 CPUCPU 都是都是 采用采用 x86x86 指令集的,他们都是同一类型的指令集的,他们都是同一类型的 CPUCPU,不管是,不管是 PIIIPIII、AthlonAthlon 或或 JoshuaJoshua。我们也知道,世界上还有比。我们也知道,世界上还有比 PIIIPIII 和和 AthlonAthlon 快得多的快得多的 CPUCPU,比如

4、,比如 AlphaAlpha,但它们不是用,但它们不是用 x86x86 指令集,不能使用数量庞大的基于指令集,不能使用数量庞大的基于 x86x86 指令集的程序,指令集的程序, 如如 Windows98Windows98。之所以说指令系统是一个。之所以说指令系统是一个 CPUCPU 的根本属性,是因为指令系统决的根本属性,是因为指令系统决 定了一个定了一个 CPUCPU 能够运行什么样的程序。所有采用高级语言编出的程序,都需要能够运行什么样的程序。所有采用高级语言编出的程序,都需要 翻译(编译或解释)成为机器语言后才能运行,这些机器语言中所包含的就是翻译(编译或解释)成为机器语言后才能运行,这

5、些机器语言中所包含的就是 一条条的指令。一条条的指令。 1 1、 指令的格式指令的格式 一条指令一般包括两个部分:操作码和地址码。操作码其实就是指令序列号,一条指令一般包括两个部分:操作码和地址码。操作码其实就是指令序列号, 用来告诉用来告诉 CPUCPU 需要执行的是那一条指令。地址码则复杂一些,主要包括源操作需要执行的是那一条指令。地址码则复杂一些,主要包括源操作 数地址、目的地址和下一条指令的地址。在某些指令中,地址码可以部分或全数地址、目的地址和下一条指令的地址。在某些指令中,地址码可以部分或全 部省略,比如一条空指令就只有操作码而没有地址码。部省略,比如一条空指令就只有操作码而没有地

6、址码。举个例子吧,某个指令系统的指令长度为举个例子吧,某个指令系统的指令长度为 3232 位,操作码长度为位,操作码长度为 8 8 位,地址位,地址 长度也为长度也为 8 8 位,且第一条指令是加,第二条指令是减。当它收到一个位,且第一条指令是加,第二条指令是减。当它收到一个 “00000010000001000000000100000110”“00000010000001000000000100000110”的指令时,先取出它的前的指令时,先取出它的前 8 8 位操作码,位操作码, 即即 0000001000000010,分析得出这是一个减法操作,有,分析得出这是一个减法操作,有 3 3 个

7、地址,分别是两个源操作数个地址,分别是两个源操作数 地址和一个目的地址。于是,地址和一个目的地址。于是,CPUCPU 就到内存地址就到内存地址 0000010000000100 处取出被减数,到处取出被减数,到 0000000100000001 处取出减数,送到处取出减数,送到 ALUALU 中进行减法运算,然后把结果送到中进行减法运算,然后把结果送到 0000011000000110 处。处。这只是一个相当简单化的例子,实际情况要复杂的多。这只是一个相当简单化的例子,实际情况要复杂的多。 2 2、 指令的分类与寻址方式指令的分类与寻址方式一般说来,现在的指令系统有以下几种类型的指令:一般说来

8、,现在的指令系统有以下几种类型的指令: ()算术逻辑运算指令()算术逻辑运算指令算术逻辑运算指令包括加减乘除等算术运算指令,以及与或非异或等逻辑算术逻辑运算指令包括加减乘除等算术运算指令,以及与或非异或等逻辑 运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令 等。等。 ()浮点运算指令()浮点运算指令用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以 CPUCPU 中一中一 般还会有专门负责浮点运算的浮点运算单元。现在的浮点指令中一般还加入了般还

9、会有专门负责浮点运算的浮点运算单元。现在的浮点指令中一般还加入了 向量指令,用于直接对矩阵进行运算,对于现在的多媒体和向量指令,用于直接对矩阵进行运算,对于现在的多媒体和 3D3D 处理很有用。处理很有用。 ()位操作指令()位操作指令学过学过 C C 的人应该都知道的人应该都知道 C C 语言中有一组位操作语句,相对应的,指令系统语言中有一组位操作语句,相对应的,指令系统 中也有一组位操作指令,如左移一位右移一位等。对于计算机内部以二进制不中也有一组位操作指令,如左移一位右移一位等。对于计算机内部以二进制不 码表示的数据来说,这种操作是非常简单快捷的。码表示的数据来说,这种操作是非常简单快捷

10、的。 ()其他指令()其他指令上面三种都是运算型指令,除此之外还有许多非运算的其他指令。这些指上面三种都是运算型指令,除此之外还有许多非运算的其他指令。这些指 令包括:数据传送指令、堆栈操作指令、转移类指令、输入输出指令和一些比令包括:数据传送指令、堆栈操作指令、转移类指令、输入输出指令和一些比 较特殊的指令,如特权指令、多处理器控制指令和等待、停机、空操作等指令。较特殊的指令,如特权指令、多处理器控制指令和等待、停机、空操作等指令。对于指令中的地址码,也会有许多不同的寻址(编址)方式,主要有直接对于指令中的地址码,也会有许多不同的寻址(编址)方式,主要有直接 寻址,间接寻址,寄存器寻址,基址

11、寻址,变址寻址等,某些复杂的指令系统寻址,间接寻址,寄存器寻址,基址寻址,变址寻址等,某些复杂的指令系统 会有几十种甚至更多的寻址方式。会有几十种甚至更多的寻址方式。 3 3、 CISCCISC 与与 RISCRISCCISCCISC,ComplexComplex InstructionInstruction SetSet ComputerComputer,复杂指令系统计算机。,复杂指令系统计算机。 RISCRISC,ReducedReduced InstructionInstruction SetSet ComputerComputer,精简指令系统计算机。虽然这两,精简指令系统计算机。虽然

12、这两 个名词是针对计算机的,但下文我们仍然只对指令集进行研究。个名词是针对计算机的,但下文我们仍然只对指令集进行研究。 ()()CISCCISC 的产生、发展和现状的产生、发展和现状一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全 靠软件编译时通过简单指令的组合来实现。举个最简单的例子,一个靠软件编译时通过简单指令的组合来实现。举个最简单的例子,一个 a a 乘以乘以 b b 的操作就可以转换为的操作就可以转换为 a a 个个 b b 相加来做,这样就用不着乘法指令了。当然,最早相加来做,这样就用不着乘法指令了。当

13、然,最早 的指令系统就已经有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法的指令系统就已经有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法 组合来得快得多。组合来得快得多。由于那时的计算机部件相当昂贵,而且速度很慢,为了提高速度,越来越由于那时的计算机部件相当昂贵,而且速度很慢,为了提高速度,越来越 多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统 的指令数是受指令操作码的位数所限制的,如果操作码为的指令数是受指令操作码的位数所限制的,如果操作码为 8 8 位,那么指令数最位,那么指令数最 多为多为

14、 256256 条(条(2 2 的的 8 8 次方)。次方)。 那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了一种方案:那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了一种方案: 操作码扩展。前面说过,操作码的后面跟的是地址码,而有些指令是用不着地操作码扩展。前面说过,操作码的后面跟的是地址码,而有些指令是用不着地 址码或只用少量的地址码的。那么,就可以把操作码扩展到这些位置。址码或只用少量的地址码的。那么,就可以把操作码扩展到这些位置。举个简单的例子,如果一个指令系统的操作码为举个简单的例子,如果一个指令系统的操作码为 2 2 位,那么可以有位,那么可以有 0000

15、、0101、1010、1111 四条不同的指令。现在把四条不同的指令。现在把 1111 作为保留,把操作码扩展到作为保留,把操作码扩展到 4 4 位,位, 那么就可以有那么就可以有 0000、0101、1010、11001100、11011101、11101110、11111111 七条指令。其中七条指令。其中 11001100、11011101、11101110、11111111 这四条指令的地址码必须少两位。这四条指令的地址码必须少两位。 然后,为了达到操作码扩展的先决条件:减少地址码,设计师们又动足了脑筋,然后,为了达到操作码扩展的先决条件:减少地址码,设计师们又动足了脑筋, 发明了各种

16、各样的寻址方式,如基址寻址、相对寻址等,用以最大限度的压缩发明了各种各样的寻址方式,如基址寻址、相对寻址等,用以最大限度的压缩 地址码长度,为操作码留出空间。地址码长度,为操作码留出空间。就这样,慢慢地,就这样,慢慢地,CISCCISC 指令系统就形成了,大量的复杂指令、可变的指令指令系统就形成了,大量的复杂指令、可变的指令 长度、多种的寻址方式是长度、多种的寻址方式是 CISCCISC 的特点,也是的特点,也是 CISCCISC 的缺点:因为这些都大大增的缺点:因为这些都大大增 加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早 已不及在解码上浪费点的时间。除了个人已不及在解码上浪费点的时间。除了个人 PCPC 市场还在用市场还在用 x86x86 指令集外,服务器指令集外,服务器 以及更大的系统都早已不用以及更大的系统都早已不用 CISCCISC 了。了。x86x86 仍然存在的唯一理由就是为了兼容大

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号