在mvp处理器中消除纹理延迟和寄存器管理的方法

文档序号:6439468阅读:209来源:国知局
专利名称:在mvp处理器中消除纹理延迟和寄存器管理的方法
技术领域
本发明涉及处理器领域,更具体地说,涉及一种在MVP处理器(MVP :Multi thread Virtual Pipeline,多线程虚拟流水线;MVP处理器是带有MVP核的处理器)中消除纹理延迟和寄存器管理的方法。
背景技术
在中国专利号为201110088661. 0,名为一种实现中央处理器和图形处理器功能的多线程处理器及方法的专利申请中,揭示了一种能够实现CPU和GPU功能的MVP处理器, 其对图像的处理由于专门的硬件图像处理部分和混用的CPU和GPU线程而变得对图像处理较为有效率。但是,在上述的处理器中,当进行图像处理时,特别是运行着色线程(shader thread)时,一旦涉及纹理细节,线程同样需要向MVP核之外的纹理单元发出请求,并等待该纹理单元返回数据;而纹理单元通常会向外界的内存要求数据并进行处理,之后将数据返回发出要求的线程。在这个过程中,该线程等待数据返回。由于该线程在运行中,所以在等待过程中,该线程实际占据了内核的处理时隙而未做出动作。这导致了资源的浪费及能量的消耗。由于上述数据的返回时间较长,通常会导致该线程的延迟非常长,甚至可能导致着色线程的停滞。这种停滞减小了可编程的统一着色流水线的效率并导致了处理器的性能的退化。

发明内容
本发明要解决的技术问题在于,针对现有技术的上述在实现GPU功能时可能出现的资源及能量较为浪费、延迟较长缺陷,提供一种在实现GPU功能时资源及能量较为节省、 处理器性能不会退化的在MVP处理器中消除纹理延迟和寄存器管理的方法。本发明解决其技术问题所采用的技术方案是构造一种在MVP处理器中消除纹理延迟的方法,包括如下步骤
A)MVP处理器开始运行渲染主程序,对执行渲染处理的所有线程关闭硬件中断使能,禁止其硬件中断;
B)将MVP处理器中各MVP硬件核的寄存器按照设定的长度进行分段,得到多个长度相同的寄存器组,并将所述寄存器组绑定在所述MVP的内核;
C)着色线程(shaderthread)发出纹理细节请求后,让出其占有的处理时隙(也就是 MVP处理器的处理引擎或者说是处理引擎及其占用处理器的时隙)给等待队列中准备好的线程运行,并设置返回时的程序计数器值;
D)纹理细节返回,所述着色线程等待空闲的处理时隙并在所述程序计数器值所指向处重新开始运行。在本发明所述的一种在MVP处理器中消除纹理延迟的方法中,所述步骤B)中进一步包括
Bi);将所述MVP核内的1 个寄存器分别以16个为一段分组;B2)所述寄存器组在所述线程建立并首次发射到等待队列时按照执行CPU功能的内核分配两组而着色线程分配一组的规则配置到所述线程。在本发明所述的一种在MVP处理器中消除纹理延迟的方法中,所述MVP处理器包括至少一个硬件核,所述步骤Bi)中将所述至少一个硬件核中的寄存器分别分组。在本发明所述的一种在MVP处理器中消除纹理延迟的方法中,所述步骤B2)中包括所述线程建立时通过硬件将所述寄存器段的初始地址和所述线程识别码(线程ID)绑
定在一起。在本发明所述的一种在MVP处理器中消除纹理延迟的方法中,所述着色线程运行时使用所述线程识别码访问所述与该线程绑定的寄存器组。在本发明所述的一种在MVP处理器中消除纹理延迟的方法中,所述步骤C)中,进一步包括
Cl)所述着色线程发出纹理细节请求;
C2)所述着色线程及其绑定的寄存器端一起退出处理器的处理时隙;C3)排在待运行队列中的第一个线程取得所述处理时隙并开始运行。在本发明所述的一种在MVP处理器中消除纹理延迟的方法中,所述步骤D)进一步包括
Dl)由设置在所述MVP核外的纹理单元取得所述要求的纹理细节并通过所述着色线程的线程识别码将其存储在所述MVP内核的内存中;
D2)所述纹理单元通知所述着色线程该纹理请求的状态,所述着色线程取得所述程序计数器值,等待所述处理时隙出现空闲;
D3)所述着色线程在所述空闲的处理时隙上由所述程序计数器值指向的程序处开始重新运行。本发明还涉及一种在MVP处理器中用于图像处理线程的寄存器管理方法,所述线程包括在线程建立时配置的寄存器,所述控制方法包括如下步骤
MMfMVP处理器中事先分组的寄存器以组的方式整体绑定到内核(kernel),并在所述内核(kernel)形成的线程(thread)完成之前保持所述寄存器组与所述线程的从属关系; N)所述线程运行完毕后,所述寄存器组作为一个整体释放回所述MVP处理器。在本发明所述的在MVP处理器中用于图像处理线程的寄存器管理方法中,所述线程建立并首次发射到等待队列时通过硬件将所述寄存器组的地址和所述MVP处理器赋予所述线程的线程识别码绑定在一起。在本发明所述的在MVP处理器中用于图像处理线程的寄存器管理方法中,所述着色线程运行时使用所述线程识别码访问所述与该线程绑定的寄存器。实施本发明的在MVP处理器中消除纹理延迟和寄存器管理的方法,具有以下有益效果由于在等待外部硬件返回纹理细节时,将着色线程及其绑定的寄存器暂停且将处理时隙让给队列中的其他线程,而在细节返回时将数据直接写入到上述着色线程的内存中, 并在处理时隙空出时开始重新运行该着色线程。所以,其有效利用了纹理细节的等待时间且不需要重新建立线程,从而在实现GPU功能时资源及能量较为节省、处理器性能不会退化。


