首页> 中国专利> 满足SystemC的处理器中的分布式动态进程生成单元

满足SystemC的处理器中的分布式动态进程生成单元

摘要

本发明提供一种满足SystemC语法的多核处理器的处理单元,包括:动态进程生成单元,用于基于句柄使用地址重新映射来生成动态进程;所述动态进程生成单元包括:SC_SPAWN寄存器组用于存储进程句柄和进程生成命令和进程处理单元地址;动态进程生成引擎根据SC_SPAWN寄存器组中的进程句柄和进程生成命令来控制数据发送引擎发送数据包;数据发送引擎根据来自动态进程生成引擎的发送请求来发送数据包到交换单元适配器;数据接收引擎接收来自交换单元适配器的数据包,确定所述数据包中所包含的内容并提交给动态进程生成引擎。根据本发明的处理单元支持在多核处理器内的分布式的动态进程生成过程。

著录项

  • 公开/公告号CN101770362A

    专利类型发明专利

  • 公开/公告日2010-07-07

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN200910076508.9

  • 发明设计人 陈曦;黄毅;刘祥;张金龙;刘玉东;

    申请日2009-01-06

  • 分类号G06F9/44;G06F9/46;

  • 代理机构北京泛华伟业知识产权代理有限公司;

  • 代理人王勇

  • 地址 100190 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-18 00:05:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-12-16

    未缴年费专利权终止 IPC(主分类):G06F 9/44 专利号:ZL2009100765089 申请日:20090106 授权公告日:20130403

    专利权的终止

  • 2013-04-03

    授权

    授权

  • 2010-09-08

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20090106

    实质审查的生效

  • 2010-07-07

    公开

    公开

说明书

技术领域

本发明涉及一种多核处理器,更具体地,本发明涉及一种在满足SystemC的处理器中基于句柄的分布式动态进程生成方法与单元。

背景技术

近年来,多核处理器技术得到了蓬勃发展。究其原因,主要有以下几点:第一,设计需求;硅的成本越来越低,集成度越来越高,多核的规则结构可简单有效的利用更多的硅面积;第二,业务需求;多媒体业务越来越复杂,要求平台的灵活性和处理性能越来越高,同时还要求功耗保持在允许的范围内,多核处理器可潜在提供最高性能功耗比,可供更高性能的计算和灵活性;第三,上市时间(Time to market)需求;上市时间要求越来越短,多核处理器的集中开发可以满足所需上市时间。

通常,多核有以下两种发展模式。第一类多核处理器不改变现有顺序执行的设计流程和编程模式,只是采用更先进的编译技术来适应多核的架构。多核在这里起的作用仅是代替单核而提供更多的计算功能。目前多数的处理器,无论是单核还是多核,都采用顺序执行的编程模型。在这种模型下,为了支持多任务,引入了支持多任务的操作系统。操作系统可以为进行多任务编程和并行执行代码提供途径。但是,在存在操作系统和多个任务并行存在的情况下,整个嵌入式系统又变得相对十分复杂,调试难度与单核单任务相比大大增加;第二类处理器采用并行语言和编程模式,根据并行语言和编程模式的需要来设计处理器的物理架构。采用这种方式设计的多核处理器能够与并行语言紧密配合,并期望克服第一类处理器调试困难和电量浪费的缺点。

现有的多核处理器都属于第一类,而第二类处理器仍然处于发展初期。SystemC优化的多核处理器属于第二类,它是一种系统化的多核解决方案。采用并行的SystemC作为编程语言,专门设计了针对SystemC语法优化的处理单元。

多核处理器一般由处理单元、各种外设,以及将处理单元和各种外设互联在一起的片上网络构成。片上网络进一步由交换单元和它们之间的连接线构成。

一个完整的应用包括动态进程和静态进程。在设计时,由静态进程映射算法为每一个静态进程分配一个固定的处理单元,现有文献公开的静态进程映射算法比较多。为动态进程分配处理单元的过程称作动态进程映射,对应的算法称作动态进程映射算法。

