CN110291507B - 用于提供对存储器***的加速访问的方法和装置 - Google Patents
用于提供对存储器***的加速访问的方法和装置 Download PDFInfo
- Publication number
- CN110291507B CN110291507B CN201880011082.6A CN201880011082A CN110291507B CN 110291507 B CN110291507 B CN 110291507B CN 201880011082 A CN201880011082 A CN 201880011082A CN 110291507 B CN110291507 B CN 110291507B
- Authority
- CN
- China
- Prior art keywords
- instruction
- computer processor
- data
- exception
- memory access
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 9
- 230000001934 delay Effects 0.000 claims 4
- 239000000872 buffer Substances 0.000 description 44
- 238000012545 processing Methods 0.000 description 41
- 238000004590 computer program Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Memory System (AREA)
Abstract
本发明呈现了一种计算机***。所述计算机***包括存储数据的存储器***、计算机处理器和存储器访问引擎。所述存储器访问引擎被配置为:从所述计算机处理器接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述数据;基于所述第一指令从所述存储器***获取所述数据的至少一部分;并且在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送指示以使得所述计算机处理器能够执行所述计算进程的第二指令。
Description
技术领域
本公开一般地涉及计算机架构的领域,并且更具体地,本公开涉及用于提供对存储器***的加速访问的方法和装置。
背景技术
可以包括动态随机存取存储器(DRAM)和高速缓存存储器设备的存储器***提供临时存储空间,所述临时存储空间可由计算机处理器或者由其他设备(例如,输入/输出(I/O)设备)访问。存储器***可用于存储数据,所述数据然后可被取出到计算机处理器和/或I/O设备。计算机处理器还可将处理的结果存储到存储器***中以供由计算机处理器或者由I/O设备随后处理。尽管DRAM提供合理的访问速度,然而存储器访问等待时间仍然是计算机处理器的瓶颈,尤其是当计算机处理器使用其计算资源来执行存储器访问任务时。当例如其他指令的处理被延迟直到存储器访问任务完成为止时,存储器访问等待时间可严重地使计算机处理器的性能降级。
发明内容
本公开的实施例提供一种计算机***。所述计算机***包括存储数据的存储器***、计算机处理器和存储器访问引擎。所述存储器访问引擎被配置为:从所述计算机处理器接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述数据;基于所述第一指令从所述存储器***获取所述数据的至少一部分;在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送指示以使得所述计算机处理器能够执行所述计算进程的第二指令。
本公开的实施例还提供另一计算机***。所述计算机***包括:存储器***,所述存储器***存储第一数据和第二数据;计算机处理器,所述计算机处理器包括与第一核心标识符相关联的第一计算机处理器核心和与第二核心标识符相关联的第二计算机处理器核心;以及存储器访问引擎。所述存储器访问引擎被配置为:从所述第一计算机处理器核心接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述第一数据;使所述第一指令与所述第一核心标识符相关联;基于所述第一指令从所述存储器***获取所述数据的至少一部分;在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送包括所述第一核心标识符的指示以使得所述第一计算机处理器核心能够执行所述计算进程的第二指令。
本公开的实施例还提供一种存储器访问方法。所述方法可由与计算机处理器且与存储器***耦合的存储器访问引擎执行。所述方法包括:从所述计算机处理器接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述数据;基于所述第一指令从所述存储器***获取所述数据的至少一部分;并且在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送指示以使得所述计算机处理器能够执行所述计算进程的第二指令。
本公开的实施例还提供另一存储器访问方法。所述方法可由存储器访问引擎执行,所述存储器访问引擎与存储器***耦合且与计算机处理器耦合,所述存储器***存储第一数据和第二数据,所述计算机处理器包括与第一核心标识符相关联的第一计算机处理器核心和与第二核心标识符相关联的第二计算机处理器核心。所述方法包括:从所述第一计算机处理器核心接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述第一数据;使所述第一指令与所述第一核心标识符相关联;基于所述第一指令从所述存储器***获取所述第一数据的至少一部分;以及在获取所述第一数据的所述至少一部分之后,向所述计算机处理器发送包括所述第一核心标识符和所述第一指令的执行状态的指示以使得所述第一计算机处理器核心能够执行所述计算进程的第二指令。
所公开的实施例的附加目的和优点将部分地在以下描述中阐述,并且部分地将从说明书中显而易见,或者可以通过对实施例的实践来学习。所公开的实施例的目的和优点可以通过权利要求中阐述的要素和组合来实现和获得。
应当理解的是,以上一般描述和以下详细描述都仅是示例性和说明性的,而不限制如要求保护的所公开的实施例。
附图说明
图1A是图示可使用本公开的实施例的示例性计算机***的示意图。
图1B是图示图1A的计算机***的示例性操作的定时图。
图2A是图示根据本公开的实施例的示例性计算机***的示意图。
图2B和图2C是图示图2A的计算机***的示例性组件的图。
图2D是图示根据本公开的实施例的另一示例性计算机***的示意图。
图2E是图示图2A的计算机***的示例性操作的定时图。
图3是图示根据本公开的实施例的执行存储器访问的示例性方法的流程图。
具体实施方式
现在将详细地参考示例性实施例,其示例被图示在附图中。以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或类似的元件。在示例性实施例的以下描述中阐述的实施方式不表示与本发明一致的所有实施方式。替代地,它们仅仅是与如所附权利要求中所叙述的、与本发明有关的方面一致的装置和方法的示例。
本公开的实施例提供用于提供对存储器***的加速访问的方法和存储器访问引擎。利用本公开的实施例,在计算机处理器接收到计算进程的存储器访问指令之后,计算机处理器可将指令发送到存储器访问引擎,所述存储器访问引擎可代表计算机处理器执行存储器访问指令。结果,计算机处理器的计算资源可免于执行高等待时间存储器访问指令,其可严重地使计算机处理器的性能降级。此外,在存储器访问指令的执行期间,存储器访问引擎可向计算机处理器发送状态指示。该状态指示使得计算机处理器能够确定计算进程的后续指令是否对存储器访问指令有数据依赖性,并且数据依赖性一被移除或者发现不存在就执行后续指令。结果,存储器访问任务的性能对计算进程的指令的执行造成最小中断。这些步骤可显著地提高计算机处理器的性能。
现在参考图1A,图1A图示可使用本公开的实施例的计算机***100。如图1A中所示,计算机***100包括计算机处理器101和存储器***102。存储器***102可以包括DRAM设备103和高速缓存设备104,并且可存储数据和指令。指令可以是计算机程序105的一部分,所述计算机程序105当由处理流水线106执行时,使处理流水线106访问存储在存储器***102中的数据。计算机程序可由编译器(图1A中未示出)生成为由处理流水线106执行的指令集。作为图1A中所示的说明性示例,计算机程序105包括指令105a、105b和105c。指令105a可以是用于将1000个字节的数据从标记为“src”的存储器位置复制到标记为“dst”的存储器位置的“memcpy”(存储器复制)指令。编译器可以将memcpy指令解码成一组“加载”指令(用于从存储器读取数据)和“存储”指令(用于将数据写入到存储器中)。每个加载和存储指令可访问存储器中的8个字节的数据。例如,为了复制1000个字节的数据,编译器可以生成125对“load(加载)”和“store(存储)”指令,其中的每一个均用于从存储器内的一位置加载一个字节的数据并且将该字节的数据存储回到存储器中的另一位置。指令105b和105c可以是算术指令(例如,加法)。
计算机处理器101还包括处理流水线106、指令缓冲器108、执行管理单元110和存储器管理单元(MMU)112。这些单元和缓冲器中的每一个均可以包括基于例如金属氧化物半导体场效应晶体管(MOSFET)而构造的一组组合和顺序逻辑电路。执行管理单元110可通过处理流水线106来控制和管理指令的执行。例如,在执行管理单元110接收到要执行计算机程序105的指示(例如,来自图1A中未示出的操作***)之后,执行管理单元110可创建计算进程,所述计算进程可通过处理流水线106来提供计算机程序105的执行的状态的指示。在创建计算进程之后,执行管理单元110可将计算机程序105从辅助存储设备(例如,硬盘驱动器)加载到存储器***102中,并且控制指令缓冲器108以从存储器***102获取计算机程序105的指令集。
可根据计算机程序中反映的顺序次序来存储和执行指令集。例如,如图1A中所示,指令缓冲器108包括缓冲器头指针和缓冲器尾指针。在执行管理单元110的控制下,指令缓冲器108可以将存储在与缓冲器头指针相关联的缓冲器位置处的指令取出到处理流水线106以供执行。处理流水线106在执行指令时,可根据指令来访问存储器***102以发送或者接收数据114。在取出指令之后,指令缓冲器108可从缓冲器中移除指令,并且将缓冲器头指针移动到下一个缓冲器位置以取出下一个指令以供执行。
执行管理单元110还可基于各种准则来控制由指令缓冲器108对指令的取出。例如,执行管理单元110可以确定指令是否引起异常。当指令的执行可对于计算机处理器导致反常或异常操作条件时,可以发生异常。作为说明性示例,图1A的计算机程序105的memcpy指令可使计算机处理器101访问存储器***102内的不存在的存储器位置或计算机处理器101不具有访问权限的存储器位置。
MMU 112为不同的计算进程分配和管理存储器空间。在执行管理单元110为计算机程序105的执行创建计算进程之后,MMU 112可在存储器***102中指派一组物理存储器位置,其中每个存储器位置与物理地址相关联。MMU 112还可创建虚拟存储器空间,并且将该虚拟存储器空间作为该组物理存储器位置的别名提供给计算进程。虚拟存储器空间可包括一组页面,其中的每一个可包括一组连续的虚拟存储器位置以形成集群型存储器空间。每个虚拟存储器位置可与虚拟存储器地址相关联并且可被映射到由MMU 112指派的物理存储器位置。页面通常包括4096个字节的存储器空间,并且可将通过memcpy指令105a访问的1000个字节的数据存储在虚拟存储器空间的一个页面内。
虚拟存储器地址与物理存储器地址之间的映射可被存储在由MMU 112维护的页面表中。页面表还可由执行管理单元110访问以便检测异常。例如,基于与memcpy指令相关联的虚拟存储器地址,执行管理单元110可参考页面表以获得一组对应的物理地址。如果执行管理单元110不能从页面表中找到由计算机程序105引用的虚拟地址的物理地址,或者物理地址对计算机程序105(或处理流水线106)不可访问,则执行管理单元110可以确定memcpy指令引起异常。在这样的情况下,可能需要特殊处理(例如,改变计算机程序的执行的正常流程、终止执行等)来处理异常。例如,执行管理单元110可以确定要改变计算机程序105的执行的流程(例如,跳过memcpy指令、终止计算机程序105的执行等)。
异常的处理不同于中断的处理,因为中断可使计算机处理器201挂起计算进程(例如,针对计算机程序205的计算进程)的执行,并且启动第二计算进程(例如,以确认中断)。在第二计算进程完成之后,计算机处理器201可以切换回针对计算机程序205的计算进程,并且执行计算机程序205的指令的其余部分。另一方面,在异常的处理期间,计算机处理器201维护引起异常的计算机进程的执行。
此外,如果后续指令对在先指令有数据依赖性,则执行管理单元110还可抑制后续指令的执行。在计算资源可用之前,还可抑制执行。例如,如图1A中所示,计算机程序105的指令105b“$R3=dst[5]+1”需要存储在标记为“dst”的存储器位置中的数据并且该数据还被前一个memcpy指令(指令105a)修改。基于对这样的数据依赖性的确定,执行管理单元110可抑制指令105b的执行直到指令105a的执行完成为止,以确保指令105b对最新的存储器数据进行操作。此外,尽管在指令105c($R2=$R1+1)与指令105a和105b之间不存在数据依赖性,然而由于有限的计算资源,指令105c的执行还可能被延迟。例如,指令缓冲器108具有有限数量的条目,并且指令105c不能被存储在指令缓冲器108中(并且变得可用于取出),直到用于memcpy指令的至少一些指令已被取出到处理流水线106并从指令缓冲器108中移除为止。
现在参考图1B,图1B图示用于执行图1A的计算机程序105的定时图。如图1B中所示,在从指令缓冲器108向处理流水线106取出将每个指令(其包括从存储器读取一个字节的数据并且将一个字节的数据存储到存储器)之前,执行管理单元110通过例如参考页面表以获得对应于由指令所参考的虚拟存储器地址的物理存储器地址来执行异常验证。在确定指令通过异常验证之后,执行管理单元110可将指令取出到处理流水线106以供处理。在memcpy指令105a的执行完成之后,指令105b和105c然后被取出到处理流水线106以供执行。
如图1B中所示,memcpy指令105a的执行可对计算机程序105的其他指令的执行造成巨大延迟。例如,针对1000个单字节存储器访问指令中的每一个执行异常验证,这将延迟添加到memcpy指令105a的执行。此外,因为存储器访问指令填满指令缓冲器108,所以其他指令(包括不依赖于memcpy指令105a的执行结果的指令105c)的执行也必须等待存储器访问指令中的至少一些被取出并从指令缓冲器108中移除。
为了减轻通过高等待时间存储器访问操作所造成的负担,可提供存储器访问引擎来执行存储器访问操作,这允许计算机处理器101的计算资源被用于其他操作。现在参考图2A,图2A图示根据本公开的实施例的计算机***200。如图2A中所示,计算机***200包括计算机处理器201(其包括图1A的处理流水线106和指令缓冲器108)、执行管理单元210和MMU212。计算机***200还包括存储器访问引擎220和图1A的存储器***102。存储器访问引擎220可以包括基于MOSFET而构造的一组组合和顺序逻辑电路。
执行管理单元210可通过处理流水线106并通过存储器访问引擎220来控制和管理计算机程序205的指令的执行。在执行管理单元210接收到要执行计算机程序205的指示(例如,来自图2A中未示出的操作***)之后,执行管理单元210可为计算机程序205创建计算进程,并且将计算机程序205的编译指令从辅助存储设备(例如,硬盘驱动器)加载到存储器***102中。执行管理单元210可控制指令缓冲器108以从存储器***102获取指令并将这些指令存储在缓冲器中。
在将指令存储在缓冲器中之后,执行管理单元210还可以确定要将一些指令的执行委托给存储器访问引擎200。确定可基于各种准则。作为示例,执行管理单元210可以确定要将涉及在存储器内复制或者移动数据的任何指令(包括但不限于memcpy和“strcpy”(字符串复制)指令)的执行委托给存储器访问引擎200。作为另一示例,执行管理单元210还可以确定要将需要预定数量的对存储器***102的写入和读取操作的存储器数据复制/移动指令委托给存储器访问引擎220。作为说明性示例,执行管理单元210可以基于对指令205a进行解码的结果来确定指令包括用于将12000个字节的数据从标记为“src”的存储器位置复制到标记为“dst”的存储器位置的memcpy指令。执行管理单元210可以确定指令205a需要对存储器***102的大量(例如,12000个)读取操作(例如,加载指令)和写入操作(例如,存储指令),并且由于存储器访问等待时间可对处理流水线106造成巨大延迟。基于这些确定,执行管理单元210可以将指令205a的执行委托给存储器访问引擎220。作为另一示例,执行管理单元210还可以在高速缓存未命中的情况下确定要将存储器数据复制/移动指令的执行委托给存储器访问引擎220,这可能需要对DRAM 103进行读取和写入操作,其访问等待时间比例如对高速缓存设备104的读取和写入操作大得多。在这些示例中,执行管理单元210可以将表示指令205a的加载和存储指令集发送到存储器访问引擎220以供执行。存储器访问引擎220然后可在存储器***102处获取和/或存储数据222。
在将指令205a发送到存储器访问引擎220以供执行之后,执行管理单元210可以从指令缓冲器108中移除所对应的加载和存储指令(例如,通过改变缓冲器头指针的位置),以允许处理流水线106执行剩余的指令。如果执行管理单元210确定与缓冲器头指针相关联的指令对正在由存储器访问引擎220执行的任何指令没有数据依赖性,则执行管理单元210可控制指令缓冲器108以将该指令取出到处理流水线106以供执行,而不管存储器访问引擎220是否完成指令的执行。作为说明性示例,如图2A中所示,在将指令205a发送到存储器访问引擎220以供执行之后,执行管理单元210可以基于指令205b相对于指令205a没有数据依赖性的确定来控制指令缓冲器108以将指令205b取出到处理流水线106。利用这样的布置,指令205b的执行可与存储器访问指令205a的执行并行地发生,而不是在存储器访问指令205a的执行之后发生,并且可能不太受存储器***102的存储器访问等待时间(尤其用于访问DRAM部分)影响。结果,可提高计算机处理器202的性能。
另一方面,如果执行管理单元210确定与缓冲器头指针相关联的指令对正在由存储器访问引擎220执行的存储器访问指令有数据依赖性,则执行管理单元210可以抑制指令到处理流水线106的取出,直到它从存储器访问引擎220接收到存储器访问指令中的至少一些的执行已完成的指示224为止。执行管理单元210还可以在等待指示224的同时取出不具有数据依赖性的其他指令。作为说明性示例,如图2A中所示,执行管理单元210可以确定指令205c对存储在存储器位置“dst[099]”中的值执行加法运算。此外,执行管理单元210还可以确定存储器位置“dst[099]”与“dst”存储器位置相关联,所述“dst”存储器位置在memcpy指令205a的执行期间被更新。因此,执行管理单元210可以确定指令205c对指令205a有数据依赖性。基于此确定,执行管理单元210可以使将指令205c取出到处理流水线106延迟,直到它从存储器访问引擎220接收到已通过memcpy指令的执行更新了存储器位置dst[099]的指示224为止。在一些实施例中,执行管理单元210还可以使将指令205c取出到处理流水线106延迟,直到它接收到memcpy指令205a的执行已完成的指示224为止。
指示224可以是从存储器访问引擎220到执行管理单元210(或者到计算机处理器202的其他组件)的、被配置为向执行管理单元210提供由存储器访问引擎220对指令的执行的状态的通信的一部分。现在参考图2B,图2B将指示224a图示为图2A的指示224的示例。如图2B中所示,指示224a可包括一个或多个存储器访问指令标识符225与一个或多个状态指示符226之间的映射。指令标识符225使得执行管理单元210能够跟踪发送到存储器访问引擎220的多个指令的执行的状态。状态指示符226可包括特定于指令的状态数据。例如,在指令包括存储器数据复制或移动操作的情况下,状态指示符226可包括指示例如已被复制或者移动的存储器数据量的数值。
在一些实施例中,指示224a还可以包括核心标识符228,其可标识发送指令的处理器核心。在计算机***200包括多核心处理器的情况下,每个核心可包括处理流水线和执行管理单元,并且可将指令发送到存储器访问引擎220以供执行。在这样的情况下,存储器访问引擎220可生成使状态信息与它从每个核心接收到的每个指令相关联的指示224,并且将指示224广播给每个核心。当核心接收到指示224时,它然后可参考核心标识符228以标识它发送到存储器访问引擎220的指令的状态信息。存储器访问引擎220可以从例如执行管理单元210接收核心标识符228。
图2C图示指示224b,其可以是指示224的另一示例。指示224b可用于提供memcpy指令的执行的状态。如图2C中所示,指示224b包括核心标识符228,以及用于源虚拟地址230、目的地虚拟地址232、源物理地址234和目的地物理地址236的一组地址字段。这些地址可从特定memcpy指令的参数导出,并且可由MMU 212提供。
作为说明性示例,对于指令205a“memcpy(dst,src,12000)”,“dst”和“src”可以是虚拟地址空间中的存储器位置的标签。虚拟地址空间可由MMU 212分配给与计算机程序205的执行相关联的计算进程。例如,“src”可以是用于要复制的数据的存储器位置并且可与由MMU 212指派的源虚拟地址230相关联,然而“dst”可以是要用数据更新的存储器位置并且可与由MMU 212指派的目的地虚拟地址232相关联。进一步地,源虚拟地址230和目的地虚拟地址232可根据由MMU 212提供的页面表被分别映射到存储器***102的源物理地址234和目标物理地址236。
在从执行管理单元210接收到memcpy指令205a(其包括一组编译的加载和存储指令)之后,存储器访问引擎220可向MMU 212发送一个或多个请求以获得与该指令相关联的虚拟和物理地址,并且用由MMU 212提供的虚拟和物理地址填充源虚拟地址230、目的地虚拟地址232、源物理地址234和目的地物理地址236的字段。存储器访问引擎220还可基于memcpy指令205a的参数来确定要复制的虚拟存储器空间的页面的数量。例如,“memcpy(dst,src,12000)”指示12000个字节的数据将被复制。假定4096个字节的页面大小,存储器访问引擎220可确定总共三个页面的数据将被复制,并且用“3”初始化字段剩余页面数238。剩余页面偏移240可指示仍要复制的特定页面中的数据的起始位置,并且可被初始化在4096。
当存储器访问引擎220开始将数据从存储器***中的“src”复制到“dst”存储器位置时,存储器访问引擎220可更新与源虚拟地址230、目的地虚拟地址232、源物理地址234、目的地物理地址236、剩余页面数238和剩余页面偏移240相关联的值,并且将经更新的指示224b发送到执行管理单元210。在一些实施例中,存储器访问引擎220可以一次对于来自高速缓存设备104的一个高速缓存行的数据(例如,64个字节)(或在存在高速缓存未命中的情况下来自DRAM设备103的相同大小的数据)执行读取和写入操作以执行数据复制,并且可在每个读取和写入操作之后更新这些值。
作为说明性示例,在存储器访问引擎220执行一个读取操作和一个写入操作以从虚拟存储器空间的页面内的一位置复制数据之后,存储器访问引擎220可将与剩余页面偏移240相关联的值递减64个字节。存储器访问引擎220还可以通过同样例如将它们的值递增64个字节来更新源物理地址234和目的地物理地址236,直到剩余偏移240处的值指示页面复制已完成为止。存储器访问引擎220然后可向MMU 212发送对下一个页面的更新的源和目的地物理地址的请求。在一些实施例中,存储器访问引擎220还可在处理页面开始时发送请求,并且接收映射到页面的每个虚拟源和目的地地址的源和目的地物理地址,并且将它存储在转换后备缓冲器(TLB)中。TLB可作为高速缓存操作以用于存储从MMU 212最近接收到的一组虚拟地址与一组物理地址之间的映射。存储器访问引擎220然后可参考TLB以得到用于针对页面的读取/写入操作的经更新的源物理地址234和目的地物理地址236。在一些实施例中,计算机处理器201还可以包括TLB。计算机处理器201可通过例如向存储器访问引擎220发送在处理流水线106中发生的TLB无效请求和全局TLB击落事件来维护存储在计算机处理器201的TLB中的内容与存储在存储器访问引擎220的TLB中的内容之间的一致性。
在存储器访问引擎220完成复制一个页面的所有数据(这可能通过剩余页面偏移240的值变为零来反映)之后,存储器访问引擎220可进行到下一个页面。存储器访问引擎220可将与剩余页面数238相关联的值递减一,并且将源虚拟地址230和目的地虚拟地址232的值递增4096(页面的大小)。当剩余页面238的值变为零时,memcpy指令的执行完成。
执行管理单元210还可基于来自指示224b的数据依赖性的确定来使将后续指令(例如,指令205c)取出到处理流水线106延迟。例如,如果后续指令包括用于更新memcpy指令205a的源存储器位置的存储操作,则执行管理单元210可以确定存在写后读(read-after-write)依赖性。执行管理单元210可以使取出后续指令延迟直到memcpy指令已从源地址位置复制了数据为止,以确保memcpy指令在源地址位置被后续指令更新之前读取源。为了确定读后写(write-after-read)依赖性的存在(或移除),执行管理单元210可以基于指示224b确定通过以下示例性等式更新的当前读取虚拟地址:
当前读取地址=虚拟地址+剩余页面数×4096+剩余页面偏移量(等式1)
这里,虚拟地址可以是与源虚拟地址230或目的地虚拟地址232相关联的值,剩余页面数可以是与剩余页面数238相关联的值,并且剩余页面偏移可以是与剩余页面偏移240相关联的值。如果要通过后续指令的存储操作更新的虚拟写入地址超过基于等式1而确定的当前读取地址,则执行管理单元210可以确定后续指令试图更新仍要通过存储器指令205a读取的地址位置,并且存在读后写依赖性。执行管理单元210可以使将后续指令取出到处理流水线106延迟,直到基于指示224a执行管理单元210确定当前读取地址超过后续指令的虚拟写入地址并且读后写依赖性已被移除为止。
此外,如果后续指令包括来自通过memcpy指令205a更新的地址位置的加载操作(例如,指令205c),则执行管理单元210可以确定存在写后读依赖性,并且还可以使取出后续指令延迟直到地址位置已被更新为止,以确保后续指令读取最新的数据。为了确定写后读依赖性的存在(或移除),执行管理单元210可以基于指示224b确定根据以下示例性公式更新的当前写入虚拟地址:
当前写入地址=虚拟地址+剩余页面数×4096+剩余页面偏移(等式2)
这里,虚拟地址可以是与源虚拟地址230或目的地虚拟地址232相关联的值,剩余页面数可以是与剩余页面数238相关联的值,并且剩余页面偏移可以是与剩余页面偏移240相关联的值。如果后续指令的加载操作的虚拟读取地址超过基于等式2而确定的当前写入地址,则执行管理单元210可以确定后续指令试图读取仍要通过memcpy指令205a更新的存储器位置,并且存在写后读依赖性。执行管理单元210还可以使将后续指令取出到处理流水线106延迟,直到基于指示224a执行管理单元210确定当前写入地址超过后续指令的虚拟读取地址并且可移除写后读依赖性为止。
在一些实施例中,在执行memcpy指令205a的读取/写入操作之前,存储器访问引擎220(或执行管理单元210)可以确定读取/写入操作是否可以引起异常。如上面所讨论的,当例如memcpy指令使计算机处理器访问存储器***102内的不存在的存储器位置或计算机处理器不具有访问权限的存储器位置时,可以发生异常。当例如存储器访问引擎220发送对页面的物理源和目的地地址的请求或对正在通过特定memcpy指令更新的所有页面的请求时,可以发生异常的确定。如果MMU 212不能提供所请求的物理地址中的至少一个,则存储器访问引擎220可以确定memcpy指令将引起异常。在一些实施例中,存储器访问引擎220可以确定所接收到的物理地址是否与高速缓存设备104的高速缓存行的边界对齐,并且可以确定memcpy指令在未对齐的地址空间上操作,这可以防止存储器访问引擎220一次对一个高速缓存行执行读取/写入操作。这个可能在例如计算机程序205未在堆管理库中并入诸如malloc这样的缓冲器分配路由来为memcpy操作提供高速缓存行对齐的缓冲器时发生。
在所有这些示例中,存储器访问引擎220可以向计算机处理器201发送异常的指示,所述计算机处理器201可以包括异常处理程序(在图2A中未示出)以处理异常。可将异常信息存储为指令缓冲器108的一部分。例如,指令缓冲器108的每个条目可与异常位(在图2A中未示出)相关联。在从存储器访问引擎220接收到memcpy指令205a可以引起异常的指示(例如,由于获得物理地址的失败而导致)之后,执行管理单元210可以针对存储在缓冲器中的与memcpy指令关联的所有存储和加载指令断言异常位。计算机处理器201可以包括异常处理程序(在图2A中未示出)以通过例如改变计算机程序205的执行的正常流程、终止计算机程序205的执行等来处理异常。
如上面所讨论的,还可在具有多个处理器核心的计算机***中使用本公开的实施例。现在参考图2D,图2D图示根据本公开的实施例的计算机***250。如图2D中所示,计算机***250包括一组计算机处理器核心251-258,其中的每一个均具有第1级(L1)数据和指令高速缓存、第2级(L2)高速缓存以及第3级(L3)高速缓存。在这些高速缓存当中,L1高速缓存具有最小的大小但是提供最高的访问速度,然而L3高速缓存具有最大的大小但是提供最低的访问速度。每个计算机处理器核心与核心标识符相关联。每个计算机处理器核心还包括图2A的处理流水线106、执行管理单元210和存储器管理单元212(在图2D中未示出)。计算机处理器核心中的每一个均可以执行计算进程。计算机处理器核心还可以同时执行与同一计算进程相关联的不同指令,以加速计算进程的完成。
计算机***250进一步包括图2A的存储器访问引擎220,其可代表计算机处理器核心的每一个执行存储器访问操作(包括对L3高速缓存的访问)。存储器访问引擎220可以作为与计算机***250的计算机处理器核心分离的跳存在。存储器访问引擎220可以经由例如通道260与计算机处理器核心251-258中的每一个进行通信,利用通道260存储器访问引擎220可广播图2C的指示224b。如上面所讨论的,指示224b使存储器访问指令的执行状态信息与核心标识符228相关联。计算机处理器核心251-258中的每一个均可从通道260拾取指示,并且基于与匹配核心标识符相关联的状态信息来确定指令的取出。
此外,存储器访问引擎220还存储设备侧TLB 270,所述设备侧TLB 270可用于存储最近接收到的虚拟地址与物理地址之间的映射。还可更新设备侧TLB 270以保持与整个MMU***一致。例如,计算机处理器核心251-258中的每一个的MMU可以维护存储虚拟地址与物理地址之间的映射的一个或多个页面表。可以更新那些页面表(例如,通过操作***,或者通过其他代理)。在那种情况下,MMU可以通过信道260循环更新。设备侧TLB 270还可通过信道260拾取更新,并且相应地更新所存储的映射。
现在参考图2E,图2E图示用于由图2A的计算机***200执行计算机程序的定时图。如图2E中所示,指令缓冲器108存储指令280a(memcpy指令)及指令280b和280c(对指令280a没有数据依赖性的算术指令)以及指令280d(其对指令280a有数据依赖性)。在执行管理单元210接收到指令280a之后,它针对通过memcpy指令访问的虚拟存储空间的所有页面执行异常验证。同时,执行管理单元210还确定后续指令280b、280c和280d是否对指令280a有数据依赖性。在确定指令280b和280c没有数据依赖性之后,执行管理单元210在时间t0将指令280b取出到处理流水线106以供执行,后面是在时间t1将指令280c取出到处理流水线106以供执行。在三个指令被取出之后,它们被从指令缓冲器108中移除。另一方面,执行管理单元210还确定指令280d对memcpy指令有数据依赖性,并且抑制指令到处理流水线106的取出。
在针对memcpy的异常验证完成之后,存储器访问引擎220继续执行读取和写入操作,并且将指示224发送到执行管理单元210以提供memcpy指令的执行的状态。在时间t2,基于指示224,执行管理单元210确定要通过指令280d访问的存储器位置已被memcpy指令更新,并且数据依赖性已被移除。因此,执行管理单元210将指令280d取出到处理流水线106以供执行,并且从缓冲器中移除指令280d。这允许其他后续指令被存储在指令缓冲器108中并等待被取出。
现在参考图3,图3图示访问存储器***的示例性方法300。该方法可由包括计算机处理器201和存储器访问引擎220的计算机***(例如,计算机***200)执行。在一些实施例中,如果例如计算机处理器201包括存储器访问引擎220,则该方法还可由计算机处理器201单独执行。
在初始启动之后,方法300进行到步骤S301,其中计算机处理器201向存储器访问引擎220发送存储器访问指令(例如,memcpy指令)以供执行。存储器访问指令可以作为计算进程的一部分被执行,并且可以包括与一组虚拟地址相关联的一组加载和存储指令。发送可基于例如存储器访问指令包括对存储器102的大量加载和存储操作的确定。在从计算机处理器201接收到存储器访问指令之后,在步骤S302中,存储器访问引擎220可发送对映射到存储器访问指令的那些虚拟地址的物理地址的请求。在步骤S303中,计算机处理器201的存储器管理单元212可以将所请求的物理地址中的至少一些发送到存储器访问引擎220。
存储器访问引擎220可以确定在步骤S304中是否检测到异常。当例如计算机处理器201未能提供物理地址时,可以检测到异常。如果在步骤S304中检测到异常,则在步骤S305中,存储器访问引擎220可以向计算机处理器201的执行管理单元210发信号通知存储器访问指令可以引起异常,这允许计算机处理器201在步骤S306中处理异常。
另一方面,如果在步骤S304中未检测到异常,则在步骤S307中,存储器访问引擎220可针对存储器访问指令执行存储器访问任务。如上面所讨论的,存储器访问引擎220可以一次在存储器***102处加载或者存储一个高速缓存行的数据。在执行一个或多个存储器访问任务之后,在步骤S308中,存储器访问引擎220可以向执行管理单元210发送关于存储器访问指令的执行的状态的指示。该指示可以包括例如正在由存储器访问引擎220访问的一组物理和虚拟地址、有多少数据仍要被修改等。在一些实施例中,该指示可以包括指示224b中包括的信息,包括图2C的剩余页面数238。在步骤S309中,存储器访问引擎220还可以确定所有存储器访问任务是否都已完成。确定可基于例如剩余页面数是否为零。如果存储器访问引擎220在步骤S309中确定存在剩余任务,则它可以继续执行(在步骤S307中)。
此外,在执行管理单元210从存储器访问引擎220接收到状态指示之后,它可以确定存储器访问指令的执行不会引起任何异常。在步骤S310中,执行管理单元210然后可以从指令缓冲器108中移除存储器访问指令以处理同一计算进程的后续指令。在将后续指令从指令缓冲器108取出到处理流水线106以供执行之前,在步骤S311中,执行管理单元210可以确定后续指令是否对存储器访问指令有任何数据依赖性(例如,写后读、读后写等)。确定可基于例如与后续指令相关联的源或目的地虚拟地址,以及基于在步骤S308中接收到的状态指示以及上面的等式1和2而确定的当前源/目的地虚拟地址。如果在步骤S311中未检测到数据依赖性,则计算机处理器201的指令缓冲器108可以在步骤S312中将后续指令取出到处理流水线206。如果检测到数据依赖性,则指令缓冲器108可以基于在步骤S308中接收到的经更新的状态指示来使取出延迟,直到它确定数据依赖性已被移除为止。
应领会的是,本发明不限于已在上面描述并在附图中图示的确切结构,并且在不脱离本发明的范围的情况下,可做出各种修改和变化。意图是,本发明的范围应该仅受到所附权利要求限制。
Claims (20)
1.一种计算机***,所述计算机***包括:
存储器***,所述存储器***存储数据;
计算机处理器;以及
存储器访问引擎,所述存储器访问引擎被配置为:
从所述计算机处理器接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述数据;
基于所述第一指令从所述存储器***获取所述数据的至少一部分;并且
在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送指示以使得所述计算机处理器能够执行所述计算进程的第二指令;所述指示确定所述计算进程的后续指令对所述第一指令是否存在数据依赖性,如果不存在所述数据依赖性,则所述计算机处理器继续执行后续指令,如果存在所述数据依赖性,则所述计算机处理器延迟执行所述后续指令,直至所述指示更新并确定所述数据依赖性已被移除。
2.根据权利要求1所述的计算机***,其中,所述存储器访问引擎被进一步配置为:
获得与所述第一指令相关联的虚拟地址;
基于所述虚拟地址获得与所述第一指令相关联的物理地址;
基于获得所述物理地址的结果,确定所述第一指令是否引起异常;并且
响应于确定所述第一指令引起异常,向所述计算机处理器发送指示以使所述计算机处理器处理所述异常。
3.根据权利要求2所述的计算机***,其中,所述确定所述第一指令是否引起异常包括所述存储器访问引擎被进一步被配置为:
确定与所述物理地址相关联的页面是否存在;并且
响应于确定所述页面不存在,确定所述第一指令引起异常。
4.根据权利要求2所述的计算机***,其中,所述确定所述第一指令是否产生异常包括所述存储器访问引擎被进一步配置为:
确定与所述物理地址和所述虚拟地址中的至少一个相关联的页面是否可访问;并且
响应于确定所述页面不可访问,确定所述第一指令引起异常。
5.根据权利要求2所述的计算机***,其中,所述存储器***包括具有多个高速缓存行的高速缓存器,并且其中,所述确定所述第一指令是否引起异常包括所述存储器访问引擎被进一步配置为:
确定与所述第一指令相关联的地址是否与所述多个高速缓存行中的一个对齐;并且
响应于确定所述地址与所述多个高速缓存行中的任一个不对齐,确定所述第一指令引起异常。
6.根据权利要求5所述的计算机***,其中,所述存储器访问引擎被进一步配置为一次在一个高速缓存行中获取所述数据的所述至少第一部分。
7.根据权利要求1所述的计算机***,其中,所述指示包括指示仍待访问的所述数据的第二部分的大小和位置的信息。
8.根据权利要求1所述的计算机***,其中,所述第二指令对所述存储器访问指令有数据依赖性。
9.一种计算机***,所述计算机***包括:
存储器***,所述存储器***存储第一数据和第二数据;
计算机处理器,所述计算机处理器包括与第一核心标识符相关联的第一计算机处理器核心和与第二核心标识符相关联的第二计算机处理器核心;以及
存储器访问引擎,所述存储器访问引擎被配置为:
从所述第一计算机处理器核心接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述第一数据;
使所述第一指令与所述第一核心标识符相关联;
基于所述第一指令从所述存储器***获取所述数据的至少一部分;并且
在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送包括所述第一核心标识符的指示以使得所述第一计算机处理器核心能够执行所述计算进程的第二指令;所述指示确定所述计算进程的后续指令对所述第一指令是否存在数据依赖性,如果不存在所述数据依赖性,则所述计算机处理器继续执行后续指令,如果存在所述数据依赖性,则所述计算机处理器延迟执行所述后续指令,直至所述指示更新并确定所述数据依赖性已被移除。
10.根据权利要求9所述的计算机***,其中,所述存储器访问引擎被进一步配置为:
获得与所述第一指令相关联的虚拟地址;
基于所述虚拟地址获得与所述第一指令相关联的物理地址;
基于获得所述物理地址的结果,确定所述第一指令是否引起异常;并且
响应于确定所述第一指令引起异常,向所述第一计算机处理器核心发送指示以使所述第一计算机处理器核心处理所述异常。
11.根据权利要求9所述的计算机***,其中,所述指示包括指示仍待访问的所述数据的第二部分的大小和位置的信息。
12.根据权利要求9所述的计算机***,其中,所述存储器访问引擎还被配置为:
从所述第二计算机处理器核心接收所述计算进程的第三指令以用于从所述存储器***访问所述第二数据;并且
使所述第三指令与所述第二核心标识符相关联;
其中,所述指示包括所述第二核心标识符和所述第三指令的执行状态;以及
其中,包括在所述指示中的所述第二核心标识符使得所述第一计算机处理器核心能够忽视所述第三指令的所述执行状态。
13.一种存储器访问方法,所述方法由与计算机处理器且与存储数据的存储器***耦合的存储器访问引擎执行,所述方法包括:
从所述计算机处理器接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述数据;
基于所述第一指令从所述存储器***获取所述数据的至少一部分;以及
在获取所述数据的所述至少第一部分之后,向所述计算机处理器发送指示以使得所述计算机处理器能够执行所述计算进程的第二指令;所述指示确定所述计算进程的后续指令对所述第一指令是否存在数据依赖性,如果不存在所述数据依赖性,则所述计算机处理器继续执行后续指令,如果存在所述数据依赖性,则所述计算机处理器延迟执行所述后续指令,直至所述指示更新并确定所述数据依赖性已被移除。
14.根据权利要求13所述的方法,进一步包括:
获得与所述第一指令相关联的虚拟地址;
基于所述虚拟地址获得与所述第一指令相关联的物理地址;
基于获得所述物理地址的结果,确定所述第一指令是否引起异常;以及
响应于确定所述第一指令引起异常,向所述计算机处理器发送指示以使所述计算机处理器处理所述异常。
15.根据权利要求14所述的方法,其中,所述确定所述第一指令是否引起异常包括:
确定与所述物理地址相关联的页面是否存在;以及
响应于确定所述页面不存在,确定所述第一指令引起异常。
16.根据权利要求14所述的方法,其中,确定所述第一指令是否产生异常包括:
确定与所述物理地址和所述虚拟地址中的至少一个相关联的页面是否可访问;
响应于确定所述页面不可访问,确定所述第一指令引起异常。
17.根据权利要求14所述的方法,其中,所述存储器***包括具有多个高速缓存行的高速缓存器,并且其中,确定所述第一指令是否导致引起异常包括:
确定与所述第一指令相关联的地址是否与所述多个高速缓存行中的一个对齐;以及
响应于确定所述地址与所述多个高速缓存行中的任一个不对齐,确定所述第一指令引起异常。
18.根据权利要求13所述的方法,其中,所述指示包括指示仍待访问的所述数据的第二部分的大小和位置的信息。
19.一种存储器访问方法,所述方法由存储器访问引擎执行,所述存储器访问引擎与存储器***耦合且与计算机处理器耦合,所述存储器***存储第一数据和第二数据,所述计算机处理器包括与第一核心标识符相关联的第一计算机处理器核心和与第二核心标识符相关联的第二计算机处理器核心,所述方法包括:
从所述第一计算机处理器核心接收计算进程的第一指令,其中,所述第一指令用于从所述存储器***访问所述第一数据;
使所述第一指令与所述第一核心标识符相关联;
基于所述第一指令从所述存储器***获取所述第一数据的至少一部分;以及
在获取所述第一数据的所述至少一部分之后,向所述计算机处理器发送包括所述第一核心标识符和所述第一指令的执行状态的指示以使得所述第一计算机处理器核心能够执行所述计算进程的第二指令;所述指示确定所述计算进程的后续指令对所述第一指令是否存在数据依赖性,如果不存在所述数据依赖性,则所述计算机处理器继续执行后续指令,如果存在所述数据依赖性,则所述计算机处理器延迟执行所述后续指令,直至所述指示更新并确定所述数据依赖性已被移除。
20.根据权利要求19所述的方法,进一步包括:
从所述第二计算机处理器核心接收所述计算进程的第三指令,其中,所述第三指令用于从所述存储器***访问所述第二数据;以及
使所述第三指令与所述第二核心标识符相关联;
其中,所述指示包括所述第二核心标识符和所述第三指令的执行状态;以及
其中,包括在所述指示中的所述第二核心标识符使得所述第一计算机处理器核心能够忽视所述第三指令的所述执行状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/430,331 | 2017-02-10 | ||
US15/430,331 US11086632B2 (en) | 2017-02-10 | 2017-02-10 | Method and apparatus for providing accelerated access to a memory system |
PCT/US2018/017673 WO2018148579A1 (en) | 2017-02-10 | 2018-02-09 | Method and apparatus for providing accelerated access to a memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110291507A CN110291507A (zh) | 2019-09-27 |
CN110291507B true CN110291507B (zh) | 2023-10-24 |
Family
ID=63104606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880011082.6A Active CN110291507B (zh) | 2017-02-10 | 2018-02-09 | 用于提供对存储器***的加速访问的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11086632B2 (zh) |
EP (1) | EP3580659A4 (zh) |
JP (1) | JP7097371B2 (zh) |
CN (1) | CN110291507B (zh) |
WO (1) | WO2018148579A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11328075B2 (en) * | 2019-01-04 | 2022-05-10 | Baidu Usa Llc | Method and system for providing secure communications between a host system and a data processing accelerator |
GB2593513B (en) | 2020-03-25 | 2022-09-21 | Nordic Semiconductor Asa | Method and system for optimizing data transfer from one memory to another memory |
GB2593514B (en) | 2020-03-25 | 2022-04-27 | Nordic Semiconductor Asa | Method and system for optimizing data transfer from one memory to another memory |
US11868238B2 (en) | 2020-06-18 | 2024-01-09 | Samsung Electronics Co., Ltd. | Method and apparatus for fuzz testing based on resource access feedback |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8954697B2 (en) * | 2010-08-05 | 2015-02-10 | Red Hat, Inc. | Access to shared memory segments by multiple application processes |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7334076B2 (en) | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US8683143B2 (en) | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US20070260856A1 (en) * | 2006-05-05 | 2007-11-08 | Tran Thang M | Methods and apparatus to detect data dependencies in an instruction pipeline |
US9654505B2 (en) * | 2009-06-22 | 2017-05-16 | Citrix Systems, Inc. | Systems and methods for encoding the core identifier in the session identifier |
JP5433349B2 (ja) | 2009-08-27 | 2014-03-05 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
US8359453B2 (en) | 2010-09-13 | 2013-01-22 | International Business Machines Corporation | Real address accessing in a coprocessor executing on behalf of an unprivileged process |
US9009445B2 (en) | 2011-10-20 | 2015-04-14 | Apple Inc. | Memory management unit speculative hardware table walk scheme |
US9043559B2 (en) | 2012-10-23 | 2015-05-26 | Oracle International Corporation | Block memory engine with memory corruption detection |
US20140173203A1 (en) | 2012-12-18 | 2014-06-19 | Andrew T. Forsyth | Block Memory Engine |
US9965279B2 (en) * | 2013-11-29 | 2018-05-08 | The Regents Of The University Of Michigan | Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry |
US20150277925A1 (en) * | 2014-04-01 | 2015-10-01 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
US10372616B2 (en) * | 2015-06-03 | 2019-08-06 | Renesas Electronics America Inc. | Microcontroller performing address translations using address offsets in memory where selected absolute addressing based programs are stored |
US10452561B2 (en) * | 2016-08-08 | 2019-10-22 | Raytheon Company | Central processing unit architecture and methods for high availability systems |
-
2017
- 2017-02-10 US US15/430,331 patent/US11086632B2/en active Active
-
2018
- 2018-02-09 EP EP18751406.2A patent/EP3580659A4/en active Pending
- 2018-02-09 CN CN201880011082.6A patent/CN110291507B/zh active Active
- 2018-02-09 WO PCT/US2018/017673 patent/WO2018148579A1/en unknown
- 2018-02-09 JP JP2019540633A patent/JP7097371B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8954697B2 (en) * | 2010-08-05 | 2015-02-10 | Red Hat, Inc. | Access to shared memory segments by multiple application processes |
Also Published As
Publication number | Publication date |
---|---|
JP2020507848A (ja) | 2020-03-12 |
EP3580659A4 (en) | 2020-02-19 |
US11086632B2 (en) | 2021-08-10 |
JP7097371B2 (ja) | 2022-07-07 |
CN110291507A (zh) | 2019-09-27 |
EP3580659A1 (en) | 2019-12-18 |
WO2018148579A1 (en) | 2018-08-16 |
US20180232238A1 (en) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5944815A (en) | Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access | |
EP0097790B1 (en) | Apparatus for controlling storage access in a multilevel storage system | |
US5490261A (en) | Interlock for controlling processor ownership of pipelined data for a store in cache | |
KR100626858B1 (ko) | 단일 적재 워드를 형성하기 위해서 별개의 저장 버퍼 엔트리들로부터의 개별 바이트들의 전송을 적재하는 저장 시스템 | |
CN110291507B (zh) | 用于提供对存储器***的加速访问的方法和装置 | |
US5664148A (en) | Cache arrangement including coalescing buffer queue for non-cacheable data | |
US6088789A (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
US7472253B1 (en) | System and method for managing table lookaside buffer performance | |
KR100764920B1 (ko) | 언트레이닝을 구비하는 저장 로드 전송 예측기 | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
JP4275884B2 (ja) | 微細粒度変換判別 | |
CN106897230B (zh) | 用于处理原子更新操作的装置和方法 | |
JP2003514299A (ja) | インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ | |
JP2004503870A (ja) | 変換索引バッファのフラッシュフィルタ | |
US6378023B1 (en) | Interrupt descriptor cache for a microprocessor | |
JP2019096309A (ja) | メンテナンス動作の実行 | |
US20210311997A1 (en) | Binary search procedure for control table stored in memory system | |
US8806135B1 (en) | Load store unit with load miss result buffer | |
US7549035B1 (en) | System and method for reference and modification tracking | |
EP0605871A2 (en) | Method and system for increased system memory concurrency in a multiprocessor computer system | |
US8244985B2 (en) | Store performance in strongly ordered microprocessor architecture | |
US7100006B2 (en) | Method and mechanism for generating a live snapshot in a computing system | |
US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
KR20210135216A (ko) | 메모리 순서화 위반 검사 버퍼의 소모 지연을 용인하기 위한 추측 명령어 활성화 | |
US7577791B2 (en) | Virtualized load buffers |
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 |