图1是本发明在MVP处理器中消除纹理延迟和寄存器管理的方法实施例中MVP处理器的结构示意图2是所述实施例中消除纹理延迟的方法流程图; 图3是所述实施例中寄存器分组及绑定线程的流程图; 图4是所述实施例中线程让出处理时隙的流程图; 图5是所述实施例中线程重新运行的流程图; 图6是所述实施例中着色线程的数据传输示意图。
具体实施例方式下面将结合附图对本发明实施例作进一步说明。如前所述,本发明实施例是在一个MVP处理器上实现的消除纹理延迟和寄存器管理的方法,而该MVP处理器如图1所示,该MVP处理器是实现中央处理器和图形处理器功能的多线程处理器,该多线程处理器包括图形固定功能处理模块11、多线程并行中央处理模块和存储模块;在图1中多线程并行中央处理模块包括两个MVP (Multi thread Virtual Pipeline)核,即MVPO 12和MVPl 13 ;而存储模块包括图1中的L2缓存14和DDR2 15,这些存储器通过总线与上述图形固定功能处理模块11及多线程并行处理模块连接,用于为图形固定功能处理模块11和多线程并行中央处理模块提供统一的储存空间进行数据的存储、缓冲或/和交互;而图形固定功能处理模块11用于图形处理中数据的固定功能处理; 多线程并行中央处理模块则用于通过统一的线程调度实现程序处理功能和图形处理中的数据的可编程处理功能,并将已经过可编程处理功能的图形数据通过存储模块(具体来讲, 是通过L2缓存14)与图形固定功能处理模块11进行交互。此外,上述图形固定功能处理模块11是独立于上述MVP核(12、13)的硬件结构。关于该MVP处理器的更具体的结构及操作细节,请参见中国专利号为201110088661. 0,名为一种实现中央处理器和图形处理器功能的多线程处理器及方法的专利文件,在此不再赘述。如图2所示,在本实施例中,由于在实现GPU功能时需要运行着色线程,而着色线程需要对上述图形固定功能处理模块11提出纹理细节请求,并在等待该纹理细节返回是进入等待状态,进而带来资源及能量的浪费以及处理器性能的退化。为此,采用对上述两个内核(MVP0和MVP1)中的寄存器进行管理并对线程队列进行调配的方法来消除上述缺陷, 具体步骤如下
步骤S21运行渲染主程序,并对其中线程关中断在本步骤中,MVP处理器开始运行渲染主程序,对执行渲染处理的所有线程关闭中断使能,禁止其中断。也就是说,本步骤就是在MVP处理器中进入了统一渲染构架进行图形处理;在MVP处理器中除了留出一部分处理器资源用于CPU功能外,其余处理器资源都会用于GPU功能中的渲染处理。这部分资源用于运行实现GPU功能的线程。而在这些线程中,不允许中断的出现,为此,在本实施例中,在进入同一渲染功能构架的时候,就将这些实现GPU功能的线程禁止,使其在运行过程中不会被中断。步骤S22对处理器硬件核中的寄存器分组,并在线程建立并首次发射时将一组寄存器绑定到一个线程在本步骤中,将MVP处理器中各MVP核的寄存器按照设定的长度进行分段,得到多个长度相同的寄存器组,并将得到的寄存器组在所述线程建立时绑定在所述线程;当然一般来讲,在线程建立并被发射到等待队列时,一个寄存器组被绑定在上述线程;而在线程运行过程中,该寄存器组与线程之间的关系是不会改变的;在线程运行过程中,着色线程使用线程识别码访问所述与该线程绑定的寄存器或寄存器组;当该线程结束时,该寄存器组仍然以一个寄存器组的方式被释放,等待被绑定在下一个线程上。关于MVP 处理器中的核及其内部的寄存器具体的分段方法,在稍后有较为详细的描述。在本步骤中, 一个较为关键的特点是,所有寄存器组的长度是同样的、事先设定的(留出用于CPU功能的那部分寄存器除外)。步骤S23发出纹理请求,设置返回程序计数器值并让出处理时隙在本步骤中,着色线程发出纹理细节请求后,设置其返回的指令点,即设置其返回的程序计数器(PC)值, 之后,该着色线程让出其占有的处理时隙给等待队列中准备好的线程运行;在本步骤中,上述着色线程是在同一渲染架构下的一种线程,其向MVP处理器的纹理单元发出上述纹理请求,要求纹理细节;上述纹理单元是位于MVP核外的一个独立的硬件结构;而上述等待队列中的准备好的线程实际上也是在同一渲染构架下的其他线程,这些线程同样是用于实现 GPU功能的,也就是说,这些等待运行的线程同样是用于图像处理的线程。而上述着色线程虽然让出处理时隙,但是,其线程与绑定的寄存器组的关系仍然存在并有效,寄存器组并没有被释放,其中的数据仍然是存在的。步骤SM纹理细节返回,在空闲的处理时隙及返回程序计数器值指向位置开始运行线程在本步骤中,当纹理细节数据由纹理单元返回时,这些数据被直接存入上述绑定在线程上的内存;当这些数据存入后,该着色线程开始等待空闲的处理时隙,一旦空闲的处理时隙出现,该线程就在上述程序计数器值所指向的指令处重新开始运行,也就是有上述程序计数器值指向的指令开始运行。值得一提的是,在本步骤中,当空闲处理时隙出现时,运行的并不是等待队列中的线程,而是上述的、在某种意义上说是挂起且接收到纹理细节的着色线程。在本实施例中,对于上述步骤而言,还可以进一步细化已达到更好的操作效果或更适于在MVP处理器中应用,例如,寄存器组的形成、处理时隙的让出等等。下面就几个较为重要的步骤进一步描述,如图3所示,上述步骤S22进一步包括
步骤S31将处理器每个硬件核中的寄存器分别按照16个为一段分组正如前面所述, 在本实施例是在MVP处理器上实现的。在本实施例中,该MVP处理器包括了两个硬件核, MVPO和MVP1,每个硬件核各有32bit的寄存器1 个(关于处理器内核及寄存器的结构, 请参见中国专利号为201110088661. 0,名为一种实现中央处理器和图形处理器功能的多线程处理器及方法的专利文件)。在本实施例中,上述寄存器的分配是将所述MVP硬件核内的1 个寄存器分别以16个为一段分组。当对上述寄存器组进行分配时,如果一个内核 (kernel)执行的CPU功能,则该内核将被分配两组寄存器,而着色线程将被分配一组寄存器。这样,当MVP处理器内所有的8个内核都在执行CPU功能时,128个寄存器只能分配到 4个内核,剩余的4个内核要求等到分配到寄存器组的内核运行完成并释放寄存器组时,才能分配到寄存器组并运行;而当MVP内所有的8个内核都在是着色器(Shader)时,1 个寄存器则可够8个内核.因此,这8个着色器(shader)内核被动态地激活并成为MVP的4个线程开始运行时,它们既不需要等待别的内核释放寄存器组,而且由于其绑定的寄存器组,
7当其在运行中停止或再次重入时,也不需要对寄存器组中的内容进行内容备份(context backup)和内容重载(context restore)。值得一提的是,在本实施例中,线程(thread)的建立就是将上述MVP内核(kernel)及其相关数据(包括渲染器shader的配置)配置到空闲的处理器时隙或处理引擎中,使得处理器(更具体而言是处理时隙或引擎)可以按照设定的渲染功能对数据进行处理。从这个角度而言,上述分组后的寄存器组既可以说绑定在内核 (kernel)上的,也可以说是绑定在线程(thread)上的,这种特性使得线程在暂停或重入时能够减少许多动作,进而节省操作时间及处理器资源。步骤S32在建立线程并首次发射时,通过硬件赋予线程识别码及已分组的寄存器起始地址在MVP处理器中,当线程建立时,由于MVP处理器的特性,将给建立的线程配置一定的寄存器,以实现其本地存取的性能,进而减少数据在处理器内核中的传输并达到降低能耗、加快处理速度的目的。在本步骤中也不例外,但不同的是,处理器通过硬件将线程识别码(即线程ID)和已经分组的寄存器的起始地址(base address)绑定在一起,并通过指令通知该线程,从而将将该地址上的寄存器组配置到该线程。同时,在该线程没有运行完毕时,该寄存器组不会被该线程释放,也就是该寄存器组在线程存在期间一直属于该线程专有。在本实施例中,上述线程是在统一渲染构架下的线程,用于处理图像数据,而用于处理 CPU功能的线程则不具有该特性。而在步骤S23中,如图4所示,又进一步包括
步骤S41着色线程发出纹理请求在本步骤中,由于着色线程的需要,其向外部的纹理单元发出纹理请求,要求外部的纹理单元返回纹理细节。步骤S42着色线程设置返回的程序计数器值,并与其绑定的寄存器一起让出处理时隙当上述请求发出后,着色线程开始设置返回的程序计数器值,便于在返回时延续运行;当上述程序计数器值设置好后,该着色线程让出所占用的处理时隙。也就是说,在本步骤中,在某种意义上来说,着色线程在本来应该占用处理时隙等待的时候,与其配置的本地寄存器一起被挂起,让出了处理时隙。此时,该寄存器组中的内容没有被清空,而是一直被保持,所以在线程重入时,也不需要重新取得该寄存器组中的这些数据。这是本实施例中一个特点,能够减少操作时间并节省资源。步骤S43等待运行线程队列中的第一个线程在该处理时隙上运行由于上述步骤中着色线程让出了处理时隙,在本步骤中,至少出现了一个空闲的处理时隙,为此,按照MVP 处理器的规定,在等待运行的线程队列中取出一个线程并使其使用该处理时隙,通常,这个线程是排列在该队列的第一个线程。在本实施例中,上述等待运行的队列中的线程同样是在统一渲染架构下的图形处理线程。所以,在本实施例中,可能会出现不止一个着色线程让出处理时隙的情况,也就是说,在同一时间上,会出现多个着色线程及配置给该线程的本地寄存器被挂起。此外,在上述步骤S24中,如图5所示,又进一步包括
步骤S51纹理细节返回并写入内存在本步骤中,被要求的纹理细节数据由外部的纹理单元返回,这些数据返回时直接存入与该着色线程绑定的寄存器内。由于该线程在发出请求时将其线程ID通知了纹理单元,所以在纹理数据返回时,纹理单元直接使用该线程ID 将纹理数据存储在该MVP核的内部存储器之中,与其他数据一样,这些数据也是通过L2缓存存入的。同时线程与寄存器之间绑定的关系使得该着色线程在重入是也不需要处理器再次为其重载(restore)本地的寄存器,这使得该着色线程处理完成的时间得到较大幅度的缩短,从而提高了效率并节省了能源。步骤S52该着色线程取得返回程序计数器值并等待空闲的处理时隙在本步骤中,得到纹理数据的照射线程取出在步骤S42中设置的PC值,找到其对应的指令,并等待空闲的处理时隙。值得一提的是,在本步骤中,上述着色线程并没有进入通常的等候运行的队列,而是单独存在的,只要一有空闲的处理时隙,就会开始重新运行。也就是说,其优先级高于上述等待运行的线程队列中的线程。当然,在其他实施例中,也可以将其排列在队列中等待,但是,这可能会带来着色线程的完成时间较长的问题。步骤S53该着色线程从程序计数器值指向位置在空闲的处理时隙上开始重新运行在本步骤,该着色线程开始重新运行。图6示出了本实施例中统一渲染构架下的着色线程的数据流向或该着色线程在统一渲染构架上的一个大致上的示意图。在图6中,如果一个着色线程在未提出纹理请求时,其处于图6中的统一渲染构架位置;当其提出纹理请求并让出处理时隙后,其处于图6 中的混合程序调度位置,注意,此时与其绑定的寄存器(图6中的混合寄存器文件)仍保持与该线程的关系,见图6中的虚线;同时,纹理请求向纹理单元提出,纹理单元向外接的主存储器取得纹理数据;当纹理数据取得后,纹理单元通过tex. status信号通知统一渲染处理架构纹理细节的状态,使得统一渲染处理架构纹得知该纹理处理细节已取得并通过纹理单元、L2 cache写入统一渲染构架,按照MVP所特有的直接存储到该处理器核的内存中;之后,该着色线程在得到空闲的处理时隙后返回统一渲染构架处。在本实施例中,还涉及一种在MVP处理器中用于图像处理线程的寄存器管理方法,所述线程包括在线程建立时配置的寄存器,所述控制方法包括如下步骤将MVP处理器中事先分组的寄存器以组的方式整体绑定到所述线程,并在所述线程完成之前保持所述寄存器组与所述线程的从属关系;所述线程运行完毕后,所述寄存器组作为一个整体释放回所述MVP处理器。所述线程建立时通过硬件将所述寄存器组的起始地址(base address)和所述MVP处理器赋予所述线程的线程识别码绑定在一起。所述着色线程运行时使用所述线程识别码访问所述与该线程绑定的寄存器。也就是说,上述在MVP处理器中用于图像处理线程的寄存器管理方法实际上就是上述消除纹理延迟中的寄存器管理方法,关于其具体内容可以参考上面的描述,但是,该寄存器管理方法又不仅仅局限与纹理处理或着色线程,实际上,只要是需要向外部(即处理器硬件核的外部)要求数据,等待时间又较长的图形处理线程,均可以使用该寄存器的管理方法。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种在MVP处理器中消除纹理延迟的方法,其特征在于,包括如下步骤A)MVP处理器开始运行渲染主程序,对执行渲染处理的所有线程关闭硬件中断使能,禁止其硬件中断;B)将MVP处理器中各MVP硬件核的寄存器按照设定的长度进行分段,得到多个长度相同的寄存器组,并将所述寄存器组绑定在所述MVP的内核;C)着色线程发出纹理细节请求后,让出其占有的处理时隙给等待队列中准备好的线程运行,;D)纹理细节返回,所述着色线程等待空闲的处理时隙并在所述程序计数器值所指向处重新开始运行。
2.根据权利要求1所述的在MVP处理器中消除纹理延迟的方法,其特征在于,所述步骤B)中进一步包括Bi);将所述MVP核内的1 个寄存器分别以16个为一段分组; B2)所述寄存器组在所述线程建立并首次发射到等待队列时按照执行CPU功能的内核分配两组而着色线程分配一组的规则配置到所述线程。
3.根据权利要求2所述的在MVP处理器中消除纹理延迟的方法,其特征在于,所述MVP 处理器包括至少一个硬件核,所述步骤Bi)中将所述至少一个硬件核中的寄存器分别分组。
4.根据权利要求3所述的在MVP处理器中消除纹理延迟的方法,其特征在于,所述步骤B2)中包括所述线程建立时通过硬件将所述寄存器组的起始地址和所述线程识别码绑定在一起。
5.根据权利要求4所述的在MVP处理器中消除纹理延迟的方法,其特征在于,所述着色线程运行时使用所述线程识别码访问所述与该线程绑定的寄存器组。
6.根据权利要求5所述的在MVP处理器中消除纹理延迟的方法,其特征在于,所述步骤C)中,进一步包括Cl)所述着色线程发出纹理细节请求;C2)所述着色线程及其绑定的寄存器端一起退出处理器的处理时隙; C3)排在待运行队列中的第一个线程取得所述处理时隙并开始运行。
7.根据权利要求6所述的在MVP处理器中消除纹理延迟的方法,其特征在于,所述步骤D)进一步包括Dl)由设置在所述MVP核外的纹理单元取得所述要求的纹理细节并通过所述着色线程的线程识别码将其存储在所述MVP内核的内存中;D2)所述纹理单元通知所述着色线程该纹理请求的状态,所述着色线程取得所述程序计数器值,等待所述处理时隙出现空闲;D3)所述着色线程在所述空闲的处理时隙上由所述程序计数器值指向的程序处开始重新运行。
8.一种在MVP处理器中用于图像处理线程的寄存器管理方法,所述线程包括在线程建立时配置的寄存器,其特征在于,所述控制方法包括如下步骤M)将MVP处理器中事先分组的寄存器以组的方式整体绑定到内核,并在所述内核形成的线程完成之前保持所述寄存器组与所述线程的从属关系;N)所述线程运行完毕后,所述寄存器组作为一个整体释放回所述MVP处理器。
9.根据权利要求8所述的在MVP处理器中用于图像处理线程的寄存器管理方法,其特征在于,所述线程建立并首次发射到等待队列时通过硬件将所述寄存器组的地址和所述 MVP处理器赋予所述线程的线程识别码绑定在一起。
10.根据权利要求9所述的在MVP处理器中用于图像处理线程的寄存器管理方法,其特征在于,所述着色线程运行时使用所述线程识别码访问所述与该线程绑定的寄存器。
全文摘要
本发明涉及一种在MVP处理器中消除纹理延迟的方法,包括如下步骤MVP处理器开始运行渲染主程序;将MVP处理器中各MVP内核的寄存器按照设定的长度进行分段,得到多个长度相同的寄存器组,并将所述寄存器组在所述内核开始时绑定在所述内核;着色线程发出纹理细节请求后,让出其占有的处理时隙,并设置返回时的程序计数器;纹理细节返回,所述着色线程重新开始运行。本发明还涉及一种在MVP处理器中用于图像处理线程的寄存器管理方法。实施本发明的在MVP处理器中消除纹理延迟和寄存器管理的方法,具有以下有益效果在实现GPU功能时资源及能量较为节省、处理器性能不会退化。
文档编号G06F9/38GK102520916SQ201110384569
公开日2012年6月27日 申请日期2011年11月28日 优先权日2011年11月28日
发明者丘正前, 梅思行, 王世好 申请人:深圳中微电科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1