CN114626540A - 处理器和相关产品 - Google Patents

处理器和相关产品 Download PDF

Info

Publication number
CN114626540A
CN114626540A CN202011448594.4A CN202011448594A CN114626540A CN 114626540 A CN114626540 A CN 114626540A CN 202011448594 A CN202011448594 A CN 202011448594A CN 114626540 A CN114626540 A CN 114626540A
Authority
CN
China
Prior art keywords
execution unit
threaded
data
vector
vector execution
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.)
Pending
Application number
CN202011448594.4A
Other languages
English (en)
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.)
Shanghai Power Tensors Intelligent Technology Co Ltd
Original Assignee
Shanghai Power Tensors Intelligent 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 Shanghai Power Tensors Intelligent Technology Co Ltd filed Critical Shanghai Power Tensors Intelligent Technology Co Ltd
Priority to CN202011448594.4A priority Critical patent/CN114626540A/zh
Priority to PCT/CN2021/101025 priority patent/WO2022121275A1/zh
Publication of CN114626540A publication Critical patent/CN114626540A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Advance Control (AREA)

Abstract

本申请实施例公开了一种处理器和相关产品,该处理器包括:多线程标量执行单元、多线程向量执行单元以及拓展寄存器;所述多线程标量执行单元包括至少两个单线程标量执行单元;所述多线程标量执行单元与所述拓展寄存器耦接,所述多线程向量执行单元与所述拓展寄存器耦接;所述多线程标量执行单元,用于将第一控制信息写入所述拓展寄存器;所述多线程向量执行单元,用于从所述拓展寄存器读取所述第一控制信息,并基于所述第一控制信息进行数据处理。本申请实施例中,处理器中的拓展寄存器实现多线程向量执行单元和多线程标量执行单元之间的数据交互,可同时实现线程并行和数据运算并行,能够获得较高的能效比。

Description

处理器和相关产品
技术领域
本申请涉及计算机领域,尤其涉及一种处理器和相关产品。
背景技术
人工智能(artificial intelligence,AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能亦称智械、机器智能,指由人制造出来的机器所表现出来的智能。通常人工智能是指通过普通计算机程序来呈现人类智能的技术。
随着人工智能技术的发展,人工智能技术对高算力的需求越来越强,出现了越来越多针对人工智能应用场景的专用处理器。因此,需要研究算力更高的处理器。
发明内容
本申请实施例公开了一种处理器和相关产品。
第一方面,本申请实施例提供了一种处理器,该处理器包括:多线程标量执行单元、多线程向量执行单元以及拓展寄存器;所述多线程标量执行单元包括至少两个单线程标量执行单元,所述多线程向量执行单元包括至少两个单线程向量执行单元;所述多线程标量执行单元与所述拓展寄存器耦接,所述多线程向量执行单元与所述拓展寄存器耦接;所述多线程标量执行单元,用于将第一控制信息写入所述拓展寄存器;所述多线程向量执行单元,用于从所述拓展寄存器读取所述第一控制信息,并基于所述第一控制信息执行数据处理任务。
本申请实施例中,处理器中的拓展寄存器实现多线程向量执行单元和多线程标量执行单元之间的数据交互,可同时实现线程并行和数据运算并行,能够获得较高的能效比。
在一个可能的实现方式中,所述至少两个单线程标量执行单元用于并行地基于同一指令执行不同的线程,所述至少两个单线程向量执行单元用于并行地基于同一指令对不同的数据集执行相同的操作。
在一个可能的实现方式中,所述多线程标量执行单元,还用于对第一数据进行运算,得到第一运算结果,并基于所述第一运算结果生成所述第一控制信息;所述多线程向量执行单元,用于基于所述第一控制信息,对所述第一运算结果进行运算,得到第二运算结果。
所述多线程标量执行单元更适于对第一数据进行运算,即所述多线程标量执行单元对第一数据进行运算的效率高于所述多线程向量执行单元对第一数据进行运算的效率;所述多线程向量执行单元更适于对第一运算结果进行运算,即所述多线程向量执行单元对第一运算结果进行运算的效率高于所述多线程标量执行单元对第一运算结果进行运算的效率。
在该实现方式中,多线程标量执行单元和多线程向量执行单元配合完成同一数据处理任务,可以充分利用多线程标量执行单元和多线程向量执行单元的优势,提高执行数据处理任务的效率。
在一个可能的实现方式中,所述第一控制信息包括所述多线程向量执行单元待处理的向量数据中包含的多个数据元素的数据指示信息;所述多线程向量执行单元,用于基于所述数据指示信息,确定所述多个数据元素中包括的待处理的至少一个目标数据元素,并对所述至少一个目标数据元素进行运算。
在一个可能的实现方式中,所述第一控制信息包括第一指令对应的M个线程的使能指示信息;所述多线程向量执行单元,用于基于所述使能指示信息确定所述M个线程中的至少一个目标线程,并利用所述至少一个目标线程对应的至少一个单线程向量执行单元执行所述数据处理任务。
在该实现方式中,多线程向量执行单元根据第一控制信息包括的使能指示信息,可准确地确定执行数据处理任务待采用的目标线程,资源开销少。
在一个可能的实现方式中,所述第一控制信息还包括所述多线程向量执行单元待处理的数据的地址信息;所述多线程向量执行单元还包括数据搬运单元和至少一个寄存器堆,其中,所述寄存器堆包括至少一个向量寄存器;所述数据搬运单元,用于基于所述第一控制信息包括的地址信息从外部存储器获取待处理的数据,并将获取到的所述待处理的数据存储至所述至少一个寄存器堆。
在一个可能的实现方式中,所述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;所述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;所述张量计算单元的算力高于所述标量计算单元的算力。
张量计算单元的算力高于标量计算单元的算力。也就是说,单线程向量执行单元的算力高于单线程标量执行单元的算力。
在该实现方式中,通过拓展寄存器实现多线程向量执行单元和多线程标量执行单元的融合,可结合多线程向量执行单元的优势和多线程标量执行单元的优势,更好地执行计算任务。
在一个可能的实现方式中,所述扩展寄存器独立于所述多线程标量执行单元和所述多线程向量执行单元设置在所述处理器内部。
所述扩展寄存器独立于所述多线程标量执行单元和所述多线程向量执行单元,并且设置在所述处理器内部。扩展寄存器仅需分别与所述多线程标量执行单元和所述多线程向量执行单元耦接,对多线程标量执行单元和所述多线程向量执行单元的影响较小,设计和实现难度小,成本低。
在一个可能的实现方式中,所述第一控制信息指示第一数据中待进行并行计算的K个数据元素,K为大于1的整数;所述基于所述第一控制信息进行数据处理包括:所述多线程向量执行单元中的K个单线程向量执行单元并行地利用所述K个数据元素执行第一运算;所述多线程向量执行单元中的单线程向量执行单元的个数大于K,所述K个单线程向量执行单元中的任一单线程向量执行单元利用所述K个数据元素中的一个数据元素执行所述第一运算。
在该实现方式中,多线程向量执行单元基于第一控制信息通过其包括的部分单线程向量执行单元对多个数据元素进行并行计算,可以提高计算效率。
在一个可能的实现方式中,所述第一控制信息指示第二数据中被屏蔽的数据元素;所述基于所述第一控制信息进行数据处理包括:所述多线程向量执行单元中的F个单线程向量执行单元并行地利用F个数据元素执行第二运算;所述F为大于1的整数,所述多线程向量执行单元中的单线程向量执行单元的个数大于所述F,所述F个数据元素为所述第二数据中未被屏蔽的数据元素,所述F个单线程向量执行单元中的任一单线程向量执行单元利用所述F个数据元素中的一个数据元素执行所述第二运算。
在该实现方式中,多线程向量执行单元基于第一控制信息通过其包括的部分单线程向量执行单元对多个数据元素进行并行计算,可以提高计算效率。
在一个可能的实现方式中,所述第一控制信息指示第一指令对应的M个线程中被屏蔽的N个线程和/或未被屏蔽的L个线程,所述N为大于0小于所述M的整数,所述L为大于1小于所述M的整数;所述基于所述第一控制信息进行数据处理包括:所述多线程向量执行单元中的多个单线程向量执行单元并行地执行所述M个线程中未被屏蔽的线程的运算任务;或者,所述多线程向量执行单元中的L个单线程向量执行单元并行地执行所述未被屏蔽的L个线程的运算任务。
在一个可能的实现方式中,所述多线程向量执行单元还包括数据搬运单元;所述基于所述第一控制信息进行数据处理包括:所述数据搬运单元基于所述第一控制信息包括的地址信息从外部存储器获取H个数据元素,所述H为大于1的整数;所述多线程向量执行单元中的H个单线程向量执行单元并行地利用所述H个数据元素执行第三运算;所述多线程向量执行单元中的单线程向量执行单元的个数大于所述H,所述H个单线程向量执行单元中的任一单线程向量执行单元利用所述H个数据元素中的一个数据元素执行所述第三运算。
在该实现方式中,多线程向量执行单元基于第一控制信息通过其包括的部分单线程向量执行单元对多个数据元素进行并行计算,可以提高计算效率。
在一个可能的实现方式中,所述张量计算单元包括矩阵计算单元和/或向量计算单元以及数据整理单元;所述矩阵计算单元用于执行矩阵乘法运算,所述向量计算单元用于执行向量运算,所述数据整理单元用于对所述处理器中的寄存器堆存储的数据进行交换和重排以得到所述矩阵计算单元和/或所述向量计算单元待并行处理的多个数据元素。
在该实现方式中,张量计算单元通过矩阵计算单元和/或向量计算单元以及数据整理单元可实现对算力要求较高的计算任务。
第二方面,本申请实施例提供了一种多线程处理方法,应用于处理器,所述处理器包括多线程标量执行单元、多线程向量执行单元以及拓展寄存器,所述多线程向量执行单元包括至少两个单线程向量执行单元,所述多线程向量执行单元包括至少两个单线程向量执行单元;所述方法包括:所述多线程标量执行单元将第一控制信息写入所述拓展寄存器;所述多线程向量执行单元从所述拓展寄存器读取所述第一控制信息,并基于所述第一控制信息执行数据处理任务。
在一个可能的实现方式中,所述至少两个单线程标量执行单元用于并行地基于同一指令执行不同的线程,所述至少两个单线程向量执行单元用于并行地基于同一指令对不同的数据集执行相同的操作。
在一个可能的实现方式中,所述多线程标量执行单元将第一控制信息写入所述拓展寄存器之前,所述方法还包括:所述多线程标量执行单对第一数据进行运算,得到第一运算结果,并基于所述第一运算结果生成所述第一控制信息;所述多线程向量执行单元基于所述第一控制信息执行数据处理任务包括:所述多线程向量执行单元基于所述第一控制信息,对所述第一运算结果进行运算,得到第二运算结果。
在一个可能的实现方式中,所述第一控制信息包括所述多线程向量执行单元待处理的向量数据中包含的多个数据元素的数据指示信息;所述多线程向量执行单元基于所述第一控制信息执行数据处理任务包括:所述多线程向量执行单元基于所述数据指示信息,确定所述多个数据元素中包括的待处理的至少一个目标数据元素,并对所述至少一个目标数据元素进行运算。
在一个可能的实现方式中,所述第一控制信息包括第一指令对应的M个线程的使能指示信息;所述多线程向量执行单元基于所述第一控制信息执行数据处理任务包括:所述多线程向量执行单元基于所述使能指示信息确定所述M个线程中的至少一个目标线程,并利用所述至少一个目标线程对应的至少一个单线程向量执行单元执行所述数据处理任务。
在一个可能的实现方式中,所述第一控制信息还包括所述多线程向量执行单元待处理的数据的地址信息;所述多线程向量执行单元还包括数据搬运单元和至少一个寄存器堆,其中,所述寄存器堆包括至少一个向量寄存器;所述方法还包括:所述数据搬运单元基于所述第一控制信息包括的地址信息从外部存储器获取待处理的数据,并将获取到的所述待处理的数据存储至所述至少一个寄存器堆。
在一个可能的实现方式中,所述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;所述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;所述张量计算单元的算力高于所述标量计算单元的算力。
在一个可能的实现方式中,所述扩展寄存器独立于所述多线程标量执行单元和所述多线程向量执行单元设置在所述处理器内部。
在一个可能的实现方式中,所述第一控制信息指示第一数据中待进行并行计算的K个数据元素,K为大于1的整数;所述基于所述第一控制信息进行数据处理包括:所述多线程向量执行单元中的K个单线程向量执行单元并行地利用所述K个数据元素执行第一运算;所述多线程向量执行单元中的单线程向量执行单元的个数大于K,所述K个单线程向量执行单元中的任一单线程向量执行单元利用所述K个数据元素中的一个数据元素执行所述第一运算。
在一个可能的实现方式中,所述第一控制信息指示第二数据中被屏蔽的数据元素;所述基于所述第一控制信息进行数据处理包括:所述多线程向量执行单元中的F个单线程向量执行单元并行地利用F个数据元素执行第二运算;所述F为大于1的整数,所述多线程向量执行单元中的单线程向量执行单元的个数大于所述F,所述F个数据元素为所述第二数据中未被屏蔽的数据元素,所述F个单线程向量执行单元中的任一单线程向量执行单元利用所述F个数据元素中的一个数据元素执行所述第二运算。
在一个可能的实现方式中,所述第一控制信息指示第一指令对应的M个线程中被屏蔽的N个线程和/或未被屏蔽的L个线程,所述N为大于0小于所述M的整数,所述L为大于1小于所述M的整数;所述基于所述第一控制信息进行数据处理包括:所述多线程向量执行单元中的多个单线程向量执行单元并行地执行所述M个线程中未被屏蔽的线程的运算任务;或者,所述多线程向量执行单元中的L个单线程向量执行单元并行地执行所述未被屏蔽的L个线程的运算任务。
在一个可能的实现方式中,所述多线程向量执行单元还包括数据搬运单元;所述基于所述第一控制信息进行数据处理包括:所述数据搬运单元基于所述第一控制信息包括的地址信息从外部存储器获取H个数据元素,所述H为大于1的整数;所述多线程向量执行单元中的H个单线程向量执行单元并行地利用所述H个数据元素执行第三运算;所述多线程向量执行单元中的单线程向量执行单元的个数大于所述H,所述H个单线程向量执行单元中的任一单线程向量执行单元利用所述H个数据元素中的一个数据元素执行所述第三运算。
在一个可能的实现方式中,所述张量计算单元包括矩阵计算单元和/或向量计算单元以及数据整理单元;所述矩阵计算单元用于执行矩阵乘法运算,所述向量计算单元用于执行向量运算,所述数据整理单元用于对所述处理器中的寄存器堆存储的数据进行交换和重排以得到所述矩阵计算单元和/或所述向量计算单元待并行处理的多个数据元素。
关于第二方面或各种可选的实施方式所带来的技术效果,可参考对于第一方面或相应的实现方式的技术效果的介绍。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器和存储器,其中,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,使得所述处理器执行如上述第二方面以及任一种可能的实现方式的方法。
第四方面,本申请实施例提供了一种电子设备,该电子设备包括上述第一方面或第一方面的任意可能实现方式中的处理器。可选的,所述处理器用于执行第二方面或第二方面的任意可能实现方式中的方法。
在一个可能的实现方式中,该电子设备为芯片。
第五方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第二方面以及任一种可选的实现方式的方法。
第六方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面以及任一种可选的实现方式的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请实施例提供的一种处理器的结构示意图;
图2为本申请实施例提供的一种多线程向量执行单元的示例的结构示意图;
图3为本申请实施例提供的一种单线程向量执行单元的示例的结构示意图;
图4为本申请实施例提供的另一种单线程向量执行单元的示例的结构示意图;
图5为本申请实施例提供的一种单线程标量执行单元的示例的结构示意图;
图6为本申请实施例提供的另一种处理器的结构示意图;
图7为本申请实施例提供的另一种处理器的结构示意图;
图8为本申请实施例提供的一种多线程处理方法流程图;
图9是本申请实施例提供的一种服务器的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
下面先介绍本申请实施例提供的处理器的结构。图1为本申请实施例提供的一种处理器的结构示意图。如图1所示,该处理器包括:
多线程标量执行单元101、多线程向量执行单元102以及拓展寄存器103;多线程标量执行单元101包括至少两个单线程标量执行单元,多线程向量执行单元102包括至少两个单线程向量执行单元;
多线程标量执行单元101与拓展寄存器103耦接,多线程向量执行单元101与拓展寄存器耦接103;
多线程标量执行单元101,用于将第一控制信息写入上述拓展寄存器;
多线程向量执行单元102,用于从上述拓展寄存器读取上述第一控制信息,并基于上述第一控制信息执行数据处理任务。
在一些实施例中,上述至少两个单线程标量执行单元用于并行地基于同一指令执行不同的线程,上述至少两个单线程向量执行单元用于并行地基于同一指令对不同的数据集执行相同的操作。在一些实施例中,多线程标量执行单元101包括多个单线程标量执行单元,上述多线程标量执行单元101采用了SIMT架构。在一些实施例中,多线程标量执行单元101每执行一条指令,多个单线程标量执行单元同时完成取数、计算、结果写回的过程,能够实现线程并行计算。也就是说,多线程标量执行单元101采用单指令多线程(singleinstruction multiple threads,SIMT)技术并行地基于同一指令执行不同的线程。在一些实施例中,多线程标量执行单元101的架构可以与图形处理器(Graphics ProcessingUnit,GPU)的架构类似。
SIMT技术能够有效提升计算效率,相比传统单线程处理器,一方面对并行任务的编程抽象更简单,另一方面通过多个线程隐藏计算延迟,降低了指令调度的设计复杂度。
在一些实施例中,多线程向量执行单元102包括多个单线程向量执行单元,上述多线程向量执行单元102采用了SIMD架构。在一些实施例中,多线程向量执行单元102每执行一条指令,多个单线程向量执行单元同时完成取数、计算、结果写回的过程,能够实现线程并行计算。也就是说,多线程向量执行单元102采用单指令流多数据流(singleinstruction multiple data,SIMD)技术并行地基于同一指令对不同的数据集执行相同的操作。在一些实施例中,多线程向量执行单元102的架构可以与中央处理器(CentralProcessing Unit,CPU)的架构类似。
SIMD是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据矢量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。也就是说,SIMD是一种实现数据级并行的技术,其典型代表是向量处理器(vector processor)和阵列处理器(array processor)。SIMD技术的关键是在1条单独的指令中同时执行多个运算操作,以增加处理器的吞吐量。为此,SIMD结构的中央处理器(central processing unit,CPU)有多个处理单元,但都在同一个指令部件的控制之下,中央控制器向各个处理单元发送指令,整个系统只要求有一个中央控制器,只要求存储一份程序,所有的计算都是同步的。下面以加法指令为例说明SIMD与单指令流单数据流(singleinstruction single data stream,SISD)相比在性能上的优势:SISD型CPU对加法指令译码后,执行部件需要先访问主存,取得第一个操作数,之后再一次访问主存,取得第二个操作数,随后才能进行求和运算;而在SIMD型CPU中,指令译码后,几个执行部件同时访问主存,一次性获得所有操作数进行运算。因此,通过使用SIMD技术,可以提高数据密集型运算等任务的处理效率。
在一些实施例中,拓展寄存器103实现多线程向量执行单元102和多线程标量执行单元101之间的数据交互。多线程向量执行单元102在运行计算时每个线程有不同的计算控制信息,需要多线程标量计算单元101来提供。也就是说,多线程向量执行单元102运行向量执行指令需要多线程标量计算单元101执行某些标量执行指令得到的控制信息。多线程标量执行单元101将控制信息写入拓展寄存器103,多线程向量执行单元102从拓展寄存器102中将控制信息读出。
在一个可能的实现方式中,多线程标量执行单元101,还用于对第一数据进行运算,得到第一运算结果,并基于上述第一运算结果生成上述第一控制信息;
多线程向量执行单元102,用于基于上述第一控制信息,对上述第一运算结果进行运算,得到第二运算结果。
多线程标量执行单元101更适于对第一数据进行运算,即多线程标量执行单元101对第一数据进行运算的效率高于多线程向量执行单元102对第一数据进行运算的效率;多线程向量执行单元102更适于对第一运算结果进行运算,即多线程向量执行单元102对第一运算结果进行运算的效率高于多线程标量执行单元101对第一运算结果进行运算的效率。
在该实现方式中,多线程标量执行单元和多线程向量执行单元配合完成同一数据处理任务,可以充分利用多线程标量执行单元和多线程向量执行单元的优势,提高执行数据处理任务的效率。
为了适应越来越高的算力需求,通常的做法是增加SIMT处理器的线程数目。由于单个线程独立调度,这样带来了硬件设计复杂度提升同时算力增加相对有限。SIMD技术是通过执行单条指令同时有多组数据参与运算而增加计算性能,SIMD对应的多数据固定连续,牺牲了部分灵活性但存取和执行效率更高。相关技术单一采用SIMT技术或者SIMD技术来提升计算效率和并行度,而缺乏将两种技术有效融和在一起的处理器设计架构和方案。本申请提供了一种将SIMT技术和SIMD技术有效融合在一起的处理器架构(对应于本申请中的处理器),可有效提高算力。
在一个可能的实现方式中,上述第一控制信息包括多线程向量执行单元102待处理的向量数据中包含的多个数据元素的数据指示信息;
多线程向量执行单元102,用于基于上述数据指示信息,确定上述多个数据元素中包括的待处理的至少一个目标数据元素,并对上述至少一个目标数据元素进行运算。举例来说,多线程向量执行单元102可并行地执行16个数据元素的计算任务,数据指示信息指示多线程向量执行单元102待处理的向量数据中包含的8(对应K)个数据元素,多线程向量执行单元102中的8个单线程向量执行单元分别利用该8个数据元素中的一个数据元素执行运算;其中,该8个单线程向量执行单元并行地执行运算。
在一个可能的实现方式中,上述第一控制信息包括第一指令对应的M个线程的使能指示信息;上述M为大于1的整数。
多线程向量执行单元102,用于基于上述使能指示信息确定上述M个线程中的至少一个目标线程,并利用上述至少一个目标线程对应的至少一个单线程向量执行单元执行上述数据处理任务。可选的,上述使能指示信息用于指示第一指令对应的M个线程中的部分线程,即至少一个目标线程。在一些实施例中,M小于多线程向量执行单元102包括的单线程向量执行单元的个数且大于1。
在该实现方式中,多线程向量执行单元根据第一控制信息包括的使能指示信息,可准确地确定执行数据处理任务待采用的目标线程,资源开销少。
在一个可能的实现方式中,上述第一控制信息还包括上述多线程向量执行单元待处理的数据的地址信息;上述多线程向量执行单元还包括数据搬运单元和至少一个寄存器堆,其中,上述寄存器堆包括至少一个向量寄存器;上述数据搬运单元,用于基于上述第一控制信息包括的地址信息从外部存储器获取待处理的数据,并将获取到的上述待处理的数据存储至上述至少一个寄存器堆。
在一个可能的实现方式中,上述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;上述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;上述张量计算单元的算力高于上述标量计算单元的算力。
张量计算单元的算力高于标量计算单元的算力。也就是说,单线程向量执行单元的算力高于单线程标量执行单元的算力。
在该实现方式中,通过拓展寄存器实现多线程向量执行单元和多线程标量执行单元的融合,可结合多线程向量执行单元的优势和多线程标量执行单元的优势,更好地执行计算任务。
在一个可能的实现方式中,扩展寄存器103独立于多线程标量执行单元101和多线程向量执行单元102设置在上述处理器内部。
上述扩展寄存器独立于上述多线程标量执行单元和上述多线程向量执行单元,并且设置在上述处理器内部。扩展寄存器仅需分别与上述多线程标量执行单元和上述多线程向量执行单元耦接,对多线程标量执行单元和上述多线程向量执行单元的影响较小,设计和实现难度小,成本低。
在一个可能的实现方式中,扩展寄存器103设置在多线程标量执行单元101内部或者设置在多线程向量执行单元102内部。
在一个可能的实现方式中,上述第一控制信息指示第二数据中被屏蔽的数据元素;多线程向量执行单元102基于上述第一控制信息进行数据处理的方式如下:多线程向量执行单元102中的F个单线程向量执行单元并行地利用F个数据元素执行第二运算;上述F为大于1的整数,多线程向量执行单元102中的单线程向量执行单元的个数大于上述F,上述F个数据元素为上述第二数据中未被屏蔽的数据元素,上述F个单线程向量执行单元中的任一单线程向量执行单元利用上述F个数据元素中的一个数据元素执行上述第二运算。上述第二数据可以是任意数据,本申请不作限定。一个可能的举例如下:编程人员编写程序,经过编译生成本申请实施例中的处理器能够执行的一条或多条指令,该一条或多条指令起初放在外部存储空间,例如双倍速率同步动态随机存储器(double data rate SDRAM,DDR)中,在处理器的程序开始运行的时候,该处理器从外部存储空间取回指令,执行计算任务。在编程的时候,会涉及到控制类信息的计算和判断,例如多线程向量执行单元既有多线程的并行,又有SIMD(对应于运算操作)的并行,这些并行度在设计定下来之后就是固定值。但实际编程中往往会出现并行度用不满的情况,比如多线程向量执行单元102可以一次执行16个数据元素的计算任务,但当前只有8个有效数据元素能并行计算,那么需要编程人员在程序中计算并产生相应的控制位(对应于控制信息),对不需要计算的位置进行屏蔽,这些控制位的产生是需要多线程标量计算单元进行计算得到,之后写入拓展寄存器,将控制信息传递给多线程向量执行单元。第一控制信息可理解为用于对第二数据中不需要计算的数据元素进行屏蔽。
在一个可能的实现方式中,上述第一控制信息指示第一指令对应的M个线程中被屏蔽的N个线程和/或未被屏蔽的L个线程,上述N为大于0小于上述M的整数,上述L为大于1小于上述M的整数;上述基于上述第一控制信息进行数据处理包括:
上述多线程向量执行单元中的多个单线程向量执行单元并行地执行上述M个线程中未被屏蔽的线程的运算任务;或者,上述多线程向量执行单元中的L个单线程向量执行单元并行地执行上述未被屏蔽的L个线程的运算任务。
在一个可能的实现方式中,多线程向量执行单元102还包括数据搬运单元;多线程向量执行单元102基于上述第一控制信息进行数据处理的方式如下:数据搬运单元基于上述第一控制信息包括的地址信息从外部存储器获取H个数据元素,上述H为大于1的整数;多线程向量执行单元102中的H个单线程向量执行单元并行地利用上述H个数据元素执行第三运算;多线程向量执行单元102中的单线程向量执行单元的个数大于上述H,上述H个单线程向量执行单元中的任一单线程向量执行单元利用上述H个数据元素中的一个数据元素执行上述第三运算。在一些实施例中,多线程向量执行单元102还包括寄存器堆。可选的,寄存器堆的每一个单元为向量寄存器,例如包含16个并行计算的数据元素。在一些实施例中,寄存器堆被分为多个块(bank),以支持多个单线程向量执行单元同时访问。数据搬运单元可实现寄存器堆和外存(对应于外部存储器)之间的数据搬运。在一些实施例中,第一控制信息包括数据搬运单元进行外部访存需要的地址信息的一部分,比如地址偏移等。
在一些实施例中,上述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;上述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;上述张量计算单元的算力高于上述标量计算单元的算力。上述第一单线程向量执行单元为上述至少两个单线程向量执行单元中的任一单线程向量执行单元,上述第一单线程标量执行单元为上述至少两个单线程标量执行单元中的任一单线程标量执行单元。可选的,上述张量计算单元包括矩阵计算单元和/或向量计算单元以及数据整理单元;上述矩阵计算单元用于执行矩阵乘法运算,上述向量计算单元用于执行向量运算,上述数据整理单元用于对上述处理器中的寄存器堆存储的数据进行交换和重排以得到上述矩阵计算单元和/或上述向量计算单元待并行处理的多个数据元素。可选的,上述标量计算单元分为整型计算单元和浮点计算单元,其中,整型计算单元用于执行整数计算,浮点计算单元用于执行浮点数计算。也就是说,任一单线程标量执行单元可包括多组标量计算单元,整型计算单元为一组标量计算单元,浮点计算单元为一组标量计算单元。
本申请实施例中,处理器中的拓展寄存器实现多线程向量执行单元和多线程标量执行单元之间的数据交互,可同时实现线程并行和数据运算并行,能够获得较高的能效比。
下面结合附图来介绍多线程向量执行单元的一个示例的结构。
图2为本申请实施例提供的一种多线程向量执行单元的示例的结构示意图。如图2所示,多线程向量执行单元102包括P(例如16)个单线程向量执行单元和寄存器堆1021。上述P为大于1的整数。在一些实施例中,多线程向量执行单元102包括的各单线程向量执行单元的结构和功能均相同,多线程向量执行单元102包括的各单线程向量执行单元共用寄存器堆1021,各单线程向量执行单元可并行的执行相同的运算。在一些实施例中,寄存器堆被分为多个块(bank),以支持多个单线程向量执行单元同时访问。举例来说,寄存器堆包括多个向量寄存器,每个单线程向量执行单元占用一个向量寄存器,例如寄存器堆包含16个并行计算的数据元素。
由于多线程向量执行单元102包括的各单线程向量执行单元的结构和功能均相同,下面以任一单线程向量执行单元为例,介绍单线程向量执行单元的结构。
图3为本申请实施例提供的一种单线程向量执行单元的示例的结构示意图。如图3所示,30表示多线程向量执行单元102包括的任一单线程向量执行单元,单线程向量执行单元30包括张量计算单元301和数据搬运单元302。张量计算单元301负责高算力的计算,例如矩阵乘法运算等。数据搬运单元302可实现寄存器堆1021和外存(对应于外部存储器)之间的数据搬运。也就是说,数据搬运单元302可从外存读取数据,并将读取的数据写入寄存器堆。图3中,寄存器堆1021并不是单线程向量执行单元30独占的,而是单线程向量执行单元30与其他单线程向量执行单元共用寄存器堆1021。在一些实施例中,多线程向量执行单元102每执行一条指令,多个单线程向量执行单元并行执行取数、计算、结果写回的操作,实现线程并行计算。举例来说,多线程向量执行单元102包括16个单线程向量执行单元,每个单线程向量执行单元包括一个数据搬运单元,每个单线程向量执行单元占用寄存器堆的一个向量寄存器,每个单线程向量执行单元的数据搬运单元从外存读取一个数据元素并写入该单线程向量执行单元占用的向量寄存器,每个单线程向量执行单元从其占用的向量寄存器读取数据元素并计算。在该举例中,该16个单线程向量执行单元并行执行取数(即从向量寄存器读取数据元素)、计算以及结果写回的操作。结果写回是指单线程向量执行单元将其计算结果写入其占用的向量寄存器。又举例来说,多线程向量执行单元102从拓展寄存器读取第一控制信息,基于该第一控制信息通过其包括的16个单线程向量执行单元中的8个单线程向量执行单元并行地执行8个计算任务;其中,该8个单线程向量执行单元中每个单线程向量执行单元从其占用的向量寄存器读取数据元素,利用读取的数据元素计算,并将计算结果写入其占用的向量寄存器。
在一些实施例中,张量计算单元301包括矩阵计算单元和/或向量计算单元以及数据整理单元;上述矩阵计算单元用于执行矩阵乘法运算,上述向量计算单元用于执行向量运算,上述数据整理单元用于对上述处理器中的寄存器堆存储的数据进行交换和重排以得到上述矩阵计算单元和/或上述向量计算单元待并行处理的多个数据元素。图4为本申请实施例提供的另一种单线程向量执行单元的示例的结构示意图。图4中的单线程向量执行单元是对图3中的单线程向量执行单元的细化。如图4所示,单线程向量执行单元30包括张量计算单元301和数据搬运单元302,张量计算单元301包括矩阵计算单元3011、向量计算单元3012、数据整理单元3013。图4中,多线程向量执行单元包括的各单线程向量执行单元共用寄存器堆1021。在一些实施例中,每个单线程向量执行单元承担一个线程的计算任务,其包含寄存器堆、矩阵计算单元、向量计算单元、数据整理单元和数据搬运单元等。举例来说,寄存器堆的每一个单元为向量寄存器,包含16个并行计算的数据元素。寄存器堆被分为多个bank,以支持多个单线程向量执行单元同时访问。矩阵计算单元3011执行矩阵乘法,例如从寄存器堆中获取两个输入矩阵的原始数据,进行矩阵乘法,再将计算结果写到寄存器堆。向量计算单元3012执行向量的基本加、减、乘、除、指数、开方等计算,支持整型数据和浮点型数据的输入和输出。数据整理单元3013既可实现多个线程内数据的交换和重排,也可以实现线程向量寄存器之内不同数据元素的交换和重排。数据搬运单元302实现寄存器堆和外存之间的数据搬运。
由于多线程标量执行单元101包括的各单线程标量执行单元的结构和功能均相同,下面以任一单线程标量执行单元为例,介绍单线程标量执行单元的结构。
下面结合附图来介绍多线程标量执行单元的一个示例的结构。
图4为本申请实施例提供的一种多线程标量执行单元的示例的结构示意图。如图4所示,多线程标量执行单元101包括Q(例如16)个单线程标量执行单元和寄存器堆1011。上述Q为大于1的整数。在一些实施例中,多线程标量执行单元101包括的各单线程标量执行单元的结构和功能均相同,多线程标量执行单元101包括的各单线程标量执行单元共用寄存器堆1011,各单线程标量执行单元可并行执行同一指令对应的多个线程。本申请实施例中,多线程标量执行单元101包含多个单线程标量执行单元,每个单线程标量执行单元可承担一个线程的计算任务。在一些实施例中,多线程标量执行单元101每执行一条指令,多个单线程标量执行单元同时完成取数、计算、结果写回的过程,实现线程并行计算。在一些实施例中,寄存器堆被分为多个块(bank),以支持多个单线程向量执行单元同时访问。
由于多线程标量执行单元101包括的各单线程标量执行单元的结构和功能均相同,下面以任一单线程标量执行单元为例,介绍单线程标量执行单元的结构。
图5为本申请实施例提供的一种单线程标量执行单元的示例的结构示意图。如图5所示,50表示多线程标量执行单元101包括的任一单线程标量执行单元,501表示标量计算单元,502表示数据搬运单元。标量计算单元501标量计算单元可以是多组,比如整型计算单元、浮点计算单元等。也就是说,标量计算单元501可分为整型计算单元和浮点计算单元。标量计算单元用于利用整型数据和/或浮点型数据执行算力要求较低的运算,例如加、减等运算。矩阵乘法可理解为算力要求较高的运算。数据搬运单元502实现外存与寄存器堆1011之间的数据搬运。图5中,寄存器堆1011并不是单线程标量执行单元50独占的,而是单线程标量执行单元50与其他单线程标量执行单元共用的寄存器堆,即多线程标量执行单元中各单线程标量执行单元共用的寄存器堆。
图6为本申请实施例提供的另一种处理器的结构示意图。图6中的处理器是对图1中的处理器的一种可能实现方式。如图6所示,该处理器包括:多线程标量执行单元101、多线程向量执行单元102、拓展寄存器103、指令缓存单元104以及指令调度单元105。图6中,多线程向量执行单元102包括P(例如16)个单线程向量执行单元和寄存器堆1021,每个单线程向量执行单元包括张量计算单元和数据搬运单元(请参阅图3);多线程标量执行单元101包括Q(例如16)个单线程标量执行单元和寄存器堆1011,每个单线程标量执行单元包括标量计算单元和数据搬运单元(请参阅图5)。
指令缓存单元104,用于实现多线程指令的取回、缓存以及下发。一个指令可对应多个线程,例如一条指令对应16个线程一起执行。多线程指令是指对应多个线程的指令。处理器执行一条多线程指令是执行该指令对应的多个线程。多线程指令的取回可以是指令缓存单元104从外存(例如DDR)读取多线程指令。多线程指令的下发可以是指令缓存单元104将缓存的指令发送给指令调度单元105。
指令调度单元105,用于处理程序中的分支、跳转、循环等类型的指令,接收多线程向量执行单元和/或多线程标量执行单元的执行状态,维护寄存器占用情况,进行指令之间依赖性检查以保证指令执行顺序符合编程预期,对多组指令进行仲裁和选择,发射到不同执行单元(对应于单线程标量执行单元和/或单线程向量执行单元)上。应理解,指令调度单元105负责指令的调度,即对多组指令进行仲裁和选择,并将指令发射到不同执行单元。
在一些实施例中,处理器待执行的指令起初放在外部存储空间,例如DDR中,指令缓存单元104从外部存储空间取回指令并缓存,指令缓存单元104将缓存的指令下发至指令调度单元105;指令调度单元105对指令缓存单元104下发的指令进行仲裁和选择,并将指令发射到相应的执行单元;多线程标量执行单元101和多线程向量执行单元102配合执行指令调度单元105下发的指令。在一些实施例中,多线程标量执行单元101或者多线程向量执行单元102可单独执行指令调度单元105下发的指令。
本申请实施例中,一方面多线程向量执行单元和多线程标量执行单元共用指令缓存单元和指令调度单元,能够实现控制通路上的有效复用;另一方面在调度上支持单指令多线程的并行执行,简化线程控制逻辑,保证获得较高计算能力的同时不过度增加硬件设计复杂度,即获得较高的能效比。
图7为本申请实施例提供的另一种处理器的结构示意图。图7中的处理器是对图6中的处理器的细化和完善。如图7所示,该处理器包括:多线程标量执行单元101、多线程向量执行单元102、拓展寄存器103、指令缓存单元104以及指令调度单元105。图7中,多线程向量执行单元102包括P(例如16)个单线程向量执行单元和寄存器堆1021,701表示矩阵计算单元,702表示向量计算单元,703表示数据整理单元,704表示数据搬运单元;多线程标量执行单元101包括Q(例如16)个单线程标量执行单元和寄存器堆1011,705表示整型计算单元,706表示浮点计算单元,707表示数据搬运单元。图7中,每个单线程向量执行单元包括矩阵计算单元、向量计算单元、数据整理单元以及数据搬运单元,每个单线程标量执行单元包括整型计算单元、浮点计算单元以及数据搬运单元。图7中,每个单线程向量执行单元包括的矩阵计算单元、向量计算单元、数据整理单元可理解为该单线程向量执行单元包括的张量计算单元;每个单线程标量执行单元包括的整型计算单元、浮点计算单元可理解为该单线程标量执行单元包括的标量计算单元。
应理解以上处理器的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成同一个芯片中实现,此外,也可以以程序代码的形式存储于控制器的存储元件中,由处理器的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
前面介绍了本申请实施例提供的处理器,下面介绍本申请实施例提供的多线程处理方法。
图8为本申请实施例提供的一种多线程处理方法流程图,该方法应用于处理器,上述处理器包括多线程标量执行单元、多线程向量执行单元以及拓展寄存器,上述多线程向量执行单元包括至少两个单线程向量执行单元;该方法包括:
801、多线程标量执行单元将第一控制信息写入拓展寄存器;
802、多线程向量执行单元从上述拓展寄存器读取上述第一控制信息,并基于上述第一控制信息执行数据处理任务。
本申请实施例提供的多线程处理方法适用的处理器可以为前述实施例中的任意处理器,例如图6或者图7中的处理器。
在一个可能的实现方式中,上述至少两个单线程标量执行单元用于并行地基于同一指令执行不同的线程,上述至少两个单线程向量执行单元用于并行地基于同一指令对不同的数据集执行相同的操作。
在一个可能的实现方式中,多线程标量执行单元在执行步骤801之前,可对第一数据进行运算,得到第一运算结果,并基于上述第一运算结果生成上述第一控制信息;步骤802一种可能的实现方式如下:多线程向量执行单元基于上述第一控制信息,对上述第一运算结果进行运算,得到第二运算结果。
在一个可能的实现方式中,上述第一控制信息包括上述多线程向量执行单元待处理的向量数据中包含的多个数据元素的数据指示信息;步骤802一种可能的实现方式如下:多线程向量执行单元从上述拓展寄存器读取上述第一控制信息,并基于上述数据指示信息,确定上述多个数据元素中包括的待处理的至少一个目标数据元素,并对上述至少一个目标数据元素进行运算(对应于执行数据处理任务)。
在一个可能的实现方式中,上述第一控制信息包括第一指令对应的M个线程的使能指示信息;步骤802一种可能的实现方式如下:多线程向量执行单元从上述拓展寄存器读取上述第一控制信息,并基于上述使能指示信息确定上述M个线程中的至少一个目标线程,并利用上述至少一个目标线程对应的至少一个单线程向量执行单元执行上述数据处理任务。
在一个可能的实现方式中,上述第一控制信息还包括上述多线程向量执行单元待处理的数据的地址信息;上述多线程向量执行单元还包括数据搬运单元和至少一个寄存器堆,其中,上述寄存器堆包括至少一个向量寄存器;上述方法还包括:
上述数据搬运单元基于上述第一控制信息包括的地址信息从外部存储器获取待处理的数据,并将获取到的上述待处理的数据存储至上述至少一个寄存器堆。
在一个可能的实现方式中,上述扩展寄存器独立于上述多线程标量执行单元和上述多线程向量执行单元设置在上述处理器内部。
在一个可能的实现方式中,上述第一控制信息指示第二数据中被屏蔽的数据元素;上述基于上述第一控制信息进行数据处理包括:
上述多线程向量执行单元中的F个单线程向量执行单元并行地利用F个数据元素执行第二运算;上述F为大于1的整数,上述多线程向量执行单元中的单线程向量执行单元的个数大于上述F,上述F个数据元素为上述第二数据中未被屏蔽的数据元素,上述F个单线程向量执行单元中的任一单线程向量执行单元利用上述F个数据元素中的一个数据元素执行上述第二运算。
在一个可能的实现方式中,上述第一控制信息指示第一指令对应的M个线程中被屏蔽的N个线程和/或未被屏蔽的L个线程,上述N为大于0小于上述M的整数,上述L为大于1小于上述M的整数;上述基于上述第一控制信息进行数据处理包括:
上述多线程向量执行单元中的多个单线程向量执行单元并行地执行上述M个线程中未被屏蔽的线程的运算任务;或者,上述多线程向量执行单元中的L个单线程向量执行单元并行地执行上述未被屏蔽的L个线程的运算任务。
在一个可能的实现方式中,上述多线程向量执行单元还包括数据搬运单元;上述基于上述第一控制信息进行数据处理包括:
上述数据搬运单元基于上述第一控制信息包括的地址信息从外部存储器获取H个数据元素,上述H为大于1的整数;
上述多线程向量执行单元中的H个单线程向量执行单元并行地利用上述H个数据元素执行第三运算;上述多线程向量执行单元中的单线程向量执行单元的个数大于上述H,上述H个单线程向量执行单元中的任一单线程向量执行单元利用上述H个数据元素中的一个数据元素执行上述第三运算。
在一个可能的实现方式中,上述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;上述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;上述张量计算单元的算力高于上述标量计算单元的算力。
在一个可能的实现方式中,上述张量计算单元包括矩阵计算单元和/或向量计算单元以及数据整理单元;上述矩阵计算单元用于执行矩阵乘法运算,上述向量计算单元用于执行向量运算,上述数据整理单元用于对上述处理器中的寄存器堆存储的数据进行交换和重排以得到上述矩阵计算单元和/或上述向量计算单元待并行处理的多个数据元素。
可以理解,本申请实施例提供的多线程处理方法可应用于任意执行多线程指令的计算任务,例如图像处理任务、文本识别任务等,通过采用融合SIMT和SIMD的处理器能够提高执行多线程指令的效率。
本申请提供的处理器可以应用于多种电子设备,例如服务器和终端设备。下面介绍配置有本申请提供的处理器的服务器的示例以及配置有本申请提供的处理器的终端设备的示例。
图9是本申请实施例提供的一种服务器的结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上前述实施例提供的处理器922和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,处理器922可以设置为与存储介质930通信,在服务器900上执行存储介质930中的一系列指令操作。服务器900可以为本申请提供的多线程指令执行方法。
服务器900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作系统941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
应理解,图9仅为一个配置有本申请提供的处理器的服务器的示例。
图10为本申请实施例提供的一种电子设备的结构示意图。如图10所示,该电子设备100包括处理器1001、存储器1002和通信接口1003;该处理器1001、存储器1002和通信接口1003通过总线相互连接。处理器1001可以是本申请实施例提供的处理器。
存储器1002包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmablereadonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CDROM),该存储器1002用于相关指令及数据。通信接口1003用于接收和发送数据。
在本申请的实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现前述实施例所提供的多线程指令执行方法。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述实施例所提供的多线程指令执行方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (18)

