CN101739242A - 一种流数据处理方法及流处理器 - Google Patents
一种流数据处理方法及流处理器 Download PDFInfo
- Publication number
- CN101739242A CN101739242A CN200910188409A CN200910188409A CN101739242A CN 101739242 A CN101739242 A CN 101739242A CN 200910188409 A CN200910188409 A CN 200910188409A CN 200910188409 A CN200910188409 A CN 200910188409A CN 101739242 A CN101739242 A CN 101739242A
- Authority
- CN
- China
- Prior art keywords
- thread
- processing engine
- data
- task
- local storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种流数据处理方法,包括如下步骤:得到数据中指示其所属任务的程序指针,并依据所述程序指针配置一个线程处理引擎;多个线程引擎同时处理所述任务不同时段的数据或多个线程引擎同时处理所述不同任务的数据;判断是否还有数据未处理,如有,返回上述第一步骤;如没有,退出本次数据处理。本发明还涉及一种用于处理流数据的处理器。实施本发明的一种流数据处理方法及流处理器,具有以下有益效果:可以花费较小的代价来达到较高的性能,其性价比较高。
Description
技术领域
本发明涉及数据处理领域,更具体地说,涉及一种流数据处理方法及流处理器。
背景技术
电子技术的发展对处理器提出越来越高的需求,通常集成电路工程师通过增加时钟速度、硬件资源以及特殊应用功能来为使用者提供更多或更好的性能。这种做法在一些应用场合,特别是移动应用时并不是太恰当。通常,处理器时钟的原始速度的提高并不能打破处理器由于访问储存器及外设速度的限制而带来的瓶颈。对于处理器而言,增加硬件需要大量的该处理器在使用中的更高的使用效率,由于ILP(Instruction Level Parallelism)的缺少,上述增加硬件通常是不可能的。而使用特殊的功能模块又会带来对于该处理器应用范围的限定以及对产品上市时间的拖延。特别是对于现在使用广泛的流媒体而言,因其使用的范围较广,尤其是在终端设备中,大都用于采用电池供电的便携式移动终端,其上述问题更加突出。单独提高硬件性能,例如增加时钟频率、增加处理器中核的数量,虽然可以在一定程度上解决问题,但是可能带来成本及耗电量的增加,其代价太大,其性价比不高。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述成本及耗电量的增加,其代价太大,性价比不高的缺陷,提供一种性价比较高的流数据处理方法及流处理器。
本发明解决其技术问题所采用的技术方案是:构造一种流数据处理方法,包括如下步骤:
A)得到数据中指示其所属任务的程序指针,并依据所述程序指针配置一个线程处理引擎;
B)多个线程引擎同时处理所述任务不同时段的数据或多个线程引擎同时处理所述不同任务的数据;
C)判断是否还有数据未处理,如有,返回步骤A);如没有,退出本次数据处理。
在本发明所述的流数据处理方法中,所述步骤A)进一步包括:
A1)将同一个任务中不同时段的数据或多个任务的数据分别分配到不同的、空闲的、通过虚拟直接存储器访问通道与所述线程处理引擎连接的本地存储单元中。
在本发明所述的流数据处理方法中,所述步骤A)进一步包括:
A2)将同一任务分配到所述多个线程处理引擎;
A3)初始化每个线程处理引擎,通过设置存储指针使其通过所述虚拟直接存储器访问通道与一个本地存储单元连接;
A4)所述多个线程处理引擎同时处理与其连接的本地存储单元中数据。
在本发明所述的流数据处理方法中,所述步骤A)进一步包括如下步骤:
A2′)将多个任务分别分配到所述多个线程处理引擎;
A3′)初始化每个线程处理引擎,通过设置存储指针使其通过所述虚拟直接存储器访问通道与一个本地存储单元连接;
A4′)所述多个线程处理引擎同时处理与其连接的本地存储单元中数据。
在本发明所述的流数据处理方法中,所述步骤C)进一步包括:
C1)释放通过所述虚拟直接存储器访问通道与所述多线程处理引擎连接的本地存储单元;
C2)判断未连接到多个线程处理引擎的本地存储单元中是否存在未处理数据,如有,返回步骤A);如无,执行步骤C3);
C3)释放所有资源,结束本次数据处理。
在本发明所述的流数据处理方法中,所述线程处理引擎的数量为4个,所述本地存储单元的数量为4个或8个。
在本发明所述的流数据处理方法中,还包括如下步骤:接收到所述任务或硬件发出的中断请求时,中断分配给所述任务的线程处理引擎的处理,执行中断处理程序。
在本发明所述的流数据处理方法中,还包括如下步骤:当任意一个正在运行的线程处理引擎需要等待较长时间,释放该线程处理引擎,并将其配置到其他正在运行的同一个或不同的任务中。
本发明还涉及一种用于处理流数据的处理器,包括:
并行的多个线程处理引擎:用于处理被分配给该线程处理引擎的任务或线程;
管理单元:用于取得、判断和控制所述多个线程处理引擎的状态,将处于等待队列中的线程或任务分配到所述多个线程处理引擎中;
本地存储区域:用于存储所述线程处理引擎处理的数据,配合所述线程处理引擎完成数据处理。
在本发明所述的处理器中,还包括用于数据及线程缓冲、指令缓冲的内部存储系统以及用于存储所述并行处理器的各种状态的寄存器。
在本发明所述的处理器中,所述线程处理引擎包括算术逻辑运算单元以及与所述算术逻辑运算单元对应的乘加器。
在本发明所述的处理器中,所述本地存储区域包括多个本地存储单元,所述本地存储单元在所述线程处理引擎工作时被配置对应于所述线程处理引擎。
在本发明所述的处理器中,所述线程处理引擎为4个,所述本地存储单元为8个,所述线程处理引擎工作时任意4个本地存储单元被分别配置与所述线程处理引擎一一对应。
在本发明所述的处理器中,,所述管理单元包括:
软件配置模块:用于依据起始程序指针为所述线程处理引擎设置其任务;
任务初始化模块:用于设置所述任务的本地存储区域指针和全局存储区域指针;
线程配置模块:用于设置一个任务的优先级和运行模式;
中断处理模块:用于处理所述流处理器接收到的外部和内部中断;
暂停控制模块:用于控制所述线程处理引擎在处理任务时暂时停止或重新开始。
在本发明所述的处理器中,所述管理单元还包括线程控制寄存器,所述线程控制寄存器进一步包括:用于表明任务程序的起始物理地址的起始程序指针寄存器,用于表明本地存储区域的起始地址的本地存储区域起始基点寄存器,用于表明线程全局存储区域的起始地址的全局存储区域起始基点寄存器以及用于设置该线程优先级、运行模式的线程配置寄存器。
在本发明所述的处理器中,所述管理单元通过改变所述线程处理引擎的配置来改变所述线程处理引擎运行的任务;所述配置包括改变所述起始程序指针寄存器的值或改变指向所述本地存储单元的本地存储单元指针。
在本发明所述的处理器中,所述中断处理模块包括中断处理单元,所述线程中断单元在其中断寄存器控制位置位时控制所述内核或其他内核中的线程中断。
实施本发明的一种流数据处理方法及流处理器,具有以下有益效果:由于在一定程度上提高了硬件,使用多个并行的算术逻辑单元及其对应的核内存储系统,并且通过软件及线程管理单元对该处理器要处理的线程进行管理,使得该多个算术逻辑单元在工作任务饱和时达到动态负载平衡,而在其任务不饱和时关掉其中部分算术逻辑运算单元,以节省其电能消耗。因此,可以花费较小的代价来达到较高的性能,其性价比较高。
附图说明
图1是本发明流数据处理方法及流处理器实施例中方法流程图;
图2是所述实施例中该处理器的结构示意图;
图3是所述实施例中数据线程结构示意图;
图4是所述实施例中任务线程结构示意图;
图5是所述实施例中MVP线程结构示意图;
图6是所述实施例中MVP线程结构示意图;
图7是所述实施例中操作MVP线程及操作模式结构示意图;
图8是所述实施例中MVP线程本地存储结构示意图;
图9是所述实施例中指令输出结构示意图;
图10是所述实施例中MVP线程缓冲配置示意图;
图11是所述实施例中本地存储单元与线程处理引擎配置示意图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图1所示,在本发明一种流数据处理方法及流处理器实施例中,其流数据处理方法包括如下步骤:
步骤S11取得数据中的程序指针:通常在处理器中,会出现同时需要处理不同任务的情况,而在流数据处理中,这种情况也是常见的。例如,同时有两路不同的流数据输入,需要同时对其处理。当然,可以先处理其中一个,再处理另一个,这样的方法会带来时间上的延迟。而在对时间敏感的任务中,需要同时对上述流数据进行处理,这一点也是本实施例的基础。当然,在另外一种情况下,也可能只有一路数据输入,只需要一个处理程序即可,在这种情况下,当然也可以只使用一个线程处理引擎来处理该路数据,但其所用时间显然比用多个线程处理引擎同时处理该路数据要长。在本实施例中,输入的数据在需要处理时其中已经带有程序指针,这些程序指针表示了处理这些数据所需要的程序所在。
步骤S12依据程序指针,不同任务分配到不同引擎或同一任务分别分配到不同引擎:在本步骤中,分为两种情况,一种情况是只有一个任务,而在本实施例中,有四个线程处理引擎,如果只用一个线程处理引擎处理这一个任务,当然是可以的。但是,在这种情况下,会延长处理时间,并且,剩下3个线程处理引擎未工作,也是一种浪费。因此,在本步骤中,将该一个任务同时配置到4个线程处理引擎但处理不同数据,使得这4个线程处理引擎并行处理该任务的不同时段数据,以较快的时间完成该任务。另一种情况是其数据分别属于多个任务,上述4个线程处理引擎需要同时处理所述多个任务但处理不同数据。当任务数多于上述引擎数时,将4个任务配置到上述4个线程处理引擎,每个引擎处理一个任务,多出来的任务排队等候上述引擎处理完成当前任务后再配置;当任务数刚刚好是4个时,每个引擎配置一个;当任务数小于4个而大于1个时,可以平均分配上述线程处理引擎或每个任务分配一个线程处理引擎后再将剩下的引擎分配执行任务优先级较高的任务。
步骤S13数据存放于本地存储单元:在本步骤中,将当前任务的流数据按照其任务或输入的时间段不同,分别存放到所述本地存储单元。当然,流数据是不断输入的,这些不断输入的数据在经过输入缓存之后被送入上述本地存储单元,至于存入每个本地存储单元的数据量,可以是相同的,也可以是依据流数据的特点,输入不同的数据量。在本实施例中,各个本地存储单元的大小相同,因此,输入到其中的数据量也是相同的。并且,这些来自不同流数据的数据存放在不同的本地存储单元时,标记该本地存储单元,使得可以识别出这些本地存储单元内存储的数据来源。
步骤S14初始化引擎,分配本地存储单元:在本步骤中,开始初始化线程处理引擎,准备处理数据,在对上述引擎初始化的过程中,较重要的一点,是将上述已经存储有任务数据的本地存储单元配置到相应的线程处理引擎中,即使一个本地存储单元通过虚拟存储通道与一个线程处理器连接。这些虚拟存储通道在本实施例中是虚拟的DMA(Direct Memory Access,直接存储器访问)连接,其并不存在相应的硬件。上述相应的线程处理引擎也就是已经与本地存储单元连接的、取得任务执行代码的线程处理引擎。值得一提的是,在本实施例中,包括8个本地存储单元,除4个被配置给线程处理单元外,其余4个组成一个队列,等待配置到线程处理引擎中,这4个等待的本地存储单元中存放有来自输入缓存的数据,当然,如果输入缓存中已经没有数据,上述本地存储单元中也可以是空的,不存放数据。此外初始化引擎的任务还包括对其赋予本地存储区域指针和全局存储区域指针,以及设置其优先级和运行模式等等。
步骤S15处理数据:在本步骤中,上述线程处理引擎处理其配置的本地存储单元中的数据。当然,处理是在其任务的执行代码的控制下按照其要求执行的。值得一提的是,在本步骤中,各线程处理引擎处理的数据可能是同一个任务中不同时段输入的数据,也可能是不同任务同一时段输入的数据,还可能是不同任务不同时段输入的数据。
步骤S16释放通过虚拟存储通道与线程处理引擎连接的本地存储单元:当一个线程处理引擎处理完配置(即通过上述虚拟DMA通道连接)的本地存储单元中数据之后,其首先释放配置的本地存储单元并通过上述虚拟DMA通道连接将数据传送到下一个线程处理引擎,该本地存储单元被释放后,加入上述等待配置到线程处理引擎的队列。与其他未分配到线程处理引擎的本地存储单元一样,输入缓存中的数据(如果有的话)将输入到其中。
步骤S17所有任务处理完成?在本步骤中,判断是否所有任务都已完成,如果完成,则执行步骤S18);如果没有完成,则执行步骤S19)。一个较为明显的判断标准,是判断在输入缓存以及未配置到线程处理器中的本地存储单元是否有数据,如果已经没有数据,即可判断出任务是否处理完。
步骤S18退出本次数据处理:在本步骤中,一个或多个任务已被处理完毕,其对应的一个或多个本地存储单元已被释放,在此,释放该任务对应的一个或多个线程处理引擎及其他资源,退出该任务的本次数据处理。
步骤S19任务已配置?在本步骤中,如果有未处理完的任务,而该任务又已经配置到线程处理器中,则返回执行步骤S13),为该已配置任务的线程处理器分配新的本地存储单元,再执行处理该本地存储单元的数据;如果有未处理的任务,而该任务没有配置到线程处理引擎,则返回执行步骤S11),为该任务配置线程处理引擎,如果没有空闲的线程处理引擎,则等待空闲的线程处理引擎出现。在其他实施例中,如果任务已经配置,但仍有空闲的线程处理引擎,也可以返回步骤S11),再次为该任务配置线程处理引擎,使其处理速度加快。而判断任务是否被配置,仍然是使用其数据中的程序指针,如果数据中的程序指针已经被读出过且配置到该指针的线程处理引擎未退出,则可以认为该任务已经被配置;否则,可以判断为该任务未被配置。
本发明还涉及一种用于处理流数据的处理器,如图2所示,在本实施例中,该处理器是一个并行多线程虚拟通道处理器(MVP,Multi-thread VirtualPipelined stream processor),所述处理器包括线程管理及控制单元1、指令取得单元2、指令输出单元3、算术逻辑单元[3:0]4、乘加器(Multiply-Addunit)[3:0]5、特定功能单元6、寄存器7、指令缓冲单元8、数据及线程缓冲单元9、存储器直接读取单元10、系统总线接口11以及中断控制器12;其中,线程管理及控制单元1用于管理、控制当前已准备好的线程、正在运行的线程等,其分别与系统总线接口11、指令取得单元以及中断控制器12等单元连接;指令取得单元2在上述线程管理及控制单元1的控制下,通过指令缓冲单元8及系统总线接口11取得指令,并在线程管理及控制单元1的控制下将取得指令输出到指令输出单元3,同时,上述指令取得单元2还与上述中断控制器12连接,在中断控制器12有输出时接受其控制,停止取指令;指令输出单元3的输出通过并行的总线与上述算术逻辑单元[3:0]4、乘加器[3:0]5以及特定功能单元6连接,将取得指令中的操作码及操作数分别根据其需要传送到上述4个算术逻辑单元、4个乘加器以及特定功能单元6中;而上述算术逻辑单元[3:0]4、乘加器[3:0]5以及特定功能单元6还分别通过总线与寄存器7连接,便于将其中状态的变化情况及时写入上述寄存器7;寄存器7又分别与上述算术逻辑单元[3:0]4、乘加器[3:0]5以及特定功能单元6连接(与上述连接不同),便于将其中状态变化(不是由上述三个单元引起的,例如,由软件直接写入的)写入上述三个单元;数据及线程缓冲单元9连接在上述系统总线接口11上,其通过上述系统总线接口11取得数据及指令,并存储起来,供其他单元(特别是取指单元2读取),数据及线程缓冲单元9还分别与存储器直接读取单元10、算术逻辑单元[3:0]4以及寄存器7连接。在本实施例中,一个线程处理引擎包括一个算术逻辑单元和一个乘加器,因此,在本实施例中,就包括了4个在硬件上并行的线程处理引擎。
在本实施例中,线程管理及控制单元1进一步包括:软件配置模块:用于依据起始程序指针为所述线程处理引擎设置其任务;任务初始化模块:用于设置所述任务的本地存储区域指针和全局存储区域指针;线程配置模块:用于设置一个任务的优先级和运行模式;中断处理模块:用于处理所述流处理器接收到的外部和内部中断;暂停控制模块:用于控制所述线程处理引擎在处理任务时暂时停止或重新开始;以及结束模块,该结束模块用于退出本次数据处理,该模块运行命令EXIT使得线程处理引擎退出数据处理。
在本实施例中,上述MVP的实现通道包括4个ALU(算术逻辑单元)、4个MAC(乘加器,Multiply-Add unit)、以及一个128X32-bit的寄存器,此外,还包括一个64KB的指令缓冲单元,一个32KB的数据缓冲单元,一个作为线程缓冲器的64KB的SRAM,以及一个线程管理单元。
MVP支持两种并行计算模式,数据并行计算模式及任务并行计算模式。在处理数据并行计算模式时,MVP核在一个工作组(work group)中能够最多处理4个工作项目(work item),这4个工作项目被映射到MVP核的4个并行的线程。在处理任务并行计算模式时,MVP核能够最多处理8个工作组,每个工作组包括一个工作项目。这8个工作项目也被映射到MVP核的8个并行的线程,从硬件的角度来看,与数据并行模式没有不同。更为重要的是,为达到最大的性价比,MVP核还包括一种专有的模式,即MVP线程模式,在这种模式中,可以将最多8个线程配置为MVP线程模式,这8个线程表现为专用芯片通道层次。在上述MVP模式中,上述8个线程都可以无中断地运用于不同的、用于流处理或处理流数据的内核中。典型地,在多种流处理运用中,上述MVP模式具有更高的性价比。
多线程及其运用是MVP与其他处理器不同的重点之一,其可以较为明确地达成一个最终的较佳解决方案。在MVP中,多线程的目的如下:提供任务并行和数据并行处理模式,并提供针对流通道设计的、专有的功能并行模式;在MVP中,为达到最大硬件资源利用而采用的负载平衡;减少依赖于存储器、外设速度的延迟隐蔽能力。为了发掘使用多线程的及其在性能上的先进性,MVP去掉或减少过多的特殊硬件,特别是为达到特殊应用而设置的硬件。对比单独提升硬件性能,例如升高CPU的时钟速率,MVP具有更好的通用性及面对不同运用时的灵活性。
在本实施例中,MVP支持3中不同的并行线程模式,包括数据并行线程模式、任务线程并行模式以及MVP并行线程模式,其中,数据并行线程模式用于处理通过同一个内核的不同的流数据,例如,在MVP内的同一个程序。(参见图3),数据在不同的时间到达,其开始处理的时间也不同。当这些线程运行时,即使处理他们的程序是同一个,也处于不同的操作流程中。由MVP指令通道的观点来看,与操作不同的程序没有不同的地方,例如,不同的任务。每个被放到同一个线程的数据集将是一个自包含(self-contained)的最小集合,例如,不需要与别的数据集进行通讯。这就意味着数据线程不会被因与别的线程通讯而中断。每个数据线程表现为一个工作项目。在图3中,包括对应于数据0到数据3的4个线程,其分别是线程0到线程4(201、202、203、204),超标量执行通道206,线程缓冲单元208(即本地存储单元),以及连接上述线程(数据)与超标量执行通道206的总线205,连接上述超标量执行通道206与线程缓冲单元208(即本地存储单元)的总线206。如上所述,在数据并行模式下,上述4个线程实际上是相同的,其数据是该线程在不同时间的数据。其实质是将不同时间输入的同一个程序的数据在同一个时间处理。在这种模式下,上述本地存储单元是作为一个整体参加上述处理的。
任务线程并发地运行在不同的内核上。参见图4,在操作系统的观点看来,他们表现为不同的程序或不同的功能。为得到更高的灵活性,任务线程的特性完全上升到软件分类。每个任务运行在不同的程序上。任务线程不会被因与别的线程通讯而中断。每个任务线程表现为具有一个工作项目的工作组。在图4中,包括与任务0到任务3对应的线程0 301、线程1 302、线程2 303以及线程3 304,这些任务分别通过4个并行I/O线305与超标量执行通道306连接,同时,上述超标量执行通道306还通过存储总线307与本地存储区域连接,该本地存储区域此时被分为4个部分(即4个本地存储单元),分别是用于存储上述4个线程(301、302、303、304)所对应的数据的区域,他们分别是对应于线程0的区域308、对应于线程1的区域309、对应于线程2的区域310以及对应于线程3的区域311。上述每个线程(301、302、303、304)分别在其对应的区域(308、309、310、311)中读取数据。
由专用集成电路的观点来看,MVP线程表现为不同的功能通道层面。这也是其设计点及关键特性。MVP线程的每个功能层面都类似运行中的不同的内核,正如任务线程一样。MVP线程的最大的特点是能够依据其输入数据状态及输出缓冲的能力自动激活或关闭其本身。MVP线程的自动激活或关闭其本身的能力使得这种线程能够从当前正在执行的通道中移开已经完成的线程以及释放硬件资源用于其它以激活的线程。这就提供了我们希望的负载平衡能力。此外,还使得MVP线程可以激活比正在运行的线程更多的线程。其支持最多8个已激活线程。这8个线程被动态管理,最多4个线程可以被运行,而其他4个已激活线程则等待空闲的运行时段。参见图5、图6。图5示出了在MVP模式下线程与本地存储单元之间的关系,其中,线程0 401、线程1 402、线程2 403和线程3 404分别通过并行的I/O连接线405与超标量执行通道406连接,同时,这些线程(任务)还单独与本地存储单元中被划分到该线程的区域(407、408、409、410)连接,在这些区域之间,通过虚拟的DAM引擎连接,这些虚拟的DMA引擎使得在需要的时候可以在上述被划分的区域之间快速转移其中的数据;此外,这些被划分的区域分别与总线411连接,而该总线411还与上述超标量执行通道406连接。图6从另一个角度描述了在MVP模式下的线程情况。在图6中,包括4个正在运行的线程,即运行线程0 501、运行线程1 502、运行线程2 503以及运行线程3 504,这4个线程分别在上述4个ALU上运行,其分别通过并行的I/O线连接在超标量执行通道505上;同时,上述4个正在运行的线程分别与准备完毕的线程队列507连接(实际上,上述4个运行线程就是由上述线程队列507中取出的),由上面的描述可知,上述队列中排列有已经准备好但是尚未运行的线程,这些线程最多可以有8个,当然,根据实际情况,在其中可能也不足8个;其中,这些准备好的线程可以是同一个内核(应用程序或任务,图6中的内核1 508到内核n 509)的,也可以不是,在极端的情况下,这些线程可能是分别属于8个不同的内核(应用程序或任务)的,当然,实际情况可能是其他数字,例如,可能是属于4个应用程序,而每个应用程序可能有两个线程被准备(在线程的优先权相同的情况下)。该队列507中的线程是通过图6中的命令队列509由外部的主机而来的。
此外,如果一个特殊的耗时线程(time-consuming thread)在其循环缓冲队列中后续一个线程有需求,同一个线程(内核)可以在多个运行时间段之间被启动。这种情况下,该同一个内核可以一次启动更多(的线程),以加快在循环缓冲器中后续的数据处理。
上述线程的不同的执行模式的组合增加了4个线程同时运行的机会,这是一个较为理想的状态,其最大限度地增加指令输出速率。
通过传递最好的负载平衡、最小的MVP与主机CPU之间的交互及任何数据在MVP及主机存储器之间的移动,MVP线程是最具性价比的配置。
对于在多任务或/和多数据室全面利用硬件计算资源,负载平衡是有效的方法,MVP有两个途径管理负载平衡:一是利用软件使用其能用的任何方式(典型地,通过公共的IPA)配置4个激活的线程(在任务线程模式和MVP线程模式,8个线程被激活);另一个途径是使用硬件在运行时间动态地更新、检查及调整正在运行的线程。在软件配置途径中,正如我们所知的大多数运用特性,初始时就需要针对特殊的运用设置其静态的任务划分;而第二种方式要求硬件具有在不同的运行时间情况下动态调节的能力。上述两种方式使得MVP在最大硬件利用率的情况下达到最大的指令输出带宽。而延时隐藏(latency hiding)则依赖于为保持4输出速率的双输出能力。
MVP通过软件配置线程控制寄存器来配置4个线程。每个线程包括一个寄存器配置集合,该集合包括Starting_PC寄存器,Starting_GM_base寄存器,Starting_LM_base寄存器以及Thread_cfg寄存器。其中,Starting_PC寄存器用于表示一个任务程序的开始物理位置;Starting_GM_base寄存器用于表示开始一个线程的线程本地存储单元的基点位置;Starting_LM_base寄存器用于表示开始一个线程的线程全局存储器的基点位置(仅限于MVP线程);而Thread_cfg寄存器用于配置线程,该寄存器又包括:Running Mode位,其为0时表示普通,为1时表示优先;Thread_Pri位:设置线程的运行优先级(0-7级);Thread Types位:其为0时表示线程不可用,为1时表示是数据线程,为2时表示是任务线程,为3时表示是MVP线程。
如果线程是数据线程或任务线程模式,当线程被激活后,线程将在下一个周期进入运行状态;如果线程是MVP模式,其线程缓冲及输入数据的有效性将在每个周期被检查。一旦他们已经准备好,该被激活的线程进入运行状态。一个进入运行状态的线程将其Starting_PC寄存器中的值上载到运行通道程序4个程序计数器(PC)中的一个,于是该线程开始运行。关于线程管理及配置参见图7。在图7中,线程运行601,读取或接受线程配置寄存器602、线程状态寄存器603以及I/O缓冲状态寄存器604的值,并将其转换为三个控制信号输出。其中,这些控制信号包括:Launch-valid、Launch-tid和Launch infor。
当线程运行到EXIT指令时,该线程完成。
上述3种线程都只能通过软件来关闭(disable)。MVP线程能够在硬件结束现行数据集时被置于等待状态,等待该线程的下一个数据集被准备或送入其对应的本地存储区域。
在数据线程和任务线程之间MVP没有任何内在的硬件连接,除了其共享的存储器和有API定义的隔层特征(barrier feature)。这些线程中的每一个都被作为完全独立的硬件来对待。虽然如此,MVP提供线程间的中断特性,于是,每个线程可以被任何一个其他内核中断。线程间中断(inter-threadinterrupt)是软件中断,其通过运行的线程写入软件中断寄存器特别地中断一个指定内核,包括其本身的内核。在这样一个线程间中断之后,被中断的内核的终端程序将被调用。
正如一个传统的中断处理程序一样,在MVP中的中断,如果其被使能并配置,对于每一个被中断的线程,将跳转到一个事先设置好的中断处理程序。如果软件使能,每一个MVP将响应外部中断。中断控制器处理所有的中断。
对于MVP线程而言,所有的线程被视为一个硬件的专用集成电路通道,于是,每个中断寄存器将用于调整单个的线程的睡眠和唤醒。线程缓冲器将作为一个线程间的数据通道。利用软件来划分MVP线程的规则,类似多处理器在任务并行计算模式下的特性,是任何通过所有线程的数据流都是单向的。以避免任何线程之间互锁的机会。这就意味着具有数据前向或后向交换的功能都被作为一个内核保持在一个单项任务中。因此,当软件初始化配置后,在运行时间内线程间的通讯将固有地通过虚拟DMA通道并由硬件自动处理。于是,该通讯变得对软件透明并不会非必要地激活中断处理程序。参见图10,图10中示出了8个内核(应用程序或任务,K1到K8)及其对应的缓冲区域(Buf A到BufH),其中,上述缓冲区域之间通过虚拟DMA通道连接,用于数据的快速拷贝。
MVP有64KB的核内SRAM作为线程缓冲器,其被配置为16区,每区4KB。他们由每一个线程存储器映射到本地存储单元的一个固定空间。对于数据线程,这64KB的线程缓冲器是整个的本地存储单元,就像一个典型的SRAM。由于最大有4个工作项目,例如,4个线程,属于同一个工作组,对于线程处理,其可以被线性寻址。(参见图3)
对于任务线程,上述64KB线程缓冲器可以被配置为最多8个不同的本地存储单元集合,每个对应一个线程。(参见图4)每个本地存储单元的数值可以通过软件配置来调节。
对于MVP线程模式,该64KB的线程缓冲器的配置方式只有如图8所示的一种。正如任务线程模式,每个MVP线程具有其指向的、作为该内核本身的本地存储单元的线程缓冲区,在如图8所示4个线程被配置的情况下,每个线程有64KB/4=16KB的本地存储单元。此外,该内核可以被视为一个虚拟的DMA引擎,该引擎能瞬间整体拷贝一个线程的本地存储单元内容到下一个线程的本地存储单元。该瞬间拷贝流数据通过虚拟DMA引擎在被激活线程中动态改变虚拟的物理映射而达到。每个线程具有其自身的映射而当该线程执行完毕时,线程将升级其自身的映射并依照下述准则重新开始执行:如果本地存储单元使能并有效(输入数据到达),线程准备启动;在线程完成、转换映射到下一个本地存储单元并标记现行映射的本地存储单元有效(输出数据准备为下一个线程);返回第一步。
在图8中,线程0 701、线程1 702、线程2 703以及线程3 704分别与被映射作为其本地存储单元的存储区域(即705、706、707、708)连接,在上述这些存储区域之间,通过虚拟DMA连接(709、710、711)连接。值得一提的是,在图8中,该虚拟DMA连接(709、710、711)在硬件上不存在的,在本实施例中,通过改变线程的配置而实现上述存储区域中的数据转移,使得其从外面看起来好像存在连接一样,但实际上并不存在硬件的连接。图10中的Buf A到Buf H之间的连接也是如此。
注意当线程已经准备好启动时,如果有其他准备好的线程,则可能仍未启动,特别是在多于4个激活线程的情况下。
上述线程缓冲器的操作主要在MVP线程模式下提供一种不实施任何形式的数据拷贝而将较早线程的本地存储单元内容搬移到较晚线程的本地存储单元中的通道数据流模式,以节省时间和电力。
对于线程缓冲器的输入和输出流数据,MVP具有一个单独的32-bit数据输入和一个单独的32-bit数据输出通过外界接口总线连接到系统总线,于是,MVP核能够通过load/store指令或虚拟DMA引擎传输数据到/由线程缓冲器。
如果一个特定的线程缓冲区被激活,意味着其与线程一起被执行且可以被线程程序使用。当一个外部访问试图写入时,该访问将会被失步缓冲延迟。
每个周期,对于单个线程而言,有4条指令被取出。在普通模式下,该取指时隙以循环的方式在所有正在运行的线程中传递。例如,如果有4个正在运行的线程,同一个线程将每隔4个周期取得一次指令;如果有4个正在运行的线程,其中有两个处于优先模式,而该优先模式允许每周期输出两条指令,那么,上述间隙将减少到2。于是,线程的取值选择取决于循环的取指令牌、运行模式以及指令缓冲器的状态。
MVP被设计为支持4个线程同时运行,最少线程运行的情况是2个线程。为此,并不是每个周期都取指,这给出足够的时间为不受限制的任何种类的流程序建立下一个PC(程序计数器)指向地址。由于设计点是4个运行的线程,MVP在同一个线程下一次取指之前有4个周期,这为支路解析延迟提供了3个周期。虽然,寻址很少会超过3个周期,MVP具有简单支路预测策略用来减少3周期的支路解析延迟。其采用静态的不采用(always-not-taken)策略。在4个运行线程的情况下,该简单的支路预测策略将不会带来导致可能错误的效果,因为线程的PC在取指的同时就进行支路解析。于是该特性将由设计性能决定其开关,不需要进一步的设定来适应不同的数量的正在运行的线程。
如图9所示,MVP在每个周期内总能输出4条指令(见图8中的输出选择806,)是一个重点。为从线程指令缓冲器中找出4条准备好的指令,MVP将检查8条指令,每个正在运行的线程(801、802、803、804)两条,这些指令通过冒险检查805传送给输出选择806。通常情况下,如果不存在失配,每个正在运行的线程输出一条指令。如果存在失配,例如,长时间等待实施结果,或者没有足够的正在运行的线程,于是这两条每个线程被检测的指令将探测同一个线程中的任何ILPs,以便于隐藏暂停的线程延时,达到最大的动态平衡。此外在优先模式下,为了达到最大的负载平衡,较高优先级线程2条已准备指令将先于较低优先级的一个被选择。这将有利于较好地利用较高优先级线程的任意ILPs,这将缩短更多时间敏感任务的操作时间,以及增加能够被用于任何线程模式的能力。
由于MVP有4个LAU、4个MAC,以及最多每周期4个输出,通常没有资源冒险,除非涉及固定功能单元。然而,和通常的处理器类似,其存在需要在指令能够输出前被清除的数据冒险。在任意两个不同周期中输出的指令之间,其可能具有长延时冒险(long latency produce-to-consume),例如占用n个周期的长延时指定功能单元的产生者指令(producer instruction),或一个至少占用两个周期的负载指令(load instruction)。在这种情况下,任何消费者指令(consumer instruction)将失配知道该冒险被清除。如果为了负载平衡,需要在一个周期内发出多于一个的指令,或者为了延时隐藏的理由,在第二输出指令发出时冒险检查应该被执行,以确认在第一个指令上不会产生相关性。
延时隐藏(latency hiding)是MVP非常重要的特性。在MVP指令实施通道中,有两种长延时的情况:一个是特定功能单元另一个是访问外接存储器或IO。在任何一种情况中,该请求线程将被置于暂停状态,没有指令输出直到该长延时操作被完成。在此期间,将少一个线程在运行而其他正在运行的线程将填充空闲的时隙以利用额外的硬件,现假设每个特定功能单元仅与一个线程联合,如果任何时候,有多于1个的线程在指定的特定功能单元运行,不用担心特定功能单元资源的缺乏。此时不能由一个ALU去实施负载指令处理,如果负载指令失去一个缓冲,于是负载指令就不能占用指定ALU的通道,因为ALU是通用执行单元,可以被其他线程自由使用。于是,对于长延时负载访问,我们使用指令取消的办法来释放ALU的通道。长延时负载指令不需要和通常的处理器一样在ALU的通道中等待,反之,其将在该线程从暂停状态到再次运行时再发一次该指令。
如上所述,MVP不做任何支路预测,因此也没有执行推测。于是,唯一导致指令取消的情形来自于负载延迟暂停,对于任何已知的缓冲丢失,在MVP的指令提交阶段,一个指令在当然可以完成的WB(Write Back)阶段,为MEM(Data memory access)阶段。如果缓冲丢失已经发生,占用的负载指令取消,于是所有的由MEM阶段上升到IS阶段,即上述MEM加上EX(Execution oraddress calculation),其后续指令也将会取消。在线程指令缓冲中的线程将进入暂停状态直到其被唤醒信号唤醒。其意味着在线程指令缓冲器的线程将不得不等待,直到其查找到EME阶段。同时,指令指针的操作需要考虑任意一种指令取消的可能。
图11是本实施例中的一个例子,其中4个线程处理引擎分别被配置执行4个任务,本地存储单元1-4分别被配置到上述线程处理引擎1-4运作,其中分别存储各任务的数据,此外,本地存储单元5存储的是任务2的数据,于是当线程处理引擎2处理完本地存储单元2的数据并释放本地存储单元2时,通过管理单元(即图2中的线程管理及控制单元1),将本地存储单元5配置到线程处理引擎2,该线程处理引擎2直接处理本地存储单元5的数据,不需要再将本地存储单元5中的数据拷贝到本地存储单元2中。这样就节省了时间及拷贝时所用的电量。具有较高的性价比。当然,其他的线程处理引擎及其他的本地存储单元的动作也是大致相同的。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种流数据处理方法,其特征在于,包括如下步骤:
A)得到数据中指示其所属任务的程序指针,并依据所述程序指针配置一个线程处理引擎;
B)多个线程引擎同时处理所述任务不同时段的数据或多个线程引擎同时处理所述不同任务的数据;
C)判断是否还有数据未处理,如有,返回步骤A);如没有,退出本次数据处理。
2.根据权利要求1所述的流数据处理方法,其特征在于,所述步骤A)进一步包括:
A1)将同一个任务中不同时段的数据或多个任务的数据分别分配到不同的、空闲的、通过虚拟直接存储器访问通道与所述线程处理引擎连接的本地存储单元中。
3.根据权利要求1所述的流数据处理方法,其特征在于,所述步骤A)进一步包括:
A2)将同一任务分配到所述多个线程处理引擎;
A3)初始化每个线程处理引擎,通过设置存储指针使其通过所述虚拟直接存储器访问通道与一个本地存储单元连接;
A4)所述多个线程处理引擎同时处理与其连接的本地存储单元中数据。
4.根据权利要求1所述的流数据处理方法,其特征在于,所述步骤A)进一步包括如下步骤:
A2′)将多个任务分别分配到所述多个线程处理引擎;
A3′)初始化每个线程处理引擎,通过设置存储指针使其通过所述虚拟直接存储器访问通道与一个本地存储单元连接;
A4′)所述多个线程处理引擎同时处理与其连接的本地存储单元中数据。
5.根据权利要求3或4所述的流数据处理方法,其特征在于,所述步骤C)进一步包括:
C1)释放通过所述虚拟直接存储器访问通道与所述多线程处理引擎连接的本地存储单元;
C2)判断未连接到多个线程处理引擎的本地存储单元中是否存在未处理数据,如有,返回步骤A);如无,执行步骤C3);
C3)释放所有资源,结束本次数据处理。
6.根据权利要求5所述的流数据处理方法,其特征在于,所述线程处理引擎的数量为4个,所述本地存储单元的数量为4个或8个。
7.根据权利要求3或4所述的流数据处理方法,其特征在于,还包括如下步骤:接收到所述任务或硬件发出的中断请求时,中断分配给所述任务的线程处理引擎的处理,执行中断处理程序。
8.根据权利要求3或4所述的流数据处理方法,其特征在于,还包括如下步骤:当任意一个正在运行的线程处理引擎需要等待较长时间,释放该线程处理引擎,并将其配置到其他正在运行的同一个或不同的任务中。
9.一种流数据处理器,其特征在于,包括:
并行的多个线程处理引擎:用于处理被分配给该线程处理引擎的任务或线程;
管理单元:用于取得、判断和控制所述多个线程处理引擎的状态,将处于等待队列中的线程或任务分配到所述多个线程处理引擎中;
本地存储区域:用于存储所述线程处理引擎处理的数据,配合所述线程处理引擎完成数据处理。
10.根据权利要求9所述的流数据处理器,其特征在于,还包括用于数据及线程缓冲、指令缓冲的内部存储系统以及用于存储所述并行处理器的各种状态的寄存器。
11.根据权利要求9所述的流数据处理器,其特征在于,所述线程处理引擎包括算术逻辑运算单元以及与所述算术逻辑运算单元对应的乘加器。
12.根据权利要求9所述的流数据处理器,其特征在于,所述本地存储区域包括多个本地存储单元,所述本地存储单元在所述线程处理引擎工作时被配置对应于所述线程处理引擎。
13.根据权利要求12所述的流数据处理器,其特征在于,所述线程处理引擎为4个,所述本地存储单元为8个,所述线程处理引擎工作时任意4个本地存储单元被分别配置与所述线程处理引擎一一对应。
14.根据权利要求9-12任意一项所述的流处理器,其特征在于,所述管理单元包括:
软件配置模块:用于依据起始程序指针为所述线程处理引擎设置其任务;
任务初始化模块:用于设置所述任务的本地存储区域指针和全局存储区域指针;
线程配置模块:用于设置一个任务的优先级和运行模式;
中断处理模块:用于处理所述流处理器接收到的外部和内部中断;
暂停控制模块:用于控制所述线程处理引擎在处理任务时暂时停止或重新开始。
15.根据权利要求14所述的流数据处理器,其特征在于,所述管理单元还包括线程控制寄存器,所述线程控制寄存器进一步包括:用于表明任务程序的起始物理地址的起始程序指针寄存器,用于表明本地存储区域的起始地址的本地存储区域起始基点寄存器,用于表明线程全局存储区域的起始地址的全局存储区域起始基点寄存器以及用于设置该线程优先级、运行模式的线程配置寄存器。
16.根据权利要求15所述的流数据处理器,其特征在于,所述管理单元通过改变所述线程处理引擎的配置来改变所述线程处理引擎运行的任务;所述配置包括改变所述起始程序指针寄存器的值或改变指向所述本地存储单元的本地存储单元指针。
17.根据权利要求16所述的流数据处理器,其特征在于,所述中断处理模块包括中断处理单元,所述线程中断单元在其中断寄存器控制位置位时控制所述内核或其他内核中的线程中断。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910188409XA CN101739242B (zh) | 2009-11-27 | 2009-11-27 | 一种流数据处理方法及流处理器 |
US13/395,502 US20120233616A1 (en) | 2009-11-27 | 2009-12-28 | Stream data processing method and stream processor |
PCT/CN2009/076108 WO2011063574A1 (zh) | 2009-11-27 | 2009-12-28 | 一种流数据处理方法及流处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910188409XA CN101739242B (zh) | 2009-11-27 | 2009-11-27 | 一种流数据处理方法及流处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101739242A true CN101739242A (zh) | 2010-06-16 |
CN101739242B CN101739242B (zh) | 2013-07-31 |
Family
ID=42462769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910188409XA Active CN101739242B (zh) | 2009-11-27 | 2009-11-27 | 一种流数据处理方法及流处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120233616A1 (zh) |
CN (1) | CN101739242B (zh) |
WO (1) | WO2011063574A1 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102147722A (zh) * | 2011-04-08 | 2011-08-10 | 深圳中微电科技有限公司 | 实现中央处理器和图形处理器功能的多线程处理器及方法 |
CN102200906A (zh) * | 2011-05-25 | 2011-09-28 | 上海理工大学 | 大规模并发数据流处理系统及其处理方法 |
CN102722417A (zh) * | 2012-06-07 | 2012-10-10 | 腾讯科技(深圳)有限公司 | 一种扫描任务的分配方法和装置 |
CN103955408A (zh) * | 2014-04-24 | 2014-07-30 | 深圳中微电科技有限公司 | Mvp处理器中有dma参与的线程管理方法及装置 |
CN107092556A (zh) * | 2017-03-09 | 2017-08-25 | 北京小度信息科技有限公司 | 测试方法、装置及设备 |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
WO2018018611A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 一种任务处理方法以及网卡 |
CN108287759A (zh) * | 2017-01-10 | 2018-07-17 | 阿里巴巴集团控股有限公司 | 处理数据过程中的调度方法、装置和系统 |
CN108293027A (zh) * | 2015-12-03 | 2018-07-17 | 华为技术有限公司 | 数据流送单元和用于操作数据流送单元的方法 |
CN108351788A (zh) * | 2015-11-18 | 2018-07-31 | 华为技术有限公司 | 提供对数据流的访问的数据处理设备 |
CN108364251A (zh) * | 2017-01-26 | 2018-08-03 | 超威半导体公司 | 具有通用寄存器资源管理的矢量处理器 |
CN109508229A (zh) * | 2018-09-19 | 2019-03-22 | 安徽慧视金瞳科技有限公司 | 一种多点同时绘制的匹配方法 |
CN111767129A (zh) * | 2020-06-30 | 2020-10-13 | 深圳职业技术学院 | 数据流任务处理装置及方法 |
CN112732416A (zh) * | 2021-01-18 | 2021-04-30 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
CN116126526A (zh) * | 2022-12-29 | 2023-05-16 | 苏州华太电子技术股份有限公司 | 计算超越函数的方法、装置、电子设备和存储介质 |
WO2023103391A1 (zh) * | 2021-12-06 | 2023-06-15 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
WO2024198826A1 (zh) * | 2023-03-31 | 2024-10-03 | 华为技术有限公司 | 一种指令处理方法及装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
CN105426163A (zh) * | 2015-10-27 | 2016-03-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于mic协处理器的单数据流分位数处理方法 |
JP2023508503A (ja) * | 2019-12-30 | 2023-03-02 | スター アリー インターナショナル リミテッド | 構成可能な並列計算用のプロセッサ |
CN111402906B (zh) * | 2020-03-06 | 2024-05-14 | 深圳前海微众银行股份有限公司 | 语音解码方法、装置、引擎及存储介质 |
CN111381887B (zh) * | 2020-03-18 | 2023-05-09 | 深圳中微电科技有限公司 | 在mvp处理器中进行图像运动补偿的方法、装置及处理器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925643B2 (en) * | 2002-10-11 | 2005-08-02 | Sandbridge Technologies, Inc. | Method and apparatus for thread-based memory access in a multithreaded processor |
US7233335B2 (en) * | 2003-04-21 | 2007-06-19 | Nividia Corporation | System and method for reserving and managing memory spaces in a memory resource |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US7734359B2 (en) * | 2005-11-14 | 2010-06-08 | General Electric Company | Systems and methods for capturing data within an intelligent electronic device |
US7750915B1 (en) * | 2005-12-19 | 2010-07-06 | Nvidia Corporation | Concurrent access of data elements stored across multiple banks in a shared memory resource |
US8136111B2 (en) * | 2006-06-27 | 2012-03-13 | International Business Machines Corporation | Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system |
US8276164B2 (en) * | 2007-05-03 | 2012-09-25 | Apple Inc. | Data parallel computing on multiple processors |
CN101344842B (zh) * | 2007-07-10 | 2011-03-23 | 苏州简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
US8656145B2 (en) * | 2008-09-19 | 2014-02-18 | Qualcomm Incorporated | Methods and systems for allocating interrupts in a multithreaded processor |
-
2009
- 2009-11-27 CN CN200910188409XA patent/CN101739242B/zh active Active
- 2009-12-28 WO PCT/CN2009/076108 patent/WO2011063574A1/zh active Application Filing
- 2009-12-28 US US13/395,502 patent/US20120233616A1/en not_active Abandoned
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102147722B (zh) * | 2011-04-08 | 2016-01-20 | 深圳中微电科技有限公司 | 实现中央处理器和图形处理器功能的多线程处理器及方法 |
CN102147722A (zh) * | 2011-04-08 | 2011-08-10 | 深圳中微电科技有限公司 | 实现中央处理器和图形处理器功能的多线程处理器及方法 |
CN102200906A (zh) * | 2011-05-25 | 2011-09-28 | 上海理工大学 | 大规模并发数据流处理系统及其处理方法 |
CN102722417A (zh) * | 2012-06-07 | 2012-10-10 | 腾讯科技(深圳)有限公司 | 一种扫描任务的分配方法和装置 |
CN103955408B (zh) * | 2014-04-24 | 2018-11-16 | 深圳中微电科技有限公司 | Mvp处理器中有dma参与的线程管理方法及装置 |
CN103955408A (zh) * | 2014-04-24 | 2014-07-30 | 深圳中微电科技有限公司 | Mvp处理器中有dma参与的线程管理方法及装置 |
US11016777B2 (en) | 2015-11-18 | 2021-05-25 | Huawei Technologies Co., Ltd. | Data processing device for providing access to a data stream |
CN108351788A (zh) * | 2015-11-18 | 2018-07-31 | 华为技术有限公司 | 提供对数据流的访问的数据处理设备 |
CN108293027B (zh) * | 2015-12-03 | 2020-10-09 | 华为技术有限公司 | 数据流送单元和用于操作数据流送单元的方法 |
CN108293027A (zh) * | 2015-12-03 | 2018-07-17 | 华为技术有限公司 | 数据流送单元和用于操作数据流送单元的方法 |
WO2018018611A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 一种任务处理方法以及网卡 |
CN108287759A (zh) * | 2017-01-10 | 2018-07-17 | 阿里巴巴集团控股有限公司 | 处理数据过程中的调度方法、装置和系统 |
CN108287759B (zh) * | 2017-01-10 | 2021-07-09 | 阿里巴巴集团控股有限公司 | 处理数据过程中的调度方法、装置和系统 |
CN108364251A (zh) * | 2017-01-26 | 2018-08-03 | 超威半导体公司 | 具有通用寄存器资源管理的矢量处理器 |
CN108364251B (zh) * | 2017-01-26 | 2021-06-25 | 超威半导体公司 | 具有通用寄存器资源管理的矢量处理器 |
CN107092556B (zh) * | 2017-03-09 | 2020-05-08 | 北京星选科技有限公司 | 测试方法、装置及设备 |
CN107092556A (zh) * | 2017-03-09 | 2017-08-25 | 北京小度信息科技有限公司 | 测试方法、装置及设备 |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
CN109508229A (zh) * | 2018-09-19 | 2019-03-22 | 安徽慧视金瞳科技有限公司 | 一种多点同时绘制的匹配方法 |
CN111767129A (zh) * | 2020-06-30 | 2020-10-13 | 深圳职业技术学院 | 数据流任务处理装置及方法 |
CN112732416A (zh) * | 2021-01-18 | 2021-04-30 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
CN112732416B (zh) * | 2021-01-18 | 2024-03-26 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
WO2023103391A1 (zh) * | 2021-12-06 | 2023-06-15 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
CN116126526A (zh) * | 2022-12-29 | 2023-05-16 | 苏州华太电子技术股份有限公司 | 计算超越函数的方法、装置、电子设备和存储介质 |
CN116126526B (zh) * | 2022-12-29 | 2024-04-19 | 苏州华太电子技术股份有限公司 | 计算超越函数的方法、装置、电子设备和存储介质 |
WO2024198826A1 (zh) * | 2023-03-31 | 2024-10-03 | 华为技术有限公司 | 一种指令处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20120233616A1 (en) | 2012-09-13 |
WO2011063574A1 (zh) | 2011-06-03 |
CN101739242B (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101739242B (zh) | 一种流数据处理方法及流处理器 | |
CN102023844B (zh) | 并行处理器及其线程处理方法 | |
JP6381956B2 (ja) | 動的仮想マシンサイジング | |
TWI494850B (zh) | 通透地提供給作業系統之非對稱多核心處理器系統 | |
AU2014311463B2 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
US8489904B2 (en) | Allocating computing system power levels responsive to service level agreements | |
US9529643B2 (en) | Method and system for accelerating task control flow | |
US8607235B2 (en) | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention | |
CN101238425B (zh) | 使用低功率虚拟线程的软件指定的电源性能管理装置和方法 | |
CN101681262B (zh) | 用于执行线程的处理器及方法 | |
CN109983440A (zh) | 数据处理 | |
CN103842933B (zh) | 多核平台中的受约束引导技术 | |
US11579918B2 (en) | Optimizing host CPU usage based on virtual machine guest OS power and performance management | |
EP3186704B1 (en) | Multiple clustered very long instruction word processing core | |
US8819680B2 (en) | Computer system for controlling the execution of virtual machines | |
US20170147345A1 (en) | Multiple operation interface to shared coprocessor | |
CN103793255A (zh) | 可配置的多主模式多os内核实时操作系统架构与启动方法 | |
Giorgi et al. | Dta-c: A decoupled multi-threaded architecture for cmp systems | |
WO2012016472A1 (zh) | 多核CPU加载Linux操作系统的方法及系统 | |
US20200341792A1 (en) | Reducing ipi overhead with cpu overcommit support via ipi broadcast | |
Pan et al. | Hypervisor support for efficient memory de-duplication | |
US20210216344A1 (en) | Managing processor overcommit for virtual machines | |
US7562207B2 (en) | Deterministic microcontroller with context manager | |
CN113032154A (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN112732416B (zh) | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent for invention or patent application | ||
CB02 | Change of applicant information |
Address after: 706-8, room 518057, Changhong science and technology building, 18 South 12 road, hi tech Southern District, Shenzhen, Guangdong, Nanshan District Applicant after: Shenzhen ICube Technology Corp. Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road No. 008 SKYWORTH building block C room 503 Applicant before: Shenzhen ICube Technology Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |