一种基于自定义指令的多核通信系统及方法

文档序号:6484223阅读:145来源:国知局

专利名称::一种基于自定义指令的多核通信系统及方法
技术领域
:本发明涉及多核通信领域,尤其涉及在SOG(System-on-a-chip,片上系统)上实现多核通信的系统及方法。
背景技术
:随着声音、图像以及视频处理技术的快速发展,消费类电子市场需要性能更加强劲的SOC来实现这些多媒体处理技术,因此多核SOC受到越来越多的研究和重视。而决定多核SOC性能的一个主要因素是SOC中多个处理器(CPU)之间的通信速度,多个处理器通信速度直接影响SOC产品的性能。现在的多核通信方法通常是基于共享内存技术。共享内存是指在多处理器的计算机系统中,内存被多处理器共同访问。共享内存的多核通信方法是指不同处理器通过向预设的地址单元(共享内存的地址)写入数据,并通知与其通信的另一处理器读取由该处理器写入的数据,从而实现数据共享和交互的通信机制。但是由于GPU在访问共享内存时需要对数据进行緩存(Cache),因此每次CPU访问共享内存时都需要刷新緩存。因此在多核SOC芯片中共享内存的多核通信方法需要引入大量时延。该时延等于片内总线时延+緩存更新时延+共享内存访问时延,大大降低了通信执行效率。由此可以看出,如果能够避免共享内存带来的延时,多核通信系统的通信效率将会得到大大改善。
发明内容本发明提供了一种能够避免共享内存带来时延的基于自定义指令的多核通信系统及方法。在第一方面,本发明提供了一种基于自定义指令的多核通信系统,包括两个或两个以上GPU以及自定义指令处理单元。源CPU用于识別"发送数据"自定义指令并解析数据所在位置,以及发送该自定义指令码和所述数据。目标CPU用于识别"接收数据"自定义指令,以及发送该自定义指令码和接收所述数据。自定义指令处理单元用于解析来自源GPU的"发送数据"自定义指令码,并根据解柝到的内容向目标CPU发送信息以便目标CPU调用"接收数据"自定义指令,以及解析来自目标CPU的"接收数据"自定义指令码,并根据解析到的内容向目标CPU发送信息以便目标CPU接收来自源GPU的所述数据。在第二方面,本发明提供了一种基于自定义指令的多核通信方法,包括以下步骤源CPU识別"发送数据"自定义指令并解析数据所在位置,以及将该数据和该自定义指令码发送到自定义指令处理单元。自定义指令处理单元解析来自源GPU的"发送数据"自定义指令码,根据解析到的内容向目标CPU发送信息以便目标CPU调用"接收数据"自定义指令。目标CPU识别"接收数据"自定义指令,以及将该自定义指令码发送到自定义指令处理单元。自定义指令处理单元解析来自目标CPU的"接收数据"自定义指令码,并根据解析到的内容向目标CPU发送信息以便目标CPU接收所述数据。在本发明的一个实施例中,自定义指令处理单元包括解析单元,且每个CPU对应一个解析单元,该解析单元用于解析来自与该解析单元相对应GPU的自定义指令码。在本发明的另一个实施例中,自定义指令处理单元包括仲裁单元,该仲裁单元用于仲裁一个源CPU与另一个源CPU同时访问目标CPU的顺序,用以解决CPU之间访问冲突问题。在本发明的又一个实施例中,CPU包括中断控制器,用于控制该GPU调用"接收数据"自定义指令。本发明通过自定义指令方式,在多核通信系统中将若干源CPU中的数据发送到目标GPU中,该自定义指令方法大大地提高了多核通信系统中CPU之间的通信效率,具有重要的应用价值。下面将参照附图对本发明的具体实施方案进行更详细的说明,在附图中图1本发明的基于自定义指令的多核通信系统;图2本发明的基于自定义指令的多核通信流程图。具体实施例方式本发明的基于自定义指令的多核通信系统包括两个或两个以上CPU以及自定义指令处理单元。本说明书以三核通信系统为例对本发明的基于自定义指令的多核通信系统及方法做详细说明。其它多核通信方法与三核通信方法的基本原理相同,不再重复。图1是本发明的基于自定义指令的多核通信系统,该系统包括CPU110、CPU120、GPU130及自定义指令处理单元140。CPU110包括取指单元111、解码单元112、执行单元113、寄存器Rs114、寄存器Rt115、寄存器Rd117以及中断控制器116。CPU110用于执行包含自定义指令的程序以及控制GPU110的各项操作。取指单元111用于从存储单元中取出指令,并将指令发送到解码单元112中。解码单元112对指令解码,并将自定义指令码发送到自定义指令处理单元140,将其它指令发送到执行单元113。执行单元113根据解码单元112发送的解码内容执行相应操作。寄存器Rs114、寄存器Rt115、寄存器Rd117用于暂存CPU110中待处理的数据。中断控制器116用于接收中断申请,并控制CPU110进入包含自定义指令的中断服务程序。GPU120包括取指单元121、解码单元122、执行单元123、寄存器Rs124、寄存器Rt125、寄存器Rd127以及中断控制器126。GPU130包括取指单元131、解码单元132、执行单元133、寄存器Rs134、寄存器Rt135、寄存器Rd137以及中断控制器136。GPU120、CPU130中各单元的功能和作用与CPU110中各单元的功能和作用相同。自定义指令处理单元140中的解柝单元数量与系统中GPU数量相同,且每个CPU对应一个解析单元,在三核通信系统中解析单元数量为三。自定义指令处理单元140包括第一解析单元141、第二解析单元142、第三解析单元143和仲裁单元144。自定义指令处理单元140用于解析自定义指令,以及打断或释放源CPU的指令流水线,以及向目标GPU发送中断申请。第一解析单元141用于解析由CPU110发送的自定义指令码。第二解析单元142用于解析由CPU120发送的自定义指令码。第三解析单元143用于解析由CPU130发送的自定义指令码。仲裁单元144用于解决多个GPU共访同一个GPU而存在的访问冲突问题。如图1所示在本发明的基于自定义指令的多核通信系统中,当GPU110向CPU120发起通信时,首先CPU110识別出其所调用的指令为"发送数据"自定义指令,并初步解析出待发送数据所在位置,进而将待发送数据及自定义指令码发送到第一解析单元141。第一解析单元141进一步解析该自定义指令码后向仲裁单元144提出仲裁申请。若GPU130同时也向CPU120发起通信,则仲裁单元144仲裁GPU110、CPU130发送数据的顺序。假设仲裁结果是CPU110先发送数据,则自定义指令处理单元140打断CPU130的指令流水线,同时通知第一解析单元141向第二解析单元142发送数据。第二解析单元142接收到来自GPU110的数据后向中断控制器126发出中断申请,以便CPU120调用"接收数据"自定义指令并将该自定义指令码发送到第二解析单元142。第二解析单元142解析该自定义指令码后将数据发送到CPU120中。最后自定义指令处理单元140释放CPU130的指令流水线。在具体阐述基于自定义指令的多核通信方法之前,首先对本发明的一条自定义指令做详细说明。MIPSCPU为用户提供16条自定义指令功能,称为UDI。下面以MIPSCPU为例定义一条用于多核通信的"发送数据"自定义指令UDIO,格式如表2所示。<table>tableseeoriginaldocumentpage7</column></row><table>表2自定义指令长度固定为32bits,该自定义指令头名称为SPECLAL2。"发送数据"自定义指令的高六位即第31…26bit为011100,代表指令类型为自定义指令。低六位即第5…0bit为010000,其中01与高六位的011100共同表示指令类型为自定义指令;OOOO表示自定义指令号为第O号自定义指令,第0号自定义指令为"发送数据"自定义指令。第25…21bit为寄存器Rs的索引,通过该索引CPU能够查询到寄存器Rs中数据所在位置。第20…16bit为寄存器Rt的索引,通过该索引GPU能够查询到寄存器Rt中数据所在位置。第15…12bit为Reserved,无意义,可以取任意数。第11、10bit为寄存器可用标志,共2bit。当寄存器可用标志为00时,表示寄存器Rs、Rt中的数据都无效。当寄存器可用标志为01时,表示寄存器Rs中的数据无效,寄存器Rt中的数据有效。当寄存器可用标志为10时,表示寄存器Rs中的数据有效,寄存器Rt中的数据无效。当寄存器可用标志为11时,表示寄存器Rs、Rt中的数据都有效。第9、8bit为目标CPU号,共2bit。当目标CPU号为00时,表示目标CPU为第O号CPU。当目标CPU号为01时,表示目标CPU为第1号CPU。当目标CPU号为10时,表示目标CPU为第2号GPU。当目标CPU号为11时,表示目标CPU为第3号CPU。第7、6bit为源CPU号,共2bit。当源GPU号为00时,表示源GPU为第0号CPU。当源CPU号为01时,表示源CPU为第1号CPU。当源GPU号为10时,表示源CPU为第2号CPU。当源CPU号为11时,表示源CPU为第3号GPU。下面定义一条用于多核通信的"接收数据"自定义指令UDI1,格式如表3所示。<table>tableseeoriginaldocumentpage8</column></row><table>"接收数据"自定义指令的高六位即第31…26bit为011100,代表指令类型为自定义指令。低六位即第5…0bit为010000,其中01与高六位的011100共同表示指令类型为自定义指令;0001表示自定义指令号为第1号自定义指令,第1号自定义指令为"接收数据"自定义指令。第25…16bit为Reserved,无意义,可以取任意数。第15…11bit为目标寄存器Rd的索引,通过该索引目标GPU能够查询到寄存器Rd所在位置。第10…6bit为Reserved,无意义,可以取任意数。接下来以CPU110、CPU130向CPU120发起通信为例,阐述本发明的基于自定义指令的多核通信方法。图2是本发明的基于自定义指令的多核通信流程图。步骤210,CPU110执行包含"发送数据"自定义指令的源程序,并通过调用源程序中的自定义指令将自定义指令码及寄存器Rs114、Rt115中数据,发送到自定义指令处理单元140的第一解析单元141中。源程序代码如下指令1UDIORs,Rt,0x39指令nGPU110执行该程序代码,首先取指单元111从存储单元中取出指令1。然后解码单元112根据该指令1的高六位及低六位信息解出该指令1不是自定义指令,解码单元112将该指令1解码后发送到执行单元113。执行单元根据指令1的要求执行相应搡作。按照以上方式,CPU110顺序调用源程序代码中的其它指令,直到开始调用自定义指令UDIORs,Rt,0x39。CPU110调用自定义指令UDIORs,Rt,0x39,首先取指单元111从存储单元中取出该指令。解码单元112根据高六位及低六位信息解出该指令为"发送数据"自定义指令,并初步解析出待发送数据所在位置。然后GPU110将自定义指令码及寄存器Rs114、寄存器Rt115中数据发送到自定义指令处理单元140的第一解析单元141中。在调用自定义指令UDIORs,Rt,0x39后,GPU110继续调用源程序中的其它指令,即调用指令n……,具体方法与调用指令1方法相同。步骤211,第一解析单元141接收来自GPU110的数据和"发送数据"自定义指令码,并进一步解析该"发送数据"自定义指令码。进一步解析"发送数据"自定义指令码方法为在自定义指令UDIORs,Rt,0x39中,UDIO表示第O号自定义指令,也就是"发送数据"自定义指令;Ox表示十六进制,39换算成十六进制为0011,1001。自定义指令码的高六位011100、低六位010000以及寄存器Rs、Rt的索引均由系统自动生成。根据表2可知,寄存器可用标志为11;目标GPU号为10,换算成十进制为2;9源CPU号为01,换算成十进制为1。因此自定义指令UDIORs,Rt,0x39表示1号CPU向2号CPU发起通信,且寄存器Rs、Rt中的数据有效。步骤212,当第一解析单元141解析到寄存器Rs114、Rt115中的数据有效后,向仲裁单元144提出仲裁申请用以申请CPU110发送数据的顺序,以便解决多CPU访问冲突问题。所述寄存器Rs114、Rt115中的数据有效为,自定义指令码高六位为011100低六位为01xxxx,且寄存器可用标志为11。步骤220,GPU130执行包含"发送数据"自定义指令的源程序,并通过调用源程序中的自定义指令将自定义指令码及寄存器Rs134、Rt135中数据,发送到自定义指令处理单元140的第三解析单元143中。步骤221,第三解析单元143接收来自CPU130的数据和"发送数据"自定义指令码,并解析该自定义指令码,具体方法与步骤211中CPU110解析"发送数据"自定义指令码的方法相同。步骤222,当第三解析单元143解析到寄存器Rs134、Rt135中的数据有效后,向仲裁单元144提出仲裁申请用以申请CPU130发送数据的顺序,以便解决多CPU访问冲突问题。所述寄存器Rs134、Rt135中的数据有效为,自定义指令码高六位为011100低六位为01xxxx,且寄存器可用标志为11。步骤230,仲裁单元144接收CPU110、CPU130分别向其发送的仲裁申请,根据仲裁策略判定CPU110、GPU130访问GPU120的顺序。所述仲裁策略有多种,如CPU110与任何其它GPU通信时GPU110发送数据永远优先等。下面以CPU110优先访问GPU120为例加以阐述。步骤240,仲裁单元144向第一解析单元141发送信息,通知第一解析单元141可以传输数据到第二解析单元142;同时仲裁单元144向CPU130发送信息用以打断CPU130的指令流水线。步骤250,第一解析单元141将来自Rs114、Rt115中的数据发送到第二解析单元142。步骤251,第二解析单元142接收到来自第一解析单元141的数据后,向CPU120的中断控制器126发送中断申请。步骤260,中断控制器126接收来自第二解析单元142的中断申请后,控制CPU120进入包含"接收数据"自定义指令的中断服务程序,通过调用自定义指令以及初步解析其为"接收数据"自定义指令,将自定义指令码发送到自定义指令处理单元140的第二解析单元142中。中断服务程序代码如下指令xUDI1Rd,0xXX在该中断服务程序中,指令x……用于保存CPU120中断前的相关信息。GPU120调用自定义指令UDI1Rd,OxXX,首先取指单元121取出该指令。解码单元122根据高六位及低六位信息解出该指令为"接收数据"自定义指令。然后CPU120将自定义指令码发送到自定义指令处理单元140的第二解析单元142中。步骤261,第二解析单元142接收"接收数据"自定义指令码后,进一步解析该"接收数据"自定义指令码。所述进一步解析"接收数据"自定义指令码方法为在自定义指令UDMRd,OxXX中,UDM表示第1号自定义指令,也就是"接收数据"自定义指令;在0xXX中,Ox表示十六进制,XX可以为任意数;XX为任意数的原因是目标寄存器Rd的索引由系统自定生成,并且bit25…16,bit10…6均为Reserved,无意义。第二解析单元142进一步解析"接收数据"自定义指令码实际上就是解析系统自动生成的目标寄存器Rd索引。步骤262,第二解析单元142将来自GPU110的数据以及目标寄存器Rd的索引发送到CPU120中。步骤263,CPU120根据目标寄存器Rd索引将来自CPU110的数据存储在CPU120的寄存器Rd中。步骤270,CPU120发送信息到自定义指令处理单元140要求其释放GPU130的指令流水线;然后自定义指令处理单元140释放GPU130的指令流水线。步骤280,GPU120接收来自GPU130的数据,接收数据方法与GPU120接收来自CPU110数据方法相同。具体过程是第三解析单元143将来自Rs134、Rt135中数据发送到第二解析单元142。第二解析单元142向CPU120发出中断申请,进而CPU120ii进入包含自定义指令的中断服务程序。CPU120调用自定义指令并解析出"接收数据"自定义指令,再将该自定义指令码发送到第二解析单元142中。第二解析单元142解析出目标寄存器Rd的索引后,将数据发送到GPU120的寄存器Rd中。在本说明书中对于自定义指令处理单元140的接口有必要再做些说明下面以MIPSCPU为例定义自定义指令处理单元的接口,如表1所示。<table>tableseeoriginaldocumentpage12</column></row><table>表1需要说明的是,表1中接口UDI_ir—e[31:0]、UDI—irvalid_e、UDI_rs—e[31:0]、UDl一rt一e[31:0]、UDI_start—e、UDI_staM—m、UDI_present、Int—req、UDl_wreg—e[4:0]、UDI_rd_m[31:0]的数量与解析单元的数量一致,而接口UDI—greset、UDI_clk分别只需要一个。显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明所要求保护的范围仅由所迷的权利要求书进行限定。权利要求1.一种基于自定义指令的多核通信系统,包括第一CPU和第二CPU以及自定义指令处理单元(140);第一CPU用于识别“发送数据”自定义指令并解析数据所在位置,以及发送该自定义指令码和所述数据;第二CPU用于识别“接收数据”自定义指令,以及发送该自定义指令码和接收所述数据;自定义指令处理单元(140)用于解析来自第一CPU的“发送数据”自定义指令码,并根据解析到的内容向第二CPU发送信息以便第二CPU调用“接收数据”自定义指令,自定义指令处理单元(140)解析来自第二CPU的“接收数据”自定义指令码,并根据解析到的内容向第二CPU发送所述数据。2.如权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于所述自定义指令处理单元(140)包括解析单元,且每个CPU对应一个解析单元,该解析单元用于解析来自与该解析单元对应CPU的自定义指令码。3.如权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于所述基于自定义指令的多核通信系统包括第三CPU,自定义指令处理单元(140)包括仲裁单元(144),该仲裁单元(144)用于仲裁第一CPU与第三GPU同时访问第二CPU的顺序,以便解决CPU之间访问沖突问题。4.权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于所述CPU包括中断控制器,用于控制该CPU调用"接收数据"自定义指令。5.如权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于所述"发送数据"自定义指令码包括"目标CPU号"和/或"寄存器可用标志"信息。6.如权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于所述"接收数据"自定义指令码包括"目标寄存器索引"信息。7.如权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于所述自定义指令处理单元(140)接口包括用于输入32位指令码的接口;用于输入指令操作数的接口;用于输出指令操作数的接口;用于表示自定义自定义指令处理单元存在标志且恒为1的输出接口;用于输出目标寄存器Rd索引的接口以及用于表示指令有效标志的输入接口中的一个或多个。8.如权利要求1所述的一种基于自定义指令的多核通信系统,其特征在于,所述CPU包括用于暂存数据的寄存器Rs、寄存器Rt和寄存器Rd。9.如权利要求1所述的一种基于自定义指令的多核通信方法,其特征在于所述CPU为MIPSGPU。10.—种基于自定义指令的多核通信方法,包括以下步骤步骤1,第一CPU识別"发送数据"自定义指令并解析数据所在位置,以及将该数据和该自定义指令码发送到自定义指令处理单元(140);步骤2,自定义指令处理单元(140)解析来自第一GPU的"发送数据"自定义指令码,并根据解析到的内容向第二CPU发送信息以便第二CPU调用"接收数据"自定义指令;步骤3,第二CPU识别"接收数据"自定义指令,以及将该自定义指令码发送到自定义指令处理单元(140);步骤4,自定义指令处理单元(140)解析来自第二CPU的"接收数据"自定义指令码,并根据解析到的内容向第二CPU发送所述数据。11.如权利要求10所述的一种基于自定义指令的多核通信方法,步骤2包括,当第一CPU、第三GPU同时向第二CPU发起通信时,自定义指令处理单元(140)仲裁第一GPU与第三CPU访问第二GPU顺序。12.如权利要求11所述的一种基于自定义指令的多核通信方法,包括自定义指令处理单元(140)在仲裁第一CPU与第三GPU访问第二CPU顺序后,根据仲裁结果打断第一CPU或第三CPU的指令流水线。13.如权利要求12所述的一种基于自定义指令的多核通信方法,包括第二CPU接收到数据后,释放被打断CPU的指令流水线。14.如权利要求10所述的一种基于自定义指令的多核通信方法,其特征在于,步骤2中所述自定义指令处理单元(140)根据解析到的内容向第二CPU发送的信息是中断申请。全文摘要本发明涉及多核通信领域,尤其涉及一种基于自定义指令的多核通信系统及方法。本发明通过自定义指令方式,在多核通信系统中实现CPU之间通信。在CPU(110)向CPU(120)发起通信时,CPU(110)将数据及自定义指令码发送到自定义指令处理单元。自定义指令处理单元解析该自定义指令码并向CPU(120)发起中断,同时打断CPU(130)指令流水线。CPU(120)调用“接收数据”自定义指令并将自定义指令码发送到自定义指令处理单元。自定义指令处理单元解析自定义指令码,并向CPU(120)发送数据,同时释放CPU(130)指令流水线。本发明的系统及方法提高了多核通信效率,具有重要的价值。文档编号G06F15/16GK101510190SQ20091008134公开日2009年8月19日申请日期2009年4月2日优先权日2009年4月2日发明者刘陆陆,霍晓方申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1