CN105359145A - 在高速缓存行中实现动态阵列数据结构的方法和系统 - Google Patents
在高速缓存行中实现动态阵列数据结构的方法和系统 Download PDFInfo
- Publication number
- CN105359145A CN105359145A CN201480038913.0A CN201480038913A CN105359145A CN 105359145 A CN105359145 A CN 105359145A CN 201480038913 A CN201480038913 A CN 201480038913A CN 105359145 A CN105359145 A CN 105359145A
- Authority
- CN
- China
- Prior art keywords
- data structure
- request
- array data
- dynamic array
- value
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种用于在包括存储装置(208)和控制器(206)的存储系统(128)内的高速缓存行(211、311)中实现动态阵列数据结构(225、325)的方法。所述方法包括:在所述存储装置(208)中将所述高速缓存行(211、311)配置为包括元数据字段(213、313)和元素字段(215、315)的高速缓存行,其中所述元数据字段(213、313)包括所述动态阵列数据结构(225、325)的元数据,并且其中所述元素字段(215、315)包括所述动态阵列数据结构的每个元素的值;所述控制器(206)接收对所述动态阵列数据结构(225、325)执行操作的请求(210),其中所述请求指示所述高速缓存行(211、311)在所述存储装置(208)中的位置以及指示指定所述请求(210)的信息;所述控制器(206)针对所述操作使用所述信息标识对所述动态阵列数据结构(225、325)执行的一个或多个动作,其中所述一个或多个动作被编码在所述控制器(206)中;以及响应于接收所述请求,通过执行一个或多个所编码的动作来执行所述请求。
Description
技术领域
本发明涉及计算系统,更具体地说,涉及用于在高速缓存行中实现动态阵列数据结构的方法。
背景技术
对于不同规模的公司而言,许多多线程计算机系统或工作负荷变为多项重要技术之一。它们提高计算硬件平台的计算效率和灵活性。但是,仍需要在保持较低硬件工作量的同时实现较高的性能。
发明内容
本发明的实施例的一个目标是提供一种改进的方法、计算机系统和计算机程序产品。所述目标由独立权利要求的主题解决。在从属权利要求中描述有利的实施例。
此处使用的原子存储操作(AMO)指对共享数据的读-改-写操作。就一个线程的读-改-写操作在不受另一线程干扰的情况下执行这个意义而言,AMO是原子的。换言之,对于存取(例如,并发存取)共享数据的线程或处理器而言,每次读取、写入或AMO存取被原子地执行而不受另一存取的干扰。
在一方面,本发明涉及一种用于在包括存储装置和控制器的存储系统内的高速缓存行中实现动态阵列数据结构的方法。所述高速缓存行的至少一部分可作为动态阵列数据结构被存取(或者被视为动态阵列数据结构)。
所述方法包括在所述存储装置中将所述高速缓存行配置为包括元数据字段和元素字段的高速缓存行,其中所述元数据字段包括所述动态阵列数据结构的元数据。所述元素字段可包括所述动态阵列数据结构的每个元素的元素值。
所述方法进一步包括所述控制器接收对所述动态阵列数据结构执行操作的请求,其中所述请求指示所述高速缓存行在所述存储装置中的位置以及指示指定所述请求的信息。指定所述请求的信息可包括指定所述操作所需的所述动态阵列数据结构的元素的信息。
所述方法进一步包括所述控制器针对所述操作使用所述信息标识对所述动态阵列数据结构执行的一个或多个动作,其中所述一个或多个动作被编码在所述控制器中;以及响应于接收所述请求,通过执行一个或多个所编码的动作来执行所述请求。
可将多个动作编码在所述控制器中。所述一个或多个动作的标识可包括从所述多个动作中选择所述一个或多个动作。
例如,所请求的操作可以是原子存储操作。所接收的请求可以是所述控制器从多个线程接收的对所述动态阵列数据结构执行操作的多个并发请求之一。所接收的并发请求可以按顺序被执行。
这些特征可以是有利的,因为它们可提供一种简化的方法来存取被存储在存储器中的数据。所述方法可被无缝地集成到现有存储系统中。
元数据和元素字段可适配单个高速缓存行的事实可促进所述控制器和存储系统的实现。所述存储系统的使用允许最高以所述存储器的容量来配置多个动态阵列。
另一优点可以是,能够在不需要将被存取的元素的地址的情况下,将所述请求引导到所述动态阵列结构。例如,所述请求可被引导到所述动态阵列数据结构的第一元素、所述动态阵列数据结构的最后元素、以及指定索引处的元素。这样,可实现优于传统AMO的新AMO以使用上述动态阵列数据结构。
进一步的优点可以是存取单个高速缓存行以执行给定操作可以快于存取多个高速缓存行以执行同一操作。
这些特征可以提供单个接口,以便多个用户或线程例如通过多线程应用来利用所述动态阵列数据结构,在所述多线程应用中,多个线程同时发出存取所述动态阵列数据结构的请求(例如所述请求)。
根据一个实施例,所述配置进一步包括在所述元数据中定义所述动态阵列数据结构的元素大小;在所述元数据中定义所述动态阵列数据结构中的元素数量,以及在所述元素字段中定义所述动态阵列数据结构中的每个元素的值。
该实施例可以是有利的,因为它可以向所述控制器提供足够的信息以便自主执行所接收的请求。
根据一个实施例,所述请求进一步指示所述动态阵列数据结构的元素的元素大小。这可以是有利的,因为所述元数据可能不包括有关所述元素大小的数据。
根据多个实施例,元数据参数可启用或禁用错误状况的指示。例如,当所述请求指定的元素大小分别小于或大于所述元数据中定义的元素大小时,所述控制器可产生中断。例如,所述控制器可响应于到已具有元素字段所支持的最大数量元素的动态阵列数据结构的压入(push)请求而产生中断。例如,所述控制器可响应于指定不在所述动态阵列数据结构中的元素的索引的设定请求而产生中断。
根据多个实施例,对于无法被满足的请求,所述控制器可使用预定义的失败值进行应答。例如,所述控制器可响应于指定不在所述动态阵列数据结构中的元素的索引的获取请求而使用预定义的失败值进行应答。根据多个实施例,所述预定义的失败值可以由所述元数据中的可配置字段确定。所述控制器可以返回多个预定义的失败值之一以进一步确定为何无法满足请求。例如,所述元数据还可包括失败弹出参数。所述失败弹出参数可具有可被包括在所述控制器针对所述动态阵列数据结构为空而返回给弹出操作请求者的应答中的值。
根据一个实施例,所述请求包括多个元素操作请求,所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述动态阵列数据结构中的元素数量;将所确定的元素数量作为应答发送给所述操作的请求者。
根据一个实施例,所述配置进一步包括在所述元数据中定义头索引和尾索引,从而允许所述元素字段被用作保存所述动态阵列数据结构的元素的环形缓冲区,对于某些请求,这因而避免了元素在所述元素字段内的移动。
指定所述请求的信息可指定选定元素,其中所述选定元素可被指定为所述动态阵列数据结构中的第一元素、所述动态阵列数据结构中的最后元素、或者所述动态阵列数据结构中位于指定索引处的元素。
根据一个实施例,所述请求包括针对所述动态阵列数据结构的获取值操作请求,所述获取值操作请求用于获取所述动态阵列数据结构中的选定元素的值,其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述元素字段中的所述选定元素在所述存储装置中的位置;使用所述位置读取所述选定元素的值;将所述选定元素的值作为应答发送给所述操作的请求者。
根据一个实施例,所述请求包括针对所述动态阵列数据结构的弹出操作请求,所述弹出操作请求用于获取值并移除所述动态阵列数据结构中的选定元素,其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述元素字段中的所述选定元素在所述存储装置中的位置,其中所述方法进一步包括:使用所述位置读取所述选定元素的值;将所述选定元素的值作为应答发送给所述操作的请求者;以及更新所述高速缓存行,所述更新包括递减所述元数据中的元素数量,以及移动所述元素字段中的元素以将所述选定元素从所述动态阵列数据结构中移除。
根据一个实施例,所述请求包括设定值操作请求,所述请求为所述动态阵列数据结构中的选定元素提供值;其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述动态阵列数据结构中的选定元素在所述高速缓存行的所述元素字段中的位置;以及将所述值写入所述选定元素。
根据一个实施例,所述请求包括压入值操作请求,所述请求提供要插入所述动态阵列数据结构中的值;其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;更新所述高速缓存行,所述更新包括递增所述元数据中的元素数量,并移动所述元素字段中的元素以插入所述动态阵列数据结构的选定元素,以及将所述值写入所述选定元素。
在一个实施例中,所述压入值操作请求可以是基于处理器的条件存储指令的压入AMO请求,其中包括在请求应答中的条件向用户指示压入是否成功。在又一实施例中,所述压入AMO请求基于处理器的交换或比较-交换指令,其中所述应答中的值向用户指示压入是否成功。
所述AMO请求可以类似于处理器的条件存储指令,或者可以类似于处理器的交换或比较-交换指令。
根据一个实施例,所述请求包括获取最小值或获取最大值操作请求;其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述动态阵列数据结构中的所有元素在所述元素字段中的位置;使用所确定的位置读取所述动态阵列数据结构中的所有元素的值,并且标识具有最小值或最大值的元素;以及将所标识的最小或最大值作为应答发送给所述操作的请求者。
根据一个实施例,所述请求包括获取最小值或获取最大值操作请求,其中所述请求指定通过将所述动态阵列数据结构的每个元素视为无符号整数、有符号整数或浮点数中的一者,标识具有所述最小值或最大值的元素。
根据一个实施例,所述请求包括弹出最小值或弹出最大值操作请求,其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述动态阵列数据结构中的所有元素在所述高速缓存行中的位置;使用所确定的位置读取所述动态阵列数据结构中的所有元素的值,并且标识具有最小值或最大值的元素;将所标识的最小或最大值作为应答发送给所述操作的请求者,并且更新所述高速缓存行,所述更新包括递减所述元数据中的元素数量,以及移动所述元素字段中的元素以将所标识的元素从所述动态阵列数据结构中移除。
根据一个实施例,所述配置进一步包括在所述元数据中定义所述动态阵列数据结构的每个元素中的实例字段的位置和大小,所述请求包括弹出实例请求,所述方法进一步包括递减选定元素的实例字段,基于递减的实例大于0而将具有所递减的实例字段的所述选定元素压回所述动态阵列数据结构。
例如,响应于对多个元素的请求,所述控制器可在应答中返回所述动态阵列数据结构中的多个元素,其中包括所有实例。
根据一个实施例,所述请求与单个加载指令或单个存储指令相对应,其中所述单个加载指令或单个存储指令包括所述控制器接收和执行的原子存储操作,并且所述单个加载指令或单个存储指令支持包括所述请求的并发请求。
所述控制器的原子性质可满足每个使用所述动态阵列数据结构的请求,并且可避免可能随存取所述动态阵列数据结构的多个线程一起出现的动态阵列数据结构的数据损坏。
根据一个实施例,所述元素字段和所述元数据字段共享所述高速缓存行的已分配位,为所述元数据字段分配所述高速缓存行的一位包括从所述元素字段解除分配另一位。
例如,所述动态阵列数据结构可在所述存储系统的两个或更多个高速缓存行中实现,其中所述两个或更多个高速缓存行是连续的高速缓存行。对所述动态阵列数据结构执行操作的请求可指示所述两个或更多个连续的高速缓存行,以及所述两个或更多个连续的高速缓存行中的第一高速缓存行在所述存储系统中的位置。
在另一方面,本发明涉及一种计算机程序产品,其包括执行根据上述任一实施例所述的方法的方法步骤的计算机可执行指令。
在另一方面,本发明涉及一种用于实现动态阵列数据结构的系统,所述系统包括存储装置和控制器,所述系统被配置为在所述存储装置中将所述高速缓存行配置为包括元数据字段和元素字段的高速缓存行,其中所述元数据字段包括所述动态阵列数据结构的元数据,并且其中所述元素字段包括所述动态阵列数据结构的每个元素的值;所述控制器接收对所述动态阵列数据结构执行操作的请求,其中所述请求指示所述高速缓存行在所述存储装置中的位置以及指示指定所述请求的信息;针对所述操作使用所述信息标识对所述动态阵列数据结构执行的一个或多个动作,其中所述一个或多个动作被编码在所述控制器中;以及响应于接收所述请求,通过执行一个或多个所编码的动作来执行所述请求。
所述存储系统可以是高速缓存层次结构中的一级,使得执行请求的所述控制器可使存储系统存取高速缓存层次结构中的较低级(多个)以在存储高速缓存中建立元数据和元素。存储系统可被分成两个或更多部分,其中一个部分中的控制器可使用该部分中的存储器操作动态阵列数据结构。一个高速缓存级别可被复制为两个或更多个单元,其中所述控制器可存取高速缓存单元中的底层高速缓存或存储级别的任意部分。
此处使用的“计算机可读存储介质”包含能够存储可被计算设备的处理器执行的指令的任何有形的存储介质。所述计算机可读存储介质可被称为计算机可读的非临时存储介质。所述计算机可读存储介质也可被称为有形的计算机可读介质。在某些实施例中,计算机可读存储介质还能存储可被计算设备的处理器存取的数据。计算机可读存储介质的例子包括—但不限于—软盘、磁硬盘驱动器、固态硬盘、闪存、USB拇指驱动器、随机存取存储器(RAM)、只读存储器(ROM)、光盘、磁-光盘,以及处理器的寄存器文件。光盘的例子包括紧凑盘(CD)和数字多功能盘(DVD),例如CD-ROM、CD-RW、CD-R、DVD-ROM、DVD-RW或DVD-R盘。术语“计算机可读存储介质”还指多种类型的记录介质,这些记录介质能够被计算机设备经由网络或通信链路存取。例如,数据可通过调制解调器、通过因特网、或通过局域网被取回。计算机可读介质上包含的计算机可执行代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可执行代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
“计算机存储器”或“存储器”是计算机可读存储介质的一个例子。计算机存储器是可被处理器直接存取的任何存储器。“计算机存储装置”或“存储装置”是计算机可读存储介质的又一例子。计算机存储装置是任何非易失性计算机可读存储介质。在某些实施例中,计算机存储装置还可以是计算机存储器,计算机存储器也可以是计算机存储装置。
此处使用的“处理器”包含能够执行程序、机器可执行指令或计算机可执行代码的电子组件。对包括“处理器”的计算设备的引用应该被解释为可能包含一个以上的处理器或处理核。所述处理器例如可以是多核处理器。处理器也可指单个计算机系统中的处理器集合,或指分布于多个计算机系统当中的处理器集合。术语“计算设备”还应该被解释为可能指计算设备集合或计算设备网络,所述计算设备集合或计算设备网络中的每个计算设备包括一个或多个处理器。所述计算机可执行代码可由同一计算设备内的多个处理器执行,也可由甚至跨多个计算设备分布的多个处理器执行。
计算机可执行代码可包括使处理器执行本发明的一方面的机器可执行指令或程序。用于执行本发明的各个方面的操作的计算机可执行代码可以以一种或多种程序设计语言的任意组合来编写并且被编译成机器可执行指令,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。在某些情况下,所述计算机可执行代码可以采取高级语言的形式或预编译的形式,并且可结合在运行中产生机器可执行指令的解释器使用。
所述计算机可执行代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由在适用时采取计算机可执行代码形式的计算机程序指令实现。进一步可理解,当不互斥时,不同的流程图、图示和/或框图中的方块的组合可被组合。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
所属技术领域的技术人员知道,本发明的各个方面可以实现为装置、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可执行代码。
将理解,上述实施例中的一个或多个可被组合,只要组合的实施例不互斥即可。
附图说明
下面将参考附图,仅借助实例更详细地描述本发明的优选实施例,其中:
图1示出可操作以执行用于在存储器内的高速缓存行中实现动态阵列数据结构的方法的系统架构;
图2示出存储系统的示例性框图;
图3是示出针对动态阵列数据结构的一系列操作的图;以及
图4是用于在存储器内的高速缓存行中实现动态阵列数据结构的方法的流程图。
具体实施方式
在下文中,附图中编号相同的部件指定类似的部件,或者指定执行等同功能的部件。如果功能等同,上面已经介绍的部件将不必在下面的图中介绍。
图1示出计算系统100中的计算机系统(或服务器)112以通用计算设备的形式表现。计算机系统112的组件可以包括但不限于:一个或者多个处理器或者处理单元116,系统存储器128,连接不同系统组件(包括系统存储器128和处理单元116)的总线118。
计算机系统112典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统112访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储系统128可包括采取易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)和/或高速缓冲存储器。存储系统可包括一个或多个主动缓冲存储器件。主动缓冲器件可包括多个存储元件(例如,芯片)。主动缓冲存储器件可包括形成三维(“3D”)存储器件的存储层,在该三维存储器件中,各个芯片列形成与处理单元116通信的库(Vault)。主动缓冲存储器件可包括多个分区,这些分区可被多个处理元件同时访问,其中这些分区可以是任何适当的存储段,其中包括但不限于库(Vault)。
处理单元116可向存储系统发出请求,从而利用动态阵列数据结构及关联的元数据来实现应用。
计算机系统112也可与诸如键盘、指点设备、显示器124之类的一个或多个外部设备114通信;与允许用户与计算机系统112交互的一个或多个设备通信;和/或与允许计算机系统112与一个或多个其它计算设备通信的任何设备(例如,网卡、电话调制解调器)通信。此类通信可经由I/O接口122发生。而且,计算机系统112可以经由网络适配器120与诸如局域网(LAN)、广域网(WAN)和/或公共网络(例如,因特网)之类的一个或多个网络通信。如此处所述,网络适配器120经由总线118与计算机系统/服务器112的其它组件通信。
图2详细地示出存储系统128的示例性框图。存储系统128包括控制器206和存储装置208。存储装置208例如可以是任何适当的物理存储器,诸如高速缓存或随机存取存储器(RAM)。
控制器206包括请求210的接收器214和应答212的发送器216,接收器214和发送器216被配置为与总线118通信,其中接收器214和发送器216均包括先进先出缓冲器(FIFO)。响应于请求210,控制器206对存储装置208执行读写存取,并且可返回应答212。
存储装置208包括一个或多个高速缓存行211。可在高速缓存行211中实现动态阵列数据结构225,例如方式为:配置高速缓存行211的至少一部分,以便作为动态阵列存取高速缓存行211的所述至少一部分。此类高速缓存行211包括元数据字段213和元素字段215。例如,动态阵列数据结构225的元数据字段213和元素字段215可由用户在存储装置208内配置。
元数据字段213包括动态阵列数据结构225的元数据。元数据字段213可存储参数的一个或多个参数值,这些参数例如描述动态阵列数据结构225的元素大小以及动态阵列数据结构225中的元素数量。
元素字段215和元数据字段213共享高速缓存行211的已分配位。这样,为元数据字段213分配高速缓存行的一个位包括从元素字段215解除分配另一个位。
例如,元数据字段213的大小可由在元数据字段213中分配的启用位控制。启用位可以与给定参数(例如,描述动态阵列数据结构225的元素大小的参数)关联。如果启用位被设定,则给定参数的参数值可被存储在元数据字段213中,从而增加元数据字段213的大小。
所描述的存储系统的结构可以提供单个接口,以便多个用户或线程例如通过多线程应用来利用动态阵列数据结构,在所述多线程应用中,多个线程同时发出存取高速缓存行的请求,例如请求210。
对动态阵列数据结构225执行操作的请求210由控制器206通过执行与所述操作请求对应的动作来执行。这些动作被编码在控制器中。在执行请求之后,控制器206可通过通信220,在元数据字段213中更新元数据(例如,元素数量参数),并且在元数据字段215中更新动态阵列数据结构225。
控制器206的接收器214从总线118接收来自请求者或用户的请求210。请求者可以是执行应用的线程,例如执行AMO操作的线程。请求210指示高速缓存行在存储装置中的位置。所指示的高速缓存行的元数据213由控制器206读取以确定动态阵列数据结构225的参数。这些参数由控制器206用来确定动态阵列数据结构225中的选定元素在存储装置208中的位置,其中选定元素由请求210使用。
请求210可以是有关对动态阵列数据结构225执行操作的任何适当的请求,例如分配元素字段215中的元素以及在该字段中存储值的压入请求。所分配的元素可以是元素字段215的任何元素,其中包括位于动态阵列数据结构225中间的元素。
动态阵列数据结构225的元素可以由控制器206在通信218中存取,其中该存取基于请求210中的操作。在请求210是弹出操作请求的实例中,在通信218中读取的选定元素的值由控制器206通过应答212发送给用户。在请求210是压入操作请求的实例中,请求210提供控制器206在通信218中写入选定元素的值。
图3是示出针对动态阵列数据结构(例如,225)的一系列操作的图。动态阵列数据结构325.1首先为空,具有0个元素。针对动态阵列数据结构的操作可添加元素,直到占据元素字段215中的所有元素。元素字段315.1中标注“X”的每个元素指示未存储动态阵列数据结构的任何元素的空元素。存储系统的控制器(例如,206)可以作为并发请求来请求和接收所述操作。
高速缓存行311的元数据字段313.1包括子字段317.1,该子字段用于存储指示动态阵列数据结构315.1中的元素数量的值。
序列301的第一操作压入最先(A)(pushFirst(A))与压入值操作对应。压入值操作请求提供将插入动态阵列数据结构325.1的值“A”。控制器206确定第一元素321在其中将插入值“A”的动态阵列数据结构325.1中的位置。例如,压入值操作请求可指示所述第一元素321。控制器206将值“A”写入元素字段315.2,从而产生具有一个元素的动态阵列数据结构325.2。此外,控制器更新元数据字段313.1的元数据以增大元素数量值。控制器读取子字段317.1的值0,将其递增1,然后将递增后的值1写入子字段317.2。
序列303的第二操作压入最先(B)(pushFirst(B))与另一压入值操作对应,该压入值操作用于在动态阵列数据结构325.2的第一元素321中插入值“B”。为此,控制器将值“A”从元素字段315.2的第一元素321移到第二元素323以释放元素字段315.2的第一元素321。接下来,控制器将值“B”写入第一元素321,从而产生具有两个元素的动态阵列数据结构325.3。此外,控制器更新元数据字段313.2的元数据以增大元素数量值。控制器读取子字段317.2的值1,将其递增1,然后将递增后的值2写入子字段317.3。
序列305的第三操作压入最先(C)(pushFirst(C))与又一压入值操作对应,该压入值操作用于在动态阵列数据结构325.3的第一元素321中插入值“C”。为此,控制器将值“A”从第二元素323移到第三元素324以释放第二元素323,并且将值“B”从第一元素321移到第二元素323以释放元素字段315.3的第一元素。接下来,控制器将值“C”写入第一元素321,从而产生具有三个元素的动态阵列数据结构325.4。此外,控制器更新元数据字段313.3的元数据以增大元素数量值。控制器206读取子字段317.3的值2,将其递增1,然后将递增后的值3写入子字段317.4。
序列303的第四操作压入最后(D)(pushLast(D))与另一压入值操作对应,该压入值操作用于在动态阵列数据结构325.4的最后元素中插入值“D”。为此,控制器读取在子字段317.4中存储的元素数量值3以确定元素数量。进一步地,控制器确定这样的元素:该元素在元素字段315.4中的位置与元素数量的读取值加1对应。接下来,控制器将值“D”写入元素327,从而产生具有四个元素的动态阵列数据结构325.5。
此外,控制器更新元数据字段313.4的元数据以增大元素数量值。控制器206读取子字段317.4的值3,将其递增1,然后将递增后的值4写入子字段317.5。
序列309的第五操作弹出最先()(popFirst())与弹出操作对应,该弹出操作用于读取和删除动态阵列数据结构325.5的第一元素的值。控制器读取值“C”并将其发送回操作请求者,然后从元素字段315.5中移除值“C”。接下来,控制器将值“B”、“A”和“D”分别从第二、第三和第四元素移到第一、第二和第三元素,从而产生具有三个元素的动态阵列数据结构325.6。
此外,控制器更新元数据字段313.5的元数据以减小元素数量值。控制器读取子字段317.5的值4,将其递减1,然后将递减后的值3写入子字段317.6。
图4是用于操作存储系统(诸如图1所示的存储系统)以在存储系统内的高速缓存行中(例如,在单个高速缓存行中)实现动态阵列数据结构的示例性方法和系统的流程图。
在步骤401,在存储器中配置高速缓存行,以使得该高速缓存行包括元数据字段和元素字段。该配置进一步包括在元数据中定义动态阵列数据结构的元素大小、动态阵列数据结构中的元素数量。该配置进一步包括在元素字段中定义动态阵列数据结构中的每个元素的值。可从用户处接收元数据中的参数和元素字段中的元素值。
在步骤403,控制器接收来自用户或请求者的对动态阵列数据结构执行操作的请求。请求210提供要操作的高速缓存行的地址位置。发出请求的请求者可以是任何适当的用户,例如在处理器上运行的线程、包括在缓冲存储堆栈中的处理元素,或者经由网络接口逻辑通过网络通信的线程。
在步骤405,控制器针对所述操作使用所述信息标识对动态阵列数据结构执行的一个或多个动作。所述一个或多个动作被编码在控制器中。
在步骤407,控制器执行一个或多个动作来执行请求。例如,所述请求可包括针对动态阵列数据结构的弹出操作请求,所述弹出操作请求用于获取动态阵列数据结构中的选定元素的值。在这种情况下,所述动作可由控制器执行如下:读取所述元数据字段的元数据;确定所述选定元素在存储器中的位置;使用所述位置读取所述选定元素的值;将所述选定元素的值作为应答发送给所述操作的请求者,并且更新高速缓存行。高速缓存行的更新包括递减元数据中的元素数量,以及移动所述元素字段中的元素以将所述选定元素从动态阵列数据结构中移除。
如图所示,在步骤407之后,控制器等待处理下一请求210,然后返回到方框403。
初始配置步骤401可在初始配置期间执行一次,同时步骤403到407在控制器206处理每个操作请求时可以被重复。
参考标号列表
100计算系统
112服务器
114外部设备
116处理器
120网络适配器
122I/O接口
124显示器
128存储系统
206控制器
208存储装置
210请求
211高速缓存行
212应答
213元数据字段
214接收器
215元素字段
216发送器
218-220通信
225动态阵列数据结构
301-309操作
311高速缓存行
313元数据字段
315元素字段
317子字段
321、323、324、327元素
325动态阵列数据结构
401-407步骤
Claims (14)
1.一种用于在包括存储装置(208)和控制器(206)的存储系统(128)内的高速缓存行(211、311)中实现动态阵列数据结构(225、325)的方法,所述方法包括:
-在所述存储装置(208)中将所述高速缓存行(211、311)配置为包括元数据字段(213)和元素字段(215、315)的高速缓存行,其中所述元数据字段(213、313)包括所述动态阵列数据结构(225、325)的元数据,并且其中所述元素字段(215、315)包括所述动态阵列数据结构的每个元素的值;
-所述控制器(206)接收对所述动态阵列数据结构(225、325)执行操作的请求(210),其中所述请求指示所述高速缓存行(211、311)在所述存储装置(208)中的位置以及指示指定所述请求(210)的信息;
-所述控制器(206)针对所述操作使用所述信息标识对所述动态阵列数据结构(225、325)执行的一个或多个动作,其中所述一个或多个动作被编码在所述控制器(206)中;以及
-响应于接收所述请求(210),通过执行一个或多个所编码的动作来执行所述请求。
2.根据权利要求1所述的方法,其中所述配置进一步包括:
-在所述元数据中定义所述动态阵列数据结构(225、325)的元素大小;
-在所述元数据中定义所述动态阵列数据结构(225、325)中元素(317.1)的数量;以及
-在所述元素字段(215、315)中定义所述动态阵列数据结构(225、325)中的每个元素的值。
3.根据权利要求1或2所述的方法,其中所述请求包括多个元素操作请求,所述请求的执行包括执行以下一个或多个动作:
-读取所述元数据字段(213、313)的元数据;
-确定所述动态阵列数据结构(225、325)中的元素数量;
-将所确定的元素数量作为应答发送给所述操作的请求者。
4.根据权利要求1或2所述的方法,其中所述请求包括针对所述动态阵列数据结构(225、325)的获取值操作请求,所述获取值操作请求用于获取所述动态阵列数据结构(225、325)中的选定元素的值,其中所述请求的执行包括执行以下一个或多个动作:
-读取所述元数据字段(213、313)的元数据;
-确定所述元素字段(215、315)中的所述选定元素在所述存储装置(208)中的位置;
-使用所述位置读取所述选定元素的值;
-将所述选定元素的值作为应答发送给所述操作的请求者。
5.根据权利要求1或2所述的方法,其中所述请求包括针对所述动态阵列数据结构的弹出操作请求,所述弹出操作请求用于获取值并移除所述动态阵列数据结构(225、325)中的选定元素,其中所述请求的执行包括执行以下一个或多个动作:
-读取所述元数据字段(213、313)的元数据;
-确定所述元素字段(215、315)中的所述选定元素在所述存储装置中的位置;
-使用所述位置读取所述选定元素的值;
-将所述选定元素的值作为应答发送给所述操作的请求者;以及
-更新所述高速缓存行,所述更新包括递减所述元数据中的元素数量,以及移动所述元素字段(215、315)中的元素以将所述选定元素从所述动态阵列数据结构(225、325)中移除。
6.根据权利要求1或2所述的方法,其中所述请求包括设定值操作请求,所述请求为所述动态阵列数据结构(225、325)中的选定元素提供值;其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段的元数据;确定所述动态阵列数据结构(225、325)中的所述选定元素在所述高速缓存行的所述元素字段中的位置;以及将所述值写入所述选定元素。
7.根据权利要求1或2所述的方法,其中所述请求包括压入值操作请求,所述请求提供要插入所述动态阵列数据结构(225、325)中的值;其中所述请求的执行包括执行以下一个或多个动作:读取所述元数据字段(213、313)的元数据;更新所述高速缓存行,所述更新包括递增所述元数据中的元素数量,并移动所述元素字段(215、315)中的元素以插入所述动态阵列数据结构的选定元素,以及将所述值写入所述选定元素。
8.根据权利要求1或2所述的方法,其中所述请求包括获取最小值或获取最大值操作请求;其中所述请求的执行包括执行以下一个或多个动作:
-读取所述元数据字段(213、313)的元数据;
-确定所述动态阵列数据结构(225、325)中的所有元素在所述元素字段(215、315)中的位置;
-使用所确定的位置读取所述动态阵列数据结构(225、325)中的所有元素的值,并且标识具有最小值或最大值的元素;以及
-将所标识的最小或最大值作为应答发送给所述操作的请求者。
9.根据权利要求1或2所述的方法,其中所述请求包括弹出最小值或弹出最大值操作请求;其中所述请求的执行包括执行以下一个或多个动作:
-读取所述元数据字段(213、313)的元数据;
-确定所述动态阵列数据结构(225、325)中的所有元素在所述元素字段(215、315)中的位置;
-使用所确定的位置读取所述动态阵列数据结构(225、325)中的所有元素的值,并且标识具有最小值或最大值的元素;
-将所标识的最小或最大值作为应答发送给所述操作的请求者,并且更新所述高速缓存行,所述更新包括递减所述元数据中的元素数量,以及移动所述元素字段中的元素以将所标识的元素从所述动态阵列数据结构中移除。
10.根据上述任一权利要求所述的方法,其中所述配置进一步包括在所述元数据中定义所述动态阵列数据结构(225、325)的每个元素中的实例字段的位置和大小,所述请求包括弹出实例请求,所述方法进一步包括递减选定元素的实例字段,基于递减后的实例大于0而将具有所递减的实例字段的所述选定元素压回所述动态阵列数据结构(225、325)。
11.根据上述任一权利要求所述的方法,其中所述请求与单个加载指令或单个存储指令相对应,其中所述单个加载指令或单个存储指令包括由所述控制器(206)接收和执行的原子存储操作,并且所述单个加载指令或单个存储指令支持包括所述请求的并发请求。
12.根据上述任一权利要求所述的方法,其中所述元素字段(215、315)和所述元数据字段(213、313)共享所述高速缓存行的已分配位,为所述元数据字段分配所述高速缓存行的一位包括从所述元素字段解除分配另一位。
13.一种计算机程序产品,其包括执行根据上述任一权利要求所述的方法的方法步骤的计算机可执行指令。
14.一种用于实现动态阵列数据结构(225、325)的系统(128),所述系统包括存储装置(208)和控制器(206),所述系统(128)被配置为通过以下步骤在高速缓存行(211、311)中实现所述动态阵列数据结构(225、325):
-在所述存储装置(208)中将所述高速缓存行(211、311)配置为包括元数据字段(213)和元素字段(215、315)的高速缓存行,其中所述元数据字段(213)包括所述动态阵列数据结构(225、325)的元数据,并且其中所述元素字段(215、315)包括所述动态阵列数据结构的每个元素的值;
-所述控制器(206)接收对所述动态阵列数据结构(225、325)执行操作的请求(210),其中所述请求指示所述高速缓存行(211、311)在所述存储装置中的位置以及指示指定所述请求(210)的信息;
-针对所述操作使用所述信息标识对所述动态阵列数据结构(225、325)执行的一个或多个动作,其中所述一个或多个动作被编码在所述控制器(206)中;以及
-响应于接收所述请求(210),通过执行一个或多个所编码的动作来执行所述请求(210)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1312443.3 | 2013-07-11 | ||
GB1312443.3A GB2516091A (en) | 2013-07-11 | 2013-07-11 | Method and system for implementing a dynamic array data structure in a cache line |
PCT/IB2014/062756 WO2015004570A1 (en) | 2013-07-11 | 2014-07-01 | Method and system for implementing a dynamic array data structure in a cache line |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105359145A true CN105359145A (zh) | 2016-02-24 |
CN105359145B CN105359145B (zh) | 2019-03-22 |
Family
ID=49081140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480038913.0A Expired - Fee Related CN105359145B (zh) | 2013-07-11 | 2014-07-01 | 在高速缓存行中实现动态阵列数据结构的方法和系统 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP6333370B2 (zh) |
CN (1) | CN105359145B (zh) |
DE (1) | DE112014003226T5 (zh) |
GB (2) | GB2516091A (zh) |
WO (1) | WO2015004570A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10762000B2 (en) | 2017-04-10 | 2020-09-01 | Samsung Electronics Co., Ltd. | Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014588A1 (en) * | 2001-07-10 | 2003-01-16 | Micron Technology, Inc. | Caching of dynamic arrays |
JP2003030051A (ja) * | 2001-07-19 | 2003-01-31 | Sony Corp | データ処理装置及びデータアクセス方法 |
CN1512353A (zh) * | 2002-12-27 | 2004-07-14 | 国际商业机器公司 | 性能改善的数据存储和方法 |
CN1543605A (zh) * | 2001-06-29 | 2004-11-03 | ض� | 高速缓存器元数据的存储 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0720087A1 (en) * | 1994-12-27 | 1996-07-03 | Motorola, Inc. | Apparatus and method for a memory extension stack in a data processing system |
US6009499A (en) * | 1997-03-31 | 1999-12-28 | Sun Microsystems, Inc | Pipelined stack caching circuit |
US6138209A (en) * | 1997-09-05 | 2000-10-24 | International Business Machines Corporation | Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof |
US6836823B2 (en) * | 2001-11-05 | 2004-12-28 | Src Computers, Inc. | Bandwidth enhancement for uncached devices |
US7454572B2 (en) * | 2005-11-08 | 2008-11-18 | Mediatek Inc. | Stack caching systems and methods with an active swapping mechanism |
US8566524B2 (en) * | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US9507647B2 (en) * | 2010-01-08 | 2016-11-29 | Globalfoundries Inc. | Cache as point of coherence in multiprocessor system |
US20120185672A1 (en) * | 2011-01-18 | 2012-07-19 | International Business Machines Corporation | Local-only synchronizing operations |
-
2013
- 2013-07-11 GB GB1312443.3A patent/GB2516091A/en not_active Withdrawn
-
2014
- 2014-07-01 DE DE112014003226.3T patent/DE112014003226T5/de active Pending
- 2014-07-01 JP JP2016524920A patent/JP6333370B2/ja active Active
- 2014-07-01 GB GB1601478.9A patent/GB2530234B/en active Active
- 2014-07-01 WO PCT/IB2014/062756 patent/WO2015004570A1/en active Application Filing
- 2014-07-01 CN CN201480038913.0A patent/CN105359145B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1543605A (zh) * | 2001-06-29 | 2004-11-03 | ض� | 高速缓存器元数据的存储 |
US20030014588A1 (en) * | 2001-07-10 | 2003-01-16 | Micron Technology, Inc. | Caching of dynamic arrays |
JP2003030051A (ja) * | 2001-07-19 | 2003-01-31 | Sony Corp | データ処理装置及びデータアクセス方法 |
CN1512353A (zh) * | 2002-12-27 | 2004-07-14 | 国际商业机器公司 | 性能改善的数据存储和方法 |
Also Published As
Publication number | Publication date |
---|---|
GB201312443D0 (en) | 2013-08-28 |
WO2015004570A1 (en) | 2015-01-15 |
GB2516091A (en) | 2015-01-14 |
DE112014003226T5 (de) | 2016-04-28 |
GB201601478D0 (en) | 2016-03-09 |
JP2016526738A (ja) | 2016-09-05 |
CN105359145B (zh) | 2019-03-22 |
GB2530234A (en) | 2016-03-16 |
GB2530234B (en) | 2020-04-15 |
JP6333370B2 (ja) | 2018-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102147746B (zh) | 动态线程池管理系统及管理方法 | |
CN102867035B (zh) | 一种分布式文件系统集群高可用方法和装置 | |
CN103019810A (zh) | 具有不同执行优先级的计算任务的调度和管理 | |
CN108845877B (zh) | 管理内存的方法、装置和系统 | |
US20190324814A1 (en) | Resource release method, resource allocation method, devices, and computer program products | |
CN110209493B (zh) | 内存管理方法、装置、电子设备及存储介质 | |
US11314712B2 (en) | Method and apparatus for providing serial number, electronic device and readable storage medium | |
CN110109868A (zh) | 用于索引文件的方法、装置和计算机程序产品 | |
CN103095686A (zh) | 热点元数据访问控制方法和服务器 | |
US20190332540A1 (en) | Storage management method, electronic device and computer readable medium | |
CN103543959B (zh) | 海量数据高速缓存的方法及装置 | |
CN113495889B (zh) | 一种分布式对象存储方法、装置、电子设备及存储介质 | |
US11048557B2 (en) | Methods and modules relating to allocation of host machines | |
CN109213745A (zh) | 一种分布式文件存储方法、装置、处理器及存储介质 | |
CN105868121B (zh) | 一种信息处理方法及电子设备 | |
CN108958660A (zh) | 分布式存储系统及其数据处理方法和装置 | |
CN102650932A (zh) | 数据的访问方法、设备和系统 | |
CN105359145A (zh) | 在高速缓存行中实现动态阵列数据结构的方法和系统 | |
CN105264608A (zh) | 存储数据的方法、内存控制器和中央处理器 | |
CN108228476A (zh) | 一种数据获取方法及装置 | |
CN111562883A (zh) | 固态硬盘的缓存管理系统、方法、装置 | |
US8386447B2 (en) | Allocating and managing random identifiers using a shared index set across products | |
US10387330B1 (en) | Less recently and frequently used (LRAFU) cache replacement policy | |
CN105378686A (zh) | 用于在高速缓存行中实现位阵列的方法和系统 | |
CN111475277A (zh) | 一种资源分配方法、系统、设备及机器可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190322 Termination date: 20200701 |
|
CF01 | Termination of patent right due to non-payment of annual fee |