CN103942162A - 在存储器中进行多访问的方法、装置和存储系统 - Google Patents

在存储器中进行多访问的方法、装置和存储系统 Download PDF

Info

Publication number
CN103942162A
CN103942162A CN201410201149.6A CN201410201149A CN103942162A CN 103942162 A CN103942162 A CN 103942162A CN 201410201149 A CN201410201149 A CN 201410201149A CN 103942162 A CN103942162 A CN 103942162A
Authority
CN
China
Prior art keywords
address
data
result
predetermined condition
plot
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
Application number
CN201410201149.6A
Other languages
English (en)
Other versions
CN103942162B (zh
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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN201410201149.6A priority Critical patent/CN103942162B/zh
Publication of CN103942162A publication Critical patent/CN103942162A/zh
Priority to EP15792922.5A priority patent/EP3144817A4/en
Priority to PCT/CN2015/078863 priority patent/WO2015172718A1/zh
Priority to JP2017512089A priority patent/JP6389323B2/ja
Priority to US15/310,984 priority patent/US10956319B2/en
Priority to EP22213885.1A priority patent/EP4180972A1/en
Application granted granted Critical
Publication of CN103942162B publication Critical patent/CN103942162B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)

Abstract

本发明实施例提供一种在存储器中进行多访问的方法、支持存储器中的多访问的装置以及存储系统。所述方法包括:接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的;根据N个地址来执行预定操作;以及输出操作的结果。因此,根据本发明实施例,能够提高计算机系统的性能,并且使得可以恰如用户所需地来输入并使用所期望的地址。

Description

在存储器中进行多访问的方法、装置和存储系统
技术领域
本发明实施例涉及一种在存储器中进行多访问的方法、支持存储器中的多访问的装置以及存储系统,更具体地说,涉及一种能够提高存储器的访问性能的在存储器中进行多访问的方法、支持存储器中的多访问的装置以及存储系统。
背景技术
随机内存访问一直是影响计算机性能的重要因素。一般而言,一次DRAM(Dynamic Random Access Memory,动态随机存取存储器)的访问需要数百个时钟周期。计算机系统结构和编程语言一直采用如Cache(高速缓冲存储器)、预取等方式来尽量减少对DRAM的随机访问,或降低随机访问对性能的影响。
近年来,大数据分析成为重要的应用领域,在大数据分析应用中,大量使用以图为代表的数据结构,Cache和预取等方法很难对这类数据结构的访问进行优化,在现有处理器和内存结构下仍然会产生大量的随机访问。
因此,期望一种能够提高计算机系统的访问性能的解决方案。
发明内容
本发明实施例提供一种在存储器中进行多访问的方法、支持存储器中的多访问的装置以及存储系统,能够提高计算机系统的访问性能。
根据本发明实施例的一个方面,提供一种用于在存储器中进行多访问的方法,包括:接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的;根据N个地址来执行预定操作;以及输出操作的结果。
根据本发明实施例的另一个方面,提供一种用于支持存储器中的多访问的装置,包括:接收单元,用于接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的;处理单元,用于根据N个地址来执行预定操作;以及输出单元,用于输出操作的结果。
根据本发明实施例的再一方面,提供一种存储系统,包括如前所述的用于支持存储器中的多访问的装置。
因此,根据本发明实施例,可以对存储器中的多个地址进行操作,并且这些地址既可以是连续的,也可以是非连续的,这使得可以恰如用户所需地来输入并使用所期望的地址。此外,由于可以在存储器内部根据输入的地址来执行预定操作并输出操作的结果,所以不仅拓展了存储器的功能,而且提高了数据处理的速度,节省了时间。
附图说明
通过以下借助附图的详细描述,将会更容易地理解本发明,其中相同的标号指定相同结构的单元,并且在其中:
图1是示出根据本发明实施例的用于在存储器中进行多访问的方法的示意性流程图;
图2是示出根据本发明另一实施例的用于在存储器中进行多访问的方法的示意性流程图;
图3是示出一种图的数据结构的示意图;
图4是示出根据本发明一具体实施方式的当对在N个地址处存储的数据执行预定操作时、用于在存储器中进行多访问的方法的示意性流程图;
图5是示出根据本发明另一具体实施方式的当对在N个地址处存储的数据执行预定操作时、用于在存储器中进行多访问的方法的示意性流程图;
图6是示出根据本发明的再一具体实施方式的当对N个地址执行预定操作时、用于在存储器中进行多访问的方法的示意性流程图;
图7是示出根据本发明实施例的一种支持存储器中的多访问的装置的示意性框图;以及
图8是示出根据本发明另一实施例的一种支持存储器中的多访问的装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在这里使用的术语仅仅是为了描述特定实施例的目的,而并不意欲限制本发明。如这里所使用的,单数形式“一”、“一个”和“该”意欲也包括复数形式,除非上下文明确指出并非如此。还应当明白,当在本说明书中使用时,术语“包括”和/或“包括……的”、或“包含”和/或“包含……的”指定所阐述的特征、区域、整数、步骤、操作、元件和/或组件的存在,但是不排除存在或添加一个或多个其他特征、区域、整数、步骤、操作、元件和/或组件和/或其组。
除非另有定义,否则这里所使用的所有术语具有与本发明所属领域的一名普通技术人员所通常理解的相同的含义。还应当明白,诸如在通用字典中定义的那些术语应当被解释为具有与相关技术和本公开的上下文的其含义一致的含义,而不应当以理想化或过于形式化的意义来对其进行解释,除非这里明确地如此定义。
在以下的描述中,虽然以图为例来进行说明,但是,本领域技术人员应当明白,本发明实施例也可以被应用于其他数据结构,诸如树、链表等。
此外,除了DRAM之外,本发明实施例还可以应用于其他存储设备和存储系统,诸如SRAM(static random access memory,静态随机存取存储器)、PCM(Phase Change Memory,相变存储器)、FRAM(铁电存储器)等等。
此后,将结合附图来具体说明本发明实施例。
图1是示出根据本发明实施例的用于在存储器中进行多访问的方法100的示意性流程图。该方法100可以在处理器中被执行。
如图1中所示,在方法100的110,接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的。
在120,根据N个地址来执行预定操作。
在130,输出操作的结果。
因此,根据本发明实施例,可以对存储器中的多个地址进行操作,并且这些地址既可以是连续的,也可以是非连续的,这使得可以恰如用户所需地来输入并使用所期望的地址。此外,由于可以在存储器内部根据输入的地址来执行预定操作并输出操作的结果,所以不仅拓展了存储器的功能,而且提高了数据处理的速度,节省了时间。
此外,由于一次接收多个地址并执行预定操作,因此,根据本发明另一实施例,在对所有地址执行的预定操作结束之前,可以利用缓冲区来存储中间结果,并当对所有地址执行的预定操作全部结束时输出缓冲区内的地址作为结果,以此来进一步提高访问速度。
图2是示出根据本发明另一实施例的用于在存储器中进行多访问的方法200的示意性流程图。该方法200可以在存储器中被执行。
如图2中所示,在方法200的S210,接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的。
在220,根据N个地址来执行预定操作。
在225,将操作的结果存储在存储器内的缓冲区中。
在230,在方法100中输出操作的结果具体为:输出缓冲区中的地址作为结果。
根据本发明实施例,由于在完成对所有地址的操作之前将中间结果暂时存储在缓冲区中,所以可以进一步提高访问速度。例如,在对存储在地址处的数据进行访问的情况下,从存储器外部对存储器内的一个地址处的数据进行一次访问(输入/输出)时,因为握手信号所占用的时间开销较大,大约占总时间的60%左右,所以所需要花费的总时间大概是几百纳秒(例如,200ns),而当利用缓冲区时,因为大大减少了握手信号,所以在存储器内部对同样的数据进行一次访问所需要花费的总时间可以被缩短到几十纳秒甚至几个纳秒,例如1-2ns。此外,可以以与cache(高速缓冲存储器)类似的结构来配置该缓冲区,以进一步提高访问速度。因此,当利用缓冲区时,可以缩短了访问时间。
这里,缓冲区可以是从存储器内原有的缓冲区域中新划分出来的,也可以是增加到存储器中的新的缓冲区域。在后者的情况下,可能需要对存储器的硬件进行改进。此外,可以在每次输出了结果之后,清空缓冲区中的数据。
下面,将以图的数据结构为例来具体描述本发明实施例,但是本领域技术人可以明白,显然本发明还可以应用于除图以外的其他数据结构,诸如树、链表等等。
图3是示出一种图的数据结构的示意图。虽然在图3中示出的是无向图,但是本领域技术人员可以明白,显然其也可以为有向图,并且还可以包括权重信息。
如图3中所示,该图中包括8个顶点V0、V1、V2、V3、V4、V5、V6和V7以及11条边,通常,利用一维数组来存储顶点数据并且利用二维数组来存储边数据。一个示意性的顶点数组V[j](0≤j≤7)例如为下面所示。
V0 V1 V2 V3 V4 V5 V6 V7
顶点数据可以包括各种信息。在一个例子中,当执行图的遍历时,顶点数据可以表示该顶点是否已被遍历过,例如,0表示未遍历且1表示已遍历。在另一个例子中,在对顶点标层级的应用中,顶点数据可以表示该顶点相对于当前所指定的中心顶点来说是第几级节点。当然,本发明实施例不限于此,本领域技术人员可以明白顶点数据还可以包括任何其他合适的信息。
从图3中可以看出,在图结构的数据结构中,任意两个顶点(数据元素)之间均可相关联,以致当使用现有的存储器对图中的数据进行访问时,访问顶点的顺序是无法确定的,具有很强的随机性,并且难以进行缓存,导致访问速度较慢。例如,在如图3所示的图结构中,如果希望访问顶点V7,则在某次操作中可能按照V2→V7的顺序来访问,在下一次操作中可能按照V3→V7的顺序来访问,而在另一次操作中又可能按照V5→V7的顺序来访问。
在根据本发明的一个示范性实施例中,可以通过基址(base_address)和偏移量来确定每个地址,其中偏移量指示该地址与基址的距离。具体地,可以以数组的形式来定义多个偏移量,例如bias[i],这里,i是整数,并且0<i≤N-1。例如,假设基址为顶点V0的地址(例如0000H)且要对N=4个顶点V0、V2、V4和V7进行操作,并且可以知道顶点V2、V4和V7的偏移量分别是8Bytes、16Bytes和28Bytes,则可以定义N=4个偏移量,即bias[0]=0,bias[1]=8,bias[2]=16和bias[3]=28,从而在110或210中接收存储器中的N个地址可以进一步包括:接收基址和N个偏移量;以及根据第i地址=基址+第i偏移量来确定N个地址中的每一个。因此,可以得到如下地址:
顶点V0的地址、即第0地址=0000H+0Bytes;
顶点V2的地址、即第1地址=0000H+8Bytes;
顶点V4的地址、即第2地址=0000H+16Bytes;和
顶点V7的地址、即第3地址=0000H+28Bytes。
在另一个示范性实施例中,除了直接给出顶点的地址与基址的偏移之外,还可以使用顶点的编号来作为偏移量。在这种情况下,因为通常顶点的地址索引即表示该顶点的编号,所以,可以利用地址索引与地址元素大小的乘积来计算偏移量,从而进一步确定顶点的地址。
具体而言,例如,仍然假设基址为顶点V0的地址(例如0000H)且要访问N=4个顶点V0、V2、V4和V7,这里,0、2、4和7表示地址索引(顶点的编号),则可以定义一个偏移索引的数组bias_index[i](0<i≤N-1),即bias_index[0]=0,bias_index[1]=2,bias_index[2]=4和bias_index[3]=7。此外,假设用于存储地址的地址元素大小为4字节(4Bytes)。从而,接收N个偏移量可以进一步包括接收地址元素大小(4Bytes)和N个地址索引,并且可以根据第i地址=基址+第i地址索引×地址元素大小来确定N个地址中的每一个。因此,可以得到如下地址:
顶点V0的地址、即第0地址=0000H+0×4Bytes;
顶点V2的地址、即第1地址=0000H+2×4Bytes;
顶点V4的地址、即第2地址=0000H+4×4Bytes;和
顶点V7的地址、即第3地址=0000H+7×4Bytes。
利用地址索引和地址元素大小来确定地址可以便于用户操作,因为在大多数情况下,用户无法知道顶点的确切地址,但是可以知道每个顶点的编号。因此,利用顶点的编号与其地址索引之间的对应性,即可快速方便地确定实际地址。与需要输入实际地址的方案相比,这大大缩短了输入数据的时间,并且这样的方式便于用户查看输入的顶点是否正确,对于用户来说是操作友好的。
此外,可以看出,根据本发明实施例,对要进行操作的顶点是否连续并无要求,因此,可以对任意连续或非连续的顶点进行访问,使得访问更具有针对性。
此外,如本领域技术人员所明白的,术语“非连续”的含义是广义的,不仅包括绝对离散的顶点或地址,例如上面4个顶点V0、V2、V4和V7,而且可以包括部分连续的顶点或地址,例如顶点V0至V4以及顶点V7共5个顶点。
值得注意的是,虽然在上面的例子中以递增的顺序来输入N个地址,但是,因为输入的多个地址可以是非连续的,所以可以按照任何次序来输入这多个地址,而无需一定按照递增或者递减的顺序。
根据本发明示范性实施例,在120或220中根据N个地址来执行预定操作可以包括:对在N个地址处存储的数据执行预定操作。
图4是示出根据本发明一具体实施方式的当对在N个地址处存储的数据执行预定操作时、用于在存储器中进行多访问的方法400的示意性流程图。该方法400可以在存储器中被执行。
如图4中所示,在方法400的410,接收要访问的存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的。
在420,访问该N个地址中的每一个,并确定存储在该地址处的数据是否满足预定条件。
在430,输出该N个地址中满足预定条件的一个或多个地址作为结果。
在方法400中,所述N个地址可以是非连续的。当然,本领域技术人员可以明白,这N个地址也可以是连续的。
因而,根据本发明具体实施方式,可以对存储器中的多个地址进行访问,并且返回的结果包括符合条件的一个或多个地址,因此,与传统的一次只能访问一个地址的操作相比,大大提高了访问速度,并由此能够提高计算机系统的访问性能。并且,要访问的这些地址既可以是连续的,也可以是非连续的,这使得可以恰如用户所需地来访问所期望的地址。此外,由于可以在存储器内部对各个地址处的数据是否满足条件进行判定,因此节省了用于输入/输出的时间,提高了处理速度。
此外,由于一次对多个地址进行访问,因此,如上所述,根据本发明另一具体实施方式,在对所有地址的访问结束之前,可以利用缓冲区来存储中间结果,并当对所有地址的访问结束时输出缓冲区内的地址作为结果,以此来进一步提高访问速度。
图5是示出根据本发明另一具体实施方式的当对在N个地址处存储的数据执行预定操作时、用于在存储器中进行多访问的方法500的示意性流程图。该方法500可以在存储器中被执行。
如图5中所示,在方法500的510,接收要访问的存储器中的N个地址,其中N为大于1的整数。
在520,访问该N个地址中的每一个,并确定存储在该地址处的数据是否满足预定条件。
在525,在完成对该N个地址中的所有地址的访问之前,将满足预定条件的数据的地址存储在存储器内的缓冲区中。
在530,在530中的输出该N个地址中满足预定条件的一个或多个地址作为结果具体为:输出缓冲区中的地址作为结果。
由此,根据本发明的该具体实施方式,通过配置该缓冲区而进一步提高了访问速度。因此,当利用缓冲区来对存储器中的多个地址进行访问时,缩短了访问时间。
在接收了要访问的N个地址之后,根据本发明具体实施方式的当对在N个地址处存储的数据执行预定操作时、用于在存储器中进行访问的方法(方法400或方法500)可以对这些地址中的数据进行访问,以确定存储在该地址处的数据是否满足预定条件。
在一个例子中,这里的预定条件可以由用户根据实际需要来任意指定。在一个例子中,在图的遍历的情况下,预定条件可以表示该顶点是否已被遍历过,并且可以返回没有被遍历过的顶点地址(顶点编号)来作为结果。在另一个例子中,在针对某一预定顶点来为其他顶点标层级的情况下,预定条件可以表示该顶点是否已被标过层级或是预定顶点的第几级节点,并且可以返回没有被标过层级的顶点或者是指定层级的顶点、甚至是指定的多个层级的顶点的地址(顶点编号)来作为结果。
因此,当在本发明具体实施方式中确定存储在地址处的数据是否满足预定条件时,可以对数据与预定条件值执行包括关系运算和/或逻辑运算的操作,并且可以当操作结果指示为真时,确定满足预定条件。这里,关系运算可以包括但不限于等于、大于、大于等于、小于、小于等于和不等于,并且逻辑运算可以包括但不限于与、或和异或。当然,本发明实施例不限于此,并且本领域技术人员可以明白,这里的操作还可以包括现有以及将来开发的任何适当操作。
此外,当确定满足预定条件时,还可以用新值来替换该数据的原始值,并且新值可以是对该N个地址来说固定的值或是每个地址处的数据的原始值的函数。可替换地,新值还可以是与N个地址中的一个或多个对应的一组值,这样的一组值可以由用户设置或者根据情况由系统内部指定或调用,使得可以对符合预定条件的每个地址或每几个地址写入不同的值。
例如,针对每个要访问的地址,可以执行如下伪地址所表示的操作:
这里,base_address表示基址,bias_index[i]表示一组地址索引,element_size表示地址元素大小,op表示所执行的操作,condition_value表示预定条件值,并且new_value表示新值。
这里,当condition_value表示该地址处的数据的原始值且op为“==”(等于)时,该操作类似于传统的比较并更新(Compare And Swap,CAS)操作。但是,与传统的CAS操作不同的是,本发明实施例可以对多个地址执行这样的操作,并且这些地址可以是非连续的。此外,在本发明实施例中,在对多个地址的访问结束之前,每个符合条件的bias_index[i]被暂时存储在缓冲区中,直到所有地址的访问结束之后,才输出缓冲区中的地址作为结果。
可以明白,也可以不对满足条件的地址处的数据进行任何操作,而仅仅返回其地址即可,例如:
除了表示等于的关系运算之外,上述伪代码中的“op”还可以是其他关系运算,诸如大于“>”、大于等于“>=”、小于“<”、小于等于“<=”和不等于“!=”,并且“op”还可以是逻辑运算,包括与“AND”、或“OR”和异或“NOR”等等。但是,本领域技术人员应当明白,上述关系运算和逻辑运算仅仅是示范性的,并且本发明实施例不限于此,还可以包括其他任何适当运算的组合以及将来开发的运算。
在一个进一步的实施例中,预定条件可以不仅仅是一个固定的预定条件值“condition_value”,还可以是一个关系表达式,诸如可以是预定条件值与该地址的原始值进行运算的表达式,等等。
因此,根据本发明实施例,在确定存储在地址处的数据是否满足预定条件时对预定条件的判定十分灵活,包括多种操作,因而可以满足各种需要。
此外,虽然在上面的描述中预定条件对N个地址来说都是相同的,但是本发明实施例不限于此,在一些实施例中,预定条件对N个地址可以是不同的。换句话说,上述的“op”和“condition_value”可以包括分别与N个地址中的每个对应的元素,例如可以以数组op[i]和condition_value[i]的形式来提供,其中0<i≤N-1。
图6是示出根据本发明的再一具体实施方式的当对在N个地址处存储的数据执行预定操作时、用于在存储器中进行多访问的方法600的示意性流程图。该方法600可以在存储器中被执行。
如图6中所示,在方法600的610,接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的。
在620,对在N个地址处存储的数据执行算术运算、关系运算和逻辑运算中的至少一个。
在630,输出运算结果作为结果。
在一个例子中,可以对在N个地址处存储的数据执行诸如加、减和除中的一个或多个的算术运算,并输出运算之后得到的和、差和积等的结果,例如,下面的伪代码示出了求和的情况:
此外,还可以对在N个地址处存储的数据执行关系运算,以得到这些数据中的最大值、最小值、中间值等等。
当然,虽然上述伪代码仅示出对在N个地址处存储的数据执行算术运算、关系运算和逻辑运算中的一个,但是显然本领域技术人员可以明白,还可以对在N个地址处存储的数据执行算术运算、关系运算和逻辑运算中的至少一个。
此外,当对在N个地址处存储的数据执行上述操作时,同样可以利用缓冲区来提高速度,也就是说,在完成对所有N个地址的操作之前,将中间结果暂时存储在缓冲区内,然后当完成对N个地址的操作之后,输出缓冲区内的结果作为运算结果。这与之前的一些实施方式类似,因此为了简洁而省略对其的详细描述。
图7是示出根据本发明实施例的一种支持存储器中的多访问的装置700的示意性框图。这种装置700也可以被称为具有处理功能的多随机存取存储器(Multi-Random Access Memory with Processing Function,MRAMPF)。
如图7中所示,该支持存储器中的多访问的装置700可以包括:接收单元710、处理单元720和输出单元730。
接收单元710用于接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的。处理单元720用于根据N个地址来执行预定操作。输出单元730用于输出操作的结果。
因此,根据本发明实施例,可以对存储器中的多个地址进行操作,并且这些地址既可以是连续的,也可以是非连续的,这使得可以恰如用户所需地来输入并使用所期望的地址。此外,由于可以在存储器内部根据输入的地址来执行预定操作并输出操作的结果,所以不仅拓展了存储器的功能,而且提高了数据处理的速度,节省了时间。
此外,由于一次接收多个地址并执行预定操作,因此,根据本发明另一实施例,在对所有地址执行的预定操作结束之前,可以利用缓冲区来存储中间结果,并当对所有地址执行的预定操作全部结束时输出缓冲区内的地址作为结果,以此来进一步提高访问速度。
图8是示出根据本发明另一实施例的一种支持存储器中的多访问的装置800的示意性框图。该装置800与图7中示出的装置800的区别在于还包括缓冲区825,用于在处理单元820完成对该N个地址中的所有地址的操作之前,存储中间结果。在图8中示出的装置800所包括的接收单元810、处理单元820和输出单元830分别与在图7中示出的接收单元710、处理单元720和输出单元730对应,具有类似的结构并且分别执行类似的功能,这里对其细节不再赘述。
因此,在一个例子中,输出单元830输出存储在缓冲区825内的操作的结果。因此,根据本发明实施例,由于在对所有地址的操作完成之前将中间结果暂时存储在缓冲区中,所以可以进一步提高访问速度。
如前所述,这里的缓冲区825可以是从存储器内原有的缓冲区域中新划分出来的,也可以是增加到存储器中的新的缓冲区域。在后者的情况下,可能需要对存储器的硬件进行改进。此外,可以在每次输出了缓冲区中的数据之后,清空缓冲区中的数据。
在一个例子中,处理单元720或820可以通过基址和偏移量来确定每个地址,其中偏移量指示该地址与基址的距离。在这种情况下,接收单元710或810可以接收基址和N个偏移量来作为存储器中的N个地址,并且处理单元720或820根据第i地址=基址+第i偏移量来确定N个地址中的每一个,0<i≤N-1。例如,如上面所描述的,可以以数组的形式来定义多个偏移量,例如bias[i],这里,i是整数,并且0<i≤N-1。
此外,接收单元710或810所接收的N个偏移量还可以包括地址元素大小和N个地址索引,并且处理单元720或820可以根据第i地址=基址+第i地址索引×地址元素大小来确定N个地址中的每一个。例如,当访问的顶点是V0、V2、V4和V7时,0、2、4和7表示地址索引(顶点的编号),可以定义偏移索引的数组bias_index[i](0<i≤N-1),即bias_index[0]=0,bias_index[1]=2,bias_index[2]=4和bias_index[3]=7。同时,在假设用于存储地址的地址元素大小为4字节(4Bytes)的情况下,接收N个偏移量可以进一步包括接收地址元素大小(4Bytes)和N个地址索引。
当然,除了可以由处理单元720或820来确定要访问的N个地址外,也可以由接收单元710或810来进行确定,并将确定后的N个地址传送给处理单元720或820。
在一个例子中,可以是当接收单元710或810接收并确定了全部N个地址之后,将全部N个地址传送给处理单元720或820。可替换地,可以是接收单元710或810每确定一个地址后即将其传送给处理单元720或820。
从上面的描述可以看出,处理单元720或820根据N个地址来执行预定操作可以包括:对在N个地址处存储的数据执行预定操作。
当对在N个地址处存储的数据执行预定操作时,处理单元720或820可以访问该N个地址中的每一个,并确定存储在该地址处的数据是否满足预定条件,并且输出单元730或830可以输出该N个地址中满足预定条件的一个或多个地址作为结果。
在一个例子中,在完成对该N个地址中的所有地址的访问之前,将满足预定条件的数据的地址存储在存储器内的缓冲区中。在完成对该N个地址中的所有地址的访问之后,输出单元730或830可以输出缓冲区中的地址作为结果。
在一个例子中,处理单元720或820确定存储在该地址处的数据是否满足预定条件可以包括:对数据与预定条件值执行包括关系运算和/或逻辑运算的操作,并且当操作结果指示为真时,确定满足预定条件。这里,关系运算可以包括但不限于等于、大于、大于等于、小于、小于等于和不等于,并且逻辑运算可以包括但不限于与、或和异或。
此外,在一个例子中,当确定满足预定条件时,处理单元720或820可以用新值来替换该数据的原始值,其中,新值可以是固定值或原始值的函数。
显然,在根据本发明实施例的装置700或800中,所述预定条件对N个地址可以相同或不同。
值得注意的是,对于多个地址的数目、即N的选择可以取决于实际情况,诸如用户需求、硬件设计、计算能力等,例如N可以为32、64等等。可以适当选择N,以便不会影响存储器的处理性能。
此外,当对N个地址执行预定操作时,处理单元720或820可以对在N个地址处存储的数据执行算术运算、关系运算和逻辑运算中的至少一个,并且输出单元730或830可以输出运算结果作为结果。这些操作的具体细节已在前文进行了描述,因此这里不再赘述。
下面的伪代码示出根据本发明实施例的用于在存储器中执行多访问的一种示范性实现方式:
这里,base_address表示基址,bias_index[i]表示一组地址索引,其可以是连续的或非连续的,element_size表示地址元素大小(例如4Bytes),Function()表示要执行的预定操作,parameter表示预定操作所需要的参数且可以是一个或多个,并且output指示结果要被输出到的地址。在这种情况下,可以基于如下来确定真正要操作的N个地址:
base_address+bias_index[0]*element_size
base_address+bias_index[1]*element_size
……
base_address+bias_index[N-1]*element_size。
当然,本领域技术人员可以明白,可以利用bias[i]来替换bias_index[i]*element_size,并且op、condition_value和new_value均可以为一组元素,并且甚至是表达式。
例如,当对在N个地址处存储的数据执行的预定操作是确定存储在该地址处的数据是否满足预定条件时,Function(parameter)例如可以为Function(op,condition_value,new_value),这里op表示所执行的运算,condition_value表示预定条件值,new_value表示新值。
例如,当对在N个地址处存储的数据执行的预定操作是算术运算、关系运算和逻辑运算中的至少一个时,Function(parameter)例如可以为Function(op),甚至可以为Function(op1,op2,op3,…),抑或Function(op1[i],op2[i],op3[i],…)。
因此,本领域技术人员可以明白,可以根据设计需求来任意设置Function(parameter)的功能,而不限于上面所描述的实施例。
此外,本发明实施例还包括一种存储系统,包括上面参照图7或图8所述的支持存储器中的多访问的装置700或800。
虽然以上以图的数据结构为例来进行说明,但是本发明实施例不限于此,本领域技术人员可以明白,本发明实施例还可以应用于其他数据结构,以达到提高随机访问的性能的效果。
应当注意的是,为了清楚和简明,在图7和图8中仅示出了与本发明实施例相关的部分,但是本领域技术人员应当明白,图7和图8中所示出的设备或器件可以包括其他必要的单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (29)

