CN112445616A - 资源分配方法以及装置 - Google Patents

资源分配方法以及装置 Download PDF

Info

Publication number
CN112445616A
CN112445616A CN202011333493.2A CN202011333493A CN112445616A CN 112445616 A CN112445616 A CN 112445616A CN 202011333493 A CN202011333493 A CN 202011333493A CN 112445616 A CN112445616 A CN 112445616A
Authority
CN
China
Prior art keywords
registers
register
thread group
unit
resource allocation
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
CN202011333493.2A
Other languages
English (en)
Other versions
CN112445616B (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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011333493.2A priority Critical patent/CN112445616B/zh
Publication of CN112445616A publication Critical patent/CN112445616A/zh
Application granted granted Critical
Publication of CN112445616B publication Critical patent/CN112445616B/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

一种资源分配方法以及装置。资源分配方法包括:确定当前线程组单元需要使用的计算单元,计算单元包括M个寄存器,M个寄存器按照寄存器编号排列,计算单元中可用的寄存器的数量为B,当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A;在计算单元的可用的B个寄存器中选择A个寄存器,A个寄存器的寄存器编号是连续的或不连续的;以及分别获得A个寄存器的物理地址。该资源分配方法可以提高寄存器资源的利用率。

Description

资源分配方法以及装置
技术领域
本公开的实施例涉及一种资源分配方法以及装置。
背景技术
在当前设计的处理器中,一个线程组(TG,threadgroup),为由指令处理模块下发的最小线程组单元,例如线程组包括不超过2048个线程(thread),线程组会被拆分为多个线程组单元(wavefront)。线程组单元是着色器输入单元可以处理的最小单元。例如,每个线程组单元包括不超过64个线程。处理单元(CU,compute unit,例如为处理器内部的处理单元)包括多个计算单元(SIMD,single instruction multiple data)。每个计算单元包括多个通用寄存器(GPR,general purpose register)。着色器输入单元(SPI,ShaderProcessor Input)为线程组分配寄存器资源,计算单元将线程组的数据写入寄存器。处理单元中的着色序列器(SQ,shader sequencer)作为处理单元的控制逻辑在执行内核程序的过程中协调计算单元内部各资源的使用方式。
发明内容
本公开的实施例提供一种资源分配方法以及装置。该资源分配方法可以提高寄存器资源的利用率。
本公开至少一个实施例提供了一种资源分配方法以及装置,该资源分配方法包括:确定当前线程组单元需要使用的计算单元,其中,所述计算单元包括M个寄存器,所述M个寄存器按照寄存器编号排列,所述计算单元中可用的寄存器的数量为B,所述当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A;在所述计算单元的可用的B个寄存器中选择A个寄存器,其中,所述A个寄存器的寄存器编号是连续的或不连续的;以及分别获得所述A个寄存器的物理地址。
例如,在本公开至少一实施例提供的资源分配方法中,所述A个寄存器中至少两个的寄存器编号不是连续的。
例如,在本公开至少一实施例提供的资源分配方法中,分别获得所述A个寄存器的物理地址包括:获取所述A个寄存器对应的掩码向量,根据所述计算单元可以取得的最大地址及所述掩码向量得到所述A个寄存器的物理地址。
例如,在本公开至少一实施例提供的资源分配方法中,根据所述计算单元可以取得的最大地址及所述掩码向量得到所述A个寄存器的物理地址,包括:将所述掩码向量的各位数值进行取反以得到虚拟掩码向量,对所述虚拟掩码向量使用二分法进行转化,分别得到所述A个寄存器的虚拟地址以分别使用所述最大地址减去所述A个寄存器的每个的虚拟地址,从而得到所述A个寄存器每个的物理地址。
例如,在本公开至少一实施例提供的资源分配方法中,对所述虚拟掩码向量使用二分法进行转化以分别得到所述A个寄存器中的虚拟地址,包括:按照所述A个寄存器的寄存器编号由小到大的顺序依次得到所述A个寄存器的每个对应的虚拟地址,以获得A个寄存器每个的物理地址,其中,当计算所述A个寄存器的第N个寄存器的虚拟地址之后,将所述第N个寄存器在掩码向量中对应的数值清零并得到更新的掩码向量,根据所述更新的掩码向量计算所述第N+1个寄存器的虚拟地址,N为正整数且N小于A。
例如,在本公开至少一实施例提供的资源分配方法中,在所述计算单元的所述可用的寄存器中选择所述A个寄存器,包括:在所述计算单元的所述可用的寄存器中,按照所述可用的寄存器的寄存器编号从小到大或从大到小的顺序依次选择所述A个寄存器。
例如,本公开至少一实施例提供的资源分配方法还包括:判断所述寄存器是否按照单个线程组单元需求进行配置,当判断为是时确定所述当前线程组单元需要使用的寄存器。
例如,在本公开至少一实施例提供的资源分配方法中,当前执行任务包括至少一个线程组,所述至少一个线程组每个包括多个线程组单元,其中,所述至少一个线程组的数量小于预设值时,判断所述寄存器是按照所述单个线程组单元需求进行配置。
例如,本公开至少一实施例提供的资源分配方法还包括:根据所述A个寄存器的物理地址将所述当前线程组单元的数据对应写入所述A个寄存器中。
例如,在本公开至少一实施例提供的资源分配方法中,根据所述A个寄存器的物理地址将所述当前线程组单元的数据对应写入所述A个寄存器中,包括:将所述当前线程组单元对应在线程组中的线程编号写入所述A个寄存器以得到所述线程编号与所述A个寄存器的对应关系,其中,所述线程组包括所述当前线程组单元,根据所述线程编号与所述A个寄存器的对应关系,将所述A个寄存器分配给所述当前线程组单元,以将所述当前线程组单元的数据对应写入所述A个寄存器中。
例如,在本公开至少一实施例提供的资源分配方法中,将所述当前线程组单元对应在线程组中的线程编号写入所述A个寄存器以得到所述线程编号与所述A个寄存器的对应关系,包括:将所述线程编号设置在至少一个维度,根据所述A个寄存器的物理地址,将所述至少一个维度每个的线程编号按照所述至少一个维度的排列顺序写入所述A个寄存器,从而确定所述至少一个维度每个的线程编号与所写入的所述A个寄存器每个的物理地址一一对应。
本公开至少一个实施例还提供了一种资源分配装置,该资源分配装置包括计算单元选择模块、寄存器选择模块以及物理地址获得模块。计算单元选择模块配置为确定当前线程组单元需要使用的计算单元,其中,所述计算单元包括M个寄存器,所述M个寄存器按照寄存器编号排列,所述计算单元中可用的寄存器的数量为B,所述当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A;寄存器选择模块配置为在所述计算单元的可用的B个寄存器中选择A个寄存器,其中,所述A个寄存器的寄存器编号是连续的或不连续的;物理地址获得模块配置为分别获得所述A个寄存器的物理地址。
本公开至少一实施例提供的一种资源分配方法以及装置,可以在计算单元的可用的寄存器中选择当前线程组单元需要使用的寄存器并分别获得该寄存器的物理地址,该寄存器的寄存器编号不限于是连续的,也就是说可以直接选择离散的寄存器并获得该寄存器的物理地址,以将离散的寄存器使用起来,增加并行程序的个数,进而提高了寄存器的利用率。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为计算单元的掩码表的示意图;
图1B为计算单元的寄存器的当前空闲状态的向量示意图;
图2A为需要分配寄存器的线程组的需求向量的示意图;
图2B为图2A所示的需求向量取反后的示意图;
图2C为图2B所示的向量与图1B所示的向量进行逻辑运算后的结果示意图;
图3为本公开至少一实施例提供的一种资源分配方法的流程示意图;
图4为本公开至少另一实施例提供的一种资源分配方法的流程示意图;
图5为本公开至少一实施例提供的一种资源分配方法的执行过程示意图;
图6为本公开至少再一实施例提供的一种资源分配方法的流程示意图;
图7为本公至少一实施例提供的一种使用二分法获取寄存器的虚拟地址的示意图;以及
图8为本公开至少一实施例提供的一种资源分配装置的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
在处理器中,指令处理模块CP(command processor)负责将每个任务包含的线程组TG和相关信息调度到不同的着色器输入单元SPI上进行拆分,着色器输入单元SPI将指令处理模块CP发送的线程组单元拆分为线程组单元并为每个线程组单元分配寄存器GPR资源。
图1A为计算单元的掩码表的示意图;图1B为计算单元的寄存器的当前空闲状态的向量示意图。
如图1A所示,每个计算单元SIMD在着色器输入单元SPI中都保存每个计算单元SIMD的掩码表,每个计算单元SIMD的掩码表用于记录该计算单元SIMD中的所有寄存器GPR的状态,也即使用与否情况,将所有掩码表形成一个掩码矩阵。例如,图中的纵向上的标号示出了计算单元SIMD的编号,每个计算单元SIMD包括的多个寄存器GPR的状态在横向排列示出。
如图1B所示,以一个计算单元SIMD为例,横坐标表示该计算单元SIMD包括的多个寄存器GPR的寄存器编号S0。若该计算单元SIMD的某个GPR已被分配,则在该计算单元SIMD的掩码向量对应位置(也即该GPR的寄存器编号对应的位置)用0表示该GPR的状态;若某个GPR处于未被分配使用状态,则在相应的位置用1表示,例如,若某个线程组单元被执行完成,则将该线程组单元分配到的寄存器GPR释放,即在该寄存器GPR在掩码向量中对应位置用1表示该GPR的状态。也就是说,图中的1所在位置对应的寄存器编号S0的寄存器GPR处于空闲状态(也即可用状态),图中0所在位置对应的寄存器编号S0的寄存器GPR被占用。
在一种资源分配方式中,根据计算单元SIMD对于每个线程组的线程组单元分配的寄存器GPR的使用方式,要求分配的寄存器GPR的物理地址必须连续的。同时由于一个线程组TG内的所有线程组单元必须放置在同一个处理单元CU上,所以在寻找所有满足条件的计算单元SIMD的时候必须考虑到同一个线程组TG中后续线程组单元的需求,只有整个线程组TG的所有线程组单元需要分配的寄存器GPR可以在单个计算单元SIMD上满足,这个计算单元SIMD才可以被认为是满足条件的。因此着色器输入单元SPI必须根据上述条件为每个线程组单元找到所有满足条件的计算单元SIMD,并在选定的计算单元SIMD上找到满足条件的具体的寄存器GPR的物理地址。若没有满足条件的处理单元CU和计算单元SIMD,着色器输入单元SPI会暂停这个线程组单元的资源分配请求并暂停之后所有线程组TG的拆分工作,直到之前分配完成的线程组单元被执行完成后释放足够的资源。
例如,着色器输入单元SPI会默认将整个线程组TG平均分配到一个处理单元CU的每一个计算单元SIMD上。例如,将线程组TG包括的线程组单元的数量均分,每个计算单元SIMD都为同样数量的线程组单元分配寄存器GPR。因此,在收到指令处理模块CP发下的一个线程组TG时,着色器输入单元SPI会检查图1A中的每一个计算单元SIMD上的寄存器GPR使用情况。例如,着色器输入单元SPI比较每一个计算单元SIMD的掩码向量中连续可用寄存器GPR的最大个数与整个线程组TG分配到每一个计算单元SIMD上的寄存器需求量,如果寄存器需求量小于计算单元SIMD的掩码向量中连续可用寄存器GPR的最大个数,就判定该计算单元SIMD为可用的计算单元SIMD,着色器输入单元SPI会根据轮询方式依次将线程组TG内的每一个线程组单元分配到在同一个处理单元CU上的每一个计算单元SIMD中。
例如,在为当前线程组单元选择一个计算单元SIMD进行分配时,着色器输入单元SPI将包含当前线程组单元的线程组TG中尚未完成分配的所有线程组单元的总寄存器GPR需求个数,作为该线程组单元所需的寄存器GPR个数,形成一个与图1A所示掩码表位宽一致的需求向量。也就是说,每个计算单元SIMD在为线程组单元分配寄存器的时候都会形成一个需求向量。例如,属于同一个任务中的线程组TG包含的所有线程组单元请求的寄存器数量相同。例如,一个线程组TG总共含有16个线程组单元,该线程组TG分配到每个计算单元SIMD的线程组单元个数为4,若每个线程组单元需要2个寄存器GPR,则认为分配到每一个计算单元SIMD上的第一个线程组单元的寄存器GPR需求量是8(第二个线程组单元的寄存器GPR需求量则是6,第三个线程组单元的寄存器GPR需求量则为4,以此类推)。
图2A为需要分配寄存器的线程组的需求向量的示意图。图2B为图2A所示的需求向量取反后的示意图。图2C为图2B所示的向量与图1B所示的向量进行逻辑运算后的结果示意图。结合图2A至图2C,对寄存器GPR的一种分配过程进行说明。
需要说明的是,本公开中的寄存器GPR可以包括向量通用寄存器(VGPR,generalpurpose register)和标量通用寄存器(SGPR,scalar general purpose register)。每个向量通用寄存器包含64个32位寄存器,向量通用寄存器中每个单独寄存器供一个线程组单元中的一个线程使用。每个标量寄存器为32位寄存器,其可以供一个线程组单元中的所有线程使用。
如图2A所示,示例地,以每个计算单元SIMD包括32个寄存器GPR为例,当第一个线程组单元的需求量是8的情况下,计算单元SIMD中的每个寄存器对应一个字节(bit),此时,当前线程组单元对应的需求向量即为32’h0000_00ff(h表示十六进制数,还可以表示为二进制的数值32’b0000_0000_0000_0000_0000_0000_1111_1111),该需求向量对应于图2A中的第0行,也就是说左移位数W0的值为0。第二个线程组单元的需求向量(此时第二个线程组单元的需求量是6)则为32’h0000_003f(即,32’b0000_0000_0000_0000_0000_0000_0011_1111)。以图中第一个线程组单元的需求向量为例,第0行的需求向量32’h0000_00ff扩展成为一个32乘32的需求方阵,在第1行的需求向量较第0行的需求方阵左移一位,每增加一行左移的位数W0增加一位,按照该方式形成需求方阵。在上述示例中,第二行的向量就是32'h0000_01fe,以此类推,此时每行数字为1的位置表示的就是将该线程组单元的寄存器GPR基地址(例如用,分配的第一个寄存器的编号表示)放置在对角线上,那么对角线所在位置对应的寄存器编号为需要关注的寄存器GPR。
如图2B所示,将图2A中的方阵的数值进行取反,也就是说,将原来的数字1变为数字0,数字0变为数字1,得到图2B中的方阵,从而第0行就变为32’hffff_fff0,第1行就变为32’hffff_ffe0。此时,每行数字为1的位置表示的就是我们在该行这种放置方式下不关心的寄存器GPR位置,这些位置对应计算单元SIMD的掩码表中的位置我们并不关心其是否已经被占用,我们只关心每行中数字为0的寄存器GPR是否为可用的。只有这些数字0对应的计算单元SIMD掩码表中的位置为1(表示该寄存器GPR未被占用)该行对应的放置方式是可行的。
将图2B中的方阵的每一行与图1B示出的计算单元SIMD的掩码向量按位进行或逻辑运算,得到如图2C所示的方阵。在图2C示出的方阵中,纵坐标表示寄存器的基地址V0,也就是为当前线程组单元分配的第一个寄存器的编号。在该方阵中一行中的数字都为1时,表示该行对应存器的基地址V0是可行的寄存器分配方式。图中第22行(编号为22的寄存器作为基地址)为可行的分配方式。从图1B中可以看出寄存器编号为22至寄存器编号为29的连续8个寄存器是可用的,所以上述方法找到的寄存器GPR分配方式是可行的。
着色器输入单元SPI的资源分配模块在为当前线程组单元分配好寄存器GPR的基地址后,会将该地址送入着色器输入单元SPI内部的寄存器GPR初始化模块,该模块将每个线程组单元的线程编号按X、Y和Z方向上的在线程组TG中的线程编号ID写入分配到的寄存器GPR中(若只有X方向则写入分配到的第一个寄存器GPR中,若有X和Y方向则写入分配到的第一个寄存器GPR和第二个寄存器GPR中,若三个方向都有则将分配到的前三个GPR写满),以此告知计算单元SIMG线程和寄存器GPR的对应关系。以线程编号包含三个方向为例,当前和寄存器GPR分配地址是连续的,故在X方向上将线程编号写入第一个分配到的和寄存器GPR后会自动将寄存器GPR地址加1并将Y方向的线程编号写入第二个分配到的和寄存器GPR中,完成Y方向的初始化后和寄存器GPR地址再加1进行Z方向的和寄存器GPR初始化,完成后切换到下一个线程组单元分配的寄存器中重复上述过程。该功能由着色器输入单元SPI中的状态机控制,若线程组TG只有X和Y方向的线程编号,则寄存器GPR初始化模块会在完成Y方向后切换到下一个线程组单元分配的寄存器中重复上述过程。
在上述分配方式中,为线程组单元指定计算单元SIMD是根据在该计算单元SIMD上所有剩余线程组单元需求的寄存器GPR个数进行分配,会造成离散的寄存器GPR资源无法被充分利用,同时因为优先使用连续的寄存器GPR资源会造成更多的离散资源,导致最终由于离散资源过多,检测寄存器SIMD是否可用时会误认为寄存器SIMD上没有足够的资源来满足单个线程组单元的需求,造成线程组单元因没有分配到资源而无法开始执行内核程序,相应的增加了从任务下发到任务完成的时间,减少了任务的并行度。
相对于超算类型的应用,人工智能相关的应用会有比较多的小任务,每个任务包含的线程的数量不多,在这种情况下,释放寄存器GPR资源的时间点会由于每个任务执行时间的不同而不同,因此会产生很多离散的寄存器GPR使用情况。如果不能充分利用产生的离散寄存器GPR则会导致处理单元SPI误判计算单元SIMD上没有足够的资源放置线程组单元造成资源浪费。
本公开至少一实施例提供一种资源分配方法。该资源分配方法包括:确定当前线程组单元需要使用的计算单元,其中,计算单元包括M个寄存器,M个寄存器按照寄存器编号排列,计算单元中可用的寄存器的数量为B,当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A;在计算单元的可用的B个寄存器中选择A个寄存器,其中,A个寄存器的寄存器编号是连续的或不连续的;以及分别获得所述A个寄存器的物理地址。
本公开上述实施例提供的资源分配方法,可以在计算单元的可用的寄存器中选择当前线程组单元需要使用的寄存器并分别获得该寄存器的物理地址,该寄存器的寄存器编号不限于是连续的,也就是说可以直接选择离散的寄存器并获得该寄存器的物理地址,以将离散的寄存器使用起来,增加并行程序的个数,进而提高了寄存器的利用率。此外该资源分配方法不再需要需求方阵,减少了需求方阵的储存。可以减小芯片面积,优化时序,缩短了分配寄存器资源的关键路径。
下面结合附图对本公开的实施例及其示例进行详细说明。
图3为本公开至少一实施例提供的一种资源分配方法的流程示意图。图3所示的资源分配方法包括步骤S110-S130。图5为本公开至少一实施例提供的一种资源分配方法的执行过程示意图。
如图3所示,步骤S110:确定当前线程组单元需要使用的计算单元。例如,如图5所示,处理单元CU包括多个计算单元对SP0,例如,每个计算单元对SP0包括两个计算单元SIMD(例如,计算单元SIMD0和计算单元SIMD1)。例如,每个计算单元SIMD所包含的寄存器的个数可以相同或不同。
例如,所确定使用的计算单元SIMD包括M个寄存器,M个寄存器按照寄存器编号排列。例如,参考图1B所示,图中计算单元SIMD的寄存器的个数M为32,寄存器编号为0至31。
需要说明的是,图5中示出的计算单元对SP0以及计算单元SIMD的个数并不代表实际处理器的结构,也不用于限制本公开实施例。计算单元SIMD包括寄存器单元的个数可以根据处理器的设置改变,不用于限制本公开实施例。
例如,如图3所示,步骤S120:在计算单元的可用的B个寄存器中选择A个寄存器,A个寄存器的寄存器编号是连续的或不连续的。
结合图1B所示,在计算单元SIMD的掩码向量(掩码向量为32’h3fc1_d9a1,即32’b0011_1111_1100_0001_1101_1001_1010_0001)中。计算单元SIMD中可用的寄存器的数量为B(例如为17,图1B中所有数字为1的位置数量的总和)。着色器输入单元SPI从低位到高位每遇到一个1选定该位置为使用的寄存器,直到找到需要的A个寄存器。在当前线程组单元需要2个寄存器的情况下,着色器输入单元SPI选择寄存器编号为0和5的两个寄存器。
例如,在本公开实施例中,M、A和B均为正整数且M大于或等于B,B大于或等于A。
需要说明的是,选择的A个寄存器可以根据需要从计算单元的可用的B个寄存器中任意选择,例如,着色器输入单元SPI选择寄存器编号为0和7的两个寄存器。本公开实施例不以此为限。
例如,在一些实施例中,在计算单元的可用的寄存器中选择A个寄存器,包括:在计算单元的可用的寄存器中,按照可用寄存器的寄存器编号从小到大或从大到小的顺序依次选择A个寄存器。例如,结合图1B所示,在当前线程组单元需要2个寄存器的情况下,着色器输入单元SPI选择寄存器编号为0和5的两个寄存器或选择寄存器编号为29和28的两个寄存器。在上述方式中,当从可用的寄存器中顺序选择使用的寄存器时,可以减少寄存器资源的离散率,以提高寄存器资源的利用率。
例如,在一些实施例中,A个寄存器中至少两个的寄存器编号不是连续的。例如,在着色器输入单元SPI选择寄存器编号为0和5的两个寄存器GPR时,所选择的两个寄存器GPR的寄存器编号是不连续的。在当前线程组单元需要更多个(例如5个)寄存器GPR的情况下,着色器输入单元SPI选择寄存器编号为0、5、7、8以及11的5个寄存器GPR,以上选择的寄存器GPR中多个都是不连续的。由此,可以提高寄存器资源的利用率。
例如,如图3所示,步骤S130:分别获得A个寄存器的物理地址。
例如,在一些实施例中,分别获得A个寄存器的物理地址包括:获取A个寄存器对应的掩码向量,根据计算单元可以取得的最大地址及掩码向量得到A个寄存器的物理地址。
例如,在一些实施例中,根据计算单元可以取得的最大地址及掩码向量得到A个寄存器的物理地址,包括:将掩码向量的各位数值进行取反以得到虚拟掩码向量,对虚拟掩码向量使用二分法进行转化以分别得到A个寄存器的虚拟地址,分别使用最大地址减去A个寄存器的每个的虚拟地址,从而得到A个寄存器每个的物理地址。
图6为本公开至少再一实施例提供的一种资源分配方法的流程示意图,以下将结合图6对步骤S130进行实例性说明。例如,根据计算单元可以取得的最大地址及掩码向量得到A个寄存器的物理地址,包括图6所示步骤S410至步骤S440。
如图6所示,步骤S410:获取A个寄存器对应的掩码向量。图5中的着色器输入单元SPI选择寄存器编号为0和5的两个寄存器GPR时,确定使用的计算单元对应的掩码向量为32’h0000_0021(即32’b0000_0000_0000_0000_0000_0000_0010_0001)。
例如,如图5所示,着色器输入单元SPI将掩码向量以及其它相关信息,例如,当前线程组单元的操作数等信息,通过步骤S303:发送分配寄存器资源的信息,将上述信息发送至着色序列器SQ。色序列器SQ获知寄存器编号为0和5的两个寄存器GPR将被分配给当前线程组单元,而当上述两个寄存器GPR被写入当前线程组单元对应的数据(线程,也称为内核程序)之后,将图1B中的寄存器编号为0和5的两个寄存器GPR所在位置的数字从1改为0,表示该两个寄存器GPR不可用,以进行其他线程组单元的寄存器GPR分配。
例如,如图5所示,着色器输入单元SPI包括寄存器初始化模块GPRS。例如,寄存器初始化模块GPRS配置为获得分配使用的寄存器的物理地址并向寄存器中写入线程组单元对应的线程编号。因为寄存器初始化模块GPRS与SP0计算单元对的接口不发生改变,因此必须由寄存器初始化模块GPRS将掩码向量转化为寄存器的物理地址才能正确完成初始化工作。
例如,如图6所示,步骤S420:将掩码向量的各位数值进行取反,得到虚拟掩码向量。例如,当掩码向量为32’h0000_0021(即32’b0000_0000_0000_0000_0000_0000_0010_0001)时,将该掩码向量进行取反,即,将掩码向量的低位换为高位(手性对称的字节内容调换),得到的虚拟掩码向量为32’h8400_0000(即32’b1000_0100_0000_0000_0000_
0000_0000_0000)。
以下对获得寄存器的物理地址的过程详细介绍。
例如,如图6所示,步骤S430:对虚拟掩码向量使用二分法进行转换,分别得到A个寄存器的虚拟地址。
步骤S440:分别使用最大地址减去A个寄存器的每个的虚拟地址,从而得到A个寄存器每个的物理地址。
图7为本公至少一实施例提供的一种使用二分法获取寄存器的虚拟地址的示意图。
例如,如图7所示,在虚拟掩码向量为32’h8400_0000(即32’b1000_0100_0000_0000_0000_0000_0000_0000)的情况下,虚拟地址用5字节的二进制数表示。先将虚拟向量分为高16字节和低16字节(图7中第一行,左侧的16个为高16字节,右侧的16个为低16字节),在高16字节中含有数字1则,寄存器的虚拟地址第4位bit[4]=1,此时,高16字节中有两个1则虚拟地址第4位bit[4]=1。然后将高16字节二分为高8字节和低8字节(图7中第二行的16至23字节为低8字节,24字节至31字节为高8字节),在高8字节中含有数字1则,寄存器的虚拟地址第3位bit[3]=1,此时,高8字节中有两个1则虚拟地址第3位bit[3]=1。将高8字节二分为高4字节和低4字节(图7中第三行的24至27字节为低4字节,28字节至31字节为高4字节),在高4字节中含有数字1则,寄存器的虚拟地址第2位bit[2]=1,此时,高4字节中有1个1则虚拟地址第2位bit[2]=1。将高4字节二分为高2字节和低2字节(图7中第四行的28至29字节为低2字节,30字节至31字节为高2字节),在高2字节中含有数字1则,寄存器的虚拟地址第1位bit[1]=1,此时,高2字节中有1个1则虚拟地址第1位bit[1]=1。将高2字节二分为高1字节和低1字节(图7中第四行的30字节为低1字节,31字节为高1字节),在高1字节中含有数字1则,寄存器的虚拟地址第0位bit[0]=1,此时,高1字节为1则虚拟地址第0位bit[0]=1。所以,编号为0的寄存器的虚拟地址为5’b11111。使用计算单元SIMD可以取得的最大地址,即32,减去上述虚拟地址,得到编号为0的寄存器的物理地址为0。
例如,在一些实施例中,对虚拟掩码向量使用二分法进行转化,分别得到A个寄存器中的虚拟地址,包括:按照A个寄存器的寄存器编号由小到大的顺序依次得到A个寄存器的每个对应的虚拟地址,以获得A个寄存器每个的物理地址。当计算A个寄存器的第N个寄存器的虚拟地址之后,将第N个寄存器在掩码向量中对应的数值清零并得到更新的掩码向量,根据更新的掩码向量计算所述第N+1个寄存器的虚拟地址,N为正整数且N小于A。例如,根据以上所述的,先得到选择使用的第一个寄存器(编号为0的寄存器)的虚拟地址,然后将第1个寄存器在掩码向量(32’h0000_0021(即32’b0000_0000_0000_0000_0000_0000_0010_0001))中对应的数值清零,即将第0为的数字1改为0,得到更新的掩码向量(32’h0000_0020(即32’b0000_0000_0000_0000_0000_0000_0010_0000)),根据上述更新的掩码向量计算第二个寄存器(寄存器编号为5的寄存器)的虚拟地址。
例如,在一些实施例中,根据所述A个寄存器的物理地址将所述当前线程组单元的数据对应写入所述A个寄存器中。例如,着色器输入单元SPI根据每个需要使用的寄存器的物理地址,写入当前线程组单元的数据,每个寄存器的物理地址独立计算不再相互关联,以实现寄存器资源的非连续分配,提高资源利用率。以下对获得寄存器的物理地址的过程详细介绍。
例如,结合图7所示的二分法,对使用更新的掩码向量(32’h0000_0020(即32’b0000_0000_0000_0000_0000_0000_0010_0000))获得第二个寄存器(寄存器编号为5的寄存器)的虚拟地址为5'b11010。使用计算单元SIMD可以取得的最大地址,即32,减去上述虚拟地址,得到编号为5的寄存器的物理地址为5。
例如,在一些实施例中,根据A个寄存器的物理地址将当前线程组单元的数据对应写入A个寄存器中。例如,将当前线程组单元对应在线程组中的线程编号写入A个寄存器以得到线程编号与A个寄存器的对应关系,其中,线程组包括当前线程组单元。例如,着色器输入单元SPI通过状态控制机,将当前线程组单元在线程组中对应的线程编号,按照顺序根据使用的A个寄存器(例如寄存器编号为0和5的2个寄存器)的物理地址,写入使用的A个寄存器中。
例如,在一些实施例中,着色器输入单元SPI将线程编号与A个寄存器的对应关系发送至计算单元对SP0。计算单元对SP0根据线程编号与A个寄存器的对应关系,将A个寄存器分配给当前线程组单元,以将当前线程组单元的数据(例如内核程序)对应写入A个寄存器中。
例如,在一些示例中,将当前线程组单元对应在线程组中的线程编号写入A个寄存器以得到线程编号与A个寄存器的对应关系,包括:将线程编号设置在至少一个维度,根据A个寄存器的物理地址,将至少一个维度每个的线程编号按照至少一个维度的排列顺序写入A个寄存器,从而确定至少一个维度每个的线程编号与所写入的A个寄存器每个的物理地址一一对应。例如,如图5所示的寄存器初始化模块GPRS,当将每个线程组单元的线程编号设置在两个维度(X方向和Y方向),按X方向、Y方向上的在线程组TG中的线程编号写入分配到的寄存器GPR中,可以将X方向的线程编号根据物理地址0写入分配到的第一个寄存器(编号为0的寄存器)中,将Y方向的线程编号根据物理地址5写入分配到的第2个寄存器(编号为5的寄存器)中,完成后切换到下一个线程组单元分配的寄存器中重复上述过程。由此,线程组单元的X方向的线程编号与第一个寄存器对应,Y方向的线程编号与第二个寄存器对应。上述实施例中,不再使用第一个寄存器的物理地址加1的方式,所以不需要要求分配使用寄存器的寄存器编号连续,由此提高了资源利用率。
图4为本公开至少另一实施例提供的一种资源分配方法的流程示意图。图4所示的资源分配方法包括步骤S201-S210。
如图4所示,步骤S201:判断寄存器是否按照的单个线程组单元需求进行分配。判断为是时确定当前线程组单元需要使用的寄存器。也就是说,按照线程组单元为单位为每一个线程组单元在同一个计算单元SIMD上分配寄存器资源。
例如,在一些实施例中,当前执行任务包括至少一个线程组,至少一个线程组每个包括多个线程组单元,至少一个线程组的数量小于预设值时,判断寄存器是按照单个线程组单元需求进行配置。例如,预设值取10,当执行任务包括线程组的数量小于等于10时,按照单个线程组单元需求进行配置,进入图4中的步骤S204。当执行任务包括线程组的数量大于10时,按照整个线程组需要使用的寄存器连续分配寄存器,进入步骤S202。此时,可以对寄存器资源进行灵活高效的利用。步骤S202:着色器输入单元SPI(图5所示)确定多个计算单元每个最长连续处于空闲状态的寄存器数量。步骤S203:着色器输入单元SPI使用整个线程组需要的寄存器连续分配寄存器。步骤S202和步骤S203的执行过程可以参考图1A至图1B介绍时所述的寄存器分配过程,这里不再赘述。
如图5所示,处理器中的寄存器总线管理模块GRBM上设置与着色器输入单元SPI连接的接口,处理器中的寄存器总线管理模块GRBM执行上述步骤S201,以决定是否按照单个线程组单元需求进行配置,然后将上述分配方式发送至着色器输入单元SPI。着色器输入单元SPI再去完成寄存器的分配工作。通过设置寄存器总线管理模块GRBM与着色器输入单元SPI的接口,使得寄存器总线管理模块GRBM可以根据线程组TG的数量配置寄存器的分配方式,以对寄存器资源调优和负载平和,并且还可以通过以线程组单元为单位离散配置寄存器GPR,以将更多的线程组单元分配在一个计算单元中,增加了并行执行的任务数目,提高了并行程度。
例如,在一些示例中,根据计算单元数量和计算单元每个包括的寄存器数量的不同,预设值还可以取为8、9以及11等,本公开实施例不以此为限。
例如,如图4所示,步骤S204:多个计算单元每个处于空闲状态的寄存器数量B。例如,以图1B所示的计算单元SIMD的寄存器为例(掩码向量为32’h3fc1_d9a1,即32’b0011_1111_1100_0001_1101_1001_1010_0001),计算单元SIMD中可用的寄存器的数量为B(例如为17,图1B中所有数字为1的位置数量的总和)。
例如,如图5所示,指令处理模块CP将当前执行任务包括的线程组信息(例如包括线程组的数量,线程编号等),发送至着色器输入单元SPI。进入步骤S301:着色器输入单元SPI将线程组拆分,例如为单个线程组单元。着色器输入单元SPI再将每个线程组单元分配到不同的处理单元的计算单元SIMD的寄存器GPR中。例如,当前线程组单元需要使用的寄存器GPR数量为A(例如为2个)。M、A和B均为正整数且M大于或等于B,B大于或等于A。
例如,如图5所示,步骤S302:着色器输入单元SPI进行寄存器资源分配。该资源分配的方式可以如图4所示的步骤S205:着色器输入单元SPI使用每个线程组单元需要使用的寄存器离散分配寄存器。着色器输入单元SPI通过图4中的步骤S206:查找掩码向量(例如图1B所示计算单元SIMD的掩码向量)。此时从图1B中计算单元SIMD的17个寄存器中选择2个寄存器,也就是说从掩码向量中数字为1的字节中选择两个字节,被选择的字节对应的寄存器为当前选择使用的寄存器。
例如,图4所示,步骤S207中:获取确定使用的计算单元对应的掩码向量。当着色器输入单元SPI选择寄存器编号为0和5的两个寄存器GPR时,确定使用的计算单元对应的掩码向量为32’h0000_0021(即32’b0000_0000_0000_0000_0000_0000_0010_0001)。
如图4所示,获得掩码向量之后进入步骤S208:通知着色序列器SQ(图5所示)分配寄存器的线程组单元的信息。着色器输入单元SPI将掩码向量以及其它相关信息,例如,当前线程组单元的操作数等信息,通过步骤S303:发送分配寄存器资源的信息,将上述信息发送至着色序列器SQ。
步骤S209:二分法获得需要使用的寄存器的物理地址。使用二分法获得需要使用的寄存器的物理地址的过程已经在前述,结合图6所示的步骤S430和步骤S440以及图7进行详细介绍,这里不再赘述。
步骤S210:需要使用的寄存器进行初始化。如图5所示的寄存器初始化模块GPRS根据每个需要使用的寄存器的物理地址,向需要使用的寄存器中写入线程编号,每个寄存器的物理地址不再相互关联,以实现寄存器资源的非连续分配,提高资源利用率。
在本公开实施例提供的资源分配方法中,对使用的寄存器的初始化过程中不再需要需求方阵,减少了需求方阵的储存。可以减小芯片面积,优化时序,缩短了分配寄存器资源的关键路径。
例如,本公开至少一实施例还提供一种资源分配装置。图8为本公开至少一实施例提供的一种资源分配装置的示意图。
例如,在一些实施例中,如图8所示,资源分配装置500包括:计算单元选择模块510、寄存器选择模块520以及物理地址获得模块530。
例如,计算单元选择模块510配置为确定当前线程组单元需要使用的计算单元,计算单元包括M个寄存器,M个寄存器按照寄存器编号排列,计算单元中可用的寄存器的数量为B,当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A。如图5所示,处理单元CU包括多个计算单元对SP0,例如,每个计算单元SP0包括两个计算单元SIMD(例如,计算单元SIMD0和计算单元SIMD1)。例如,计算单元SIMD包括M个寄存器,M个寄存器按照寄存器编号排列。如图1A所示,例如M为32,寄存器编号为0至31。例如,以图1B所示的计算单元SIMD的寄存器为例(掩码向量为32’h3fc1_d9a1,即32’b0011_1111_1100_0001_1101_1001_1010_0001),计算单元SIMD中可用的寄存器的数量为B(例如为17,图1B中所有数字为1的位置数量的总和)。例如,当前线程组单元需要使用的寄存器数量为A(例如为2个)。此时从图1B中计算单元SIMD的17个寄存器中选择2个寄存器。
例如,寄存器选择模块520配置为在计算单元的可用的B个寄存器中选择A个寄存器,A个寄存器的寄存器编号是连续的或不连续的。结合图1B所示,在计算单元SIMD的掩码向量中,着色器输入单元SPI从低位到高位每遇到一个1选定该位置为使用的寄存器,直到找到需要的A个寄存器。在当前线程组单元需要2个寄存器的情况下,着色器输入单元SPI选择寄存器编号为0和5的两个寄存器或选择寄存器编号为29和28的两个寄存器。从可用的寄存器中顺序选择可以减少寄存器资源的离散率,以提高寄存器资源的利用率。
例如,物理地址获得模块530配置为分别获得A个寄存器的物理地址。例如,在一些实施例中,根据A个寄存器的物理地址将当前线程组单元的数据对应写入A个寄存器中。例如,将当前线程组单元对应在线程组中的线程编号写入A个寄存器以得到线程编号与A个寄存器的对应关系,其中,线程组包括当前线程组单元。例如,着色器输入单元SPI通过状态控制机,将当前线程组单元在线程组中对应的线程编号,按照顺序根据使用的A个寄存器(例如寄存器编号为0和5的2个寄存器)的物理地址,写入使用的A个寄存器中。例如,在一些实施例中,着色器输入单元SPI将线程编号与A个寄存器的对应关系发送至计算单元对SP0。计算单元对SP0根据线程编号与A个寄存器的对应关系,将A个寄存器分配给当前线程组单元,以将当前线程组单元的数据(例如内核程序)对应写入A个寄存器中。
本公开实施例提供的资源分配装置,可以在计算单元的可用的寄存器中选择当前线程组单元需要使用的寄存器并分别获得该寄存器的物理地址,该寄存器的寄存器编号不限于是连续的,也就是说可以直接选择离散的寄存器并获得该寄存器的物理地址,以将离散的寄存器使用起来,增加并行程序的个数,进而提高了寄存器的利用率。此外该资源分配方法不再需要需求方阵,减少了需求方阵的储存。可以减小芯片面积,优化时序,缩短了分配寄存器资源的关键路径。
除了上述描述之外,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种资源分配方法,包括:
确定当前线程组单元需要使用的计算单元,其中,所述计算单元包括M个寄存器,所述M个寄存器按照寄存器编号排列,所述计算单元中可用的寄存器的数量为B,所述当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A;
在所述计算单元的可用的B个寄存器中选择A个寄存器,其中,所述A个寄存器的寄存器编号是连续的或不连续的;以及
分别获得所述A个寄存器的物理地址。
2.根据权利要求1所述的资源分配方法,其中,所述A个寄存器中至少两个的寄存器编号不是连续的。
3.根据权利要求1所述的资源分配方法,其中,分别获得所述A个寄存器的物理地址包括:
获取所述A个寄存器对应的掩码向量,
根据所述计算单元可以取得的最大地址及所述掩码向量得到所述A个寄存器的物理地址。
4.根据权利要求3所述的资源分配方法,其中,根据所述计算单元可以取得的最大地址及所述掩码向量得到所述A个寄存器的物理地址,包括:
将所述掩码向量的各位数值进行取反以得到虚拟掩码向量,
对所述虚拟掩码向量使用二分法进行转化以分别得到所述A个寄存器的虚拟地址,
分别使用所述最大地址减去所述A个寄存器的每个的虚拟地址,从而得到所述A个寄存器每个的物理地址。
5.根据权利要求4所述的资源分配方法,其中,对所述虚拟掩码向量使用二分法进行转化以分别得到所述A个寄存器中的虚拟地址,包括:
按照所述A个寄存器的寄存器编号由小到大的顺序依次得到所述A个寄存器的每个对应的虚拟地址,以获得A个寄存器每个的物理地址,
其中,当计算所述A个寄存器的第N个寄存器的虚拟地址之后,将所述第N个寄存器在掩码向量中对应的数值清零并得到更新的掩码向量,根据所述更新的掩码向量计算所述第N+1个寄存器的虚拟地址,N为正整数且N小于A。
6.根据权利要求1所述的资源分配方法,其中,在所述计算单元的所述可用的寄存器中选择所述A个寄存器,包括:
在所述计算单元的所述可用的寄存器中,按照所述可用的寄存器的寄存器编号从小到大或从大到小的顺序依次选择所述A个寄存器。
7.根据权利要求1所述的资源分配方法,还包括:
判断所述寄存器是否按照单个线程组单元需求进行配置,当判断为是时确定所述当前线程组单元需要使用的寄存器。
8.根据权利要求7所述的资源分配方法,其中,当前执行任务包括至少一个线程组,所述至少一个线程组每个包括多个线程组单元,
其中,所述至少一个线程组的数量小于预设值时,判断所述寄存器是按照所述单个线程组单元需求进行配置。
9.根据权利要求1所述的资源分配方法,还包括:
根据所述A个寄存器的物理地址将所述当前线程组单元的数据对应写入所述A个寄存器中。
10.根据权利要求9所述的资源分配方法,其中,根据所述A个寄存器的物理地址将所述当前线程组单元的数据对应写入所述A个寄存器中,包括:
将所述当前线程组单元对应在线程组中的线程编号写入所述A个寄存器以得到所述线程编号与所述A个寄存器的对应关系,其中,所述线程组包括所述当前线程组单元,
根据所述线程编号与所述A个寄存器的对应关系,将所述A个寄存器分配给所述当前线程组单元,以将所述当前线程组单元的数据对应写入所述A个寄存器中。
11.根据权利要求10所述的资源分配方法,其中,将所述当前线程组单元对应在线程组中的线程编号写入所述A个寄存器以得到所述线程编号与所述A个寄存器的对应关系,包括:
将所述线程编号设置在至少一个维度,
根据所述A个寄存器的物理地址,将所述至少一个维度每个的线程编号按照所述至少一个维度的排列顺序写入所述A个寄存器,从而确定所述至少一个维度每个的线程编号与所写入的所述A个寄存器每个的物理地址一一对应。
12.一种资源分配装置,包括:
计算单元选择模块,配置为确定当前线程组单元需要使用的计算单元,其中,所述计算单元包括M个寄存器,所述M个寄存器按照寄存器编号排列,所述计算单元中可用的寄存器的数量为B,所述当前线程组单元需要使用的寄存器数量为A,M、A和B均为正整数且M大于或等于B,B大于或等于A;
寄存器选择模块,配置为在所述计算单元的可用的B个寄存器中选择A个寄存器,其中,所述A个寄存器的寄存器编号是连续的或不连续的;以及
物理地址获得模块,配置为分别获得所述A个寄存器的物理地址。
CN202011333493.2A 2020-11-25 2020-11-25 资源分配方法以及装置 Active CN112445616B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011333493.2A CN112445616B (zh) 2020-11-25 2020-11-25 资源分配方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011333493.2A CN112445616B (zh) 2020-11-25 2020-11-25 资源分配方法以及装置

Publications (2)

Publication Number Publication Date
CN112445616A true CN112445616A (zh) 2021-03-05
CN112445616B CN112445616B (zh) 2023-03-21

Family

ID=74738770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011333493.2A Active CN112445616B (zh) 2020-11-25 2020-11-25 资源分配方法以及装置

Country Status (1)

Country Link
CN (1) CN112445616B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626205A (zh) * 2021-09-03 2021-11-09 海光信息技术股份有限公司 处理器、物理寄存器管理方法及电子装置
CN114546329A (zh) * 2022-03-01 2022-05-27 上海壁仞智能科技有限公司 用于实现数据奇偶重排的方法、设备和介质
CN117724985A (zh) * 2024-02-08 2024-03-19 此芯科技(武汉)有限公司 一种内存访问行为监控方法、装置、存储介质及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1595351A (zh) * 2004-06-25 2005-03-16 中国科学院计算技术研究所 一种基于mips指令集的处理器的多线程方法和装置
CN101627365A (zh) * 2006-11-14 2010-01-13 索夫特机械公司 用于处理使用上下文切换的多线程架构中的指令的装置和方法
US20110072438A1 (en) * 2009-09-24 2011-03-24 Michael Fiyak Fast mapping table register file allocation algorithm for simt processors
CN104679663A (zh) * 2013-11-29 2015-06-03 想象力科技有限公司 寄存器文件高速缓存的软分区
US20160098357A1 (en) * 2013-05-29 2016-04-07 Huawei Technologies Co., Ltd. Method and apparatus for determining physical address
CN107851006A (zh) * 2015-08-18 2018-03-27 华为技术有限公司 多线程寄存器映射
CN108364251A (zh) * 2017-01-26 2018-08-03 超威半导体公司 具有通用寄存器资源管理的矢量处理器
US20180275991A1 (en) * 2017-03-27 2018-09-27 Advanced Micro Devices, Inc. Compiler-assisted inter-simd-group register sharing

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1595351A (zh) * 2004-06-25 2005-03-16 中国科学院计算技术研究所 一种基于mips指令集的处理器的多线程方法和装置
CN101627365A (zh) * 2006-11-14 2010-01-13 索夫特机械公司 用于处理使用上下文切换的多线程架构中的指令的装置和方法
US20110072438A1 (en) * 2009-09-24 2011-03-24 Michael Fiyak Fast mapping table register file allocation algorithm for simt processors
US20160098357A1 (en) * 2013-05-29 2016-04-07 Huawei Technologies Co., Ltd. Method and apparatus for determining physical address
CN104679663A (zh) * 2013-11-29 2015-06-03 想象力科技有限公司 寄存器文件高速缓存的软分区
CN107851006A (zh) * 2015-08-18 2018-03-27 华为技术有限公司 多线程寄存器映射
CN108364251A (zh) * 2017-01-26 2018-08-03 超威半导体公司 具有通用寄存器资源管理的矢量处理器
US20180275991A1 (en) * 2017-03-27 2018-09-27 Advanced Micro Devices, Inc. Compiler-assisted inter-simd-group register sharing

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626205A (zh) * 2021-09-03 2021-11-09 海光信息技术股份有限公司 处理器、物理寄存器管理方法及电子装置
CN114546329A (zh) * 2022-03-01 2022-05-27 上海壁仞智能科技有限公司 用于实现数据奇偶重排的方法、设备和介质
CN114546329B (zh) * 2022-03-01 2023-07-18 上海壁仞智能科技有限公司 用于实现数据奇偶重排的方法、设备和介质
CN117724985A (zh) * 2024-02-08 2024-03-19 此芯科技(武汉)有限公司 一种内存访问行为监控方法、装置、存储介质及电子设备
CN117724985B (zh) * 2024-02-08 2024-04-30 此芯科技(武汉)有限公司 一种内存访问行为监控方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN112445616B (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
CN112445616B (zh) 资源分配方法以及装置
US9411778B2 (en) Multiprocessor system and synchronous engine device thereof
US10255228B2 (en) System and method for performing shaped memory access operations
CN1991768B (zh) 与不同种类的资源通信的基于指令系统结构的内定序器
CN103365631B (zh) 用于存储器访问的动态库模式寻址
CN101261729B (zh) 在分布式图形处理单元内管理多重执行绪的系统与方法
CN104050033A (zh) 用于有索引的屏障的硬件调度的系统和方法
KR970008527B1 (ko) 고급 인스트럭션 처리 장치 및 방법
CN103778072A (zh) 多线程处理单元中的高效存储器虚拟化
CN103226481A (zh) 自动从属任务启动
CN103777926A (zh) 多线程处理单元中的高效存储器虚拟化
CN103226463A (zh) 用于使用预解码数据调度指令的方法和装置
CN103309702A (zh) 用于并行线程子集的一致加载处理
CN103559088A (zh) 维持公平性和顺序的资源管理子系统
CN104050032A (zh) 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法
Kartashev et al. A multicomputer system with dynamic architecture
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
CN114691537A (zh) 一种访问存储器的方法及信息处理设备
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
CN112559169B (zh) 资源分配方法以及装置
EP1354267A2 (en) A superscalar processor having content addressable memory structures for determining dependencies
CN103294449A (zh) 发散操作的预调度重演
CN103218259A (zh) 计算任务的调度和执行
CN110569122B (zh) 多处理器系统、多核处理设备及其操作方法
KR960003045B1 (ko) 마이크로프로세서

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40047919

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant