CN116097229A - 屏蔽存储器访问的高效处理 - Google Patents

屏蔽存储器访问的高效处理 Download PDF

Info

Publication number
CN116097229A
CN116097229A CN202180053581.3A CN202180053581A CN116097229A CN 116097229 A CN116097229 A CN 116097229A CN 202180053581 A CN202180053581 A CN 202180053581A CN 116097229 A CN116097229 A CN 116097229A
Authority
CN
China
Prior art keywords
memory
vector
mask
instruction
memory protection
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
CN202180053581.3A
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.)
Swift Co ltd
Original Assignee
Swift 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 Swift Co ltd filed Critical Swift Co ltd
Publication of CN116097229A publication Critical patent/CN116097229A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

本文公开了用于处理包括处置故障异常和检查要被访问的(多个)存储器区域的存储器属性的屏蔽存储器访问的系统和方法。实现方式针对屏蔽向量存储器指令执行两级存储器保护违规方案。第一级存储器检查忽略与屏蔽向量存储器指令相关联的屏蔽信息,并且对与屏蔽向量存储器指令相关联的存储器占用进行操作。如果相对于存储器占用检测到存储器保护违规或者推测性访问被拒绝,则第二级存储器检查在向量元素级别上评估屏蔽信息以确定是否应该引发故障异常。如果设置了向量元素的屏蔽位并且检测到存储器违规,则针对屏蔽向量存储器指令引发故障异常。如果没有设置屏蔽位,则能够继续屏蔽向量存储器指令的执行。

Description