现有文献中已经公开的动态进程映射方法主要包括:(1)首先发现优先(FirstFree),即从处理单元(1,1)开始顺序搜索,找到第一个空闲处理单元;(2)最近邻居优先(Nearest Neighbor),即围绕父进程所在处理单元,搜索距离最近的一个空闲邻居;(3)最小最大链路负载,这是一种力图减少片上网络链路拥塞的映射算法,力图使得片上网络链路的最大负载最小化;(4)最小平均链路负载,与最小最大链路负载映射算法不同的是这种算法力图使得片上网络链路的平均负载最小化;(5)路径负载,这种算法只考虑对于即将生成的子进程,使得新增路径总负载最小。

选定动态进程映射算法,进程动态生成子进程的具体实现方法一般为:在多核处理器中存在一个专门的处理单元复杂进程生成任务。当一个进程在运行时动态生成子进程时并不自行搜索可用的空闲处理单元,而是请求中央管理处理单元为其选择和分配一个可用的空闲处理单元,中央管理处理单元将所选择的空闲处理单元激活并使其运行子进程所对应的程序指令和数据。

这种集中式的动态生成子进程生成方法并不适合SystemC优化的多核处理器。根据SystemC语法的特点,更适合采用分布式方法:一个进程根据运行需要动态生成子进程,它主动搜索可用的空闲处理单元,将其激活并使其运行子进程所对应的程序指令和数据,子进程运行完成后,释放所占用的资源,重新将所在的处理单元置为空闲。分布式方法需要解决的问题包括:一、在多个父进程同时试图选用某一处理单元作为可用处理单元时会产生竞争冲突,采用软件解决效率较低;二、通过中断激活选中的可用处理单元运行子进程时,运行支持的个数有限;三、父进程通常需要多个子进程全部执行完毕后才能继续,采用传统的软件层同步的方法效率不高。

发明内容

为克服现有基于软件的分布式动态进程生成方法解决竞争冲突和子进程同步整体运行效率低、允许的最大运行子进程数量有限的缺陷,针对SystemC语言的语法特点,本发明提出了在支持SystemC的处理器中的一种基于句柄的分布式动态进程生成方法与单元。

根据本发明的一个方面,提供了一种满足SystemC语法的多核处理器的处理单元,包括:动态进程生成单元,用于基于进程句柄使用地址重新映射来生成动态进程;

所述动态进程生成单元包括:数据接收引擎、数据发送引擎、动态进程生成引擎和SC_SPAWN寄存器组;

其中,所述SC_SPAWN寄存器组用于存储进程句柄、进程生成命令和进程处理单元地址;所述动态进程生成引擎根据SC_SPAWN寄存器组中的进程句柄和进程生成命令并通过所述进程处理单元地址来控制数据发送引擎发送数据包;所述数据发送引擎根据来自动态进程生成引擎的发送请求来发送数据包到交换单元适配器;所述数据接收引擎接收来自交换单元适配器的数据包,确定所述数据包中所包含的内容并提交给动态进程生成引擎。

其中,所述动态进程生成单元通过信号组连接到处理器核交换单元桥,所述信号组用于实现处理器数据和指令总线地址到实际存储器地址的转换。

其中,所述信号组包括存储器的基地址、存储器所在的外设单元的坐标和翻译地址。

其中,所述动态进程生成单元还包括进程状态寄存器,所述动态进程生成引擎维护所述进程状态寄存器:当本地处理器核运行的进程为静态进程,将进程状态寄存器更新为“静态锁定”;当在“空闲”状态下接收到来自其他处理器核的子进程生成请求,将进程状态寄存器更新为“动态锁定”;当一个动态进程执行完毕,将进程状态寄存器更新为“空闲”。

其中,当需要动态生成子进程的父进程搜索可用的处理单元并发送子进程生成请求时,所述动态进程生成单元将可用的处理单元锁定为候选处理单元并发送远程存储器地址映射信息;所述父进程设定子进程的句柄,并向候选处理单元发送进程启动请求并携带进程句柄;候选处理单元执行进程,返回进程句柄。

其中,通过让句柄值等于子进程编号来设定所述子进程的句柄。

其中,所述SC_SPAWN寄存器组包括:

