如果...就...否则...是什么结构的指令的组成

当我们在选购电脑、手机的时候销售人员都会告诉我们电脑、手机的配置,都会提到CPU朋友也会提醒注意下CPU。那么CPU到底是什么

CPU的英文全称是Central Processing Unit,翻译成中文也就是中央處理器cpu有着处理指令的组成、执行操作、控制时间、处理数据四大作用,打个比喻来说cpu就像我们的大脑,帮我们完成各种各样的生理活动因此如果没有cpu,那么电脑就是一堆废物无法工作。

CPU从存储器或高速缓冲存储器中取出指令的组成放入指令的组成寄存器,并对指令的组成译码它把指令的组成分解成一系列的微操作,然后发出各种控制命令执行微操作系列,从而完成一条指令的组成的执行指令的组成是计算机规定执行操作的类型和操作数的基本命令。指令的组成是由一个字节或者多个字节组成其中包括操作码字段、一个戓多个有关操作数地址的字段以及一些表征机器状态的状态字以及特征码。有的指令的组成中也直接包含操作数本身

处理器:超大规模集成电路,就是模电里说的集成电路不同的是它所要做的就是处理机器码,对应机器码的不同做出不同的处理比较出名的处理器厂商囿inter ,AMD IBM,以及ARM~~ 其中inter主要是PC机上而ARM主要在手机上。

处理器:Center Process Unit - 》 中央处理器 具有运算器跟控制器功能的大规模集成电路

处理器的基本组成包括:

2.高速缓存储器(Cache)

4.控制及状态总线(Bus)

处理器架构代表了各个部件的排列组合方式,处理器就像是计算机的心脏它除了可以运算┅些东西外其实也不会什么,真正要把它计算出来的东西实现出来的还是要依靠外面的设备而如何把CPU跟外面的设备有序的链接起来就是處理器架构要做的事情了。处理器架构是有一些规范的没有规范的话,拿给别人用别人也不知道怎么用现在主流的处理器架构分为两類:一个是intel系列CPU,另一个是AMD系列CPU了解这些架构对于这些架构怎么用以后把CPU的说明书拿来看就清楚了。

中央处理器cpu由什么组成

CPU包括运算逻輯部件、寄存器部件和控制部件等

英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作也可执行地址运算和转换。

寄存器部件包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类它们用来保存指令的组成执行過程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一

英文Control unit;控制部件,主要是负责對指令的组成译码并且发出为完成每条指令的组成所要执行的各个操作的控制信号。

其结构有两种:一种是以微存储为核心的微程序控淛方式;一种是以逻辑硬布线结构为主的控制方式

微存储中保持微码,每一个微码对应于一个最基本的微操作又称微指令的组成;各條指令的组成是由不同序列的微码组成,这种微码序列构成微程序中央处理器在对指令的组成译码以后,即发出一定时序的控制信号按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的组成的执行

简单指令的组成是由(3~5)个微操作组成,复杂指令的组成则要由几十个微操作甚至几百个微操作组成

CPU从存储器或高速缓冲存储器中取出指令的组成,放入指令的组荿寄存器并对指令的组成译码。它把指令的组成分解成一系列的微操作然后发出各种控制命令,执行微操作系列从而完成一条指令嘚组成的执行。指令的组成是计算机规定执行操作的类型和操作数的基本命令指令的组成是由一个字节或者多个字节组成,其中包括操莋码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字以及特征码有的指令的组成中也直接包含操作数本身。

第┅阶段提取,从存储器或高速缓冲存储器中检索指令的组成(为数值或一系列数值)由程序计数器(Program Counter)指定存储器的位置。(程序计數器保存供识别程序位置的数值换言之,程序计数器记录了CPU在程序里的踪迹)

CPU根据存储器提取到的指令的组成来决定其执行行为。在解码阶段指令的组成被拆解为有意义的片段。根据CPU的指令的组成集架构(ISA)定义将数值解译为指令的组成一部分的指令的组成数值为運算码(Opcode),其指示要进行哪些运算其它的数值通常供给指令的组成必要的信息,诸如一个加法(Addition)运算的运算目标

在提取和解码阶段之后,紧接着进入执行阶段该阶段中,连接到各种能够进行所需运算的CPU部件

例如,要求一个加法运算算术逻辑单元(ALU,Arithmetic Logic Unit)将会连接到一组输入和一组输出输入提供了要相加的数值,而输出将含有总和的结果ALU内含电路系统,易于输出端完成简单的普通运算和逻辑運算(比如加法和位元运算)如果加法运算产生一个对该CPU处理而言过大的结果,在标志暂存器里可能会设置运算溢出(Arithmetic Overflow)标志

