CN117311813A - 用于重排序缓冲的方法及其相关产品 - Google Patents
用于重排序缓冲的方法及其相关产品 Download PDFInfo
- Publication number
- CN117311813A CN117311813A CN202210709101.0A CN202210709101A CN117311813A CN 117311813 A CN117311813 A CN 117311813A CN 202210709101 A CN202210709101 A CN 202210709101A CN 117311813 A CN117311813 A CN 117311813A
- Authority
- CN
- China
- Prior art keywords
- reorder buffer
- instruction
- data
- corresponding data
- read request
- 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
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 157
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 52
- 230000003139 buffering effect Effects 0.000 claims abstract description 17
- 230000004044 response Effects 0.000 claims description 38
- 238000001514 detection method Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 40
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- PSYGHMBJXWRQFD-UHFFFAOYSA-N 2-(2-sulfanylacetyl)oxyethyl 2-sulfanylacetate Chemical compound SCC(=O)OCCOC(=O)CS PSYGHMBJXWRQFD-UHFFFAOYSA-N 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种用于重排序缓冲的方法及其相关产品,其中该相关产品包括重排序缓冲装置、人工智能处理器、设备、板卡和计算机可读存储介质。该设备可以包括在组合处理装置的计算处理装置中,该计算处理装置可以包括一个或多个数据处理装置。前述的组合处理装置还可以包括接口装置和其他处理装置。所述计算处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。通过本公开的方案,可以显著提升数据的访存效率。
Description
技术领域
本公开一般地涉及计算机领域。更具体地,本公开涉及一种用于重排 序缓冲的方法、用于执行前述方法的重排序缓冲装置、人工智能处理器、 板卡、设备和计算机可读存储介质。
背景技术
在传统的处理器设计中,相互之间不存在依赖关系的指令可以进行乱 序处理。为了实现前述的乱序处理,传统的处理器一般都会使用一个重排 序缓冲装置(ROB,ReOrderBuffer),用来记录所有指令的真实顺序,然后 在指令执行完毕后将指令顺序释放。对于高效的人工智能(AI,Artificial Intelligence)处理器而言,由于指令集中的指令更多地满足人工智能算法的 需求,因此一条指令可能计算的数据量、实现的功能和/或所需要的计算时 间远远大于传统处理器的指令。因此,如何在人工智能计算场景下高效地 使用重排序缓冲装置,以便加速处理器的处理速度成为研究的重点。
发明内容
鉴于上述背景技术部分所提及的技术问题,本公开提出一种高效的重 排序缓冲方案。利用本公开的方案,可以显著提升人工智能处理器中集群 (“cluster”)架构下的数据访存速度,由此加速来自于集群的指令的执行 和处理器的整体操作性能。为此,本公开在如下的多个方面中提供用于重 排序缓冲的方案。
在第一方面中,本公开提供了一种重排序缓冲装置,其设置于人工智能 处理器的裸片间的接口处,所述人工智能处理器包括多个祼片和存储装置, 每个祼片内包括一个或多个用于执行运算的集群,每个集群包括多个处理器 核,所述重排序缓冲装置包括:重排序缓冲电路,其配置用于驻留从所述存 储装置的预定物理地址段内读取到的数据;接收电路,其配置用于接收来自 于集群针对于所述存储装置的读请求,其中所述读请求包括待从所述存储装 置读取数据的目标物理空间地址;判定电路,其配置用于在所述目标物理空间地址位于所述预定物理地址段内时,判定不发送所述读请求;以及发送电 路,其配置用于从所述重排序缓冲电路读取对应于目标物理空间地址的驻留 数据,以作为所述读请求所读取的数据来发送至所述集群。
在第二方面中,本公开提供了一种人工智能处理器,包括:多个祼芯, 其中祼芯之间通过祼芯到祼芯接口进行通信,并且每个祼芯包括一个或多个 集群,每个集群包括多个处理器核;以及上述第一方面中所述的重排序缓冲 装置,其布置于裸片间的接口处,以用于针对集群中的读请求来返回对应的 驻留数据。
在第三方面中,本公开提供了一种用于重排序缓冲的方法,其应用于 设置在人工智能处理器的裸片间的接口处的重排序缓冲装置,所述人工智 能处理器包括多个祼片和存储装置,每个祼片内包括一个或多个用于执行 运算的集群,所述方法包括:驻留从所述存储装置的预定物理地址段内读 取到的数据;接收来自于集群针对于所述存储装置的读请求,其中所述当 前读请求包括待从所述存储装置读取数据的目标物理空间地址;在所述目 标物理空间地址位于所述预定物理地址段内时,判定不发送所述当前读请 求;以及读取对应于目标物理空间地址的驻留数据,以作为所述当前读请 求所读取的数据来发送至所述集群。
在第四方面中,本公开提供了一种用于重排序缓冲区的设备,包括:处 理器;以及存储器,其存储有用于重排序缓冲区的程序指令,当所述程序指 令由处理器执行时,使得上述第三方面中所述的方法。
在第五方面中,本公开提供了一种计算机可读存储介质,其存储有用于 重排序缓冲区的程序指令,当所述程序指令由处理器执行时,使得实现上述 第三方面中所述的方法。
在第六方面中,本公开提供了一种板卡,包括上述第二方面中所述的人 工智能处理器或上述第四方面中所述的设备。
通过如上多个方面中所提供的方案,本公开的重排序缓冲器可以减小存 储装置对多个集群的读请求的数据返回操作,从而节省访存单元的带宽。进 一步,在一些实施例中,通过增加数据在重排序缓冲区中的驻留,可以加速 数据向集群的返回。在另一些实施例中,通过基于存储地址来将当前读请求 与先前读请求合并,即选择先前读请求的对应数据进行返回而不再考虑当前 读请求,可以提升读请求的处理速度,充分发挥ROB装置的数据缓存作用。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以 及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制 性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同 或对应的部分,其中:
图1是示意性示出根据本公开实施例的人工智能处理器的简化框图;
图2是示意性示出根据本公开实施例的重排序缓冲装置的详细结构框 图;
图3是示意性示出根据本公开用于重排序缓冲的方法的简化流程图;
图4是示意性示出根据本公开实施例的人工智能处理器的一种可能实 现方式的结构框图;
图5是示意性示出根据本公开实施例的用于重排序缓冲的方法细节的 流程图;
图6是示出根据本公开实施例的板卡的结构图;
图7是示出根据本公开实施例的组合处理装置的结构图;
图8是示出根据本公开实施例的计算装置的内部结构示意图;
图9是示出根据本公开实施例的处理器核的内部结构示意图;以及
图10是示出根据本公开实施例的不同集群的处理器核间的数据写入 过程示意图。
具体实施方式
下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方 案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施 方式,而不是全部的实施方式。基于本公开中的实施方式,本领域技术人 员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公 开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、 “第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公 开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、 整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特 征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定 实施方式的目的,而并不意在限定本公开。如在本公开说明书和权利要求 书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的 “一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说 明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或 多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上 下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似 地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文 被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事 件]”或“响应于检测到[所描述条件或事件]”。
为了提高人工智能计算平台中的数据访存效率,本公开的方案创新性 地提出在人工智能处理器中的裸片(“Die”)间的接口(“Die to Die”,即 “D2D”)处设置重排序缓冲(“ROB”)装置。通过设置这样的ROB装置, 可以利用其统一处理来自于集群的访存请求(包括读请求和/或写请求)。 在本公开的上下文中,人工智能处理器可以是多核处理器,并采用分层的 结构设计。该多核处理器可以实现在一个或多个前述的祼片上,每个祼片 作为一个片上***,并且可以包括多个前述的集群,而每个集群又可以包 括多个核(“Core”)。可以看出,多核处理器是以片上***-集群-核的层 级所构成的。
在本公开的方案中,祼芯中的集群可以借助于ROB装置与片外存储 装置相连,以从片外存储装置中读取或向片外存储装置写入对应数据。该 片外存储装置例如可以是动态随机存储器(“DRAM”)。
如前所述,为了实现集群的高效数据访存,本公开提出在ROB装置 处对来自于集群的读请求进行“合并”操作,以避免频繁地读取片外存储装 置。具体来说,对于针对于相同存储地址的多个读请求,本公开的方案将 执行初始读请求从存储装置获取的对应数据驻留于ROB装置处。基于此, 对于后续接收到的、针对于相同存储地址的读请求,可以将其与先前的读 请求进行“合并”,即对于后续接收到的读请求,本公开的方案将不再从存 储装置中去读取对应数据。相反,ROB装置直接从驻留数据中将该对应数 据返回至发出读请求的集群。在一些实施场景中,这样的“合并”操作可以 通过不同的方式来启动或触发,例如通过硬件或软件指令。同样地,还可 以通过类似机制来取消这样的“合并”操作,从而令数据在ROB装置处的 驻留更为灵活和更具可操控性。
下面结合附图来详细描述本公开的具体实施方式。
图1是示意性示出根据本公开实施例的人工智能(“AI”)处理器100的 简化框图。可以理解的是,这里的人工智能处理器可以是下文结合图6将 要描述的AI处理器601,并且具有一个或多个处理器核,以便可以并行地 执行多个任务或者协作处理同一个任务。
如图1中所示,人工智能处理器100可以包括裸芯102、布置于裸芯 中的集群106,其中每个集群示例性地包括四个处理器核108。裸芯与裸 芯之间通过D2D接口进行通信。如前所述,本公开的方案提出在D2D接 口处设置重排序缓冲(“ROB”)装置112,其与存储装置110连接,以便 实现对存储装置中的数据的对应驻留。
在本公开中,图中所示出的处理器核可以是人工智能处理器中的运算 器或运算单元,其可以用于执行各种运算任务,包括张量或向量类型数据 的计算任务。在一些场景中,包括多个处理器核的集群具有对应的集群标 识符(“ID”),并且可以单独经由本公开的ROB装置来向存储装置110 发起数据访存请求,例如对存储装置中数据的读请求和写请求。存储装置 110可以是各种类型的片外存储器,例如动态随机存储器(“DRAM”), 其存储有集群执行计算任务所相关的各种数据或中间结果。
为了实现高效的数据访存,本公开的ROB装置112设置于集群和存 储装置之间,以用于统一处理集群和存储装置之间的数据交互。为了实现 来自于不同集群的读请求的“合并”操作,ROB装置112初始可以记录已发 出的多个不同的读请求,以形成历史读请求记录,其中每个读请求与存储 装置的某个存储地址相关联,以便从该存储地址读取数据进行驻留。在一 个实施场景中,可以在ROB装置112中设置一块特定的存储空间,以用 于存储这些读请求的访存地址(即存储装置的存储地址),并且可以通过 这些访存地址来对这些先前的读请求进行区别和记录。
进一步,ROB装置112可以将这些读请求所对应的数据驻留于例如下 文将要提到的重排序缓冲电路中。基于此,当接收到与历史读请求记录中 的读请求具有相同的存储地址的读请求时,ROB装置112可以将该接收到 的读请求与先前记录的读请求进行“合并”。换句话说,ROB装置112将不 向存储装置转发该接收到的读请求;相反,其直接利用与该接收到的读请 求对应的历史读请求的驻留数据来向集群反馈。在一些应用场景中,为了 灵活地控制ROB装置,本公开的方案还提出利用各种指令来启动或关闭 ROB装置如前所述的“合并”操作和数据“驻留”操作。由此,本公开的ROB 装置将以更为用户友好和高效的方式运行,从而提升集群的数据访存效率。
需要指出的是,尽管图中仅示出两个裸芯并且每个裸芯中包括四个集 群,但其仅用于示例目的。在一些应用场景中,人工智能处理器可以包括 更多的裸芯,而每个裸芯中可以包括少于或多于四个的集群,并且每个集 群也可以包括少于或多于四个的处理器核。因此,本公开的方案对于裸芯、 集群和处理器核的数目不做限制。另外,本公开的ROB装置也可以灵活 地设置,例如可以针对每个集群设置一个ROB装置,并且ROB装置之间 以全连接的方式进行连接,例如经由互连或交叉开关(“crossbar”)。当将 存储装置中特定的一段物理地址空间(即本公开的预定物理地址段)中的 数据分配用于多个ROB装置的数据驻留时,则每个ROB装置可以按照均 分的物理地址段来将对应的数据从存储装置驻留至ROB装置上。
图2是示意性示出根据本公开实施例的重排序缓冲装置112的详细结 构框图。可以理解的是,由于图2所示出的ROB装置112也即图1中所 示出的ROB装置,因此前文关于ROB装置的描述同样也适用于下文的描 述。
如图2中所示,本公开的ROB装置112可以包括重排序缓冲电路201、 接收电路202、判定电路203和发送电路204。
就执行的功能而言,重排序缓冲电路201可以配置用于驻留从存储装 置的预定物理地址段内读取到的数据。接收电路202可以配置用于接收来 自于集群针对于前述存储装置的读请求,其中读请求包括待从存储装置读 取数据的目标物理空间地址。接着,判定电路203可以配置用于在目标物 理空间地址位于预定物理地址段内时,判定不发送所述读请求。这里的“不 发送”也即是将此次的读请求和先前已经接收到的、针对于相同的目标物理空间地址的读请求进行了合并,从而不再考虑此次的读请求,也即不会 针对此次的读请求来访问存储装置。最后,发送电路204配置用于从所述 重排序缓冲电路读取对应于目标物理空间地址的驻留数据,以作为所述读 请求所读取的数据来发送至所述集群。
以上就ROB装置112中的每个电路的主要功能进行了描述。然而, 可以理解的是根据不同的实施例和实现场景,上述的每个电路可以执行更 为具体或附加的操作。下面将针对每个电路执行的具体操作进行详细的描 述。
在一个实施例中,重排序缓冲电路201可以配置用于驻留从存储装置 的预定物理地址段内读取到的数据。这里的驻留数据可以是初始响应于来 自于集群的读请求而从存储装置获取的对应数据,并且这些多个读请求针 对于存储装置的不同存储地址的数据。在一个实施场景中,本公开的读请 求可以包括任务标记位,其用于标记任务是由多个集群共同执行的。进一 步,这里的标记可以是标记到具体的集群,例如标记到集群1、集群2和 集群3,该三个集群执行同一个任务。在该情形下,发送电路可以配置用 于对多个集群针对相同的目标物理空间地址的读请求返回对应的驻留数 据。
为了实现对重排序缓冲电路中驻留的数据的有效控制,重排序缓冲电 路201还可以配置用于在包含针对于相同的存储地址的一个或多个读请求 的第一指令的执行期间,保持所述对应数据的驻留。此后,在第一指令执 行结束后,对驻留于重排序缓冲电路上的对应数据进行释放。换句话说, 此处驻留数据的生存期是第一指令的执行期。可以理解的是,在该应用场 景中,本公开的ROB装置可以实现按照指令为单位来进行数据的驻留和 释放。基于此,同一条指令的多个读请求所得到的数据可以被多个集群共 同使用。当该指令执行结束后,则ROB装置可以释放该多个读请求所对 应的数据。
在一些应用场景中,在执行第一指令的期间,当检测到第二指令读取 重排序缓冲电路上的对应数据,则此时重排序缓冲电路将保持该对应数据 的驻留而不是如上所述在第一指令执行完后就释放驻留数据。通过这样的 驻留延长方式,可以提高驻留数据的使用率,避免频繁从存储装置获取数 据。
在一些应用场景中,为了更为有效地控制驻留数据的驻留时间和释放 时间,本公开提出在来自于集群的读请求中包括对应数据在重排序缓冲电 路中驻留的时间窗信息,其中重排序缓冲电路配置用于在时间窗信息所指 示的时间窗内驻留所述对应数据,并且在时间窗外释放所述对应数据。在 设置该时间窗的情况下,读请求可以包括开始读请求和结束读请求,其中 开始读请求可以包括时间窗信息中用于表示开始驻留对应数据的开始时 间指示,并且结束读请求可以包括时间窗信息中用于表示结束驻留对应数 据的结束时间指示。作为示例性的应用,对于集群0发出的一条针对存储 装置(例如DDR)读请求的指令,在其第一个突发(“burst”)中开始信号 (也即前述的开始时间指示)置起,而对于最后一个突发,其中结束信号 (也即前述的结束时间指示)置起。本公开的ROB装置从集群0收到开 始信号的开始请求起,直到从集群0接收到结束信号的结束请求期间,集 群0所请求的读数据都将从ROB装置返回,而从开始请求起到结束请求 这段时间也即前文所称的时间窗。
对于具有与集群0相同任务(“job”)的集群1来说,其读存储装置的 行为也与集群0相类似,也即其也具有与集群0相类似的时间窗。假定集 群0的时间窗为A,集群1的时间窗为B。当时间窗A和时间窗B在时间 维度上存在重合时,则较早结束的时间窗的结束时间将自动地延长至较晚 结束的时间窗的结束时间。换句话说,重排序缓冲电路配置用于将对应数 据的驻留时间延长至时间上相对靠后的时间窗内。当两个时间窗不存在重 合时,则各自的驻留时间在各自的时间窗内有效,并且一旦请求的驻留数 据被反馈回集群后,ROB装置将自动地释放驻留数据或将驻留数据宣告无 效(“invalid”)。
作为重排序缓冲装置112的接收端,接收电路202可以配置用于接收 当前读请求,其中所述当前读请求用于从所述存储装置的存储地址读取对 应数据。根据不同的场景,这里的当前读请求可以是来自于集群的读请求 或来自于控制装置的读请求。这里,控制装置用于对集群进行控制操作, 并且在一些场景中将集群的读请求转发至接收电路202。在一些场景中, 控制装置也可以单独向接收电路202发送读请求,并且作为读请求反馈的 对应数据也可以直接从重排序缓冲装置发送至集群。
为了方便对ROB装置的高效控制,本公开的方案还提出利用硬件指 令来启动ROB装置执行数据驻留和释放操作。鉴于此,接收电路202可 以配置成接收用于在重排序缓冲电路内开始驻留对应数据的第三指令。响 应于接收电路接收到第三指令,重排序缓冲电路可以配置用于启动将存储 装置的存储地址处的对应数据进行驻留的操作,以便集群通过读请求从重 排序缓冲电路直接读取对应的驻留数据。在通过第三指令在ROB装置中 驻留对应数据的场景中,接收电路还可以配置成用于从集群接收针对于存 储地址的写请求,并且所述重排序缓冲电路还配置用于响应于接收到针对 于所述存储地址的写请求,自动释放对应的驻留数据。
换句话说,在上述应用场景下,通过第三指令来启动ROB装置的数 据驻留并且通过检测到对应的写请求时释放对应数据。这里执行释放操作 是考虑到针对于所述存储地址的写请求将改写或更新该存储地址的数据, 此时在ROB装置上的驻留数据将不同于存储装置上的数据,因此需要将 其从ROB装置上释放,以便后续在响应于新的读请求时将更新后的数据 驻留于重排序缓冲电路中。对于第三指令,在一个实施例中,其可以是同 步指令并且其一个域可以用于指示其作为启动ROB装置的数据驻留的指 令使用。另外,在本公开的上下文中,释放操作可以有不同的实现方式, 例如将对应数据直接从重排序缓冲电路中删除、移除或将其设置为无效。
根据不同的应用场景,上述的写请求和读请求可以来自于同一个集群。 附加地或替代地,上述的写请求和读请求也可以来自于不同的集群,这些 不同的集群执行相同的任务。由此,当发生来自于多个不同集群、针对于 相同存储地址的读请求时,则根据本公开的方案只需考虑其中的一个读请 求,也即将这些读请求进行“合并”,从而减小处理读请求的数量。类似地, 针对于相同存储地址的来自于一个集群的写请求可以将先前多个集群共同使用的驻留数据从ROB装置释放。
为了实现读请求的“合并”操作,判定电路203可以配置用于在所述当 前读请求所读取的存储地址与先前读请求所读取的存储地址相同时,判定 不向存储装置发送所述当前读请求。此处判定不发送也即是将该当前读请 求与对应的先前读请求进行合并,从而由对应的先前读请求来替代当前读 请求,并且此次不再向存储装置进行读请求转发操作。
响应于判定不向存储装置发送当前读请求,则发送电路204可以配置 用于从重排序缓冲电路读取对应于存储地址的驻留数据,以作为所述当前 读请求所读取的数据来发送至所述集群。可以看出,由于具有相同的存储 地址并且对应于该存储地址的数据先前已经驻留于重排序缓冲电路中,因 此将不再执行从存储装置读取对应于当前读请求的数据的操作。替代地, 直接从重排序缓冲电路读取先前针对于该存储地址的驻留数据。由于都针 对于相同的存储地址,因此基于当前读请求和先前读请求从存储装置所获 得的数据也是相同的。基于此,本公开的方案直接使用ROB装置中先前 存储的驻留数据来作为当前读请求的反馈。
在一些应用场景中,为了实现对ROB装置中数据的灵活操控,接收 电路还配置用于接收用于将对应数据驻留于所述重排序缓冲区的第四指 令,并且所述重排序缓冲电路还配置用于响应于接收到所述第四指令,将 所述对应数据驻留。对应地,接收电路还配置用于接收将所述对应数据从 所述重排序缓冲区释放的第五指令。在该情形下,重排序缓冲电路还配置 用于响应于接收到将所述对应数据从所述重排序缓冲区释放的第五指令, 将所述对应数据释放。可以理解的是,通过第四指令的使用可以实现对驻 留数据的预取操作,例如集群可以将对应数据预先驻留于ROB装置中而 无需立即返回给集群。鉴于此,第四指令可以视为对应数据的预取指令, 并且其可以包含于存储装置的IO指令中,从而可以减小指令处理的延迟。 另外,第五指令可以是集群发送给ROB装置的数据释放指令,这样可以利用集群和ROB装置之间的保序特性,确保ROB装置按照正常顺序释放 驻留数据。
以上结合图2对本公开的重排序缓冲装置112进行了详细的说明,可 以理解的是上述的描述仅仅是示例性的而非限制性的,并且本领域技术人 员根据本公开的教导也可以对重排序缓冲装置的实现方式进行改变。例如, 尽管图中以电路布置的方式描述了重排序缓冲装置,但其也可以通过软件 模块或单元来实现。例如,接收电路和发送电路可以通过软件代码实现的 收发单元来替代,以实现读请求和/或写请求的接收以及驻留数据的传送。
图3是示意性示出根据本公开用于重排序缓冲的方法300的简化流程 图。可以理解的是,这里的方法300可以由图1和图2所示出的重排序缓 冲装置来执行,因此上文关于重排序缓冲装置的操作描述也同样适用于下 文方法300的描述。
如图3所示,在步骤S302处,驻留从存储装置的预定物理地址段内 读取到的数据。如前所述,这里的预定物理地址段可以是存储装置的一段 物理存储地址空间,其可以由程序员预先通过程序指令来指定。进一步, 这里的驻留可以是响应于来自于集群的读请求所做出的动作,例如针对该 读请求的数据先前并没有从存储装置被读取过并且也没有驻留于重排序 缓冲电路上。接着,在步骤S304处,接收来自于集群针对于所述存储装 置的读请求。
在步骤S306处,在目标物理空间地址位于预定物理地址段内时,判 定不发送所述当前读请求。通过存储地址是否相同的判断,可以确定先前 读请求是否能替代当前读请求,也即是针对先前读请求的驻留数据是否可 以用于当前读请求。最后,在步骤S308处,由于存储地址的相同,读取 对应于目标物理空间地址的驻留数据,以作为当前读请求所读取的数据来 发送至所述集群。显然,通过这样的“合并”操作,本公开的方案不需要针 对于相同的读请求(针对于相同的存储地址)来频繁地访问存储装置,由 此加速数据(特别是张量或向量数据)的访存效率。
图4是示意性示出根据本公开实施例的人工智能处理器400的一种可 能实现方式的结构框图。可以理解的是,这里的人工智能处理器400可以 视为图1所示人工智能处理器100的一种实施方式,因此关于人工智能处 理器100的描述同样适用于下文结合图4对人工智能处理器400的描述。
如图中所示,人工智能处理器400示例性地包括四个裸芯(die1~die4), 其中每个裸芯包括四个集群和一个关联的ROB装置112。ROB装置112 可以通过交叉开关402全连接,并且与存储装置110连接。在操作中,存 储装置110中的预定物理地址段将分配用于四个ROB装置112上的数据 驻留,即每个ROB装置112将驻留四分之一的预定物理地址段所对应的 数据。当来自于裸芯的一个集群的读请求到达其对应的ROB装置112时, 其将判定是否有对应的驻留数据,以便“合并”该读请求。当存在与该读请 求所针对的物理地址相同的先前读请求时,则将不向存储装置发送该读请 求。取而代之,将针对于相同物理地址的先前读请求所对应的驻留数据反 馈回集群。相对地,当与集群关联的ROB装置不存在对应的先前读请求 时,则可以通过交叉开关来与另外三个ROB装置进行交互,以便另外三 个ROB装置来判定是否有对应的驻留数据。当存在对应的驻留数据时, 则执行前述的“合并”操作,并将驻留数据反馈给对应的集群。
可以理解的是,图4所示人工智能处理器400的架构仅仅是示例性的 而非限制性。本领域技术人员根据本公开的教导,也可以想到对该结构做 出改变。例如,除了每个裸芯与一个ROB装置关联外,也可以设置与每 个集群关联的ROB装置。由此,本公开的ROB装置设置也可以是一个分 级或分层的结构,即由裸芯关联的ROB装置构成一级ROB装置架构而由集群关联的ROB装置构成二级ROB装置架构,从而加速集群与存储装置 的数据访存并减小数据的频繁读取。
图5是示意性示出根据本公开实施例的用于重排序缓冲的方法500的 详细流程图。可以理解的是,方法500可以由图1、图2和图4所示出的 重排序缓冲装置来执行,并且其可以视为方法300的一种可能实现方式。 因此,前文结合图1-图4所做出的描述同样适用于下文的描述。
如图5所示,在步骤S502处,接收用于将数据驻留的开始读请求。 接着,在步骤S504处,响应于接收到前述的开始读请求,将对应数据进 行驻留,由此累积形成历史数据(包括历史读请求和对应的驻留数据)。 例如,此时的驻留涉及接收到来自于集群或控制装置针对于存储装置的读 请求,并且将从存储装置读取的数据驻留于ROB装置中并且返回给集群。 由于此时还处在数据驻留的累积初始阶段,因此读请求的存储地址的比较 操作可以不执行或者执行的次数较低。在一些场景中,当多个针对于相同 存储地址的读请求都到达ROB装置时,ROB装置也可以直接选取其中一 个读请求来执行从存储装置读取相应数据的操作,并且对于其余的读请求 则忽略而不再执行读取操作。
在步骤S506处,接收用于从存储装置的存储地址读取对应数据的当 前读请求。在步骤S508处,响应于接收到当前读请求,从历史读请求记 录中查找针对于相同的存储地址的先前读请求。在步骤S510处,响应于 查找到相同的存储地址的先前读请求,判定不向存储装置发送当前读请求。 换句话说,由于先前读请求和当前读请求针对于相同的存储地址,而该存 储地址的对应数据已经驻留于ROB装置处,因此没有必要再向存储地址 转发该当前读请求。由此,在步骤S512处,直接读取先前读请求所驻留 的对应数据,作为当前读请求的对应数据来发送至集群。
在步骤S514处,接收用于将数据释放的结束读请求。最后。在步骤 S516处,响应于接收到结束读请求,自动释放驻留的对应数据。如前所述, 在开始读请求和结束读请求之间的时间窗期间,数据驻留将保持有效。相 反,当时间窗已过,则驻留数据将被释放或被无效。
以上结合图5对本公开的用于重排序缓冲的方法进行了详细的描述。 通过图5所示方法,本公开的方案基于存储地址的读请求“合并”策略,减 小了集群经由ROB装置对存储地址的读请求数量,从而节省了访存带宽。 另外,通过数据驻留和释放,本公开的方案还支持ROB装置上驻留数据 的灵活控制。
本公开实施例中的设备侧可以是人工智能芯片或板卡等。图6示出本 披露实施例的一种板卡600的结构示意图。如图6所示,板卡600包括芯 片(或称“处理芯片”)601,其是一种***级芯片(System on Chip,SoC), 或称片上***,集成有一个或多个组合处理装置,组合处理装置是一种人 工智能运算单元,用以支持各类深度学***台的存储能力和计算能力有很高的要求,此实 施例的板卡600适用在云端智能应用,具有庞大的片外存储、片上存储和 大量的计算能力。
芯片601通过对外接口装置602与外部设备603相连接。外部设备803 例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或WIFI接 口等。待处理的数据可以由外部设备603通过对外接口装置602传递至芯 片601。芯片601的计算结果可以经由对外接口装置602传送回外部设备 603。根据不同的应用场景,对外接口装置602可以具有不同的接口形式, 例如PCIe接口等。
板卡600还包括用于存储数据的存储器件604,其包括一个或多个存 储单元605。存储器件604通过总线与控制器件606和芯片601进行连接 和数据传输。板卡600中的控制器件606配置用于对芯片601的状态进行 调控。为此,在一个应用场景中,控制器件606可以包括单片机(Micro Controller Unit,MCU)。
图7是示出此实施例的芯片601中的组合处理装置700的结构图。如 图7中所示,组合处理装置700包括计算装置701、接口装置702、处理 装置703和DRAM 704。
计算装置701配置成执行用户指定的操作,主要实现为单核智能处理 器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通 过接口装置702与处理装置703进行交互,以共同完成用户指定的操作。
接口装置702用于在计算装置701与处理装置703间传输数据和控制 指令。例如,计算装置701可以经由接口装置702从处理装置703中获取 输入数据,写入计算装置701片上的存储装置。进一步,计算装置701可 以经由接口装置702从处理装置703中获取控制指令,写入计算装置701 片上的控制缓存中。替代地或可选地,接口装置702也可以读取计算装置 701的存储装置中的数据并传输给处理装置703。
处理装置703作为通用的处理装置,执行包括但不限于数据搬运、对 计算装置701的开启和/或停止等基本控制。根据实现方式的不同,处理装 置703可以是中央处理器(central processing unit,CPU)、图形处理器 (graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或 多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit, ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者 其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并 且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置701 而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置 701和处理装置703整合共同考虑时,二者视为形成异构多核结构。
DRAM 704用以存储待处理的数据,为DDR内存,大小通常为16G 或更大,用于保存计算装置701和/或处理装置703的数据。尽管在图7 中未示出,在计算装置701内的集群和DRAM704之间可以布置本公开的 ROB装置,以用于执行根据图1-图5所描述的操作步骤。
图8示出了计算装置701的内部结构示意图。计算装置701用以处理 计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置701 采用多核分层结构设计,计算装置701作为一个片上***,其包括多个集 群(cluster),每个集群又包括多个处理器核,可以用于执行本公开下发 的任务。换言之,计算装置701是以片上***-集群-处理器核的层次所构 成的。
以片上***的层级来看,如图8所示,计算装置701包括外部存储控 制器801、外设通信模块802、片上互联模块803、同步模块804以及多个 集群805。
外部存储控制器801可以有多个,在图中示例性地展示2个,其用以 响应处理器核发出的访问请求,访问外部存储设备,例如图9中的DRAM 904(其可以相当于本公开方案的存储装置),从而自片外读取数据或是 将数据写入。外设通信模块802用以通过接口装置702接收来自处理装置 703的控制信号,启动计算装置701执行任务。片上互联模块803将外部 存储控制器801、外设通信模块802及多个集群805连接起来,用以在各 个模块间传输数据和控制信号。同步模块804是一种全局同步屏障控制器 (global barrier controller,GBC),用以协调各集群的工作进度,确保信 息的同步。多个集群805是计算装置701的计算核心,在图中示例性地展 示4个,随着硬件的发展,本披露的计算装置701还可以包括8个、16 个、64个、甚至更多的集群805。
以集群的层级来看,如图8所示,每个集群805包括多个处理器核(IPU core)806及一个存储核(MEM core)807。处理器核806在图中示例性地 展示4个,本披露不限制处理器核806的数量。其内部架构如图8所示。 每个处理器核806包括三大模块:控制模块91、运算模块92及存储模块 93。
控制模块91用以协调并控制运算模块92和存储模块93的工作,以 完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)911 及指令译码单元(instruction decode unit,IDU)912。取指单元911用以 获取来自处理装置703的指令,指令译码单元912则将获取的指令进行译 码,并将译码结果作为控制信息发送给运算模块92和存储模块93。
运算模块92包括向量运算单元921及矩阵运算单元922。向量运算单 元921用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算; 矩阵运算单元922负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块93用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)931、权值存储单元(weight RAM,WRAM)932、输入/ 输出直接内存访问模块(input/outputdirect memory access,IODMA)933、 搬运直接内存访问模块(move direct memoryaccess,MVDMA)934。NRAM 931用以存储供处理器核806计算的输入、输出数据及中间结果;WRAM 932则用以存储深度学习网络的权值;IODMA 933通过广播总线1009控 制NRAM 931/WRAM 932与DRAM 704的访存;MVDMA 934则用以控 制NRAM 931/WRAM 932与SRAM 808的访存。
回到图8,存储核807主要用以存储和通信,即存储处理器核806间 的共享数据或中间结果、以及执行集群805与DRAM 704之间的通信、集 群805间彼此的通信、处理器核806间彼此的通信等。在其他实施例中, 存储核807具有标量运算的能力,用以执行标量运算。
存储核807包括共享存储单元(SRAM)808、广播总线809、集群直 接内存访问模块(cluster direct memory access,CDMA)810及全局直接 内存访问模块(global directmemory access,GDMA)811。SRAM 808承 担高性能数据中转站的角色,在同一个集群805内不同处理器核806之间 所复用的数据不需要通过处理器核806各自向DRAM 704获得,而是经 SRAM 808在处理器核806间中转,存储核807只需要将复用的数据从 SRAM 808迅速分发给多个处理器核806即可,以提高核间通讯效率,亦 大大减少片上片外的输入/输出访问。可以理解的是,尽管图中示出集群通 过存储核来与DRAM进行数据访存,但这样的设置仅仅是示例性的而非 限制性的。如前所述,为了提高对DRAM的访存,本公开提出了在集群 和DRAM之间设置分布式的ROB装置,以便执行如前所述的读请求“合 并”和驻留数据反馈操作。
广播总线809、CDMA 810及GDMA 811则分别用来执行处理器核806 间的通信、集群805间的通信和集群805与DRAM 704的数据传输。以下 将分别说明。
广播总线809用以完成集群805内各处理器核806间的高速通信,此 实施例的广播总线809支持核间通信方式包括单播、多播与广播。单播是 指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份 数据从SRAM 808传输到特定几个处理器核806的通信方式,而广播则是 将一份数据从SRAM 808传输到所有处理器核806的通信方式,属于多播 的一种特例。
CDMA 810用以控制在同一个计算装置701内不同集群805间的SRAM 808的访存。图10示出当一个处理器核欲将数据写入至另一个集群 的处理器核时的示意图,以说明CDMA810的工作原理。在此应用场景中, 同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1, 集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入 至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中, CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端 推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1 的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核 1发送单播读请求将数据从SRAM 1中读取出来。
回到图8,GDMA 811与外部存储控制器801协同,用以控制集群805 的SRAM 808到DRAM 704的访存,或是将数据自DRAM 704读取至 SRAM 808中。从前述可知,DRAM 704与NRAM 931或WRAM 932间 的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 933直接联 系DRAM 704与NRAM 931或WRAM 932;第二个渠道是先经由GDMA 811使得数据在DRAM704与SRAM 808间传输,再经过MVDMA 934使 得数据在SRAM 808与NRAM 931或WRAM 932间传输。虽然表面上看 来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例 中,第二个渠道的带宽远大于第一个渠道,因此DRAM 704与NRAM 931 或WRAM 932间的通信通过第二个渠道可能更有效率。本公开的实施例 可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 811的功能和IODMA 933的功能可以整合 在同一部件中。本披露为了方便描述,将GDMA 811和IODMA 933视为 不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术 效果与本公开类似,即属于本公开的保护范围。进一步地,GDMA 811的 功能、IODMA 933的功能、CDMA 810的功能、MVDMA 934的功能亦可 以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与 本披露类似,均属于本公开的保护范围。
以上结合图6-图10对本公开的软硬件架构及其内部结构进行了详细 的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同 的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡(或者说 人工智能设备)及其内部结构进行改变,而这些改变依然落入本公开的保 护范围内。
基于上文的描述,本领域技术人员可以理解本申请实际上也公开了一 种设备,其包括处理器和存储器。具体地,存储器可以存储用于重排序缓 冲的程序指令,当所述程序指令由处理器执行时,实现本申请结合图1- 图5所描述的操作步骤。另外,由于本申请的方案可以通过计算程序指令 来实现,因此本申请也公开了一种计算机可读存储介质或计算机程序产品, 其上存储有用于重排序缓冲的计算机程序/指令,从而实现结合图1-图5 所描述的操作步骤。
以上结合附图对本公开的方案进行了详细的描述。根据不同的应用场 景,本披露的设备或装置可以包括服务器、云端服务器、服务器集群、数 据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC 设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄 像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视 觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通 工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、 冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备 包括核磁共振仪、B超仪和/或心电图仪。本披露的设备或装置还可以被应 用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、 电网、电信、金融、零售、工地、医疗等领域。
进一步,本披露的设备或装置还可以用于云端、边缘端、终端等与人 工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中, 根据本披露方案的功耗高的设备或装置可以应用于云端设备(例如云端服 务器),而功耗小的设备或装置可以应用于终端设备和/或边缘端设备(例 如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和 终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资 源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边 端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述 为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并 不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域 技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执 行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可 选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述 也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有 详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理 解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。 例如,就前文所述的设备或装置实施例中的各个单元来说,本文在考虑了 逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。 又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元 或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接 或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信 连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号 传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上 分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件 或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的 需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的 目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个 单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来 实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时, 所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的 方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品 可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个 人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器 (“Read OnlyMemory”,简写为ROM)、随机存取存储器(“Random Access Memory”,简写为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程 序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现, 即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件 结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限 于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置 或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、 FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以 是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可 以是可变电阻式存储器(“Resistive Random Access Memory”,简写为 RRAM)、动态随机存取存储器(“DynamicRandom Access Memory”,简 写为DRAM)、静态随机存取存储器(“Static Random AccessMemory”, 简写为SRAM)、增强动态随机存取存储器(“Enhanced Dynamic Random AccessMemory”,简写为“EDRAM”)、高带宽存储器(“High Bandwidth Memory”,简写为“HBM”)、混合存储器立方体(“Hybrid Memory Cube”, 简写为“HMC”)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1、一种重排序缓冲装置,其设置于人工智能处理器的裸片间 的接口处,所述人工智能处理器包括多个祼片和存储装置,每个祼片内包 括一个或多个用于执行运算的集群,每个集群包括多个处理器核,所述重 排序缓冲装置包括:
重排序缓冲电路,其配置用于驻留从所述存储装置的预定物理地址段 内读取到的数据;
接收电路,其配置用于接收来自于集群针对于所述存储装置的读请求, 其中所述读请求包括待从所述存储装置读取数据的目标物理空间地址;
判定电路,其配置用于在所述目标物理空间地址位于所述预定物理地 址段内时,判定不发送所述读请求;以及
发送电路,其配置用于从所述重排序缓冲电路读取对应于目标物理空 间地址的驻留数据,以作为所述读请求所读取的数据来发送至所述集群。
条款A2、根据条款A1所述的重排序缓冲装置,其中所述读请求包括 任务标记位,其用于标记任务由多个集群共同执行,并且所述发送电路配 置用于对所述多个集群针对相同的目标物理空间地址的读请求返回对应 的驻留数据。
条款A3、根据条款A2所述的重排序缓冲装置,其中所述集群具有相 关联的集群标识,并且所述任务标记位通过标记多个集群标识来指示共同 执行任务的多个集群。
条款A4、根据条款A1所述的重排序缓冲装置,其中所述读请求包括 对应数据在重排序缓冲电路中驻留的时间窗信息,其中重排序缓冲电路配 置用于在时间窗信息所指示的时间窗内驻留所述对应数据,并且在时间窗 外释放所述对应数据。
条款A5、根据条款A4所述的重排序缓冲装置,其中所述读请求包括 开始读请求和结束读请求,其中所述开始读请求包括时间窗信息中用于表 示开始驻留所述对应数据的开始时间指示,并且所述结束读请求包括所述 时间窗信息中用于表示结束驻留所述对应数据的结束时间指示。
条款A6、根据条款A4所述的重排序缓冲装置,其中所述多个集群中 的部分或所有集群发送各自的读请求,并且响应于各自的读请求的时间窗 存在重合的时间段,所述重排序缓冲电路配置用于将对应数据的驻留时间 延长至时间上相对靠后的时间窗内。
条款A7、根据条款A1所述的重排序缓冲装置,其中所述重排序缓冲 电路配置用于:
在包含针对于相同的存储地址的一个或多个读请求的第一指令的执 行期间,保持所述对应数据的驻留;以及
在所述第一指令执行结束后,对驻留于所述重排序缓冲区上的对应数 据进行释放。
条款A8、根据条款A7所述的重排序缓冲装置,其中所述重排序缓冲 电路配置用于:
在所述集群执行所述第一指令期间,响应于检测到第二指令读取所述 重排序缓冲电路上的对应数据,则保持对应数据的驻留直至所述第二指令 执行结束后释放。
条款A9、根据条款A1所述的重排序缓冲装置,其中所述接收电路还 配置用于接收用于指示在所述重排序缓冲电路内开始驻留所述对应数据 的第三指令,并且响应于接收到所述第三指令,重排序缓冲电路配置用于 启动将存储装置的存储地址的对应数据进行驻留操作,以便所述集群通过 所述读请求从所述重排序缓冲电路直接读取所述对应数据。
条款A10、根据条款A5所述的重排序缓冲装置,其中所述接收电路 还配置用于接收针对于所述存储地址的写请求,并且所述重排序缓冲电路 还配置用于响应于接收到针对于所述存储地址的写请求,自动释放驻留的 所述对应数据。
条款A11、根据条款A10所述的重排序缓冲装置,其中所述写请求和 所述读请求接收自相同的集群。
条款A12、根据条款A10所述的重排序缓冲装置,其中所述写请求和 所述读请求接收自执行相同任务的不同集群。
条款A13、根据条款A9所述的重排序缓冲装置,其中所述第三指令 是同步指令,并且所述同步指令的一个域用于指示其作为启动驻留的指令 使用。
条款A14、根据条款A1所述的重排序缓冲装置,其中所述接收电路 还配置用于接收用于将所述对应数据驻留于所述重排序缓冲区的第四指 令,并且所述重排序缓冲电路还配置用于响应于接收到所述第四指令,将 所述对应数据驻留;以及
所述接收电路还配置用于接收将所述对应数据从所述重排序缓冲区 释放的第五指令,并且所述重排序缓冲电路还配置用于响应于接收到将所 述对应数据从所述重排序缓冲区释放的第五指令,将所述对应数据释放。
条款A15、根据条款A14所述的重排序缓冲装置,其中所述第四指令 包含于针对于所述存储装置的IO指令中。
条款A16、一种人工智能处理器,包括:
多个祼芯,其中祼芯之间通过祼芯到祼芯接口进行通信,并且每个祼 芯包括一个或多个集群,每个集群包括多个处理器核;以及
根据条款A1-A15的任意一项所述的重排序缓冲装置,其布置于裸片 间的接口处,以用于针对集群中的读请求来返回对应的驻留数据。
条款A17、根据条款A16所述的人工智能处理器,其中针对每个祼芯 设置有相关联的一个重排序缓冲装置,或者所述多个祼芯共用一个重排序 缓冲装置。
条款A18、根据条款A16或A17所述的人工智能处理器,其中针对 每个集群设置有相关联的一个重排序缓冲装置,或者所述多个集群共用一 个重排序缓冲装置。
条款A19、根据条款A18所述的人工智能处理器,其中每个集群与对 应的一个重排序缓冲装置相连接,而所述重排序缓冲装置之间以全连接方 式进行连接。
条款A20、根据条款A16-A19的任意一项所述的人工智能处理器,其 中每个重排序缓冲装置被分配用于驻留存储于所述存储装置的部分所述 预定物理地址段的数据。
条款A21、一种用于重排序缓冲的方法,其应用于设置在人工智能处 理器的裸片间的接口处的重排序缓冲装置,所述人工智能处理器包括多个 祼片和存储装置,每个祼片内包括一个或多个用于执行运算的集群,所述 方法包括:
驻留从所述存储装置的预定物理地址段内读取到的数据;
接收来自于集群针对于所述存储装置的读请求,其中所述当前读请求 包括待从所述存储装置读取数据的目标物理空间地址;
在所述目标物理空间地址位于所述预定物理地址段内时,判定不发送 所述当前读请求;以及
读取对应于目标物理空间地址的驻留数据,以作为所述当前读请求所 读取的数据来发送至所述集群。
条款A22、根据条款A21所述的方法,其中所述读请求包括任务标记 位,其用于标记任务由多个集群共同执行,并且所述方法包括:
对所述多个集群针对相同的目标物理空间地址的读请求返回对应的 驻留数据。
条款A23、根据条款A22所述的方法,其中所述集群具有相关联的集 群标识,并且所述任务标记位通过标记多个集群标识来指示共同执行任务 的多个集群。
条款A24、根据条款A21所述的方法,其中所述读请求包括对应数据 在重排序缓冲装置中驻留的时间窗信息,其中所述方法包括在时间窗信息 所指示的时间窗内驻留所述对应数据,并且在时间窗外释放所述对应数据。
条款A25、根据条款A24所述的方法,其中所述读请求包括开始读请 求和结束读请求,其中所述开始读请求包括时间窗信息中用于表示开始驻 留所述对应数据的开始时间指示,并且所述结束读请求包括所述时间窗信 息中用于表示结束驻留所述对应数据的结束时间指示。
条款A26、根据条款A24所述的方法,其中所述多个集群中的部分或 所有集群发送各自的读请求,并且所述方法还包括:
响应于各自的读请求的时间窗存在重合的时间段,将对应数据的驻留 时间延长至时间上相对靠后的时间窗内。
条款A27、根据条款A21所述的方法,还包括:
在包含针对于相同的存储地址的一个或多个读请求的第一指令的执 行期间,保持所述对应数据的驻留;以及
在所述第一指令执行结束后,对驻留于所述重排序缓冲装置上的对应 数据进行释放。
条款A28、根据条款A27所述的方法,还包括:
在所述集群执行所述第一指令期间,响应于检测到第二指令读取所述 重排序缓冲装置上的对应数据,则保持对应数据的驻留直至所述第二指令 执行结束后释放。
条款A29、根据条款A21所述的方法,其中还包括接收用于指示开始 驻留所述对应数据的第三指令,并且响应于接收到所述第三指令,启动将 存储装置的存储地址的对应数据进行驻留的操作,以便所述集群通过所述 读请求直接从驻留数据中读取所述对应数据。
条款A30、根据条款A25所述的方法,其中还包括接收针对于所述存 储地址的写请求,并且响应于接收到针对于所述存储地址的写请求,自动 释放驻留的所述对应数据。
条款A31、根据条款A30所述的方法,其中所述写请求和所述读请求 接收自相同的集群。
条款A32、根据条款A30所述的方法,其中所述写请求和所述读请求 接收自执行相同任务的不同集群。
条款A33、根据条款A29所述的方法,其中所述第三指令是同步指令, 并且所述同步指令的一个域用于指示其作为启动驻留的指令使用。
条款A34、根据条款A31所述的方法,其中所述方法还包括:接收用 于将所述对应数据驻留于所述重排序缓冲装置的第四指令,并且响应于接 收到所述第四指令,将所述对应数据驻留;以及
接收将所述对应数据从所述重排序缓冲装置释放的第五指令,并且所 述方法还包括响应于接收到将所述对应数据从所述重排序缓冲装置释放 的第五指令,将所述对应数据释放。
条款A35、根据条款A34所述的方法,其中所述第四指令包含于针对 于所述存储装置的IO指令中。
条款A36、一种用于重排序缓冲区的设备,包括:
处理器;以及
存储器,其存储有用于重排序缓冲区的程序指令,当所述程序指令由 处理器执行时,使得实现根据条款A21-A35的任意一项所述的方法。
条款A37、一种计算机可读存储介质,其存储有用于重排序缓冲区的 程序指令,当所述程序指令由处理器执行时,使得实现根据条款A21-A35 的任意一项所述的方法。
条款A38、一种板卡,包括根据条款A16-A20的任意一项所述的人工 智能处理器或根据条款A36所述的设备。
虽然本公开的实施方式如上,但所述内容只是为便于理解本公开而采 用的实施例,并非用以限定本公开的范围和应用场景。任何本公开所述技 术领域内的技术人员,在不脱离本公开所揭露的精神和范围的前提下,可 以在实施的形式上及细节上作任何的修改与变化,但本公开的专利保护范 围,仍须以所附的权利要求书所界定的范围为准。
Claims (38)
1.一种重排序缓冲装置,其设置于人工智能处理器的裸片间的接口处,所述人工智能处理器包括多个祼片和存储装置,每个祼片内包括一个或多个用于执行运算的集群,每个集群包括多个处理器核,所述重排序缓冲装置包括:
重排序缓冲电路,其配置用于驻留从所述存储装置的预定物理地址段内读取到的数据;
接收电路,其配置用于接收来自于集群针对于所述存储装置的读请求,其中所述读请求包括待从所述存储装置读取数据的目标物理空间地址;
判定电路,其配置用于在所述目标物理空间地址位于所述预定物理地址段内时,判定不发送所述读请求;以及
发送电路,其配置用于从所述重排序缓冲电路读取对应于目标物理空间地址的驻留数据,以作为所述读请求所读取的数据来发送至所述集群。
2.根据权利要求1所述的重排序缓冲装置,其中所述读请求包括任务标记位,其用于标记任务由多个集群共同执行,并且所述发送电路配置用于对所述多个集群针对相同的目标物理空间地址的读请求返回对应的驻留数据。
3.根据权利要求2所述的重排序缓冲装置,其中所述集群具有相关联的集群标识,并且所述任务标记位通过标记多个集群标识来指示共同执行任务的多个集群。
4.根据权利要求1所述的重排序缓冲装置,其中所述读请求包括对应数据在重排序缓冲电路中驻留的时间窗信息,其中重排序缓冲电路配置用于在时间窗信息所指示的时间窗内驻留所述对应数据,并且在时间窗外释放所述对应数据。
5.根据权利要求4所述的重排序缓冲装置,其中所述读请求包括开始读请求和结束读请求,其中所述开始读请求包括时间窗信息中用于表示开始驻留所述对应数据的开始时间指示,并且所述结束读请求包括所述时间窗信息中用于表示结束驻留所述对应数据的结束时间指示。
6.根据权利要求4所述的重排序缓冲装置,其中所述多个集群中的部分或所有集群发送各自的读请求,并且响应于各自的读请求的时间窗存在重合的时间段,所述重排序缓冲电路配置用于将对应数据的驻留时间延长至时间上相对靠后的时间窗内。
7.根据权利要求1所述的重排序缓冲装置,其中所述重排序缓冲电路配置用于:
在包含针对于相同的存储地址的一个或多个读请求的第一指令的执行期间,保持所述对应数据的驻留;以及
在所述第一指令执行结束后,对驻留于所述重排序缓冲区上的对应数据进行释放。
8.根据权利要求7所述的重排序缓冲装置,其中所述重排序缓冲电路配置用于:
在所述集群执行所述第一指令期间,响应于检测到第二指令读取所述重排序缓冲电路上的对应数据,则保持对应数据的驻留直至所述第二指令执行结束后释放。
9.根据权利要求1所述的重排序缓冲装置,其中所述接收电路还配置用于接收用于指示在所述重排序缓冲电路内开始驻留所述对应数据的第三指令,并且响应于接收到所述第三指令,重排序缓冲电路配置用于启动将存储装置的存储地址的对应数据进行驻留操作,以便所述集群通过所述读请求从所述重排序缓冲电路直接读取所述对应数据。
10.根据权利要求5所述的重排序缓冲装置,其中所述接收电路还配置用于接收针对于所述存储地址的写请求,并且所述重排序缓冲电路还配置用于响应于接收到针对于所述存储地址的写请求,自动释放驻留的所述对应数据。
11.根据权利要求10所述的重排序缓冲装置,其中所述写请求和所述读请求接收自相同的集群。
12.根据权利要求10所述的重排序缓冲装置,其中所述写请求和所述读请求接收自执行相同任务的不同集群。
13.根据权利要求9所述的重排序缓冲装置,其中所述第三指令是同步指令,并且所述同步指令的一个域用于指示其作为启动驻留的指令使用。
14.根据权利要求1所述的重排序缓冲装置,其中所述接收电路还配置用于接收用于将所述对应数据驻留于所述重排序缓冲区的第四指令,并且所述重排序缓冲电路还配置用于响应于接收到所述第四指令,将所述对应数据驻留;以及
所述接收电路还配置用于接收将所述对应数据从所述重排序缓冲区释放的第五指令,并且所述重排序缓冲电路还配置用于响应于接收到将所述对应数据从所述重排序缓冲区释放的第五指令,将所述对应数据释放。
15.根据权利要求14所述的重排序缓冲装置,其中所述第四指令包含于针对于所述存储装置的IO指令中。
16.一种人工智能处理器,包括:
多个祼芯,其中祼芯之间通过祼芯到祼芯接口进行通信,并且每个祼芯包括一个或多个集群,每个集群包括多个处理器核;以及
根据权利要求1-4的任意一项所述的重排序缓冲装置,其布置于裸片间的接口处,以用于针对集群中的读请求来返回对应的驻留数据。
17.根据权利要求16所述的人工智能处理器,其中针对每个祼芯设置有相关联的一个重排序缓冲装置,或者所述多个祼芯共用一个重排序缓冲装置。
18.根据权利要求16或17所述的人工智能处理器,其中针对每个集群设置有相关联的一个重排序缓冲装置,或者所述多个集群共用一个重排序缓冲装置。
19.根据权利要求18所述的人工智能处理器,其中每个集群与对应的一个重排序缓冲装置相连接,而所述重排序缓冲装置之间以全连接方式进行连接。
20.根据权利要求16-19的任意一项所述的人工智能处理器,其中每个重排序缓冲装置被分配用于驻留存储于所述存储装置的部分所述预定物理地址段的数据。
21.一种用于重排序缓冲的方法,其应用于设置在人工智能处理器的裸片间的接口处的重排序缓冲装置,所述人工智能处理器包括多个祼片和存储装置,每个祼片内包括一个或多个用于执行运算的集群,所述方法包括:
驻留从所述存储装置的预定物理地址段内读取到的数据;
接收来自于集群针对于所述存储装置的读请求,其中所述当前读请求包括待从所述存储装置读取数据的目标物理空间地址;
在所述目标物理空间地址位于所述预定物理地址段内时,判定不发送所述当前读请求;以及
读取对应于目标物理空间地址的驻留数据,以作为所述当前读请求所读取的数据来发送至所述集群。
22.根据权利要求21所述的方法,其中所述读请求包括任务标记位,其用于标记任务由多个集群共同执行,并且所述方法包括:
对所述多个集群针对相同的目标物理空间地址的读请求返回对应的驻留数据。
23.根据权利要求22所述的方法,其中所述集群具有相关联的集群标识,并且所述任务标记位通过标记多个集群标识来指示共同执行任务的多个集群。
24.根据权利要求21所述的方法,其中所述读请求包括对应数据在重排序缓冲装置中驻留的时间窗信息,其中所述方法包括在时间窗信息所指示的时间窗内驻留所述对应数据,并且在时间窗外释放所述对应数据。
25.根据权利要求24所述的方法,其中所述读请求包括开始读请求和结束读请求,其中所述开始读请求包括时间窗信息中用于表示开始驻留所述对应数据的开始时间指示,并且所述结束读请求包括所述时间窗信息中用于表示结束驻留所述对应数据的结束时间指示。
26.根据权利要求24所述的方法,其中所述多个集群中的部分或所有集群发送各自的读请求,并且所述方法还包括:
响应于各自的读请求的时间窗存在重合的时间段,将对应数据的驻留时间延长至时间上相对靠后的时间窗内。
27.根据权利要求21所述的方法,还包括:
在包含针对于相同的存储地址的一个或多个读请求的第一指令的执行期间,保持所述对应数据的驻留;以及
在所述第一指令执行结束后,对驻留于所述重排序缓冲装置上的对应数据进行释放。
28.根据权利要求27所述的方法,还包括:
在所述集群执行所述第一指令期间,响应于检测到第二指令读取所述重排序缓冲装置上的对应数据,则保持对应数据的驻留直至所述第二指令执行结束后释放。
29.根据权利要求21所述的方法,其中还包括接收用于指示开始驻留所述对应数据的第三指令,并且响应于接收到所述第三指令,启动将存储装置的存储地址的对应数据进行驻留的操作,以便所述集群通过所述读请求直接从驻留数据中读取所述对应数据。
30.根据权利要求25所述的方法,其中还包括接收针对于所述存储地址的写请求,并且响应于接收到针对于所述存储地址的写请求,自动释放驻留的所述对应数据。
31.根据权利要求30所述的方法,其中所述写请求和所述读请求接收自相同的集群。
32.根据权利要求30所述的方法,其中所述写请求和所述读请求接收自执行相同任务的不同集群。
33.根据权利要求29所述的方法,其中所述第三指令是同步指令,并且所述同步指令的一个域用于指示其作为启动驻留的指令使用。
34.根据权利要求31所述的方法,其中所述方法还包括:接收用于将所述对应数据驻留于所述重排序缓冲装置的第四指令,并且响应于接收到所述第四指令,将所述对应数据驻留;以及
接收将所述对应数据从所述重排序缓冲装置释放的第五指令,并且所述方法还包括响应于接收到将所述对应数据从所述重排序缓冲装置释放的第五指令,将所述对应数据释放。
35.根据权利要求34所述的方法,其中所述第四指令包含于针对于所述存储装置的IO指令中。
36.一种用于重排序缓冲区的设备,包括:
处理器;以及
存储器,其存储有用于重排序缓冲区的程序指令,当所述程序指令由处理器执行时,使得实现根据权利要求21-35的任意一项所述的方法。
37.一种计算机可读存储介质,其存储有用于重排序缓冲区的程序指令,当所述程序指令由处理器执行时,使得实现根据权利要求21-35的任意一项所述的方法。
38.一种板卡,包括根据权利要求16-20的任意一项所述的人工智能处理器或根据权利要求36所述的设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210709101.0A CN117311813A (zh) | 2022-06-21 | 2022-06-21 | 用于重排序缓冲的方法及其相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210709101.0A CN117311813A (zh) | 2022-06-21 | 2022-06-21 | 用于重排序缓冲的方法及其相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117311813A true CN117311813A (zh) | 2023-12-29 |
Family
ID=89259119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210709101.0A Pending CN117311813A (zh) | 2022-06-21 | 2022-06-21 | 用于重排序缓冲的方法及其相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117311813A (zh) |
-
2022
- 2022-06-21 CN CN202210709101.0A patent/CN117311813A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104126179B (zh) | 用于多核处理器中的核心间通信的方法和装置 | |
CN111258935B (zh) | 数据传输装置和方法 | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
US9703493B2 (en) | Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache | |
WO2021109703A1 (zh) | 数据处理方法、芯片、设备及存储介质 | |
US8667157B2 (en) | Hardware bus redirection switching | |
CN111209244A (zh) | 数据处理装置及相关产品 | |
CN111258769B (zh) | 数据传输装置和方法 | |
CN117311813A (zh) | 用于重排序缓冲的方法及其相关产品 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN111209230B (zh) | 数据处理装置、方法及相关产品 | |
CN117311812A (zh) | 用于重排序缓冲的方法及其相关产品 | |
CN118210598A (zh) | 用于执行任务的方法及其相关产品 | |
CN111340202A (zh) | 运算方法、装置及相关产品 | |
CN117234674A (zh) | 用于执行任务调度的方法及其相关产品 | |
WO2024046018A1 (zh) | 指令控制方法、数据缓存方法及相关产品 | |
CN117667198A (zh) | 指令同步控制方法、同步控制器、处理器、芯片和板卡 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
WO2024045580A1 (zh) | 用于调度任务的方法及其相关产品 | |
CN118113631B (zh) | 一种数据处理***、方法、设备、介质及计算机程序产品 | |
WO2023016382A1 (zh) | 用于片上***的方法及其相关产品 | |
WO2024012280A1 (zh) | 用于任务调度的方法、设备、板卡及其计算机可读存储介质 | |
CN114281559A (zh) | 多核处理器、用于多核处理器的同步方法及相应产品 | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN117908959A (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 |