子进程句柄寄存器,存储子进程的句柄的表示;

动态进程生成命令寄存器,本地处理器核向该寄存器写入命令,数据发送引擎根据该寄存器的值执行生成命令;

目的子进程所在处理单元地址、本子进程所在处理单元地址和子进程生成命令执行状态寄存器。

根据本发明的另一个方面,提供了一种满足SystemC语法的多核处理器的处理单元的动态进程生成方法,包括:

步骤10)、需要动态生成子进程的父进程搜索可用的处理单元并发送子进程生成请求时,锁定可用的处理单元为候选处理单元并发送远程存储器地址映射信息;

步骤20)、所述父进程设定子进程的句柄,并向候选处理单元发送携带进程句柄的进程启动请求;

步骤30)、候选处理单元执行进程,返回进程句柄。

其中,步骤10)还包括:所述父进程搜索可用的处理单元前,将处理单元所运行进程更新为静态进程。

其中,步骤10)还包括:若当前远程处理单元的进程状态寄存器为“空闲”,则将进程状态寄存器更新为“动态锁定”;向发送请求的处理单元发送“动态锁定成功”应答,将当前远程处理单元锁定为候选处理单元。

其中,步骤20)还包括:当本地处理器核向动态进程生成命令寄存器写入“远程更新存储器地址映射信息”命令时,通过数据发送引擎向处理器核交换单元桥地址空间转换远程坐标地址所指示的远程处理单元发送的所在动态进程生成单元的寄存器的值。

其中,步骤20)还包括:向远程坐标地址所指示的远程处理单元发送包含“进程启动请求”命令和句柄信息的远程进程启动请求数据包,接收到该数据包的远程处理单元存储接收到的句柄值并触发所在处理单元的处理器核复位。

其中,步骤30)还包括:当远程处理器核写入“远程进程释放”命令,则向远程坐标地址所指示的处理单元发送携带缓存的句柄信息的“远程进程释放”应答,确定对应的子进程完成执行。

根据本发明的处理单元支持在多核处理器内的分布式的动态进程生成过程,可广泛应用于不同的多核处理器中,尤其是应用于SystemC优化的多核处理器中。

附图说明

图1为SystemC优化的多核处理器示意图;

图2为SystemC优化的多核处理器的处理单元示意图;

图3为根据本发明实施例的具有动态进程生成单元的SystemC的多核处理器的处理单元示意图;

图4为根据本发明实施例的动态进程生成单元的实施例结构框图。

具体实施方式

下面结合附图和具体实施例对本发明提供的一种满足SystemC语法的多核处理器中的分布式动态进程生成方法和单元进行详细描述。

针对SystemC优化的多核处理器希望采用SystemC作为多核的软件开发语言。SystemC是C++的扩展库,1999年,EDA业界的Cadence、Synopsys、ARM等公司共同组织开发基于C++的EDA语言,从而诞生了SystemC。在2006年,SystemC正式成为IEEE标准,成为所有EDA软件支持的VHDL、Verilog之后的第三种自然语言。

SystemC能够提供更高的设计效率、更有效的设计流程,从而可以帮助解决集成电路产业面临的爆炸性的复杂度、上市压力、成本上升等问题。

SystemC语言本身是C++的扩展,因此,虽然SystemC目前被广泛应用于集成电路设计中的系统验证,它实际上也可以用来做多核嵌入式开发软件。如果多核处理器支持SystemC语言中的特定语法,那么基于SystemC的多核嵌入式开发将有效简化嵌入式系统的开发难度,增加开发效率,并实现更加有效的处理器功耗管理。

图1是与本申请为同一申请人提出的申请号为200810117019.1的专利申请中的一个满足SystemC的基于二维阵列的8核处理器的示意图。在该申请中公开的SystemC优化的多核处理器具有常见的二维阵列结构,多个交换单元B及其连接线C构成的片上网络。SystemC优化的处理单元H通过交换单元适配器E连接到交换单元S,与其它处理单元或者多个外设A1-A12进行通信。处理单元H不通过其具有的本地资源单元与其它处理单元直接连接。

