CN102023844A - 并行处理器及其线程处理方法 - Google Patents

并行处理器及其线程处理方法 Download PDF

Info

Publication number
CN102023844A
CN102023844A CN2009101903391A CN200910190339A CN102023844A CN 102023844 A CN102023844 A CN 102023844A CN 2009101903391 A CN2009101903391 A CN 2009101903391A CN 200910190339 A CN200910190339 A CN 200910190339A CN 102023844 A CN102023844 A CN 102023844A
Authority
CN
China
Prior art keywords
thread
processing engine
parallel
instruction
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.)
Granted
Application number
CN2009101903391A
Other languages
English (en)
Other versions
CN102023844B (zh
Inventor
梅思行
王世好
劳咏仪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN ICUBE TECHNOLOGY CORP
Original Assignee
SHENZHEN ICUBE TECHNOLOGY CORP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN ICUBE TECHNOLOGY CORP filed Critical SHENZHEN ICUBE TECHNOLOGY CORP
Priority to CN200910190339.1A priority Critical patent/CN102023844B/zh
Priority to PCT/CN2009/074826 priority patent/WO2011032327A1/zh
Priority to US13/395,694 priority patent/US20120173847A1/en
Publication of CN102023844A publication Critical patent/CN102023844A/zh
Application granted granted Critical
Publication of CN102023844B publication Critical patent/CN102023844B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques 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和线程3 404分别通过并行的I/O连接线405与超标量执行通道406连接,同时,这些线程(任务)还单独与本地存储器中被划分到该线程的区域(407、408、409、410)连接,在这些区域之间,通过虚拟的DAM引擎连接,这些虚拟的DMA引擎使得在需要的时候可以在上述被划分的区域之间快速转移其中的数据;此外,这些被划分的区域分别与总线411连接,而该总线411还与上述超标量执行通道406连接。图5从另一个角度描述了在MVP模式下的线程情况。在图5中,包括4个正在运行的线程,即运行线程0 501、运行线程1 502、运行线程2 503以及运行线程3 504,这4个线程分别在上述4个ALU上运行,其分别通过并行的I/O线连接在超标量执行通道505上;同时,上述4个正在运行的线程分别与准备完毕的线程队列507连接(实际上,上述4个运行线程就是由上述线程队列507中取出的),由上面的描述可知,上述队列中排列有已经准备好但是尚未运行的线程,这些线程最多可以有8个,当然,根据实际情况,在其中可能也不足8个;其中,这些准备好的线程可以是同一个内核(应用程序,图5中的内核1 508到内核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 (19)

1.一种并行处理器,其特征在于,包括:
多个线程处理引擎:用于处理被分配给该线程处理引擎的线程,所述多个线程处理引擎并行连接;
线程管理单元:用于取得、判断所述多个线程处理引擎的状态,并将处于等待队列中的线程分配到所述多个线程处理引擎中。
2.根据权利要求1所述的并行处理器,其特征在于,还包括用于数据及线程缓冲、指令缓冲的内部存储系统以及用于存储所述并行处理器的各种状态的寄存器。
3.根据权利要求2所述的并行处理器,其特征在于,所述内部存储系统包括用于对所述线程及数据进行缓冲的数据及线程缓冲单元以及对指令进行缓冲的指令缓冲单元。
4.根据权利要求1所述的并行处理器,其特征在于,所述多个线程处理引擎包括4个并行的、相互独立的算术逻辑运算单元以及与所述算术逻辑运算单元一一对应的乘加器。
5.根据权利要求1所述的并行处理器,其特征在于,所述线程管理器还包括用于配置线程的线程控制寄存器,所述线程控制寄存器包括:用于表明任务程序的起始物理地址的起始程序指针寄存器,用于表明一个线程的线程本地存储区域的起始地址的本地存储区域起始基点寄存器,用于表明线程全局存储区域的起始地址的全局存储区域起始基点寄存器以及用于设置该线程优先级、运行模式的线程配置寄存器。
6.根据权利要求1所述的并行处理器,其特征在于,所述线程管理器依据一个线程的输入数据状态以及该线程的输出缓冲能力来确定是否激活该线程;所述被激活的线程数大于同时运行的线程数。
7.根据权利要求6所述的并行处理器,其特征在于,所述一个被激活的线程在不同的时间段在所述线程管理器控制下运行在不同的线程处理引擎上。
8.根据权利要求7所述的并行处理器,其特征在于,所述线程管理器通过改变所述线程处理引擎的配置来改变所述被激活线程运行的线程处理引擎;所述配置包括所述起始程序指针寄存器的值。
9.根据权利要求1所述的并行处理器,其特征在于,还包括通过将数据写入到中断寄存器中断线程的线程中断单元,所述线程中断单元在其中断寄存器控制位置位时控制所述内核或其他内核中的线程中断。
10.根据权利要求2所述的并行处理器,其特征在于,所述线程处理引擎、线程管理器以及内部存储系统通过系统总线接口与外接或内置的通用处理器以及外部存储系统相连。
11.一种在并行处理器中对线程进行并行处理的方法,其特征在于,包括如下步骤:
A)配置所述并行处理器中的多个线程处理引擎;
B)根据所述线程处理引擎状态及待处理线程队列状态,将所述待处理线程队列中的线程送入所述线程处理引擎;
C)所述线程处理引擎处理送入的线程,使之运行。
12.根据权利要求11所述的方法,其特征在于,所述步骤A)进一步包括:
A1)判断所述待处理线程的类型,并依据所述线程类型配置线程处理引擎及该引擎所对应的本地存储区域。
13.根据权利要求12所述的方法,其特征在于,所述待处理线程模式包括数据并行模式、任务并行模式以及并行多线程虚拟通道模式。
14.根据权利要求11所述的方法,其特征在于,所述步骤C)进一步包括:
C1)取得所述正在运行的线程的指令;
C2)编译并执行所述线程的指令。
15.根据权利要求14所述的方法,其特征在于,所述步骤C1)中,每个周期取得一个线程处理引擎所执行线程的指令,所述多个并行的线程处理引擎轮流取得其执行线程所对应的指令。
16.根据权利要求11所述的方法,其特征在于,当所述运行线程模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当接收到一个线程的软件或外部中断请求时,中断所述线程并执行事先设置的该线程的中断程序。
17.根据权利要求11所述的方法,其特征在于,当所述运行线程模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当任意一个正在运行的线程需要等待较长时间,释放所述线程占用的线程处理引擎资源,并将所述资源配置到其他正在运行的线程。
18.根据权利要求11所述的方法,其特征在于,当所述运行线程模式为并行多线程虚拟通道模式时,所述步骤C)还包括:当任意一个正在运行的线程执行完成,释放所述线程占用的线程处理引擎资源,并将所述待处理线程队列中的一个线程激活并送到所述线程处理引擎。
19.根据权利要求16、17或18所述的方法,其特征在于,通过改变所述线程处理引擎的配置来转换其处理的线程,所述线程处理引擎的配置包括其所对应的本地存储区域的位置。
CN200910190339.1A 2009-09-18 2009-09-18 并行处理器及其线程处理方法 Active CN102023844B (zh)

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 true CN102023844A (zh) 2011-04-20
CN102023844B 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)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034475A (zh) * 2011-10-08 2013-04-10 中国移动通信集团四川有限公司 分布式并行计算方法、装置及系统
CN103176848A (zh) * 2011-11-08 2013-06-26 辉达公司 计算工作分布参考计数器
CN103955408A (zh) * 2014-04-24 2014-07-30 深圳中微电科技有限公司 Mvp处理器中有dma参与的线程管理方法及装置
CN106464605A (zh) * 2014-07-14 2017-02-22 华为技术有限公司 应用于网络设备的处理报文的方法和相关设备
CN107515795A (zh) * 2017-09-08 2017-12-26 北京京东尚科信息技术有限公司 基于队列的多任务并行数据处理方法、装置、介质和设备
CN107741883A (zh) * 2017-09-29 2018-02-27 武汉斗鱼网络科技有限公司 一种避免线程阻塞的方法、装置及计算机设备
CN109658600A (zh) * 2018-12-24 2019-04-19 小雨科技(上海)有限公司 一种自动并发出货系统及方法
CN110110844A (zh) * 2019-04-24 2019-08-09 西安电子科技大学 基于OpenCL的卷积神经网络并行处理方法
CN111381939A (zh) * 2018-12-31 2020-07-07 图核有限公司 多线程处理器中的寄存器文件
CN112052077A (zh) * 2019-06-06 2020-12-08 北京字节跳动网络技术有限公司 软件任务管理的方法、装置、设备、介质
CN112732416A (zh) * 2021-01-18 2021-04-30 深圳中微电科技有限公司 有效消除数据访问延迟的并行数据处理方法及并行处理器
CN112789593A (zh) * 2018-12-24 2021-05-11 华为技术有限公司 一种基于多线程的指令处理方法及装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101613971B1 (ko) * 2009-12-30 2016-04-21 삼성전자주식회사 프로그램 코드의 변환 방법
US20130328884A1 (en) * 2012-06-08 2013-12-12 Advanced Micro Devices, Inc. Direct opencl graphics rendering
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
US10593299B2 (en) * 2016-05-27 2020-03-17 Picturall Oy Computer-implemented method for reducing video latency of a computer video processing system and computer program product thereto
US10996980B2 (en) * 2018-04-23 2021-05-04 Avago Technologies International Sales Pte. Limited Multi-threaded command processing system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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
US7222343B2 (en) * 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
JP2008529119A (ja) * 2005-01-25 2008-07-31 エヌエックスピー ビー ヴィ マルチスレッドプロセッサ
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
CN101344842B (zh) * 2007-07-10 2011-03-23 苏州简约纳电子有限公司 多线程处理器及其多线程处理方法
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034475B (zh) * 2011-10-08 2015-11-25 中国移动通信集团四川有限公司 分布式并行计算方法、装置及系统
CN103034475A (zh) * 2011-10-08 2013-04-10 中国移动通信集团四川有限公司 分布式并行计算方法、装置及系统
CN103176848A (zh) * 2011-11-08 2013-06-26 辉达公司 计算工作分布参考计数器
CN103955408A (zh) * 2014-04-24 2014-07-30 深圳中微电科技有限公司 Mvp处理器中有dma参与的线程管理方法及装置
CN103955408B (zh) * 2014-04-24 2018-11-16 深圳中微电科技有限公司 Mvp处理器中有dma参与的线程管理方法及装置
CN106464605B (zh) * 2014-07-14 2019-11-29 华为技术有限公司 应用于网络设备的处理报文的方法和相关设备
CN106464605A (zh) * 2014-07-14 2017-02-22 华为技术有限公司 应用于网络设备的处理报文的方法和相关设备
CN107515795A (zh) * 2017-09-08 2017-12-26 北京京东尚科信息技术有限公司 基于队列的多任务并行数据处理方法、装置、介质和设备
CN107741883A (zh) * 2017-09-29 2018-02-27 武汉斗鱼网络科技有限公司 一种避免线程阻塞的方法、装置及计算机设备
CN109658600A (zh) * 2018-12-24 2019-04-19 小雨科技(上海)有限公司 一种自动并发出货系统及方法
CN112789593A (zh) * 2018-12-24 2021-05-11 华为技术有限公司 一种基于多线程的指令处理方法及装置
CN111381939A (zh) * 2018-12-31 2020-07-07 图核有限公司 多线程处理器中的寄存器文件
CN111381939B (zh) * 2018-12-31 2023-09-01 图核有限公司 多线程处理器中的寄存器文件
CN110110844A (zh) * 2019-04-24 2019-08-09 西安电子科技大学 基于OpenCL的卷积神经网络并行处理方法
CN112052077A (zh) * 2019-06-06 2020-12-08 北京字节跳动网络技术有限公司 软件任务管理的方法、装置、设备、介质
CN112732416A (zh) * 2021-01-18 2021-04-30 深圳中微电科技有限公司 有效消除数据访问延迟的并行数据处理方法及并行处理器
CN112732416B (zh) * 2021-01-18 2024-03-26 深圳中微电科技有限公司 有效消除数据访问延迟的并行数据处理方法及并行处理器