1.一种处理器,其特征在于,包括:
多线程标量执行单元、多线程向量执行单元以及拓展寄存器;
所述多线程标量执行单元包括至少两个单线程标量执行单元,所述多线程向量执行单元包括至少两个单线程向量执行单元;
所述多线程标量执行单元与所述拓展寄存器耦接,所述多线程向量执行单元与所述拓展寄存器耦接;
所述多线程标量执行单元,用于将第一控制信息写入所述拓展寄存器;
所述多线程向量执行单元,用于从所述拓展寄存器读取所述第一控制信息,并基于所述第一控制信息执行数据处理任务。
2.根据权利要求1所述的处理器,其特征在于,
所述至少两个单线程标量执行单元用于并行地基于同一指令执行不同的线程,所述至少两个单线程向量执行单元用于并行地基于同一指令对不同的数据集执行相同的操作。
3.根据权利要求1或2所述的处理器,其特征在于,
所述多线程标量执行单元,还用于对第一数据进行运算,得到第一运算结果,并基于所述第一运算结果生成所述第一控制信息;
所述多线程向量执行单元,用于基于所述第一控制信息,对所述第一运算结果进行运算,得到第二运算结果。
4.根据权利要求1或2所述的处理器,其特征在于,所述第一控制信息包括所述多线程向量执行单元待处理的向量数据中包含的多个数据元素的数据指示信息;
所述多线程向量执行单元,用于基于所述数据指示信息,确定所述多个数据元素中包括的待处理的至少一个目标数据元素,并对所述至少一个目标数据元素进行运算。
5.根据权利要求1或2所述的处理器,其特征在于,所述第一控制信息包括第一指令对应的M个线程的使能指示信息;
所述多线程向量执行单元,用于基于所述使能指示信息确定所述M个线程中的至少一个目标线程,并利用所述至少一个目标线程对应的至少一个单线程向量执行单元执行所述数据处理任务。
6.根据权利要求1至5中任一项所述的处理器,其特征在于,所述第一控制信息还包括所述多线程向量执行单元待处理的数据的地址信息;
所述多线程向量执行单元还包括数据搬运单元和至少一个寄存器堆,其中,所述寄存器堆包括至少一个向量寄存器;
所述数据搬运单元,用于基于所述第一控制信息包括的地址信息从外部存储器获取待处理的数据,并将获取到的所述待处理的数据存储至所述至少一个寄存器堆。
7.根据权利要求1至6任一项所述的处理器,其特征在于,所述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;所述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;所述张量计算单元的算力高于所述标量计算单元的算力。
8.根据权利要求1至7中任一项所述的处理器,其特征在于,所述扩展寄存器独立于所述多线程标量执行单元和所述多线程向量执行单元设置在所述处理器内部。
9.一种多线程处理方法,应用于处理器,其特征在于,所述处理器包括多线程标量执行单元、多线程向量执行单元以及拓展寄存器,所述多线程向量执行单元包括至少两个单线程向量执行单元,所述多线程向量执行单元包括至少两个单线程向量执行单元;所述方法包括:
所述多线程标量执行单元将第一控制信息写入所述拓展寄存器;
所述多线程向量执行单元从所述拓展寄存器读取所述第一控制信息,并基于所述第一控制信息执行数据处理任务。
10.根据权利要求9所述的方法,其特征在于,所述至少两个单线程标量执行单元用于并行地基于同一指令执行不同的线程,所述至少两个单线程向量执行单元用于并行地基于同一指令对不同的数据集执行相同的操作。
11.根据权利要求9或10所述的方法,其特征在于,所述多线程标量执行单元将第一控制信息写入所述拓展寄存器之前,所述方法还包括:
所述多线程标量执行单对第一数据进行运算,得到第一运算结果,并基于所述第一运算结果生成所述第一控制信息;
所述多线程向量执行单元基于所述第一控制信息执行数据处理任务包括:
所述多线程向量执行单元基于所述第一控制信息,对所述第一运算结果进行运算,得到第二运算结果。
12.根据权利要求9或10所述的方法,其特征在于,所述第一控制信息包括所述多线程向量执行单元待处理的向量数据中包含的多个数据元素的数据指示信息;
所述多线程向量执行单元基于所述第一控制信息执行数据处理任务包括:
所述多线程向量执行单元基于所述数据指示信息,确定所述多个数据元素中包括的待处理的至少一个目标数据元素,并对所述至少一个目标数据元素进行运算。
13.根据权利要求9或10所述的方法,其特征在于,所述第一控制信息包括第一指令对应的M个线程的使能指示信息;
所述多线程向量执行单元基于所述第一控制信息执行数据处理任务包括:
所述多线程向量执行单元基于所述使能指示信息确定所述M个线程中的至少一个目标线程,并利用所述至少一个目标线程对应的至少一个单线程向量执行单元执行所述数据处理任务。
14.根据权利要求9至13任一项所述的方法,其特征在于,所述第一控制信息还包括所述多线程向量执行单元待处理的数据的地址信息;所述多线程向量执行单元还包括数据搬运单元和至少一个寄存器堆,其中,所述寄存器堆包括至少一个向量寄存器;所述方法还包括:
所述数据搬运单元基于所述第一控制信息包括的地址信息从外部存储器获取待处理的数据,并将获取到的所述待处理的数据存储至所述至少一个寄存器堆。
15.根据权利要求9至14任一项所述的方法,其特征在于,所述至少两个单线程向量执行单元中的第一单线程向量执行单元包括张量计算单元;所述至少两个单线程标量执行单元中的第一单线程标量执行单元包括标量计算单元;所述张量计算单元的算力高于所述标量计算单元的算力。
16.根据权利要求9至15任一项所述的方法,其特征在于,所述扩展寄存器独立于所述多线程标量执行单元和所述多线程向量执行单元设置在所述处理器内部。
17.一种电子设备,其特征在于,包括权利要求1至8任一项所述的处理器。
18.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求9至16任一项所述的方法。
CN202011448594.4A 2020-12-11 2020-12-11 处理器和相关产品 Pending CN114626540A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011448594.4A CN114626540A (zh) 2020-12-11 2020-12-11 处理器和相关产品
PCT/CN2021/101025 WO2022121275A1 (zh) 2020-12-11 2021-06-18 处理器、多线程处理方法、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011448594.4A CN114626540A (zh) 2020-12-11 2020-12-11 处理器和相关产品

Publications (1)

Publication Number Publication Date
CN114626540A true CN114626540A (zh) 2022-06-14

Family

ID=81895669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011448594.4A Pending CN114626540A (zh) 2020-12-11 2020-12-11 处理器和相关产品

Country Status (2)

Country Link
CN (1) CN114626540A (zh)
WO (1) WO2022121275A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8698817B2 (en) * 2004-11-15 2014-04-15 Nvidia Corporation Video processor having scalar and vector components
CN105373367B (zh) * 2015-10-29 2018-03-02 中国人民解放军国防科学技术大学 支持标向量协同工作的向量simd运算结构
US20170132003A1 (en) * 2015-11-10 2017-05-11 Futurewei Technologies, Inc. System and Method for Hardware Multithreading to Improve VLIW DSP Performance and Efficiency
CN110503179B (zh) * 2018-05-18 2024-03-01 上海寒武纪信息科技有限公司 计算方法以及相关产品

Also Published As

Publication number Publication date
WO2022121275A1 (zh) 2022-06-16

Similar Documents

Publication Publication Date Title
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
Garland et al. Understanding throughput-oriented architectures
US7925860B1 (en) Maximized memory throughput using cooperative thread arrays
US8412917B2 (en) Data exchange and communication between execution units in a parallel processor
EP2480979B1 (en) Unanimous branch instructions in a parallel thread processor
CN111310910A (zh) 一种计算装置及方法
US20210368656A1 (en) Intelligent control and distribution of a liquid in a data center
US20070130447A1 (en) System and method for processing thread groups in a SIMD architecture
US11895808B2 (en) Intelligent refrigeration-assisted data center liquid cooling
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
Khairy et al. A survey of architectural approaches for improving GPGPU performance, programmability and heterogeneity
US9569211B2 (en) Predication in a vector processor
US8413151B1 (en) Selective thread spawning within a multi-threaded processing system
CN114626540A (zh) 处理器和相关产品
Soliman Mat-core: A matrix core extension for general-purpose processors
US11822541B2 (en) Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments
US11550584B1 (en) Implementing specialized instructions for accelerating Smith-Waterman sequence alignments
US20230101085A1 (en) Techniques for accelerating smith-waterman sequence alignments
US20230305844A1 (en) Implementing specialized instructions for accelerating dynamic programming algorithms
US11416261B2 (en) Group load register of a graph streaming processor
Soliman et al. Exploiting ILP, DLP, TLP, and MPI to accelerate matrix multiplication on Xeon processors
Soliman Mat-core: a decoupled matrix core extension for general-purpose processors
Raju et al. Performance enhancement of CUDA applications by overlapping data transfer and Kernel execution
CN117437113A (zh) 用于对图像数据进行加速处理的系统、方法及存储介质

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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Wang Wenqiang

Inventor after: Sun Haitao

Inventor after: Zhang Qirong

Inventor after: Zhu Zhiqi

Inventor after: Xu Ningyi

Inventor before: Sun Haitao

Inventor before: Wang Wenqiang

Inventor before: Zhang Qirong

Inventor before: Zhu Zhiqi

Inventor before: Xu Ningyi

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40067406

Country of ref document: HK