CN109683959A - 处理器的指令执行方法及其处理器 - Google Patents
处理器的指令执行方法及其处理器 Download PDFInfo
- Publication number
- CN109683959A CN109683959A CN201811581357.8A CN201811581357A CN109683959A CN 109683959 A CN109683959 A CN 109683959A CN 201811581357 A CN201811581357 A CN 201811581357A CN 109683959 A CN109683959 A CN 109683959A
- Authority
- CN
- China
- Prior art keywords
- description
- instruction
- item
- content
- address
- 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
Links
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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及计算机领域,公开了一种处理器的指令执行方法及其处理器。本发明中处理器的指令执行方法包括:获取当前指令中描述字段的内容;获取与所述描述字段的内容对应的描述项;基于获取到的所述描述项中用于存储数据的所述地址,根据执行依赖性的要求,从所述地址处读取当前指令执行所需要的输入数据,执行指令,然后向所述地址处写回当前指令执行得到的结果数据。本发明可通过指令的执行实现支持大数据量输入输出的特定功能。
Description
技术领域
本发明涉及计算机领域,特别涉及一种处理器的指令执行方法及其处理器。
背景技术
为了实现更好的性能和功效,计算架构从传统的通用处理架构演变为领域特定架构。在演变过程中,随着硬件加速对传统算术逻辑单元(ALU)的增加,对集成电路(IC)实现固定功能的需求增加。目前,流水线操作设计中存在如下问题:首先,基于指令的固定功能如何将其结果写回到传统方法寄存器使用的架构存储中。由于实现固定功能的IC的输入和/或输出数据可能尺寸很大,例如,人工智能(AI)神经网络(NN)中的卷积外的特征图,因此,宽度受限寄存器是不够的。其次,当使用传统的指令功能时,实现固定功能IC的指令与其他流水线上的指令之间可能存在某种同步。因此,需要一种有效的方法解决上述问题。
发明内容
本发明的目的在于提供一种处理器的指令执行方法及其处理器,可实现对数据处理量要求较高的处理器指令的高效执行,提高实现固定功能的集成电路中域特定处理器的运行效率。
为解决上述技术问题,本发明的实施方式公开了一种处理器的指令执行方法,该方法包括:
获取当前指令中描述字段的内容;
获取与所述描述字段的内容对应的描述项,其中,所述描述项包括用于存储数据的存储区域的地址;
基于获取到的所述描述项中用于存储数据的所述地址,从所述地址处读取当前指令执行所需要的输入数据,或者向所述地址处写回当前指令执行得到的结果数据;
其中,所述存储区域不属于所述处理器中的寄存器。
在一示范例中,获取与所述描述字段的内容对应的描述项包括:
从描述项池中获取一空闲描述项,将与所述描述字段的内容对应的描述项的描述项ID、存储区域的地址和所述存储区域的大小写入该空闲描述项中,得到与所述描述字段的内容对应的描述项。
在另一示范例中,在从所述地址处读取当前指令执行所需要的输入数据之后,或者向所述地址处写回当前指令执行得到的结果数据之后,所述方法还包括:
删除所述描述项中的所述描述项ID、地址和存储区域的大小,以使得该描述项成为所述描述项池中的空闲描述项。
在另一示范例中,所述描述字段的内容为读取描述字段的内容,并且该读取描述字段的内容对应读取描述项,所述读取描述项包括输入数据的读取地址,或者
所述描述字段的内容为写回描述字段的内容,并且该写回描述字段的内容对应写回描述项,所述写回描述项包括结果数据的写回地址。
在另一示范例中,所述当前指令的描述字段的内容为读取描述字段的内容,并且当前指令的读取描述字段的内容和对应的读取描述项分别与前一指令的写回描述字段的内容和对应的写回描述项相同,并且,
在从所述读取地址处读取当前指令执行所需要的输入数据之前,所述方法还包括:
确定前一指令是否已经将所述前一指令的结果数据写回到所述前一指令的写回地址处;
如果所述确定结果为没有写回,则暂停所述当前指令的执行;
如果所述确定结果为已经写回,则从当前指令的所述读取地址处读取当前指令执行所需要的输入数据。
在另一示范例中,确定前一指令是否已经将所述前一指令的结果数据写回到所述前一指令的写回地址处包括:
查询是否在已写回缓存区中存储有所述前一指令的写回描述项,
如果查询结果为存储有所述前一指令的写回描述项,则确定前一指令已经将所述前一指令的结果数据写回到所述前一指令的写回地址处,如果查询结果为未存储有所述前一指令的写回描述项,则确定前一指令还未将所述前一指令的结果数据写回到所述前一指令的写回地址处;并且
在从当前指令的所述读取地址处读取当前指令执行所需要的输入数据之后,所述方法还包括:
从所述已写回缓存区中删除所述前一指令的写回描述项。
在另一示范例中,所述读取描述项还包括所述读取描述项的描述项ID和对应所述读取地址的存储区域的大小;并且
在从当前指令的所述读取地址处读取当前指令执行所需要的输入数据之后,所述方法还包括:
删除所述当前指令的读取描述项中的所述描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。
在另一示范例中,所述当前指令的描述字段的内容为写回描述字段的内容,并且所述当前指令的写回描述字段的内容和对应的写回描述项分别与后一指令的读取描述字段的内容和对应的读取描述项相同;并且
在向所述写回地址处写回当前指令执行得到的结果数据之后,所述方法还包括:
保留所述当前指令的写回描述字段的内容和写回描述项之间的对应关系,并将所述当前指令的写回描述项标记为已执行写回操作,以供所述后一指令根据该后一指令的读取描述字段的内容和读取描述项之间的对应关系读取所述后一指令的输入数据。
在另一示范例中,将所述当前指令的写回描述项标记为已执行写回操作包括:
将所述当前指令的写回描述项存入所述已写回缓存区中。
在另一示范例中,获取与所述写回描述字段的内容对应的写回描述项包括:
从描述项池中获取一空闲描述项,将与所述写回描述字段的内容对应的所述写回描述项的描述项ID、存储区域的地址和存储区域的大小写入该空闲描述项中,得到所述写回描述项。
在另一示范例中,所述存储区域属于内存。
本发明的实施方式还公开了一种处理器,该处理器包括:
第一获取模块,用于获取当前指令中描述字段的内容;
第二获取模块,用于获取与所述描述字段的内容对应的描述项,其中,所述描述项包括用于存储数据的存储区域的地址;
执行模块,用于基于获取到的所述描述项中用于存储数据的地址,从所述地址处读取当前指令执行所需要的输入数据,或者向所述地址处写回当前指令执行得到的结果数据;
其中,所述存储区域不属于所述处理器中的寄存器。
在一示范例中,所述第二获取模块包括:
获取子模块,用于从描述项池中获取一空闲描述项;
写入子模块,用于将与所述描述字段的内容对应的描述项的描述项ID、存储区域的地址和所述存储区域的大小写入该空闲描述项中,得到与所述描述字段的内容对应的描述项。
在另一示范例中,所述处理器还包括:
第一删除模块,用于删除所述描述项中的所述描述项ID、地址和存储区域的大小,以使得该描述项成为所述描述项池中的空闲描述项。
在另一示范例中,所述描述字段的内容为读取描述字段的内容,并且该读取描述字段的内容对应读取描述项,所述读取描述项包括输入数据的读取地址,或者
所述描述字段的内容为写回描述字段的内容,并且该写回描述字段的内容对应写回描述项,所述写回描述项包括结果数据的写回地址。
在另一示范例中,所述当前指令的描述字段的内容为读取描述字段的内容,并且当前指令的读取描述字段的内容和对应的读取描述项分别与前一指令的写回描述字段的内容和对应的写回描述项相同,并且,
所述处理器还包括:
确定模块,用于确定前一指令是否已经将所述前一指令的结果数据写回到所述前一指令的写回地址处;
暂停模块,用于在所述确定模块的确定结果为没有写回时,暂停所述当前指令的执行;并且
如果所述确定模块的确定结果为已经写回,则所述执行模块从当前指令的所述读取地址处读取当前指令执行所需要的输入数据。
在另一示范例中,所述确定模块包括:
查询子模块,用于查询是否在已写回缓存区中存储有所述前一指令的写回描述项;
确定子模块,用于在所述查询子模块的查询结果为存储有所述前一指令的写回描述项时确定前一指令已经将所述前一指令的结果数据写回到所述前一指令的写回地址处,在查询结果为未存储有所述前一指令的写回描述项时确定前一指令还未将所述前一指令的结果数据写回到所述前一指令的写回地址处;并且
所述处理器还包括:
第二删除模块,用于从所述已写回缓存区中删除所述前一指令的写回描述项。
在另一示范例中,所述读取描述项还包括所述读取描述项的描述项ID和对应所述读取地址的存储区域的大小;并且
所述处理器还包括:
第三删除模块,用于删除所述当前指令的读取描述项中的所述描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。
在另一示范例中,所述当前指令的描述字段的内容为写回描述字段的内容,并且所述当前指令的写回描述字段的内容和对应的写回描述项分别与后一指令的读取描述字段的内容和对应的读取描述项相同;并且
所述处理器还包括:
保留模块,用于保留所述当前指令的写回描述字段的内容和写回描述项之间的对应关系,并将所述当前指令的写回描述项标记为已执行写回操作,以供所述后一指令根据该后一指令的读取描述字段的内容和读取描述项之间的对应关系读取所述后一指令的输入数据。
在另一示范例中,所述保留模块通过以下方式将所述当前指令的写回描述项标记为已执行写回操作:
将所述当前指令的写回描述项存入所述已写回缓存区中。
在另一示范例中,所述第二获取模块通过以下方式获取与所述写回描述字段的内容对应的写回描述项:
从描述项池中获取一空闲描述项,将与所述写回描述字段的内容对应的所述写回描述项的描述项ID、存储区域的地址和存储区域的大小写入该空闲描述项中,得到所述写回描述项。
在另一示范例中,所述存储区域属于内存。
本发明的实施方式还公开了一种机器可读介质,所述机器可读介质上存储有指令,该指令在机器上执行时使机器执行上述实施方式所公开的指令执行方法。
本发明的实施方式还公开了一种系统,包括:
存储器,用于存储由系统的一个或多个处理器执行的指令,以及
处理器,是系统的处理器之一,用于执行上述实施方式所公开的指令执行方法。
本发明实施方式与现有技术相比,主要区别及其效果在于:
能够通过描述字段和描述项之间的对应关系,将指令执行所需的数据或者指令的执行结果数据存储在存储空间较大的缓存(如内存)中,而不是存储在寄存器中,从而通过执行指令实现支持大数据量的输入输出的特定功能,提高实现特定功能的集成电路中域特定处理器的运行效率。
进一步地,执行完的指令的描述字段的内容和描述项解除对应关系后,描述项中的内容被删除,成为描述项池中的空闲描述项,供后续指令执行时使用该描述项,提高描述项的利用率,从而以有限数目的描述项实现对各存储空间的对应管理。
进一步地,能够实现流水线间的同步执行,适用于各种逻辑的运行。
进一步地,通过将已写回结果数据的指令的写回描述项存储到写回缓存区方式,为后续指令提供输入数据已存储到相应存储地址的判断依据。
附图说明
图1是根据本发明第一实施方式的处理器的指令执行方法的流程示意图;
图2A是根据本发明第二实施方式的指令执行方法在异步模式下读取输入数据的流程示意图;
图2B是根据本发明第二实施方式的指令执行方法在异步模式下写回结果数据的流程示意图;
图3A是根据本发明第二实施方式的指令执行方法在同步模式下读取输入数据的流程示意图;
图3B是根据本发明第二实施方式的指令执行方法在同步模式下写回结果数据的流程示意图;
图4是根据本发明第三实施方式的处理器的结构示意图;
图5是根据本发明第四实施方式的采用异步模式执行指令的处理器的结构示意图;
图6是根据本发明第五实施方式的采用同步模式执行指令的读取阶段的处理器的结构示意图;
图7是根据本发明第五实施方式的采用同步模式执行指令的写回阶段的处理器的结构示意图;
图8是根据本发明第六实施方式的指令的格式示意图;
图9是根据本发明第六实施方式的描述项流动示意图;
图10是根据本发明实施方式的处理器的示例性流水线示意图;
图11是根据本发明实施方式的处理器的示例性核的架构图;
图12是根据本发明的各实施方式的示例性处理器架构的框图;
图13和14是根据本发明实施方式的示例性计算机架构的框图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本发明而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
可以理解,在本发明各实施方式中,处理器可以用于各种计算设备,优选地,该处理器为域特定处理器,用于实现固定功能的集成电路。
此外,可以理解,在本发明各实施方式中,存储描述项的存储地址为描述地址,描述地址和存储数据的地址可以是同一种或者同一存储器中的存储区域的地址,也可以是不同种类的存储器或者不同存储器中的存储区域的地址,例如,将描述项存储在高速缓冲中,将数据存储在内存中,或者将描述项和数据都存储在内存中。数据包括读取数据和结果数据。
此外,可以理解,在本发明各实施方式中,前一指令是指比当前指令早执行的指令中的一个,其并非限制为与当前指令紧邻的指令,可以是比当前指令先执行的多个指令中的任意一个,同理,后一指令是指比当前指令后执行的指令中的一个,也并非限制为与当前指令紧邻的指令,可以是比当前指令后执行的多个指令中的任意一个。
此外,可以理解,在本发明各实施方式中,描述了在一个执行周期中指令的执行方式,但是,在实际操作中,本领域技术人员可以根据实际情况,设定指令在多个执行周期中的全部周期内采用本发明公开的执行方式。
此外,可以理解,在本发明中,描述项池为一个描述项的集合,该描述项池中具有多个空闲描述项供指令执行时使用。在指令执行时,如果选择其中的一个空闲描述项,则该描述项被赋予描述项ID、存储空间的地址和存储空间的大小,而在指令使用完该描述项后,该描述项中的描述项ID、存储空间的地址和存储空间的大小被删除,重新成为描述项池中的空闲描述项。此外,可以理解,在本发明技术方案的思想内,空闲描述项在被使用时也可以赋予描述项ID、存储空间的地址和存储空间的大小之外的其他内容,在此不做限制。
本发明第一实施方式涉及一种处理器的指令执行方法。图1是处理器的指令执行方法的流程示意图。
具体地,如图1所示,该处理器的指令执行方法包括以下步骤:
在步骤101中,获取当前指令中描述字段的内容。例如,在译码阶段获取当前指令中描述字段中的内容。优选地,描述字段的内容为非负的整数值,例如,0,1,2等,可以占用指令中较少的比特,例如,仅占用8个比特。此外,描述字段的内容也可以是其他值、字符等,在此不做限制。
此后,进入步骤102。
在步骤102中,获取与描述字段的内容对应的描述项,其中,描述项包括用于存储数据的至少一个存储区域的地址。其中,所述存储区域不属于所述处理器中的寄存器。
优选地,在本发明中,存储区域属于内存。并且,描述项还可以包括描述项的ID和存储区域的大小。例如,描述项的ID为描述项存储地址。可以理解,描述项ID也可以是别的标识符,不限于描述项存储地址。
此后,进入步骤103。
在步骤103中,基于获取到的描述项中用于存储数据的地址,根据指令执行依赖性的要求,从地址处读取当前指令执行所需要的输入数据,或者向地址处写回当前指令执行得到的结果数据。
此后,结束本流程。
在上述步骤中,对于指令的输入数据和结果数据,设置读取描述字段和写回描述字段,其中,读取描述项与读取描述字段的内容对应,写回描述项与写回描述字段的内容对应,读取描述项包括输入数据的读取地址、该读取描述项的ID以及读取地址对应的存储区域的大小,写回描述项包括结果数据的写回地址、写回描述项的ID以及写回地址对应的存储区域的大小。如此,在读取输入数据阶段,在步骤101中获取到的是读取描述项中的存储输入数据的读取地址,在步骤103中,基于获取到的读取描述项中存储输入数据的读取地址,从读取地址处读取当前指令执行所需要的输入数据;在写回结果数据阶段,在步骤 101中获取到的是写回描述项中的用于存储结果数据的写回地址,而在步骤103中,基于获取到的写回描述项中的写回地址,向写回地址处写回当前指令执行得到的结果数据。
但是,可以理解,在执行的一个执行周期内,是同时包含读取和写回两个阶段的方案的,此处只是为了便于说明将两者分开写。
能够通过描述字段和描述项之间的对应关系,将指令执行所需的数据或者指令的执行结果数据存储在存储空间较大的缓存(如内存)中,而不是存储在寄存器中,从而通过执行指令实现支持大数据量的输入输出的特定功能,提高实现特定功能的集成电路中域特定处理器的运行效率。
本发明的第二实施方式涉及一种处理器的指令执行方法。该指令执行方法是第一实施方式的一种实现方法。
在该实施方式中,输入数据和结果数据的读取地址和写回地址均为内存中的存储地址,同时,各描述项也存储在内存中。
此外,在该实施方式中,描述了指令执行的两种模式,异步模式和同步模式,在异步模式中,前一指令的执行结果数据与后一指令执行所需的输入数据无关,在同步模式中,前一指令的执行结果数据为后一指令执行所需的输入数据。为了便于说明,本实施例将两个模式的输入数据的读取阶段和结果数据的写回阶段分开描述,然而,可以理解,在实际执行时,在一条指令的执行周期内,在同步模式或者异步模式下,同时包括本发明实施方式所提及的读取阶段和写回阶段。
具体地,图2A示出了该指令执行方法在异步模式下读取输入数据流程示意图。具体地,如图2A所示,该方法包括:
在步骤201中:获取当前指令中读取描述字段的内容。
获取方式如第一实施方式,在此不做赘述。此后,进入步骤202。
在步骤202中,获取与读取描述字段的内容对应的读取描述项,其中,读取描述项包括读取描述项的ID、存储输入数据的读取地址、以及该读取地址对应的存储区域的大小。
优选地,在一示范例中,该步骤202通过以下方式获取读取描述项:
从描述项池中获取一空闲描述项,将与读取描述字段的内容对应的读取描述项的描述项ID、存储区域的读取地址和所述存储区域的大小写入该空闲描述项中,得到与读取描述字段的内容对应的读取描述项。
此外,可以理解,也可以采用其他方式获取读取描述项,例如,将与当前指令的读取描述字段的内容对应的读取描述项预先存储,在获取时,仅从相应的存储空间直接获取该读取描述项,而无需向空闲描述项中写入相应的描述项ID、写回地址和存储空间的大小。
此后,进入步骤203。
在步骤203中,基于获取到的读取描述项中的读取地址,从读取地址处读取当前指令执行所需要的输入数据。
此后,结束本流程。
此外,在一示范例中,在上述步骤203之后,该方法还包括:
解除读取描述项和读取描述字段的内容之间的对应关系。
优选地,如果是基于上述步骤202中的具体方式来获取读取描述项的话,该步骤可以包括:
删除读取描述项中的读取描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。如此,提高描述项的利用率,从而以有限数目的描述项实现对各存储空间的对应管理。
图2B示出了该指令执行方法在异步模式下写回结果数据的流程示意图。具体地,如图2B所示,该方法包括:
在步骤204中,获取当前指令中写回描述字段的内容。此后进入步骤206。
在步骤205中,获取与写回描述字段的内容对应的写回描述项,其中,写回描述项包括写回描述项的ID、用于存储结果数据的写回地址以及该写回地址对应的存储空间的大小。
优选地,该步骤205可以通过以下方式获取写回描述项:
从描述项池中获取一空闲描述项,将与写回描述字段的内容对应的写回描述项的描述项ID、存储区域的写回地址和所述存储区域的大小写入该空闲描述项中,得到与写回描述字段的内容对应的写回描述项。
此外,可以理解,也可以采用其他方式获取写回描述项,例如,将与当前指令的写回描述字段的内容对应的写回描述项预先存储,在获取时,仅从相应的存储空间直接获取该写回描述项,而无需向空闲描述项中写入相应的描述项ID、写回地址和存储空间的大小。
此后,进入步骤206。
在步骤206中,基于获取到的写回地址,向写回地址处写回当前指令执行得到的结果数据。
此后,结束本流程。
此外,在一示范例中,在上述步骤206之后,该方法还包括:
解除写回描述项和写回描述字段的内容之间的对应关系。
优选地,如果是基于上述步骤205中的具体方式来获取读取描述项的话,该步骤可以包括:
删除写回描述项中的描述项ID、写回地址和存储区域的大小,以使得该写回描述项成为描述项池中的空闲描述项。如此,提高描述项的利用率,从而以有限数目的描述项实现对各存储空间的对应管理。
图3A示出了该指令执行方法在同步模式下读取输入数据的流程示意图。具体地,在该流程中,当前指令的读取地址和前一指令的写回地址相同。如图3A所示,该方法包括:
步骤301,获取当前指令中读取描述字段的内容。获取方式如第一实施方式,在此不做赘述。此后,进入步骤302。
在步骤302中,获取与读取描述字段的内容对应的读取描述项,其中,读取描述项包括读取描述项的ID、存储输入数据的读取地址以及该读取地址对应的存储区域的大小。
优选地,在一示范例中,当前指令的读取描述字段的内容和对应的读取描述项分别与前一指令的写回描述字段的内容和对应的写回描述项相同,因此,当前指令的读取描述字段的内容与读取描述项之间的对应关系已经存在,在获取当前指令的读取描述项时,只要基于已有的对应关系,便可基于读取描述字段的内容得到当前指令的读取描述项,其中,前一指令的写回描述字段的内容与写回描述项之间的对应关系或者说当前指令的读取描述字段的内容和读取描述项之间的对应关系可以以表格的形式存储。
此外,可以理解,在其他示范例中,当前指令的读取描述字段的内容和对应的读取描述项可以与前一指令的写回描述字段的内容和对应的写回描述项不同,可以是不同的描述项具有同一存储地址。
此后,进入步骤303。
在步骤303中,确定前一指令是否已经将前一指令的结果数据写回到前一指令的写回地址处。如果确定结果为是,则进入步骤304;否则,进入步骤305。
优选地,在一示范例中,在当前指令的读取描述字段的内容和对应的读取描述项分别与前一指令的写回描述字段的内容和对应的写回描述项相同的情况下,并且可以通过以下方式实施该步骤303:
查询是否在已写回缓存区中存储有前一指令的写回描述项,如果查询结果为存储有前一指令的写回描述项,则确定前一指令已经将前一指令的结果数据写回到前一指令的写回地址处,如果查询结果为未存储有前一指令的写回描述项,则确定前一指令还未将前一指令的结果数据写回到前一指令的写回地址处。写回缓存区为内存或者高速缓存中的区域。
此外,可以理解,在其他示范例中,也可以采用其他方式确定前一指令是否已写回结果数据,例如,仅仅将前一指令的写回描述项的描述项ID或者写回地址存储于已写回区域或者其他存储介质(如表格)中,而并非存储整个描述项,因此,在此不做限制。
在步骤304中,从当前指令的读取地址处读取当前指令执行所需要的输入数据。
此后,结束本流程。
在步骤305中,暂停当前指令的执行。此后,返回步骤303。
可以理解,在通过将写回描述项存入写回缓存区来判断指令是否将写回数据写回的示例中,在执行完上述步骤304之后,还可以从已写回缓存区中删除前一指令的写回描述项。
此外,如果前一指令的写回描述项是通过如上述步骤205那样,通过从描述项池获取写回描述项的,则在步骤步骤304之后,删除当前指令的读取描述项中的描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。如此,提高描述项的利用率,从而以有限数目的描述项实现对各存储空间的对应管理。
图3B示出了该指令执行方法在同步模式下写回结果数据的流程示意图。具体地,当前指令的写回描述项中的写回地址和下一指令的读取描述项中的写回地址相同,如图3B所示,该方法包括:
在步骤306中,获取当前指令中写回描述字段的内容。此后进入步骤307。
在步骤307中,获取与写回描述字段的内容对应的写回描述项,其中,写回描述项包括该写回描述项的ID、用于存储结果数据的写回地址以及该写回地址对应的存储区域的大小。
优选地,该步骤307可以通过以下方式获取写回描述项:
从描述项池中获取一空闲描述项,将与写回描述字段的内容对应的写回描述项的描述项ID、存储区域的写回地址和存储区域的大小写入该空闲描述项中,得到与写回描述字段的内容对应的写回描述项。而在该写回描述项被使用完毕后,可以删除其中的描述项ID、存储区域的写回地址和存储区域的大小,将其释放会描述项池。
此外,可以理解,也可以采用其他方式获取写回描述项,例如,将与当前指令的写回描述字段的内容对应的写回描述项预先存储,在获取时,仅从相应的存储空间直接获取该写回描述项,而无需向空闲描述项中写入相应的描述项ID、写回地址和存储空间的大小。
此后,进入步骤308。
在步骤308中,基于获取到的写回地址,向写回地址处写回当前指令执行得到的结果数据。此后进入步骤309。
在步骤309中,保留当前指令的写回描述字段的内容和写回描述项之间的对应关系,并将当前指令的写回描述项标记为已执行写回操作。如此,后一指令可以根据后一指令的读取描述字段的内容和读取描述项之间的对应关系读取前一指令写回到相应的存储区域的结果数据。其中,在当前指令的写回描述字段的内容与后一指令的读取描述字段的内容相同,当前指令的写回描述项与后一指令的读取描述项相同。
可以理解,在当前指令的写回描述字段的内容与后一指令的读取描述字段的内容相同,当前指令的写回描述项与后一指令的读取描述项相同的情况下,当前指令在将结果数据写回写回地址后,将写回描述项写入已写回缓存区,后一指令只要查询已写回缓存区中是否有当前指令的写回描述项(或者是后一指令的读取描述项),便可判断出当前指令是否已将其结果数据写回写回地址(即当前指令的写回描述项中包括的写回地址或者后一指令的读取描述项包括的读取地址)。
此外,也可以是当前指令的写回描述项的描述项ID、写回地址和该写回地址对应的存储区域的大小分别与后一指令的读取描述项的描述项ID、读取地址和该读取地址对应的存储区域的大小相同,然后,当前指令在将结果数据写回写回地址后,将写回描述项的描述项ID或者写回地址存入已写回缓存区,后一指令只要查询已写回缓存区中是否有当前指令的写回描述项的ID或者写回地址,便可判断出当前指令是否已将其结果数据写回写回地址(即当前指令的写回描述项中包括的写回地址或者后一指令的读取描述项包括的读取地址)。其中,写回缓存区可以是内存中的缓存区,也可以是高速缓存中的缓存区。
此后,结束本流程。
可以理解,本发明在同步模式下的指令执行方法能够实现流水线间的同步执行,适用于各种逻辑的运行。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable ArrayLogic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”) 等等。
本发明的第三实施方式涉及一种处理器。图4是该处理器的结构示意图。
具体地,如图4所示,该处理器包括:
第一获取模块,用于获取当前指令中描述字段的内容;
第二获取模块,用于获取与描述字段的内容对应的描述项,其中,描述项包括用于存储数据的存储区域的地址;
执行模块,用于基于获取到的所述描述项中用于存储数据的地址,从所述地址处读取当前指令执行所需要的输入数据,或者向所述地址处写回当前指令执行得到的结果数据;
其中,所述存储区域不属于所述处理器中的寄存器。
可以理解,优选地,上述存储区域属于内存,并且,描述项还可以包括描述项的描述项ID和存储数据的地址所对应的存储空间的大小。例如,描述项的ID为描述项存储地址。可以理解,描述项ID也可以是别的标识符,不限于描述项存储地址。
可以理解,在本发明各实施方式中,描述字段的内容包括与读取描述项对应的读取描述字段的内容和与写回描述项对应的写回描述字段的内容,其中,读取描述项包括输入数据的读取地址,写回描述项包括结果数据的写回地址。
能够通过描述字段和描述项之间的对应关系,将指令执行所需的数据或者指令的执行结果数据存储在存储空间较大的缓存(如内存)中,而不是存储在寄存器中,从而通过执行指令实现支持大数据量的输入输出的特定功能,提高实现特定功能的集成电路中域特定处理器的运行效率。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明的第四实施方式涉及一种处理器。该处理器中的指令执行采用异步模式。并且,在该实施方式中,描述字段的内容包括与读取描述项对应的读取描述字段的内容和与写回描述项对应的写回描述字段的内容,其中,读取描述项包括输入数据的读取地址,写回描述项包括结果数据的写回地址。在异步模式中,前一指令的执行结果数据与后一指令执行所需的输入数据无关。
图5示出了采用异步模式执行指令的处理器的结构示意图。具体地,如图5所示,该处理器包括:
第一获取模块,用于获取当前指令中读取描述字段的内容和/或写回描述字段的内容;
第二获取模块,用于获取与读取描述字段的内容对应的读取描述项和/或与写回描述字段的内容对应的写回描述项,其中,读取描述项包括该读取描述项的ID、存储输入数据的读取地址以及该读取地址对应的存储空间的大小,写回描述项包括该写回描述项的ID、用于存储输入结果数据的写回地址以及该写回地址对应的存储空间的大小;
执行模块,用于基于获取到的读取描述项中存储输入数据的读取地址,从读取地址处读取当前指令执行所需要的输入数据;和/或,用于基于获取到的写回描述项中用于存储结果数据的写回地址,向写回地址处写回当前指令执行得到的结果数据。
此外,在一示范例中,上述第二获取模块包括:
获取子模块,用于从描述项池中获取一空闲描述项;
写入子模块,用于将与读取描述字段的内容对应的读取描述项的描述项ID、读取地址和存储区域的大小写入该空闲描述项中,得到与读取描述字段的内容对应的读取描述项;和/或将与写回描述字段的内容对应的写回描述项的描述项ID、写回地址和存储区域的大小写入该空闲描述项中,得到与该写回描述字段的内容对应的写回描述项。
在该示范例中,为了提高描述项池中描述项的利用率,可以在描述项使用完毕后将其释放回描述项池,优选地,该处理器还包括:
第一删除模块,用于在执行模块从输入地址处读取当前指令执行所需要的输入数据之后,删除读取描述项中的描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为读取描述项池中的空闲描述项;或者,用于在执行模块向写回地址处写回当前指令执行得到的结果数据之后,删除写回描述项中的描述项ID、写回地址和存储区域的大小,以使得该写回描述项成为写回描述项池中的空闲描述项。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本发明的第五实施方式涉及一种处理器。该处理器中的指令执行采用同步模式。在同步模式中,前一指令的执行结果数据为后一指令执行所需的输入数据。并且,在该实施方式中,描述字段的内容包括与读取描述项对应的读取描述字段的内容和与写回描述项对应的写回描述字段的内容,其中,读取描述项包括输入数据的读取地址,写回描述项包括结果数据的写回地址。
图6示出了采用同步模式执行指令读取阶段的处理器的结构示意图。具体地,前一指令的写回描述项中的写回地址与当前指令的读取描述项中的读取地址相同,如图6所示,该处理器包括:
第一获取模块,用于获取当前指令中读取描述字段的内容;
第二获取模块,用于获取与读取描述字段的内容对应的读取描述项,其中,读取描述项包括存储输入数据的读取地址;
确定模块,用于确定前一指令是否已经将前一指令的结果数据写回到前一指令的写回地址处;
暂停模块,用于在确定模块的确定结果为没有写回时,暂停当前指令的执行;
执行模块,用于在确定模块的确定结果为已经写回时,基于获取到的读取描述项中的读取地址,从读取地址处读取当前指令执行所需要的输入数据。
此外,在一示范例中,当前指令的读取描述项与前一指令的写回描述项相同。并且,优选地,上述确定模块包括:
查询子模块,用于查询是否在已写回缓存区中存储有前一指令的写回描述项;
确定子模块,用于在查询子模块的查询结果为存储有前一指令的写回描述项时确定前一指令已经将前一指令的结果数据写回到前一指令的写回地址处,在查询结果为未存储有前一指令的写回描述项时确定前一指令还未将前一指令的结果数据写回到前一指令的写回地址处;并且
处理器还包括:
第二删除模块,用于在执行模块从读取地址处读取到当前指令的输入数据后,从已写回缓存区中删除前一指令的写回描述项。
此外,优选地,在另一示范例中,读取描述项还包括读取描述项的描述项ID和对应读取地址的存储区域的大小,当前指令的读取描述项与前一指令的写回描述项相同,并且前一指令是通过如下方式获取前一指令的写回描述项的:
从描述项池中获取一空闲描述项,将与写回描述字段的内容对应的写回描述项的描述项ID、存储区域的写回地址和所述存储区域的大小写入该空闲描述项中,得到与写回描述字段的内容对应的写回描述项。
此时,处理器还可以包括:
第三删除模块,用于删除当前指令的读取描述项中的描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。如此,提高描述项的利用率,从而以有限数目的描述项实现对各存储空间的对应管理。
此外,可以理解,确定模块也可以采用其他方式确定前一指令是否已经将其结果数据写回,并且处理器也可以不具有第三删除模块,在此不做限制。
图7示出了采用同步模式执行指令写回阶段的处理器的结构示意图。具体地,后一指令的读取描述项中的读取地址与当前指令的写回描述项中的写回地址相同,如图7所示,该处理器包括:
第一获取模块,用于获取当前指令中写回描述字段的内容;
第二获取模块,用于获取与写回描述字段的内容对应的写回描述项,其中,写回描述项包括用于存储输入结果数据的写回地址;
执行模块,用于基于获取到的写回描述项中用于存储结果数据的写回地址,向写回地址处写回当前指令执行得到的结果数据。
此外,在一优选例中,当前指令的写回描述项与后一指令的读取描述项相同。该处理器还包括:
保留模块,用于保留当前指令的写回描述字段的内容和写回描述项之间的对应关系,并将当前指令的写回描述项标记为已执行写回操作,以供后一指令根据该后一指令的读取描述字段的内容和读取描述项之间的对应关系读取后一指令的输入数据。
并且,优选地,保留模块通过以下方式将当前指令的写回描述项标记为已执行写回操作:
将当前指令的写回描述项存入已写回缓存区中,其中,写回缓存区不是处理器寄存器中的区域,例如,为内存或者高速缓存中的缓存区。
此外,保留模块也可以采用其他方式将当前指令的写回描述项标记为已执行写回操作,在此不做限制。
此外,在一示范例中,第二获取模块通过以下方式获取与写回描述字段的内容对应的写回描述项:
从描述项池中获取一空闲描述项,将与写回描述字段的内容对应的写回描述项的描述项ID、存储区域的地址和存储区域的大小写入该空闲描述项中,得到写回描述项。
可以理解,在本发明的其他实施方式中,也可以采用其他方式获取写回描述项,在此不做限制。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本发明的第六实施方式涉及一种处理器的指令执行方法。
具体地,在该实施方式中,存储数据以及描述项的各地址为内存中的存储地址。指令包括识别操作类型的位域OPC、表示指令执行模式的属性字段ATB、读取描述字段IBD 以及输出描述字段OBD。例如,如图7所示,对于一个32比特的指令,OPC占10比特, ATB占6比特,IBD和OBD各占8比特。在如图8所示的描述项池中,存储有多个没有与任何描述字段的内容存在对应关系的描述项,而对每个IBD的内容或者OBD的内容,可以从描述项池中选择一个描述项建立对应关系,例如,通过硬件原语Get_M-Look,其中,每个描述项包括描述项的ID、存储数据的地址和该地址对应的存储空间大小。
下面描述指令执行的两种模式:
1.异步执行模式
指令中的属性字段ATB表明了指令的执行时遵循异步模式还是同步模式,对于异步模式,在指令的流水线执行中,指令基于指令中的IBD的内容或OBD的内容,获取对应的读取描述项或写回描述项。从存储在与IBD的内容对应的读取描述项(例如,M-Lock i) 中的地址描述的存储地址中获取输入数据,并将执行完的结果数据放入对应OBD的内容的写回描述项(例如,M-Lock j)中的地址描述的存储地址中,以进行输出。并且,在获取完读取数据后,对应IBD的读取描述项将通过硬件原语Put_M-Lock在指令写回/隐退阶段的隐式调用释放到描述项池中(即删除读取描述项中的内容,如描述项ID、读取地址和存储区域的大小),在写回结果数据后,对应OBD的描述项也将被放回描述项池中(即删除写回描述项中的内容,如描述项ID、写回地址和存储区域的大小)。
2.同步模式
在同步模式中,前一个指令的写回描述字段的内容和后一个指令的读取描述字段的内容相同,并且,两个描述字段的内容对应的描述项的存储数据的地址相同,优选地,两个描述字段的内容对应同一个描述项。
在指令的流水线操作中,指令被译码后得到IBD的内容(例如,5)和OBD的内容(例如15)。在读取输入数据阶段,流水线逻辑将获取IBD的内容对应的读取描述项(例如,M-Lock i),并确定M-Lock i是否存在于已写回缓存区(内存中的存储区域)中,如果是,则表示前一指令(其OBD的内容为5)已将执行的结果数据写入其写回描述项(也是M-Lock i)中的地址处,可以读取输入数据,继续执行指令,否则,它将暂停流水线或进入队列等待。在成功读取输入数据后,从已写回缓存区中删除M-Lock i,解除当前指令的IBD的内容(即5)与M-Lock i的对应关系,即调用硬件原语Put_M-Lock的隐式使用以将M-Lock i放回描述项池(即删除M-Lock i中的内容,如M-Lock i的描述项ID、读取地址和存储区域的大小),如图8所示。
在结果数据的写回阶段,流水线逻辑将获取OBD的内容(例如15)对应的写回描述项(例如,M-Lock j),并将结果数据写入M-Lock j中的地址处,然后将M-Lock j存入已写回缓存区,供下一条指令(其IBD的内容为15,读取描述项为M-Lock j)使用。在下一条指令读取数据完成后,M-Lock j与15的对应关系会被解除,即调用硬件原语 Put_M-Lock的隐式使用以将M-Lock j放回描述项池中(即删除M-Lock j中的内容,如删除M-Lock j的描述项ID、写回地址和存储区域的大小)。
可以理解,上述对IBD或者OBD内容的举例仅是出于说明目的,并非限制性的,在具体实施时,本领域技术人员可以根据实际情况设置IBD和OBD的内容。
能够通过描述字段和描述项之间的对应关系,将指令执行所需的数据或者指令的执行结果数据存储在存储空间较大的缓存(如内存)中,而不是存储在寄存器中,从而通过执行指令实现支持大数据量的输入输出的特定功能,提高实现特定功能的集成电路中域特定处理器的运行效率。
此外,可以理解,本发明的技术方案可以应用在各种计算机处理器中。图10示出了根据本发明的实施方式的指令的示例性流水线示意图。图11示出了根据本发明的实施方式的处理器的核的一种示例性架构。
如图图10所示,可实施本发明的技术方案的处理器的流水线可以包括取出阶段1010、解码阶段1020、寄存器读取/存储器读取阶段1030、执行阶段1040以及写回/写入存储器阶段1050。
此外,可以理解,上述流水线的各阶段只是示例性的,本领域技术人员在使用本发明的技术方案时,采用的处理器的指令流水线操作也可也包括其他阶段,例如,对于一些无序发布/执行流水线,除了上述各阶段外,在取出阶段1010和解码阶段1020还包括长度解码阶段,在解码阶段1020和寄存器读取/存储器读取阶段1030还包括分配阶段、重命名阶段、调度(也称为分派或发布)阶段,在写回/写入存储器阶段1050之后还包括异常处理阶段和提交阶段。
图11示出了可执行上述流水线操作的处理器内核的示例性架构。如图11所示,指令取出的和解码单元1103从高速缓存1101和指令存储器1102中获取指令,并实现处理器流水线中的指令取出和指令解码功能,各ALU(arithmetic and logic unit,算术逻辑单元),如标量ALU 1104和矢量ALU 1105,固定功能单元1106,载入/存出单元1108实现处理器流水线的中的指令执行功能,而其他的单元,如寄存器1107和数据存储器1109实现了流水线中的写回/写入以及指令引退功能。可以理解,高速缓冲1101、指令存储器1102和数据存储器也可以是处理器外部的存储单元。
可以理解,图11只是示例性的示出了可以实施本发明技术方案的处理器核的架构,本领域技术人员也可以采用其他架构的核实现本发明,其仍属于本发明的保护范围。例如,包含其他运算单元,或者不包括上述架构中列出的某一个或某些单元。并且适用于本发明技术方案的核可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
图12示出了根据本发明的各实施方式的示例性处理器的框图。图12中的实线框示出具有单个核1202A、系统代理单元1204、一个或多个总线控制器单元1205的集合的处理器,而虚线框的可选附加示出具有多个核1203A-N和专用逻辑1201的集合的替代处理器,此外,系统代理单元1204中还可以包括一个或多个集成存储器控制器单元(未示出)。
因此,处理器的不同实现可包括:1)CPU,其中专用逻辑1201是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1203A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1203A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1203A-N 是多个通用有序核。因此,处理器可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元(未示出)的集合、以及耦合至集成存储器控制器单元的集合的外部存储器(未示出)。该共享高速缓存单元的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环(未示出)的互连单元将专用逻辑1210、共享高速缓存单元的集合以及系统代理单元1204/集成存储器控制器单元互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个共享高速缓存单元和核1203A-N之间的一致性(coherency)。
在一些实施例中,核1203A-N中的一个或多个核能够多线程化。系统代理单元1204包括协调和操作核1203A-N的那些组件。系统代理单元1204可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核1203A-N和专用逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1203A-N在架构指令集方面可以是同构的或异构的;即,这些核1203A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图13和14示出了根据本发明实施方式的示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参见图13,所示为根据本发明的一个实施例的系统的框图。系统可以包括一个或多个处理器1301,这些处理器耦合到控制器中枢1303。在一个实施例中,控制器中枢1303 包括图形存储器控制器中枢(GMCH)(未示出)和输入/输出中枢(IOH)(未示出,其可以在分开的芯片上);GMCH包括存储器和图形控制器,存储器1304和协处理器1302耦合到该存储器和图形控制器;IOH将输入/输出(I/O)设备耦合到GMCH。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器1304 和协处理器1302直接耦合到处理器1301以及控制器中枢1320,控制器中枢1303与IOH 处于单个芯片中。
附加处理器是任选的,每一个处理器可包括本文中描述的处理器核中的一个或多个,并且可以是处理器1301的某一版本。
存储器1304可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1303经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1206与处理器 1301进行通信。
在一个实施例中,协处理器1302是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1303可以包括集成图形加速器。
在多个处理器的情况下,处理器之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1301执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1301将这些协处理器指令识别为应当由附连的协处理器1302执行的类型。因此,处理器1301在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1302。协处理器1302接收并执行所接收的协处理器指令。
现在参考图14,所示为根据本发明的一实施例的SoC(片上系统)的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图14 中,互连单元1450被耦合至:应用处理器1410,该应用处理器包括一个或多个核1202A-N 的集合以及共享高速缓存单元(未示出);系统代理单元1204;总线控制器单元1205;集成存储器控制器单元1440;一组或一个或多个协处理器1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1460;以及用于耦合至一个或多个外部显示器的显示单元1470。在一个实施例中,协处理器1420包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图13中示出的代码1330)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本发明的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
需要说明的是,本发明各设备实施方式中提到的各模块都是逻辑模块,在物理上,一个逻辑模块可以是一个物理模块,也可以是一个物理模块的一部分,还可以以多个物理模块的组合实现,这些逻辑模块本身的物理实现方式并不是最重要的,这些逻辑模块所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,这并不表明上述设备实施方式并不存在其它的模块。
需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (24)
1.一种处理器的指令执行方法,其特征在于,包括:
获取当前指令中描述字段的内容;
获取与所述描述字段的内容对应的描述项,其中,所述描述项包括用于存储数据的存储区域的地址;
基于获取到的所述描述项中用于存储数据的所述地址,从所述地址处读取当前指令执行所需要的输入数据,或者向所述地址处写回当前指令执行得到的结果数据;
其中,所述存储区域不属于所述处理器中的寄存器。
2.根据权利要求1所述的指令执行方法,其特征在于,获取与所述描述字段的内容对应的描述项包括:
从描述项池中获取一空闲描述项,将与所述描述字段的内容对应的描述项的描述项ID、存储区域的地址和所述存储区域的大小写入该空闲描述项中,得到与所述描述字段的内容对应的描述项。
3.根据权利要求2所述的指令执行方法,其特征在于,在从所述地址处读取当前指令执行所需要的输入数据之后,或者向所述地址处写回当前指令执行得到的结果数据之后,所述方法还包括:
删除所述描述项中的所述描述项ID、地址和存储区域的大小,以使得该描述项成为所述描述项池中的空闲描述项。
4.根据权利要求1所述的指令执行方法,其特征在于,所述描述字段的内容为读取描述字段的内容,并且该读取描述字段的内容对应读取描述项,所述读取描述项包括输入数据的读取地址,或者
所述描述字段的内容为写回描述字段的内容,并且该写回描述字段的内容对应写回描述项,所述写回描述项包括结果数据的写回地址。
5.根据权利要求4所述的指令执行方法,其特征在于,所述当前指令的描述字段的内容为读取描述字段的内容,并且当前指令的读取描述字段的内容和对应的读取描述项分别与前一指令的写回描述字段的内容和对应的写回描述项相同,并且,
在从所述读取地址处读取当前指令执行所需要的输入数据之前,所述方法还包括:
确定前一指令是否已经将所述前一指令的结果数据写回到所述前一指令的写回地址处;
如果所述确定结果为没有写回,则暂停所述当前指令的执行;
如果所述确定结果为已经写回,则从当前指令的所述读取地址处读取当前指令执行所需要的输入数据。
6.根据权利要求5所述的指令执行方法,其特征在于,确定前一指令是否已经将所述前一指令的结果数据写回到所述前一指令的写回地址处包括:
查询是否在已写回缓存区中存储有所述前一指令的写回描述项,
如果查询结果为存储有所述前一指令的写回描述项,则确定前一指令已经将所述前一指令的结果数据写回到所述前一指令的写回地址处,如果查询结果为未存储有所述前一指令的写回描述项,则确定前一指令还未将所述前一指令的结果数据写回到所述前一指令的写回地址处;并且
在从当前指令的所述读取地址处读取当前指令执行所需要的输入数据之后,所述方法还包括:
从所述已写回缓存区中删除所述前一指令的写回描述项。
7.根据权利要求6所述的指令执行方法,其特征在于,所述读取描述项还包括所述读取描述项的描述项ID和对应所述读取地址的存储区域的大小;并且
在从当前指令的所述读取地址处读取当前指令执行所需要的输入数据之后,所述方法还包括:
删除所述当前指令的读取描述项中的所述描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。
8.根据权利要求4所述的指令执行方法,其特征在于,所述当前指令的描述字段的内容为写回描述字段的内容,并且所述当前指令的写回描述字段的内容和对应的写回描述项分别与后一指令的读取描述字段的内容和对应的读取描述项相同;并且
在向所述写回地址处写回当前指令执行得到的结果数据之后,所述方法还包括:
保留所述当前指令的写回描述字段的内容和写回描述项之间的对应关系,并将所述当前指令的写回描述项标记为已执行写回操作,以供所述后一指令根据该后一指令的读取描述字段的内容和读取描述项之间的对应关系读取所述后一指令的输入数据。
9.根据权利要求8所述的指令执行方法,其特征在于,将所述当前指令的写回描述项标记为已执行写回操作包括:
将所述当前指令的写回描述项存入所述已写回缓存区中。
10.根据权利要求9所述的指令执行方法,其特征在于,获取与所述写回描述字段的内容对应的写回描述项包括:
从描述项池中获取一空闲描述项,将与所述写回描述字段的内容对应的所述写回描述项的描述项ID、存储区域的地址和存储区域的大小写入该空闲描述项中,得到所述写回描述项。
11.根据权利要求1至10中任一项所述的指令执行方法,其特征在于,所述存储区域属于内存。
12.一种处理器,其特征在于,包括:
第一获取模块,用于获取当前指令中描述字段的内容;
第二获取模块,用于获取与所述描述字段的内容对应的描述项,其中,所述描述项包括用于存储数据的存储区域的地址;
执行模块,用于基于获取到的所述描述项中用于存储数据的地址,从所述地址处读取当前指令执行所需要的输入数据,或者向所述地址处写回当前指令执行得到的结果数据;
其中,所述存储区域不属于所述处理器中的寄存器。
13.根据权利要求12所述的处理器,其特征在于,所述第二获取模块包括:
获取子模块,用于从描述项池中获取一空闲描述项;
写入子模块,用于将与所述描述字段的内容对应的描述项的描述项ID、存储区域的地址和所述存储区域的大小写入该空闲描述项中,得到与所述描述字段的内容对应的描述项。
14.根据权利要求13所述的处理器,其特征在于,还包括:
第一删除模块,用于删除所述描述项中的所述描述项ID、地址和存储区域的大小,以使得该描述项成为所述描述项池中的空闲描述项。
15.根据权利要求12所述的处理器,其特征在于,所述描述字段的内容为读取描述字段的内容,并且该读取描述字段的内容对应读取描述项,所述读取描述项包括输入数据的读取地址,或者
所述描述字段的内容为写回描述字段的内容,并且该写回描述字段的内容对应写回描述项,所述写回描述项包括结果数据的写回地址。
16.根据权利要求15所述的处理器,其特征在于,所述当前指令的描述字段的内容为读取描述字段的内容,并且当前指令的读取描述字段的内容和对应的读取描述项分别与前一指令的写回描述字段的内容和对应的写回描述项相同,并且,
所述处理器还包括:
确定模块,用于确定前一指令是否已经将所述前一指令的结果数据写回到所述前一指令的写回地址处;
暂停模块,用于在所述确定模块的确定结果为没有写回时,暂停所述当前指令的执行;并且
如果所述确定模块的确定结果为已经写回,则所述执行模块从当前指令的所述读取地址处读取当前指令执行所需要的输入数据。
17.根据权利要求16所述的处理器,其特征在于,所述确定模块包括:
查询子模块,用于查询是否在已写回缓存区中存储有所述前一指令的写回描述项;
确定子模块,用于在所述查询子模块的查询结果为存储有所述前一指令的写回描述项时确定前一指令已经将所述前一指令的结果数据写回到所述前一指令的写回地址处,在查询结果为未存储有所述前一指令的写回描述项时确定前一指令还未将所述前一指令的结果数据写回到所述前一指令的写回地址处;并且
所述处理器还包括:
第二删除模块,用于从所述已写回缓存区中删除所述前一指令的写回描述项。
18.根据权利要求17所述的处理器,其特征在于,所述读取描述项还包括所述读取描述项的描述项ID和对应所述读取地址的存储区域的大小;并且
所述处理器还包括:
第三删除模块,用于删除所述当前指令的读取描述项中的所述描述项ID、读取地址和存储区域的大小,以使得该读取描述项成为描述项池中的空闲描述项。
19.根据权利要求15所述的处理器,其特征在于,所述当前指令的描述字段的内容为写回描述字段的内容,并且所述当前指令的写回描述字段的内容和对应的写回描述项分别与后一指令的读取描述字段的内容和对应的读取描述项相同;并且
所述处理器还包括:
保留模块,用于保留所述当前指令的写回描述字段的内容和写回描述项之间的对应关系,并将所述当前指令的写回描述项标记为已执行写回操作,以供所述后一指令根据该后一指令的读取描述字段的内容和读取描述项之间的对应关系读取所述后一指令的输入数据。
20.根据权利要求19所述的处理器,其特征在于,所述保留模块通过以下方式将所述当前指令的写回描述项标记为已执行写回操作:
将所述当前指令的写回描述项存入所述已写回缓存区中。
21.根据权利要求20所述的处理器,其特征在于,所述第二获取模块通过以下方式获取与所述写回描述字段的内容对应的写回描述项:
从描述项池中获取一空闲描述项,将与所述写回描述字段的内容对应的所述写回描述项的描述项ID、存储区域的地址和存储区域的大小写入该空闲描述项中,得到所述写回描述项。
22.根据权利要求12至21中任一项所述的处理器,其特征在于,所述存储区域属于内存。
23.一种机器可读介质,其特征在于,所述机器可读介质上存储有指令,该指令在机器上执行时使机器执行如权利要求1至11中任一项所述的指令执行方法。
24.一种系统,其特征在于,包括:
存储器,用于存储由系统的一个或多个处理器执行的指令,以及
处理器,是系统的处理器之一,用于执行如权利要求1至11中任一项所述的指令执行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581357.8A CN109683959B (zh) | 2018-12-24 | 2018-12-24 | 处理器的指令执行方法及其处理器 |
PCT/CN2019/126551 WO2020135208A1 (zh) | 2018-12-24 | 2019-12-19 | 处理器的指令执行方法及其处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581357.8A CN109683959B (zh) | 2018-12-24 | 2018-12-24 | 处理器的指令执行方法及其处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109683959A true CN109683959A (zh) | 2019-04-26 |
CN109683959B CN109683959B (zh) | 2020-12-01 |
Family
ID=66189080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811581357.8A Active CN109683959B (zh) | 2018-12-24 | 2018-12-24 | 处理器的指令执行方法及其处理器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109683959B (zh) |
WO (1) | WO2020135208A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020135208A1 (zh) * | 2018-12-24 | 2020-07-02 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0429733A2 (en) * | 1989-11-17 | 1991-06-05 | Texas Instruments Incorporated | Multiprocessor with crossbar between processors and memories |
CN103810117A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
CN104813278A (zh) * | 2012-12-27 | 2015-07-29 | 英特尔公司 | 对二进制转换的自修改代码以及交叉修改代码的处理 |
CN107305486A (zh) * | 2016-04-19 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种神经网络maxout层计算装置 |
CN107480074A (zh) * | 2017-08-31 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种缓存方法、装置及电子设备 |
CN108256643A (zh) * | 2016-12-29 | 2018-07-06 | 上海寒武纪信息科技有限公司 | 一种基于hmc的神经网络运算装置和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899158A (zh) * | 2014-03-05 | 2015-09-09 | 华为技术有限公司 | 访存优化方法和装置 |
CN107766079B (zh) * | 2016-08-19 | 2022-03-11 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
CN108628638B (zh) * | 2017-03-16 | 2021-02-09 | 华为技术有限公司 | 数据处理方法及装置 |
CN109683959B (zh) * | 2018-12-24 | 2020-12-01 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
-
2018
- 2018-12-24 CN CN201811581357.8A patent/CN109683959B/zh active Active
-
2019
- 2019-12-19 WO PCT/CN2019/126551 patent/WO2020135208A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0429733A2 (en) * | 1989-11-17 | 1991-06-05 | Texas Instruments Incorporated | Multiprocessor with crossbar between processors and memories |
CN104813278A (zh) * | 2012-12-27 | 2015-07-29 | 英特尔公司 | 对二进制转换的自修改代码以及交叉修改代码的处理 |
CN103810117A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
CN107305486A (zh) * | 2016-04-19 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种神经网络maxout层计算装置 |
CN108256643A (zh) * | 2016-12-29 | 2018-07-06 | 上海寒武纪信息科技有限公司 | 一种基于hmc的神经网络运算装置和方法 |
CN107480074A (zh) * | 2017-08-31 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种缓存方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
姜旭锋: "SmartSimular:基于虚拟指令集的嵌入式系统模拟器", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020135208A1 (zh) * | 2018-12-24 | 2020-07-02 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2020135208A1 (zh) | 2020-07-02 |
CN109683959B (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fang et al. | swdnn: A library for accelerating deep learning applications on sunway taihulight | |
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
CN105453041B (zh) | 用于高速缓存占据确定和指令调度的方法和装置 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
CN109478139A (zh) | 用于共享存储器中的访问同步的装置、方法和系统 | |
CN104838357B (zh) | 向量化方法、系统及处理器 | |
CN107003837A (zh) | 用于推测性编译器优化的轻量级受限事务存储器 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN109791488A (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN109791487A (zh) | 用于将多个数据元素加载到除紧缩数据寄存器之外的目的地存储位置的处理器、方法、系统和指令 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
US20240330402A1 (en) | Machine learning architecture support for block sparsity | |
CN102708009B (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
WO2017185393A1 (zh) | 一种用于执行向量内积运算的装置和方法 | |
US20090113192A1 (en) | Design structure for improving efficiency of short loop instruction fetch | |
CN107918546A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN107766079A (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN104919432A (zh) | 用于将多个位向左移并将多个1拉入较低有效位的指令 | |
CN108885551A (zh) | 存储器复制指令、处理器、方法和系统 | |
CN107257955A (zh) | 快速向量动态存储器冲突检测 | |
CN107810486A (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
CN112559037B (zh) | 一种指令执行方法、单元、装置及系统 | |
CN109683959A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |