Mvp处理器中有dma参与的线程管理方法及装置制造方法

文档序号:6544649阅读:271来源:国知局
Mvp处理器中有dma参与的线程管理方法及装置制造方法
【专利摘要】本发明涉及一种MVP处理器中有DMA参与的线程管理方法,包括如下步骤:将所述DMA虚拟通道与在该硬件内核上运行的软件线程绑定;判断是否进行DMA且软件线程必须等待所述DMA数据返回,如是,执行下一步骤,否则,执行线程中的其他指令;使所述软件内核除虚拟DMA通道外的其他部分进入休眠状态,并释放所述硬件内核;当所述DMA数据返回时,唤醒所述软件线程,在其得到空闲的硬件内核后配置该软件内核绑定的虚拟DMA通道到所述硬件内核。本发明还涉及一种实现上述方法的装置。实施本发明的MVP处理器中有DMA参与的线程管理方法及装置,具有以下有益效果:其硬件资源的使用效率较高。
【专利说明】MVP处理器中有DMA参与的线程管理方法及装置
【技术领域】
[0001 ] 本发明涉及处理器领域,更具体地说,涉及一种MVP处理器中有DMA参与的线程管理方法及装置。
【背景技术】
[0002]在处理器操作过程中,在大多数情况下,都会涉及DMA (Direct Memory Access,直接内存存取),其包括请求、响应、传输和结束等阶段。DMA的作用是将数据由一个地址空间复制到另一个地址空间,例如,移动一个外部内存区块到处理器内部更快的内存区。在传统的DMA设计中,当软件线程发起DMA操作后,该软件线程可以执行其它的操作。这样DMA数据传输和CPU指令可并行执行。但对于有DMA数据依赖的软件线程来说,例如,该软件线程的下一步动作是处理这些通过DMA传输的数据,发起DMA后需要等待DMA数据传输完成才能继续下一步操作。这样软件线程不得不做些无用的操作(例如,执行nop指令)来等待DMA操作的结束。这种无用的等待操作造成硬件资源的浪费,影响软件的运行效率。在传统的处理器领域,该问题的解决由于处理器的内核(或硬件线程资源)的特性而较难,同时由于处理器的性能要求,对该问题的处理也不是非常迫切。一般依靠软件程序员在程序开发过程中尽可能避免这种硬件资源浪费。但是对于MVP处理器(一种具有多个MVP (Multithread Virtual Pipeline)硬件内核的处理器)而言,由于其具有多个处理器硬件内核资源,且由于其设计目的就是要达到较高的性能。所以,解决上述问题不仅是可能的,也是必要的。

【发明内容】