屏蔽存储器访问的高效处理
技术领域
本公开涉及处理器中指令的执行,即屏蔽存储器访问的处理。
背景技术
处理器核心能够包括标量和向量处理单元或机器以分别高效地处理标量和向量指令,从而支持广泛范围的实现方式和用例,诸如物联网(IoT)、边缘处理和数据中心处理。这些处理器核心能够按序或无序地执行指令。
向量处理单元能够采取若干周期来执行向量存储器指令,诸如向量负载或向量存储。因此,按序和无序处理器核心和向量处理单元都允许在处理流水线中处理多个向量指令。也就是说,下一向量指令能够在当前向量指令完成处理之前开始处理。即使当向量指令都是需要存储器访问的向量存储器指令并且经受故障异常时,这也能够发生。
一些向量存储器指令是屏蔽向量存储器指令。屏蔽向量存储器指令,诸如屏蔽向量负载和/或屏蔽向量存储,能够是需要许多时钟周期来执行的复杂操作。屏蔽能够用于屏蔽不需要或不应该执行的N个元素向量存储器指令的元素。
给定故障异常和屏蔽向量,存储器指令的执行可能是复杂的。当前的技术不能提供包括故障异常的处置和检查要被访问的(多个)存储器区域的存储器属性的屏蔽向量存储器指令的高效处理。
发明内容
附图说明
当结合附图阅读时,从以下具体描述可以最好地理解本公开。需要强调的是,根据惯例,附图的各种特征不是按比例绘制的。相反,为了清晰性,各种特征的尺寸被任意扩大或缩小。
图1是根据本公开的实施例的用于执行高效处理屏蔽向量存储器访问的指令的集成电路的示例的框图。
图2是根据本公开的实施例的用于执行高效处理屏蔽向量存储器访问的指令的集成电路的示例的框图。
图3是根据本公开的实施例的用于高效处理屏蔽向量存储器访问的过程的示例的流程图。
图4是根据本公开的实施例的用于高效处理屏蔽向量存储器访问的过程的示例的流程图。
图5是根据本公开的实施例的用于高效处理屏蔽向量存储器访问的过程的示例的流程图。
具体实施方式
本文公开了用于高效处理包括故障异常的处置和检查要被访问的(多个)存储器区域的存储器属性的屏蔽存储器访问的系统和方法。
本文描述的实现方式能够用于通过对屏蔽向量存储器指令执行两级存储器保护违规方案来增加吞吐量和效率。第一级或保守存储器检查忽略与屏蔽向量存储器指令相关联的屏蔽信息,并且对与屏蔽向量存储器指令相关联的存储器占用进行操作。如果相对于存储器占用没有检测到存储器保护违规并且存储器占用内的存储器属性指示幂等,则屏蔽向量存储器指令的执行能够继续。这导致屏蔽向量存储器指令的优化执行。如果相对于存储器占用检测到存储器保护违规或者推测性访问不被允许,则第二级或精确存储器检查在向量元素级别上评估信息以确定是否应该引发故障异常。也就是说,向量元素被单独和顺序地处理。如果设置了向量元素的屏蔽位并且检测到该向量元素的存储器保护违规,则针对屏蔽向量存储器指令引发故障异常。如果设置了向量元素的屏蔽位并且没有检测到该向量元素的存储器保护违规,则执行对应的存储器访问并且执行能够继续。如果没有设置屏蔽位,则不执行存储器访问,并且屏蔽向量存储器指令的执行能够继续。两级存储器保护违规方案能够通过仅在检测到潜在的存储器保护违规时分析信息来提高吞吐量和效率,而不是检查每个屏蔽向量存储器指令的屏蔽信息。
本文描述的实现方式能够检查与屏蔽向量存储器指令相关联的存储器占用的幂等存储器属性。幂等存储器属性能够指示对于存储器占用或(多个)存储器区域是否允许推测性访问。也就是说,对存储器占用或(多个)存储器区域的读写访问是否有副作用。例如,是访问可高速缓存还是访问输入/输出(I/O)设备。如果访问是非幂等的,即访问存储器区域存在潜在的副作用,则推测性访问不被允许。
在实现方式中,故障异常处置和存储器属性检查能够并行或顺序地执行。例如,能够在存储器属性检查之后执行故障异常处置。
本公开的这些和其他方面在以下具体实施方式、随附权利要求和附图中公开。
如本文所使用,术语“处理器”指示一个或多个处理器,诸如一个或多个专用处理器、一个或多个数字信号处理器、一个或多个微处理器、一个或多个控制器、一个或多个微控制器、一个或多个应用处理器、一个或多个中央处理单元(CPU)、一个或多个图形处理单元(GPU)、一个或多个数字信号处理器(DSP)、一个或多个专用集成电路(ASIC)、一个或多个专用标准产品、一个或多个现场可编程门阵列、任何其他类型的集成电路或其组合、一个或多个状态机或其任何组合。
术语“电路”是指被构造成实现一个或多个功能的电子组件(例如,晶体管、电阻器、电容器和/或电感器)的布置。例如,电路可以包括一个或多个互连的晶体管以形成共同实现逻辑功能的逻辑门。
如本文所使用,术语“确定”和“识别”或其任何变体包括使用本文所示和描述的一个或多个设备和方法以任何方式进行选择、确认、计算、查找、接收、确定、建立、获得或以其他方式识别或确定。
如本文所使用,术语“示例”、“实施例”、“实现方式”、“方面”、“特征”或“元素”指示充当示例、实例或说明。除非明确指出,否则任何示例、实施例、实现方式、方面、特征或元素都独立于其他示例、实施例、实现方式、方面、特征或元素,并且可以与任何其他示例、实施例、实现方式、方面、特征或元素结合使用。
如本文所使用,术语“或”旨在意指包括性的“或”,而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚,“X包括A或B”旨在指示任何自然的包括性排列。也就是说,如果X包括A;X包括B;或者X包括A和B两者,则在任何前述情况下都满足“X包括A或B”。另外,在本申请和所附权利要求中使用的冠词“一(a)”和“一个(an)”通常应被解释为意指“一个或多个”,除非另有说明或从上下文中清楚地指向单数形式。
此外,为了解释的简单性,尽管本文的附图和描述可以包括步骤或阶段的序列或系列,但是本文公开的方法的元素可以以各种顺序或同时发生。此外,本文公开的方法的元素可以与本文未明确呈现和描述的其他元素一起发生。此外,不是本文描述的方法的所有元素都需要实现根据本公开的方法。尽管在本文中以特定组合描述了方面、特征和元素,但是每一方面、特征或元素可以独立使用,或者与其他方面、特征和元素一起或不一起以各种组合使用。
应理解,实施例的附图和描述已经被简化以示出与清楚理解相关的元素,同时为了清楚起见,消除了在典型处理器中发现的许多其他元素。本领域普通技术人员可以认识到,在实现本公开时,其他元素和/或步骤是期望的和/或需要的。然而,因为这些元素和步骤不便于更好地理解本公开,所以本文不提供对这些元素和步骤的论述。
图1是用于屏蔽向量存储器访问的高效处理的集成电路1100的示例的框图,该高效处理包括对屏蔽向量存储器访问的异常处理的高效处置和检查要访问的(多个)存储器区域的存储器属性。集成电路1100包括至少一个处理器核心1200,其能够包括标量处理单元1210、向量处理单元1220、(多个)寄存器堆1230、LI指令高速缓存1240、L1数据高速缓存1250、L2高速缓存1260和存储器保护电路1270。至少一个处理器核心1200能够在适当和适用时经由LI指令高速缓存1240、L1数据高速缓存1250、L2高速缓存1260、互连单元1300和存储器控制器1400连接到存储器1500或者与存储器1500通信(统称为“连接到”)。在实现方式中,存储器保护电路1270能够在处理器核心1200的外部,并且在集成电路1100的内部。在实现方式中,存储器1500能够在集成电路1100的外部。集成电路1100和集成电路1100中的每一元件或组件是说明性的并且能够包括附加的、更少的或不同的设备、实体、元件、组件等,它们可以在不偏离本文说明书和权利要求的范围的情况下被类似地或不同地构建。此外,在不偏离本文说明书和权利要求的范围的情况下,所示出的设备、实体、元件和组件能够执行其他功能。
集成电路1100和/或处理器核心1200能够被配置成解码和执行指令集架构(ISA)(例如,RISC-V指令集)的指令。指令能够在集成电路1100和/或处理器核心1200中推测性地和无序地执行。集成电路1100和/或处理器核心1200能够实现流水线架构,该流水线架构能够包括流水线阶段,诸如提取、解码、重命名、分派、发布、执行、存储器访问和回写阶段。
处理器核心1200和/或标量处理单元1210能够被配置成在适当和适用时从LI指令高速缓存1240、L1数据高速缓存1250、L2高速缓存1260和/或存储器1500中提取指令并且访问存储在其中的数据。处理器核心1200和/或标量处理单元1210能够被配置成在适当和适用时从LI指令高速缓存1240、L2高速缓存1260和/或存储器1500中提取指令。处理器核心1200、标量处理单元1210、和/或向量处理单元1220能够被配置成响应于指令,在适当和适用时,访问L1数据高速缓存1250、L2高速缓存1260、和/或存储器1500中的数据。例如,向量处理单元1220能够被配置成将L1数据高速缓存1250、L2高速缓存1260和/或存储器1500中的数据访问成向量指令,该向量指令包括但不限于向量存储器指令,诸如向量负载指令、向量存储指令、屏蔽向量负载指令、或屏蔽向量存储指令。
存储器保护电路1270能够用于监视事务,包括处理器核心1200、标量处理单元1210、和/或向量处理单元1220的指令提取和数据访问,并且能够在检测到相对于事务的存储器保护违规时引发故障异常。例如,试图访问未授权的存储器可能导致硬件故障(例如,分段故障、存储违规异常、或违规进程的异常终止)。存储器保护电路1270可以用于防止进程访问没有分配给它的存储器,这可以防止进程内的错误或恶意软件影响其他进程或操作系统。
存储器保护电路1270能够被配置成使用保护粒度(granule)对一个或多个地址执行存储器保护检查,或者使用保护粒度检查存储器保护违规。存储器保护电路1270可以允许特权软件定义存储器区域并且向它们中的每一个指派存储器访问许可。存储器保护电路1270的保护粒度限制了这些具有相关联访问许可的存储器区域的大小和因此分辨率。例如,保护粒度可以对应于存储器的页(例如,4kB或8kB页)。在一些实现方式中,存储器保护电路1270还指定这些存储器区域的存储器属性,它们可以指定这些区域的排序和合并行为、高速缓存和缓冲属性、以及幂等属性。存储器保护电路1270能够检查幂等存储器属性以确定与指令相关联的(多个)存储器区域或存储器占用是否允许推测性访问。
存储器保护电路1270可以具有各种大小和复杂性。在一些实现方式中,存储器保护电路1270被配置成每时钟周期检查两个地址。例如,存储器保护电路1270可以具有两个地址端口,这两个地址端口允许它在单个时钟周期期间接收两个地址并且独立地检查存储器中的两个地址用于存储器保护违规。例如,可以通过比较包括地址的存储器区域的存储器保护密钥或环与由处理器核心1200执行并试图访问该地址处的存储器的过程相关联的存储器保护密钥或环号来检查地址。在一些实现方式中,存储器保护电路1270被配置成每时钟周期检查单个地址,并且因此可以占据更少的电路面积和消耗更少的功率。在一些实现方式中,存储器保护电路1270可以具有两个或多个地址端口,或者以其他方式被配置成每时钟周期检查两个或多个地址或地址范围用于存储器保护违规。
存储器保护电路1270能够被配置成对屏蔽向量存储器指令执行两级或两阶段存储器保护检查。也就是说,存储器保护电路1270能够在不考虑屏蔽信息的情况下执行保守级别存储器保护违规检查,并且如果需要,在考虑屏蔽信息的情况下对屏蔽向量存储器指令执行精确级别存储器保护违规检查。在实现方式中,保守级别存储器保护违规检查能够基于存储器占用并且不考虑屏蔽信息。在实现方式中,精确级别存储器保护违规检查能够是考虑屏蔽信息的逐元素检查。
在第一级,存储器保护电路1270能够被配置成相对于标量处理单元1210或者在标量处理单元1210处监视屏蔽向量存储器指令。当检测到存储器保护违规时,存储器保护电路1270能够引发故障异常,而不考虑与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息。在实现方式中,存储器保护电路1270能够通过在不考虑屏蔽信息的情况下检查与向量相关联的存储器地址或地址范围的存储器占用是否是存储器保护违规来进行决定。例如,存储器占用能够基于保护粒度、存储器地址或存储器地址范围的定义子集、开始和结束存储器地址、定义的存储器区域,和/或使用用于定义忽略屏蔽信息并且对于与向量相关联的全部存储器地址或存储器地址范围不是在逐元素级别上完成的存储器占用的其他技术。在存储器保护电路1270没有基于存储器占用而引发故障异常的情况下,如果相对于存储器占用,推测性访问被允许,则能够忽略屏蔽信息并且能够继续屏蔽向量存储器指令的执行(这能够在异常处理之后并行或顺序地执行)。在存储器保护电路1270基于存储器占用而检测到存储器保护违规或者确定推测性访问不被允许的情况下,在标量处理单元1210处的处理期间,存储器保护电路1270则能够在考虑屏蔽信息的情况下执行精确级别存储器保护违规检查。
存储器保护电路1270能够被配置成等待,直到屏蔽寄存器被向量处理单元1220加载了屏蔽信息为止。例如,屏蔽寄存器能够是(多个)寄存器堆1230中的一个。因此,能够相对于向量处理单元1220或在向量处理单元1220处执行第二或精确级别存储器保护违规检查。存储器保护电路1270能够被配置成使用与所考虑的元素相关联的屏蔽信息来逐元素地确定是否存在存储器保护违规。例如,如果针对向量元素启用或设置了屏蔽位,并且针对该向量元素检测到存储器保护违规,则存储器保护电路1270能够针对屏蔽向量存储器指令引发故障异常。例如,如果针对向量元素启用或设置了屏蔽位,并且针对该向量元素未检测到存储器保护违规,则执行对应的存储器访问,并且能够继续屏蔽向量存储器指令的执行。例如,如果针对向量元素禁用或未设置屏蔽位,则不对该向量元素执行存储器访问,并且能够继续屏蔽向量存储器指令的执行。在存储器保护电路1270引发故障异常的情况下,运行在集成电路1100和/或处理器核心1200上的操作系统能够停止在处理器核心1200中的执行,能够使页从磁盘进入存储器1500和/或最终进入L1数据高速缓存1250和/或L2高速缓存1260,和/或执行其他故障异常处理。
存储器保护电路1270能够被配置成对屏蔽向量存储器指令执行存储器属性检查。存储器保护电路1270能够被配置成相对于标量处理单元1210或者在标量处理单元1210处监视屏蔽向量存储器指令。在不考虑屏蔽信息的情况下,存储器保护电路1270能够检查与关联于向量的存储器地址或地址范围的存储器占用相关联的存储器属性是否允许推测性访问或者是否是幂等的。如果推测性访问针对存储器占用被允许,即正在访问可高速缓存的存储器,则能够继续屏蔽向量存储器指令的执行。如果访问是非幂等的,即,存在来自访问存储器区域的潜在副作用并且推测性访问不被允许,则执行考虑屏蔽信息的精确级别存储器保护违规检查。
集成电路1100可以提供优于常规处理器架构的优点,例如,使用具有小电路面积和功耗的简单存储器保护电路,实现屏蔽向量存储器操作的高效故障异常处置。在实现方式中,集成电路1100能够实现图3的过程3000、图4的过程4000、和/或其组合。
图2是根据本公开的实施例的用于屏蔽向量存储器访问的处理的集成电路2100的示例的框图,包括对屏蔽向量存储器访问的异常处理的高效处置和检查要访问的(多个)存储器区域的存储器属性。
集成电路2100包括处理器核心2200。处理器核心2200包括处理器流水线2200,该处理器流水线2200包括对屏蔽向量存储器指令的高效故障异常处置。处理器核心2200包括一个或多个寄存器堆2210,该寄存器堆2210能够包括标量寄存器、向量寄存器、控制和状态寄存器(CSR)、和/或能够存储屏蔽向量存储器指令中识别的向量的屏蔽信息的向量屏蔽寄存器。处理器核心2200包括L1指令高速缓存2230和L1数据高速缓存2240。集成电路2100包括外部存储器系统2300,其可以包括存储指令和数据的存储器和/或提供对集成电路2100外部的存储指令和/或数据的存储器2400的访问。外部存储器系统2300包括存储器保护电路2310,存储器保护电路2310可以被配置成使用两级存储器保护违规检测方案并且检查要被访问的(多个)存储器区域的存储器属性,以对屏蔽向量存储器指令执行高效故障异常处置。集成电路2100可以提供优于常规处理器架构的优点,例如,使用具有小电路面积和功耗的简单存储器保护电路,实现屏蔽向量存储器指令的高效故障异常处置。例如,集成电路2100可以实现图3的过程3000、图4的过程4000、或其组合。
流水线2220能够被配置成执行指令,包括屏蔽向量存储器指令。流水线2220包括一个或多个被配置成从集成电路2100的存储器系统检索指令的提取阶段。例如,流水线2220能够经由L1指令高速缓存2230提取指令并且能够从L1数据高速缓存2240访问数据。流水线2220能够包括附加阶段,诸如解码、重命名、分派、发布、执行、存储器访问和回写阶段。例如,流水线2220能够被配置成执行RISC V指令集的指令。
L1指令高速缓存2230能够是用于指令存储器的组关联高速缓存。为了避免串行读取标签阵列和数据阵列的长时延,以及并行读取阵列的高功率,可以使用路线预测器。可以在早期提取阶段中访问路线预测器并且可以将命中路线编码到数据阵列的读取索引中。标签阵列可以在稍后的提取阶段被访问并且可以用于验证路线预测器。
L1数据高速缓存2240能够是组关联VIPT高速缓存,这意味着它纯粹使用虚拟地址位VA[set]来索引并且使用所有已转换的物理地址位PA[msb:12]来完全标记。为了低功耗,可以串行查找标签和数据阵列,使得最多访问单个数据SRAM路线。例如,L1数据高速缓存252的行大小可以是64字节,并且节拍大小可以是26字节。
外部存储器系统2300能够包括存储指令和数据的存储器和/或提供对存储指令和/或数据的存储器2400的访问。例如,外部存储器系统2300能够包括L2高速缓存,其可以被配置成实现高速缓存一致性协议/策略以维持跨多个L1高速缓存的高速缓存一致性。尽管图2中未示出,但在一些实现方式中,集成电路2100能够包括多个处理器核心。例如,外部存储器系统2300能够包括多个层。
存储器保护电路2310能够被配置成监视事务,包括处理器核心2200的指令提取和数据访问,并且能够在相对于事务检测到存储器保护违规时引发故障异常。例如,试图访问未授权的存储器可能导致硬件故障(例如,分段故障、存储违规异常、或违规进程的异常终止)。存储器保护电路2310可以用于防止进程访问没有分配给它的存储器,这可以防止进程内的错误或恶意软件影响其他进程、或操作系统。
存储器保护电路2310可以被配置成使用保护粒度对一个或多个地址执行存储器保护违规检查,或者使用保护粒度检查存储器保护违规。存储器保护电路2310可以允许特权软件定义存储器区域并且向它们中的每一个指派存储器访问许可。存储器保护电路2310的保护粒度限制了这些具有相关联访问许可的存储器区域的大小和因此分辨率。例如,保护粒度可以对应于存储器的页(例如,4kB或8kB页)。在一些实现方式中,存储器保护电路2310还指定这些存储器区域的存储器属性,它们可以指定这些区域的排序和合并行为、高速缓存和缓冲属性、以及幂等属性。存储器保护电路2310能够检查幂等属性以确定与指令相关联的(多个)存储器区域或存储器占用是否允许推测性访问。
存储器保护电路2310可以具有各种大小和复杂性。在一些实现方式中,存储器保护电路2310被配置成每时钟周期检查两个地址。例如,存储器保护电路2310可以具有两个地址端口,这两个地址端口允许它在单个时钟周期期间接收两个地址并且独立地检查存储器中的两个地址用于存储器保护违规。例如,可以通过比较包括地址的存储器区域的存储器保护密钥或环与由处理器核心2200执行并试图访问该地址处的存储器的进程相关联的存储器保护密钥或环号来检查地址。在一些实现方式中,存储器保护电路2310被配置成每时钟周期检查单个地址,并且因此可以占据更少的电路面积和消耗更少的功率。在一些实现方式中,存储器保护电路2310可以具有两个或多个地址端口,或者以其他方式被配置成每时钟周期检查两个或多个地址或地址范围用于存储器保护违规。
存储器保护电路2310能够被配置成对屏蔽向量存储器指令执行两级或两阶段存储器保护违规检查。也就是说,存储器保护电路2310能够在不考虑屏蔽信息的情况下执行保守级别存储器保护违规检查,并且如果需要,在考虑屏蔽信息的情况下对屏蔽向量存储器指令执行精确级别存储器保护违规检查。在实现方式中,保守级别存储器保护违规检查能够基于存储器占用并且不考虑屏蔽信息。在实现方式中,精确级别存储器保护违规检查能够是考虑屏蔽信息的逐元素检查。
在第一级,存储器保护电路2310能够被配置成在流水线2220的执行阶段处监视屏蔽向量存储器指令,并且具体地,监视相对于处理器核心2200中的标量单元正在执行的处理。当检测到存储器保护违规时,存储器保护电路2310能够引发故障异常,而不考虑与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息。在实现方式中,存储器保护电路2310能够通过在不考虑屏蔽信息的情况下检查与向量相关联的存储器地址或地址范围的存储器占用是否能够导致故障异常来进行决定。例如,存储器占用能够基于保护粒度、存储器地址或存储器地址范围的定义子集、开始和结束存储器地址、定义的存储器区域,和/或使用用于定义忽略屏蔽信息并且对于与向量相关联的全部存储器地址或存储器地址范围不是在逐元素级别上完成的存储器占用的其他技术。在存储器保护电路2310没有基于存储器占用引发故障异常的情况下,如果针对存储器占用,推测性访问被允许,则能够忽略屏蔽信息并且能够继续屏蔽向量存储器指令的执行(这能够在异常处理之后并行或顺序地执行)。在存储器保护电路2310基于存储器占用检测到存储器保护违规或者确定在标量单元处的处理期间推测性访问不被允许的情况下,存储器保护电路2310则能够在考虑屏蔽信息的情况下执行精确级别存储器保护检查。
存储器保护电路2310能够被配置成等待,直到屏蔽寄存器在处理器核心2200中的向量单元的处理期间被加载屏蔽信息为止。存储器保护电路2310能够被配置成使用与所考虑的元素相关联的屏蔽信息来逐元素地确定是否存在存储器保护违规。例如,如果针对向量元素启用或设置了屏蔽位,并且针对该向量元素检测到存储器保护违规,则存储器保护电路2310能够针对屏蔽向量存储器指令引发故障异常。例如,如果针对向量元素启用或设置了屏蔽位,并且针对该向量元素未检测到存储器保护违规,则执行对应的存储器访问,并且能够继续屏蔽向量存储器指令的执行。例如,如果针对向量元素禁用或未设置屏蔽位,则不对该向量元素执行存储器访问,并且能够继续屏蔽向量存储器指令的执行。
在由存储器保护电路2310引发故障异常的情况下,运行在集成电路2100和/或处理器核心2200上的操作系统能够停止在流水线2220中和/或处理器核心2200中的执行,能够使页从磁盘进入存储器2400、外部存储器2300、和/或最终进入L1数据高速缓存2240,和/或执行其他故障异常处理。
存储器保护电路2310能够被配置成在流水线2220中的执行阶段处执行存储器属性检查,并且具体地,相对于处理器核心2200中的标量单元执行存储器属性检查。存储器保护电路2310能够在不考虑与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息的情况下执行存储器属性检查。在实现方式中,存储器保护电路2310能够在不考虑屏蔽信息的情况下检查与向量相关联的存储器占用的存储器属性。存储器保护电路1270能够在不考虑屏蔽信息的情况下检查与向量相关联的存储器占用的存储器属性是否允许推测性访问或者是否是幂等的。如果针对存储器占用,推测性访问被允许,即正在访问可高速缓存的存储器,则能够继续屏蔽向量存储器指令的执行。如果访问是非幂等的,即,存在来自访问存储器区域的潜在副作用并且推测性访问不被允许,则执行考虑屏蔽信息的精确级别存储器保护违规检查。
集成电路2100能够提供优于常规处理器架构的优点,例如,使用具有小电路面积和功耗的简单存储器保护电路,实现屏蔽向量存储器操作的高效故障异常处置。在实现方式中,集成电路2100可以实现图3的过程3000、图4的过程4000、和/或其组合。
图3是根据本公开的实施例的用于高效处置屏蔽向量存储器访问上的异常处理的示例性技术3000的图。技术3000包括:监视3100屏蔽向量存储器指令;基于屏蔽向量存储器指令的存储器占用来执行3200存储器保护违规检查,并且忽略与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息;在基于存储器占用的存储器保护违规的情况下,对向量的向量元素执行3300存储器保护违规检查;如果针对向量元素启用了屏蔽位,则引发3400故障异常;以及如果针对向量元素没有检测到存储器保护违规,则继续3500屏蔽向量存储器指令的执行。可以在适用和适当时使用图1的集成电路1100、图1的处理器核心1200、图1的标量处理单元1210、图1的向量处理单元1220、图1的(多个)寄存器堆1230、图1的存储器保护电路1270、图2的集成电路2100、图2的处理器核心2200、图2的流水线2220、图2的(多个)寄存器堆2210、和/或图2的存储器保护电路2310来实现技术3000。
技术3000包括监视3100屏蔽向量存储器指令。存储器保护电路能够监视包括屏蔽向量存储器指令的向量存储器指令。存储器保护电路能够在标量单元处理或操作期间以及在向量单元处理或操作期间监视处理器核心中的向量存储器指令。
技术3000包括基于屏蔽向量存储器指令的存储器占用来执行3200存储器保护违规检查,并且忽略与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息。向量能够具有N个向量元素。存储器保护电路能够在不考虑屏蔽信息的标量处理期间执行存储器检查违规。存储器保护电路使用与屏蔽向量存储器指令相关的存储器地址范围相关联的存储器占用。能够使用如本文描述的以及如在2020年9月2日提交的题为“用于向量操作的存储器保护(MEMORY PROTECTION FOR VECTOR OPERATIONS)”的美国临时申请专利序列号63/073,916(该专利通过引用的方式全部并入本文中)中描述的各种技术来确定存储器占用。
技术3000包括在基于存储器占用的存储器保护违规的情况下,对向量的向量元素执行3300存储器保护违规检查。不是在基于存储器占用检测到存储器保护违规之后引发故障异常,而是存储器保护电路等待向量处理单元完成将屏蔽信息加载到屏蔽或向量寄存器中。在实现方式中,屏蔽寄存器的加载不取决于存储器保护违规处理。在实现方式中,其他操作已经启动了屏蔽寄存器的加载。在屏蔽寄存器加载了向量的屏蔽信息之后,存储器保护电路针对向量中的向量元素来确定屏蔽位是否被启用。启用的屏蔽位指示与向量元素相关联的(多个)存储器地址是相关的,例如,(多个)存储器地址将被使用或处理。未启用位指示存储器地址不相关。
技术3000包括如果屏蔽位被启用并且针对向量元素检测到存储器违规,则引发3400故障异常。如果屏蔽位被启用并且针对向量元素检测到存储器违规,则存储器保护电路引发故障异常。操作系统执行相对于屏蔽向量存储器指令的故障异常处理,其包括各种过程,诸如暂停屏蔽向量存储器指令的执行、检修来自磁盘的缺页故障等。
技术3000包括如果针对向量元素没有检测到存储器保护违规,则继续3500执行屏蔽向量存储器指令。如果设置了向量元素的屏蔽位,并且没有检测到针对该向量元素的存储器保护违规,则执行对应的存储器访问,并且执行能够继续。存储器保护电路忽略与屏蔽位未启用或未设置的向量元素相关联的任何存储器保护违规。存储器属性检查能够在故障异常处理后并行或顺序地执行。能够在不考虑屏蔽信息的情况下进行存储器属性检查(例如,基于存储器占用)。如果推测性访问被拒绝,则针对向量的向量元素执行存储器保护违规检查。如果针对存储器占用或(多个)存储器区域的推测性访问被允许,即,它是可高速缓存的存储器,则屏蔽向量存储器指令的执行能够继续。当在不考虑屏蔽信息的情况下执行和通过存储器违规检查和存储器属性检查时,则会发生优化执行。如果在不考虑屏蔽信息的情况下访问是非幂等的,即访问存储器区域存在潜在的副作用,则推测性访问不被允许。
图4是根据本公开的实施例的用于高效处置屏蔽向量存储器访问上的异常处理的示例性技术4000的图。技术4000包括:在标量单元处处理4100屏蔽向量存储器指令;监视4200屏蔽向量存储器指令的标量处理;在标量处理期间,执行4300第一级存储器保护违规检查,其忽略与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息;在屏蔽向量存储器指令的向量处理期间,等待4400直到屏蔽寄存器加载完成为止;在来自第一级存储器检查的存储器保护违规检测的情况下,在向量处理期间,对向量的向量元素执行4500第二级存储器保护违规检查;如果针对向量元素启用了屏蔽位,则引发4600故障异常;并且如果针对向量元素没有检测到存储器保护违规,则继续4700屏蔽向量存储器指令的执行。可以在适用和适当时使用图1的集成电路1100、图1的处理器核心1200、图1的标量处理单元1210、图1的向量处理单元1220、图1的(多个)寄存器堆1230、图1的存储器保护电路1270、图2的集成电路2100、图2的处理器核心2200、图2的流水线2220、图2的(多个)寄存器堆2210、和/或图2的存储器保护电路2310来实现技术4000。
技术4000包括在标量单元处处理4100屏蔽向量存储器指令。处理系统中的标量处理单元从存储器系统提取指令并且解码所提取的指令以供执行。
技术4000包括监视4200屏蔽向量存储器指令的标量处理。存储器保护电路能够监视包括屏蔽向量存储器指令的向量存储器指令。存储器保护电路能够在标量单元处理或操作期间以及向量单元处理或操作期间监视处理器核心中的向量存储器指令。
技术4000包括在标量处理期间执行4300第一级存储器保护违规检查,其忽略与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息。向量能够具有N个向量元素。存储器保护电路能够在不考虑屏蔽信息的标量处理期间执行存储器检查违规。存储器保护电路使用与屏蔽向量存储器指令相关的存储器地址范围相关联的存储器占用。能够使用如本文描述以及在2020年9月2日提交的题为“用于向量操作的存储器保护(MEMORY PROTECTION FORVECTOR OPERATIONS)”的美国临时申请专利序列号63/073,916(该专利通过引用的方式全部并入本文)中描述的各种技术来确定存储器占用。
技术4000包括在屏蔽向量存储器指令的向量处理期间等待4400,直到屏蔽寄存器加载完成为止。不是在基于存储器占用检测到存储器保护违规之后引发故障异常,而是存储器保护电路等待向量处理单元完成将屏蔽信息加载到屏蔽或向量寄存器中。在实现方式中,屏蔽寄存器的加载不取决于存储器保护违规处理。在实现方式中,其他操作已经启动了屏蔽寄存器的加载。
技术4000包括在来自第一级存储器检查的存储器保护违规检测的情况下,在向量处理期间,针对向量的向量元素执行4500第二级存储器保护违规检查。在屏蔽寄存器加载了向量的屏蔽信息之后,存储器保护电路针对向量中的向量元素来确定屏蔽位是否被启用。启用的屏蔽位指示与向量元素相关联的(多个)存储器地址是相关的,例如,(多个)存储器地址将被使用或处理。未启用位指示存储器地址不相关。
技术4000包括如果屏蔽位被启用并且针对向量元素检测到存储器违规,则引发4600故障异常。如果屏蔽位被启用并且针对向量元素检测到存储器违规,则存储器保护电路引发故障异常。操作系统执行相对于屏蔽向量存储器指令的故障异常处理,其包括各种过程,诸如暂停屏蔽向量存储器指令的执行、检修来自磁盘的缺页故障等。
技术4000包括如果针对向量元素没有检测到存储器保护违规,则继续4700执行屏蔽向量存储器指令。如果设置了向量元素的屏蔽位并且没有检测到针对该向量元素的存储器保护违规,则执行对应的存储器访问,并且执行能够继续。存储器保护电路忽略与屏蔽位未启用或未设置的向量元素相关联的任何存储器保护违规。存储器属性检查能够在故障异常处理后并行或顺序地执行。能够在不考虑屏蔽信息的情况下进行存储器属性检查(例如,基于存储器占用)。如果推测性访问被拒绝,则对向量的向量元素执行存储器保护违规检查。如果针对存储器占用或(多个)存储器区域推测性访问被允许,即,它是可高速缓存的存储器,则屏蔽向量存储器指令的执行能够继续。当在不考虑屏蔽信息的情况下执行并通过存储器违规检查和存储器属性检查时,会发生优化执行。如果在不考虑屏蔽信息的情况下访问是非幂等的,即访问存储器区域存在潜在的副作用,则推测性访问不被允许。
图5是根据本公开的实施例的用于高效处置屏蔽向量存储器访问上的异常处理的示例性技术5000的图。技术5000包括:监视5100屏蔽向量存储器指令;基于屏蔽向量存储器指令的存储器占用来执行5200存储器保护违规检查和存储器属性检查,并且忽略与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息;在存储器保护违规或推测性访问基于存储器占用而被拒绝的情况下,对向量的向量元素执行5300存储器保护违规检查;如果针对向量元素启用了屏蔽位并且检测到存储器违规,则引发5400故障异常;以及如果针对向量元素没有检测到存储器保护违规,则继续5500屏蔽向量存储器指令的执行。可以在适用和适当时使用图1的集成电路1100、图1的处理器核心1200、图1的标量处理单元1210、图1的向量处理单元1220、图1的(多个)寄存器堆1230、图1的存储器保护电路1270、图2的集成电路2100、图2的处理器核心2200、图2的流水线2220、图2的(多个)寄存器堆2210、和/或图2的存储器保护电路2310来实现技术5000。
技术5000包括监视5100屏蔽向量存储器指令。存储器保护电路能够监视包括屏蔽向量存储器指令的向量存储器指令。存储器保护电路能够在标量单元处理或操作期间以及向量单元处理或操作期间监视处理器核心中的向量存储器指令。
技术5000包括基于屏蔽向量存储器指令的存储器占用来执行5200存储器保护违规检查和存储器属性检查,并且忽略与由屏蔽向量存储器指令识别的向量相关联的屏蔽信息。向量能够具有N个向量元素。存储器保护电路能够在不考虑屏蔽信息的标量处理期间执行存储器检查违规。存储器保护电路使用与屏蔽向量存储器指令相关的存储器地址范围相关联的存储器占用。能够使用如本文描述的以及在2020年9月2日提交的题为“用于向量操作的存储器保护(MEMORY PROTECTION FOR VECTOR OPERATIONS)”的美国临时申请专利序列号63/073,916(该专利通过引用的方式全部并入本文)中描述的各种技术来确定存储器占用。存储器属性检查能够在故障异常处理后并行或顺序地执行。能够在不考虑屏蔽信息的情况下进行存储器属性检查(例如,基于存储器占用)。如果针对存储器占用或存储器区域推测性访问被允许,即,它是可高速缓存的存储器,则屏蔽向量存储器指令的执行能够继续。当在不考虑屏蔽信息的情况下执行并通过存储器违规检查和存储器属性检查时,会发生优化执行。
技术5000包括在存储器保护违规或推测性访问基于存储器占用而被拒绝的情况下,对向量的向量元素执行5300存储器保护违规检查。如果在不考虑屏蔽信息的情况下存储器访问是非幂等的,即访问存储器区域存在潜在的副作用,则推测性访问不被允许。不是在基于存储器占用检测到存储器保护违规之后或者如果推测性访问被拒绝来引发故障异常,而是存储器保护电路等待向量处理单元完成将屏蔽信息加载到屏蔽或向量寄存器中。在实现方式中,屏蔽寄存器的加载不取决于存储器保护违规处理。在实现方式中,其他操作已经启动了屏蔽寄存器的加载。在屏蔽寄存器加载了向量的屏蔽信息之后,存储器保护电路针对向量中的向量元素来确定屏蔽位是否被启用。启用的屏蔽位指示与向量元素相关联的(多个)存储器地址是相关的,例如,(多个)存储器地址将被使用或处理。未启用位指示存储器地址不相关。
技术5000包括如果屏蔽位被启用并且针对向量元素检测到存储器违规,则引发5400故障异常。如果屏蔽位被启用并且针对向量元素检测到存储器违规,则存储器保护电路引发故障异常。操作系统执行相对于屏蔽向量存储器指令的故障异常处理,其包括各种过程,诸如暂停屏蔽向量存储器指令的执行、检修来自磁盘的缺页故障等。
技术5000包括如果针对向量元素没有检测到存储器保护违规,则继续5500执行屏蔽向量存储器指令。如果设置了向量元素的屏蔽位,并且针对向量元素没有检测到存储器保护违规,则执行对应的存储器访问,并且执行能够继续。存储器保护电路忽略与屏蔽位未启用或未设置的向量元素相关联的任何存储器保护违规。
尽管本文的一些实施例涉及方法,但是本领域技术人员将理解,它们也可以体现为系统或计算机程序产品。因此,本发明的各方面可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者组合软件和硬件各方面的实施例的形式,它们可以在本文中统称为“处理器”、“设备”或“系统”。此外,本发明的各方面可以采用体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质上体现有计算机可读程序代码。可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如(但不限于)电子、磁性、光学、电磁、红外线或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的较具体示例(非详尽列表)包括以下各项:具有一个或多个导线的电连接件、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存存储器)、光纤、便携式紧密光盘只读存储器(CD-ROM)、光学存储设备、磁性存储设备、或以上各项的任何合适组合。在本文档的上下文中,计算机可读存储介质可以是能够含有或存储由指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。
计算机可读信号介质可以包括其中体现计算机可读程序代码的传播数据信号,例如,在基带中或作为载波的一部分。此类传播信号可以采用多种形式中的任一个,包括但不限于电磁、光学或其任何合适的组合。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质,并且能够传达、传播或传送由指令执行系统、装置或设备使用或与其结合使用的程序。
体现在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于CD、DVD、无线、有线、光纤电缆、RF等,或者前述的任何合适组合。
用于执行本发明各方面的操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写,包括诸如Java、Smalltalk、C++等面向对象的编程语言以及诸如“C”编程语言或类似编程语言的常规程序化编程语言。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行,作为独立的软件包,部分在用户的计算机上以及部分在远程计算机上或完全在远程计算机或服务器上执行。在后者情形中,远程计算机可以通过任何类型的网络而连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以进行到外部计算机的连接(例如,通过使用因特网服务提供商的因特网)。
下面参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合能够由计算机程序指令来实现。
可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图方框中指定的功能/动作的部件。这些计算机程序指令也可以存储在计算机可读介质中,该计算机可读介质可以指导计算机、其他可编程数据处理装置或其他设备以特定方式运作,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图框或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以加载到计算机、其他可编程数据处理装置或其他设备上,以使得要在计算机、其他可编程装置或其他设备上执行的一系列操作步骤产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图框或多个框中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能性和操作。就此而言,流程图或框图中的每个框可以表示代码的模块、分段或部分,其包含用于实现指定的(多个)逻辑功能的一个或多个可执行指令。还应注意,在一些替代实现方式中,框中所指出的功能可能不按照图中所示的顺序发生。
虽然已经结合某些实施例描述了本公开,但应理解,本公开不限于所公开的实施例,相反,本公开旨在覆盖包括在所附权利要求的范围内的各种修改、组合和等效布置,该范围符合最广泛的解释,以便包含法律所允许的所有此类修改和等效结构。

