发布网友 发布时间:2023-10-04 06:28
共1个回答
热心网友 时间:2024-04-16 01:06
早期的计算机, 存储器是一个很昂贵的资源, 因此希望指令系统能支持生成最短的程序。此外, 还希望程序执行时所需访问的程序和数据位的总数越少越好。在微程序出现后, 将以前由一串指令所完成的功能移到了微代码中, 从而改进了代码密度。此外, 它也避免了从主存取指令的较慢动作, 从而提高执行效率。在微代码中实现功能的另一论点是: 这些功能能较好的支持编译程序。如果一条高级语言的语句能被转换成一条机器语言指令, 这可使编译软件的编写变得非常容易。此外, 在机器语言中含有类似高级语言的语句指令, 便能使机器语言与高级语言的间隙减少。这种发展趋向导致了复杂指令系统( CISC) 设计风格的形成, 即认为计算机性能的提高主要依靠增加指令复杂性及其功能来获取。
CISC 指令系统的主要特点是:
( 1) 指令系统复杂。具体表现在以下几个方面:
① 指令数多, 一般大于100 条。
② 寻址方式多, 一般大于4 种。
③ 指令格式多, 一般大于4 种。
( 2) 绝大多数指令需要多个机器时钟周期方可执行完毕。
( 3) 各种指令都可以访问存储器。
CISC 指令系统主要存在如下三方面的问题:
( 1) CISC 中各种指令的使用频度相差很悬殊, 大量的统计数字表明, 大约有20%的指令使用频度比较高, 占据了80%的处理机时间。换句话说, 有80%的指令只在20%的处理机运行时间内才被用到。
( 2) VLSI 的集成度迅速提高, 使得生产单芯片处理机成为可能。在单芯片处理机内, 希望采用规整的硬布线控制逻辑, 不希望用微程序。而在CISC 处理机中, 大量使用微程序技术以实现复杂的指令系统, 给VLSI 工艺造成很大困难。
( 3) 虽然复杂指令简化了目标程序, 缩小了高级语言与机器指令之间的语义差距, 然而增加了硬件的复杂程度, 会使指令的执行周期大大加大, 从而有可能使整个程序的执行时间反而增加。 由于CISC 技术在发展中出现了问题, 计算机系统结构设计的先驱者们尝试从另一条途径来支持高级语言及适应VLSI 技术特点。1975 年IBM 公司Jo hn Cocke 提出了精简指令系统的设想。到了1979 年, 美国加州大学伯克莱分校由Patter son 教授领导的研究组, 首先提出了RISC 这一术语, 并先后研制了RISC-Ⅰ和RISC- Ⅱ计算机。1981 年美国的斯坦福大学在Hennessy教授领导下的研究小组研制了M IPS RISC 计算机, 强调高效的流水和采用编译方法进行流水调度, 使得RISC 技术设计风格得到很大补充和发展。
90 年代初, IEEE 的Michael Slater 对于RISC 的定义作了如下描述:RISC 处理器所设计的指令系统应使流水线处理能高效率执行, 并使优化编译器能生成优化代码。
RISC 为使流水线高效率执行, 应具有下述特征:
( 1) 简单而统一格式的指令译码;
( 2) 大部分指令可以单周期执行完成;
( 3) 只有LOAD 和ST ORE 指令可以访问存储器;
( 4) 简单的寻址方式;
( 5) 采用延迟转移技术;
( 6) 采用LOAD 延迟技术。
RISC 为使优化编译器便于生成优化代码, 应具有下述特征:
( 1) 三地址指令格式;
( 2) 较多的寄存器;
( 3) 对称的指令格式。
RISC 的主要问题是编译后生成的目标代码较长, 占用了较多的存储器空间。但由于半导体集成技术的发展, 使得RAM 芯片集成度不断提高和成本不断下降, 目标代码较长已不成为主要问题。RISC 技术存在另一个潜在缺点是对编译器要求较高,除了常规优化方法外, 还要进行指令顺序调度, 甚至能替代通常流水线中所需的硬件联锁功能。