CN117063155A - 检测卸载操作中的执行风险 - Google Patents

检测卸载操作中的执行风险 Download PDF

Info

Publication number
CN117063155A
CN117063155A CN202280023226.6A CN202280023226A CN117063155A CN 117063155 A CN117063155 A CN 117063155A CN 202280023226 A CN202280023226 A CN 202280023226A CN 117063155 A CN117063155 A CN 117063155A
Authority
CN
China
Prior art keywords
offload
target device
offload operation
pim
risk
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
CN202280023226.6A
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN117063155A publication Critical patent/CN117063155A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/24Marginal checking or other specified testing methods not covered by G06F11/26, e.g. race tests
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • 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

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

公开了检测卸载操作中的执行风险。将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较。基于第二卸载操作与第一卸载操作的比较,确定第二卸载操作是否对卸载目标设备造成执行风险。如果检测到执行风险,则可执行错误处理操作。在一些示例中,这些卸载操作是存内处理操作。

Description

检测卸载操作中的执行风险
背景技术
计算系统通常包括多个处理资源(例如,一个或多个处理器),该多个处理资源可检索并执行指令并且将所执行的指令的结果存储到合适的位置。处理资源(例如,中央处理单元(CPU)或图形处理单元(GPU))可包括多个功能单元,诸如例如算术逻辑单元(ALU)电路、浮点单元(FPU)电路和/或组合逻辑块,该多个功能单元可用于通过对数据执行算术运算来执行指令。例如,功能单元电路可用于对操作数执行算术运算,诸如加法、减法、乘法和/或除法。通常,处理资源(例如,处理器和/或相关联的功能单元电路)可在存储器阵列外部,并且经由处理资源和存储器阵列之间的总线或互连访问数据以执行一组指令。为了减少获取或存储存储器阵列中的数据的访问量,计算系统可采用临时存储最近访问或修改的数据以供处理资源或处理资源群组使用的高速缓存分级结构。然而,可通过将某些操作卸载到基于存储器的设备执行设备来进一步改善处理性能,其中处理资源在存储器内部和/或存储器附近实施,使得更靠近存储数据的存储器位置而不是使数据更靠近处理资源来执行数据处理。基于存储器的执行设备可通过减少外部通信(即,处理器到存储器阵列的通信)来节省时间,并且还可节省功率。
附图说明
图1提出了根据本公开的实施方案的用于检测卸载操作中的执行风险的示例性系统的框图。
图2提出了根据本公开的实施方案的用于检测卸载操作中的执行风险的另一个示例性系统的框图。
图3提出了根据本公开的实施方案的用于检测卸载操作中的执行风险的另一个示例性系统的框图。
图4提出了示出根据本公开的实施方案的用于检测卸载操作中的执行风险的另一个示例性系统的流程图。
图5提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图6提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图7提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图8提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图9提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图10提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图11提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
图12提出了示出根据本公开的实施方案的检测卸载操作中的执行风险的另一个示例性方法的流程图。
具体实施方式
由于计算吞吐量比存储器带宽更快地扩展,因此已提议许多技术来向增长的计算能力保持馈送数据。存内处理(PIM)硬件将计算移动成靠近存储器,利用靠近存储器的逻辑产生与主机可用存储器带宽相比更高的存储器带宽的益处。例如,可能PIM配置包括在每个动态随机存取存储器(DRAM)存储体内添加简单的向量计算元件和本地寄存器。然后,主机处理器可仅通过指定目标地址来发送精细粒度命令(加载到寄存器、从寄存器存储、加法、乘法累加等),以待在存储体本地逻辑中执行。对于不直接访问存储器的操作,仅需要地址的存储体标识符位来指定正在寻址哪个PIM单元。在此类配置中,PIM避免了跨存储器接口传输数据并避免了存储器接口的瓶颈,并且因此能够增加可实现的存储器带宽,并提高不断增长类别的数据受限工作负载的性能。
然而,PIM使软件开发的存储器模型变得复杂,需要了解特定于架构的存储器放置细节,以便开发性能好和功能性的应用。当PIM操作序列以多个地址为目标,同时对存储器本地寄存器中的相同中间值进行操作时(例如,加载+加法[A]->R1,随后是R1->[B]的存储),这些地址必须位于相同的PIM存储器分区中。如果情况不是这样,相关的PIM操作将映射到不同分区中的寄存器,导致程序故障,并且故障的原因可能很难调试。例如,PIM执行单元通常被放置在存储器分级结构中的某个级别处(例如,存储体或信道)。对于在两个地址上操作的PIM执行单元,两个地址都必须落入与PIM执行单元相关联的相同的存储器分级结构分区中(例如,目标操作数的存储器地址必须映射到相同的物理存储器存储体)。当关于地址到物理存储器映射的软件假设与硬件的实际情况不匹配(例如,由于配置错误)或发生寻址错误时,相关的PIM操作可能被错误地发出到错误的存储器存储体,从而导致难以调试的微妙的存储器或PIM寄存器文件损坏。因为这会影响可能存储在存储器中或从存储器中返回的数据的值,所以这给存储器模型带来了新的复杂性,需要了解低级别硬件细节才能正确操作。因此,及早检测这些错误的PIM操作对于确保PIM软件的可编程性和可移植性极其重要。
PIM还在存储器模型中引入了关于racy PIM访问的第二相关的复杂的情况。每当发出将存储体本地寄存器作为源或目标操作数寻址的PIM命令时,所访问的具体寄存器由目标存储器地址的存储体ID位确定(除具体PIM命令的寄存器ID位之外)。为了从不同内核并行地发出多个PIM命令(这可能是利用PIM带宽益处所必需的),如果其针对相同的存储体和寄存器,软件必须避免同时发出独立命令,因为这可能导致中间数据损坏。
检测PIM系统中的地址映射错误与检测常规多线程程序中的非法竞争或存储器错误是不同的问题。由于对存储器硬件映射的依赖,这些类型的PIM错误与架构和映射配置完全交织。这种意识是PIM软件的基本可移植性和可编程性挑战,对于标准共享存储器多线程程序来说不存在,这使得问题比简单地检测线程之间的数据竞争更加困难。例如,如果为一个地址映射写入的程序直接在具有不同数量的PIM模块或不同配置的交织模式的新架构上执行,则其可能会以仅在运行时才能检测到的方式失败。相比之下,共享存储器程序中的数据竞争可以硬件不可知的方式来检测。这使得PIM映射错误的挑战成为更加困难的障碍,并且对于支持调试来说更加重要。
为了解决前述问题,根据本公开的实施方案提供了用于检测以诸如PIM模块的被卸载的执行设备为目标的卸载操作中的潜在映射错误的技术和机制。当来自单个线程的两个PIM操作旨在映射到相同的PIM模块,但是其映射到不同的模块时,会遇到一个示例型映射错误类型。当来自不同线程的两个PIM操作旨在映射到不同的PIM模块,但是其映射到相同的PIM模块时,会遇到另一种示例性映射错误类型。此类映射错误可能导致被卸载的执行设备中的执行风险和不正确的执行。对这些映射错误的检测有助于识别违规指令,使能增加的可编程性,提高对可移植PIM软件的信心,并显著改善调试。
根据本公开的实施方案涉及一种检测卸载操作中的执行风险的方法。该方法包括第二卸载操作与该第二卸载操作之前的第一卸载操作的比较以及基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险。在一些具体实施中,该方法还包括响应于确定该第二卸载操作对该卸载目标设备造成该执行风险而发起错误处理动作。该错误处理动作可包括发送错误消息、创建错误日志条目或触发故障。
在一些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括将与该第二卸载操作相关联的第二卸载目标设备标识符和与该第一卸载操作相关联的第一卸载目标设备标识符进行比较。在这些具体实施中,基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险包括:当该第一卸载目标设备标识符和该第二卸载目标设备标识符不一致时检测到该执行风险。
在一些具体实施中,该方法还可包括响应于该第一卸载操作开始相关的卸载操作序列的指示而存储该第一卸载目标设备标识符。在这些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括基于该第二卸载操作的该序列标签来识别该第二卸载操作的序列标签并且识别该第一卸载目标设备标识符。
在一些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括将与该第二卸载操作相关联的第二线程标识符和与该第一卸载操作相关联的第一线程标识符进行比较。在这些具体实施中,基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险包括:当该第一线程标识符和该第二线程标识符不一致时,检测到该卸载目标设备中的该执行风险。在一些具体实施中,该方法还包括识别在卸载目标设备上启用竞争检测。在这些具体实施中,识别在该卸载目标设备上启用竞争检测可包括存储第一卸载操作的该第一线程标识符,其中该第一卸载操作与竞争检测标识符相关联。
在一些具体实施中,该方法还包括识别具有该第一卸载目标设备标识符的顺序卸载指令的模式。在一些示例中,第二卸载操作和第一卸载操作是PIM操作。在这些示例中,第一卸载目标设备和第二卸载目标设备是PIM模块。在一些具体实施中,在运行时执行第二卸载操作与该第二卸载操作之前的第一卸载操作的比较以及基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险。
根据本公开的另一个实施方案涉及一种用于检测卸载操作中的执行风险的装置。该装置包括逻辑电路,该逻辑电路被配置为将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较以及基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险。在一些具体实施中,该逻辑还被配置为响应于确定该第二卸载操作对该卸载目标设备造成该执行风险而发起错误处理动作。该错误处理动作可包括发送错误消息、创建错误日志条目或触发故障。
在一些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括将与该第二卸载操作相关联的第二卸载目标设备标识符和与该第一卸载操作相关联的第一卸载目标设备标识符进行比较。在这些具体实施中,基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险包括:当该第一卸载目标设备标识符和该第二卸载目标设备标识符不一致时检测到该执行风险。
在一些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括将与该第二卸载操作相关联的第二线程标识符和与该第一卸载操作相关联的第一线程标识符进行比较。在这些具体实施中,基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险包括:当该第一线程标识符和该第二线程标识符不一致时,检测到该卸载目标设备中的该执行风险。
根据本公开的另一个实施方案涉及一种用于检测卸载操作中的执行风险的系统,该系统包括两个或更多个处理器内核、两个或更多个存内处理(PIM)模块、以及逻辑电路,该逻辑电路被配置为将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较以及基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险。在一些具体实施中,该逻辑还被配置为响应于确定该第二卸载操作对该卸载目标设备造成该执行风险而发起错误处理动作。该错误处理动作可包括发送错误消息、创建错误日志条目或触发故障。
在一些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括将与该第二卸载操作相关联的第二卸载目标设备标识符和与该第一卸载操作相关联的第一卸载目标设备标识符进行比较。在这些具体实施中,基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险包括:当该第一卸载目标设备标识符和该第二卸载目标设备标识符不一致时检测到该执行风险。
在一些具体实施中,将第二卸载操作与该第二卸载操作之前的第一卸载操作进行比较包括将与该第二卸载操作相关联的第二线程标识符和与该第一卸载操作相关联的第一线程标识符进行比较。在这些具体实施中,基于该第二卸载操作与该第一卸载操作的该比较来确定该第二卸载操作是否对卸载目标设备造成执行风险包括:当该第一线程标识符和该第二线程标识符不一致时,检测到该卸载目标设备中的该执行风险。
将从图1开始更详细地描述根据本公开的实施方案。贯穿本说明书和附图,相同的附图标记指代相同的元件。图1示出了根据本公开的用于检测卸载操作中的执行风险的示例性系统100的框图。图1的示例性系统100包括两个或更多个处理器内核102、104。在各种示例中,处理器内核102、104是主机设备130的CPU内核或GPU内核,该主机设备被配置为托管单线程应用或多线程应用。例如,主机设备130可托管多线程应用,使得相应处理器内核102、104执行多线程应用的相应线程。处理器内核102、104实现指令集架构,该指令集架构包括用于将操作卸载到卸载目标设备的卸载指令。当例如与卸载指令相关联的存储器地址被解析、处理器寄存器中的操作数值可用、以及存储器检查已经完成时,卸载指令由处理器内核102、104完成。卸载指令中指示的操作(例如,加载、存储、加法、乘法)不在处理器内核上执行,并且相反被卸载以在卸载目标设备上执行。一旦卸载指令完成,处理器内核102、104生成并发出卸载请求或命令,该卸载请求或命令包括卸载操作、操作数值和存储器地址以及其他元数据。以此方式,通过卸载在处理器内核102、104外部或远离这些处理器内核的设备上执行的操作,减轻了处理器内核102、104上的工作负载。
例如,卸载操作可为存内处理(PIM)操作,其指导PIM模块对存储在支持PIM的存储器设备中的数据执行操作。在此类示例中,卸载指令的运算符可包括加载运算符、存储运算符和算术运算符,并且卸载指令的操作数可包括PIM寄存器(即PIM模块本地的寄存器)、存储器地址和来自内核寄存器的值或其他内核计算的值。
系统100还包括由处理器内核102、104共享的至少一个存储器控制器106,用于访问存储器设备108。虽然图1的示例描绘了单个存储器控制器106,但是系统100可包括多个存储器控制器,每个存储器控制器对应于存储器设备108中的存储器信道。在一些示例中,存储器控制器106还被处理器内核102、104用于卸载由卸载目标设备执行的操作。在这些示例中,响应于由处理器内核102、104生成的卸载请求,存储器控制器106生成用于卸载操作的卸载命令,该卸载命令指导卸载目标设备执行卸载操作。
在一些示例中,存储器控制器106和包括处理器内核102、104的主机设备130在同一芯片上实现(例如,在片上系统(SoC)架构中)。在一些示例中,存储器设备、存储器控制器106和包括处理器内核102、104的主机设备130在同一芯片上实现(例如,在片上系统(SoC)架构中)。在一些示例中,存储器设备、存储器控制器106和包括处理器内核102、104的主机设备130在同一封装中实现(例如,在系统级封装(SiP)架构中)。
在图1的示例性系统100中,存储器设备108是支持PIM的存储器设备,该支持PIM的存储器设备包括两个或更多个PIM模块110、112,该两个或更多个PIM模块是示例性卸载目标设备,因为PIM模块110、112被配置为执行从主机设备130卸载的操作。主机设备130和PIM模块110、112共享对由在主机设备130上执行的应用产生和消耗的相同数据的访问。例如,该数据可为存储在PIM模块110、112分别耦合到的存储器设备108的存储器阵列120、122中的数据。PIM模块110、112的特征在于相对于主机设备130更快地访问数据。在一些示例中,PIM模块110、112在处理器内核102、104的指导下运行,以执行存储器密集型任务。存储器阵列120、122可为存储体的存储器单元数组、存储体数组或其他存储器分级结构分区。这里出于解释的目的,假设每个PIM模块110、112耦合到相应的存储体(即,以存储器阵列120、122的形式)。本领域技术人员将会理解,在不脱离本公开的精神的情况下,可采用支持PIM的存储器设备中的PIM模块和存储器分区(物理的或逻辑的)的各种配置。
在图1的示例中,PIM模块110、112包括用于解码从处理器内核102、104发出的指令或命令的控制逻辑114,执行指令或命令中指示的卸载操作(即,PIM操作)的算术逻辑单元(ALU)116,以及用于保存从存储器阵列120、122读取或向其写入的数据的寄存器文件118。在一些示例中,ALU 116能够执行相对于处理器内核102、104的ALU的有限的一组操作,从而使得ALU 116实现起来不太复杂,并且更适合于存储器内嵌应用。PIM操作可将数据移入或移出PIM临时存储装置(例如,PIM寄存器文件118)和/或存储器阵列120、122,并且其还可触发ALU 116中对该数据的近存储器计算。每个PIM操作都携带目标地址,该目标地址用于将其引导到适当的PIM模块,以及待执行的操作,该操作可另外指定PIM临时存储装置(例如,寄存器文件118)中的位置。每个PIM模块110、112可在物理地址空间的不同子集上操作。当PIM操作到达PIM模块110、112时,其与其他PIM操作和对存储器阵列120、122的存储器访问进行序列化。
在图1的示例性系统100中,来自在处理器内核上执行的单个线程的两个PIM操作可能旨在映射到相同的PIM模块,但是由于存储器地址和存储器存储体或模块之间的映射中的错误或误解而映射到不同的PIM模块。例如,对于不同的架构,映射函数可能会发生变化,从而在移植代码时导致错误。此外,映射功能可被动态地编程以针对不同工作负载优化数据交织策略。此类错误很难发现和调试。为了简化新PIM软件的编程、测试和调试过程,识别此类发散的PIM操作是有益的。
为了便于支持PIM的软件的编程、测试和调试,图1的系统100还包括发散检测设备150。发散检测设备150从相关联的PIM操作的目标地址位中提取PIM模块标识符。如将在下文解释,比较PIM操作集中的提取的PIM模块标识符,以检测PIM操作集中的发散,其中特定PIM操作以不同于PIM操作集中的其他PIM模块的PIM模块为目标。也就是说,发散检测设备150包括逻辑电路,该逻辑电路被配置为将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较以及基于第二卸载操作与第一卸载操作的比较来确定第二卸载操作是否对卸载目标设备造成执行风险。具体地,发散检测设备150包括逻辑电路,该逻辑电路用于将与第二卸载操作相关联的第二卸载目标设备标识符和与第一卸载操作相关联的第一卸载目标设备标识符进行比较,并且当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到执行风险。
在一些实施方案中,发散检测装置150识别何时执行比较。在一个示例中,发散检测设备150识别应该对其进行比较的卸载操作(例如,PIM操作)序列的编程声明。在另一个示例中,由处理器内核102、104处理的卸载指令(例如,PIM指令)中的一个或多个位用于指示后续PIM指令必须映射到相同的卸载目标设备(例如,PIM模块110、112)。在另一个示例中,卸载指令中的一个或多个位用于指示该指令必须映射到与先前卸载指令相同的卸载目标设备。在另一个示例中,单独的专用卸载指令(例如,PIM指令)用于指示后续/先前的卸载指令必须映射到相同的卸载目标设备(例如,PIM模块110、112)。在另一个示例中,对卸载指令(例如,PIM指令)中识别的保留目标地址的访问用于指示后续/先前的卸载指令必须映射到相同的卸载目标设备(例如,PIM模块110、112)。在一些具体实施中,硬件基于模式检测来推断何时执行比较,而无需来自软件的明确指导。
为了进一步解释,考虑由PIM指令实现的示例向量加法内核:
for i=0:N:
PIM_Ld(a[i]->pimR1)
PIM_Add(pimR1+=b[i])
PIM_St(pimR1->c[i])
在上述示例中,数组a[]的元素从存储器读入PIM寄存器文件(例如,PIM寄存器文件118)中的PIM寄存器pimR1(即,PIM_Ld(a[i]->pimR1))。然后将pimR1的内容添加到存储器中数组b[]的元素中,并且将结果存储在pimR1中(即PIM_Add(pimR1+=b[i]))。pimR1的内容然后存储在数组c[]的元素中(即PIM_St(pimR1->c[i]))。然而,如果数组a[],b[],和c[]尚未正确对齐(或如果地址偏移尚未正确计算),a[i],b[i]和c[i]可能都映射到不同的PIM模块,使得垃圾值被写入c[],导致稍后读取c[]时出现未定义的、可能不确定的行为。
在一些实施方案中,指令集架构(ISA)中的语义被提供来指示一系列相关的PIM指令被映射到相同的PIM模块。例如,提供特殊指令来指示PIM指令序列的开始和结束,该PIM指令序列应该被映射到相同的PIM模块(即,从PIM指令生成的卸载请求/命令应该以相同的PIM模块为目标)。序列开始指令和序列结束指令可为独立式指令或常规的PIM指令的修改。为了示出该特征,考虑根据本公开的实施方案用序列开始/结束语义(以粗体示出)修改的上述代码内核的示例:
需注意,PIM_Ld_begin_seq是序列开始指令,其包括PIM_Ld指令的修改。在这种情况下,PIM_Ld_begin_seq指示该指令和随后的指令是应映射到相同的PIM模块的相同的PIM指令序列的一部分。PIM_end_seq()指令是结束序列指令,指示后续指令不需要映射到与序列开始指令相关联的相同的PIM模块。在一些示例中,序列结束指令不是必需的,并且当新的序列开始时序列结束。
在一些具体实施中,当在处理器内核102、104上执行的线程中识别出PIM序列开始指令时,设置标志以从相关联的PIM操作的目标地址位中提取目标PIM模块ID。在这些具体实施中,该标志行进穿过加载/存储流水线,直到PIM指令发生虚拟到物理地址的转换。在一些示例中,然后基于架构地址映射信息计算目标PIM模块ID。在其他示例中,目标PIM模块ID由页面偏移位确定,并且因此可在没有虚拟到物理转换的情况下计算。如果用于识别目标PIM模块ID的位中的仅一些位包括在页面偏移位中,则最好仅比较这些位,以避免执行虚拟-物理转换(以一些准确性为代价)。在发散检测设备150中,提取与序列开始指令相关联的目标PIM模块ID,并将其作为活动PIM模块ID存储在线程本地寄存器中(替换先前的内容)。然后将后续指令的目标PIM模块ID与活动PIM模块ID进行比较。例如,当后续PIM指令被解码时,其设置标志,该标志指示PIM索引检查是必要的。对于这些操作,类似地计算目标PIM模块ID,并和与当前线程相关联的活动PIM模块ID的值进行比较。如果存在不匹配,这指示在执行PIM操作时PIM模块上的可能的执行风险。当检测到此类执行风险时,可启动错误处理操作。例如,发散检测设备150可生成中断或页面错误,记录用于调试的警告信息,强制故障,或其他类似的错误处理操作。
在一些示例中,单个线程可交织多个指令,用于将PIM操作卸载到多个PIM模块110、112。该交织可提高存储器并行性,并有助于隐藏PIM操作的延迟。为了允许编译器实现该优化,同时仍然检测序列中的PIM映射错误和发散的PIM操作,提供了一种附加的检测机制。在此类示例中,附加的语义/句法表达式可包括在PIM代码中,以指示PIM指令是特定序列的一部分。例如,每个PIM指令可包括序列标签。该支持可通过允许每个PIM指令指定指示序列标签的位来实现,该序列标签用于关联以相同的PIM模块为目标的操作。为了示出该特征,考虑根据本公开的实施方案用序列开始/结束语义和序列标签语义(以粗体示出)修改的PIM代码的示例:
在上面的示例中,指令可在处理器内核102中执行,其中用seq0标记的指令需要映射到相同的PIM模块(例如,在提取PIM模块ID之后可确定为PIM模块110),而用seq1标记的指令需要映射到相同的PIM模块(例如,在提取PIM模块ID之后可确定为PIM模块112)。
在这些示例中,与PIM加载指令相关联的序列开始指令指示PIM序列的开始,这使得所计算的PIM模块ID作为活动PIM模块被存储到表中。该表存储每线程的多个索引——每个活动序列标签一个-与序列开始操作相关联的序列标签用于索引该表。计算后续PIM指令的目标PIM模块ID,并与表中与该指令相关联的序列标签相匹配的条目进行比较。如果PIM模块ID不匹配,则采取如上文所讨论的错误处理动作。
为了进一步解释,图2是示出发散检测设备150的示例性具体实施的图。在PIM指令被解码之后,发散检测设备150从处理器内核102、104发出的PIM请求中提取PIM指令信息。PIM ID提取单元202从与PIM指令相关联的解析的目标存储器地址(或页面偏移)中提取PIM模块ID。如果已经设置了序列开始标志,则断言写入信号,并且将提取的PIM模块ID写入活动PIM模块ID存储装置204。如果PIM指令具有相关联的序列标签,则为该序列标签创建新的表条目,并将提取的PIM模块ID写入该条目。然后,序列标签用于索引该表,以识别与特定序列相关联的活动PIM模块ID。PIM ID提取单元202还提取不是序列开始或序列结束的每个后续指令的PIM模块ID,并且在活动PIM模块ID存储装置204上断言读取信号。存储的活动PIM模块ID被读取到比较器206中,在该比较器中其与提取的PIM模块ID进行比较。如果PIM指令包括序列标签,则该序列标签用于索引活动PIM模块ID存储装置204中的表,以识别该序列标签的对应活动PIM模块ID。如果在活动PIM模块ID存储装置204中的存储的活动PIM模块ID和提取的PIM模块ID不一致,则可能发生PIM映射错误,这可能造成执行风险。
在一些实施方案中,可利用现有的软件同步语义来代替或除了使用排序语义来修改处理器内核的ISA。例如,PIM架构可能已经利用存储器栅栏或其他同步语义来强制将来自同一线程的对相同的PIM模块的PIM命令分开,以防止其在存储器系统中重排序。在这种情况下,关于旨在映射到相同模块的PIM命令的信息(因为其被栅栏分开)可用于发散的PIM命令检测。因为PIM栅栏将仅在对相同的PIM模块的访问之间使用,所以上述发散检测设备150可被修改为基于每个PIM操作的提取的PIM模块ID,检测栅栏之前的最后一个PIM操作访问的PIM模块何时与栅栏之后的第一PIM操作访问的PIM模块不匹配。在一些示例中,锁存栅栏之前的最近PIM操作(例如,通过将每个PIM操作视为序列开始操作),并且通过将每个栅栏之后的第一PIM操作与该锁存值进行比较:例如,这可通过在栅栏指令上设置位来触发下一个PIM操作的序列检查来实现。
在一些实施方案中,代替或除了修改处理器内核的ISA,可推断出发散的PIM操作。在一些示例中,为以不同于一个或多个上述PIM操作的PIM模块为目标的PIM操作创建错误日志条目。在一些情况下,发散检测设备150推断请求是否应该是到相同的PIM模块,并且仅记录违反所述期望的请求以减少所记录的信息。例如,发散检测设备150可识别阈值数量的连续PIM操作或PIM操作类型的共同模式已经以相同的PIM模块为目标(通过将每个新PIM操作的PIM模块ID与上述PIM操作的PIM模块ID进行比较),并且将不以相同的PIM模块ID为目标的下一个PIM操作记录为可能造成执行风险的潜在发散的PIM操作。在实际发生故障时,可检查该日志中预期已经映射到相同的PIM模块的指令。
回到图1,在示例性系统100中,来自不同线程(例如,在不同的内核102、104上)的两个PIM操作可能旨在映射到不同的PIM模块,但实际上映射到相同的PIM模块。如同PIM操作发散的先前错误情况一样,当不同架构的映射函数改变时,可能产生PIM模块竞争条件的错误情况,从而在移植代码时引起错误。这些错误也很难发现和调试。为了简化新PIM软件的编程、测试和调试过程,识别此类PIM模块竞争条件是有益的。
为了便于支持PIM的软件的编程、测试和调试,图1的系统100还包括竞争检测设备152。竞争检测设备152从卸载的PIM操作的线程索引位或内核索引位中提取线程标识符(线程ID)。如将在下文解释,比较一组PIM操作的提取的线程ID,以检测PIM模块处两个线程之间的竞争条件,其中以PIM模块为目标的特定线程ID不同于一组PIM模块访问中的其他线程ID。与PIM操作发散不同,从多个线程发出的racy PIM操作不能容易地被处理器内核102、104检测到。因此,在一些实施方案中,竞争检测设备152在PIM模块110、112中实现。在其他实施方案中,竞争检测设备152可在共享存储器系统中的其他地方实现(例如,在存储器控制器106中)。例如,存储器控制器在卸载的PIM操作之间进行仲裁,以访问给定的PIM模块110、112。
也就是说,竞争检测设备152包括逻辑电路,该逻辑电路被配置为将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较以及基于第二卸载操作与第一卸载操作的比较来确定第二卸载操作是否对卸载目标设备造成执行风险。具体地,逻辑电路被配置为将与第二卸载操作相关联的第二线程标识符和与第一卸载操作相关联的第一线程标识符进行比较,并且当第一线程标识符和第二线程标识符不一致时,检测卸载目标设备中的执行风险。
为了进一步解释,考虑上述向量加法函数的多线程版本的以下示例:
线程0
for i=0:(N/2):
PIM_Ld(a[i]->pimR1)
PIM_Add(pimR1+=b[i])
PIM_St(pimR1->c[i])
线程1
for i=(N/2+1):N:
PIM_Ld(a[i]->pimR1)
PIM_Add(pimR1+=b[i])
PIM_St(pimR1->c[i])
在该示例中,线程0和线程1并行运行,假设这两个线程访问映射到不同PIM模块的数组分区。然而,如果假设的映射不正确(或在更复杂的代码中,地址计算有错误),则分区映射可能会重叠,使得两个线程同时访问相同的PIM模块的PIM寄存器pimR1,导致c[]中的损坏的数据和无效值。
确定两个冲突的PIM访问是否形成竞争条件错误的一种方法是比较PIM访问的发出线程或内核。在许多情况下,racy操作(即,来自不同主机线程的两个PIM操作在没有任何中间同步的情况下访问相同的PIM模块)不应发生。然而,在一些情况下,可能期望多个线程访问相同的PIM模块。因此,允许软件指定何时不应发生racy PIM访问是有益的。
在一些实施方案中,竞争检测设备152依靠程序员/编译器信号和指示来确定何时不允许两个或更多个线程之间的PIM访问竞争。在这些实施方案中,发出线程索引位、发出内核索引位或这些位的一些子集(本文被称为线程ID)与每个PIM请求一起被发送到存储器设备108。在无竞争间隔期间,特定PIM模块应仅提供PIM访问,以便将PIM操作卸载到一个线程或处理器内核。在一些示例中,全局无竞争开始信号(以及任选地无竞争结束信号)可用于启用或禁用PIM模块110、112的全部或子集的竞争检测。在这些示例中,这些信号是经由访问存储器映射地址来实现的。在一些示例中,经由特殊的存储器访问,在每个PIM模块110、112处单独启用或禁用竞争检测。在一些示例中,经由对目标PIM模块的PIM操作(类似于上文所讨论的“序列开始”操作和“序列结束”操作),在每个PIM模块110、112处单独启用或禁用竞争检测。当第一次启用竞争检测时,从与启用信号相关联的PIM操作中提取线程ID,诸如启用信号之后的第一PIM操作或启用竞争检测的PIM操作。线程ID作为活动线程索引存储在PIM模块的本地寄存器中。后续的PIM操作(本身不表示启用或禁用信号)被检查,以将它们的线程ID与当前活动线程索引进行比较。如果存在不匹配,则检测到非法PIM竞争条件。响应于检测到非法竞争条件,执行错误处理操作。错误处理操作可包括将Nack消息发送回请求处理器内核,引发触发故障的导线,或将错误信息写入主机可查询的日志。为了使不同的线程能够在不同时间点访问PIM模块,必须向PIM模块提供无竞争结束信号或新的无竞争开始信号,这些信号可自动插入同步点。为了使不同的线程能够同时访问PIM模块的不同寄存器,可为PIM操作访问的每个寄存器存储和查找单独的线程ID。
在各种具体实施中,比较诸如PIM模块ID或线程ID的标识符可包括比较PIM模块ID或线程ID中的位的子集,而不是完整的标识符。这样做可降低开销成本,代价是风险检测准确性(假阴性可能更有可能)。出于调试而非代码功能的目的,高精度可能不是必需的,并且这种折衷在许多系统中可能是期望的。
为了进一步解释,图3是示出竞争检测设备152的示例性具体实施的图。在检测到竞争检测信号时,线程ID提取单元302提取与竞争检测信号之后的第一PIM操作或与竞争检测信号同时的PIM操作相关联的线程ID。在活动线程ID存储装置304中断言写入信号,以将提取的线程ID记录为活动线程索引。不是竞争检测开始或竞争检测结束信号/指示符的每个后续PIM操作的线程ID也由PIM ID提取单元202提取,并且在活动线程ID存储装置304上断言读取信号。存储的活动线程索引被读取到比较器306中,在该比较器中其与提取的线程ID进行比较。如果在活动线程ID存储装置304中的存储的活动线程ID和提取的线程ID不一致,则可能发生PIM映射错误,这可能造成执行风险。
在一些实施方案中,竞争检测信号或指示符指示应为PIM模块中的每个PIM寄存器存储活动线程ID,使得允许对相同的PIM模块的racy访问,但不允许对相同PIM寄存器的racy访问。在这些实施方案中,按寄存器而不是按模块跟踪活动线程索引。对于以PIM寄存器为目标的每个PIM操作,将与PIM操作相关联的线程ID与响应于竞争检测信号而被锁存的所述PIM寄存器的活动线程索引进行比较。在此类示例中,活动线程ID存储装置304为PIM模块110、112中的寄存器文件118中的多个寄存器存储活动线程索引。
在一些实施方案中,竞争检测设备152跟踪多个PIM模块110、112的活动线程。例如,竞争检测设备152可在存储器设备108或存储器控制器106中实现,使得竞争检测设备152监测对多个PIM模块110、112的PIM访问。在这些实施方案中,活动线程ID存储装置304包括表,其中每个条目包括PIM模块ID和所述PIM模块的活动线程索引。
在一些实施方案中,当竞争检测被启用时,racy写入被禁止,但是racy读取被允许。这种情况下,仅写入PIM寄存器的PIM操作才会与活动线程索引进行比较。因此,竞争检测设备152将保持对单个活动写入器和racy并发读取器之间的竞争的不可知。
为了进一步解释,图4示出了根据本公开的用于检测卸载操作中的执行风险的示例性系统200的框图。示例性系统200示出了图1中系统100的另选的配置。在示例性系统200中,示出了发散检测设备150的另选的配置,其中发散检测设备150由两个或更多个内核102、104共享。在此类配置中,发散检测设备150跟踪多于一个线程的活动PIM模块ID。因此,发散检测设备150识别与序列中的第一PIM操作相关联的线程ID(例如,内核索引或线程索引),并将线程标识符与活动PIM模块ID一起存储。序列中后续指令的线程标识符也被识别并用于索引对应活动PIM模块ID以进行比较。在使用序列标签的情况下,线程标识符用于索引序列标签和对应活动PIM模块ID。
在示例性系统200中,示出了竞争检测设备152的另选的配置,其中竞争检测设备152在存储器控制器106中实现。在此类配置中,竞争检测设备152必须跟踪多于一个PIM模块的活动线程ID。因此,发散检测设备150识别PIM操作所针对的PIM模块ID,并使用PIM模块ID来索引所述PIM模块的活动线程ID。
为了进一步解释,图5提出了示出根据本公开的检测卸载操作中的执行风险的示例性方法的流程图。图4的示例包括将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502。在一些示例中,将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502包括比较卸载操作的特征,诸如卸载目标设备标识符、发出线程索引、发出内核索引、包括目标存储器地址或寄存器的操作数、和/或编译器符号或声明(例如,指令标签或标志)。在一个示例中,卸载操作是用于在PIM设备上执行的PIM操作,其中从在处理器内核上执行的卸载指令生成对卸载操作的卸载请求,并且其中PIM模块在处理器内核外部的存储器内或附近实现。
图5的方法还包括基于第二卸载操作与第一卸载操作的比较,确定504第二卸载操作是否对卸载目标设备造成执行风险。在一些示例中,基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险包括根据卸载操作的特征的比较来识别卸载指令所针对的卸载设备中的发散。例如,以特定卸载设备为目标的处理器内核中的卸载指令序列可表示显式或隐式模式,使得以不同卸载设备为目标的卸载指令可指示与该模式的发散,该发散指示映射错误或以其他方式导致预期卸载设备或非预期卸载设备中的执行风险。另一个示例中,在卸载设备处从不同线程/内核接收的卸载指令可指示竞争条件,该竞争条件指示映射错误或可能以其他方式导致卸载设备上的执行风险。此类映射错误或执行风险可从即时卸载操作与一个或多个先前卸载操作的特征的比较中检测到,其中特征可包括卸载目标设备标识符、发出线程索引、发出内核索引、包括目标存储器地址或寄存器的操作数、和/或编译器符号或声明(例如,指令标签或标志)。继续上述示例,卸载设备可为在处理器内核外部的存储器内或附近实现的PIM模块,如上文所讨论的。在一些示例中,基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险是在将卸载操作卸载到卸载目标设备之前的运行时执行的。在这种情况下,如果检测到执行风险,则不向PIM模块提供PIM操作。
在一些具体实施中,软件可明确地传达哪些操作是相关的并且需要风险检查(例如,编译器通道可推断具有依赖性或应该是独立的操作)。另选地,硬件可基于观察到的模式来推断何时执行风险检查。例如,如果线程重复地发出相同的三个操作,并且三个操作的每个集内的所有操作都映射到相同的卸载目标设备,则如果三个操作的后续集中的卸载操作中的一个卸载操作映射到与该集中的其他两个卸载目标设备不同的卸载目标设备,则可触发风险检测。这可能不能精确地识别风险,因为程序员的意图没有被明确地指定(例如,有可能违规的操作旨在映射到不同的目标设备),但是在这些时候记录警告有助于可编程性和调试。
为了进一步解释,图6提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图5的方法一样,图6的方法包括第二卸载操作与第二卸载操作之前的第一卸载操作的比较502以及基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险。图6的方法还包括响应于确定第二卸载操作对卸载目标设备造成执行风险而发起602错误处理动作。在一些示例中,响应于确定第二卸载操作对卸载目标设备造成执行风险而发起602错误处理动作是通过发送错误消息或nack、触发故障、强制失败或在错误日志中创建条目来执行的。
为了进一步解释,图7提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图5的方法一样,图7的方法包括第二卸载操作与第二卸载操作之前的第一卸载操作的比较502以及基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险。
在图7的方法中,将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502包括将与第二卸载操作相关联的第二卸载目标设备标识符和与第一卸载操作相关联的第一卸载目标设备标识符进行比较702。在一些示例中,将与第二卸载操作相关联的第二卸载目标设备标识符和与第一卸载操作相关联的第一卸载目标设备标识符进行比较702是通过从描述第二卸载操作的数据中提取第二卸载目标设备标识符和从描述第一卸载操作的数据中提取第一卸载目标设备标识符来执行的。在一些示例中,第一卸载操作可为参考操作,因为第二卸载操作被预期映射到与第一卸载操作相同的卸载目标设备。在一些具体实施中,第一卸载操作和第二卸载操作是以PIM模块为目标的PIM操作。在这些具体实施中,使用架构映射表从解析的目标存储器地址中的位子集或从页面偏移中提取PIM模块ID。
在图7的方法中,基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险包括当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到704卸载目标设备中的执行风险。在一些示例中,当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到704执行风险通过根据第一卸载目标设备标识符和第二卸载目标设备标识符不匹配的识别确定卸载目标设备映射错误已经发生来执行。在假设第二卸载操作和第一卸载操作应该映射到相同的卸载目标设备的情况下,检测到的卸载目标设备映射错误在预期的卸载目标设备、非预期的卸载目标设备或两者上呈现执行风险。在一些具体实施中,第一卸载目标设备标识符是参考标识符,因为第二卸载操作被期望映射到该标识符。
在一些具体实施中,将与第二卸载操作相关联的第二卸载目标设备标识符和与第一卸载操作相关联的第一卸载目标设备标识符进行比较702,并且当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到704执行风险是由参考图1描述的发散检测设备150执行的,因为发散检测设备150在处理器内核102和/或处理器内核104中实现。在一些示例中,如在图4中描绘的,发散检测设备150可由多个处理器内核102、104共享。在这些示例中,发散检测设备150区分由多个内核发出的卸载操作和那些操作所针对的卸载设备。在此类示例中,将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502还包括识别与第二卸载操作相关联的第二线程标识符和与第一卸载操作相关联的第一线程标识符。
为了进一步解释,图8提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图7的方法一样,图8的方法包括将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502,包括将与第二卸载操作相关联的第一卸载目标设备标识符和与第一卸载操作相关联的第二卸载目标设备标识符进行比较702以及基于第二卸载操作与第一卸载的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险包括当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到704执行风险。
图8的方法还包括响应于第一卸载操作开始卸载操作序列的指示而存储802第一卸载目标设备标识符。在一些具体实施中,响应于第一卸载操作开始卸载操作序列的指示而存储802第一卸载目标设备标识符是由图1、图2或图4所示的发散检测设备150执行的。在一些示例中,响应于第一卸载操作开始卸载操作序列的指示而存储802第一卸载目标设备标识符包括在卸载操作序列中锁存与初始卸载操作相关联的第一卸载目标设备标识符。例如,响应于包括序列开始标志的第一卸载操作或紧随序列开始指令,锁存第一卸载目标设备标识符。在这些示例中,第一卸载目标设备标识符被锁存到存储装置中,诸如参考图3描述的活动PIM模块ID存储装置204。例如,响应于检测到PIM操作序列的开始,提取并锁存第一卸载目标设备标识符。在该示例中,然后将每个后续PIM操作的卸载目标设备标识符(包括第二卸载操作的第二卸载目标设备标识符)与锁存的第一卸载目标设备标识符进行比较,直到遇到序列末尾或检测到新序列。如上文所讨论的,PIM操作序列可从特殊指令、标志位、程序指示或对保留目标地址的访问中检测到。例如,序列开始指令和序列结束指令可用于标记应映射到相同的PIM模块的PIM操作序列的边界。响应于检测到序列开始指令(例如,与序列开始指令相关联的PIM操作,或由为PIM操作设置的标志位或通过紧随序列开始指令来识别的PIM操作),与PIM操作相关联的PIM模块ID被锁存以供将来参考。
在一些示例中,每个卸载操作被视为序列开始操作,因为从每个卸载操作锁存卸载目标设备标识符。当与诸如栅栏的同步原语一起使用时,紧接在栅栏之后锁存的卸载目标设备标识符可与紧接在栅栏之前锁存的卸载目标设备标识符进行比较。例如,为了检测执行风险或识别潜在的存储器映射错误的目的,可将紧接在栅栏之后的PIM操作与紧接在栅栏之前的PIM操作进行比较。
为了进一步解释,图9提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图8的方法一样,图9的方法包括响应于第一卸载操作开始卸载操作序列的指示而存储802第一卸载目标设备标识符;将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502包括将与第二卸载操作相关联的第二卸载目标设备标识符和与第一卸载操作相关联的第一卸载目标设备标识符进行比较702以及基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险,包括当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到704执行风险。
在图9的方法中,响应于第一卸载操作开始卸载操作序列的指示而存储802第一卸载目标设备标识符包括存储902第一卸载操作的序列标签。在一些具体实施中,存储902第一卸载操作的序列标签是由图1、图2或图4中所示的发散检测设备150执行的。在一些示例中,存储902第一卸载操作的序列标签包括从来自与第一卸载操作相关联的信息的信息中读取序列标签。例如,第一卸载操作可与包括序列标签的序列开始指令相关联。存储902第一卸载操作的序列标签还可包括设置标志以指示后续操作的序列标签应当从与那些操作相关联的信息中被识别。在一些示例中,卸载操作是PIM操作,并且卸载目标设备是PIM模块。在这些示例中,与序列开始指令相关联的PIM操作的序列标签和对应活动PIM模块ID被存储在如参考图2所述的发散检测模块的活动PIM模块ID存储装置204中的表中。
在图9的方法中,将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502还包括识别第二卸载操作的序列标签904。在一些具体实施中,识别904第二卸载操作的序列标签由图1、图2或图4中所示的发散检测设备150执行。在一些示例中,识别904第二卸载操作的序列标签包括从来自与第二卸载操作相关联的信息的信息中读取序列标签。例如,第二卸载操作可为与序列开始指令相关联的第一卸载操作之后的操作。在此类示例中,可响应于识别出已经设置了用于检查卸载操作的序列标签的标志,来读取第二卸载操作的序列标签。
在图9的方法中,将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502还包括基于第二卸载操作的序列标签来识别906第一卸载目标设备标识符。在一些具体实施中,基于第二卸载操作的序列标签来识别906第一卸载目标设备标识符是由图1、图2或图4中所示的发散检测设备150来执行的。在一些示例中,第二卸载操作的序列标签用于索引包括对应的活动卸载目标设备标识符的条目的表。在一些示例中,卸载操作是PIM操作,并且卸载目标设备是PIM模块。在这些示例中,与第二卸载操作相关联的PIM操作的序列标签用于从发散检测模块的活动PIM模块ID存储装置204中存储的活动PIM模块ID表中识别和卸载目标设备标识符,如参考图2所述。
为了进一步解释,图10提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图7的方法一样,图10的方法包括将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502,包括将与第二卸载操作相关联的第二卸载目标设备标识符和与第一卸载操作相关联的第一卸载目标设备标识符进行比较702以及基于第二卸载操作与第一卸载的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险包括当第一卸载目标设备标识符和第二卸载目标设备标识符不一致时检测到704执行风险。
图10的方法还包括识别1002具有第一卸载目标设备标识符的顺序卸载指令的模式。在一些具体实施中,在对不同卸载目标设备的访问被认为是发散的从而可能存在执行风险之前,需要对相同的卸载目标设备的阈值数量的连续访问。在一些示例中,识别1002具有第一卸载目标设备标识符的顺序卸载指令的模式包括提取每个卸载操作遇到的卸载目标设备标识符,并将其与紧接在前面的卸载目标设备标识符进行比较。对于后续卸载目标设备标识符匹配第一卸载目标设备标识符的每个实例,计数器递增。当计数器达到匹配卸载目标设备标识符的实例的阈值数量时,设置标志以指示已经达到阈值。当标志被设置时,第一卸载目标设备标识符和第二卸载目标设备标识符之间的不一致可指示第二卸载操作是潜在地映射到不正确的卸载目标设备的发散的卸载操作。在这种情况下,潜在的执行风险可能会记录在错误日志中,以供调试时使用。
为了进一步解释,图11提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图5的方法一样,图11的方法包括第二卸载操作与第二卸载操作之前的第一卸载操作的比较502以及基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险。
在图11的方法中,将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502包括将与第二卸载操作相关联的第二线程标识符和与第一卸载操作相关联的第一线程标识符进行比较1102。在一些具体实施中,将与第二卸载操作相关联的第二线程标识符和与第一卸载操作相关联的第一线程标识符进行比较是由参考图1、图3和图4描述的竞争检测设备152来执行的。在一些示例中,将与第二卸载操作相关联的第二线程标识符和与第一卸载操作相关联的第一线程标识符进行比较1102包括识别与第二卸载操作和第一卸载操作相关联的线程索引或内核索引,并且使用线程索引或内核索引分别作为第二卸载操作和第一卸载操作的线程标识符。在一些示例中,线程索引或内核索引被包括在从处理器内核102、104接收的关于第二卸载操作和第一卸载操作的信息中。在一些具体实施中,第二卸载操作和第一卸载操作是已经被卸载到PIM模块110、112的PIM操作。
在图11的方法中,基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否对卸载目标设备造成执行风险包括:当第一线程标识符和该第二线程标识符不一致时,检测到1104卸载目标设备中的执行风险。在一些具体实施中,当第一线程标识符和第二线程标识符不一致时,检测到1104卸载目标设备中的执行风险通过图1、图3和图4描述的竞争检测设备152来执行。在一些示例中,当第一线程标识符和第二线程标识符不一致时,检测到1104卸载目标设备中的执行风险包括确定两个处理器内核(例如,处理器内核102、104)已经创建了对卸载目标设备(例如,PIM模块110)的访问的竞争条件。在这些示例中,基于第二卸载操作的线程标识符与第一卸载操作的线程标识符不匹配的确定来检测竞争条件。例如,第二卸载操作和第一卸载操作可为PIM操作。当检测到由竞争条件造成的执行风险时,卸载目标设备可向处理器内核发送Nack或错误消息和/或触发故障。
为了进一步解释,图12提出了示出根据本公开的检测卸载操作中的执行风险的另一个示例性方法的流程图。像图11的方法一样,图12的方法包括将第二卸载操作与第二卸载操作之前的第一卸载操作进行比较502,包括将与第二卸载操作相关联的第二线程标识符和与第一卸载操作相关联的第一线程标识符进行比较1102以及基于第二卸载操作与第一卸载操作的比较来确定504第二卸载操作是否在卸载目标设备上造成执行风险,包括当第一线程标识符和第二线程标识符不一致时检测到1104卸载目标设备中的执行风险。
图12的方法还包括识别1202在卸载目标设备上启用了竞争检测。在一些具体实施中,识别1202在卸载目标设备上启用了竞争检测是由参考图1、图3和图4描述的竞争检测设备152来执行的。在一些示例中,识别1202在卸载目标设备上启用了竞争检测是通过检测竞争检测信号来执行的。竞争检测信号可用于启用或禁用一个或多个卸载目标设备上的竞争检测。在一些示例中,识别1202在卸载目标设备上启用了竞争检测是通过识别在卸载目标设备上启用或禁用竞争检测的卸载操作来执行的。在一些示例中,识别1202在卸载目标设备上启用了竞争检测是通过识别对卸载目标设备上的保留的目标存储器地址的访问来执行的。当竞争检测被启用时,竞争条件在卸载目标设备上是不允许的,因为仅源自同一线程标识符的卸载操作应该被允许执行。
在一些具体实施中,识别1202在卸载目标设备上启用了竞争检测包括存储1204用于第一卸载操作的第一线程标识符,其中第一卸载操作与竞争检测指示符相关联。例如,如上文所讨论的,竞争检测指示符可为竞争检测信号、竞争检测启用卸载操作或对保留的目标存储器地址的访问。在一些示例中,第一卸载操作与竞争检测指示符相关联,因为第一卸载操作是在竞争检测指示符启用竞争检测之后的初始卸载操作。在一些示例中,卸载操作本身可包括启用竞争检测的竞争检测指示符。在识别竞争检测之后,在一些示例中,与第一卸载操作相关联的线程标识符被锁存。例如,第一卸载操作可为PIM操作,并且卸载目标设备可为PIM模块110、112。在该示例中,存储1204第一卸载操作的第一线程标识符,其中第一卸载操作与竞争检测指示符相关联,可通过将与发出卸载操作的处理器内核102、104相关联的线程标识符存储在上文参考图3描述的活动线程ID存储装置304中来执行。
附图中的流程图和框图示出了根据本公开的各种实施方案的系统、方法和逻辑电路的可能具体实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可以不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
虽然已经参考本公开的实施方案具体地示出和描述了本公开,但是应当理解,在不脱离以下权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。因此,本文所述的实施方案应当被认为仅是描述性意义的,而不是出于限制性目的。本公开不是由详细描述而是由所附权利要求限定的,并且在该范围内的所有差异将被解释为包括在本公开中。