Claims (20)

1.一种用于执行指令的集成电路,包括:
处理器核心,所述处理器核心包括被配置成执行屏蔽向量存储器指令的流水线;以及
存储器保护电路,所述存储器保护电路被配置成检查存储器保护违规,所述存储器保护电路被配置成:
监视所述屏蔽向量存储器指令;
基于屏蔽向量存储器指令的存储器占用,在标量处理期间执行存储器保护违规检查,并且忽略与由所述屏蔽向量存储器指令识别的向量相关联的屏蔽信息;
在存储器保护违规或推测性访问基于所述存储器占用而被拒绝的情况下,在向量处理期间,对所述向量的向量元素执行存储器保护违规检查;
当屏蔽位被启用并且针对向量元素检测到存储器违规时,引发故障异常;以及
如果针对所述向量元素没有检测到存储器保护违规,则继续所述屏蔽向量存储器指令的执行。
2.根据权利要求1所述的集成电路,其中,所述存储器占用是与所述屏蔽向量存储器指令相关联的存储器地址范围的指示符。
3.根据权利要求1所述的集成电路,其中,所述存储器保护电路还被配置成:
等待直到屏蔽寄存器被所述处理器核心的向量处理器加载了屏蔽信息为止。
4.根据权利要求1所述的集成电路,其中,所述存储器保护电路还被配置成:
当屏蔽位未被设置时,忽略针对向量元素的检测到的存储器保护违规。
5.根据权利要求1所述的集成电路,其中,所述存储器保护电路在所述标量处理期间和在所述向量处理期间监视所述屏蔽向量存储器指令。
6.根据权利要求1所述的集成电路,其中,所述存储器保护电路还被配置成:
如果相对于所述存储器占用没有检测到存储器保护违规并且推测性访问被允许,则继续所述屏蔽向量存储器指令的执行。
7.根据权利要求1所述的集成电路,其中,所述处理器核心的标量单元被配置成提取和解码所述屏蔽向量存储器指令。
8.一种用于执行指令的集成电路,包括:
处理器核心,所述处理器核心包括至少标量处理器和向量处理器;以及
存储器保护电路,所述存储器保护电路被配置成:
监视由所述标量处理器对屏蔽向量存储器指令的处理;
在标量处理期间,执行第一级存储器保护违规检查和幂等存储器属性检查,其忽略与由所述屏蔽向量存储器指令识别的向量相关联的屏蔽信息;
在由所述向量处理器对所述屏蔽向量存储器指令的向量处理期间,等待直到屏蔽寄存器加载完成为止;
在来自所述第一级存储器检查的存储器保护违规检测或推测性访问基于检查所述幂等存储器属性而被拒绝的情况下,在所述向量处理期间,对所述向量的向量元素执行第二级存储器保护违规检查;
如果屏蔽位被启用并且针对向量元素检测到存储器违规,则引发故障异常;以及
如果针对所述向量元素没有检测到存储器保护违规,则继续所述屏蔽向量存储器指令的执行。
9.根据权利要求8所述的集成电路,其中,所述第一级存储器保护违规检查是基于指示与所述屏蔽向量存储器指令相关联的存储器地址范围的存储器占用。
10.根据权利要求8所述的集成电路,其中,所述存储器保护电路还被配置成:
当屏蔽位未被设置时,忽略针对向量元素的检测到的存储器保护违规。
11.根据权利要求8所述的集成电路,其中,所述存储器保护电路在所述向量处理期间监视所述屏蔽向量存储器指令。
12.根据权利要求8所述的集成电路,其中,所述存储器保护电路还被配置成:
如果相对于所述第一级存储器保护违规检查元素没有检测到存储器保护违规并且推测性访问被允许,则继续所述屏蔽向量存储器指令的执行。
13.根据权利要求8所述的集成电路,其中,所述标量处理器被配置成提取和解码所述屏蔽向量存储器指令。
14.一种方法,包括:
监视屏蔽向量存储器指令;
基于屏蔽向量存储器指令的存储器占用,在标量处理期间执行存储器保护违规检查,并且忽略与由所述屏蔽向量存储器指令识别的向量相关联的屏蔽信息;
在存储器保护违规或推测性访问基于所述存储器占用而被拒绝的情况下,在向量处理期间,对所述向量的向量元素执行存储器保护违规检查;
当屏蔽位被启用并且针对向量元素检测到存储器违规时,引发故障异常;以及
如果针对所述向量元素没有检测到存储器保护违规,则继续所述屏蔽向量存储器指令的执行。
15.根据权利要求14所述的方法,其中,所述存储器占用是与所述屏蔽向量存储器指令相关联的存储器地址范围的指示符。
16.根据权利要求14所述的方法,还包括:
等待直到屏蔽寄存器被向量处理器加载了屏蔽信息为止。
17.根据权利要求14所述的方法,还包括:
当屏蔽位未被设置时,忽略针对向量元素的检测到的存储器保护违规。
18.根据权利要求14所述的方法,其中,所述监视还包括:
在所述标量处理期间监视所述屏蔽向量存储器指令;以及
在所述向量处理期间监视所述屏蔽向量存储器指令。
19.根据权利要求14所述的方法,还包括:
如果相对于所述存储器占用没有检测到存储器保护违规并且推测性访问被允许,则继续所述屏蔽向量存储器指令的执行。
20.根据权利要求19所述的方法,还包括:
基于所述存储器占用,在标量处理期间执行存储器属性检查,并且忽略与由所述屏蔽向量存储器指令识别的向量相关联的所述屏蔽信息。
CN202180053581.3A 2020-09-02 2021-09-01 屏蔽存储器访问的高效处理 Pending CN116097229A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063073912P 2020-09-02 2020-09-02
US63/073,912 2020-09-02
PCT/US2021/048599 WO2022051325A1 (en) 2020-09-02 2021-09-01 Efficient processing of masked memory accesses