图2为SystemC优化的多核处理器的处理单元示意图。处理单元包括一个处理器核H0,以及通过本地总线H2与处理器核相连接的可选的定时器组H3、可选的片上存储器H4、可选的处理器核与交换单元适配器桥H5。处理器交换单元适配器桥H5与本地总线H2和交换单元适配器E相连接,是处理器核H1直接与外界通信的通道,用于处理器核直接访问片上其它处理单元和外设单元,并用于处理器核指令和数据总线接口与交换单元适配器之间的通信。交换单元适配器E与处理单元内的片上存储器H4相连接,允许外界访问处理单元内的片上存储器。

多核处理器的SystemC优化的处理单元,还包括一个由SystemC优化的事件处理单元组H61、SystemC优化的先进先出队列单元组H62和SystemC优化的互斥和信号量单元组H63构成的处理器核本地资源单元H6。SystemC优化的事件处理单元组H61、SystemC优化的先进先出队列单元组H62和SystemC优化的互斥和信号量单元组H63分别连接到交换单元适配器E,用于和外界通信。处理器核本地资源单元H6、片上存储器H4、定时器组H3还分别连接到处理器核运行时控制器H8,并通过信号H71、H72、H731、H74、H75向处理器核运行时控制器H8发送处理器暂停和继续执行通知。处理器核运行时控制器H8将这些通知合并后向处理器核输出运行/停止信号H9。

本地资源单元H6的SystemC优化的事件处理单元组H61、SystemC优化的先进先出队列单元组H62和SystemC优化的互斥和信号量单元组H63可以不依赖于本地资源单元内的其它子模块而存在。也就是说,本地资源H6可以包括SystemC优化的事件处理单元组H61、SystemC优化的先进先出队列单元组H62和SystemC优化的互斥和信号量单元组H63的其中一个或者多个。

定时器组H3包括多个定时器,每个定时器向事件处理单元组的对应单元输出一个超时通知信号,多个通知信号构成信号组M1。

事件处理单元组按照SystemC语法的sc_event、sc_event_queue的各种公有函数、wait(...)函数的各种形式以及SC_THREAD和SC_METHOD敏感表实现逻辑电路,用于发送激活和暂停处理器的信号,并允许软件开发工具的映射算法将位于不同处理单元的多个事件处理单元组进行组合,完成多个sc_event或者sc_event_queue语法单元所定义的功能、wait(...)函数的功能、SC_THREAD和SC_METHOD敏感表功能。

同一申请人于2008年7月22日提交的名称为“一种满足SystemC语法的多核处理器”申请号为200810117019.9、2008年7月22日提交的名称为“一种满足SystemC语法的多核处理器的事件处理单元组”申请号为200810117020.1、2008年7月22日提交的名称为“一种满足SystemC语法的多核处理器的互斥和信号量单元组”申请号为200810117018.4以及2008年7月22日提交的名称为“一种满足SystemC语法的多核处理器的先进先出队列单元组”申请号为200810117016.5的申请中,详细描述了上述的满足SystemC语法的多核处理器的不同的结构,上述申请的全部内容通过引用包括在本申请中。

图3示出根据本发明的实施例的多核处理器的SystemC优化的处理单元,它在图2的基础上,添加一个动态进程生成单元H1。H1通过信号H11连接到处理器核H0,通过信号组H12连接到处理器核交换单元桥H5,并且与本地总线H2相连接,还可以连接到交换单元适配器E。

信号组H12的作用是实现处理器数据和指令总线地址到实际存储器地址的转换,因为当运行不同的进程时,处理器总是从指定的总线地址获取数据和指令,而不同的进程则存储于不同的存储器地址中,因此需要动态进程生成单元H1输出信号组H12根据进程的不同来实现不同的数据和指令总线地址到实际存储器地址的转换。一个典型的H12信号组包括:存储器的基地址RBASE,存储器所在的外设单元的坐标(X,Y),翻译地址RTRANS。假设处理器输出地址addr,则对应的存储器地址为:((X,Y)左移32位)加((addr位与RTRANS)加RBASE)。