1.一种用于在存储器中进行多访问的方法,包括:
接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的;
根据N个地址来执行预定操作;以及
输出操作的结果。
2.根据权利要求1所述的方法,其中,在输出操作的结果之前,该方法还包括:
将操作的结果存储在存储器内的缓冲区中。
3.根据权利要求2所述的方法,其中,输出操作的结果包括:
输出存储在缓冲区内的操作的结果。
4.根据权利要求1所述的方法,其中,通过基址和偏移量来确定每个地址,其中偏移量指示该地址与基址的距离。
5.根据权利要求4所述的方法,其中,接收存储器中的N个地址进一步包括:
接收基址和N个偏移量;以及
根据第i地址=基址+第i偏移量来确定N个地址中的每一个,0<i≤N-1。
6.根据权利要求5所述的方法,其中,接收N个偏移量进一步包括接收地址元素大小和N个地址索引,并且
根据第i地址=基址+第i偏移量来确定N个地址中的每一个包括根据第i地址=基址+第i地址索引×地址元素大小来确定N个地址中的每一个。
7.根据权利要求3所述的方法,其中,根据N个地址来执行预定操作包括:对在N个地址处存储的数据执行预定操作。
8.根据权利要求7所述的方法,其中,当对在N个地址处存储的数据执行预定操作时:
访问该N个地址中的每一个,并确定存储在该地址处的数据是否满足预定条件;以及
输出该N个地址中满足预定条件的一个或多个地址作为结果。
9.根据权利要求8所述的方法,其中,将操作的结果存储在存储器内的缓冲区中包括:
在完成对该N个地址中的所有地址的访问之前,将满足预定条件的数据的地址存储在存储器内的缓冲区中。
10.根据权利要求9所述的方法,其中,输出该N个地址中满足预定条件的一个或多个地址作为结果包括:
输出缓冲区中的地址作为结果。
11.根据权利要求8所述的方法,其中,确定存储在该地址处的数据是否满足预定条件包括:
对数据与预定条件值执行包括关系运算和/或逻辑运算的操作;以及
当操作结果指示为真时,确定满足预定条件,
其中,关系运算包括等于、大于、大于等于、小于、小于等于和不等于,并且逻辑运算包括与、或和异或。
12.根据权利要求11所述的方法,其中,该方法进一步包括:当确定满足预定条件时,用新值来替换该数据的原始值,
其中,新值是固定值或原始值的函数。
13.根据权利要求12所述的方法,其中,所述预定条件对N个地址相同或不同。
14.根据权利要求7所述的方法,其中,当对在N个地址处存储的数据执行预定操作时:
对在N个地址处存储的数据执行算术运算、关系运算和逻辑运算中的至少一个;以及
输出运算结果作为结果。
15.一种用于支持存储器中的多访问的装置,包括:
接收单元,用于接收存储器中的N个地址,其中N为大于1的整数并且所述N个地址是非连续的;
处理单元,用于根据N个地址来执行预定操作;以及
输出单元,用于输出操作的结果。
16.根据权利要求15所述的装置,其中,该装置还包括:
缓冲区,用于存储操作的结果。
17.根据权利要求16所述的装置,其中,输出单元输出存储在缓冲区内的操作的结果。
18.根据权利要求15所述的装置,其中,通过基址和偏移量来确定每个地址,其中偏移量指示该地址与基址的距离。
19.根据权利要求18所述的装置,其中,接收单元接收基址和N个偏移量,并且
根据第i地址=基址+第i偏移量来确定N个地址中的每一个,0<i≤N-1。
20.根据权利要求19所述的装置,其中,接收单元接收N个偏移量进一步包括接收地址元素大小和N个地址索引,并且
根据第i地址=基址+第i偏移量来确定N个地址中的每一个包括根据第i地址=基址+第i地址索引×地址元素大小来确定N个地址中的每一个。
21.根据权利要求17所述的装置,其中,处理单元根据N个地址来执行预定操作包括:对在N个地址处存储的数据执行预定操作。
22.根据权利要求21所述的装置,其中,当对在N个地址处存储的数据执行预定操作时:
处理单元访问该N个地址中的每一个,并确定存储在该地址处的数据是否满足预定条件;以及
输出单元输出该N个地址中满足预定条件的一个或多个地址作为结果。
23.根据权利要求22所述的装置,其中,在完成对该N个地址中的所有地址的访问之前,将满足预定条件的数据的地址存储在存储器内的缓冲区中。
24.根据权利要求23所述的装置,其中,输出单元输出缓冲区中的地址作为结果。
25.根据权利要求22所述的装置,其中,处理单元确定存储在该地址处的数据是否满足预定条件包括:
对数据与预定条件值执行包括关系运算和/或逻辑运算的操作;以及
当操作结果指示为真时,确定满足预定条件,
其中,关系运算包括等于、大于、大于等于、小于、小于等于和不等于,并且逻辑运算包括与、或和异或。
26.根据权利要求25所述的装置,其中,当确定满足预定条件时,处理单元用新值来替换该数据的原始值,
其中,新值是固定值或原始值的函数。
27.根据权利要求26所述的装置,其中,所述预定条件对N个地址相同或不同。
28.根据权利要求21所述的装置,其中,当对在N个地址处存储的数据执行预定操作时:
处理单元对在N个地址处存储的数据执行算术运算、关系运算和逻辑运算中的至少一个;以及
输出单元输出运算结果作为结果。
29.一种存储系统,包括如权利要求15-28中的任何一个所述的装置。
CN201410201149.6A 2014-05-14 2014-05-14 在存储器中进行多访问的方法、装置和存储系统 Active CN103942162B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201410201149.6A CN103942162B (zh) 2014-05-14 2014-05-14 在存储器中进行多访问的方法、装置和存储系统
EP15792922.5A EP3144817A4 (en) 2014-05-14 2015-05-13 Method and apparatus for multiple accesses in memory and storage system
PCT/CN2015/078863 WO2015172718A1 (zh) 2014-05-14 2015-05-13 在存储器中进行多访问的方法、装置和存储系统
JP2017512089A JP6389323B2 (ja) 2014-05-14 2015-05-13 メモリ中にマルチアクセスを行う方法、装置、及びメモリシステム
US15/310,984 US10956319B2 (en) 2014-05-14 2015-05-13 Method and apparatus for multiple accesses in memory and storage system, wherein the memory return addresses of vertexes that have not been traversed
EP22213885.1A EP4180972A1 (en) 2014-05-14 2015-05-13 Method and apparatus for multiple accesses in memory and storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410201149.6A CN103942162B (zh) 2014-05-14 2014-05-14 在存储器中进行多访问的方法、装置和存储系统