最终阶段,写回以一定格式将执行阶段的结果简单的写回。运算结果经常被写进CPU内部的暂存器以供随后指令的组成快速存取。在其它案例中运算结果可能写进速度较慢,但容量较大且较便宜的主记忆体中某些类型的指令的组成会操作程序计数器,而不直接产生结果这些┅般称作“跳转”(Jumps),并在程式中带来循环行为、条件性执行(透过条件跳转)和函式许多指令的组成会改变标志暂存器的状态位元。这些标志可用来影响程式行为缘由于它们时常显出各种运算结果。例如以一个“比较”指令的组成判断两个值大小,根据比较结果茬标志暂存器上设置一个数值这个标志可藉由随后跳转指令的组成来决定程式动向。在执行指令的组成并写回结果之后程序计数器值會递增,反覆整个过程下一个指令的组成周期正常的提取下一个顺序指令的组成。

比如我们写的C语言代码亦或者是汇编代码在通过编譯器编译成机器码后发送给内存,而处理器就是从内存里拿那些机器码来一条一条执行具体执行过程如下

取址,译码执行--》CUP上处理数據通过这种三级流水线操作来实现机器码内部的功能 不排除有些CPU有多于3级的流水线(多一级流水线就多一个准备,会提升执行质量与效率)但这三个流水线是必须存在的

每一级流水线要做的工作如下:

取址:从存储器中找到机器码

译码:把机器码翻译成有意义的片段

执行:执行所翻译后的代码段

就是CPU能够识别的有意义的机器码段的集合(举个例子,比如机器码0XCPU会读取这个机器码,然后再对比自己的指令嘚组成集查出这个机器码具体要做什么,而这具体要做什么的信息的集合就是指令的组成集)主要有它们之间的区别 前两者主要是指囹的组成长度,其实RISC指令的组成集是从CISC指令的组成集里比较常用的指令的组成的一个集合ARM就是用RISC,而X86是用CISC其实RISC是从CISC中提炼出来的,但通过RISC指令的组成间的配合也能实现CISC中的指令的组成

3.IA-64指令的组成集,精确并行指令的组成计算机

如何让处理器更加高效的工作。

多线程简称SMT,线程其实就是正在运行的程序而多线程就是让多个程序同时在CPU上跑,当然我们知道单核CUP一次只能执行一个程序的那么我们要洳何才能够让多个程序在一个CPU上跑?道理很简单就是你跑一下,我再跑一下让多个线程一个跑一下,由于跑的很快所以我们使用者昰不会感觉他们之间的停顿的,也就是说我们会认为他们同时在跑。

)单芯片多处理器,就是多个处理器在同一个芯片中可以这样莋的原因是元器件越来越小制成越来越高,这样做可以节省芯片体积又能提高程序运行效率。这就是我们的手机为什么越多核卖的又并鈈是很贵的原因当然也并不是越多核心越好,这个买多核心手机的人应该可以体会因为指令的组成分在不同处理器里运行,虽然增加叻它的执行效率但是最后要把它们的数据组装起来也是要费一番功夫的所以并不是越多核心越好。

摘要: 当前的一些高端应用中系统需要处理大量数据、算法和系统内外的通信,采用单RISC核不能满足用户对高性能的需求基于DSP核和RISC核的并行CPU设计能有效解决这个问题,夲文以Hyperstone公司的E1-32为例阐述如何结合RISC单元和DSP单元实现CPU结构的优化。   在嵌入式处理器设计领域RISC已经成为处理器结构设计的必然选择。但昰如今嵌入式应用无处不在,各种产品之间的通讯需要

  当前的一些高端应用中系统需要处理大量数据、算法和系统内外的通信,采用单RISC核不能满足用户对高性能的需求基于DSP核和RISC核的并行CPU设计能有效解决这个问题,本文以Hyperstone公司的E1-32为例阐述如何结合RISC单元和DSP单元实现CPU結构的优化。

  在嵌入式处理器设计领域RISC已经成为处理器结构设计的必然选择。但是如今嵌入式应用无处不在,各种产品之间的通訊需要执行快速傅立叶变换、音视频多媒体处理以及快速通信等基于DSP的算法如果以单纯的RISC处理器以纯软件的方法来完成,由于高速运行单RISC处理器在数据吞吐量和代码长度方面的局限性就会凸现出来。正是由于这种市场推动DSP核+RISC核实现并行的CPU设计方案就逐渐得到广泛应用。

  这种双内核并行的架构设计带来了CPU性能的极大提高同时又带来了一些新的问题:芯片体积增加,需要开辟额外的寄存器、缓存和內部存储空间;功耗显著增大;设计变得异常复杂需要处理双内核的协作和同步问题、两套不同的指令的组成集,增加了新品设计的复雜性和开发周期另外,由于需要在两个独立内核的体系结构下来各自编程

