用于多处理器系统的指令通信技术 本申请案主张2007年3月23日申请的第60/896,497号美国临时申请案的优先权,所述临时申请案的全部内容特此以引用的方式并入本文中。
【技术领域】
本发明大体上涉及多处理器系统的领域,且更具体地说,涉及用于在具有主处理器及管线式从属处理器的多处理器系统中将指令传送到从属处理器的技术。
背景技术
在复合计算机系统中,共同工作负荷常常分布在多个处理器中且由所述多个处理器并行地执行。多处理器系统通常包括管理多个管线式(即,串联连接的)处理器或共处理器(本文中统称为从属处理器)的主处理器。举例来说,此类多处理器系统可用于处理大量视频数据或渲染图形,尤其是在计算密集型应用中。
然而,在多处理器系统中,主处理器及从属处理器中的每一者可使用以其本机且因此不同的编程语言而格式化的指令(即,命令)及数据来操作。常规上,由主处理器向下游转发到相应从属处理器的指令由每一中间从属处理器以其本机编程语言来解码,以下一下游中间从属处理器的编程语言来重新编码,且接着转发到所述处理器。
对所接收指令进行解码且在以下游中间从属处理器的本机编程语言来重新编码之后将其向下游转发的所述循环持续进行,直到所述指令到达既定或指定从属处理器为止。在指定从属处理器处,以所述处理器的本机编程语言来解码且执行所接收指令。
用于将指令传送到从属处理器的此多步骤例程的复杂性不利地影响多处理器系统的整体性能,且明确地说,限制所述系统的设计灵活性及命令处理量。尽管在此项技术中为了提高从主处理器向管线式从属处理器传送指令的效率而投入了相当大的努力,但进一步改进将为合乎需要的。
因此,此项技术中需要用以有效地实施在多处理器系统中将指令传送到管线式从属处理器的通信的技术。
【发明内容】
本文中描述用于在具有主处理器及管线式从属处理器的多处理器系统中将指令传送到从属处理器的技术。在一实施例中,主处理器向指定从属处理器产生具有标头块及包括指令的有效负载块的传递命令。标头块使用管线式从属处理器所理解的计算机语言来编码,且有效负载块以指定从属处理器所理解的计算机语言来编码。主处理器将传递命令转发到管线式从属处理器中的最外一者,且接着在不进行重新编码的情况下由中间(即,非指定)从属处理器重新传输所述传递命令,直到传递命令到达执行指令的指定从属处理器为止。
在一个设计中,系统使用本发明方法来执行处理视频数据或渲染图形中的至少一者。
下文进一步详细描述本发明的各种方面及实施例。
所述发明内容既不希望也不应被解释为表示本发明的完全范畴及范围,尤其在连同附图考虑时,将从具体实施方式更容易明白这些及额外方面。
【附图说明】
图1展示示范性多处理器系统的框图。
图2展示说明用于图1的多处理器系统中的传递命令的结构的示意图。
图3展示说明用于在图1的多处理器系统中将指令传送到管线式从属处理器的方法的流程图。
为了有助于理解,除了可在适当时添加后缀以区分所述元件之外,已在可能之处使用相同参考数字来指示所述图式所共有的相同元件。所述图式中的图像出于说明性目的而简化且未按比例描绘。预期一个实施例的特征或步骤可在不作进一步叙述的情况下有益地并入其它实施例中。
附图说明本发明的示范性实施例,且因此,不应被解释为限制可承认其它同样有效的实施例的本发明范围。
【具体实施方式】
本文使用术语“示范性”来意指“用作实例、例子或说明”。没有必要将本文描述为“示范性”的任何实施例或设计解释为与其它实施例或设计相比为优选或有利的。
参看图式,图1描绘根据本发明的一个实施例的示范性多处理器系统100的框图。在示范性应用中,系统100可用于处理视频数据及/或渲染图形,以及其它计算密集型数据处理应用。
在一个示范性实施例中,系统100为例如蜂窝式电话、视频游戏控制台、个人数字助理(PDA)、膝上型计算机、具有音频/视频功能的装置等无线通信设备的图形处理单元(GPU)的一部分。
举例来说,GPU可遵照2005年7月28日发布的公众可获得的文献“开放式向量图形规范版本1.0(OpenVG Specification,Version 1.0)”。此文献为用于适合于例如蜂窝式电话及涉及上述无线通信设备的其它装置等手持式及移动装置的2D向量图形的标准。
在所描绘地实施例中,系统100说明性地包括主处理器110及多个(101)管线式从属处理器1201到120K,其使用相应系统接口1261到126K连接,其中K为整数且K≥2。在一个实施例中,系统接口1261到126K中的每一者包括数据总线、地址总线及命令总线(均未图示)。主处理器110及从属处理器1201到120K中的每一者可含有子处理器、存储器、外围装置及支持电路等,出于简洁起见,本文分别将其共同地展示为模块111及1211到121K。
主处理器110及管线式从属处理器1201到120K可形成于例如芯片上系统(SoC)装置的单一集成电路(IC)上。或者,主处理器110及从属处理器1201到120K中的至少一者可形成于单独IC上。
在操作中,主处理器110控制且任选地监视从属处理器1201到120K处的数据处理。主处理器110及从属处理器1201到120K中的每一者可使用不同格式(即,计算机语言)来操作,用于产生或执行内部指令或内部数据交换。
主处理器110包含输入/输出(I/O)模块118,其包括输入缓冲器(IB)112及输出缓冲器(OB)114。对应地,从属处理器1201到120K中的每一者包含相应输入/输出(I/O)模块128,其包括输入缓冲器122及输出缓冲器124。在操作中,I/O模块118及1281到128K促进系统100内或到/自系统100的信息交换。
通过使用接口102,主处理器110的输入缓冲器112可连接到远程处理器、网络或用户控制装置(其共同地展示为装置104)中的至少一者。类似地,通过使用接口107,从属处理器120K的输出缓冲器124K可连接到其它远程处理器、网络或用户控制装置(其共同地展示为装置106)。
在系统100中,经由相应双向系统接口126,先前(即,上游)从属处理器120的输入缓冲器122连接到邻近下游从属处理器的输出缓冲器124,因此形成多个(101)管线式从属处理器1201到120K。举例来说,从属处理器1202的输入缓冲器1222经由系统接口1262连接到从属处理器1201的输出缓冲器1241,且从属处理器1202的输出缓冲器1242经由系统接口1263连接到从属处理器1203(未图示)的输入缓冲器1223。
在一个实施例中,主处理器110的输出缓冲器114经由系统接口1261连接到多个(101)管线式从属处理器120中的最外从属处理器的输入缓冲器,即,连接到从属处理器1201的输入缓冲器1221。在操作中,主处理器110通过产生指令且将所述指令传输到相应从属处理器来管理对从属处理器1201到120K的控制。作为这些指令的既定接受者的从属处理器在下文中被称为指定从属处理器。指令经由系统接口1261从主处理器110的输出缓冲器114传输到最外从属处理器1201的输入缓冲器1221。
为了到达指定从属处理器,指令应被接收且接着由一个或一个以上中间上游从属处理器(即,安置于主处理器与指定从属处理器之间的从属处理器)向下游重新传输或转发。本文中,术语“转发”与“重新传输”可互换地使用。
更具体地说,经由相应系统接口,将来自上游从属处理器的输出缓冲器的指令转发到相应下游从属处理器的输入缓冲器(即,在使用箭头103所说明的方向上转发),所述下游从属处理器接着类似地进一步向下游转发所述指令,直到其到达指定从属处理器为止。
举例来说,当指定从属处理器为从属处理器1203时,从属处理器1201经由系统接口1262将指令向下游转发到从属处理器1202,其接着将指令重新传输到指定从属处理器1203,在此处执行所述指令。
参看图2,为了有效地将指令传送到指定从属处理器,主处理器110产生传递命令200。在一个实施例中,传递命令200指令:(i)每一非指定从属处理器在不进行重新编码的情况下将传递命令转发到相应下游从属处理器(即,在箭头103的方向上重新传输传递命令),且(ii)指定从属处理器执行传递命令中所含有的指令。明确地说,传递命令200可指令非指定从属处理器120将所接收传递命令从其输入缓冲器122复制到所述从属处理器的输出缓冲器124。
在一个实施例中,传递命令200包括标头块210及有效负载块220。标头块210使用所述多个(101)管线式从属处理器中的所有管线式从属处理器1201到120K所理解的计算机语言来编码。本文中,关于针对主处理器及从属处理器所使用的指令及数据的编程语言及格式而共同地使用术语“计算机语言”。
在一个示范性实施例中,标头块210包括数据模块202、204及206。在替代实施例(未图示)中,数据模块202、204及206的内容可形成单一数据模块,或者这些模块中的任何两者的内容可包括于一个数据模块中。
数据模块202含有识别主处理器110的其它命令当中的传递命令200的信息(即,传递命令的ID)。数据模块204含有识别指定从属处理器的信息(例如,指定从属处理器的地址),且数据模块206含有关于有效负载块220的位长度(例如,以字节为单位)的信息。在替代实施例(未图示)中,在标头块210中,数据模块206可在数据模块204之前。
有效负载块220使用指定从属处理器所理解的计算机语言来编码且包括至少一个数据模块222,所述至少一个数据模块222包含由主处理器110产生以用于由相应指定从属处理器执行的指令(展示了数据模块2221到222N,其中N为整数且N≥1)。
在另外的实施例中,传递命令200可指令指定从属处理器通过将预定消息向上游发送到主处理器110(即,在使用箭头105说明的方向上)来确认所述命令的接收或执行。举例来说,为了有效地将此消息传送到主处理器110,传递命令200可指令指定从属处理器(i)在所接收传递命令的数据模块204中将识别指定从属处理器的信息替换为识别主处理器110的信息,(ii)将预定消息包括在有效负载块220中,且(iii)将经修改的(即,答复)传递命令转发到邻近上游从属处理器。
图3描绘说明用于在图1的多处理器系统100中将指令传送到管线式从属处理器120的方法300的流程图。在各种实施例中,方法300的方法步骤以所描绘的次序执行,或者这些步骤或其部分(例如,子步骤312、314、316及318)中的至少两者可同时地、并行地或以不同次序执行。所属领域的技术人员将容易了解,执行其它下文所论述的过程或例程中的至少一部分的次序还可经修改。为了最佳地理解本发明,读者应同时参看图1到图3。
在步骤310处,主处理器110产生传递命令200。说明性地,步骤310包含子步骤312、314、316及318。在所描绘的实施例中,分别地,在子步骤312、314及316期间,主处理器110产生传递命令200的标头块210,且在子步骤318期间,主处理器产生传递命令的有效负载块220。
在子步骤312处,主处理器110产生标头块210的数据模块202。数据模块202含有识别传递命令200的信息,且此信息使用从属处理器1201到120K中的每一者所理解的计算机语言来编码。
在子步骤314处,主处理器110产生标头块210的数据模块204。数据模块204含有识别指定从属处理器(即,从属处理器120K)的信息及用于安置于主处理器与指定从属处理器之间的中间非指定从属处理器(即,从属处理器1201到120K-1)的指令。
明确地说,数据模块204含有使非指定从属处理器在不进行解码的情况下将传递命令200向下游转发到指定从属处理器的请求。在一个实施例中,指令非指定从属处理器将传递命令从相应非指定从属处理器的输入缓冲器复制到从属处理器的输出缓冲器。数据模块204的内容使用从属处理器1201到120K中的每一者所理解的计算机语言来编码。
在子步骤316处,主处理器110产生标头块210的数据模块206。数据模块206含有识别传递命令200的有效负载块220的位长度的信息。类似于数据模块202及204的内容,此信息使用从属处理器1201到120K中的每一者所理解的计算机语言来编码。
在子步骤318处,主处理器110产生传递命令200的有效负载块220。有效负载块220含有用于指定从属处理器的至少一个指令222。有效负载块220的内容(即,指令2221到222N)使用指定从属处理器(例如,从属处理器120K)所理解的计算机语言来编码。
在步骤320处,主处理器110汇编传递命令200且将命令传输到最外从属处理器(例如,从属处理器1201)。
在步骤330处,当最外从属处理器为指定从属处理器时,所述处理器执行命令的有效负载块220中所含有的指令。因此,当最外从属处理器并非为指定从属处理器时,最外从属处理器将传递命令200向下游转发(即,重新传输)到邻近从属处理器(即,从属处理器1202),除非所述从属处理器为指定从属处理器,否则所述邻近从属处理器将命令转发到下一下游从属处理器(即,从属处理器1203)。重新传输传递命令200的所述循环持续进行,直到命令到达指定从属处理器为止。在一个实施例中,在步骤330期间,将所接收的传递命令200在不进行重新编码的情况下从接受非指定从属处理器的输入缓冲器复制到所述处理器的输出缓冲器。
在步骤340处,传递命令200到达指定从属处理器,其执行命令的有效负载块220中所含有的指令。在一个实施例中,此类指令可包括来自主处理器110的确认传递命令的接收或执行的请求。如上文参看图2所论述,来自指定从属处理器的返回通信可包含寻址到主处理器110的经修改的传递命令的有效负载块220中所包括的消息。此命令接着循序地由安置于指定从属处理器与主处理器110之间的从属处理器120重新提交,直到所述命令到达主处理器为止。
在示范性实施例中,方法300可在硬件、软件、固件或其任何组合中以包含一个或一个以上计算机可执行指令的计算机程序产品的形式来实施。当在软件中实施时,计算机程序产品可存储于计算机可读媒体上或使用计算机可读媒体来传输,所述计算机可读媒体包括计算机存储媒体及计算机通信媒体。
术语“计算机存储媒体”在本文中指代适于存储致使计算机执行方法的指令的任何媒体。借助于实例而非限制,计算机存储媒体可包含包括电子存储器装置(例如,RAM、ROM、EEPROM等)在内的固态存储器装置、光学存储器装置(例如,紧凑型光盘(CD)、数字通用光盘(DVD)等)或磁性存储器装置(例如,硬盘驱动器、快闪驱动器、磁带驱动器等),或适于存储计算机程序产品的其它存储器装置,或此类存储器装置的组合。
术语“计算机通信媒体”在本文中指代适于使用(例如)经调制的载波、光学信号、DC或AC电流等将计算机程序产品从一个地方传输到另一个地方的任何物理接口。借助于实例而非限制,计算机通信媒体可包含双绞线、印刷或扁平电缆、同轴电缆、光纤电缆、数字订户线(DSL)或其它有线、无线或光学串行或并行接口,或其组合。
提供对本发明的先前描述以使得所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对本发明的各种修改,且本文中所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它变型。因此,本发明不希望限于本文所描述的实例,而是应符合与本文中所揭示的原理及新颖特征一致的最广泛范围。