CN108958848A - 近存储器计算体系结构 - Google Patents
近存储器计算体系结构 Download PDFInfo
- Publication number
- CN108958848A CN108958848A CN201810473602.7A CN201810473602A CN108958848A CN 108958848 A CN108958848 A CN 108958848A CN 201810473602 A CN201810473602 A CN 201810473602A CN 108958848 A CN108958848 A CN 108958848A
- Authority
- CN
- China
- Prior art keywords
- process kernel
- numerical value
- instruction
- memory
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 141
- 230000008569 process Effects 0.000 claims abstract description 122
- 238000004891 communication Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 37
- 230000006399 behavior Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000011469 building brick Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000000155 isotopic effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000013598 vector Substances 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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/0804—Addressing 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
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
- 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/12—Replacement control
-
- 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/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明涉及一种近存储器计算体系结构。在根据本公开的一个示例中,计算引擎块可以包括将处理内核连接到数据缓存的数据端口和用于实现对存储器的数据请求的服务的数据通信路径,其中该数据端口接收用于访问存储器的请求。处理内核可以被配置为识别在第一数据请求的预定地址范围中的数值,并且在第一数值被识别到时调整处理内核所使用的加载指令的位大小。
Description
背景技术
数据中心功耗对客户而言可能是非常重要的因素,并且随着硬件和软件成本的下降而变得越来越重要。在某些情况下,数据中心的大部分能量可能花费在从储存器移动数据来进行计算并返回到储存器。
附图说明
以下详细描述参照附图,其中:
图1是结合近存储器计算体系结构的示例***的框图;
图2是用于执行处理内核的替换功能的示例方法的流程图;
图3是结合近存储器计算体系结构的示例计算引擎块的流程图;和
图4是结合近存储器计算体系结构的示例***的流程图。
具体实施方式
当前的片上***(SoC)处理器可以针对直连式存储器(directly attachedmemory)进行定制。这些SoC处理器的地址空间可能会受到限制,并且它们的***接口可能假设离主存储器小于100ns。然而,某些***可能被设计用于解决网络化存储器(fabric-attached memory)的大量的池,这可能与当前SoC处理器的基本假设不兼容。
在此讨论的***和方法使用被嵌入在模块级存储器控制器中的可编程内核来实现近数据处理(near-data processing)。近数据处理是一种将某些功能(例如,简单的数据移动)从CPU移除并为更重要的操作保留CPU存储器带宽的技术。近存储器处理器(NMP)可能具有与标准SoC处理器不同的性能特征,例如,较低的存储器访问延迟、更节能的存储器访问和计算以及较低的计算能力。
在此讨论的***和方法使用微控制器设计,即使在存储器延迟为数百纳秒的应用中,该微控制器设计也能够快速扫描存储器。在某些方面,所设计的微控制器可以支持RISC-V指令集。在此描述的***和方法可以利用RISC-V处理内核并且包括诸如片上网络(NoC)接口和远程存储器接口等附加特征。此外,体系结构的设计可以允许基于存储器中的观察数值来添加新特征并且不会引入会导致重新编译软件工具链的任何变化。在此讨论的设计能够降低功率,因为不得不切换来执行计算的晶体管更少。
结合近存储器计算体系结构的示例计算引擎块可以包括下述计算引擎块,该计算引擎块可以包括将处理内核连接到数据缓存的数据端口和用于实现对存储器的数据请求的服务的数据通信路径,其中该数据端口接收用于访问存储器的请求。处理内核可以被配置为识别在第一数据请求的预定地址范围中的数值,并且在第一数值被识别时调整处理内核所使用的加载指令的位大小。
图1是用于近存储器计算的示例***100。***100可以包括介质控制器105和存储器110。存储器控制器105可以包括计算引擎块112、114和数据结构116。计算引擎块112、114中的每个计算引擎块可以包括处理内核118、***接口120、指令缓存122、数据缓存124、数据通信路径126和环形接口128。虽然***100包括两个计算引擎块,但这是为了说明目的,并且***可具有更多或更少数量的计算引擎块。而且,虽然计算引擎块114通过环形接口128来描绘,但是任何计算块可以具有元件118、120、122、124、126、128和/或附加组件的任何组合。
存储器110可以被用于存储由处理内核118访问的数据。存储器110可以由处理内核经由数据结构接口116访问。存储器110可以包括任何易失性存储器、非易失性存储器或者易失性存储器和非易失性存储器的任何适当组合。例如,存储器110可以包括例如可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘和/或其他合适的存储器。存储器110还可以包括可以在电源关闭时保持内容的随机存取非易失性存储器。
处理内核118可以是整型(integer-only)有序RISC-V处理器。处理内核118可以具有32位和/或256位整数寄存器,支持64位算术运算和256位逻辑算术运算。处理内核还可以包括56位物理地址和5级有序管道。使用56位物理寻址可以使内核在无需转换的情况下直接访问存储器,例如大量的NVM存储器等。处理内核118还可以支持跟踪正被执行的未完成的写入操作的数量的存储器承诺管理。通过跟踪未完成的写入的数量,在执行RISC-V架构的FENCE指令时,处理内核118可以停止。FENCE操作是被用于保存存储器操作中的排序的数据标志。
处理内核118可以能够基于物理地址来调整操作模式。具体地,处理内核118可以被配置为识别在数据请求的预定地址范围中的数值,并且基于该数值来调整处理内核的行为。预定地址范围可以被用于调整操作模式而不是其他目的。例如,处理内核118可以识别地址范围的三个最高有效地址位,并且基于所观察的数值来调整行为。在这个示例中,三个最高有效地址位可以不被用于正常的地址访问。以这种方式,可以在不引入会导致重新编译软件工具链的任何变化的情况下将新特征添加到***中。
预定地址范围中的数值的含义可以被定义在处理内核的硬件合成中。处理内核的标准硬件实现可以被适用于识别在预定地址范围中的数值,根据该数值改变处理器内核的性能,和/或剥离该数值使得预定地址范围中的数值不被转发到物理存储器。例如,如果处理内核是RISC-V处理器,则标准编译器可以被使用并被适用于识别预定地址范围中的数值。
对地址范围增强的引用可以被包括在预先编译的代码中。因此,编写代码的任何人可以选择包括预定地址范围中的数值以便调用在此讨论的增强。此外,这些高位地址位变化的地址将别名到相同的物理存储器地址(一旦它们被处理器剥离),高位地址位不会被转发到物理存储器。一旦代码被编写,就可以将该代码提供给标准编译器(例如,RISC-V编译器),以创建处理器获取并执行的机器代码,以执行编码的任务。如在此所使用的,标准编译器是指代码编译器,该代码编译器取出软件代码并将其转换成处理内核实际运行的机器代码。
处理内核118可以接收用于执行默认操作的指令。然而,在执行默认操作之前,处理内核118可以确定指令的预定地址范围内是否存在任何数值。处理内核118可以基于用于执行替换功能而不是默认功能的数值来确定替换功能。可以以这种方式添加的示例特征包括缓存行刷新、大寄存器加载/存储、无需获取的存储、原子操作、热路径CSR加载/存储。这些特征将在下面进一步详细描述。
缓存行刷新操作可以允许处理内核118将修改后的缓存行移动到存储器。修改后的缓存行刷新操作可以与第一数值相关联。例如,第一数值可以是存储器地址的三个最高有效位的数值。如果处理内核识别到预定存储器地址中的第一数值,则处理内核可以执行缓存行刷新而不是默认操作。在一方面,处理内核可以执行缓存行刷新而不是默认加载操作。
大寄存器加载/存储操作可以是以与处理内核所使用的默认位数不同的位数来操作的加载和/或存储操作。位数可以大于或小于默认值。大寄存器加载/存储操作可能与第二数值相关联。如果处理内核识别到预定存储器地址中的第二数值,则处理内核可以执行大寄存器加载/存储而不是默认操作。在一方面,默认操作可以是具有默认位数(诸如32)的加载/存储操作。一旦识别到第二数值,处理内核118就可以执行不同位数(例如256而不是默认数32)的加载/存储操作。
没有获取操作的存储可以在不从存储器获取的情况下在数据缓存中存储和/或分配存储器。更具体地,没有获取操作的存储可能导致处理在不读取当前存储在存储器中的位置中的一行现有数据的情况下将一行数据存储到该位置。没有获取操作的存储可能与第三个数值相关联。如果处理内核识别到预定存储器地址中的第三数值,则处理内核可以在不获取的情况下执行存储而不是默认操作。在一方面,处理内核可以在不获取的情况下执行存储而不是默认存储操作。
原子操作是相对于其他线程以单个步骤完成的操作。其他线程将原子操作的步骤视为瞬间发生的。如在此所使用的,原子操作可以指代与计算平台相关联的一组原子操作。例如,原子操作可以是与Gen-Z开放***互连相关联的原子操作。在一些方面,可以使用CSR(控制和状态寄存器)来控制原子类型。原子操作可以与第四数值相关联。如果处理内核识别到预定存储器地址中的第四数值,则处理内核可以执行原子操作而不是默认操作。
热路径CSR加载/存储可以加载或存储到内核本地结构。原子操作可以与第五数值相关联。如果处理内核识别到预定存储器地址中的第五数值,则处理内核可以执行热路径CSR加载/存储而不是默认操作,例如默认加载/存储操作。
在一些方面,存储器110还可以和/或可选地由其他处理器访问。例如,存储器110可以由一个或多个***主机处理器直接访问。主机处理器可以填充***100的工作队列并且消耗来自完成队列的结果。这些队列可以位于直连式动态随机存取存储器(DRAM)中的主机节点,模块存储器等中。在一些方面,***100还可以包括同时支持多个主机,每个主机对全部或者部分模块存储器具有访问权,并且每个存储器独立地管理单独的工作队列。
***接口120可以接收用于访问存储器的请求。***接口可以具有宽数据端口。如本文所使用的,“宽数据端口”是指处理内核118与数据缓存124之间的连接。通过加载和处理大量数据(例如256位数据),更少的处理器指令可被要求来对缓存行的数据价值(例如64字节的数据)进行操作。在一些方面,***接口120可以支持32个未完成的缓存行请求到存储器(以填充数据缓存)。以这种方式,***接口120可以允许重叠足够的对存储器的并行访问以隐藏从存储器访问每条单独缓存行所需的延迟,并因此完全使用由存储器提供的带宽。换言之,宽数据端口可以允许处理内核一次访问更多数据,允许一个线程以较低频率(即,在1GHz以下)运行,从而以存储器所支持的高带宽速度操作。例如,数据端口可以是256位宽。
***接口120可以允许每个处理内核32个未完成的缓存行大小的请求。具有大量未完成的请求的***接口120可以使每个处理内核能够以高速率移动数据。此外,通过使每个通用寄存器制作为256位宽并且扩展加载和存储指令(如上面参照处理内核118所描述的),并且将数据缓存端口设计为宽,处理内核能够以高速(例如每秒数千兆字节)来移动数据。
指令缓存122可以是具有在计算引擎块的正常操作期间不能从指令缓存逐出的永久区域的四路缓存。用于处理内核的多个指令被存储在永久区域上,该多个指令包括用于加载指令的指令。指令缓存可以被设计为使得某些位置不能从缓存中逐出,从而使得性能是更可预测的。无驱出区域可以被用来确保:用于提供在近存储器计算引擎块112中运行的某些库函数所需的指令被保证是存在的。通过确保这些指令是存在的,节省用于处理未命中流程的复杂度并确保更高级别的操作性能。
被存储在无逐出区域中的库函数可以包括:(1)将数据从一个存储器地址范围移动到另一个存储器地址范围的“数据移动”操作;(2)访问范围中的数据并将该数据与所提供的模式进行比较的函数;以及(3)访问两个数据块(两个向量)、添加块并将块写回或者写到第三位置的函数,等等。在调用这些库函数时,可以通过使用该函数的已经被预先加载到缓存的无逐出部分中的适当代码来运行这些库函数。例如,“移动”函数的函数代码可能是一个简单的for循环,读取a,写入b,同时在指定的地址范围内前进。另外,函数代码可以包括检查许可、***访问代码或其他此类安全性和正确性保障的附加指令。通过在无逐出区域中的库中提供这些函数而不是让请求工作的节点提供代码序列,可以确保被允许的操作得到支持,并确保库例程的性能。在无逐出区域的库中提供某些函数也可以帮助保护库代码免受恶意修改。
在一些方面,缓存内容可以由外部固件控制,所以代码是安全的并且被预加载。数据缓存124可以是具有宽读取和写入端口的四路缓存。例如,宽读取和写入端口可以是256位宽。***接口和缓存可以允许每个处理内核足够强大,以高带宽扫描本地存储器,因此诸如复制、归零(zero)和模式扫描等操作不需要并行化以实现可接受的性能。
数据通信路径126可以访问片上网络接口以实现对存储器的数据请求的低延迟服务。低延迟服务可以允许近存储器计算引擎块112和另一个处理器(例如作为片上***(例如介质控制器105)的一部分的处理器)之间的低延迟通信。在某些情况下(例如,如果处理内核118上的开销太高),某些任务可以被卸载到片上***的处理器。在一些方面,低延迟可以是纳秒量级。相反,如果近存储器计算引擎块112经由存储器映射输入输出(MMIO)操作而被连接,则卸载可以是秒量级。
数据通信路径126可以利用一个或多个标准化数据通信标准,例如Gen-Z开放***互连。数据通信路径126可以代表处理内核118来制定和/或解释包报头(和完整包)信息,以从处理内核118卸载某些活动。例如,数据通信路径126可以包括请求器126a和响应器126b。请求器126a可以接受来自处理内核118的存储器访问,制定针对数据通信标准的请求事务并跟踪事务的进程。请求器126a还可以收集事务响应并将返回的数据放入数据缓存(即,读取)和/或退出该事务(即完成写入)。响应器126a可以接受呼入请求,用于适当地转移近存储器计算体系结构的事务以控制近存储器计算体系结构的寄存器或其他资源。介质控制器105可以包括数据结构接口116和片上网络130。数据结构接口116可以具有用于连接到存储器的链路。片上网络130可以被用作连接近存储器计算引擎块112的不同元件(例如元件118、120、122、124、126等)的片上互连。
环形接口128可以被用于连接近存储器计算引擎块。通过使用环形接口,处理内核和/或附加的计算引擎块可以在不需要新的块物理工作或附加的验证工作的情况下被添加到介质控制器。
在一些方面,计算可以偶尔对驻留在其他NVM模块上的数据执行。相应地,数据计算块可以通过加载/存储/刷新指令序列来访问不同模块上的NVM,以读取/修改/提交远程NVM模块上的数据。通过实现具有大地址空间以及加载/存储/刷新指令序列的跨模块通信,可以提高本地缓存对远程NVM模块引用的利用率,从而提高性能并简化加速器编程模型。在某些方面,并非存储器模块上的每个储存器字节都可以共享,因此每个模块都实现了可以保护本地NVM的区域免受远程访问的远程访问防火墙。
图2是根据本公开的各种示例的用于执行处理内核的替换功能的示例方法200的流程图。该流程图表示可以结合如参照前面的附图所讨论的各种***和设备(例如,参照图1描述的***100、参照图3描述的计算引擎块300和/或参照图4描述的***400等)使用的过程。虽然以特定顺序进行说明,但是流程图不旨在被如此限制。相反,明确地预期各种过程可以以不同的顺序发生和/或与除所示的那些之外的其他过程同时发生。如此,结合图2描述的操作序列是示例,并不旨在是限制性的。在不脱离所公开的示例的范围的情况下,附加的或更少的操作或者操作的组合可以被使用或可以变化。因此,本公开仅仅阐述了实施方式的可能示例,并且可以对所描述的示例做出许多变型和修改。
方法200可以在框202处开始并且继续到框204,其中方法200可以包括接收用于执行处理内核的默认功能的操作的指令。在框206处,该方法可以包括通过处理内核,识别在指令的预定地址范围中的数值。预定地址范围包括三个最高有效地址位。
在框208处,该方法可以包括通过处理内核,基于数值来确定替换功能。该数值可以使处理内核在不引入会导致重新编译软件工具链的任何变化的情况下调整行为。
第一数值可以使处理内核执行具有与默认位大小不同的位大小的加载指令。第一数值还可以使处理内核执行具有与默认位大小不同的位大小的存储指令。加载和/或存储指令的位大小可以是256位。第二数值可以使处理内核执行刷新操作而不是加载操作。第三数值可以使处理内核在不获取当前存储在存储器中的位置中的一行现有数据的情况下将一行数据存储到该位置。第四数值可以使处理内核以默认模式操作。
在框210处,该方法可以包括通过处理内核,执行替换功能而不是默认功能。该方法可以继续到框212,其中该方法可以结束。
图3是结合近存储器计算体系结构的示例计算引擎块300的框图。***300可以包括可以通过通信链路(例如,总线)彼此耦接的处理内核302、数据通信路径304和数据缓存306。数据通信路径304可以实现存储器的数据请求的低延迟服务。数据通信路径304可以读取包括包长度和起始地址的包报头信息。数据通信路径304可以类似于上面参照图1讨论的数据通信路径126。处理内核302可以经由宽数据端口307被连接到数据缓存306。数据缓存306可以类似于上面参考图1讨论的数据缓存124。如上所述,宽数据端口307可以接收用于访问存储器的请求。在一些方面,数据缓存308可以是***接口的一部分。***接口可以允许每个处理内核32个未完成的缓存行大小请求。***接口可以类似于上面参照图1讨论的***接口120。处理内核302可以包括一个或多个中央处理单元(CPU)或者另一个适当的硬件处理器。处理内核302可以被配置为执行包括数值识别指令308和功能处理指令310的指令。***300的指令可以以存储在存储器上并由***300的至少一个处理器执行的可执行指令的形式来实现。存储器304可以是非暂时性的。
存储器可以包括任何易失性存储器、非易失性存储器或者易失性存储器和非易失性存储器的任何适当组合。例如,存储器可以包括例如可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘和/或其他合适的存储器。存储器还可以包括可以在电源关闭时保持内容的随机存取非易失性存储器。***300的每个组件可以以包括用于实现组件功能的电子电路的至少一个硬件设备的形式来实现。
在一些方面,计算引擎块300还可以包括指令缓存。指令缓存可以具有在计算引擎块的正常操作期间不从指令缓存中逐出的永久区域。用于处理内核的多个指令被存储在永久区域上,该多个指令包括用于加载指令的指令。指令缓存可以类似于上面参照图1讨论的指令缓存122。
处理器302可以执行数值识别指令308以接收用于执行处理内核的操作的指令。处理器302可以执行数值识别指令308以识别在处理内核可访问的预定地址范围中的数值。预定地址范围可以包括三个最高有效地址位。该数值可以使处理内核在不引入会导致重新编译软件工具链的任何变化的情况下调整行为。处理器302可以执行功能处理指令310以基于数值确定功能并执行该功能。在一些示例中,替换功能可以由数值指示,并且处理内核可以执行替换功能而不是默认功能。
例如,处理内核可以在识别出第一数值时调整由处理内核使用的加载指令的位大小。换言之,处理内核可以执行具有调整后的位大小数值的加载指令,作为具有默认位大小的加载指令的替换功能。具有默认位大小的加载指令可以是处理内核的默认功能。
第一数值还可以使处理内核执行具有与默认位大小不同的位大小的存储指令。加载和/或存储指令的位大小可以是256位。第二数值可以使处理内核执行刷新操作而不是加载操作。第三数值可以使处理内核在不获取当前存储在存储器中的位置中的一行现有数据的情况下将一行数据存储到该位置。第四数值可以使处理内核以默认模式操作。
图4是结合近存储器计算体系结构的示例***400的框图。在图4所示的示例中,***400包括处理内核402。尽管以下描述涉及单个处理内核,但是该描述也可以应用于具有多个处理内核的***。在这样的示例中,可以在多个处理内核上分发(例如,执行)指令。
处理器402可以是适合于检索和执行指令的至少一个中央处理单元(CPU)、微处理器和/或其他硬件设备。在图4所示的示例中,处理器402可以获取、解码并执行指令406、408、410和414以执行处理内核的替换功能。在一些示例中,指令406、408、410和414可以被存储在存储器上。存储器可以包括任何易失性存储器、非易失性存储器或者易失性存储器和非易失性存储器的任何适当组合。例如,存储器504可以包括例如可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘和/或其他合适的存储器。存储器504还可以包括可以在电源关闭时保持内容的随机存取非易失性存储器。处理器402可以包括至少一个电子电路,该至少一个电子电路包括用于执行至少一个指令的功能的多个电子组件。关于在此描述和示出的可执行指令表示(例如,框),应当理解的是,一个框中包括的部分或全部可执行指令和/或电子电路可以被包括在图中所示的不同框中或者被包括在未示出的不同框中。
参照图4,接收指令406在由处理器(例如,402)执行时可以使***400接收用于执行处理内核的操作的指令。数值识别指令408在由处理器(例如,402)执行时可以使***400识别在指令的预定地址范围中的数值。功能确定指令410在由处理器(例如,402)执行时可以使***400基于数值确定替换功能。
功能执行指令412在由处理器(例如,402)执行时可以使***400执行替换功能。该数值可以使处理内核在不引入会导致重新编译软件工具链的任何变化的情况下调整行为。第一数值可以使处理内核执行具有与默认位大小不同的位大小的加载指令。第一数值也可以使处理内核执行具有与默认位大小不同的位大小的存储指令。加载和/或存储指令的位大小可以是256位。第二数值可以使处理内核执行刷新操作而不是加载操作。第三数值可以使处理内核在不获取当前被存储在存储器中的位置中的一行现有数据的情况下将一行数据存储到该位置。第四数值可以使处理内核以默认模式操作。
前面的公开描述了近存储器计算体系结构的多个示例。所公开的示例可以包括用于实现近存储器计算体系结构的***、设备、计算机可读存储介质和方法。为了解释的目的,参照图1至图4中所示的组件来描述了某些示例。然而,所示组件的内容类型可以重叠,并且可以存在于更少或更多数量的元件和组件中。此外,所示元件的全部或部分内容类型可以共存或分布在几个地理上分散的位置中。此外,所公开的示例可以在各种环境中实施并且不限于所示示例。
此外,结合图1至图4描述的操作序列是示例,并不旨在是限制性的。在不脱离所公开的示例的范围的情况下,可以使用附加的或更少的操作或操作的组合,或可以改变。此外,与所公开的示例一致的实施方式不需要以任何特定顺序执行操作序列。因此,本公开仅仅阐述了实施方式的可能示例,并且可以对所描述的示例做出许多变型和修改。
Claims (20)
1.一种计算引擎块,包括:
数据端口,将处理内核连接到数据缓存,其中所述数据端口接收用于访问存储器的请求;
数据通信路径,用于实现对所述存储器的数据请求的服务;和
所述处理内核,被配置为:
识别在第一数据请求的预定地址范围中的数值;
在第一数值被识别到时,调整所述处理内核所使用的加载指令的位大小。
2.根据权利要求1所述的***,其中所述数据通信路径访问片上网络接口。
3.根据权利要求1所述的***,其中第二数值使所述处理内核执行刷新操作而不是加载操作。
4.根据权利要求1所述的***,其中第三数值使所述处理内核在不获取当前被存储在所述存储器中的位置中的一行现有数据的情况下将一行数据存储到所述位置。
5.根据权利要求1所述的***,其中第四数值使所述处理内核以默认模式操作。
6.根据权利要求1所述的***,其中所述加载指令的位大小是256位,并且***接口允许每个处理内核32个未完成的缓存行大小的请求。
7.根据权利要求1所述的***,其中所述数值使所述处理内核在不引入会导致重新编译软件工具链的任何变化的情况下调整行为。
8.根据权利要求1所述的***,进一步包括:
指令缓存,具有在所述计算引擎块的正常操作期间不从所述指令缓存逐出的永久区域。
9.根据权利要求8所述的***,其中用于所述处理内核的多个指令被存储在所述永久区域上,所述多个指令包括用于所述加载指令的指令。
10.一种方法,包括:
接收用于执行处理内核的默认功能的操作的指令;
通过所述处理内核,识别在所述指令的预定地址范围中的数值;
通过所述处理内核,基于所述数值确定替换功能;和
通过所述处理内核,执行所述替换功能而不是所述默认功能,
其中第一数值使所述处理内核执行具有与默认位大小不同的位大小的加载指令,并且
其中第二数值使所述处理内核执行刷新操作而不是加载操作。
11.根据权利要求10所述的方法,其中第三数值使所述处理内核在不读取当前被存储在所述存储器中的位置中的一行现有数据的情况下将一行数据存储到所述位置。
12.根据权利要求10所述的方法,其中第二数值使所述处理内核执行刷新操作而不是加载操作。
13.根据权利要求10所述的方法,其中第四数值使所述处理内核以默认模式操作。
14.根据权利要求10所述的方法,其中所述数值使所述处理内核在不将任何变化引入到编译软件工具链中的情况下调整行为。
15.一种***,包括:
处理内核,被配置为:
接收用于执行所述处理内核的操作的指令;
识别在所述指令的预定地址范围中的数值;
基于所述数值确定替换功能;和
执行所述替换功能,
其中第一数值使所述处理内核执行具有调整后的位大小而不是默认位大小的加载操作,并且
其中第二数值使所述处理内核执行刷新操作而不是所述加载操作。
16.根据权利要求15所述的***,其中所述预定地址范围包括三个最高有效地址位。
17.根据权利要求15所述的***,其中,
第三数值使所述处理内核在不获取当前被存储在存储器中的位置中的一行现有数据的情况下将一行数据存储到所述位置。
18.根据权利要求15所述的***,其中第四数值使所述处理内核执行默认功能。
19.根据权利要求15所述的***,其中加载指令的所述调整后的位大小是256位。
20.根据权利要求15所述的***,其中所述数值使所述处理内核在不将任何变化引入到编译软件工具链中的情况下调整行为。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/597,757 US20180336034A1 (en) | 2017-05-17 | 2017-05-17 | Near memory computing architecture |
US15/597,757 | 2017-05-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108958848A true CN108958848A (zh) | 2018-12-07 |
Family
ID=62495544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810473602.7A Pending CN108958848A (zh) | 2017-05-17 | 2018-05-17 | 近存储器计算体系结构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180336034A1 (zh) |
EP (1) | EP3407184A3 (zh) |
CN (1) | CN108958848A (zh) |
TW (1) | TW201908968A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380147A (zh) * | 2020-11-12 | 2021-02-19 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11481317B2 (en) * | 2020-06-26 | 2022-10-25 | Micron Technology, Inc. | Extended memory architecture |
US11455251B2 (en) | 2020-11-11 | 2022-09-27 | Advanced Micro Devices, Inc. | Enhanced durability for systems on chip (SOCs) |
US11656796B2 (en) * | 2021-03-31 | 2023-05-23 | Advanced Micro Devices, Inc. | Adaptive memory consistency in disaggregated datacenters |
US20220413804A1 (en) * | 2021-06-28 | 2022-12-29 | Micron Technology, Inc. | Efficient complex multiply and accumulate |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US20110161632A1 (en) * | 2007-12-30 | 2011-06-30 | Tingting Sha | Compiler assisted low power and high performance load handling |
CN102439576A (zh) * | 2009-04-09 | 2012-05-02 | 美光科技公司 | 存储器控制器、存储器***、固态驱动器及用于处理若干个命令的方法 |
EP2505773A1 (en) * | 2011-03-30 | 2012-10-03 | Welltec A/S | Downhole pressure compensating device |
CN104025185A (zh) * | 2011-12-13 | 2014-09-03 | Ati科技无限责任公司 | 用于使用gpu控制器来预加载缓存的机制 |
US20150006805A1 (en) * | 2013-06-28 | 2015-01-01 | Dannie G. Feekes | Hybrid multi-level memory architecture |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
-
2017
- 2017-05-17 US US15/597,757 patent/US20180336034A1/en not_active Abandoned
-
2018
- 2018-05-16 TW TW107116654A patent/TW201908968A/zh unknown
- 2018-05-16 EP EP18172607.6A patent/EP3407184A3/en not_active Withdrawn
- 2018-05-17 CN CN201810473602.7A patent/CN108958848A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US20110161632A1 (en) * | 2007-12-30 | 2011-06-30 | Tingting Sha | Compiler assisted low power and high performance load handling |
CN102439576A (zh) * | 2009-04-09 | 2012-05-02 | 美光科技公司 | 存储器控制器、存储器***、固态驱动器及用于处理若干个命令的方法 |
EP2505773A1 (en) * | 2011-03-30 | 2012-10-03 | Welltec A/S | Downhole pressure compensating device |
CN104025185A (zh) * | 2011-12-13 | 2014-09-03 | Ati科技无限责任公司 | 用于使用gpu控制器来预加载缓存的机制 |
US20150006805A1 (en) * | 2013-06-28 | 2015-01-01 | Dannie G. Feekes | Hybrid multi-level memory architecture |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380147A (zh) * | 2020-11-12 | 2021-02-19 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201908968A (zh) | 2019-03-01 |
US20180336034A1 (en) | 2018-11-22 |
EP3407184A2 (en) | 2018-11-28 |
EP3407184A3 (en) | 2019-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108958848A (zh) | 近存储器计算体系结构 | |
CN110059020B (zh) | 扩展内存的访问方法、设备以及*** | |
Loh et al. | Supporting very large dram caches with compound-access scheduling and missmap | |
US9594696B1 (en) | Systems and methods for automatic generation of parallel data processing code | |
JP5666722B2 (ja) | メモリ・インターフェース | |
US11494308B2 (en) | Methods and devices for bypassing the internal cache of an advanced DRAM memory controller | |
Li et al. | A performance & power comparison of modern high-speed dram architectures | |
CN101493796B (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
US11392488B2 (en) | Optimizing storage of application data in memory | |
EP2808783A1 (en) | Smart cache and smart terminal | |
US8341344B2 (en) | Techniques for accessing a resource in a processor system | |
EP3506116A1 (en) | Shared memory controller in a data center | |
US20170256023A1 (en) | Solid state storage local image processing system and method | |
US9690713B1 (en) | Systems and methods for effectively interacting with a flash memory | |
CN106250348A (zh) | 一种基于gpu访存特性的异构多核架构缓存管理方法 | |
CN107710175A (zh) | 存储器模块以及操作***和方法 | |
CN105103138B (zh) | 用于实时应用的嵌入式存储器管理方案 | |
TWI631467B (zh) | 用於固態裝置之多個位址暫存器之設備及方法 | |
CN110515872A (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算*** | |
CN106293491B (zh) | 写请求的处理方法和内存控制器 | |
US8219745B2 (en) | Memory controller to utilize DRAM write buffers | |
WO2013184855A1 (en) | Memory with bank-conflict-resolution (bcr) module including cache | |
CN113994314A (zh) | 扩展存储器接口 | |
CN116414725A (zh) | 用于计算装置主存储器的分区命名空间 | |
CN101303669A (zh) | 具备地址转换存储器访问机构的半导体装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181207 |
|
RJ01 | Rejection of invention patent application after publication |