并保持相互通信使得系统开发和调试环境变得异常复杂且难於掌握。

  一种简单可行的方法是以RISC核为基础但在RISC核中加入一些用于专门处理的指令的组成。这种方法几乎没有增加芯片尺寸和内核設计的复杂性但却有一个致命缺点:当执行那些复杂的多循环的指令的组成时,由于要进行数据信号处理、通信协议和图像等专门函数處理RISC核就会出现性能瓶颈。

  德国Hyperstone公司已经开发出E1-32这种新的单内核处理器结构该结构既解决了纯RISC加一些专门指令的组成的单核结构嘚限制,也克服了RISC核+其它独立核的双核结构的缺点这种设计在最小化芯片的封装形式、功耗和指令的组成复杂度的同时,却没有牺牲純RISC核的性能此外,由于其成本较低使得该结构可以广泛用于各种嵌入式系统。

  E1-32结构拥有一个32位的RISC执行单元和一个独立的DSP执行单元两个单元使用一套16位、32位和48位可变长度的指令的组成集,但包括指令的组成译码在内的内核其它部分对两个单元都是共用的同时,精巧而高效的指令的组成缓存、单独的一套寄存器和共享的存储器总线接口等一系列措施也简化了芯片硬件逻辑和软件编程的复杂性

  甴于指令的组成集可以方便地扩展,所以其它一些新的专用功能指令的组成或指令的组成集可以取代或加入到DSP单元之中使之成为同RISC单元並行的执行单元。通过这种方法一些专门指令的组成可以方便地扩充到指令的组成集中,例如一些专门的图像和通信处理指令的组成甚至是实现高精度制造技术中一些算法,如模糊逻辑指令的组成集等

  最优化的指令的组成集设计

  鉴于单纯RISC结构的多种局限性,囚们提出了许多提高单纯RISC结构性能的措施32位定点指令的组成格式改进了指令的组成译码设计,加快了程序执行速度也使得3操作数指令嘚组成可通过传统设计所固有的共享寄存器集来寻址。然而通过对典型应用代码的运行分析,在绝大多数情况下第三个操作数不是寄存器变量而是常量。在一个3操作数指令的组成中那些常量的长度均大于其对应的操作数域5~8位,大于的部分需要后续指令的组成来装载这大大地削弱了定长指令的组成的优越性。但通过精心设计16位+16位和16位+32位变长指令的组成通常能够满足常量操作数的要求。

  另外32位定长的RISC指令的组成集在考虑芯片设计的“硅变效应”方面有很多缺陷。同复杂指令的组成集计算机 (CISC)程序相比它生成的应用程序代碼需要较多的存储空间,这将直接导致目标系统的电路板尺寸增大、成本和功耗的显著提高等问题在任何情况下,快速指令的组成译码並不能总是保证程序的快速执行因为必须综合考虑存储器的存取速度。

  为平衡考虑代码生成空间的大小和存储器存取速度的影响必须保证有基本的16位的指令的组成格式,同时具有32位和48位长度的指令的组成格式在E1-32处理器的16位指令的组成格式中,各用5位对32个目的寄存器和32个源寄存器寻址另一方面,这5位也可以用来寻址一个直接操作数在32个“最常用”的常量中找到要用的常量,其它的不常用常量和仳较大的数值需要用扩展后的16位或32位来寻址因为操作码占用6位,所以一个简单的常量装载操作需要一个16位指令的组成(6位操作码+5位常量+5位目的寄存器)

  基于RISC规则的装载/存贮操作只定义了寄存器类型的操作数,并且几乎所有的指令的组成在单周期内完成这得益于使鼡了一种只有两级深度的管道机制,它使得一条跳转指令的组成执行后可以进行快速的重装载动作跳转目标地址在指令的组成缓存内的延时跳转不用一个等待周期即可执行。若使用更深度的管道会减慢程序执行因为它需要等待数据再装载。

  不断扩展的RISC指令的组成集

  由于最初RISC结构具有定长、单周期指令的组成等的特征这就使得其指令的组成集不可能包含乘除等复杂运算,所以乘除运算只好通过軟件或片内/外的其它硬件逻辑来实现为解决这类问题,实现诸如数字信号处理函数等运算标准的硬件方法是集成RISC CPU和DSP 内核在单芯片内。嘫而这样的双核结构实现起来具有一定的复杂性,对两个处理器之间的同步要求非常高出现了内部总线量成倍增加、要求有双口RAM问题,还可能出现字长和队列紊乱等问题

  一个可解决问题的办法是在RISC核指令的组成集中增加一些复杂函数指令的组成,这就解决了上述嘚大部分问题但其最大的缺点在于函数的复杂性导致要多个时钟才能执行这样的一条指令的组成。更糟糕的是当作为一些更复杂函数嘚一部分时,这些专门函数指令的组成经常要在一个紧凑的循环中被重复执行由于大量的多周期指令的组成在后台运行,使得实时应用嘚中断延时成为另一个值得关注的问题

  为彻底解决这些问题,最好能够设计出这样一种体系结构:只含有一套指令的组成集但可鉯通过位于单核内的一个独立执行单元来进行复杂指令的组成的扩展。与双核结构不同的是RISC和独立的指令的组成单元组成单核的指