H1通过信号H11连接到处理器核,通知处理器核产生一般中断或者复位中断,从中断对应的数据和指令总线地址重新执行。

图4为根据本发明的动态进程生成单元H1的的一个示例性结构框图。如图4,根据本发明的动态进程生成单元H1包括:

数据接收引擎H10、数据接收引擎H12、动态进程生成引擎H15、SC SPAWN寄存器组H13、本地总线接口H17和进程状态寄存器H14。其中,所述本地总线接口H17与处理器核本地总线H2和SC SPAWN寄存器组H13连接,数据接收引擎H12与动态进程生成引擎H15和交换单元适配器E连接,数据接收引擎H12与动态进程生成引擎H15和交换单元适配器E连接,动态进程生成引擎H12还连接到SC_SPAWN寄存器组H13和进程状态寄存器H14,并输出一个信号H11给所在处理单元的处理器核。SC_SPAWN寄存器组还输出一组信号H12给处理器核交换单元桥H5。

其中,数据接收引擎H12接收来自交换单元适配器E的数据包,提取所述数据包中包含的净核并提交给动态进程生成引擎H15,净核的具体内容取决于发送该数据包的数据发送引擎。

数据发送引擎H10根据来自动态进程生成引擎H15的发送请求,发送满足交换单元适配器E所要求的格式的数据包。

动态进程生成引擎H15维护进程状态寄存器H14的值,根据本地处理器核H0对SC_SPAWN寄存器组H13的操作结果来控制数据发送引擎H15发送数据包。

一般地,SC_SPAWN寄存器组H13包括:

(1)子进程句柄寄存器H130,表示子进程的句柄;

(2)子进程同步等待寄存器H131,父进程可以通过写该寄存器等待需要同时完成执行子进程全部来完成执行;

(3)动态进程生成命令寄存器H132,本地处理器核向该寄存器写入命令,数据发送引擎H10根据该寄存器的值执行相应的命令;

(4)目的子进程所在处理单元地址H133;

(5)本子进程所在处理单元地址H134;

(6)子进程生成命令执行状态寄存器H138。

动态进程生成单元H1输出信号组H12根据进程的不同实现不同的数据和指令总线地址到实际存储器地址的转换。一个典型的H12信号组包括:存储器的基地址RBASE,来自处理器核交换单元桥H5地址空间转换基地址H135;存储器所在的外设单元的坐标(X,Y),来自处理器核交换单元桥H5地址空间转换远程坐标地址H137;翻译地址RTRANS,来自处理器核交换单元桥H5地址空间转换翻译地址H136。

寄存器状态寄存器H14的值由动态进程生成引擎H15维护。初始化,进程状态寄存器H14的值为“空闲”;当本地处理器核运行的进程为静态进程,则本地处理器核通过动态进程生成命令寄存器H132通知动态进程生成引擎H15将进程状态寄存器H14更新为“静态锁定”;当接收到来自其他处理器核的子进程生成请求,则动态进程生成引擎H15将进程状态寄存器H14更新为“动态锁定”。当一个动态进程执行完毕,本地处理器核通过动态进程生成命令寄存器H132通知动态进程生成引擎H15将进程状态寄存器H14更新为“空闲”。

动态进程生成命令寄存器H132包括以下的典型命令。

1、本地静态锁定:进程状态寄存器H14加电复位后初始化为“空闲”。当本地处理单元运行了一个静态进程时,或者当本地处理器核H0向动态进程生成命令寄存器H132写入“本地静态锁定”命令,则动态进程生成引擎H15将本地进程状态寄存器的值更新为“静态锁定”,代表本处理单元所运行进程为静态进程。