Claims (20)

1.一种检测卸载操作中的执行风险的方法,所述方法包括:
将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较;以及
基于所述第二卸载操作与所述第一卸载操作的所述比较,确定所述第二卸载操作是否对卸载目标设备造成执行风险。
2.根据权利要求1所述的方法,所述方法还包括响应于确定所述第二卸载操作对所述卸载目标设备造成所述执行风险而发起错误处理动作。
3.根据权利要求2所述的方法,其中发起错误处理动作包括以下中的至少一者:发送错误消息、创建错误日志条目和触发故障。
4.根据权利要求1所述的方法,其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较包括将与所述第二卸载操作相关联的第二卸载目标设备标识符和与所述第一卸载操作相关联的第一卸载目标设备标识符进行比较;并且
其中基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险包括:当所述第一卸载目标设备标识符和所述第二卸载目标设备标识符不一致时检测到所述执行风险。
5.根据权利要求4所述的方法,所述方法还包括响应于所述第一卸载操作开始卸载操作序列的指示而存储所述第一卸载目标设备标识符。
6.根据权利要求5所述的方法,所述方法还包括存储所述第一卸载操作的序列标签,
其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较还包括:
识别所述第二卸载操作的序列标签;以及
基于所述第二卸载操作的所述序列标签来识别所述第一卸载目标设备标识符。
7.根据权利要求4所述的方法,所述方法还包括识别具有所述第一卸载目标设备标识符的顺序卸载指令的模式。
8.根据权利要求1所述的方法,其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较包括将与所述第二卸载操作相关联的第二线程标识符和与所述第一卸载操作相关联的第一线程标识符进行比较;并且
其中基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险包括:当所述第一线程标识符和所述第二线程标识符不一致时,检测到所述卸载目标设备中的所述执行风险。
9.根据权利要求8所述的方法,所述方法还包括识别在卸载目标设备上启用竞争检测。
10.根据权利要求9所述的方法,其中识别在所述卸载目标设备上启用竞争检测包括存储第一卸载操作的所述第一线程标识符,其中所述第一卸载操作与竞争检测标识符相关联。
11.根据权利要求1所述的方法,其中所述第二卸载操作是存内处理(PIM)操作,并且所述卸载目标设备是PIM模块。
12.根据权利要求1所述的方法,其中在运行时执行第二卸载操作与所述第二卸载操作之前的第一卸载操作的比较以及基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险。
13.一种用于检测卸载操作中的执行风险的装置,所述装置包括逻辑电路,所述逻辑电路被配置为:
将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较;以及
基于所述第二卸载操作与所述第一卸载操作的所述比较,确定所述第二卸载操作是否对卸载目标设备造成执行风险。
14.根据权利要求13所述的装置,其中所述逻辑电路被进一步配置为响应于确定所述第二卸载操作对所述卸载目标设备造成所述执行风险而发起错误处理动作。
15.根据权利要求13所述的装置,其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较包括将与所述第二卸载操作相关联的第二卸载目标设备标识符和与所述第一卸载操作相关联的第一卸载目标设备标识符进行比较;并且
其中基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险包括:当所述第一卸载目标设备标识符和所述第二卸载目标设备标识符不一致时检测到所述执行风险。
16.根据权利要求13所述的装置,其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较包括将与所述第二卸载操作相关联的第二线程标识符和与所述第一卸载操作相关联的第一线程标识符进行比较;并且
其中基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险包括:当所述第一线程标识符和所述第二线程标识符不一致时,检测到所述卸载目标设备中的所述执行风险。
17.一种用于检测卸载操作中的执行风险的系统,所述系统包括:
两个或更多个处理器内核;
两个或更多个存内处理(PIM)模块;和
逻辑电路,所述逻辑电路被配置为:
将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较;以及
基于所述第二卸载操作与所述第一卸载操作的所述比较,确定所述第二卸载操作是否对卸载目标设备造成执行风险。
18.根据权利要求17所述的系统,其中所述逻辑电路被进一步配置为响应于确定所述第二卸载操作对所述卸载目标设备造成所述执行风险而发起错误处理动作。
19.根据权利要求17所述的系统,其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较包括将与所述第二卸载操作相关联的第二卸载目标设备标识符和与所述第一卸载操作相关联的第一卸载目标设备标识符进行比较;并且
其中基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险包括:当所述第一卸载目标设备标识符和所述第二卸载目标设备标识符不一致时检测到所述执行风险。
20.根据权利要求17所述的系统,其中将第二卸载操作与所述第二卸载操作之前的第一卸载操作进行比较包括将与所述第二卸载操作相关联的第二线程标识符和与所述第一卸载操作相关联的第一线程标识符进行比较;并且
其中基于所述第二卸载操作与所述第一卸载操作的所述比较来确定所述第二卸载操作是否对卸载目标设备造成执行风险包括:当所述第一线程标识符和所述第二线程标识符不一致时,检测到所述卸载目标设备中的所述执行风险。
CN202280023226.6A 2021-03-31 2022-03-25 检测卸载操作中的执行风险 Pending CN117063155A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,506 US11188406B1 (en) 2021-03-31 2021-03-31 Detecting execution hazards in offloaded operations
US17/218,506 2021-03-31
PCT/US2022/021875 WO2022212190A1 (en) 2021-03-31 2022-03-25 Detecting execution hazards in offloaded operations