Publications (2)

Publication Number Publication Date
CN103942162A true CN103942162A (zh) 2014-07-23
CN103942162B CN103942162B (zh) 2020-06-09

Family

ID=51189834

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410201149.6A Active CN103942162B (zh) 2014-05-14 2014-05-14 在存储器中进行多访问的方法、装置和存储系统

Country Status (5)

Country Link
US (1) US10956319B2 (zh)
EP (2) EP4180972A1 (zh)
JP (1) JP6389323B2 (zh)
CN (1) CN103942162B (zh)
WO (1) WO2015172718A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015172718A1 (zh) * 2014-05-14 2015-11-19 清华大学 在存储器中进行多访问的方法、装置和存储系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2533568B (en) * 2014-12-19 2021-11-17 Advanced Risc Mach Ltd Atomic instruction

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007041810A (ja) * 2005-08-02 2007-02-15 Toshiba Corp 情報処理装置、情報処理システム、dmaコントローラおよび情報処理方法
CN1929034A (zh) * 2006-09-07 2007-03-14 华为技术有限公司 一种内存故障测试的方法及系统
US20070185849A1 (en) * 2002-11-26 2007-08-09 Bapiraju Vinnakota Data structure traversal instructions for packet processing
CN101506793A (zh) * 2006-08-23 2009-08-12 陈锦夫 在动态虚拟记忆中运行操作系统
US20100318729A1 (en) * 2009-06-11 2010-12-16 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US20110153983A1 (en) * 2009-12-22 2011-06-23 Hughes Christopher J Gathering and Scattering Multiple Data Elements
WO2011102432A1 (ja) * 2010-02-18 2011-08-25 Inoue Katsumi 情報絞り込み検出機能を備えたメモリ、このメモリを用いた情報検出方法、このメモリを含む装置、情報の検出方法、メモリの使用方法、およびメモリアドレス比較回路
US20120060015A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US20130318306A1 (en) * 2012-05-22 2013-11-28 Jeffry E. Gonion Macroscalar vector prefetch with streaming access detection
US20140040550A1 (en) * 2011-09-30 2014-02-06 Bill Nale Memory channel that supports near memory and far memory access

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067573A (ja) * 1998-08-19 2000-03-03 Mitsubishi Electric Corp 演算機能付きメモリ
US7865701B1 (en) * 2004-09-14 2011-01-04 Azul Systems, Inc. Concurrent atomic execution
US7805589B2 (en) * 2006-08-31 2010-09-28 Qualcomm Incorporated Relative address generation
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
JP4588114B1 (ja) * 2010-02-18 2010-11-24 克己 井上 情報絞り込み検出機能を備えたメモリ、その使用方法、このメモリを含む装置。
US20120079459A1 (en) * 2010-09-29 2012-03-29 International Business Machines Corporation Tracing multiple threads via breakpoints
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
US8612676B2 (en) * 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US11074169B2 (en) * 2013-07-03 2021-07-27 Micron Technology, Inc. Programmed memory controlled data movement and timing within a main memory device
US9497206B2 (en) * 2014-04-16 2016-11-15 Cyber-Ark Software Ltd. Anomaly detection in groups of network addresses
CN103942162B (zh) * 2014-05-14 2020-06-09 清华大学 在存储器中进行多访问的方法、装置和存储系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070185849A1 (en) * 2002-11-26 2007-08-09 Bapiraju Vinnakota Data structure traversal instructions for packet processing
JP2007041810A (ja) * 2005-08-02 2007-02-15 Toshiba Corp 情報処理装置、情報処理システム、dmaコントローラおよび情報処理方法
CN101506793A (zh) * 2006-08-23 2009-08-12 陈锦夫 在动态虚拟记忆中运行操作系统
CN1929034A (zh) * 2006-09-07 2007-03-14 华为技术有限公司 一种内存故障测试的方法及系统
US20100318729A1 (en) * 2009-06-11 2010-12-16 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US20110153983A1 (en) * 2009-12-22 2011-06-23 Hughes Christopher J Gathering and Scattering Multiple Data Elements
WO2011102432A1 (ja) * 2010-02-18 2011-08-25 Inoue Katsumi 情報絞り込み検出機能を備えたメモリ、このメモリを用いた情報検出方法、このメモリを含む装置、情報の検出方法、メモリの使用方法、およびメモリアドレス比較回路
US20120060015A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US20140040550A1 (en) * 2011-09-30 2014-02-06 Bill Nale Memory channel that supports near memory and far memory access
US20130318306A1 (en) * 2012-05-22 2013-11-28 Jeffry E. Gonion Macroscalar vector prefetch with streaming access detection

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015172718A1 (zh) * 2014-05-14 2015-11-19 清华大学 在存储器中进行多访问的方法、装置和存储系统
US10956319B2 (en) 2014-05-14 2021-03-23 Tsinghua University Method and apparatus for multiple accesses in memory and storage system, wherein the memory return addresses of vertexes that have not been traversed