2、发送子进程生成请求:当本地处理单元运行了一个需要动态生成子进程的父进程并且该父进程需要生成子进程时,本地处理单元的处理器核首先搜索可用的处理单元,确定下一个要搜索的远程处理单元后,将该远程初始化远程处理单元的坐标写入远程地址寄存器H137。当本地处理器核H0向动态进程生成命令寄存器H132写入“子进程生成请求”命令,则动态进程生成引擎H15通过数据发送引擎H10向远程坐标地址H137所指示的远程处理单元发送子进程生成请求,此时,数据发送引擎H10发送的数据包的净核为“子进程生成请求”命令。所述远程处理单元的动态进程生成引擎H15通过数据接收引擎H12接收来自其他处理单元的“子进程生成请求”。若当前远程处理单元的进程状态寄存器H14为“空闲”,则远程处理单元将进程状态寄存器H14更新为“动态锁定”,将发送该数据包的处理单元的地址写入其远程坐标地址寄存器H137。并通过数据接收引擎H10向发送请求的处理单元发送“动态锁定成功”应答。若状态为“动态锁定”,则发送“重新尝试锁定”应答,若状态为“静态锁定”,则远程处理单元的“动态锁定失败”应答。

3、更新远程存储器地址映射信息:如果发送子进程生成请求返回的结果是“动态锁定成功”,则当前远程处理单元被锁定为候选处理单元,否则当前远程处理单元不可用,当本地处理器核继续搜索可用的处理单元。当当前远程处理单元被锁定为候选处理单元时,本地处理器核开始更新远程存储器地址映射信息。当本地处理器核H0向动态进程生成命令寄存器H132写入“远程更新存储器地址映射信息”命令时,动态进程生成引擎H15通过数据发送引擎H10向处理器核交换单元桥H5地址空间转换远程坐标地址H137所指示的远程处理单元发送所在动态进程生成单元的寄存器H135、H136、H137的值。接收到该信息的远程处理单元所在动态进程生成单元将这些值输出到H11。

4、启动远程进程:当本地处理器核H0向动态进程生成命令寄存器H132写入“远程进程启动”命令,则动态进程生成引擎H15通过数据发送引擎H10向远程坐标地址H137所指示的远程处理单元发送远程进程启动请求数据包,该数据包除包含“进程启动请求”命令外,还携带句柄信息寄存器H130的值。接收到该请求的远程处理单元的动态进程生成单元将存储接收到的句柄值并输出复位脉冲到H11。该复位脉冲触发所在处理单元的处理器核复位。

5、远程进程释放:当远程处理器核H0向其动态进程生成命令寄存器H132写入“远程进程释放”命令,则其动态进程生成引擎H15通过其数据发送引擎H10向远程坐标地址H137所指示的处理单元发送“远程进程释放”应答并携带缓存的句柄信息。远程坐标地址H137所指示的处理单元接收到该信息后,知道对应的子进程已经完成执行。

根据本发明的实施例的动态进程生成单元H1进行动态进程生成的例子如下:

假设在图1的8核SystemC优化的多核处理器中,静态进程parent_thread是一个父进程,运行于处理单元PE(1,0)中,其SystemC框架代码如下:

int child_thread(const char*strx)

{

   set_state_to_static();

...

}

void parent_thread()