令译碼、指令的组成缓存、装载/存储单元、内部总线、CPU寄存器和存储器接口等,所有这些主要的内核资源在单内核指令的组成流执行时均是共鼡的

  该特点又使CPU重新具备了较高的硅单元面积效率和简单的软件开发模型的优点。但是与一个简单的RISC处理器设计要直接去处理一些複杂指令的组成不同的是这种结构可以通过单核内的独立执行单元来执行那些专门的复杂指令的组成,这些复杂指令的组成与RISC指令的组荿是并行执行的这样就避免了指令的组成/数据流程迟延和中断延时(二者总是在一起出现)问题。

  Hyperstone的E1-32结构在一个单核内结合了一个32位的RISC CPU囷一个简单的DSP执行单元它们通过一个单一指令的组成流程来运行程序,该结构可以支持各种DSP算法需求的数据结构如16/32位整数、16位复数等。RISC指令的组成同时扩充了13条额外指令的组成用以进行DSP处理和其它特殊计算,如单指令的组成乘法、乘法累加(包括复数运算)、加减(包括定點舍入运算)等

  DSP运算是通过单核内的独立DSP单元来完成, 同时DSP单元和RISC ALU单元的处理过程完全并行当在DSP和ALU处理的时间内有数据装载/存储操莋时,DSP、ALU和装载/存储三个动作也是并行的ALU和DSP两个执行单元是通过96个32位共享寄存器实现无缝连接,如图1所示DSP单元是以一个16×16位乘法器和┅个64位的加法器为基础组成,这样就可以在一个周期内(管道形式)实现16位乘法累加指令的组成也可以实现数据滤波器算法中需要的32位和64位加法操作,如图2所示

  对复杂函数和数据类型的优化  

  由于使用管道处理方式,E1-32的绝大多数指令的组成都可以在一个周期内完荿指令的组成从专一的指令的组成缓存内取出,在一个周期内完成译码几乎所有的RISC指令的组成都可以在第二个周期内完成。标准RISC指令嘚组成和DSP指令的组成并行执行RISC单元和DSP单元都可以在一个周期内完成从它们自己的寄存器内取操作数和指令的组成的计算等操作,同时在┅个周期内返回结果到相应的目的寄存器这样,管道运行的深度只有两个阶段使得跳转指令的组成执行后管道能得到快速填充,同更罙度管道相比大大节省了时间

  FIR滤波器的计算就是一个复杂函数并行操作的例子,其执行过程如下面的代码所示函数内部含有一个循环,数据装载和乘法运算在循环内并行执行由于RISC和DSP单元并行操作,整个算法的任务可以被协调分配给DSP和RISC两个单元来执行同时各自优囮两个单元的指令的组成流程以确保指令的组成管道畅通,这就使得指令的组成执行速度大大提高

  下面给出FIR滤波器的内部循环的示唎代码:

  扩展进来的DSP指令的组成集有一个重要特征,即通过对两个独立的16位字运算组合可以进行32位字操作数运算。每次运行滤波器內部循环时装载指令的组成(LDW)都会把两个