Also Published As

Publication number Publication date
EP3144817A1 (en) 2017-03-22
EP3144817A4 (en) 2017-07-26
JP6389323B2 (ja) 2018-09-12
EP4180972A1 (en) 2023-05-17
WO2015172718A1 (zh) 2015-11-19
US10956319B2 (en) 2021-03-23
JP2017519317A (ja) 2017-07-13
CN103942162B (zh) 2020-06-09
US20170083236A1 (en) 2017-03-23

Similar Documents

Publication Publication Date Title
CN102272714B (zh) 具有匹配数据报告模块的型式辨识处理器
TWI409695B (zh) 用於配置裝置之系統、方法及裝置
Binev et al. Fast high-dimensional approximation with sparse occupancy trees
US20160103858A1 (en) Data management system comprising a trie data structure, integrated circuits and methods therefor
CN102868571A (zh) 一种规则匹配方法和装置
CN112579595A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN105740405A (zh) 存储数据的方法和装置
US9311348B2 (en) Method and system for implementing an array using different data structures
CN110618883B (zh) 一种用于共享内存链表的方法、装置、设备及存储介质
CN103942162A (zh) 在存储器中进行多访问的方法、装置和存储系统
CN103905310A (zh) 报文处理的方法及转发设备
WO2019147441A1 (en) Wide key hash table for a graphics processing unit
Giamblanco et al. A dynamic memory allocation library for high-level synthesis
US10671644B1 (en) Adaptive column set composition
CN109918074B (zh) 编译链接优化方法
CN105786478A (zh) 用于数据处理的方法及设备
CN104516823A (zh) 一种数据存储方法和装置
CN111459584B (zh) 页面渲染方法、装置和电子设备
CN104090895A (zh) 获取基数的方法、装置、服务器及系统
US20130185537A1 (en) Hash table using hash table banks
Sætra Shallow water simulation on GPUs for sparse domains
KR102479261B1 (ko) 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치
JPWO2014168199A1 (ja) 論理演算方法および情報処理装置
Ranzato An efficient simulation algorithm on kripke structures
US8819086B2 (en) Naming methodologies for a hierarchical system

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