一种基于分布式功能单元的微处理器架构的制作方法

文档序号:11303282阅读:249来源:国知局
一种基于分布式功能单元的微处理器架构的制造方法与工艺

本实用新型涉及一种微处理器设备,具体为一种基于分布式功能单元的微处理器架构,属于微处理器架构设备领域。



背景技术:

传统微处理器的开发是一项非常繁琐浩大的工程,需要投入海量的资源和时间,导致一款处理器的开发成本极其高昂。因此,如果一款处理器在其架构定型之后无法进行大量流片的话,势必引发巨大的成本黑洞,从而给芯片设计开发带来难以估量的巨大风险。可是,由于应用软件种类繁多,传统处理器很难保证对不同领域的所有应用程序都能做到执行性能最优。造成这种现象的主要原因在于,传统处理器的性能优化全部集中于机器码(machine code)层面,而对于来自高级语言层面的,和特定应用相关的信息则完全忽略。因此,建立一种软件和硬件之间的信息交换机制,从而使底层的硬件可以动态地适应不同应用程序的结构,以保证对任何应用程序都达到最佳运行性能,就变得非常必要。

为此,提供一种基于分布式功能单元的微处理器架构。



技术实现要素:

本实用新型的目的就在于为了解决上述问题而提供一种基于分布式功能单元的微处理器架构。

本实用新型通过以下技术方案来实现上述目的:一种基于分布式功能单元的微处理器架构,包括:

指令译码器,能够把当前需要执行的机器指令解码成若干微指令,并将微指令发送到对应的功能单元;

功能单元,包括独立的硬件模块,完整的控制逻辑和数据路径,并提供完全基于硬件实现的各种操作;

数据互联模块,能够使不同功能单元之间的数据交换;

微指令分发网络,将所述微指令从所述指令译码器中分发到对应的功能单元中。

进一步,所述微指令包括:

执行单元,执行微指令的功能单元;

操作编码,执行时的具体操作;

目标单元,当前的操作结果应被传送到的功能单元;

目标单元输入端口,目标单元负责接收该微指令结果的具体端口;

微指令编号,所述微指令及其操作数使用的配对编号;

微指令编号处理标识,指示功能单元是否将当前操作结果的编号加一。

进一步,所述指令译码器内部设有能够对机器指令编码的微指令存储器。

进一步,每一个所述功能单元包括两个输入端口:

微指令端口,面向指令译码器,用来接收微指令的端口;

数据端口,面向数据互联模块,用来接收其他功能单元发送的操作数。

进一步,每一个所述功能单元包括能够与外接设备互联的专属端口。

进一步,所述数据互联模块包括两种互联结构:

共享总线结构,由一条总线连接全部功能单元,并且每次只能由一对功能单元独占该总线;

交叉互联结构,若干对功能单元并行互联,不必等待总线的空闲周期。

本实用新型的有益效果是:与传统处理器架构相比,以分布式独立功能单元为基础的处理器架构能够不使用流水线连接处理器各个部分,而是通过数据互联模块将各个功能单元互联,可以无缝隙添加硬件加速模块(accelerator)。

该微处理架构基于任何需要耗费大量运算时间的软件算法,理论上其均可由相应的硬件模块来实现,并作为一个独立功能单元添加到一个处理器里 来。当实现基于此架构的ASIC处理器时,功能单元设计者可以尽可能多地添加通用硬件加速器(例如图形图像处理及加密解密算法等等),从而满足尽可能多的应用的需求(注意,由于ASIC处理器结构一旦确定即无法修改,所以不应该将某个应用的专属算法作为硬件加速器来使用)。而当使用FPGA当作硬件实现平台的时候,则可以采取更加灵活的加速器添加模式。

附图说明

图1:本实用新型基于分布式功能单元的微处理器架构示意图;

图2:本实用新型基于共享总线的数据互联模块结构示意图;

图3:本实用新型基于交叉互联的数据互联模块结构示意图;

图4:本实用新型动态生成加速器功能单元的流程结构示意图;

图5:本实用新型动态进行微指令重新调度的流程结构示意图;

具体实施方式

下面将结合本实用新型实施例中的附图,对本实用新型实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本实用新型保护的范围。

如图1所示:一种基于分布式功能单元的微处理器架构,包括:

指令译码器(instruction decoder),能够把当前需要执行的机器指令解码成若干微指令(microinstruction),并将微指令发送到对应的功能单元。

