CN102023844B - 并行处理器及其线程处理方法 - Google Patents
并行处理器及其线程处理方法 Download PDFInfo
- Publication number
- CN102023844B CN102023844B CN200910190339.1A CN200910190339A CN102023844B CN 102023844 B CN102023844 B CN 102023844B CN 200910190339 A CN200910190339 A CN 200910190339A CN 102023844 B CN102023844 B CN 102023844B
- Authority
- CN
- China
- Prior art keywords
- thread
- processing engine
- parallel
- pattern
- register
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 7
- 238000012545 processing Methods 0.000 claims abstract description 71
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000011176 pooling Methods 0.000 claims description 20
- 230000008859 change Effects 0.000 claims description 6
- 230000008901 benefit Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 201000009028 early myoclonic encephalopathy Diseases 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种并行处理器,包括:多个线程处理引擎:用于处理被分配给该线程处理引擎的线程,所述多个线程处理引擎并行连接;线程管理单元:用于取得、判断所述多个线程处理引擎的状态,并将处于等待队列中的线程分配到所述多个线程处理引擎中。本发明还涉及一种在并行处理器中对线程进行并行处理的方法。实施本发明的并行处理器及其线程处理方法,具有以下有益效果:可以花费较小的代价来达到较高的性能,其性价比较高。
Description
技术领域
本发明涉及多线程处理领域,更具体地说,涉及一种并行处理器及其线程处理方法。
背景技术
电子技术的发展对处理器提出越来越高的需求,通常集成电路工程师通过增加时钟速度、硬件资源以及特殊应用功能来为使用者提供更多或更好的性能。这种做法在一些应用场合,特别是移动应用时并不是太恰当。通常,处理器时钟的原始速度的提高并不能打破处理器由于访问储存器及外设速度的限制而带来的瓶颈。对于处理器而言,增加硬件需要大量的该处理器在使用中的更高的使用效率,由于ILP(Instruction Level Parallelism)的缺少,上述增加硬件通常是不可能的。而使用特殊的功能模块又会带来对于该处理器应用范围的限定以及对产品上市时间的拖延。特别是对于需要提供并行处理的处理器,上述问题将更为突出,单独提高硬件性能,例如增加时钟频率、增加处理器中核的数量,虽然可以在一定程度上解决问题,但是可能带来成本及耗电量的增加,其代价太大,其性价比不高。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述成本及耗电量的增加,其代价太大,性价比不高的缺陷,提供一种性价比比较高的并行处理器及其线程处理方法。
本发明解决其技术问题所采用的技术方案是:构造一种并行处理器,包括:
多个线程处理引擎:用于处理被分配给该线程处理引擎的线程,所述多个线程处理引擎并行连接;
线程管理单元:用于取得、判断所述多个线程处理引擎的状态,并将处于等待队列中的线程分配到所述多个线程处理引擎中。
在本发明所述处理器中,还包括用于数据及线程缓冲、指令缓冲的内部存储系统以及用于存储所述并行处理器的各种状态的寄存器。
在本发明所述处理器中,所述内部存储系统包括用于对所述线程及数据进行缓冲的数据及线程缓冲单元以及对指令进行缓冲的指令缓冲单元。
在本发明所述处理器中,所述多个线程处理引擎包括4个并行的、相互独立的算术逻辑运算单元以及与所述算术逻辑运算单元一一对应的乘加器。
在本发明所述处理器中,所述线程管理器还包括用于配置线程的线程控制寄存器,所述线程控制寄存器包括:用于表明任务程序的起始物理地址的起始程序指针寄存器,用于表明一个线程的线程本地存储区域的起始地址的本地存储区域起始基点寄存器,用于表明线程全局存储区域的起始地址的全局存储区域起始基点寄存器以及用于设置该线程优先级、运行模式的线程配置寄存器。
在本发明所述处理器中,所述线程管理器依据一个线程的输入数据状态以及该线程的输出缓冲能力来确定是否激活该线程;所述被激活的线程数大于同时运行的线程数。
在本发明所述处理器中,所述一个被激活的线程在不同的时间段在所述线程管理器控制下运行在不同的线程处理引擎上。
在本发明所述处理器中,所述线程管理器通过改变所述线程处理引擎的配置来改变所述被激活线程运行的线程处理引擎;所述配置包括所述起始程序指针寄存器的值。
在本发明所述处理器中,还包括通过写入数据到中断寄存器中断线程的线程中断单元,所述线程中断单元在其中断寄存器控制位被置位时控制所述内核或其他内核中的线程中断。
在本发明所述处理器中,所述线程处理引擎、线程管理器以及内部存储系统通过系统总线接口与外接或内置的通用处理器以及外部存储系统相连。
本发明还揭示了一种方法,一种在并行处理器中对线程进行并行处理的方法,包括如下步骤:
A)配置所述并行处理器中的多个线程处理引擎;
B)根据所述线程处理引擎状态及待处理线程队列状态,将所述待处理线程队列中的线程送入所述线程处理引擎;
C)所述线程处理引擎处理送入的线程,使之运行。
在本发明所述的方法中,所述步骤A)进一步包括:
A1)判断所述待处理线程的类型,并依据所述线程类型配置线程处理引擎及该引擎所对应的本地存储区域。
在本发明所述的方法中,所述步骤C)进一步包括:
C1)取得所述正在运行的线程的指令;
C2)编译并执行所述线程的指令。
在本发明所述的方法中,所述步骤C1)中,每个周期取得一个线程处理引擎所执行线程的指令,所述多个并行的线程处理引擎轮流取得其执行线程所对应的指令。
在本发明所述的方法中,所述待处理线程模式包括数据并行模式、任务并行模式以及并行多线程虚拟通道模式。
在本发明所述的方法中,当所述运行线程模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当接收到一个线程的软件或外部中断请求时,中断所述线程并执行事先设置的该线程的中断程序。
在本发明所述的方法中,当所述运行线程模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当任意一个正在运行的线程需要等待较长时间,释放所述线程占用的线程处理引擎资源,并将所述待处理线程队列中的一个线程激活并送到所述线程处理引擎。
在本发明所述的方法中,当所述运行线程模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当任意一个正在运行的线程执行完成,释放所述线程占用的线程处理引擎资源,并将所述资源配置到其他正在运行的线程。
在本发明所述的方法中,通过改变所述线程处理引擎的配置来转换其处理的线程,所述线程处理引擎的配置包括其所对应的本地存储区域的位置。
所述待处理线程模式包括数据并行模式、任务并行模式以及并行多线程虚拟通道模式。
实施本发明的并行处理器及其线程处理方法,具有以下有益效果:由于在一定程度上提高了硬件,使用多个并行的算术逻辑单元及其对应的核内存储系统,并且通过软件及线程管理单元对该处理器要处理的线程进行管理,使得该多个算术逻辑单元在工作任务饱和时达到动态负载平衡,而在其任务不饱和时关掉其中部分算术逻辑运算单元,以节省其电能消耗。因此,可以花费较小的代价来达到较高的性能,其性价比较高。
附图说明
图1是本发明并行处理器及其线程处理方法实施例中该处理器的结构示意图;
图2是所述实施例中数据线程结构示意图;
图3是所述实施例中任务线程结构示意图;
图4是所述实施例中MVP线程结构示意图;
图5是所述实施例中MVP线程结构示意图;
图6是所述实施例中操作MVP线程及操作模式结构示意图;
图7是所述实施例中MVP线程本地存储结构示意图;
图8是所述实施例中指令输出结构示意图;
图9是所述实施例中MVP线程缓冲配置示意图;
图10是所述实施例中线程的处理流程图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图1所示,在本实施例中,该并行处理器是一个并行多线程虚拟通道处理器(MVP,Multi-thread Virtual Pipelined stream processor),所述处理器包括线程管理及控制单元1、指令取得单元2、指令输出单元3、算术逻辑单元[3:0]4、乘加器(Multiply-Add unit)[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个在硬件上并行的线程处理引擎。
在本实施例中,上述MVP核由便于被OpenCL编译器将其由中间媒介转换的标准工业指令集合实现。MVP的实现通道包括4个ALU(算术逻辑单元)、4个MAC(乘加器,Multiply-Add unit)、以及一个128X32-bit的寄存器,此外,还包括一个64KB的指令缓冲单元,一个32KB的数据缓冲单元,一个作为线程缓冲器的64KB的SRAM,以及一个线程管理单元。
MVP可以作为一个带有软件驱动层的OpenCL器件,其支持OpenCL定义的两种并行计算模式,数据并行计算模式及任务并行计算模式。在处理数据并行计算模式时,MVP核在一个工作组(work group)中能够最多处理4个工作项目(work item),这4个工作项目被映射到MVP核的4个并行的线程。在处理任务并行计算模式时,MVP核能够最多处理8个工作组,每个工作组包括一个工作项目。这8个工作项目也被映射到MVP核的8个并行的线程,从硬件的角度来看,与数据并行模式没有不同。更为重要的是,为达到最大的性价比,MVP核还包括一种专有的模式,即MVP线程模式,在这种模式中,可以将最多8个线程配置为MVP线程模式,这8个线程表现为专用芯片通道层次。在上述MVP模式中,上述8个线程都可以无中断地运用于不同的、用于流处理或处理流数据的内核中。典型地,在多种流处理运用中,上述MVP模式具有更高的性价比。
多线程及其运用是MVP与其他处理器不同的重点之一,其可以较为明确地达成一个最终的较佳解决方案。在MVP中,多线程的目的如下:提供OpenCL定义的任务并行和数据并行处理模式,并提供针对流通道设计的、专有的功能并行模式;在MVP中,为达到最大硬件资源利用而采用的负载平衡;减少依赖于存储器、外设速度的延迟隐蔽能力。为了发掘使用多线程的及其在性能上的先进性,MVP去掉或减少过多的特殊硬件,特别是为达到特殊应用而设置的硬件。对比单独提升硬件性能,例如升高CPU的时钟速率,MVP具有更好的通用性及面对不同运用时的灵活性。
在本实施例中,MVP支持3中不同的并行线程模式,包括数据并行线程模式、任务线程并行模式以及MVP并行线程模式,其中,数据并行线程模式用于处理通过同一个内核的不同的流数据,例如,在MVP内的同一个程序。(参见图2),数据在不同的时间到达,其开始处理的时间也不同。当这些线程运行时,即使处理他们的程序是同一个,也处于不同的操作流程中。由MVP指令通道的观点来看,与操作不同的程序没有不同的地方,例如,不同的任务。每个被放到同一个线程的数据集将是一个自包含(self-contained)的最小集合,例如,不需要与别的数据集进行通讯。这就意味着数据线程不会被因与别的线程通讯而中断。每个数据线程表现为OpenCL中的一个工作项目。在图2中,包括对应于数据0到数据3的4个线程,其分别是线程0到线程4(201、202、203、204),超标量执行通道206,线程缓冲单元208(即本地存储器),以及连接上述线程(数据)与超标量执行通道206的总线205,连接上述超标量执行通道206与线程缓冲单元208(即本地存储器)的总线206。如上所述,在数据并行模式下,上述4个线程实际上是相同的,其数据是该线程在不同时间的数据。其实质是将不同时间输入的同一个程序的数据在同一个时间处理。在这种模式下,上述本地存储器是作为一个整体参加上述处理的。
任务线程并发地运行在不同的内核上。参见图3,在操作系统的观点看来,他们表现为不同的程序或不同的功能。为得到更高的灵活性,任务线程的特性完全上升到软件分类。每个任务运行在不同的程序上。任务线程不会被因与别的线程通讯而中断。每个任务线程表现为OpenCL中具有一个工作项目的工作组。在图3中,包括与任务0到任务3对应的线程0 301、线程1 302、线程2 303以及线程3 304,这些任务分别通过4个并行I/O线305与超标量执行通道306连接,同时,上述超标量执行通道306还通过存储总线307与本地存储器连接,该本地存储器此时被分为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个已激活线程则等待空闲的运行时段。参见图4、图5。图4示出了在MVP模式下线程与本地存储器之间的关系,其中,线程0 401、线程1 402、线程2 403和线程3404分别通过并行的I/O连接线405与超标量执行通道406连接,同时,这些线程(任务)还单独与本地存储器中被划分到该线程的区域(407、408、409、410)连接,在这些区域之间,通过虚拟的DAM引擎连接,这些虚拟的DMA引擎使得在需要的时候可以在上述被划分的区域之间快速转移其中的数据;此外,这些被划分的区域分别与总线411连接,而该总线411还与上述超标量执行通道406连接。图5从另一个角度描述了在MVP模式下的线程情况。在图5中,包括4个正在运行的线程,即运行线程0501、运行线程1502、运行线程2503以及运行线程3504,这4个线程分别在上述4个ALU上运行,其分别通过并行的I/O线连接在超标量执行通道505上;同时,上述4个正在运行的线程分别与准备完毕的线程队列507连接(实际上,上述4个运行线程就是由上述线程队列507中取出的),由上面的描述可知,上述队列中排列有已经准备好但是尚未运行的线程,这些线程最多可以有8个,当然,根据实际情况,在其中可能也不足8个;其中,这些准备好的线程可以是同一个内核(应用程序,图5中的内核1508到内核n 509)的,也可以不是,在极端的情况下,这些线程可能是分别属于8个不同的内核(应用程序)的,当然,实际情况可能是其他数字,例如,可能是属于4个应用程序,而每个应用程序可能有两个线程被准备(在线程的优先权相同的情况下)。该队列507中的线程是通过图5中的命令队列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)中的一个,于是该线程开始运行。关于线程管理及配置参见图6。在图6中,线程运行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通道并由硬件自动处理。于是,该通讯变得对软件透明并不会非必要地激活中断处理程序。参见图9,图9中示出了8个内核(应用程序,K1到K8)及其对应的缓冲区域(Buf A到Buf H),其中,上述缓冲区域之间通过虚拟DMA通道连接,用于数据的快速拷贝。
MVP有64KB的核内SRAM作为线程缓冲器,其被配置为16区,每区4KB。他们由每一个线程存储器映射到本地存储器的一个固定空间。对于数据线程,这64KB的线程缓冲器是整个的本地存储器,就像一个典型的SRAM。由于最大有4个工作项目,例如,4个线程,属于同一个工作组,对于线程处理,其可以被线性寻址。(参见图2)
对于任务线程,上述64KB线程缓冲器可以被配置为最多8个不同的本地存储器集合,每个对应一个线程。(参见图3)每个本地存储器的数值可以通过软件配置来调节。
对于MVP线程模式,该64KB的线程缓冲器的配置方式只有如图7所示的一种。正如任务线程模式,每个MVP线程具有其指向的、作为该内核本身的本地存储器的线程缓冲区,在如图7所示4个线程被配置的情况下,每个线程有64KB/4=16KB的本地存储器。此外,该内核可以被视为一个虚拟的DMA引擎,该引擎能瞬间整体拷贝一个线程的本地存储器内容到下一个线程的本地存储器。该瞬间拷贝流数据通过虚拟DMA引擎在被激活线程中动态改变虚拟的物理映射而达到。每个线程具有其自身的映射而当该线程执行完毕时,线程将升级其自身的映射并依照下述准则重新开始执行:如果本地存储器使能并有效(输入数据到达),线程准备启动;在线程完成、转换映射到下一个本地存储器并标记现行映射的本地存储器有效(输出数据准备为下一个线程);返回第一步。
在图7中,线程0 701、线程1 702、线程2 703以及线程3 704分别与被映射作为其本地存储器的存储区域(即705、706、707、708)连接,在上述这些存储区域之间,通过虚拟DMA连接(709、710、711)连接。值得一提的是,在图7中,该虚拟DMA连接(709、710、711)在硬件上不存在的,在本实施例中,通过改变线程的配置而实现上述存储区域中的数据转移,使得其从外面看起来好像存在连接一样,但实际上并不存在硬件的连接。图9中的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在取指的同时就进行支路解析。于是该特性将由设计性能决定其开关,不需要进一步的设定来适应不同的数量的正在运行的线程。
如图8所示,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阶段。同时,指令指针的操作需要考虑任意一种指令取消的可能。
在本实施例中,该MVP不带通用处理器,而是通过接口与外部的中央处理器连接,实际上,是一个协处理器。在其他实施例中,该MVP也可以带有通用处理器构成一个完整的工作平台,其好处是不需要外接中央处理器,自成一体,便于使用。
在本实施例中,一个内核的处理步骤如下:
步骤S11开始:在本步骤中,开始一个内核中线程的处理,在本实施例中,上述线程可能是一个,也可能是属于同一个内核的多个线程。
步骤S12激活内核:在本步骤中,激活系统中的一个内核(即应用程序),系统可能包括多个内核,不一定每个内核在任何时候都在运行,当系统需要某一个应用程序工作时,在系统中通过写入特定的内部寄存器的值激活该内核(应用程序)。
步骤S13数据集准备好?判断上述内核的数据集是否准备完毕,如是,执行下一步骤;如不是,重复本步骤。
步骤S14内核建立:在本步骤中,通过对内部寄存器的值的写入,例如,前面提及的线程配置中的各寄存器的值等,建立该被激活的内核。
步骤S15存储资源准备?判断该内核对应的存储资源是否准备完毕,如是,执行下一步骤;如否,重复本步骤。在本步骤所述的存储资源准备包括存储器的使能等。
步骤S16内核调度:在本步骤中,对上述内核进行调度,例如,分配对应于该线程的存储区域,导入该线程需要的数据等等。
步骤S17线程资源准备?判断关于线程的资源是否准备好,如是,执行下一步骤,如不是,重复上述步骤,等待其完成准备。这些资源包括存储区域的使能及有效(即数据已输入)、本地存储器被配置且被标记等。
步骤S18线程启动:在本步骤中,该线程启动,开始运行。
步骤S19执行程序:众所周知,线程是多条代码的集合,在本步骤中,就是按照上述代码的顺序,逐条执行上述代码。
步骤S20程序完成?判断上述线程中的程序是否执行完毕,如是,执行下一步骤,如否,重复本步骤,等待该线程中的程序执行完成。
步骤S21线程退出:在本步骤中,由于该线程已经完成,因此,退出该线程,释放该线程所占有的资源。
步骤S22仍需要该内核?判断该内核是否还有其他线程需要处理或是否还有属于该内核的数据在输入,如果是,则认为该内核仍有需要,可以保持,跳转到步骤S13,继续执行;如否,则认为该内核不再需要,执行下一步骤。
步骤S23退出该内核:退出该内核,释放其占用的资源,结束一次内核的处理流程。
值得一提的是,上述方法描述了一个内核的处理,在本实施例中,上述的处理方法在同一时件间,可以并行进行4个线程的处理,即在同一时间内可以同时进行4套上述步骤,这些线程可以分别属于不同的内核,也可以是同一个内核的4个线程。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种并行处理器,其特征在于,包括:
多个线程处理引擎:用于处理被分配给该线程处理引擎的线程,所述多个线程处理引擎并行连接;
线程管理及控制单元:用于取得、判断所述多个线程处理引擎的状态,并将处于等待队列中的线程分配到所述多个线程处理引擎中;
还包括用于数据及线程缓冲、指令缓冲的内部存储系统以及用于存储所述并行处理器的各种状态的寄存器;
所述线程管理及控制单元还包括用于配置线程的线程控制寄存器,所述线程控制寄存器包括:用于表明任务程序的起始物理地址的起始程序指针寄存器,用于表明一个线程的线程本地存储区域的起始地址的本地存储区域起始基点寄存器,用于表明线程全局存储区域的起始地址的全局存储区域起始基点寄存器以及用于设置该线程优先级、运行模式的线程配置寄存器。
2.根据权利要求1所述的并行处理器,其特征在于,所述内部存储系统包括用于对所述线程及数据进行缓冲的数据及线程缓冲单元以及对指令进行缓冲的指令缓冲单元。
3.根据权利要求1所述的并行处理器,其特征在于,所述多个线程处理引擎包括4个并行的、相互独立的算术逻辑运算单元以及与所述算术逻辑运算单元一一对应的乘加器。
4.根据权利要求1所述的并行处理器,其特征在于,所述线程管理及控制单元依据一个线程的输入数据状态以及该线程的输出缓冲能力来确定是否激活该线程;被激活的线程数大于同时运行的线程数。
5.根据权利要求4所述的并行处理器,其特征在于,一个被激活的线程在不同的时间段在所述线程管理及控制单元控制下运行在不同的线程处理引擎上。
6.根据权利要求5所述的并行处理器,其特征在于,所述线程管理及控制单元通过改变所述线程处理引擎的配置来改变被激活线程运行的线程处理引擎;所述配置包括所述起始程序指针寄存器的值。
7.根据权利要求6所述的并行处理器,其特征在于,还包括通过将数据写入到中断寄存器中断线程的线程中断单元,所述线程中断单元在其中断寄存器控制位置位时控制一指定内核中的线程中断。
8.根据权利要求1所述的并行处理器,其特征在于,所述多个线程处理引擎、线程管理及控制单元以及内部存储系统通过系统总线接口与外接或内置的通用处理器以及外部存储系统相连。
9.一种在并行处理器中对线程进行并行处理的方法,其特征在于,包括如下步骤:
A)配置所述并行处理器中的多个线程处理引擎;
B)根据线程处理引擎状态及待处理线程队列状态,将所述待处理线程队列中的线程送入所述线程处理引擎;
C)所述线程处理引擎处理送入的线程,使之运行;
所述步骤A)进一步包括:
A1)判断所述待处理线程的模式,并依据所述待处理线程的模式配置线程处理引擎及该引擎所对应的本地存储区域;
所述待处理线程模式包括数据并行模式、任务并行模式以及并行多线程虚拟通道模式。
10.根据权利要求9所述的方法,其特征在于,所述步骤C)进一步包括:
C1)取得正在运行的线程的指令;
C2)编译并执行所述线程的指令。
11.根据权利要求10所述的方法,其特征在于,所述步骤C1)中,每个周期取得一个线程处理引擎所执行线程的指令,多个并行的线程处理引擎轮流取得其执行线程所对应的指令。
12.根据权利要求9所述的方法,其特征在于,当运行线程的模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当接收到一个线程的软件或外部中断请求时,中断所述线程并执行事先设置的该线程的中断程序。
13.根据权利要求9所述的方法,其特征在于,当运行线程的模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当任意一个正在运行的线程需要等待较长时间,释放所述线程占用的线程处理引擎资源,并将所述资源配置到其他正在运行的线程。
14.根据权利要求9所述的方法,其特征在于,当运行线程的模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当任意一个正在运行的线程执行完成,释放所述线程占用的线程处理引擎资源,并将所述待处理线程队列中的一个线程激活并送到所述线程处理引擎。
15.根据权利要求12、13或14所述的方法,其特征在于,通过改变所述线程处理引擎的配置来转换其处理的线程,所述线程处理引擎的配置包括其所对应的本地存储区域的位置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910190339.1A CN102023844B (zh) | 2009-09-18 | 2009-09-18 | 并行处理器及其线程处理方法 |
PCT/CN2009/074826 WO2011032327A1 (zh) | 2009-09-18 | 2009-11-05 | 并行处理器及其线程处理方法 |
US13/395,694 US20120173847A1 (en) | 2009-09-18 | 2009-11-05 | Parallel processor and method for thread processing thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910190339.1A CN102023844B (zh) | 2009-09-18 | 2009-09-18 | 并行处理器及其线程处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102023844A CN102023844A (zh) | 2011-04-20 |
CN102023844B true CN102023844B (zh) | 2014-04-09 |
Family
ID=43758029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910190339.1A Active CN102023844B (zh) | 2009-09-18 | 2009-09-18 | 并行处理器及其线程处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120173847A1 (zh) |
CN (1) | CN102023844B (zh) |
WO (1) | WO2011032327A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101613971B1 (ko) * | 2009-12-30 | 2016-04-21 | 삼성전자주식회사 | 프로그램 코드의 변환 방법 |
CN103034475B (zh) * | 2011-10-08 | 2015-11-25 | 中国移动通信集团四川有限公司 | 分布式并行计算方法、装置及系统 |
US9507638B2 (en) * | 2011-11-08 | 2016-11-29 | Nvidia Corporation | Compute work distribution reference counters |
US20130328884A1 (en) * | 2012-06-08 | 2013-12-12 | Advanced Micro Devices, Inc. | Direct opencl graphics rendering |
CN103955408B (zh) * | 2014-04-24 | 2018-11-16 | 深圳中微电科技有限公司 | Mvp处理器中有dma参与的线程管理方法及装置 |
CN106464605B (zh) * | 2014-07-14 | 2019-11-29 | 华为技术有限公司 | 应用于网络设备的处理报文的方法和相关设备 |
US9965343B2 (en) * | 2015-05-13 | 2018-05-08 | Advanced Micro Devices, Inc. | System and method for determining concurrency factors for dispatch size of parallel processor kernels |
WO2017203096A1 (en) * | 2016-05-27 | 2017-11-30 | Picturall Oy | A computer-implemented method for reducing video latency of a computer video processing system and computer program product thereto |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
CN107741883B (zh) * | 2017-09-29 | 2018-10-23 | 武汉斗鱼网络科技有限公司 | 一种避免线程阻塞的方法、装置及计算机设备 |
US10996980B2 (en) * | 2018-04-23 | 2021-05-04 | Avago Technologies International Sales Pte. Limited | Multi-threaded command processing system |
CN109658600B (zh) * | 2018-12-24 | 2021-10-15 | 福历科技(上海)有限公司 | 一种自动并发出货系统及方法 |
WO2020132841A1 (zh) * | 2018-12-24 | 2020-07-02 | 华为技术有限公司 | 一种基于多线程的指令处理方法及装置 |
GB2580327B (en) * | 2018-12-31 | 2021-04-28 | Graphcore Ltd | Register files in a multi-threaded processor |
CN110110844B (zh) * | 2019-04-24 | 2021-01-12 | 西安电子科技大学 | 基于OpenCL的卷积神经网络并行处理方法 |
CN112732416B (zh) * | 2021-01-18 | 2024-03-26 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1517872A (zh) * | 2003-01-16 | 2004-08-04 | 国际商业机器公司 | 动态分配计算机资源的方法和装置 |
CN101344842A (zh) * | 2007-07-10 | 2009-01-14 | 北京简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US20060218556A1 (en) * | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
US7366884B2 (en) * | 2002-02-25 | 2008-04-29 | Agere Systems Inc. | Context switching system for a multi-thread execution pipeline loop and method of operation thereof |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US8539211B2 (en) * | 2005-01-25 | 2013-09-17 | Nytell Software LLC | Allocating registers for loop variables in a multi-threaded processor |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US8276164B2 (en) * | 2007-05-03 | 2012-09-25 | Apple Inc. | Data parallel computing on multiple processors |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
-
2009
- 2009-09-18 CN CN200910190339.1A patent/CN102023844B/zh active Active
- 2009-11-05 US US13/395,694 patent/US20120173847A1/en not_active Abandoned
- 2009-11-05 WO PCT/CN2009/074826 patent/WO2011032327A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1517872A (zh) * | 2003-01-16 | 2004-08-04 | 国际商业机器公司 | 动态分配计算机资源的方法和装置 |
CN101344842A (zh) * | 2007-07-10 | 2009-01-14 | 北京简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120173847A1 (en) | 2012-07-05 |
CN102023844A (zh) | 2011-04-20 |
WO2011032327A1 (zh) | 2011-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023844B (zh) | 并行处理器及其线程处理方法 | |
CN101739242B (zh) | 一种流数据处理方法及流处理器 | |
KR101839544B1 (ko) | 이종 코어의 자동 부하 균형 | |
US9529643B2 (en) | Method and system for accelerating task control flow | |
CN101542412B (zh) | 用于多线程处理器中自动低功率模式调用的装置和方法 | |
US8489904B2 (en) | Allocating computing system power levels responsive to service level agreements | |
US20160306650A1 (en) | Power-saving operating system for virtual environment | |
CN101681262B (zh) | 用于执行线程的处理器及方法 | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
US20080244222A1 (en) | Many-core processing using virtual processors | |
US9146609B2 (en) | Thread consolidation in processor cores | |
US20150046679A1 (en) | Energy-Efficient Run-Time Offloading of Dynamically Generated Code in Heterogenuous Multiprocessor Systems | |
CN103842933B (zh) | 多核平台中的受约束引导技术 | |
US20150067356A1 (en) | Power manager for multi-threaded data processor | |
CN112199173B (zh) | 双核cpu实时操作系统数据处理方法 | |
WO2013184380A2 (en) | Systems and methods for efficient scheduling of concurrent applications in multithreaded processors | |
WO2013131340A1 (zh) | 片上系统soc的多处理器的调度方法及装置 | |
CN101238425A (zh) | 使用低功率虚拟线程的软件指定的电源性能管理装置和方法 | |
EP2523120A1 (en) | Microcomputer architecture for low power efficient baseband processing | |
Kato et al. | Operating systems challenges for GPU resource management | |
US20060168428A1 (en) | Method of providing microcontroller context management | |
US7562207B2 (en) | Deterministic microcontroller with context manager | |
Ventroux et al. | Scmp architecture: an asymmetric multiprocessor system-on-chip for dynamic applications | |
WO2006081094A2 (en) | Deterministic microcontroller | |
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 of 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 |