CN113835759A - 指令处理装置、指令处理方法和板卡 - Google Patents

指令处理装置、指令处理方法和板卡 Download PDF

Info

Publication number
CN113835759A
CN113835759A CN202010591063.4A CN202010591063A CN113835759A CN 113835759 A CN113835759 A CN 113835759A CN 202010591063 A CN202010591063 A CN 202010591063A CN 113835759 A CN113835759 A CN 113835759A
Authority
CN
China
Prior art keywords
instruction
type
instructions
reorder buffer
circuit
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
CN202010591063.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 Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202010591063.4A priority Critical patent/CN113835759A/zh
Publication of CN113835759A publication Critical patent/CN113835759A/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
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本披露公开了一种指令处理装置、指令处理方法和板卡。该指令处理装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。该指令处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与指令处理装置和其他处理装置连接,用于存储该指令处理装置和其他处理装置的数据。本披露的指令处理方案通过将处理时间较长的指令与处理时间较短的指令分开处理,可以提高处理效率。

Description

指令处理装置、指令处理方法和板卡
技术领域
本披露涉及处理器领域,特别是涉及一种指令处理装置、指令处理方法和板卡。
背景技术
传统的处理器设计中,一般会使用指令乱序处理的设计方法,即相互之间不存在依赖关系的指令是可以进行乱序处理的。为了实现乱序处理,传统的处理器一般都会使用一个重排序缓冲器(ROB,ReOrder Buffer),用来记录所有指令的真实顺序,然后在指令执行完毕后将指令顺序释放。
对于高效的人工智能(AI)处理器而言,由于指令集中的指令更多地满足人工智能算法的需求,因此一条指令可能计算的数据量、实现的功能和/或所需要的计算时间远远大于传统处理器的指令。如果仍然使用传统的ROB来实现指令乱序处理,则可能会产生问题。由于ROB的处理原则是,当存储在ROB中的指令执行完毕时,对指令进行顺序释放。所以,当前一条指令未执行完毕时,是无法释放后一条指令的。当前一条指令所需要的处理时间特别长的时候,该指令就迟迟无法释放,导致之后的指令也无法释放,从而堵塞ROB,进一步地堵塞指令取指和解码。
发明内容
为了至少解决如上所提到的技术问题,本披露在多个方面中提出了利用加锁电路来对处理时间较长的指令进行加锁处理的方案。通过本披露的指令处理方案,可以将处理时间较长的指令与处理时间较短的指令分开处理,从而处理时间较长的指令不会堵塞ROB,也不会堵塞之后解码的新指令,由此处理效率得以提高。
在第一方面中,本披露提供一种指令处理装置,包括:指令发送电路,重排序缓冲电路和加锁电路,其中指令发送电路配置成:基于待处理的指令的类型,将该指令发送至重排序缓冲电路和/或加锁电路;并且加锁电路配置成:从指令发送电路接收指令;以及对与接收的指令关联的通用寄存器进行加锁处理。
在第二方面中,本披露提供一种指令处理方法。该方法包括:基于待处理的指令的类型,将指令发送至重排序缓冲电路和/或加锁电路;以及在加锁电路处:接收指令;以及对与接收的指令关联的通用寄存器进行加锁处理。
在第三方面中,本披露提供一种处理器,包括前述第一方面的指令处理装置。
在第四方面中,本披露提供一种板卡,包括前述第三方面的处理器或前述第一方面的指令处理装置。
在第五方面中,本披露提供一种计算装置,包括前述第四方面的板卡。
通过如上所提供的指令处理装置、指令处理方法、处理器、板卡和计算装置,本披露的方案利用加锁电路来对处理时间较长的指令进行加锁处理,从而在包括例如神经网络运算等的人工智能应用场景或其他通用场景中,可以将处理时间较长的指令与处理时间较短的指令分开处理,使得处理时间较长的指令不会堵塞ROB,也不会堵塞之后解码的新指令,由此处理效率得以提高。进一步地,在本披露的一些实施例中,对于某些指令,例如只读通用寄存器(GPR,General Purpose Register)指令,可以完全不进入ROB,由此进一步节省ROB的空间。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出包括ROB的传统指令处理系统的简化框图;
图2是示出根据本披露实施例的指令处理装置的简化框图;
图3是示出根据本披露实施例的指令处理方法的流程图;
图4示出了根据本披露一个实施例的指令发送方法的示例流程;
图5示出了根据本披露另一实施例的指令发送方法的示例流程;
图6是示出根据本披露实施例的一种组合处理装置的结构图;以及
图7是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
如背景技术部分所提到的,对于高效的人工智能(AI)处理器而言,如果仍然使用传统的ROB来实现指令乱序处理,则可能会产生问题。因为传统的ROB的处理原则是,当存储在ROB中的指令执行完毕时,对指令进行顺序释放。所以,当前一条指令未执行完毕时,是无法释放后一条指令的。
为了更好地理解本披露所涉及的技术,图1示出了包括ROB的传统指令处理系统的简化结构框图。如图1所示,指令处理系统100包括指令队列110、重排序缓冲器(ROB)120、寄存器130、保留站140、运算部件150、访存部件160和结果总线170。
指令队列110接收来自指令单元(未示出)的译码后的指令。在指令发射阶段,如果保留站140有空而且ROB 120中有空插槽,则指令队列110将发射一条指令到保留站140,并在ROB 120中指定一项作为临时保存该指令结果之用。基于不同的操作类型,可以有对应的保留站,例如加法保留站和乘法保留站。指令队列110可以将指令发送到对应的保留站。此处为了简便起见,在图1中未详细示出。
在指令发射过程中,读取寄存器130的值和结果状态域。结果状态域指示该寄存器是否可用。例如,空表示寄存器的值可用,否则表示产生寄存器结果的ROB号。如果结果状态域指示寄存器可用,则读出寄存器的值。如果结果状态域中记录的是写该寄存器的ROB号,则表明该寄存器已经被重命名到ROB 120。此时,则根据该ROB号读ROB 120。
在执行阶段,每个功能部件都检查保留站140中的指令。如果保留站140中某条指令所需要的操作数都准备好了,则执行该指令。例如,将相关操作数等送到运算部件150以执行该指令。如果保留站140中某条指令的操作数没有准备好,则该指令根据结果ROB号侦听结果总线170,并接收结果总线170的值。
在写回阶段,当指令执行完成后,例如运算部件150得到运算结果,写回时不仅要写回指令运算的结果,而且要写回该指令的ROB号。运算部件150把相关信息(例如,运算结果,ROB号)送到结果总线,释放保留站140。ROB 120和寄存器130侦听结果总线170,并根据结果总线170的内容修改自己的状态。例如,寄存器130根据结果总线170修改相应项的结果状态域,ROB 120根据结果总线170修改相应项的状态和内容。
在提交阶段,如果指令队列中第1条指令的结果已经写回且没有发生例外,则把该指令的结果从ROB 120写回到寄存器130或存储器,同时释放ROB的相应项。如果队列中第1条指令发生了例外,则清除操作队列以及ROB等。
以上参考图1简单描述了包括ROB的传统指令处理系统如何实现指令流水线。从上述过程可以看出,在写回阶段,指令的运算结果先写到ROB 120中,在提交阶段,再把ROB120的内容写回到寄存器或存储器中。指令的提交是有序的,只有前面的指令都提交之后才能进行。这种指令流水线是乱序执行,有序结束,指令执行是乱序的,但提交是有序的。
从ROB的上述处理原则可以看出,如果前一条指令所需要的处理时间特别长,该指令就迟迟无法释放,导致之后的指令也无法释放,从而堵塞ROB,进一步地堵塞指令取指和解码。
鉴于此,本披露在多个方面中提出了利用加锁电路来对处理时间较长的指令进行加锁处理的方案。通过本披露的指令处理方案,可以将处理时间较长的指令与处理时间较短的指令分开处理,从而处理时间较长的指令不会堵塞ROB,也不会堵塞之后解码的新指令,由此处理效率得以提高。
下面结合附图来详细描述本披露的具体实施方式。
图2示出了根据本披露实施例的指令处理装置200的简化框图。在一个或多个实施例中,该指令处理装置200可以用于任何类型的处理器,包括但不限于通用处理器(诸如CPU等)、人工智能处理器(例如作为协处理器或加速器)和/或包括前述二者的异构处理器,本披露在此方面没有限制。
如图2所示,指令处理装置200包括指令发送电路210、重排序缓冲电路220和加锁电路230。
在一些实施例中,指令发送电路210可以配置成:基于待处理的指令的类型,将该指令发送至重排序缓冲电路220和/或加锁电路230。如前所述,由于有些指令(例如,人工智能处理器中的指令,诸如卷积运算指令)可能计算的数据量和/或所需要的计算时间远远大于传统处理器的指令,如果还按照传统方式处理,则会堵塞ROB,进一步地堵塞指令取指和解码。因此,在本披露的实施例中,可以对不同类型的待处理指令,例如处理时间较长的指令与处理时间较短的指令,分开进行处理,由此避免堵塞ROB。
具体地,在一些实施例中,指令发送电路210可以进一步配置成:确定待处理的指令的类型;响应于确定该待处理的指令为第一类型,将此第一类型的指令发送到重排序缓冲电路220;以及响应于确定该待处理的指令为第二类型,将此第二类型的指令发送到加锁电路230。
在一些示例中,指令的类型可以预先定义或识别并进行标记。例如,可以预先制定一些规则,其中根据指令的特征,例如将要执行的运算类型,诸如加法、乘法、卷积等运算,或者指令要实现的功能或计算的数据量等信息,将这些指令划分为第一类型和第二类型。这些规则例如可以表示为包含指令分类结果的指令分类表或其他数据结构。然后,在指令解码阶段,由指令解码器在对指令解码的同时,基于前面预先配置的指令类型表,来对指令的类型进行识别并标记。从而,指令发送电路210可以直接根据指令的标记来确定指令的类型。
在另一些示例中,指令的类型可以由指令发送电路210即时确定。例如,指令发送电路210可以在要发送指令时,根据指令的例如前述特征或预先生成的指令类型表等,来确定指令为第一类型还是第二类型。
在一些实施例中,指令的类型划分至少部分基于指令的执行时间。例如,第一类型的指令为执行时间不超过预定阈值的指令,也即处理时间较短的指令,例如通用处理器的指令,诸如标量的加法、减法、乘法、除法等运算指令;而第二类型的指令为执行时间超过预定阈值的指令,也即处理时间较长的指令,例如人工智能处理器的指令,诸如卷积指令、向量加乘指令、池化指令等等。本领域技术人员应当理解,通用处理器中也可能存在处理时间较长的指令,诸如图像处理指令、矩阵运算指令等,而人工智能处理器中也可能存在处理时间较短的指令。因此,本披露实施例中的指令发送电路210可以无需区分指令所属的处理器,而是直接依据预先配置的指令划分规则(例如,预先生成的指令类型表或其他数据结构),来确定指令类型,并进而分别处理。
在一些实施例中,重排序缓冲电路220可以按其现有配置进行操作。例如,如前面参考图1所描述的,保留站140把有序变成乱序,ROB 120把乱序重新排回有序,保证乱序执行的指令进行按序提交。类似地,图2中的重排序缓冲电路(或ROB)220通过顺序输入和顺序释放指令,将乱序执行的指令进行重排序,从而实现顺序释放的目的。重排序缓冲电路220可以用来保存已经完成执行但还没有提交的指令结果,从而确保有序提交指令结果。
ROB 220中的每个项目(指令)可以包含如下字段:指令操作类型、目的地字段(存储地址或寄存器号)、值字段和就绪字段。指令操作类型字段例如可以指定这个指令是分支(没有目的地结果)、存储指令(含有存储器地址目的地)、还是寄存器操作(算术逻辑单元ALU运算或载入指令,其含有寄存器目的地)。目的地字段提供了应当向其中写入指令结果的寄存器编号(对于载入指令和ALU运算)或存储器地址(对于存储指令)。值字段用于在提交指令之前保存指令结果值。就绪字段指示该指令已经完成执行,结果值准备就绪。
一条指令的结果寄存器可以被重命名为其结果的ROB号,这样后面的指令有可能从ROB读操作数。寄存器重命名可以消除由于指令间的相关(例如,写后写(WAW)和读后写(WAR)之类的数据相关)可能导致的流水线冲突。
指令执行完了之后,不直接把结果写回寄存器,而是写到ROB。一条指令只要没有被提交,就不会修改寄存器或者存储器的内容,很容易取消该指令。
因此,在一些实施例中,重排序缓冲电路220可以配置成从指令发送电路210按顺序接收指令;以及基于指令的执行状态,按同样的顺序释放指令。
在一些示例中,重排序缓冲电路220可以使用先进先出(FIFO)队列来实现。当把一条指令送入保留站的同时需要将该指令插入ROB队列的尾部,执行完的指令将从ROB队列的头部移除。仅当该队列中的第一条指令的执行状态为就绪,也即ROB中该项目的就绪字段指示结果值准备就绪时,才提交该指令的指令结果,并释放ROB中的对应项。
因此,对于从指令发送电路210接收的第一类型的指令,例如处理时间较短的指令,重排序缓冲电路220可以按照现有配置对其进行处理。
在一些实施例中,加锁电路230可以配置成:从指令发送电路210接收指令;以及对与接收的指令关联的通用寄存器进行加锁处理。如前面所描述的,指令发送电路210可以将第二类型的指令发送到加锁电路230。第二类型的指令例如是处理时间较长的指令,诸如涉及神经网络运算的指令。通过使用加锁电路230对第二类型的指令进行单独处理,可以避免第二类型的指令由于执行时间长而堵塞重排序缓冲电路220。
加锁电路230对第二类型的指令中使用到的通用寄存器(GPR)进行加锁处理,使得被该指令使用到的GPR不会提前释放,同时又不阻塞重排序缓冲电路220。
具体地,加锁电路230会根据接收到的指令所使用的GPR,对其进行加锁处理。也即加锁后,被锁住的GPR直到该指令执行完毕之前都无法被释放和使用,只有在后续计算单元(例如,图1中的运算部件150)将指令执行完毕的信号发送回加锁电路230后,加锁电路230才会将对应的GPR的锁释放掉,然后后续使用相同GPR的指令才可以继续进行计算。
因此,在一些实施例中,加锁电路230可以进一步配置成:响应于接收到指示该指令执行完毕的信号,对与该指令关联的GPR进行解锁处理。
在一些实施例中,加锁电路230的加锁和解锁处理可以通过设置GPR的状态位来实现。例如,当将GRP的状态位置“1”时,可以表示该GPR被锁定,此时不能使用该GPR;反之,当将GPR的状态为置“0”时,可以表示该GPR未被锁定,也即该GPR被释放了,可以再次被使用。
通过对第二类型的指令分开处理,使用加锁电路230来对关联的GPR进行加锁处理,这样即使第二类型的指令(例如,神经网络指令)执行时间特别长,也不会阻塞之后解码的新指令,只要新的指令使用的GPR不同于锁定的GPR,该指令就不会被加锁电路230所阻挡,可以继续进行解码和执行。
在上述实施例中,由于重排序缓冲电路220中并没有存储第二类型的指令的指令状态,所以也不需要重排序缓冲电路220来释放第二类型的指令。这样,不仅释放了ROB的空间,而且也不会因为前面的已加锁的第二类型指令没有执行完,而导致之后的指令无法释放,因此可以加速指令的取指和解码。
从前文参考图1的描述可知,ROB还可以实现寄存器重命名功能,从而可以消除由于指令间的相关(例如,写后写(WAW)和读后写(WAR)之类的数据相关)可能导致的流水线冲突。
进一步地,在一些实施例中,指令发送电路210可以进一步配置成:响应于确定该待处理的指令为第二类型,还将此第二类型的指令发送到重排序缓冲电路220;以及向重排序缓冲电路220指示此第二类型的指令的执行状态为执行完毕。
如前面所描述的,重排序缓冲电路220对于每个项目(每条指令)可以存储指令操作类型、目的地字段(存储地址或寄存器号)、值字段和就绪字段等信息。就绪字段指示该指令已经完成执行,结果值准备就绪。由于第二类型的指令所使用的GPR已经通过加锁电路230进行了锁定,并且只能由加锁电路230响应于接收到指示该指令执行完毕的信号来释放,因此,在重排序缓冲电路220中没有必要再对此第二类型的指令进行保序。鉴于此,指令发送电路210可以向重排序缓冲电路220直接指示该第二类型的指令的执行状态为执行完毕。此时,重排序缓冲电路220可以将该项目(指令)的就绪字段设置为就绪。如此,重排序缓冲电路220不需要等待该指令执行完毕,而是默认该指令执行完毕,只需按照正常的操作顺序释放就可以。这样,即使第二类型的指令会进入重排序缓冲电路230,但是由于默认为执行完毕,因此即使执行时间长也不会堵塞重排序缓冲电路230。
如前所述,寄存器重命名功能主要是为了消除由于指令间的相关(例如,写后写(WAW)和读后写(WAR)之类的数据相关)而可能导致的流水线冲突。鉴于此,对于第二类型的指令,可以仅当指令涉及对GPR的写操作时,才将该指令也发送到重排序缓冲电路220。
在这些实施例中,指令发送电路210可以进一步配置成:确定第二类型的指令是否涉及对通用寄存器的写操作;以及响应于确定该第二类型的指令涉及对通用寄存器的写操作,还将此第二类型的指令发送到重排序缓冲电路220,并向重排序缓冲电路220指示此第二类型的指令的执行状态为执行完毕。
可选地,在另一些实施例中,指令发送电路210进一步配置成:响应于确定第二类型的指令不涉及对通用寄存器的写操作,不将该第二类型的指令发送到重排序缓冲电路220。由于当第二类型的指令不涉及到对GPR的写操作时,不需要寄存器重命名,因此不需要再将该指令发送给重排序缓冲电路220,从而可以节省重排序缓冲电路220的空间。
上面参考图2描述了本披露实施例的指令处理装置200。本领域技术人员可以理解,指令处理装置200是对例如图1的指令处理系统100的改进。具体地,在一些实现中,指令处理装置200中的指令发送电路210可以实现在图1所示的指令队列110中或队列外,以便针对指令的类型,选择不同的保序电路,例如重排序缓冲电路220和/或加锁电路230。重排序缓冲电路220大体上可以类似于图1的ROB 120的配置,仅在接收到第二类型的指令时,默认该指令已经执行完毕。加锁电路230可以是类似ROB的缓冲器。加锁电路230用于对第二类型的指令所使用的GPR进行加锁处理。
通过如上所提供的指令处理装置,本披露的方案利用加锁电路来对处理时间较长的指令进行加锁处理,从而在包括例如神经网络运算等的人工智能应用场景或其他通用场景中,可以将处理时间较长的指令与处理时间较短的指令分开处理,使得处理时间较长的指令不会堵塞ROB,也不会堵塞之后解码的新指令,由此处理效率得以提高。进一步地,在本披露的一些实施例中,对于某些指令,例如只读GPR指令,可以完全不进入ROB,由此进一步节省ROB的空间。
图3示出了根据本披露实施例的指令处理方法300的流程图。如前所述,在一个或多个实施例中,该指令处理方法300可以应用于任何类型的处理器中,包括但不限于通用处理器(诸如CPU等)、人工智能处理器(例如作为协处理器或加速器)和/或包括前述二者的异构处理器,本披露在此方面没有限制。
如图3所示,在步骤S310中,基于待处理的指令的类型,将该指令发送至重排序缓冲电路和/或加锁电路。步骤S310例如可以由图2的指令发送电路210来执行。
如前面参考指令处理装置200所描述的,在本披露的实施例中,可以对不同类型的待处理指令,例如处理时间较长的指令与处理时间较短的指令,分开进行处理,由此避免堵塞ROB。
图4示出了根据本披露一个实施例的指令发送方法400的示例流程。如图4所示,在步骤S411处,确定待处理的指令为第一类型还是第二类型。在步骤S412处,响应于确定该待处理的指令为第一类型,将此第一类型的指令发送到重排序缓冲电路。以及在步骤S413处,响应于确定该待处理的指令为第二类型,将此第二类型的指令发送到加锁电路。在一些实施例中,指令的类型划分至少部分基于指令的执行时间。例如,第一类型的指令为执行时间不超过预定阈值的指令;而第二类型的指令为执行时间超过预定阈值的指令。指令类型的确定可以参考前文描述,此处不再赘述。
如前所述,考虑到利用重排序缓冲电路的寄存器重命名功能来消除由于指令间的相关而可能导致的流水线冲突,在一些实施例中,图4中还可以包括步骤S414,响应于确定待处理的指令为第二类型,还将此第二类型的指令发送到重排序缓冲电路;以及向重排序缓冲电路指示此第二类型的指令的执行状态为执行完毕。由此通过在重排序缓冲电路中默认第二类型的指令为执行完毕,既能够利用重排序缓冲电路的寄存器重命名功能,又不会堵塞重排序缓冲电路。
进一步地,在一些实施例中,根据第二类型的指令是否涉及对GPR的写操作来决定是否将该第二类型的指令发送到重排序缓冲电路。
图5示出了根据本披露另一实施例的指令发送方法500的示例流程。
如图5所示,在步骤S511处,确定待处理的指令类型为第一类型还是第二类型。如果指令是第一类型,则方法前进到步骤S512,将此第一类型的指令发送到重排序缓冲电路。如果指令是第二类型,则方法前进到步骤S513。
在步骤S513处,进一步判断此第二类型的指令是否涉及对GPR的写操作。如果指令涉及对GPR的写操作,则方法前进到步骤S514,将该第二类型的指令既发送到加锁电路又发送到重排序缓冲电路,并向重排序缓冲电路指示此第二类型的指令的执行状态为执行完毕。如果指令不涉及对GPR的写操作,例如只涉及GPR的读操作,则方法前进到步骤S515,此时仅需将此第二类型的指令发送到加锁电路,而无需发送到重排序缓冲电路。
回到图3,若指令被发送到加锁电路,则接着,在步骤S320中,在加锁电路处:接收该指令;以及对与接收的指令关联的通用寄存器进行加锁处理。
具体地,加锁电路会根据接收到的指令所使用的GPR,对其进行加锁处理。也即加锁后,被锁住的GPR直到该指令执行完毕之前都无法被释放和使用,只有在后续计算单元(例如,图1中的运算部件150)将指令执行完毕的信号发送回加锁电路后,加锁电路才会将对应的GPR的锁释放掉,然后后续使用相同GPR的指令才可以继续进行计算。
因此,在一些实施例中,在加锁电路处还可以包括步骤:响应于接收到指示该指令执行完毕的信号,对与该指令关联的GPR进行解锁处理。
在一些实施例中,在重排序缓冲电路处还可以包括步骤:按顺序接收指令;以及基于指令的执行状态,按顺序释放指令。
上面已经参考流程图描述了本披露实施例的指令处理装置所执行的指令处理方法。本领域技术人员可以理解,由于针对指令的类型,分别仅需保序处理,因此可以防止处理时间长的指令堵塞ROB,也不会堵塞之后解码的新指令,由此处理效率得以提高。进一步地,在本披露的一些实施例中,对于某些指令,例如只读GPR指令,可以完全不进入ROB,由此进一步节省ROB的空间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图6是示出根据本披露实施例的一种组合处理装置600的结构图。如图6所示,该组合处理装置600包括前述的指令处理装置602,其可以配置用于执行前述结合附图所描述的指令处理方法。另外,该组合处理装置还包括通用互联接口604和其他处理装置606。根据本披露的指令处理装置602可以通过通用互联接口604与其他处理装置606进行交互,共同完成用户指定的操作。
根据本披露的方案,该其他处理装置可以包括中央处理器(CPU)、图形处理器(GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目可以不做限制而是根据实际需要来确定。在一个或多个实施例中,该其他处理装置可以作为本披露的指令处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运,完成对指令处理装置的开启、停止等的基本控制;其他处理装置也可以和该指令处理装置协作共同完成运算任务。
根据本披露的方案,该通用互联接口可以用于在指令处理装置与其他处理装置间传输数据和控制指令。例如,该指令处理装置可以经由通用互联接口从其他处理装置中获取待运算数据,写入该计算装置片上的存储装置(或称存储电路或存储器)。进一步,该指令处理装置可以经由通用互联接口从其他处理装置中获取控制指令,写入指令处理装置片上的控制缓存。替代地或可选地,通用互联接口也可以读取指令处理装置的存储电路中的数据并传输给其他处理装置。
可选地,该组合处理装置还可以包括存储装置608,其可以分别与该指令处理装置和其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存指令处理装置和其他处理装置的数据,尤其那些在指令处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
根据应用场景的不同,本披露的组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。在此情况下,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件例如摄像头、显示器、鼠标、键盘、网卡或wifi接口。
在一些实施例里,本披露还公开了一种处理器,其包括了上述指令处理装置或组合处理装置。在另一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述处理器。
在一些实施例里,本披露还公开了一种集成电路板卡,其包括了上述芯片封装结构。参阅图7,其提供了前述示例性板卡,上述板卡除了包括上述芯片702以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件704、接口装置706和控制器件708。
存储器件与芯片封装结构内的芯片通过总线连接,用于存储数据。存储器件可以包括多组存储单元710。每一组存储单元与芯片通过总线连接。可以理解,每一组存储单元可以是DDR SDRAM(“Double Data Rate SDRAM,双倍速率同步动态随机存储器”)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,存储器件可以包括4组上述存储单元。每一组存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,该芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。
在一个实施例中,每一组存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在芯片中设置控制DDR的控制器,用于对每个存储单元的数据传输与数据存储的控制。
图中的接口装置与芯片封装结构内的芯片电连接。该接口装置用于实现芯片与外部设备712(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至该芯片,实现数据转移。在另一个实施例中,接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,芯片的计算结果仍由该接口装置传送回外部设备(例如服务器)。
图中的控制器件与芯片电连接。该控制器件用于对芯片的状态进行监控。具体地,芯片与控制器件可以通过SPI接口电连接。控制器件可以包括单片机(Micro ControllerUnit,MCU)。在一个或多个实施例中,芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,芯片可以处于多负载和轻负载等不同的工作状态。通过控制装置可以实现对芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种计算装置或设备,其包括了上述集成电路板卡。根据不同的应用场景,计算装置或设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。其中,交通工具可以包括飞机、轮船和/或车辆;家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备可以包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品(例如计算机可读存储介质)的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款1.一种指令处理装置,包括:指令发送电路,重排序缓冲电路和加锁电路,其中:
所述指令发送电路配置成:基于待处理的指令的类型,将所述指令发送至所述重排序缓冲电路和/或所述加锁电路;并且
所述加锁电路配置成:
从所述指令发送电路接收指令;以及
对与接收的指令关联的通用寄存器进行加锁处理。
条款2.根据条款1所述的指令处理装置,其中所述指令发送电路进一步配置成:
确定所述待处理的指令的类型;
响应于确定所述待处理的指令为第一类型,将第一类型的所述指令发送到所述重排序缓冲电路;以及
响应于确定所述待处理的指令为第二类型,将第二类型的所述指令发送到所述加锁电路。
条款3.根据条款2所述的指令处理装置,其中所述指令发送电路进一步配置成:
确定所述第二类型的指令是否涉及对通用寄存器的写操作;以及
响应于确定所述第二类型的指令涉及对通用寄存器的写操作,还将所述第二类型的指令发送到所述重排序缓冲电路,并向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
条款4.根据条款3所述的指令处理装置,其中所述指令发送电路进一步配置成:
响应于确定所述第二类型的指令不涉及对通用寄存器的写操作,不将所述第二类型的指令发送到所述重排序缓冲电路。
条款5.根据条款2所述的指令处理装置,其中所述指令发送电路进一步配置成:
响应于确定所述待处理的指令为第二类型,还将所述第二类型的指令发送到所述重排序缓冲电路;以及
向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
条款6.根据条款2-5任一所述的指令处理装置,其中所述第一类型的指令为执行时间不超过预定阈值的指令,所述第二类型的指令为执行时间超过预定阈值的指令。
条款7.根据条款6所述的指令处理装置,其中所述第二类型的指令包括神经网络指令。
条款8.根据条款1-7任一所述的指令处理装置,其中所述加锁电路进一步配置成:
响应于接收到指示所述指令执行完毕的信号,对与所述指令关联的通用寄存器进行解锁处理。
条款9.根据条款1-8任一所述的指令处理装置,其中所述重排序缓冲电路配置成:
从所述指令发送电路按顺序接收指令;以及
基于所述指令的执行状态,按所述顺序释放所述指令。
条款10.一种指令处理方法,包括:
基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路;以及
在所述加锁电路处:
接收所述指令;以及
对与接收的指令关联的通用寄存器进行加锁处理。
条款11.根据条款10所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
确定所述待处理的指令的类型;
响应于确定所述待处理的指令为第一类型,将第一类型的所述指令发送到所述重排序缓冲电路;以及
响应于确定所述待处理的指令为第二类型,将第二类型的所述指令发送到所述加锁电路。
条款12.根据条款11所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
确定所述第二类型的指令是否涉及对通用寄存器的写操作;以及
响应于确定所述第二类型的指令涉及对通用寄存器的写操作,还将所述第二类型的指令发送到所述重排序缓冲电路,并向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
条款13.根据条款12所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
响应于确定所述第二类型的指令不涉及对通用寄存器的写操作,不将所述第二类型的指令发送到所述重排序缓冲电路。
条款14.根据条款11所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
响应于确定所述待处理的指令为第二类型,还将所述第二类型的指令发送到所述重排序缓冲电路;以及
向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
条款15.根据条款11-14任一所述的指令处理方法,其中所述第一类型的指令为执行时间不超过预定阈值的指令,所述第二类型的指令为执行时间超过预定阈值的指令。
条款16.根据条款15所述的指令处理方法,其中所述第二类型的指令包括神经网络指令。
条款17.根据条款10-16任一所述的指令处理方法,进一步包括:
在所述加锁电路处:
响应于接收到指示所述指令执行完毕的信号,对与所述指令关联的通用寄存器进行解锁处理。
条款18.根据条款10-17任一所述的指令处理方法,进一步包括:
在所述重排序缓冲电路处:
按顺序接收所述指令;以及
基于所述指令的执行状态,按所述顺序释放所述指令。
条款19.一种处理器,包括根据条款1-9任一所述的指令处理装置。
条款20.一种板卡,包括根据条款19所述的处理器或条款1-9任一所述的指令处理装置。
条款21.一种计算装置,包括根据条款20所述的板卡。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (17)

1.一种指令处理装置,包括:指令发送电路,重排序缓冲电路和加锁电路,其中:
所述指令发送电路配置成:基于待处理的指令的类型,将所述指令发送至所述重排序缓冲电路和/或所述加锁电路;并且
所述加锁电路配置成:
从所述指令发送电路接收指令;以及
对与接收的指令关联的通用寄存器进行加锁处理。
2.根据权利要求1所述的指令处理装置,其中所述指令发送电路进一步配置成:
确定所述待处理的指令的类型;
响应于确定所述待处理的指令为第一类型,将第一类型的所述指令发送到所述重排序缓冲电路;以及
响应于确定所述待处理的指令为第二类型,将第二类型的所述指令发送到所述加锁电路。
3.根据权利要求2所述的指令处理装置,其中所述指令发送电路进一步配置成:
确定所述第二类型的指令是否涉及对通用寄存器的写操作;以及
响应于确定所述第二类型的指令涉及对通用寄存器的写操作,还将所述第二类型的指令发送到所述重排序缓冲电路,并向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
4.根据权利要求3所述的指令处理装置,其中所述指令发送电路进一步配置成:
响应于确定所述第二类型的指令不涉及对通用寄存器的写操作,不将所述第二类型的指令发送到所述重排序缓冲电路。
5.根据权利要求2所述的指令处理装置,其中所述指令发送电路进一步配置成:
响应于确定所述待处理的指令为第二类型,还将所述第二类型的指令发送到所述重排序缓冲电路;以及
向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
6.根据权利要求2-5任一所述的指令处理装置,其中所述第一类型的指令为执行时间不超过预定阈值的指令,所述第二类型的指令为执行时间超过预定阈值的指令。
7.根据权利要求1-6任一所述的指令处理装置,其中所述加锁电路进一步配置成:
响应于接收到指示所述指令执行完毕的信号,对与所述指令关联的通用寄存器进行解锁处理。
8.根据权利要求1-7任一所述的指令处理装置,其中所述重排序缓冲电路配置成:
从所述指令发送电路按顺序接收指令;以及
基于所述指令的执行状态,按所述顺序释放所述指令。
9.一种指令处理方法,包括:
基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路;以及
在所述加锁电路处:
接收所述指令;以及
对与接收的指令关联的通用寄存器进行加锁处理。
10.根据权利要求9所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
确定所述待处理的指令的类型;
响应于确定所述待处理的指令为第一类型,将第一类型的所述指令发送到所述重排序缓冲电路;以及
响应于确定所述待处理的指令为第二类型,将第二类型的所述指令发送到所述加锁电路。
11.根据权利要求10所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
确定所述第二类型的指令是否涉及对通用寄存器的写操作;以及
响应于确定所述第二类型的指令涉及对通用寄存器的写操作,还将所述第二类型的指令发送到所述重排序缓冲电路,并向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
12.根据权利要求11所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
响应于确定所述第二类型的指令不涉及对通用寄存器的写操作,不将所述第二类型的指令发送到所述重排序缓冲电路。
13.根据权利要求10所述的指令处理方法,其中基于待处理的指令的类型,将所述指令发送至重排序缓冲电路和/或加锁电路进一步包括:
响应于确定所述待处理的指令为第二类型,还将所述第二类型的指令发送到所述重排序缓冲电路;以及
向所述重排序缓冲电路指示所述第二类型的指令的执行状态为执行完毕。
14.根据权利要求10-13任一所述的指令处理方法,其中所述第一类型的指令为执行时间不超过预定阈值的指令,所述第二类型的指令为执行时间超过预定阈值的指令。
15.根据权利要求9-14任一所述的指令处理方法,进一步包括:
在所述加锁电路处:
响应于接收到指示所述指令执行完毕的信号,对与所述指令关联的通用寄存器进行解锁处理。
16.根据权利要求9-15任一所述的指令处理方法,进一步包括:
在所述重排序缓冲电路处:
按顺序接收所述指令;以及
基于所述指令的执行状态,按所述顺序释放所述指令。
17.一种板卡,包括根据权利要求1-8任一所述的指令处理装置。
CN202010591063.4A 2020-06-24 2020-06-24 指令处理装置、指令处理方法和板卡 Pending CN113835759A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010591063.4A CN113835759A (zh) 2020-06-24 2020-06-24 指令处理装置、指令处理方法和板卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010591063.4A CN113835759A (zh) 2020-06-24 2020-06-24 指令处理装置、指令处理方法和板卡

Publications (1)

Publication Number Publication Date
CN113835759A true CN113835759A (zh) 2021-12-24

Family

ID=78964857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010591063.4A Pending CN113835759A (zh) 2020-06-24 2020-06-24 指令处理装置、指令处理方法和板卡

Country Status (1)

Country Link
CN (1) CN113835759A (zh)

Similar Documents

Publication Publication Date Title
KR101572204B1 (ko) Dma 벡터 버퍼
KR102074961B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
EP2480979B1 (en) Unanimous branch instructions in a parallel thread processor
US20070174509A1 (en) System for asynchronous dma command completion notification
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
US20210382721A1 (en) Central processor-coprocessor synchronization
CN111258935A (zh) 数据传输装置和方法
US10372458B2 (en) Method and apparatus for a self-clocked, event triggered superscalar processor
CN101438236A (zh) 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统
CN114579188A (zh) 一种risc-v向量访存处理系统及处理方法
CN111209243B (zh) 数据处理装置、方法及相关产品
CN112540792A (zh) 指令处理方法及装置
US20140317164A1 (en) Arithmetic processing device
US20040268007A1 (en) Data processing systems including high performance buses and interfaces, and associated communication methods
CN111258769B (zh) 数据传输装置和方法
CN113835759A (zh) 指令处理装置、指令处理方法和板卡
WO2009032186A1 (en) Low-overhead/power-saving processor synchronization mechanism, and applications thereof
US20210089305A1 (en) Instruction executing method and apparatus
CN112540789B (zh) 一种指令处理装置、处理器及其处理方法
CN109683959B (zh) 处理器的指令执行方法及其处理器
US10514925B1 (en) Load speculation recovery
CN113033791B (zh) 用于保序的计算装置、集成电路装置、板卡及保序方法
CN111384944B (zh) 全加器、半加器、数据处理方法、芯片及电子设备
CN113032299B (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