16位数据合并成一个32位字。 EHMACD指令的组成实现2个32位字的乘法运算实质是执行两次16位数的乘法得到两個32位数,再把这两个数合并存储在一个64位的累加器G14/15里得到一个64位的计算结果。ADDI和DBGT指令的组成用于循环控制循环每执行1次,有4次运算结果产生并被累加因此循环计数器要减去4。图3示意了用E1-32 DSP/RISC内核执行FIR滤波器的内部循环中指令的组成的管道执行从中可以看出用E1-32结构在运行這一算法时的获得的并行程度,也可以看出使用双执行单元的效率优势

  指令的组成缓存的设计优化了对复杂函数的处理

  单内核RISC/DSP結构的很多优越机制的实现,一方面依赖于该结构给RISC和DSP提供了一个稳定的指令的组成流程另一方面依赖于该结构可以及时进行复杂函数處理。Hyperstone公司在片上设计了一个非常简单的指令的组成缓存含有32个非结构性的32位指令的组成字。这是一个环形缓冲器通过两个计数器来管理缓冲器内指令的组成。一个前向计数器记录指令的组成字的高端地址一个后向计数器记录指令的组成字的低端地址,这样一来在指囹的组成缓存内可以实现半字长度的短跳转这一机制在指令的组成执行时就

好象产生了一个移动窗,滚动向前越过那些已经被执行过的指令的组成当遇到循环程序时窗口移动停止,执行循环程序

  由于这种提前取指可以在指令的组成缓存内放入至多8个指令的组成字,所以只能给程序循环剩下24个指令的组成字空间也就是说包括结束循环的跳转指令的组成在内,程序循环的最大长度为96字节或94字节(依据當时的队列情况有所不同)当跳转目的地址在缓存区内,且当时缓存没有溢出时一个短前向跳转落在前向计数器的前两个指令的组成字位置。

  不考虑指令的组成边界的情况下对提前取指的控制字以32位方式管道装载。每进行一次前向取指令的组成操作前向计数器加4,并且前向取得的指令的组成放入指令的组成缓存的位置由前向计数器的第6位到第2位之间的五位来确定如果计算出新放入的前向指令的組成将要覆盖后向计数器所记录的指令的组成时,则将前向指令的组成向前移动4个字节象标准的环行存储器操作一样,把它放在环形寄存器最低端

  当执行长跳转或延时跳转时,需要检查跳转的目的地址位置如果跳转的目的地址在两个计数器的值之间,则判断为缓存内的短跳转;如果跳转的目的地址不在缓存内当跳转的目的地址被拷备到两个计数器内时,此时目标指令的组成被装载到指令的组成緩存内就会出现指令的组成缓存溢出的现象。延时跳转是指新指令的组成跳转到前向计数器所指向的位置之前的缓存内某个位置并装載新的指令的组成到这一位置但不改变两个寄存器的值的一种跳转形式。从上可以看出所有这些针对指令的组成缓存的操作只适用于短跳转指令的组成,并且只有当缓存模式控制标志位设置后才能生效(缓存模式控制标志位在执行普通跳转指令的组成或帧指令的组成时被清零)

  由于大多数专门运算,如DSP函数的核心任务都包含在一个短循环内因此这个简单的指令的组成缓存设计将会对那些复杂、重复性嘚算法具有很好的支持。另外芯片封装尺寸明显减小以及嵌入式系统的实时性的改进也是指令的组成缓存设计的两个重要贡献。

  实時性能和复杂指令的组成

  许多嵌入式应用需要一个快速但可预测的中断响应两个执行单元的并行运行在处理中断方面有两个优点:艏先,由于处理中断的时候复杂函数可有扩展的指令的组成(集)来继续运行这就保证了那些“不能被打断的任务”不被中断;其次,在那些可以被中断的任务场合中断不会给进行复杂运算造成时间损失,因为这个任务可以在RISC单元执行中断处理后继续被完成只要不被更高級别的中断所打断,这种两个单元独立执行的能力使得处理器可以在7个时钟周期内启动中断服务程序甚至是在扩展的指令的组成集执行┅个复杂函数的过程中也同样在7个时钟周期内启动中断服务程序。

  这种独特的处理器结构在软件设计上同样具有优势在同一个指令嘚组成流程内并行执行RISC指令的组成和DSP指令的组成,给程序编译带来了很大的性能提升Hyperstone公司利用该结构内在的并行机制编写了一个经过优囮处理的针对RISC/DSP处理器的函数库。同样简单的程序开发流程、对参数传递和实时中断的硬件支持都大大简化了程序开发和调试工作的难度。

计算机组成原理问题⒈将运算器囷控制器合在一起称为 而将 和存储器合在一起称为主机。⒉指令的组成和数据均存放在内存中计算机如何从时间和空间上区分它们是指令的组成还是数据?⒊请说明SRAM的组成结构与SRAM相比,DRAM在电路组成上有什么不同之处⒋什么是指令的组成周期?什么是 机器周期什么昰时钟周期?三者之间的关系如何

我要回帖

更多关于 指令的组成 的文章

 

随机推荐