Publications (1)

Publication Number Publication Date
CN117063155A true CN117063155A (zh) 2023-11-14

Family

ID=78767776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280023226.6A Pending CN117063155A (zh) 2021-03-31 2022-03-25 检测卸载操作中的执行风险

Country Status (6)

Country Link
US (2) US11188406B1 (zh)
EP (1) EP4315042A1 (zh)
JP (1) JP2024512556A (zh)
KR (1) KR20230161466A (zh)
CN (1) CN117063155A (zh)
WO (1) WO2022212190A1 (zh)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934673B2 (en) * 2001-05-25 2005-08-23 Hewlett-Packard Development Company, L.P. Method and apparatus for predicting multi-part performability
GB2447907B (en) 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US20130019083A1 (en) 2011-07-11 2013-01-17 International Business Machines Corporation Redundant Transactional Memory
US10091110B2 (en) * 2015-10-28 2018-10-02 Electronics And Telecommunications Research Institute Edge-based load shedding system for fast data analysis and operating method thereof
US10402201B2 (en) 2017-03-09 2019-09-03 Joel Kevin Jones Method and apparatus for detecting memory conflicts using distinguished memory addresses
US10761779B2 (en) * 2018-12-05 2020-09-01 Intel Corporation Storage compute offloads on sharded and erasure-coded data
US10824468B2 (en) 2019-02-12 2020-11-03 Arm Limited Control of instruction execution in a data processor
US11212368B2 (en) * 2019-05-17 2021-12-28 Netflix, Inc. Fire-and-forget offload mechanism for network-based services
US11113140B2 (en) * 2019-05-20 2021-09-07 Alibaba Group Holding Limited Detecting error in executing computation graph on heterogeneous computing devices
US11403102B2 (en) * 2020-06-27 2022-08-02 Intel Corporation Technology to learn and offload common patterns of memory access and computation
US11868657B2 (en) * 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US20220318015A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. Enforcing data placement requirements via address bit swapping