{

int r1,r2;

SC_FORK

sc_spawn(&r1,sc_bind(child_thread,″First″),//thread0

sc_spawn(&r2,sc_bind(child_thread,″second″),//thread1

SC_JOIN

...

return;

}

由SC_FORK..SC_JOIN生成了两个进程,这两个进程同时退出后,SC_FORK..SC_JOIN后面的代码才能执行。

对于进程parent_thread,其动态进程生成单元的进程状态寄存器被set_state_to_static()函数设置为“静态锁定”。

对于SystemC优化的处理器,设计工具自动地将原始的SystemC代码翻译为C形式的代码,此时child_thread(const char*strx)被翻译为两份,在翻译并编译后,对应的二进制代码被存储在主存储器的两个不同空间:空间0和空间1。这里假设A8为主存储器,空间0的起始地址为:位于(1,3)的存储器的地址0x10000,假设空间1的起始地址为:位于(1,3)的存储器的地址0x20000,进一步假设动态进程生成单元H1向处理器核H0发送的信号H12为复位信号,且处理器核的复位向量地址为0。当进程parent_thread执行到SC_FORK..SC_JOIN,则相应的翻译后的代码的执行过程为:

生成进程thread0:

向处理单元PE(1,0)的H134写入0x10,向处理单元PE(1,0)的H137写入0x13,向处理单元PE(1,0)的H136写入0xFFFFF,向处理单元PE(1,0)的H135写入0x10000,向H130写入句柄值0。

若采用最近邻居优先搜索算法,则处理单元PE(0,0)最先被搜索,即向处理单元PE(1,0)的H133写入0x00,向H132写入“子进程生成请求”命令”。

之后,PE(1,0)的动态进程生成引擎H15向PE(0,0)发送一个“子进程生成请求”包,此时,PE(0,0)处于空闲状态,PE(0,0)的动态进程生成引擎H15接收到来自PE(1,0)的“子进程生成请求”包后,将进程状态寄存器H14更新为“动态锁定”,并通过数据接收引擎H10向发送请求的处理单元PE(1,0)发送“动态锁定成功”应答。当PE(1,0)的H13通过动态进程生成引擎H15接收到“动态锁定成功”应答,则将H138置为“成功”。检测到H138置为“成功”后,处理器核向H132写入“远程更新存储器地址映射信息”,将H135-H137发送到PE(0,0)。PE(0,0)接收到来自PE(0,0)的H135-H137后,通过H11输出给PE(0,0)的H5。之后,PE(1,0)向PE(0,0)发送“远程进程启动”数据包,在该数据包中包含子进程0的句柄H130的值。PE(0,0)的动态进程生成引擎接收到该数据包后存储接收到的句柄值并输出复位脉冲到H11,则PE(0,0)的处理器核被重新启动,从位于(1,3)的存储器的地址0x10000读取指令和数据开始执行。当PE(0,0)的处理器核执行子进程0完毕,在退出前,发送“远程进程释放”数据包给PE(1,0),在该数据包中包含子进程0的句柄。

生成进程threadl的生成过程类似。不同的是,此时PE(1,0)的处理器核向处理单元PE(1,0)的H135写入0x20000,向H130写入句柄值1。由于PE(0,0)已经被占用,PE(2,0)将成为第一个被搜索的处理单元。

当进程thread0和进程threadl同时执行完毕时,进程parent_thread才能执行SC_FORK..SC_JOIN后面的代码。因此,在生成完进程thread0和进程threadl后,进程parent_thread向H131写入0x11,表示等待句柄0和句柄1返回。之后读取寄存器H138。在句柄0和句柄1返回之前,读取寄存器H138不能完成,因此进程parent_thread被阻塞在读取寄存器H138。

进程句柄值的获得方法为:让句柄值等于子进程编号。等待句柄N返回即等待句柄值对应的子进程执行完毕。等待句柄N的具体操作为将H131寄存器的比特N写为1。

根据本发明的动态进程生成单元和动态进程生成方法可广泛应用于不同的多核处理器中,尤其是应用于SystemC优化的多核处理器中。

本发明的动态进程生成方法与单元针对SystemC优化的处理器设计,是一个系统化的多进程生成的方法,与一般的多核处理器的动态任务生成过程的不同之处在于:

(1)对于任何多核处理器,动态生成子进程的第一步基于选定的动态进程或者任务映射算法搜索可用的处理单元并将其作为候选处理单元。当不同的父进程同时进行可用的处理单元的搜索时,会产生同时将一个处理单元作为候选单元的竞争冲突,本发明提出的SystemC优化的多核处理器采用的是一种分布式的动态进程生成方法,针对该竞争设计了一种具体的锁定方法。

(2)第二步是触发候选处理单元开始运行子进程的代码,一般步骤是将子进程的代码作为一个中断服务程序。父进程触发子进程所在处理单元的处理器核产生中断,进入相应的中断服务程序从而达到子进程运行的目的。这样做的缺点是处理器核中断向量的数量是有限的,因此只能支持少于中断向量个数个不同子进程在该处理单元上运行。本发明的不同之处在于采用了地址重新映射的方法,从而解决了子进程数量约束。

(3)当生成多个子进程时,父进程可能需要等待所有的子进程都执行完毕返回后才能继续执行。针对这种情况,本发明针对SystemC语法的特点,提出了一种基于句柄的同步方法。该方法是一种高效且在实现时节省硅面积。

最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其它的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号