流水线指令及RISC
- 格式:doc
- 大小:49.01 KB
- 文档页数:3
riscv添加指令原理概述及解释说明1. 引言1.1 概述本文将介绍RISC-V添加指令的原理,并对其进行概述和详细解释。
随着计算机科学和技术的发展,人们对计算机架构的需求也越来越多样化。
RISC-V作为一种开放且可扩展的指令集架构,在满足高性能、低功耗等基本要求的同时,还提供了添加指令的灵活性。
1.2 文章结构文章将按照以下顺序进行叙述:首先给出RISC-V简介,包括它的体系结构概述、指令集特点以及指令格式介绍。
接着,我们会详细探讨指令添加的原则和方法,包括需求分析、原则和思路以及具体的方法和步骤。
然后,我们将重点介绍RISC-V指令扩展模块的设计与实现,包括硬件架构设计方案、软件支持和编译器扩展以及功能验证方法与实验结果分析。
最后,我们对整个研究做出总结,并展望了在RISC-V架构中添加指令的意义与前景。
1.3 目的本文旨在向读者传达关于RISC-V添加指令原理的相关知识。
通过介绍RISC-V 的基本概念和特点,以及指令添加的原则和方法,读者将能够深入了解如何在RISC-V架构中添加自定义指令。
此外,本文还将介绍RISC-V指令扩展模块的设计与实现,使读者对硬件架构、软件支持和功能验证等方面有更全面的了解。
通过阅读本文,读者将能够掌握如何扩展RISC-V指令集的技术,并对未来RISC-V架构发展趋势有所预测与展望。
2. RISC-V 简介:2.1 RISC-V体系结构概述RISC-V是一个开放且免费的指令集架构(Instruction Set Architecture,简称ISA),它由加州大学伯克利分校的研究团队开发。
RISC-V体系结构是基于经典的精简指令集计算机(Reduced Instruction Set Computer,简称RISC)原则设计的。
与其他商业和专有指令集相比,RISC-V具有自由、灵活和可定制化的特点。
该架构主要包括标准指令集(RV32I、RV64I等)和扩展指令集(如乘法、除法扩展等)。
专利名称:基于RISC-V指令集的六级流水线CPU 专利类型:发明专利
发明人:康明才,顾佳浩
申请号:CN202111267138.4
申请日:20211028
公开号:CN113986354A
公开日:
20220128
专利内容由知识产权出版社提供
摘要:本发明公开了一种基于RISC‑V指令集的六级流水线CPU,该CPU能够实现RV32I基本指令集、乘法指令、CSR读写指令,并设置中断寄存器可以暂停流水线;CPU的显著特点是有六级流水线结构,分别是IF级、FD级、CSG级、EXE级、MEM级、WB级,具有较高的主频;对流水线中的冒险问题都设计了相关电路解决;利用内部前推解决了数据冒险,利用暂停流水线的方法解决了load_use 冒险,利用静态预测的方法解决了控制冒险。
该CPU具有小面积、低功耗、多功能的特点,可以在物联网和嵌入式领域广泛的应用。
申请人:南京理工大学
地址:210094 江苏省南京市孝陵卫200号
国籍:CN
代理机构:南京理工大学专利中心
代理人:陈鹏
更多信息请下载全文后查看。
层次机构:按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一种不同的语言为特征。
这些层次依次为:微程序机器级,传统机器语言机器级,汇编语言机器级,高级语言机器级,应用语言机器级等。
虚拟机:用软件实现的机器。
翻译:先用转换程序把高一级机器上的程序转换为低一级机器上等效的程序,然后再在这低一级机器上运行,实现程序的功能。
解释:对于高一级机器上的程序中的每一条语句或指令,都是转去执行低一级机器上的一段等效程序。
执行完后,再去高一级机器取下一条语句或指令,再进行解释执行,如此反复,直到解释执行完整个程序。
计算机系统结构:传统机器程序员所看到的计算机属性,即概念性结构与功能特性。
在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。
计算机组成:计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
计算机实现:计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。
系统加速比:对系统中某部分进行改进时,改进后系统性能提高的倍数。
Amdahl定律:当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。
程序的局部性原理:程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。
包括时间局部性和空间局部性。
CPI:每条指令执行的平均时钟周期数。
测试程序套件:由各种不同的真实应用程序构成的一组测试程序,用来测试计算机在各个方面的处理性能。
存储程序计算机:冯·诺依曼结构计算机。
其基本点是指令驱动。
程序预先存放在计算机存储器中,机器一旦启动,就能按照程序指定的逻辑顺序执行这些程序,自动完成由程序所描述的处理工作。
系列机:由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。
cisc risc vliw 通俗理解指令系统划分计算机指令系统是计算机硬件能够识别和执行的一组指令,它是计算机软件和硬件之间的接口。
指令系统的设计直接影响到计算机的性能、功能和成本。
根据指令系统的特点,可以将指令系统划分为CISC(Complex Instruction Set Computing,复杂指令集计算)、RISC(Reduced Instruction Set Computing,精简指令集计算)和VLIW(Very Long Instruction Word,超长指令字)三种类型。
1. CISC(复杂指令集计算)CISC是一种早期的指令系统设计方法,其主要特点是指令长度不固定,一条指令可以完成多个操作。
CISC指令系统中的指令通常包括数据操作、逻辑操作、控制转移等多种功能。
这种设计使得程序员可以用较少的指令完成复杂的任务,提高了编程的灵活性。
然而,CISC指令系统的复杂性也带来了一些问题:- 指令长度不固定导致硬件设计的复杂度增加,降低了处理器的运行速度;- 由于一条指令可以完成多个操作,需要更多的时钟周期来执行,降低了处理器的性能;- 程序中存在大量复杂的指令,使得编译器难以优化代码,降低了程序的执行效率。
2. RISC(精简指令集计算)为了解决CISC指令系统中存在的问题,研究人员提出了RISC指令系统设计方法。
RISC的主要特点是指令长度固定,一条指令只完成一个基本操作。
这使得硬件设计变得简单,提高了处理器的运行速度和性能。
RISC指令系统中的指令主要包括数据操作、逻辑操作和控制转移等基本操作。
与CISC相比,RISC具有以下优点:- 指令长度固定,简化了硬件设计,提高了处理器的运行速度;- 一条指令只完成一个基本操作,减少了时钟周期的数量,提高了处理器的性能;- 程序中的基本操作较为简单,便于编译器优化代码,提高了程序的执行效率。
然而,RISC指令系统的局限性在于其编程灵活性较低,程序员需要使用较多的指令来完成复杂的任务。
MIPS全64位超级流水线RISC R400处理器
赵信
【期刊名称】《微计算机信息》
【年(卷),期】1991(000)003
【摘要】七十年代兴起的RISC设计思想引起了计算机体系结构的一场革命,从微、小型机到超级计算机,从个人工作站到超级工作站,无不渗透着RISC技术。
目
前,RISC技术朝两个方向发展,其一是寻找新的芯片制造技术。
简单的单CPU RISC 结构几乎已经挖尽了当代CMOS速度的潜力。
【总页数】3页(P5-7)
【作者】赵信
【作者单位】无
【正文语种】中文
【中图分类】TP332.05
【相关文献】
1.64位MIPS指令处理器的流水线设计 [J], 李明刚
2.基于MIPS架构的RISC微处理器RM7000A [J], 李杰;贺占庄
3.超级流水线处理器MIPS R4000的结构设计及其特征 [J], 郑飞
4.基于MIPS IV指令集的RISC微处理器-RM7000A及其应用的实现 [J], 李杰;贺占庄;白军元
5.PMC—Sierra新推1.8GHz主频双CPU核64位MIPS—Powered多处理器——第三代多处理器RM11200增加了新CPU核心、PCI Express和DDR2 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
实验二指令流水线相关性分析·实验目的通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC 处理器的特点的理解。
·实验原理:指令流水线中主要有结构相关、数据相关、控制相关。
相关影响流水线性能。
·实验步骤一.使用WinDLX模拟器,对Fact.s做如下分析:(1)观察程序中出现的数据/控制/结构相关。
指出程序中出现上述现象的指令组合。
(2)考察增加浮点运算部件对性能的影响。
(3)考察增加forward部件对性能的影响。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
·实验过程一.使用WinDLX模拟器,对Fact.s做如下分析:浮点加、乘、除部件都设置为1,浮点数运算部件的延时都设置为4,如图1:图1 初始设置将fact.s和input.s加载至WinDLX中,如图2示。
图2 加载程序1.观察程序中出现的数据/控制/结构相关;指出程序中出现上述现象的指令组合。
1)数据相关点击F7,使程序单步执行,当出现R-Stall时停止,运行过程中出现下图3所示,输入整数6。
图3 输入整数6打开Clock Diagram,可以清楚的看到指令执行的流水线如图4所示。
图4 指令流水线双击第一次出现R-Stall的指令行,如图5所示。
图5 指令详细信息对以上出现的情况分析如下:程序发生了数据相关,R-Stall(R-暂停)表示引起暂停的原因是RAW。
lbu r3,0×0(r2)要在WB周期写回r3中的数据;而下一条指令seqi r5,r3,0×a要在intEX周期中读取r3中的数据。
上述过程发生了WR冲突,即写读相关。
为了避免此类冲突,seq r5,r4,0×a的intEX指令延迟了一个周期进行。
由此,相关指令为:2)控制相关由图6可以看出,在第4时钟周期:第一条指令处于MEM段,第二条命令处于intEX段,第三条指令出于aborted状态,第四条命令处于IF段。
risc指令系统类型
RISC(Reduced Instruction Set Computer)指令系统类型是一种简化指令集的计算机体系结构。
RISC指令系统类型的特点包括:
1. 简化的指令集:RISC体系结构使用一组精简的指令,这些指令的执行时间相对较短且功能较为简单。
相比之下,复杂指令集计算机(CISC)体系结构使用更多且复杂的指令。
2. 定长指令:RISC指令的长度通常是固定的,如32位。
这样可以简化指令的译码和执行过程,提高指令的执行效率。
3. 硬件加速:RISC体系结构倾向于在硬件层面上实现更多的功能,而不是在指令级别上实现。
这使得RISC体系结构能够更加高效地执行指令。
4. 流水线执行:RISC体系结构具有流水线执行的特性,即将指令的执行过程划分为多个阶段,并让各个阶段并行执行。
这样可以提高指令的执行速度。
常见的RISC指令系统类型包括ARM、MIPS和PowerPC等。
这些体系结构广泛应用于移动设备、嵌入式系统和服务器等领域。
RISC和CISC的比较RISC的设计重点在于降低由硬件执行指令的复杂度,因为软件比硬件容易提供更大的灵活性和更高的智能,因此RISC设计对编译器有更高的要求;CISC的设计则更侧重于硬件执行指令的功能,使CISC的指令变得很复杂。
总之RISC对编译器的要求高,CISC强调硬件的复杂性,CPU的实现更复杂。
RISC设计思想准则:1.指令集----RISC处理器减少指令集的种类,通常一个周期一条指令,也就是说指令的周期是固定的,编译器或程序员通过几条指令完成一个复杂的操作;CISC的指令长度通常不固定。
2.流水线----流水线的本质就是CPU并行运行,只是并行运行不像FPGA中的那么直接,它只是把一条指令分成几个更小的执行单元;CISC指令的执行需要调用一个微程序,明显没有RISC的指令吞吐量大。
3.寄存器----RISC的寄存器拥有更多的通用寄存器,寄存器操作较多,例如ARM具有27个寄存器,CISC的寄存器都是用于特定目的的。
4.Load-store结构----处理器只处理寄存器中的数据,这是因为访问存储器很耗时,同时对外部存储器的读写会影响其寿命;CISC能够在存储器中直接运行5.寻址方式简化,不像CISC那样的复杂众多的寻址方式是一种技术的名字。
而ARM体系结构目前被公认为是业界领先的32 位嵌入式RISC 微处理器结构。
所有ARM处理器共享这一体系结构。
因此我们可以从其所属体系比较入手,来进行X86指令集与ARM指令集的比较。
一、复杂指令集电脑CISC(Complex Instruction Set Computer)CISC是一种为了便于编程和提高记忆体访问效率的晶片设计体系。
早期的电脑使用组合语言编程,由于记忆体速度慢且价格昂贵,使得CISC体系得到了用武之地。
在20世纪90年代中期之前,大多数的微处理器都采用CISC体系──包括Intel的80x86和Motorola的68K系列等。
系统结构の名词解释第一章1.虚拟机:由软件实现的机器。
虚拟机中有些操作可以由硬件或固件实现。
(固件:具有软件功能的硬件。
)2.计算机系统结构:计算机系统的软、硬件的界面,即机器语言程序员所看到的传统机器级所具有的属性。
3.Amdahl定律:加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比。
4.CISC:复杂指令集计算机。
RISC:精减指令集计算机。
第二章5.数据表示:计算机硬件能够直接识别、指令系统可以直接调用的数据类型。
第三章6.流水线需要有通过时间和排空时间。
通过时间:第一个任务从进入流水线到流出结果所需的时间。
排空时间:最后一个任务从进入流水线到流出结果所需的时间。
7.系统级流水线(宏流水线):把多台处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。
8.静态流水线:在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作。
对于静态流水线来说,只有当输入的是一串相同的运算任务时,流水的效率才能得到充分的发挥。
9.动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
优点是灵活,能够提高流水线各段的使用率,从而提高处理速度。
缺点是控制复杂。
10.线性流水线:流水线的各段串行连接,没有反馈回路。
数据通过流水线中的各段时,每一个段最多只流过一次。
11.非线性流水线:流水线中除了有串行的连接外,还有反馈回路。
第四章12.横向(水平)处理方式:向量计算是按行的方式从左到右横向地进行。
纵向处理方式:向量计算是按列的方式从上到下纵向地进行。
纵横处理方式:又称为分组处理方式。
把向量分成若干组,组内按纵向方式处理,依次处理各组。
第五章13.指令并行级:指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。
(ILP:Instruction-Level Parallelism)14.IPC:(Instructions Per Cycle)每个时钟周期完成的指令条数。
指令流水与并行实验一、实验目的掌握指令集流水性,并行性及对开发的理解。
.二、实验原理龙芯2号F版本(简称“龙芯2F”)是一款实现64位MIPSⅢ指令集的通用RISC处理器, 采用先进的四发射超标量超流水结构,采用简单指令集,类似于MIPS指令集。
为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成。
龙芯2F的基本流水线包括取指、预译码、译码、寄存器重命名、调度、发射、读寄存器、执行、提交等9级。
每个阶段都要花费一个时钟周期,如果没有采用流水线技术,那么这条指令执行需要9个时钟周期;如果采用了指令流水线技术,那么当这条指令完成“取指”后进入“预译码”的同时,下一条指令就可以进行“取指”了,这样就提高的指令的执行效率。
CPI流水线= CPI理想+ 各类停顿周期数的总和流水线的理想CPI是流水线的最大流量。
各类停顿包括:(1)结构相关停顿:是由于两条指令使用同一个功能部件而导致的停顿。
(2)控制相关停顿:是由于指令流的改变(如分支指令)而导致的停顿。
(3)RAW、WAR和WAW停顿:由数据相关造成的。
当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。
这种指令序列中存在的潜在并行性称为指令级并行(Instruction-Level parallelism, ILP)。
流水线处理器的实际CPI:减少其中的任何一种停顿,都可以有效地减少CPI,从而提高流水线的性能。
循环级并行:使一个循环中的不同循环体并行执行。
开发循环体中存在的并行性最常见、最基本是指令级并行研究的重点之一例如,考虑下述语句:for (i=1;i<=500;i=i+1)a[i]=a[i]+s;每一次循环都可以与其他的循环重叠并行执行;在每一次循环的内部,却没有任何的并行性。
二、实验平台龙芯2F,主频:800HZ,内存1G。
三、实验内容和步骤本实验采用有无循环级并行,用一加法程序对比无循环级并行与有循环级并行的运行时间。
流水线机制简介流水线是RISC 处理器执行指令时采用的机制。
使用流水线,可在取下一条指令的同时译码和执行其他指令,从而加快执行速度。
可以把流水线看作是汽车生产线,每个阶段只完成一项专门的生产任务。
图 1显示了一个3级流水线:z 取指(fetch)——从存储器装载一条指令; z 译码(decode)——识别将被执行的指令;z 执行(execute)——处理指令并把结果写回寄存器;图 1 ARM7的3级流水线图 2通过一个简单的例子说明了流水线机制。
在第1个周期,内核从存储器中取出指令ADD ;在第2个周期,内核取出指令SUB ,同时对ADD 指令译码;在第3个周期,指令SUB 和ADD 都沿流水线移动,ADD 指令被执行,而SUB 指令被译码,同时又取出CMP 指令。
流水线使得每个时钟周期就可以执行一条指令。
随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时也改善了性能。
但系统延时(latency)同样也增加了,这是因为在内核执行一条指令前,需要更多的周期来填充流水线。
流水线级数的增加也意味着在某些段之间会产生数据相关。
可使用指令调整技术来编写代码,以减少数据相关。
图 2 流水线指令顺序每种ARM 系列的流水线设计都有差异。
例如,ARM9内核把流水线深度增加到5级,如图 3所示。
ARM9增加了存储器访问段和回写段,这使得ARM9的处理能力可达到平均1.1DhrystoneMIPS/MHz ,与ARM7相比,指令吞吐量增加了约13%。
同时,ARM9内核能达到的最高频率也更高。
图 3 ARM9的5级流水线ARM10更是把流水线的深度增加到6级,如图4所示。
ARM10的平均处理能力达到1.3DhrystoneMIPS/MHz,与ARM7相比,指令吞吐量增加了约34%。
但同时有较大的系统延时。
图 4 ARM10的6级流水线虽然ARM9和ARM10的流水线不同,但它们使用了与ARM7相同的流水线执行机制,因此ARM7上的代码也可以在ARM9和ARM10上运行。
电脑芯片的指令集架构分析与优化在当今信息时代,电脑芯片作为电子设备的核心部件之一,其指令集架构的设计和优化对于计算机的性能、功耗和功效等方面具有重要的影响。
本文将对电脑芯片的指令集架构进行深入分析,并探讨如何对其进行优化。
一、电脑芯片的指令集架构分析1.1 指令集架构的定义与作用指令集架构是一种将基本操作集合以及对应的操作码与计算机硬件结合的方式。
它定义了计算机的指令格式、操作类型、存储器访问方式等重要的操作指令。
1.2 RISC与CISC两种指令集架构近年来,多种电脑芯片采用了精简指令集架构(Reduced Instruction Set Computing,RISC)和复杂指令集架构(Complex Instruction Set Computing,CISC)两种指令集架构。
RISC指令集架构减少了指令的种类和复杂度,提高了指令执行的速度。
而CISC指令集架构则通过增加指令类型,提供了更多的功能。
1.3 指令流水线技术指令流水线技术是一种指令并行执行技术,能够提高计算机的执行速度。
通过将指令的执行过程划分为多个阶段,并使不同指令的不同阶段之间实现重叠执行,从而有效地利用硬件资源,提高指令执行效率。
二、电脑芯片指令集架构的优化2.1 指令级并行性的优化指令级并行性是指通过同时发射和执行多个指令来提高计算机的性能。
在指令集架构优化过程中,可以采用以下方法提高指令级并行性:(1)指令重排:将无数据相关的指令进行重排,以实现指令的数据独立性;(2)数据预取:通过预测数据依赖性,提前将指令所需的数据加载到高速缓存中,从而减少指令等待时间;(3)指令窗口技术:采用指令窗口进行乱序执行,可以使能发射指令的速度更快,提高指令级并行性。
2.2 数据级并行性的优化数据级并行性是指通过同时处理多个数据元素来提高计算机的性能。
在指令集架构优化过程中,可以采用以下方法提高数据级并行性:(1)向量化指令:通过向量化指令,将一条指令操作多个数据元素,从而提高指令执行效率;(2)数据重组技术:通过将多个不相关的数据重新组合成一个向量数据,在一个周期内同时完成多条操作指令;(3)乱序执行:通过乱序执行技术,可以有效缓解数据相关性的问题,提高数据级并行性。
arm体系结构特点
ARM 体系结构是一种广泛使用的 32 位微处理器体系结构,具有以下特点:
1. 简单的指令集:ARM 指令集是一种 RISC(精简指令集计算机)指令集,它具有固定长度的指令和简单的指令格式。
这种简单的指令集可以提高指令的执行速度和效率,同时也可以减少指令的解码时间。
2. 高效的流水线:ARM 体系结构采用了高效的流水线技术,可以在一个时钟周期内执行多条指令。
这种流水线技术可以提高指令的执行速度和效率,从而提高处理器的性能。
3. 低功耗设计:ARM 体系结构采用了低功耗设计,可以在不影响性能的情况下降低处理器的功耗。
这种低功耗设计对于移动设备和嵌入式系统非常重要,可以延长设备的电池寿命。
4. 可扩展性:ARM 体系结构具有很好的可扩展性,可以通过增加更多的寄存器和指令来扩展处理器的功能。
这种可扩展性可以满足不同应用的需求,例如多媒体处理、网络通信等。
5. 支持Thumb 指令集:ARM 体系结构还支持 Thumb 指令集,这是一种 16 位的指令集。
Thumb 指令集可以在不损失性能的情况下减少代码的大小,从而节省存储空间。
6. 强大的异常处理机制:ARM 体系结构具有强大的异常处理机制,可以处理各种硬件和软件异常。
这种异常处理机制可以提高系统的可靠性和稳定性。
总之,ARM 体系结构具有简单的指令集、高效的流水线、低功耗设计、可扩展性、支持Thumb 指令集和强大的异常处理机制等特点,这些特点使得 ARM 体系结构成为了移动设备和嵌入式系统领域的主流处理器体系结构。
arm的工作原理
ARM(Advanced RISC Machines)是一种基于精简指令集(RISC)的处理器架构,其工作原理可以简要概括如下:
1. 简化指令集:ARM架构通过精简指令集来降低指令的复杂
性和长度,使得处理器能够更高效地执行指令。
这种设计理念使得ARM芯片可以在低功耗和高性能之间取得平衡。
2. 流水线执行:ARM处理器采用流水线处理方式,将指令的
执行分为多个阶段,每个阶段专门负责不同的操作。
这样可以同时执行多条指令,提高处理器的性能。
3. 高频率时钟:ARM处理器使用高频率时钟来节省功耗和提
高处理速度。
高频率时钟使得处理器能够更快地执行指令,同时也需要更多的电力支持。
4. 共享总线:ARM处理器在多个核心之间共享数据和内存访
问的总线。
这种设计可以提高处理器的效率和性能,同时减少了硬件的复杂性。
5. 芯片设计:ARM架构主要用于嵌入式系统和移动设备,因
此ARM芯片通常采用小尺寸、低功耗和集成度高的设计。
这
种设计可以确保ARM芯片能够在有限的空间内提供高性能和
低功耗。
总的来说,ARM的工作原理是通过精简指令集、流水线执行、高频率时钟、共享总线和优化的芯片设计来实现高效、低功耗
和高性能的计算。
这使得ARM架构成为许多移动设备和嵌入式系统的首选处理器架构。
一.流水线
1. 概念:
处理器按照一系列步骤来执行每一条指令.典型的步骤如下:
1) 从存储器读取指令(fetch).
2) 译码以鉴别它是那一类指令(dec).
3) 从寄存器堆取得所需的操作数(reg).
4) 将操作数进行组合以得到结果或存储器地址(ALU).
5) 如果需要,则访问存储器以存取数据(mem).
6) 将结果写回到寄存器堆(res).
并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步
骤往往使用不同的硬件功能,例如,ALU 可能只在第四步中用到.因此,如果一条指令不是在前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用. 有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指
令结束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法且非常有效的途径.
采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤1并转向步
骤2时,下一条指令就开始执行步骤1.图1.13说明了这个过程.从原理上来说,这样的流水线应该比没有重叠的指令执行快6倍,但实际上事情并没有这么好,下面我们将会看到原因.
1
2
3 指令
时间
图1.13 流水线的指令执行
2. 流水线中的冒险
要点:后一条指令要用到前一条指令。
在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数.当这种情形发生时,图1.13所示的流水线操作就中断了,因为第一条指令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生为止.这是流水线的行为如图1.14所示.这是流水线的”写后读”冒险(hazard).
1.
2.
图 1.14 先写后读的流水线冒险
转移指令更会破坏流水线的行为,因为后续指令的取指步骤受到转移目标计算的影响,因而必须推迟.不幸的是,当转移指令正在被译码时,在它被确认为是转移指令
之前,后续的取指操作就发生了.这样一来,读取到的指令就不得不丢弃.如果转移目标计算是在图1.13中流水线的ALU阶段完成的,那么,在得到转移目标之前已经有3条指令按照原有的指令流读取(见图 1.15).如果有可能,最好早一些计算转移目标,尽管这可能需要专门的硬件.如果转移指令具有固定的格式,那么可以(也就是说在确认该指令是转移指令之前)在dec阶段预测计算转移目标,从而将转移的执行时间减少到单个周期.
但是要注意,由于条件转移与前一条指令的条件码结果有关,在这个流水线中还会有条件转移的冒险.
一些RISC体系结构(尽管不是ARM)规定,不管是否进行了转移,转移之后的指令都要执行.这个技术称为延迟转移.
1 (转移)
2
3
4
5(转移目标)
指令时间
图1.15 流水线的转移行为
3.流水线效率
尽管有些技术可以减少这些流水线问题的影响,但是,不能完全消除这些困难.流水线越深(就是流水线的级数越多),问题就说严重.对于相对简单的处理器,使用3~5
即流水线效果会更好.但是,超过了这个级数,收益递减的法则开始生效,增加的成本
和复杂度将超过收益.
例:ARM7 3级流水线ARM9 是5级ARM10是6-7级StrongArm是5级显然,只有当所有指令都依相似的步骤执行时,流水线才能带来好处.如果处理器的指令非常复杂,每一条指令的行为都与下一条指令不同,那么就很难用流水线实
现.1980年,因为有限的硅资源,有限的设计资源,以及设计一个复杂指令集的流水线
的高度复杂性,当时的复杂指令集微处理器没有采用流水线.
二.精简指令计算机
1.RISC体系结构
1)固定的(32位)指令长度,指令类型很少.而CISC处理器指令集的长度一般可变,
指令类型也很多.
2)Load-Store结构,数据处理指令访问寄存器,与访问存储器的指令是分开的.而
CISC处理器一般允许将存储器中的数据作为数据处理指令的操作数.
3)由32个32位寄存器构成大的寄存器堆(register bank),其中所有的寄存器都可以
用于任何用途,以使Load-Store结构有效的工作.虽然CISC寄存器集也加大了,
但是没有那么大,而且大都是不同的寄存器用于不同的用途(例如,Motorola公司
MC68000的数据寄存器和地址寄存器).
这些差别极大的简化了处理器的设计,使设计者在实现体系结构时可以采用以下这些对提高原型机性能由很大作用的,组织方面的特点.
2、RISC的组织
@流水线执行.而CISC处理器即使有,也只允许在连续指令间有极少的重叠(尽管它
们现在允许).
@单周期执行.而CISC处理执行1条指令一般需要多个时钟周期.
3、R ISC的优点.
4)管芯面积小.
简单的处理器需要的晶体管少,需要的硅片面积也小.因此,整个CPU在工艺技
术发展的较早阶段即可在一个芯片内.一旦技术发展超过这一阶段,RISC CPU
就能剩下更多的面积用于实现可以提高性能的功能部件,例如高速缓存,存储器
管理和浮点硬件等等.
5)开发时间短
简单的处理器会占用较少的设计力量,因而设计费用低.它还会更好地投放市场
时的工艺技术相适应(因为开发周期越短,越容易在开发时预测工艺技术的发
展).
6)性能高.
这个优点比较微妙.前面两条优点容易接受,但看看我们周围,高性能总要通过不
断增加复杂度来实现,说RISC有高性能的优点有些使人难以接受.
可以来这样看这个问题:较小的东西具有较高的自然频率(昆虫煽动翅膀的频率
高于小鸟,小鸟山东翅膀的频率高于大鸟等等),所以,简单的处理器应该容许较
高的时钟频率.让我们来设计一个复杂的处理器,但开始时先设计一个简单的,然
后每次增加一条复杂的指令,都会使某些高级的功能更有效率,但是,它也会降低
所有指令所用的时钟频率.我们可以度量对于典型程序总的得失.当我们这样做
的时候,会发现所有复杂的指令都使程序执行变慢了.因此,我们坚持最初的简单
处理器.
使用 3 阶段流水线的例子。
第一阶段持有从内存中取回的指令。
第二阶段开始解码,而第三阶段实际执行它。
故此,程序计数器总是超出当前执行的指令两个指令。
(在为分支指令计算偏移量时必须计算在内)。
因为有这个流水线,在分支时丢失 2 个指令周期(因为要重新添满流水线)。
所以最好利用条件执行指令来避免浪费周期。
例如:
...
CMP R0,#0
BEQ over
MOV R1,#1
MOV R2,#2
over
...
可以写为更有效的:
...
CMP R0,#0
MOVNE R1,#1
MOVNE R2,#2
...。