Also Published As

Publication number Publication date
WO2011032327A1 (zh) 2011-03-24
CN102023844B (zh) 2014-04-09
US20120173847A1 (en) 2012-07-05

Similar Documents

Publication Publication Date Title
CN102023844B (zh) 并行处理器及其线程处理方法
CN101739242B (zh) 一种流数据处理方法及流处理器
Caspi et al. A streaming multi-threaded model
KR101839544B1 (ko) 이종 코어의 자동 부하 균형
US9529643B2 (en) Method and system for accelerating task control flow
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US9588771B2 (en) Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
CN101681262B (zh) 用于执行线程的处理器及方法
US9146609B2 (en) Thread consolidation in processor cores
US20150046679A1 (en) Energy-Efficient Run-Time Offloading of Dynamically Generated Code in Heterogenuous Multiprocessor Systems
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management
CN112199173B (zh) 双核cpu实时操作系统数据处理方法
CN101183315A (zh) 一种并行多处理器虚拟机系统
US7565659B2 (en) Light weight context switching
US10949243B2 (en) Reducing IPI overhead with CPU overcommit support via IPI broadcast
CN103793255A (zh) 可配置的多主模式多os内核实时操作系统架构与启动方法
Kato et al. Operating systems challenges for GPU resource management
US20170147345A1 (en) Multiple operation interface to shared coprocessor
US11281487B2 (en) Managing processor overcommit for virtual machines
US7516311B2 (en) Deterministic microcontroller context arrangement
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