[0003]本发明要解决的技术问题在于,针对现有技术的上述的在执行DMA时其软件线程可能出现等待进而带来硬件内核资源的浪费的缺陷,提供一种不会出现因执行DMA而造成硬件内核资源的浪费的MVP处理器中线程的管理方法及装置。
[0004]本发明解决其技术问题所采用的技术方案是:构造一种MVP处理器中有DMA参与的线程管理方法,所述MVP处理器包括多个硬件内核,一个软件线程在得到空闲的硬件内核并在其上运行时形成一个线程;一个线程配置有一个专用的虚拟DMA通道;所述线程的管理方法包括如下步骤:
A)将所述DMA虚拟通道与在该硬件内核上运行的软件线程绑定;
B)判断是否进行DMA且软件线程必须等待所述DMA数据返回,如是,执行下一步骤,否贝U,执行线程中的其他指令;
C)使所述软件内核除虚拟DMA通道外的其他部分进入休眠状态,并释放所述硬件内
核;
D)当所述DMA数据返回时,唤醒所述软件线程,在其得到空闲的硬件内核后配置该软件内核绑定的虚拟DMA通道到所述硬件内核,形成线程并运行。
[0005]更进一步地,所述步骤C)中进一步包括: Cl)标记所述硬件内核的状态为空闲,使其进入处理器的空闲硬件内核等待队列,并由处理器的硬件线程控制器控制;
C2)标记所述硬件线程原先配置的虚拟DMA通道为忙碌,使所述处理器硬件线程管理器在为其分配软件线程时重新配置新的虚拟DMA通道。
[0006]更进一步地,所述处理器硬件线程控制器在分配空闲的硬件内核时优先分配其虚拟DMA通道空闲的硬件内核。
[0007]更进一步地,所述硬件内核通过与所述硬件线程控制器连接的寄存器标志位表示该硬件内核本身及其原先配置的虚拟DMA通道是否空闲。
[0008]更进一步地,所述DMA数据返回时,通过设置设定的寄存器标志位通知所述硬件线程控制器。
[0009]本发明还涉及一种实现上述方法的装置,所述MVP处理器包括多个硬件内核,一个软件线程在得到空闲的硬件内核并在其上运行时形成一个线程;一个线程配置有一个专用的虚拟DMA通道;所述线程的管理装置包括:
软件线程绑定单元:用于将所述DMA虚拟通道与在该硬件内核上运行的软件线程绑
定;
DMA判断单元:用于判断是否进行DMA且软件线程必须等待所述DMA数据返回,如是,调用软件线程休眠单元;
软件线程休眠单元:用于使所述软件内核除虚拟DMA通道外的其他部分进入休眠状态,并释放所述硬件内核;
软件线程唤醒单元:用于当DMA数据返回时,唤醒所述软件线程,在其得到空闲的硬件内核后配置该软件内核绑定的虚拟DMA通道到所述硬件内核,形成线程并运行。
[0010]更进一步地,所述软件线程休眠单元中进一步包括:
硬件内核标记模块:用于标记所述硬件内核的状态为空闲,使其进入处理器的空闲硬件内核等待队列,并由处理器的硬件线程控制器控制;
DMA通道标记模块:用于标记所述硬件线程原先配置的虚拟DMA通道为忙碌,使所述处理器硬件线程管理器在为其分配软件线程时重新配置新的虚拟DMA通道。
[0011]更进一步地,所述处理器硬件线程控制器在分配空闲的硬件内核时优先分配其原先配置的虚拟DMA通道空闲的硬件内核。
[0012]更进一步地,所述硬件内核标记模块和所述DMA通道标记模块分别通过设置与所述硬件线程控制器连接的寄存器标志位表示该硬件内核本身及其原先配置的虚拟DMA通道是否空闲。
[0013]更进一步地,所述软件线程唤醒单元通过设置设定的寄存器标志位通知所述硬件线程控制器DMA数据已返回。
[0014]实施本发明的MVP处理器中有DMA参与的线程管理方法及装置,具有以下有益效果:由于在执行DMA且在软件线程必须等待DMA数据返回时,将软件线程休眠,同时释放处理器的、该软件线程占用的硬件内核,使其可以被别的软件线程所使用。所以,其硬件资源不会因为软件线程等待DMA数据返回而空置,进而造成硬件资源的浪费。因此,其硬件资源的使用效率较高。【专利附图】