Also Published As

Publication number Publication date
WO2022212190A1 (en) 2022-10-06
US11188406B1 (en) 2021-11-30
JP2024512556A (ja) 2024-03-19
US11693725B2 (en) 2023-07-04
US20220318085A1 (en) 2022-10-06
EP4315042A1 (en) 2024-02-07
KR20230161466A (ko) 2023-11-27

Similar Documents

Publication Publication Date Title
US7958319B2 (en) Hardware acceleration for a software transactional memory system
US9250906B2 (en) Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation
JP7483950B2 (ja) バイナリ変換を実行するためのシステム及び方法
US6505296B2 (en) Emulated branch effected by trampoline mechanism
KR102484125B1 (ko) 벡터 처리회로를 사용한 에러 검출
KR101744081B1 (ko) 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리
US20150089180A1 (en) Arithmetic processing device, information processing device, control method for information processing device, and control program for information processing device
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
US9817763B2 (en) Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products
CN111381881A (zh) 一种基于ahb总线接口的低功耗指令缓存方法及装置
EP3671460A1 (en) Device, system and method to detect an uninitialized memory read
US11693725B2 (en) Detecting execution hazards in offloaded operations
CN115269199A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US10162728B2 (en) Method and device for monitoring the execution of a program code
CN104166633B (zh) 用于存储器访问保护的方法和系统
CN111651379B (zh) Dax设备地址转换缓存方法及系统
CN115687179A (zh) 具有排除指定存储器区域的条件围栏命令的处理器
KR0155931B1 (ko) 외부에서 억세스 가능한 온칩 캐시 메모리 시스템
KR20040047399A (ko) 메모리 영역 억세스 제어 방법

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