其中,这里每一个微指令都对应着某个功能单元提供的一项具体操作(operation)。一个功能单元提供的操作种类及数量由该功能单元的设计者定义并实现。但为了保持结构清晰,应将相关或相似的操作集成于同一个功能单元。这样也便于对机器指令进行编码,例如,应将所有浮点数运算集成 到一个独立浮点数处理单元(FPU)。一个功能单元A在完成当前操作之后,会将运算结果传送到另一个功能单元B作为B执行下一个操作的操作数(operand)。同理,A执行当前操作所用到的所有操作数均是提前由其他的功能单元提供的运算结果。由于某个操作的多个操作数可能会由若干不同功能单元提供,而每个功能单元又会连续接收到若干的微指令,所以为了让功能单元能够正确区分哪些操作数是被哪个微指令需要,必须要为每一个微指令极其所需的操作数进行编号。功能单元会将微指令队列(microinstruction queue)里的第一个微指令取出,然后将其编号和自己的某个输入端口接收到的数据所携带的编号进行对比,如果相等,则说明该操作数和当前微指令匹配,应该接收;否则必须等待编号正确的操作数到达。当所需的操作数全部到达时,功能单元即可执行当前微指令。

每一条微指令由六个部分组成:

执行单元,即执行该微指令的功能单元;

操作编码(opcode),即执行的具体操作(功能单元设计者必须为每一个操作设计具体的操作流程以及所需要的操作数);

目标单元,即当前操作的结果应被传送到的功能单元;

目标单元输入端口,即目标单元负责接收该微指令结果的具体端口(当某个功能单元仅有一个端口时,此数据可被忽略);

微指令编号(opid),即该微指令及其操作数使用的配对编号(一个整数即可,其宽度可以根据实际需要进行调整);

微指令编号处理标识,指示功能单元是否将当前操作的结果的编号加一。

指令译码器内部需提供一个微指令存储器,用来对机器指令进行编码。注意,此微指令存储器须为可随机读写的RAM,而并非只读的ROM,原因将在后面予以阐明。每一条机器指令将会被编码成至少一个微指令。理论上,一个机器指令对应的微指令的数量没有上限。在一条机器指令被解码的时候, 指令译码器会将对应的微指令集从微指令存储器读出,并给据微指令里给出的执行单元,将微指令发送至对应的功能单元。

功能单元(functional unit),包括独立的硬件模块,完整的控制逻辑(control logic)和数据路径(data path),并提供完全基于硬件实现的各种操作。

一个功能单元所提供的操作理论应该是在逻辑上相关或相似的,这样可以保持处理器整体结构的清晰明了。但是,一个处理器设计者完全可以根据实际的需求来拆分和整合各个功能单元,以达到使性能最大化的目的。例如,可以设计一个同时提供了快速傅里叶变换(FFT)和逆离散余弦变换(IDCT)的功能单元。但是,如果在实际应用时发现,两个变换经常需要被并行使用,那么便可以考虑将这两个变换拆分成两个独立的功能单元,用以提高整个系统的并行性。一个功能单元必须要提供下面两个标准输入端口:

微指令端口,即面向指令译码器,用来接收微指令的端口;

数据端口,即面向数据互联模块,用来接收由其他功能单元发送的操作数。

一条微指令及其所需操作数需要根据一个编号来确定其所属关系,因此,在上面两个端口上要实现编号比对逻辑。除了上述两个标准端口以外,一个功能单元也可以具有专属端口,用来完成和外接设备(peripherals)的互联,比方说外部存储器(DRAM)控制接口。专属端口应由功能单元设计者根据实际需要进行添加。

一个功能单元既可使用处理器的主时钟信号,亦可使用独立的本地时钟信号。本处理器的核心思想即为:全局非同步,而局部同步(globally asynchronous locally synchronous)。这为一款处理器的开发提供了最大的灵活度。因为,一个功能单元设计者及其团队可以完全独立的开发一个功能单元而无须考虑其他功能单元的具体实现。功能单元之间的互联只通过数 据互联模块实现。当某个功能单元需要在性能上进行改进时,其设计团队可以直接将现有版本用改进后的优化版本(例如通过增加该功能单元内部流水线长度)替代,而无需对处理器其他部分进行任何修改。

数据互联模块(data interconnection),能够使不同功能单元之间的数据交换。

这里可以使用两种不同的互联结构:

共享总线结构(shared bus):即由一条总线连接全部功能单元,并且每次只能由一对功能单元(master和slave)独占该总线;如果使用多条共享总线时,每一条总线不一定要连接全部功能单元,即,可以选出特定的,经常需要交互数据的功能单元来单独连接的一条共享总线上。这样可以将总线的数据吞吐量(throughput)最优化。

交叉互联结构(crossbar):即若干对功能单元可以并行互联,不必等待总线的空闲周期。

共享总线结构的优点是节省资源,缺点是效率相对较差,因为一旦一条总线被占用,其他功能单元必须等待当前传输结束才可能获得总线使用权。解决办法是根据需要增加额外的共享总线,以保证让更多的功能单元间可以并行通讯,如图2所示。

交叉互联结构的优点是效率高,可以随时实现任意两点间的互联通讯。缺点是消耗较多硬件资源,用以实现内部路由通道,因此,交叉互联结构一般对可连接的功能单元总数有限制(一般是不可以超过16个)。解决办法是减少路由通道数量,并为需要经常互联通讯的功能单元建立固定的静态路由通道,如图3所示。一款处理器到底应该使用哪种互联结构,必须由处理器设计者根据实际需要来灵活判断。

微指令分发网络(microinstruction distribution network),将所述微指令从所述指令译码器中分发到对应的功能单元中。

实施例

假设,某个处理器将浮点数处理运算单元(floating point unit,以下简称FPU)和寄存器堆(register file,以下简称RF)分别做为一个独立的功能单元。其中,除法器功能单元提供了32位精度的浮点除法运算,而寄存器堆提供了随机寻址存取功能。那么,浮点数除法机器指令:

fdiv r01 r02 r03

将会被编码成下面的微指令集:

MI_0(RF,READ_01,FPU,PORT_0,ID,0);

MI_1(RF,READ_02,FPU,PORT_1,ID,0);

MI_2(FPU,DIV,RF,PORT_0,ID,1);

MI_3(RF,WRITE_03,-,-,ID+1,-);

其中微指令MI_0到MI_3的具体含义如下:

MI_0:将RF的地址01内的数据发送到FPU的输入端口0。该数据在发送时直接使用当前可用的ID编号。末尾的0的意思是直接使用该ID不做任何修改;

MI_1:和MI_0的含义基本相同。区别是,将RF的地址02内的数据发送到FPU的端口1;

MI_2:当FPU分别在端口0和1上接收到编号为ID的操作数之后,由FPU执行除法操作,所得结果发送给RF的端口0。发送结果使用的编号必须要进行自加一操作,即ID+1;

MI_3:将接收到的编号为ID+1的数值写入回RF的地址03。由于,写入操作并不产生结果,所以,目标单元,目标单元输入端口以及微指令编号处理标识均未设置。

处理器架构针对不同的硬件实现(FPGA和ASIC)提供了不同的动态加速的方法。如图4所示,以FPGA为平台的处理器实现可以采用动态添加硬件加 速器的方法。在性能分析(profiling)阶段,可以将一个特定应用里面最常使用并且耗时最多的程序段(hot traces)予以标记,然后,将这些程序段作为高层综合的输入来动态生成功能单元。当前,主流的FPGA都支持在运行时对当前系统的某些模块的动态替换和添加(reconfiguration),因此新生成的功能单元可以动态地添加到一个正在运行的系统中去,从而达到动态加速的效果。从目前模拟实验的数据来看,通过动态添加硬件加速器可以使应用的平均运行速度提高10倍。

在一个ASIC处理器上并无法实现运行时动态添加加速器,但是,本处理器结构支持另外一种动态加速方式。如图5所示,该方式的基础依然是性能分析(profiling),然后,常用程序段(hot traces)会被在各个功能单元上进行重新调度(rescheduling),从而为一整个程序段而非一个单一的机器指令来生成微指令集。重新调度的过程就是对功能单元支持的微指令的一次重新编程。这个新生成的微指令集会在运行时动态地写入微指令存储器。当这个程序段再次需要被执行时,指令译码器将不再逐条执行机器指令,而是直接执行新生成的微指令集。这种动态生成的微指令集省略了几乎所有冗余的中间步骤,因此,可以极大地提高对应程序段的运行速度。一个简单例子便是对循环条件的检查和更新。通常一个循环在执行过程中要周期性地检查一个步进变量的当前值。按照正常的执行顺序,每次该步进变量都必须先从寄存器堆里读出,然后执行检查和更新,最后将更新后的数值再次写入寄存器堆。而重新调度之后,可以将对该步进变量的检查和更新放到一个专属的运算逻辑单元(ALU)上来进行。这个变量只需从寄存器堆里被读出一次,然后在执行完一次检查和更新后,将该变量的值重新发送到同一个运算逻辑单元的同一个输入端口上,而不是写回到寄存器堆。这样反复执行,直到该步进变量达到某个临界值后,将其一次性写回到寄存器堆内。通过这种调度方式,几乎省略了运算逻辑单元和寄存器堆之间全部的数据交换过程,从而 大大提高了运行效率。目前的模拟试验结果显示,通过这种动态重新调度的方式,可以使应用的平均运行速度提高3倍。当然,此加速方式也适用于以FPGA为硬件平台的处理器。

综上所述,一个基于本结构的处理器,无论是采用ASIC还是FPGA作为硬件实现平台,均可以做到对特定应用程序的动态加速。这种动态适应的能力在高性能运算领域,比方说图形图像加工,人工智能,深度学习等领域均可以发挥无可比拟的巨大优势。

对于本领域技术人员而言,显然本实用新型不限于上述示范性实施例的细节,而且在不背离本实用新型的精神或基本特征的情况下,能够以其他的具体形式实现本实用新型。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本实用新型的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本实用新型内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1