【附图说明】
[0015]图1是本发明MVP处理器中线程的管理方法及装置实施例中的方法流程图;
图2是所述实施例中装置结构示意图。
【具体实施方式】
[0016]下面将结合附图对本发明实施例作进一步说明。
[0017]如图1所示,在本发明的MVP处理器中有DMA参与的线程管理方法及装置实施例中,该线程管理方法包括如下步骤:
步骤Sll在硬件内核上运行软件线程:在本实施例中,MVP处理器是一种新型的处理器,其包括多个硬件内核,这些硬件内核是并行的,可以供与其数量一致的软件线程在其上运行。这些软件线程可以是各种类型的,例如,在传统意义上由CPU处理的数据或控制线程或在传统意义上由GPU处理的图像数据处理线程。MVP并不对其加以区分。为达到此目的,在本实施例所涉及的MVP中,其硬件内核具有较为基本的结构,其他的一些运行线程所需要的资源,是通过软件线程得到硬件资源时进行配置而附属于该硬件内核的,例如,在本实施例中涉及的虚拟DMA通道。在本实施例中,上述硬件内核由硬件线程控制器对其进行控制,将其分配给在系统等待队列中软件线程。软件线程在得到硬件内核后,通过配置运行该软件线程所必需的一些硬件或软件资源,开始在该硬件内核上运行,形成一个流水线对软件线程中的指令进行处理或执行,这种情况被称为形成了一个处理器的线程(此处的线程并不仅仅是特指软件线程)。因此,在本实施例中,一个软件线程在得到空闲的硬件内核并在其上运行时形成一个线程;一个线程配置有一个专用的虚拟DMA通道;在本实施例中,当软件线程开始运行时,将上述DMA虚拟通道与在该硬件内核上运行的软件线程绑定,SP该DMA虚拟通道在与该软件线程一起,在该软件线程完成之前不会改变。即使该软件线程在执行的过程中由于某种原因进入休眠。再次唤醒该线程时,其DMA虚拟通道仍然是之前的那个,不会改变,也不会由于更换为在新的硬件内核上运行而被替换。在本实施例中,DMA虚拟通道可以理解为映射到每个硬件内核的DMA通道,它是和被映射的硬件内核的存储区域是绑定的,因此每个DMA虚拟通道只能看到与之绑定硬件内核的存储区域。同样,当软件在一个硬件内核上运行形成一个软件线程时,软件线程和这个硬件内核的存储区域是绑定的,这种绑定关系是在控制器为软件线程分配空闲的硬件内核时建立或设置的(不管软件在哪个空闲的硬件内核上运行都一样)。因此,一旦软件线程开始运行,软件线程,硬件内核和虚拟DMA通道所看到的存储区域是一致的。这种一致性是由线程控制器维护的。
[0018]步骤S12判断是否在执行DMA且软件线程需等待其数据返回,如是,执行下一步骤,否则,跳转到步骤S16:在上述步骤中,软件线程开始在硬件内核上运行,其运行的方式与通常的情况并无不同,都是依次将软件线程中的指令逐一执行。在本步骤中,就是判断当前执行的指令是否是进行DMA操作,且后续的指令必须等待DMA数据返回后才能执行。如果是,则执行步骤S13 ;否则执行步骤S16。在本实施例中,上述判断的具体方法为当指令在指令处理流水线解码时,发现出现:“DMA启动-> 硬件内核休眠”这样的操作序列或者在指令处理流水线上返现DMA启动,且其后面的指令是多个“Ν0Ρ”,即空操作。
[0019]步骤S13使软件线程休眠:在本步骤中,由于软件线程在等待DMA数据返回,因此其操作对于软件线程或系统而言是毫无意义的,也就是通常所讲的“空操作”,其目的是使得软件线程在不做任何动作的情况,通过等待DMA数据返回过程中的多个操作周期。在这种情况下,软件线程不做任何动作,但是其占用了宝贵的硬件内核,使得硬件内核也处于等待状态中,浪费了资源,同时使得处理器对软件的处理效率降低。为此在本步骤中,使得该软件线程进入休眠状态,具体而言,当运行在某硬件内核上的软件执行“休眠”指令时,软件进程释放它占有的硬件资源进入休眠状态。
[0020]步骤S14标记硬件资源空闲:在本步骤中,由于软件线程进入休眠状态,所以,其使用的硬件内核被释放,为此,设置指定寄存器的标志位,使得硬件线程控制器能够得知该硬件内核当前是空闲的,进而将该硬件内核分配给等待队列中的软件线程。同时,在本实施例中,除了对上述设定寄存器的指定标志位进行置位,以表示其空闲外,还会设置另外一个标志位,表示原先为该硬件内核配置的虚拟DMA通道并没有空闲(在本实施例中,该通道当前被绑定在上述软件线程上,并正在进行DMA数据传输)。这些标记都会传输给上述硬件线程控制器或被上述硬件线程控制器读取。当该硬件线程控制器将上述由于软件线程休眠而空闲的硬件内核配置到另外一个软件线程时,需要为其配置另外的虚拟DMA通道。同样地,该虚拟DMA通道也被绑定于软件线程。值得一提的是,在硬件线程控制器分配硬件内核时,会读取上述两个标志位,其优先使用的是原先配置的虚拟DMA通道空闲的硬件内核。只有在原先配置的虚拟DMA通道空闲的硬件内核已经分配完成之后,才会分配上述需要为其配置另外的虚拟DMA通道的硬件内核。
[0021]步骤S15表示DMA数据返回的标志位被置位,唤醒软件线程:在本步骤中,通过多个操作周期,需要通过DMA得到的数据已经返回,因此,将表示数据取得完成的标志位置位,通知硬件线程控制器。于是,在其控制下,将前面步骤休眠的软件线程唤醒,进入等待队列,等待空闲的硬件内核的出现,将该软件线程分配到该硬件内核上运行,以便完成该线程。实际上,DMA数据返回,说明DMA已经做完,此时,由于软件线程已经休眠,所以在本实施例中,DMA可以被释放,使其能够配置到硬件线程(这些硬件内核可能由于某种原因,没有或暂时没有配置DMA通道,例如,在本实施例中的情况下,由于软件线程应为等待DMA结果而休眠,从而导致硬件内核被释放);也可以不被释放,继续保持和软件线程的绑定,使其在休眠的软件线程被唤醒后配置到分配给该被唤醒软件线程的硬件内核。因此,在软件线程被唤醒时候,被释放的虚拟DMA不需要再和软件线程绑定。因为,如上面步骤中所述,软件线程,硬件内核和虚拟DMA的存储区域是一致的,因此在虚拟DMA被释放,软件线程被唤醒后,尽管软件线程可能运行在和它休眠前不同的硬件内核上,但虚拟DMA返回的数据的目标地址是确定的。所以,软件线程即使使用不同的硬件内核和DMA通道,也是可以继续往下执行的,可以通过线程控制单元将该硬件内核和DMA访问的地址设置为该软件线程的存储地址,就可以直接使用DMA结果数据即可L在本实施例中,DMA完成数据传输后,DMA硬件会发一个唤醒信号给线程控制器,线程控制器根据DMA ID (即DMA的编号)找到与之对应的、休眠的软件线程,并唤醒该软件线程。在实际操作中,完成DMA数据转移的DMA通道被释放,软件线程在被唤醒后重新配置新的虚拟DMA通道(和一个新的软件线程一样,不过其存储区域或DMA可以访问的区域是不变的,还是休眠之前的存储区域)。软件线程在分配硬件内核时指定了存储区域,也就是虚拟DMA通道能够访问的区域当一个软件线程被唤醒时,其存储区域是不变的。当其被唤醒时,虽然其原先的DMA被释放,线程控制器重新为软件线程配置了硬件内核和DMA,但是由于该软件线程的存储区域是已经指定的,所以新配置的硬件内核和DMA的存储区域就必然被指定为该软件线程原先的存储区域。这种情况下,是不是释放DMA看起来没有很大的关系,因为重新配置的DMA的存储地址是一样的;但是,在释放DMA的方式在一些情况下,例如,有多个使用本实施例中方法的软件线程是,有利于其他被释放的硬件线程得到DMA。软件线程休眠时,其存储区域被保存在线程控制器中,这样线程控制器才知道重新配置硬件内核和DMA的具体数据。在另外一些情况下,如果不释放该软件线程的DMA,则仅仅需要将该DMA和软件线程继续绑定在分配的硬件内核上,该硬件内核能够访问的存储地址就是上述软件线程和DMA的存储地址,当然,这也是通过线程控制器配置的。总体上来讲,在本实施例中,选择释放DMA的方法的好处多一些。这是由于这种方法可以兼顾另外一个正在使用本实施例中方法的软件线程。在本实施例中,在释放软件线程休眠后完成数据搬移的DMA的情况下,当唤醒该休眠的软件线程时,分配给该软件线程的硬件内核优选其原先配置的DMA空闲的硬件内核。在本实施例中,所述硬件内核通过与所述硬件线程控制器连接的寄存器标志位表示该硬件内核本身及其原先配置的虚拟DMA通道是否空闲。执行完本步骤后,返回步骤S11。
[0022]步骤S16执行软件线程中后续的指令:在本步骤中,由于判断指令与DMA无关,所以不需要对其采取任何特殊的步骤,按照通常的流水线处理即可。也就是说,本步骤中,处理与DMA无关的其他指令。执行完本步骤后,返回步骤S11。
[0023]本实施例还涉及一种实现上述方法的装置,其结构如图2所示。在本实施例中,上述MVP处理器包括多个硬件内核,一个软件线程在得到空闲的硬件内核并在其上运行时形成一个线程;一个线程配置有一个专用的虚拟DMA通道。图2示出了本实施例中该装置的结构,该装置包括软件线程绑定单元11、DMA判断单元12、软件线程休眠单元13和软件线程唤醒单元14。其中,软件线程绑定单元11用于将所述DMA虚拟通道与在该硬件内核上运行的软件线程绑定;DMA判断单元12用于判断是否进行DMA且软件线程必须等待所述DMA数据返回,如是,调用软件线程休眠单元;软件线程休眠单元13用于使所述软件内核除虚拟DMA通道外的其他部分进入休眠状态,并释放所述硬件内核;软件线程唤醒单元14用于当DMA数据返回时,唤醒所述软件线程,在其得到空闲的硬件内核后配置虚拟DMA通道,形成线程并运行。
[0024]在本实施例中,软件线程休眠单元13中进一步包括硬件内核标记模块131和DMA通道标记模块132。其中,硬件内核标记模块131用于标记所述硬件内核的状态为空闲,使其进入处理器的空闲硬件内核等待队列,并由处理器的硬件线程控制器控制;DMA通道标记模块132用于标记所述硬件线程原先配置的虚拟DMA通道为忙碌,使所述处理器硬件线程管理器在为其分配软件线程时重新配置新的虚拟DMA通道。
[0025]在本实施例中,是通过处理器硬件线程控制器(MVP处理器中现有的硬件控制机构)来对上述各单元进行控制或调用的。其中,在处理器硬件线程控制器分配空闲的硬件内核时优先分配其原先配置的虚拟DMA通道空闲的硬件内核。
[0026]此外,上述硬件内核标记模块131和DMA通道标记模块132分别通过设置与上述硬件线程控制器连接的寄存器标志位表示该硬件内核本身及其原先配置的虚拟DMA通道是否空闲。而软件线程唤醒单元14通过设置设定的寄存器标志位通知所述硬件线程控制器DMA数据已返回。
[0027]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种MVP处理器中有DMA参与的线程管理方法,其特征在于,所述MVP处理器包括多个硬件内核,一个软件线程在得到空闲的硬件内核并在其上运行时形成一个线程;一个线程配置有一个专用的虚拟DMA通道;所述有DMA参与的线程管理方法包括如下步骤: A)将所述DMA虚拟通道与在该硬件内核上运行的软件线程绑定; B)判断是否进行DMA且软件线程必须等待所述DMA数据返回,如是,执行下一步骤,否贝U,执行线程中的其他指令; C)使所述软件内核除虚拟DMA通道外的其他部分进入休眠状态,并释放所述硬件内核; D)当所述DMA数据返回时,唤醒所述软件线程,在其得到空闲的硬件内核后重新配置虚拟DMA通道或配置该软件内核绑定的虚拟DMA通道到所述硬件内核,形成线程并运行。
2.根据权利要求1所述的MVP处理器中有DMA参与的线程管理方法,其特征在于,所述步骤C)中进一步包括: Cl)标记所述硬件内核的状态为空闲,使其进入处理器的空闲硬件内核等待队列,并由处理器的硬件线程控制器控制; C2)标记所述硬件线程原先配置的虚拟DMA通道为忙碌,使所述处理器硬件线程管理器在为其分配软件线程时重新配置新的虚拟DMA通道。
3.根据权利要求2所述的MVP处理器中有DMA参与的线程管理方法,其特征在于,所述处理器硬件线程控制器在分配空闲的硬件内核时优先分配其虚拟DMA通道空闲的硬件内核。
4.根据权利要求3所述的MVP处理器中有DMA参与的线程管理方法,其特征在于,所述硬件线程控制器通过读取来自所述硬件内核的寄存器标志位判断该硬件内核本身及其原先配置的虚拟DMA通道是否空闲;所述步骤D)中,所述线程控制器将所述硬件内核的存储区域或所述硬件内核的存储区域及原先配置的虚拟DMA通道配置为所述软件线程的存储区域。
5.根据权利要求4所述的MVP处理器中有DMA参与的线程管理方法,其特征在于,所述DMA数据返回时,通过设置设定的寄存器标志位通知所述硬件线程控制器。
6.一种MVP处理器中有DMA参与的线程管理装置,其特征在于,所述MVP处理器包括多个硬件内核,一个软件线程在得到空闲的硬件内核并在其上运行时形成一个线程;一个线程配置有一个专用的虚拟DMA通道;所述线程的管理装置包括: 软件线程绑定单元:用于将所述DMA虚拟通道与在该硬件内核上运行的软件线程绑定; DMA判断单元:用于判断是否进行DMA且软件线程必须等待所述DMA数据返回,如是,调用软件线程休眠单元; 软件线程休眠单元:用于使所述软件内核除虚拟DMA通道外的其他部分进入休眠状态,并释放所述硬件内核; 软件线程唤醒单元:用于当DMA数据返回时,唤醒所述软件线程,在其得到空闲的硬件内核后配置该软件内核绑定的虚拟DMA通道到所述硬件内核,形成线程并运行。
7.根据权利要求6所述的装置,其特征在于,所述软件线程休眠单元中进一步包括: 硬件内核标记模块:用于标记所述硬件内核的状态为空闲,使其进入处理器的空闲硬件内核等待队列,并由处理器的硬件线程控制器控制; DMA通道标记模块:用于标记所述硬件线程原先配置的虚拟DMA通道为忙碌,使所述处理器硬件线程管理器在为其分配软件线程时重新配置新的虚拟DMA通道。
8.根据权利要求7所述的装置,其特征在于,所述处理器硬件线程控制器在分配空闲的硬件内核时优先分配其原先配置的虚拟DMA通道空闲的硬件内核。
9.根据权利要求8所述的装置,其特征在于,所述硬件内核标记模块和所述DMA通道标记模块分别通过设置与所述硬件线程控制器连接的寄存器标志位表示该硬件内核本身及其原先配置的虚拟DMA通道是否空闲。
10.根据权利要求9所述的装置,其特征在于,所述软件线程唤醒单元通过设置设定的寄存器标志位通知所述硬件线程控制器DMA数据已返回。
【文档编号】G06F9/48GK103955408SQ201410166208
【公开日】2014年7月30日 申请日期:2014年4月24日 优先权日:2014年4月24日
【发明者】丘正前, 王世好, 陈俊锐, 李晶晶 申请人:深圳中微电科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1