CN117193858B - 一种存/取指令接收和发送方法及装置、设备及存储介质 - Google Patents

一种存/取指令接收和发送方法及装置、设备及存储介质 Download PDF

Info

Publication number
CN117193858B
CN117193858B CN202311466282.XA CN202311466282A CN117193858B CN 117193858 B CN117193858 B CN 117193858B CN 202311466282 A CN202311466282 A CN 202311466282A CN 117193858 B CN117193858 B CN 117193858B
Authority
CN
China
Prior art keywords
instruction
data buffer
store
load
storage data
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.)
Active
Application number
CN202311466282.XA
Other languages
English (en)
Other versions
CN117193858A (zh
Inventor
胡振波
彭剑英
梁智兵
龚志豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Original Assignee
Shin Lai Zhirong Semiconductor Technology Shanghai 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 Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd filed Critical Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Priority to CN202311466282.XA priority Critical patent/CN117193858B/zh
Publication of CN117193858A publication Critical patent/CN117193858A/zh
Application granted granted Critical
Publication of CN117193858B publication Critical patent/CN117193858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供一种存/取指令接收和发送方法及装置、设备及存储介质,所述方法包括:确定预设存储数据缓冲器中指令的存储状态;接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,能够对有RAW的load指令和store指令保序,有device属性的访存指令保序,以及load指令间的保序以及store指令间的保序。

Description

一种存/取指令接收和发送方法及装置、设备及存储介质
技术领域
本公开涉及半导体技术领域,尤其涉及一种存/取指令接收和发送方法及装置、设备及存储介质。
背景技术
相关技术中,load/store指令(存/取指令)通常通过以下两种方式进行接收和发送,第一种是严格按序发起访存操作,将访存指令按照顺序发送给fifo(first in firstout先入先出),fifo按照指令提交的先后顺序发送数据,前一条访存指令没有完成前,不会发送下一条访存指令,即严格按照load/store的顺序来访存;另一种就是load指令采用speculative load(预取)的方式,store指令 严格保序的发送,为了解决RAW(read afterwrite,read的地址和write的地址是同一个)问题,将这部分不可提前发送出去的load指令,仍然严格按照访存指令顺序执行。
然而,第一种只适合流水线级数较少的处理器中,在流水线级数较多的处理器中,会严重影响处理器的性能。第二种方式,对于有RAW的指令流,性能仍然比较低,且没有解决访存是device区域的问题,有RAW的指令流,因为load指令和store指令有地址相关性,所以必须严格保证其顺序来发送,这个时候实际和第一种技术差别不大了,只有等到现有的访存指令都完成了,才可能再次开始speculative load的发送,这段时间内性能太差了,要么是要求软件写程序的时候,不能有RAW的指令流,要求太高了,因为经常需要取一个数据来进行计算,这样两条指令就会有RAW关系了,要么就是性能变差,另外有device属性的load/store指令,一般都有特殊要求,比如有读清0的寄存器或者写1清0的寄存器,或者有写寄存器读后,会重置这个外设。所以有device属性的load store指令也必须严格保序,这个问题无法解决,会导致对device属性的误操作。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种存/取指令接收和发送方法及装置、设备及存储介质。
第一方面,本公开的实施例提供了一种存/取指令接收和发送方法,包括:
确定预设存储数据缓冲器中指令的存储状态;
接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游。
在一种可能的实施方式中,所述存储状态包括预设存储数据缓冲器中不存在指令、预设存储数据缓冲器中存在具备device属性的指令、在预设存储数据缓冲器中仅存在第一load指令、在预设存储数据缓冲器中存在第一load指令和第一store指令、在预设存储数据缓冲器中仅存在第一store指令中的至少一种。
在一种可能的实施方式中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在存储状态为预设存储数据缓冲器中不存在指令的情况下,将来自处理器的第一load指令直接发送至下游,并将来自处理器的第一store指令、具备device属性的指令存储至预设存储数据缓冲器;在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游。
在一种可能的实施方式中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中仅存在第一load指令或者存在第一load指令和第一store指令的情况下,将来自处理器的第一store指令和第一load指令以及具备device属性的指令均存储至预设存储数据缓冲器;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将预设存储数据缓冲器存储的第一load指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游。
在一种可能的实施方式中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中仅存在第一store指令的情况下,将来自处理器的与缓冲器中第一store指令不相关的第一load指令直接发送至下游,并将来自处理器的第一store指令、与缓冲器中第一store指令相关的第一load指令以及具备device属性的指令存储至预设存储数据缓冲器;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将第一load指令按照其输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游。
在一种可能的实施方式中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中存在具备device属性的指令的情况下,将来自处理器的具备device属性的指令存储至预设存储数据缓冲器;对于来自处理器的第一store指令和第一load指令,在预设存储数据缓冲器中具备device属性的指令全部发送至下游之后,按照预设存储数据缓冲器中不存在指令的情况,执行接收来自处理器的具备device属性的指令以及不具备device属性的store指令和load指令的步骤;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将第一load指令按照其输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游。
在一种可能的实施方式中,在所述将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游之前,所述方法还包括:
分别确定预设存储数据缓冲器存储的第一store指令以及具备device属性的指令是否具备flush属性和fake属性中的至少一种属性;
在预设存储数据缓冲器存储的第一store指令或者具备device属性的指令具备flush属性和fake属性中的至少一种属性的情况下,停止执行指令。
在一种可能的实施方式中,所述预设存储数据缓冲器包括多个指令接收口,所述方法还包括:
在预设存储数据缓冲器的空闲深度小于指令接收口的数量的情况下,控制指令接收口停止接收指令的输入。
在一种可能的实施方式中,所述方法还包括:
按照预设优先级,对预设存储数据缓冲器的多个指令接收口进行优先级从高到低排序,得到多个指令接收口的顺序;
对于从多个指令接收口同时输入的多个第一store指令,按照多个指令接收口的顺序,对所述多个第一store指令进行排序,对排序后的每个第一store指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
对于从多个指令接收口同时输入的多个第一load指令,按照多个指令接收口的顺序,对所述多个第一load指令进行排序;在排序后的至少两个第一load指令均与预设存储数据缓冲器中的第一store指令不相关的情况下,若下游仅有一个接收口,则将第一个第一load指令直接发送至下游,其余第一load指令按照顺序输入至预设存储数据缓冲器中;在排序后所有第一load指令与预设存储数据缓冲器中的第一store指令均不相关的情况下,若下游有多个接收口,则按照排序后第一load指令的顺序,将第一load指令全部直接发送至下游;在其他情况下,对排序后的每个第一load指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
对于从多个指令接收口同时输入的多个第一store指令和第一load指令,按照多个指令接收口的顺序,对所述多个第一store指令和第一load指令进行排序,对排序后的每个第一store指令和第一load指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
在从多个指令接收口同时输入的指令中包括具备device属性的指令的情况下,按照多个指令接收口的顺序,对指令进行排序,在排序后指令中,具备device属性的指令输入预设存储数据缓冲器之后,将其后面相邻的具备device属性的指令输入预设存储数据缓冲器,其余的每个指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤。
第二方面,本公开的实施例提供了一种存/取指令接收和发送装置,包括:
第一确定模块,用于确定预设存储数据缓冲器中指令的存储状态;
第二确定模块,用于接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游。第三方面,本公开的实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述的存/取指令接收和发送方法。
第四方面,本公开的实施例提供了一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述的存/取指令接收和发送方法。
本公开实施例提供的上述技术方案与现有技术相比至少具有如下优点的部分或全部:
本公开实施例所述的存/取指令接收和发送方法,确定预设存储数据缓冲器中指令的存储状态;接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,能够对有RAW的load指令和store指令保序,有device属性的访存指令保序,以及load指令间的保序以及store指令间的保序。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了根据本公开实施例的存/取指令接收和发送方法流程示意图;
图2示意性示出了根据本公开实施例的存/取指令接收和发送装置的结构框图;
图3示意性示出了根据本公开实施例的存/取指令接收和发送系统的结构框图;以及
图4示意性示出了根据本公开实施例的电子设备的结构框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
参见图1,本公开的实施例提供了一种存/取指令接收和发送方法,包括:
S1,确定预设存储数据缓冲器中指令的存储状态。
在本实施例中,所述存储状态包括预设存储数据缓冲器中不存在指令、预设存储数据缓冲器中存在具备device属性的指令、在预设存储数据缓冲器中仅存在第一load指令、在预设存储数据缓冲器中存在第一load指令和第一store指令、在预设存储数据缓冲器中仅存在第一store指令中的至少一种。
S2,接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将load指令和store指令发送至下游。
在本实施例,步骤S2中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在存储状态为预设存储数据缓冲器中不存在指令的情况下,将来自处理器的第一load指令直接发送至下游,并将来自处理器的第一store指令、具备device属性的指令存储至预设存储数据缓冲器;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照store指令和load指令输入至预设存储数据缓冲器的顺序发送至下游。
在本实施例中,具备device属性的store指令以及第一store指令需要满足的预设条件是其对应的写入地址和写入数据已备好且接收到commit属性,具备device属性的load指令需要满足的预设条件是其对应的读取地址已备好且接收到commit属性,其中,具备device属性的指令包括具备device属性的store指令和具备device属性的load指令。
在本实施例中,由于device属性的特殊性,将具备device属性的load/store指令输入至预设存储数据缓冲器,能够避免造成了一些误操作。
在一些实施例中,将第一load指令直接发送至下游是通过预设存储数据缓冲器外部的bypass旁路实现的。
在一些实施例中,预设存储数据缓冲器中的第一load指令一旦与第一store指令解除了相关性就可以发送出去,且load指令也严格保序,也就是先入先出。也就是说必须先保证输出的load指令是最早输入的那一条,然后看其是否解除了相关性,如果解除了,才能发送出去。这样避免了后进入的第一load指令先解除了相关性后,先发送出去了,返回的时候给错了指令,比如,先load a地址,再load b地址,因为上述原因,load a 返回了b结果。
在一些实施例中,预设存储数据缓冲器输出的时候,如果可以同时发送第一load指令和第一store指令,先发送第一load指令,尽快将预设存储数据缓冲器中的第一load指令发送出去,这样第一load指令就不会占用预设存储数据缓冲器的深度,将第一load指令尽量都变成speculative load指令通过bypass发送出去。
在一些实施例中,如果预设存储数据缓冲器的下游没有准备好,也就是没有ready指令的时候,预设存储数据缓冲器不会发送指令出去。
在本实施例,步骤S2中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中仅存在load指令或者存在第一load指令和第一store指令的情况下,将来自处理器的第一store指令和第一load指令以及具备device属性的指令均存储至预设存储数据缓冲器;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将预设存储数据缓冲器存储的第一load指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游。
在本实施例,步骤S2中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中仅存在store指令的情况下,将来自处理器的与缓冲器中第一store指令不相关的第一load指令直接发送至下游,并将来自处理器的第一store指令、与缓冲器中第一store指令相关的第一load指令以及具备device属性的指令存储至预设存储数据缓冲器;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性之后,将第一load指令按照其输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游。
在本实施例中,第一load指令与第一store指令的访存地址相同的情况下,认定第一load指令与第一store指令之间具备相关性,在预设存储数据缓冲器存储的与第一load指令具备相关性的第一store指令发送至下游之后,认定第一load指令与第一store指令解除相关性。
在一些实施例中,一个第一load指令与预设存储数据缓冲器中的两条第一store指令相关,认定该第一load指令与其距离最近的第一store指令相关。
在本实施例,步骤S2中,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中存在具备device属性的指令的情况下,将来自处理器的具备device属性的指令存储至预设存储数据缓冲器;对于来自处理器的第一store指令和第一load指令,在预设存储数据缓冲器中具备device属性的指令全部发送至下游之后,按照预设存储数据缓冲器中不存在指令的情况,执行接收来自处理器的具备device属性的指令以及不具备device属性的store指令和load指令的步骤;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将第一load指令按照其输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游。
在本实施例中,在所述将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游之前,所述方法还包括:
分别确定预设存储数据缓冲器存储的第一store指令以及具备device属性的指令是否具备flush属性和fake属性中的至少一种属性;
在预设存储数据缓冲器存储的第一store指令或者具备device属性的指令具备flush属性和fake属性中的至少一种属性的情况下,停止执行指令。
在本实施例中,所述预设存储数据缓冲器包括多个指令接收口,所述方法还包括:
在预设存储数据缓冲器的空闲深度小于指令接收口的数量的情况下,控制指令接收口停止接收指令的输入。
在一些实施例中,预设存储数据缓冲器的指令接收口为n个,在预设存储数据缓冲器的深度只剩下n-1的时候,不再接收上游的输入,以避免溢出导致指令丢失。
在本实施例中,所述方法还包括:
按照预设优先级,对预设存储数据缓冲器的多个指令接收口进行优先级从高到低排序,得到多个指令接收口的顺序;
对于从多个指令接收口同时输入的多个第一store指令,按照多个指令接收口的顺序,对所述多个第一store指令进行排序,对排序后的每个第一store指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
对于从多个指令接收口同时输入的多个第一load指令,按照多个指令接收口的顺序,对所述多个第一load指令进行排序,在排序后第一load指令中第一个第一load指令与预设存储数据缓冲器中的第一store指令不相关的情况下,若下游仅有一个接收口,则将第一个第一load指令直接发送至下游,其余第一load指令按照顺序输入至预设存储数据缓冲器中;在排序后所有第一load指令与预设存储数据缓冲器中的第一store指令均不相关的情况下,若下游有多个接收口,则按照排序后第一load指令的顺序,将第一load指令全部直接发送至下游;在其他情况下,对排序后的每个第一load指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;对于从多个指令接收口同时输入的多个第一store指令和第一load指令,按照多个指令接收口的顺序,对所述多个第一store指令和第一load指令进行排序,对排序后的每个第一store指令和第一load指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
在从多个指令接收口同时输入的指令中包括具备device属性的指令的情况下,按照多个指令接收口的顺序,对指令进行排序,在排序后指令中,具备device属性的指令输入预设存储数据缓冲器之后,将其后面相邻的具备device属性的指令输入预设存储数据缓冲器,其余的每个指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤。
对于从多个指令接收口同时输入的多个第一store指令和第一load指令,以及在从多个指令接收口同时输入的指令中包括具备device属性的指令的两种情况,在排序后的指令中,若存在至少两个最先发出的相邻的第一load指令均与预设存储数据缓冲器中的第一store指令不相关的情况,将相邻的第一load指令中的第一个load指令直接发送至下游,其余load指令按照顺序输入至预设存储数据缓冲器中。
在一些实施例中,预设存储数据缓冲器有2个指令接收口,并设置两个指令接收口的优先级,在两个指令接收口同时接收多个指令且多个指令相互之间有相关性时,优先判断优先级高的指令接收口:对于两个指令接收口都是第一load指令的情况,预设存储数据缓冲器内部是空的话,优先级高的指令接收口的第一load指令可以bypass发出去,优先级低的第一load指令先进入预设存储数据缓冲器,然后再根据预设存储数据缓冲器的存储状态确定优先级低的第一load指令的发送方式;两个指令接收口同时接收到第一load指令,如果预设存储数据缓冲器中有第一store指令,没有第一load指令,在高优先级第一load指令和缓冲器中的第一store指令有相关性的情况下,高优先级第一load指令必须进入缓冲器,因为缓冲器里面有load了,所以低优先级第一load指令也必须进入缓冲器,load指令之间也保序了;在低优先级第一load指令和缓冲器中的第一store指令有相关性的情况下,高优先级第一load指令bypass,低优先级第一load指令进入缓冲器;对于高优先级第一load指令、低优先级第一store指令的情况,优先级高的指令接收口的第一load指令可以bypass发出去,优先级低的第一store指令进入预设存储数据缓冲器,然后再根据预设存储数据缓冲器的存储状态确定优先级低的store指令的发送方式;对于高优先级第一store指令、低优先级第一load指令的情况,优先级高的指令接收口的第一store指令需要进入预设存储数据缓冲器,低优先级的第一load指令如果和这个第一store指令有相关性,就必须进入预设存储数据缓冲器,如果没有相关性也是可以bypass出去的,然后第一store指令再根据预设存储数据缓冲器的存储状态确定优先级低的第一load指令的发送方式。
本公开的方法能够完成保序的功能,对于speculative load指令可以bypass发送出去,且预设存储数据缓冲器可以接收多发射,也可以多发送,另外,预设存储数据缓冲器会将解除了相关性的load指令直接发送出去,分别将load指令和store指令保序,不需要在指令发送和接收做乱序的复杂处理,并在分别保证了load指令、store指令的顺序(load指令之间严格保序,store指令之间严格保序)的前提下,让load指令在不违反相关性的条件下,尽快将specutive load发送出去。
本公开的预设存储数据缓冲器具有其他的处理load指令和store指令的属性功能,解决load指令和store指令的属性的特殊性问题。
参见图2,本公开的实施例提供了一种存/取指令接收和发送装置,包括:
第一确定模块11,用于确定预设存储数据缓冲器中指令的存储状态;
第二确定模块12,用于接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例中,第一确定模块11和第二确定模块12中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。第一确定模块11和第二确定模块12中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一确定模块11和第二确定模块12中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
参见图3,本公开的实施例还提供一种存/取指令接收和发送系统,包括处理器、内存以及处理器与内存之间的存/取指令接收和发送装置,所述存/取指令接收和发送装置包括第一确定模块、第二确定模块、load指令缓存模块、store指令缓存模块和输出模块,其中,处理器与内存之间设置有预存bypass旁路,在预设存储数据缓冲器中没有第一load指令和具备device属性的指令,且来自处理器的第一load指令与预设存储数据缓冲器中指令没有相关性的情况下,来自处理器的第一load指令可以直接通过bypass旁路发送至内存。load指令缓存模块在第一load指令符合条件的情况下选出来准备输出,store指令缓存模块是在第一store指令和具备device属性的指令符合条件的情况下选出来准备输出,store指令进入store指令缓存模块需要符合的条件是最早输入的store指令,具备device属性的store指令以及第一store指令需要符合的条件是其对应的写入地址和写入数据已备好且接收到commit属性,具备device属性的load指令需要符合的条件是其对应的读取地址已备好且接收到commit属性,其中,具备device属性的指令包括具备device属性的store指令和具备device属性的load指令;第一load指令进入load指令缓存模块需要符合的条件是最早输入的load指令,且与store指令已解除相关性。在输出模块,load指令的优先级高于store指令,保证load指令以最快的速度发出去,可以让没有相关性的load指令尽快从预设存储数据缓冲器中发出来。
参见图4,本公开的实施例提供的电子设备,包括处理器1110、通信接口1120、存储器1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信;
存储器1130,用于存放计算机程序;
处理器1110,用于执行存储器1130上所存放的程序时,实现如下所示存/取指令接收和发送方法:
确定预设存储数据缓冲器中指令的存储状态;
接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游。上述的通信总线1140可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1120用于上述电子设备与其他设备之间的通信。
存储器1130可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器1130还可以是至少一个位于远离前述处理器1110的存储装置。
上述的处理器1110可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本公开的实施例还提供了一种存储介质。上述存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的基于原始音频波形的端到端的语音伪装情绪检测方法。
该存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的基于原始音频波形的端到端的语音伪装情绪检测方法。
根据本公开的实施例,存储介质可以是非易失性的存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (11)

1.一种存/取指令接收和发送方法,其特征在于,包括:
确定预设存储数据缓冲器中指令的存储状态;其中,所述存储状态包括预设存储数据缓冲器中不存在指令、预设存储数据缓冲器中存在具备device属性的指令、在预设存储数据缓冲器中仅存在第一load指令、在预设存储数据缓冲器中存在第一load指令和第一store指令、在预设存储数据缓冲器中仅存在第一store指令中的至少一种;
接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游。
2.根据权利要求1所述的方法,其特征在于,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在存储状态为预设存储数据缓冲器中不存在指令的情况下,将来自处理器的第一load指令直接发送至下游,并将来自处理器的第一store指令、具备device属性的指令存储至预设存储数据缓冲器;在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游。
3.根据权利要求1所述的方法,其特征在于,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中仅存在第一load指令或者存在第一load指令和第一store指令的情况下,将来自处理器的第一store指令和第一load指令以及具备device属性的指令均存储至预设存储数据缓冲器;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将预设存储数据缓冲器存储的第一load指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游。
4.根据权利要求1所述的方法,其特征在于,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中仅存在第一store指令的情况下,将来自处理器的与缓冲器中第一store指令不相关的第一load指令直接发送至下游,并将来自处理器的第一store指令、与缓冲器中第一store指令相关的第一load指令以及具备device属性的指令存储至预设存储数据缓冲器;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将第一load指令按照其输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游。
5.根据权利要求1所述的方法,其特征在于,所述根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游,包括:
在预设存储数据缓冲器中存在具备device属性的指令的情况下,将来自处理器的具备device属性的指令存储至预设存储数据缓冲器;对于来自处理器的第一store指令和第一load指令,在预设存储数据缓冲器中具备device属性的指令全部发送至下游之后,按照预设存储数据缓冲器中不存在指令的情况,执行接收来自处理器的具备device属性的指令以及不具备device属性的store指令和load指令的步骤;
在第一store指令以及具备device属性的指令对应的指令数据和commit属性满足预设条件的情况下,将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游;
在预设存储数据缓冲器存储的第一load指令与第一store指令解除相关性的情况下,将第一load指令按照其输入至预设存储数据缓冲器的顺序发送至下游,如果在发送解除相关性的第一load指令时,存在待发送的第一store指令,先将解除相关性的第一load指令优先发送至下游。
6.根据权利要求2至5中任一项所述的方法,其特征在于,在所述将预设存储数据缓冲器存储的第一store指令以及具备device属性的指令,按照指令输入至预设存储数据缓冲器的顺序发送至下游之前,所述方法还包括:
分别确定预设存储数据缓冲器存储的第一store指令以及具备device属性的指令是否具备flush属性和fake属性中的至少一种属性;
在预设存储数据缓冲器存储的第一store指令或者具备device属性的指令具备flush属性和fake属性中的至少一种属性的情况下,停止执行指令。
7.根据权利要求1所述的方法,其特征在于,所述预设存储数据缓冲器包括多个指令接收口,所述方法还包括:
在预设存储数据缓冲器的空闲深度小于指令接收口的数量的情况下,控制指令接收口停止接收指令的输入。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照预设优先级,对预设存储数据缓冲器的多个指令接收口进行优先级从高到低排序,得到多个指令接收口的顺序;
对于从多个指令接收口同时输入的多个第一store指令,按照多个指令接收口的顺序,对所述多个第一store指令进行排序,对排序后的每个第一store指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
对于从多个指令接收口同时输入的多个第一load指令,按照多个指令接收口的顺序,对所述多个第一load指令进行排序;在排序后第一load指令中第一个第一load指令与预设存储数据缓冲器中的第一store指令不相关的情况下,若下游仅有一个接收口,则将第一个第一load指令直接发送至下游,其余第一load指令按照顺序输入至预设存储数据缓冲器中;在排序后所有第一load指令与预设存储数据缓冲器中的第一store指令均不相关的情况下,若下游有多个接收口,则按照排序后第一load指令的顺序,将第一load指令全部直接发送至下游;在其他情况下,对排序后的每个第一load指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
对于从多个指令接收口同时输入的多个第一store指令和第一load指令,按照多个指令接收口的顺序,对所述多个第一store指令和第一load指令进行排序,对排序后的每个第一store指令和第一load指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤;
在从多个指令接收口同时输入的指令中包括具备device属性的指令的情况下,按照多个指令接收口的顺序,对指令进行排序,在排序后指令中,具备device属性的指令输入预设存储数据缓冲器之后,将其后面相邻的具备device属性的指令输入预设存储数据缓冲器,其余的每个指令执行根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游的步骤。
9.一种存/取指令接收和发送装置,其特征在于,包括:
第一确定模块,用于确定预设存储数据缓冲器中指令的存储状态;所述存储状态包括预设存储数据缓冲器中不存在指令、预设存储数据缓冲器中存在具备device属性的指令、在预设存储数据缓冲器中仅存在第一load指令、在预设存储数据缓冲器中存在第一load指令和第一store指令、在预设存储数据缓冲器中仅存在第一store指令中的至少一种;
第二确定模块,用于接收来自处理器的具备device属性的指令以及不具备device属性的load指令和store指令,将不具备device属性的load指令和store指令作为第一load指令和第一store指令,根据所述存储状态确定所接收指令的发送方式,以按照所述发送方式将指令发送至下游。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8中任一项所述的存/取指令接收和发送方法。
11.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任一项所述的存/取指令接收和发送方法。
CN202311466282.XA 2023-11-07 2023-11-07 一种存/取指令接收和发送方法及装置、设备及存储介质 Active CN117193858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311466282.XA CN117193858B (zh) 2023-11-07 2023-11-07 一种存/取指令接收和发送方法及装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311466282.XA CN117193858B (zh) 2023-11-07 2023-11-07 一种存/取指令接收和发送方法及装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117193858A CN117193858A (zh) 2023-12-08
CN117193858B true CN117193858B (zh) 2024-03-15

Family

ID=88998306

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311466282.XA Active CN117193858B (zh) 2023-11-07 2023-11-07 一种存/取指令接收和发送方法及装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117193858B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536473A (zh) * 2017-03-03 2018-09-14 华为技术有限公司 读取数据的方法和装置
CN113900712A (zh) * 2021-10-26 2022-01-07 海光信息技术股份有限公司 指令处理方法、指令处理装置及存储介质
CN115640052A (zh) * 2022-10-24 2023-01-24 金陵科技学院 用于图形处理器中多核多流水线并行执行优化方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901747B2 (en) * 2018-11-30 2021-01-26 Western Digital Technologies, Inc. Unified store buffer
US12019733B2 (en) * 2022-03-11 2024-06-25 Intel Corporation Compartment isolation for load store forwarding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536473A (zh) * 2017-03-03 2018-09-14 华为技术有限公司 读取数据的方法和装置
CN113900712A (zh) * 2021-10-26 2022-01-07 海光信息技术股份有限公司 指令处理方法、指令处理装置及存储介质
CN115640052A (zh) * 2022-10-24 2023-01-24 金陵科技学院 用于图形处理器中多核多流水线并行执行优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种同时多线程指令队列竞争缓解策略;江建慧;刘宇;朱一南;钱剑琤;同济大学学报(自然科学版);第41卷(第012期);1889-1897 *
高性能低功耗FT-XDSP的指令缓存队列;杨惠;孙永节;;小型微型计算机系统(第07期);104-108 *

Also Published As

Publication number Publication date
CN117193858A (zh) 2023-12-08

Similar Documents

Publication Publication Date Title
CN110610236B (zh) 一种用于执行神经网络运算的装置及方法
US8819345B2 (en) Method, apparatus, and computer program product for inter-core communication in multi-core processors
US7162546B2 (en) Reordering unrelated transactions from an ordered interface
CN107066408B (zh) 用于数字信号处理的方法、系统和装置
WO2021097962A1 (zh) 一种异构芯片的任务处理方法、任务处理装置及电子设备
US20080320240A1 (en) Method and arrangements for memory access
US7376762B2 (en) Systems and methods for direct memory access
CN117193858B (zh) 一种存/取指令接收和发送方法及装置、设备及存储介质
US8761188B1 (en) Multi-threaded software-programmable framework for high-performance scalable and modular datapath designs
US7162591B1 (en) Processor memory having a dedicated port
CN116382874A (zh) 基于多线程的任务执行方法、装置、电子设备和存储介质
WO2021037124A1 (zh) 一种任务处理的方法以及任务处理装置
US7240144B2 (en) Arbitration of data transfer requests
US20130151817A1 (en) Method, apparatus, and computer program product for parallel functional units in multicore processors
US11138011B2 (en) Device, data-processing chain and context-switching method
US9292365B2 (en) Prioritising events to which a processor is to respond
JP4314230B2 (ja) 高速シフトタイプバッファ用システム及び方法
CN118151851B (zh) 固态硬盘读取方法、装置、设备及可读存储介质
US7809861B1 (en) System memory map decoder logic
CN115098428B (zh) Spi数据传输方法、装置、电子设备及存储介质
US8060729B1 (en) Software based data flows addressing hardware block based processing requirements
CN118508933A (zh) 一种时序调整电路、延迟路径的确定方法及终端设备
US20050102490A1 (en) Data-driven type information processor and method of controlling execution of data flow program
CN117539801A (zh) 一种远程访问内存的方法、装置及相关设备
EP0803824B1 (en) Data processing system and method therefor

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