免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2020年下半年 嵌入式系统设计师 上午试卷 综合知识
  第34题      
  知识点:   CISC和RISC   指令系统   基本概念   指令
  章/节:   计算机体系结构       

 
在下面描述的RISC指令系统基本概念中,不确的表述是(34)。
 
 
  A.  选取使用频率低的一些复杂指令,指令条数多
 
  B.  指令长度固定
 
  C.  指令功能简单
 
  D.  指令运行速度快
 
 
 

 
  第37题    2018年下半年  
   36%
嵌入式处理器指令系统一般采用精简指令集(RISC)或者复杂指令集(CISC),下列关于RISC和CISC描述错误的是(37)。
  第5题    2016年下半年  
   40%
将一条指令的执行过程分解为取指、分析和执行三步,按照流水方式执行,若取指时间t取指=4∆t、分析时间t分..
  第2题    2017年下半年  
   35%
某四级指令流水线分别完成取指、取数、运算、保存结果四步操作。若完成上述操作的时间依次为8ns、9ns、4ns、8ns,则该流水线的操作..
   知识点讲解    
   · CISC和RISC    · 指令系统    · 基本概念    · 指令
 
       CISC和RISC
        CISC和RISC是指令集发展的两种途径。
        (1)复杂指令集计算机(Complex Instruction Set Computer,CISC)的基本思想是进一步增强原有指令的功能,用更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬化,导致机器的指令系统越来越庞大、复杂。事实上,目前使用的绝大多数计算机都属于CISC类型。
        CISC的主要弊端如下。
        ①指令集过分庞杂。
        ②微程序技术是CISC的重要支柱,每条复杂指令都要通过执行一段解释性微程序才能完成,这就需要多个CPU周期,从而降低了机器的处理速度。
        ③由于指令系统过分庞大,使高级语言编译程序选择目标指令的范围很大,并使编译程序本身冗长、复杂,从而难以优化编译使之生成真正高效的目标代码。
        ④CISC强调完善的中断控制,势必导致动作繁多、设计复杂、研制周期长。
        ⑤CISC给芯片设计带来很多困难,使芯片种类增多,出错几率增大,成本提高而成品率降低。
        (2)精简指令集计算机(Reduced Instruction Set Computer,RISC)的基本思想是通过减少指令总数和简化指令功能降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译提高指令的执行速度,采用硬布线控制逻辑优化编译程序。RISC在20世纪70年代末开始兴起,导致机器的指令系统进一步精炼而简单。
        RISC的关键技术如下。
        ①重叠寄存器窗口技术。在伯克利的RISC项目中首先采用了重叠寄存器窗口(overlapping register windows)技术。其基本思想是在处理机中设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。每个过程使用其中相邻的3个窗口和一个公共的窗口,而在这些窗口中有一个窗口是与前一个过程共用,还有一个窗口是与下一个过程共用的。与前一过程共用的窗口可以用来存放前一过程传送给本过程的参数,同时也存放本过程传送给前一过程的计算结果。同样,与下一过程共用窗口可以用来存放本过程传送给下一过程的参数和存放下一过程传送给本过程的计算结果。
        ②优化编译技术。RISC使用了大量的寄存器,如何合理地分配寄存器、提高寄存器的使用效率及减少访存次数等,都应通过编译技术的优化来实现。
        ③超流水及超标量技术。为了进一步提高流水线速度而采用的技术。
        ④硬布线逻辑与微程序相结合在微程序技术中。
        (3)优化。为了提高目标程序的实现效率,人们对大量的机器语言目标代码及其执行情况进行了统计。对程序中出现的各种指令以及指令串进行统计得到的百分比称为静态使用频度。在程序执行过程中,对出现的各种指令以及指令串进行统计得到的百分比称为动态使用频度。按静态使用频度来改进目标代码可减少目标程序所占的存储空间,按动态使用频度来改进目标代码可减少目标程序运行的执行时间。大量统计表明,动态和静态使用频度两者非常接近,最常用的指令是存、取、条件转移等。对它们加以优化,既可以减少程序所需的存储空间,又可以提高程序的执行速度。
        面向高级程序语言的优化思路是尽可能缩小高级语言与机器语言之间的语义差距,以利于支持高级语言编译系统,缩短编译程序的长度和编译所需的时间。
        面向操作系统的优化思路是进一步缩小操作系统与体系结构之间的语义差距,以利于减少操作系统运行所需的辅助时间,节省操作系统软件所占用的存储空间。操作系统的实现依赖于体系结构对它的支持。许多传统机器指令,例如算术逻辑指令、字符编辑指令、移位指令和控制转移指令等,都可用于操作系统的实现。此外,还有相当一部分指令是专门为实现操作系统的各种功能而设计的。
 
       指令系统
        一个处理器支持的指令和指令的字节级编码称为其指令集体系结构(Instruction SetArchitecture,ISA),不同的处理器族支持不同的指令集体系结构,因此,某个程序在某种型号机器上编译通过,往往不能在另一种型号机器上通过。
               指令集体系结构的分类
               从体系结构的观点对指令集进行分类,可以根据下述5个方面。
               (1)操作数在CPU中的存储方式,即操作数从主存中取出后保存在什么地方。
               (2)显式操作数的数量,即在典型的指令中有多少个显式命名的操作数。
               (3)操作数的位置,即任一个ALU指令的操作数能否放在主存中,如何定位。
               (4)指令的操作,即在指令集中提供哪些操作。
               (5)操作数的类型与大小。
               按暂存机制分类,根据在CPU内部存储操作数的区别,可以把指令集体系分为3类:堆栈(stack)、累加器(accumulator)和寄存器组(a set of registers)。
               通用寄存器机(General-Purpose Register Machines,GPR机)的关键性优点是编译程序能有效地使用寄存器,无论是计算表达式的值,还是从全局的角度使用寄存器来保存变量的值。在求解表达式时,寄存器比堆栈或者累加器能提供更加灵活的次序。更重要的是,寄存器能用来保存变量。当变量分配给寄存器时,访存流量(memory traffic)就会减少,程序运行就会加速,而且代码密度也会得到改善。用户可以用指令集的两个主要特征来区分GPR体系结构。第一个是ALU指令有两个或3个操作数。在三操作数格式中,指令包括两个源操作数和一个目的操作数;在二操作数格式中,有一个操作数既是源操作数又是目的操作数。第二个是ALU指令中有几个操作数是存储器地址,对于典型的ALU指令,这个数可能在1~3之间。
               CISC和RISC
               CISC和RISC是指令集发展的两种途径。
               (1)复杂指令集计算机(Complex Instruction Set Computer,CISC)的基本思想是进一步增强原有指令的功能,用更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬化,导致机器的指令系统越来越庞大、复杂。事实上,目前使用的绝大多数计算机都属于CISC类型。
               CISC的主要弊端如下。
               ①指令集过分庞杂。
               ②微程序技术是CISC的重要支柱,每条复杂指令都要通过执行一段解释性微程序才能完成,这就需要多个CPU周期,从而降低了机器的处理速度。
               ③由于指令系统过分庞大,使高级语言编译程序选择目标指令的范围很大,并使编译程序本身冗长、复杂,从而难以优化编译使之生成真正高效的目标代码。
               ④CISC强调完善的中断控制,势必导致动作繁多、设计复杂、研制周期长。
               ⑤CISC给芯片设计带来很多困难,使芯片种类增多,出错几率增大,成本提高而成品率降低。
               (2)精简指令集计算机(Reduced Instruction Set Computer,RISC)的基本思想是通过减少指令总数和简化指令功能降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译提高指令的执行速度,采用硬布线控制逻辑优化编译程序。RISC在20世纪70年代末开始兴起,导致机器的指令系统进一步精炼而简单。
               RISC的关键技术如下。
               ①重叠寄存器窗口技术。在伯克利的RISC项目中首先采用了重叠寄存器窗口(overlapping register windows)技术。其基本思想是在处理机中设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。每个过程使用其中相邻的3个窗口和一个公共的窗口,而在这些窗口中有一个窗口是与前一个过程共用,还有一个窗口是与下一个过程共用的。与前一过程共用的窗口可以用来存放前一过程传送给本过程的参数,同时也存放本过程传送给前一过程的计算结果。同样,与下一过程共用窗口可以用来存放本过程传送给下一过程的参数和存放下一过程传送给本过程的计算结果。
               ②优化编译技术。RISC使用了大量的寄存器,如何合理地分配寄存器、提高寄存器的使用效率及减少访存次数等,都应通过编译技术的优化来实现。
               ③超流水及超标量技术。为了进一步提高流水线速度而采用的技术。
               ④硬布线逻辑与微程序相结合在微程序技术中。
               (3)优化。为了提高目标程序的实现效率,人们对大量的机器语言目标代码及其执行情况进行了统计。对程序中出现的各种指令以及指令串进行统计得到的百分比称为静态使用频度。在程序执行过程中,对出现的各种指令以及指令串进行统计得到的百分比称为动态使用频度。按静态使用频度来改进目标代码可减少目标程序所占的存储空间,按动态使用频度来改进目标代码可减少目标程序运行的执行时间。大量统计表明,动态和静态使用频度两者非常接近,最常用的指令是存、取、条件转移等。对它们加以优化,既可以减少程序所需的存储空间,又可以提高程序的执行速度。
               面向高级程序语言的优化思路是尽可能缩小高级语言与机器语言之间的语义差距,以利于支持高级语言编译系统,缩短编译程序的长度和编译所需的时间。
               面向操作系统的优化思路是进一步缩小操作系统与体系结构之间的语义差距,以利于减少操作系统运行所需的辅助时间,节省操作系统软件所占用的存储空间。操作系统的实现依赖于体系结构对它的支持。许多传统机器指令,例如算术逻辑指令、字符编辑指令、移位指令和控制转移指令等,都可用于操作系统的实现。此外,还有相当一部分指令是专门为实现操作系统的各种功能而设计的。
               指令的流水处理
               (1)指令控制方式。指令控制方式有顺序方式、重叠方式和流水方式3种。
               ①顺序方式。顺序方式是指各条机器指令之间顺序串行地执行,执行完一条指令后才取下一条指令,而且每条机器指令内部的各个微操作也是顺序串行地执行。这种方式的优点是控制简单。缺点是速度慢,机器各部件的利用率低。
               ②重叠方式。重叠方式是指在解释第K条指令的操作完成之前就可以开始解释第K+1条指令,如下图所示。通常采用的是一次重叠,即在任何时候,指令分析部件和指令执行部件都只有相邻两条指令在重叠解释。这种方式的优点是速度有所提高,控制也不太复杂。缺点是会出现冲突、转移和相关等问题,在设计时必须想办法解决。
               
               一次重叠处理
               ③流水方式。流水方式是模仿工业生产过程的流水线(如汽车装配线)而提出的一种指令控制方式。流水(pipelining)技术是把并行性或并发性嵌入到计算机系统里的一种形式,它把重复的顺序处理过程分解为若干子过程,每个子过程能在专用的独立模块上有效地并发工作,如下图所示。
               
               流水处理的时空图
               在概念上,“流水”可以看成是“重叠”的延伸。差别仅在于“一次重叠”是把一条指令解释分解为两个子过程,而“流水”则是分解为更多的子过程。
               (2)流水线的种类。
               ①从流水的级别上,可分为部件级、处理机级以及系统级的流水。
               ②从流水的功能上,可分为单功能流水线和多功能流水线。
               ③从流水的连接上,可分为静态流水线和动态流水线。
               ④从流水是否有反馈回路,可分为线性流水线和非线性流水线。
               ⑤从流水的流动顺序上,可分为同步流水线和异步流水线。
               ⑥从流水线的数据表示上,可分为标量流水线和向量流水线。
               (3)流水的相关处理。由于流水时机器同时解释多条指令,这些指令可能有对同一主存单元或同一寄存器的“先写后读”的要求,这时就出现了相关。这种相关包括指令相关、访存操作数相关以及通用寄存器组相关等,它只影响相关的两条或几条指令,而且最多影响流水线的某些段推后工作,并不会改动指令缓冲器中预取到的指令内容,影响是局部的,所以称为局部性相关。解决局部性相关有两种方法:推后法和通路法。推后法是推后对相关单元的读,直至写入完成。通路法设置相关专用通路,使得不必先把运算结果写入相关存储单元,再从这里读出后才能使用,而是经过相关专用通路直接使用运算结果,以加快速度。
               转移指令(尤其是条件转移指令)与它后面的指令之间存在关联,使之不能同时解释。执行转移指令时,可能会改动指令缓冲器中预取到的指令内容,从而会造成流水线吞吐率和效率下降,比局部性相关的影响要严重得多,所以称为全局性相关。
               解决全局性相关有3种方法:猜测转移分支、加快和提前形成条件码、加快短循环程序的处理。
               条件转移指令有两个分支,一个分支是按原来的顺序继续执行下去,称为转移不成功分支;另一个分支是按转移后的新指令序列执行,称为转移成功分支。许多流水机器都猜选转移不成功分支,若猜对的几率很大,流水线的吞吐率和效率就会比不采用猜测法时高得多。
               尽早获得条件码以便对流水线简化条件转移的处理。例如,一个乘法运算所需的时间较长,但在运算之前就能知道其结果为正或为负,或者是否为0,因此,加快单条指令内部条件码的形成,或者在一段程序内提前形成条件码,对转移问题的顺利解决是很有好处的。
               由于程序中广泛采用循环结构,因此流水线大多采用特殊措施以加快循环程序的处理。例如,使整个循环程序都放入指令缓冲存储器中,对提高流水效率和吞吐率均有明显效果。中断和转移一样,也会引起流水线断流。好在中断出现的概率要比条件转移出现的概率低得多,因此只要处理好断点现场保护及中断后的恢复,尽量缩短断流时间即可。
               RISC中采用的流水技术有3种:超流水线、超标量以及超长指令字。
               ①超流水线(super pipe line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换取空间。超流水机器的特征是在所有的功能单元都采用流水,并有更高的时钟频率和更深的流水深度。由于它只限于指令级的并行,所以超流水机器的CPI(Clock cycles Per Instruction,每个指令需要的机器周期数)值稍高。
               ②超标量(super scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换取时间。
               ③超长指令字(Very Long Instruction Word,VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。VLIW有更小的CCPI值,但需要有足够高的时钟频率。
               (4)吞吐率和流水建立时间。吞吐率是指单位时间内流水线处理机流出的结果数。对指令而言,就是单位时间内执行的指令数。如果流水线的子过程所用时间不一样,则吞吐率p应为最长子过程的倒数,即
               p=1/max{Δt1,Δt2,…,Δtm}
               流水线开始工作,需经过一定时间才能达到最大吞吐率,这就是建立时间。若m个子过程所用时间一样,均为Δt0,则建立时间T0=mΔt0
 
       基本概念
               程序与进程
                      程序顺序执行的特征
                      前趋图是一个有向无循环图,由结点和有向边组成,结点代表各程序段的操作,而结点间的有向边表示两个程序段操作之间存在的前趋关系(→)。程序段Pi和Pj的前趋关系表示成Pi→Pj,其中,Pi是Pj的前趋,Pj是Pi的后继,其含义是Pi执行结束后Pj才能执行。例如,下图为3个程序段,其中输入是计算的前驱(计算是输入的后继),输入结束才能进行计算;计算是输出的前驱,计算结束才能进行输出。
                      
                      3个结点的前驱图
                      程序顺序执行时的主要特征包括顺序性、封闭性和可再现性。
                      程序并发执行的特征
                      若在计算机系统中采用多道程序设计技术,则主存中的多道程序可处于并发执行状态。对于上述有3个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在CPU和输入/输出各部件并行执行,但是同一个作业内没有前趋关系的程序段或不同作业的程序段可以分别在CPU和各输入/输出部件上并行执行。例如,某系统中有一个CPU、一台输入设备和一台输出设备,每个作业具有3个程序段,输入I、计算Ci和输出Pii=l,2,3)。下图为3个作业的各程序段并发执行的前驱图,图中的前驱关系可记为:
                      →={I1→C1,I1→I2,I2→C2,I2→I3,I3→C3,C1→P1,C1→C2,C2→P2,C2→C3,C3→P3,P1→P2,P2→P3
                      
                      程序并发执行的前驱图
                      从上图中可以看出,I2与C1并行执行;I3、C2与P1并行执行;C3与P2并行执行。其中,I2、I3受到I1的间接制约,C2、C3受到C1的间接制约,P2、P3受到P1的间接制约,而C1、P1受到I1的直接制约,等等。
                      程序并发执行时的特征如下:
                      (1)失去了程序的封闭性。
                      (2)程序和机器的执行程序的活动不再一一对应。
                      (3)并发程序间的相互制约性。
                      例如,两个并发执行的程序段完成交通流量的统计,其中,“观察者”P1识别通过的车辆数,“报告者”P2定时将观察者的计数值清0。程序实现如下:
                      
                      对于上例,由于程序可并发执行,所以可能有以下3种执行序列:
                      ①COUNT:=COUNT+1;PRINT COUNT;COUNT:=0
                      ②PRINT COUNT;COUNT:=0;COUNT:=COUNT+1
                      ③PRINT COUNT;COUNT:=COUNT+1;COUNT:=0
                      假定COUNT的某个循环的初值为n,那么这3种执行序列得到的COUNT结果不同,如下表所示。
                      
                      程序并发执行的结果
                      这种不正确结果的发生是因为两个程序P1和P2共享变量COUNT引起的,即程序并发执行破坏了程序的封闭性和可再现性,使得程序和执行程序的活动不再一一对应。为了解决这一问题,需要研究进程间的同步与互斥问题。
               进程的组成
               进程是程序的一次执行,该程序可以和其他程序并发执行。进程通常是由程序、数据和进程控制块(Process Control Block,PCB)组成的。
               (1)PCB。PCB是进程存在的唯一标志,其主要内容如下表所示。
               
               PCB的内容
               (2)程序。程序部分描述了进程需要完成的功能。假如一个程序能被多个进程同时共享执行,那么这一部分就应该以可再入(纯)码的形式编制,它是程序执行时不可修改的部分。
               (3)数据。数据部分包括程序执行时所需的数据及工作区。该部分只能为一个进程所专用,是进程的可修改部分。
               进程的状态及其状态间的切换
                      三态模型
                      在多道程序系统中,进程在处理器上交替运行,状态也不断地发生变化,因此进程一般有3种基本状态:运行、就绪和阻塞。下图显示了进程基本状态及其转换,也称三态模型。
                      
                      进程的三态模型
                      (1)运行。当一个进程在处理机上运行时,则称该进程处于运行状态。显然,对于单处理机系统,处于运行状态的进程只有一个。
                      (2)就绪。一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
                      (3)阻塞。阻塞也称等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O,等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。
                      五态模型
                      事实上,对于一个实际的系统,进程的状态及其转换更复杂。例如,引入新建态和终止态构成了进程的五态模型,如下图所示。
                      
                      进程的五态模型
                      其中,新建态对应于进程刚刚被创建时没有被提交的状态,并等待系统完成创建进程的所有必要信息。因为创建进程时分为两个阶段,第一个阶段为一个新进程创建必要的管理信息,第二个阶段让该进程进入就绪状态。由于有了新建态操作系统,往往可以根据系统的性能和主存容量的限制推迟新建态进程的提交。类似地,进程的终止也可分为两个阶段,第一个阶段等待操作系统进行善后处理,第二个阶段释放主存。
                      具有挂起状态的进程状态及其转换
                      由于进程的不断创建,系统资源特别是主存资源已不能满足进程运行的要求。这时,就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以平衡系统负载。或者是系统出现故障,或者是用户调试程序,也可能需要将进程挂起检查问题。下图是具有挂起状态的进程状态及其转换。
                      
                      细分进程状态及其转换
                      (1)活跃就绪。活跃就绪是指进程在主存并且可被调度的状态。
                      (2)静止就绪。静止就绪是指就绪进程被对换到辅存时的状态,它是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起态进程具有更高的优先级时,系统将把挂起就绪态进程调回主存并转换为活跃就绪。
                      (3)活跃阻塞。活跃阻塞是指进程在主存,一旦等待的事件产生便进入活跃就绪状态。
                      (4)静止阻塞。静止阻塞是指阻塞进程对换到辅存时的状态,一旦等待的事件产生便进入静止就绪状态。
 
       指令
        指令是指挥计算机完成各种操作的基本命令。
        (1)指令格式。计算机的指令由操作码字段和操作数字段两部分组成。
        (2)指令长度。指令长度有固定长度的和可变长度的两种。有些RISC的指令是固定长度的,但目前多数计算机系统的指令是可变长度的。指令长度通常取8的倍数。
        (3)指令种类。指令有数据传送指令、算术运算指令、位运算指令、程序流程控制指令、串操作指令、处理器控制指令等类型。
   题号导航      2020年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第34题    在手机中做本题