Publications (1)

Publication Number Publication Date
CN116097229A true CN116097229A (zh) 2023-05-09

Family

ID=78087502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180053581.3A Pending CN116097229A (zh) 2020-09-02 2021-09-01 屏蔽存储器访问的高效处理

Country Status (5)

Country Link
US (1) US20240012948A1 (zh)
EP (1) EP4208791A1 (zh)
KR (1) KR20230054872A (zh)
CN (1) CN116097229A (zh)
WO (1) WO2022051325A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US8271832B2 (en) * 2008-08-15 2012-09-18 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US9239735B2 (en) * 2013-07-17 2016-01-19 Texas Instruments Incorporated Compiler-control method for load speculation in a statically scheduled microprocessor
US9569127B2 (en) * 2014-12-29 2017-02-14 International Business Machines Corporation Computer instructions for limiting access violation reporting when accessing strings and similar data structures

Also Published As

Publication number Publication date
EP4208791A1 (en) 2023-07-12
KR20230054872A (ko) 2023-04-25
US20240012948A1 (en) 2024-01-11
WO2022051325A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
CN106716434B (zh) 具有独立的用户域与管理程序域的存储器保护密钥架构
US8527737B2 (en) Using addresses to detect overlapping memory regions
WO2017146860A1 (en) Combining loads or stores in computer processing
KR102132805B1 (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
JP2020510916A (ja) ロード命令のメモリ・アクセスを回避するためのコンピュータ実装方法、システム、およびコンピュータ・プログラム
US10387072B2 (en) Systems and method for dynamic address based mirroring
US11113065B2 (en) Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers
JP6352386B2 (ja) 定数キャッシュを使用してより効率的にリテラル生成データを従属命令に転送するための方法および装置
CN114662426A (zh) 检测瞬态执行攻击的仿真状态
US20140281246A1 (en) Instruction boundary prediction for variable length instruction set
US20190370038A1 (en) Apparatus and method supporting code optimization
US11847060B2 (en) Data cache with prediction hints for cache hits
US9639477B2 (en) Memory corruption prevention system
CN111352757A (zh) 检测未初始化存储器读取的设备、系统和方法
US20240012948A1 (en) Efficient processing of masked memory accesses
US10162640B2 (en) Instruction for performing an overload check
TW202215252A (zh) 遮罩記憶體存取之有效率處理
US8589735B2 (en) Creating randomly ordered fields while maintaining the temporal ordering based on the value of the fields
US20230078985A1 (en) Checker and checking method for prossor circuit
US20230305969A1 (en) Memory protection for gather-scatter operations
US20230315649A1 (en) Memory protection for vector operations

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