CN105874437A - 存储器管理方法和装置 - Google Patents
存储器管理方法和装置 Download PDFInfo
- Publication number
- CN105874437A CN105874437A CN201480071840.5A CN201480071840A CN105874437A CN 105874437 A CN105874437 A CN 105874437A CN 201480071840 A CN201480071840 A CN 201480071840A CN 105874437 A CN105874437 A CN 105874437A
- Authority
- CN
- China
- Prior art keywords
- data
- thesaurus
- address
- memory
- row
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种存储器管理方法,包括:通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值,以及根据所确定的跨越值向彼此不同的多个存储库分配2D数据的垂直方向上的相邻数据。因此,通过使用具有较大数据宽度的存储器可以高效地访问垂直方向上的数据。
Description
技术领域
本发明的一个或多个实施例涉及存储器管理方法和装置。
背景技术
随着近期信息和通信技术的发展,诸如智能电话、数字相机、数字TV等的各种计算机系统已经被引入。为了计算机系统的高效使用,高速处理器根据用户的需要而被安装在计算机系统中。当高速处理器被安装在计算机系统上时,用于支持高速性能的高速存储器控制器也被要求。
一般,存储器控制器从计算机系统中的各种处理单元(例如,中央处理单元(CPU)、图形加速器等)接收存储器访问请求,并处理接收到的存储器访问请求,所述存储器访问请求例如对于从存储器读取数据的请求、对于向存储器写入数据的请求等。例如,存储器控制器可以从CPU接收数据加载请求,根据接收的数据加载请求从存储器读取数据,并向处理器返回所读取的数据。
发明内容
技术方案
本发明的一个或多个实施例包括存储器管理方法,通过该方法,可以通过使用具有较大数据宽度的存储器来高效地访问垂直方向上的数据。
本发明的一个或多个实施例包括存储器管理方法,该方法可以减少在使用具有较大数据宽度的存储器时可能发生的低效的电力消耗。
其它方面将在下面的描述中被部分地阐述,并且将从所述描述中部分地变得清晰,或者可以通过对给出的实施例的实践而习得。
根据本发明的一个或多个实施例,存储器管理方法包括:通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值;以及根据所确定的跨越值向彼此不同的多个存储库分配2D数据的垂直方向上的相邻数据。
根据本发明的一个或多个实施例,存储器管理方法包括:接收对存储在彼此不同的多个存储库中的垂直方向上的相邻数据的跨越访问请求;根据与接收到的跨越访问请求相对应的存储库地址,从彼此不同的多个存储库中的每一个中加载垂直方向上的相邻数据;以及在输出加载的数据的同时,将存储在彼此不同的多个存储库中的每一个中并且对应于存储库地址的数据存储在高速缓冲存储器中。
根据本发明的一个或多个实施例,用于管理配置有多个存储库的存储器的数据的存储器管理装置包括:通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值;以及根据所确定的跨越值向彼此不同的多个存储库分配2D数据的垂直方向上的相邻数据。
根据本发明的一个或多个实施例,非瞬时计算机可读记录介质具有指令,该指令当被计算机运行时执行上述方法。
附图说明
图1示出了8x8二维(2D)数据的示例;
图2示出了用于图1的8x8 2D数据的跨越访问(stride access)的存储库(bank)的示例;
图3示出了用于图1的8×8 2D数据的跨越访问的存储库的另一个示例;
图4示出了根据实施例的用于跨越访问的8x8 2D数据的示例;
图5用于描述根据实施例的用于确定用于8x8 2D数据的跨越值(stridevalue)的方法;
图6示出了根据另一个实施例的用于跨越访问的16×8 2D数据;
图7和图8用于描述根据另一个实施例的用于确定用于16×8 2D数据的跨越值的方法;
图9是用于示出根据实施例的存储器管理方法的处理框图;
图10是用于示出根据另一个实施例的包括高速缓冲存储器(cache)的存储器管理方法的处理框图;
图11是用于解释根据实施例的存储器管理方法的流程图;以及
图12是用于解释根据另一个实施例的存储器管理方法的流程图。
具体实施方式
现在将详细参考实施例,其示例被示出在附图中,其中,相似的参考标号始终指代相似的元素,并且因此它们的描述将不会被重复。关于这一点,本实施例可以具有不同的形式,并且不应被解释为受限于这里所阐述的描述。因此,实施例仅仅在下面通过参考附图被描述以用来解释本描述的各个方面。
诸如“第一”和“第二”的术语在这里被仅仅用来描述各种组成元素,但是所述组成元素不被所述术语限制。所述术语只是用于区别一个组成元素与另一个组成元素的目的。
这里使用的术语只是为了描述特定实施例的目的,而不意图限制示范性实施例。如这里所使用的,单数形式“一”和“该”意图也包括复数形式,除非上下文清楚地另外指出。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,表明了所述特征、整体、步骤、操作、元素、和/或组件的存在,但是并不排除一个或多个其它特征、整体、步骤、操作、元素、组件、和/或它们的组的存在或添加。
图1示出了8×8二维(2D)数据的示例。图2示出了用于图1的8×8 2D数据的跨越访问的存储库的示例。图3示出了用于图1的8×8 2D数据的跨越访问的存储库的另一个示例。参考图1到图3,描述了跨越访问。
在许多图像算法中,需要垂直或水平方向上的处理以用于处理图像的数据。向量处理(vector processing)被用作使能快速图像处理的解决方案。对于单指令多数据(single instruction multiple data,SIMD),向量处理被使用从而可以改进系统的性能,在SIMD中以单一指令来处理多个数据。
参考图1,当算法被执行从而8x8 2D数据100在水平方向上被处理时,对图1中第一列110中的数据执行的操作与对第二列120中的数据执行的操作相同,虽然第一列110中的数据与第二列120中的数据处于8x8 2D数据的不同行中。因此,通过使用向量处理数据被同时处理,所述数据例如,第一列110的数据,即,(0,0)、(1,0)、(2,0)、(3,0)、(4,0)、(5,0)、(6,0)、以及(7,0)。这样做时,需要在垂直方向上读取不连续地存储在存储器(未示出)中的数据的功能,以便同时读取将被处理的列中的数据。在垂直方向上读取数据的功能被称为跨越访问。多种方法被用来同时读取被不连续地存储在存储器中的数据。典型的方法是将相同列中的数据分配给不同的存储器或存储库。在这个描述中,数据可以是图像数据,并且可以以二维存储在存储器中。而且,2D数据不限于图像数据,并且可以是由处理器处理的各种类型的数据。当数据是图像数据时,与位置(0,0)、(1,0)、(2,0)、(3,0)等相对应的数据可以是像素数据。
如图2中所示,可以通过使用匹配数据的位宽(bit width)的存储器来配置存储库。图1中8x8 2D数据100的第一列110中的垂直方向上的八(8)条数据被分别存储在存储库0到存储库7中。图1中8x8 2D数据100的第二列120中的垂直方向上的八(8)条数据被分别存储在存储库1到存储库8中。八(8)个列中的数据被以同样方式存储在不同的存储库中。因此,垂直方向上的相邻数据,即,垂直方向上的彼此相邻的多条数据,例如,(0,0)和(1,0),可以存储在不同的存储库中,例如,可以存储在存储库0和存储库1中。因此,垂直方向上的相邻数据,例如,(0,0)到(7,0),可以通过存储库地址0到7从存储库0到7同时加载。在以上存储器系统中,存储器系统是通过根据数据的位宽收集具有大约1到2字节的数据宽度的存储库来配置的。图2中示出的存储库中的每一个都具有较小的位宽,并且因此需要大量的存储器模件或存储库。但是,对于具有相同容量的存储器,如果存储库的数量增加,则存储器系统的面积效率(area efficiency)降低,并且因此存储器系统的尺寸增大。
参考图3,当具有较大数据宽度的存储库被用来实现上述面积效率时,存储器系统可以通过使用比在图2的存储器系统中使用的存储库数量更少的存储库数量来配置。换句话说,虽然在图2中示出的示例中使用了六十二(64)个存储库,但是在图3中示出的示例中使用了十六(16)个存储库。因此,与图2的示例相比,存储器系统的总体尺寸减小。但是,因为存储库的位宽增加,在访问存储库时的电力消耗也增加。同时,虽然对于每个存储库而言存在四条数据,并且因此可以从存储器同时读取四个列,但是在同一时间只有一个列可以存储在目的寄存器中。因此,因为每次读取图3中示出的与存储器的列0到3相对应的数据(即,以(0,0)到(0,3)开始的数据)时都需要访问存储器,所以电力消耗进一步增加。但是,对于稍后描述的方法中的跨越访问,即,当垂直方向上的相邻数据被加载时,可以避免在使用具有较大数据宽度的存储库时可能导致的低效的电力消耗。为此,可以通过使用用于存储存储器数据的寄存器类型的高速缓冲存储器来减少存储器访问的数量。当存储器访问的数量减少时,避免了处理器的不同的加载/存储单元访问相同的存储库的存储库冲突,从而可以改进总体性能。并且,可以提供通过使用具有较大数据宽度的存储器来读取垂直方向上的数据的存储器管理方法。为了高效地使用存储器,提供了用于根据2D数据的尺寸来确定用于存储相邻数据的存储间隔(即,存储库之间的距离)的方法。
图4示出了根据实施例的用于跨越访问的8×8 2D数据400的示例。参考图4,示出了8x8 2D数据400的第一列410。第一列410的数据是(0,0)到(7,0)。第一列410的数据是垂直方向上的相邻数据,并且当处理器执行向量处理时,对相邻数据执行相同的操作。虽然2D数据400的尺寸被示出为8×8,但是本实施例不限于此,并且可以使用任何尺寸,例如,16×16、64×64等。
图5用于描述根据实施例的用于确定用于8×8 2D数据的跨越值的方法。参考图5,示出了八(8)个存储库B0到B7。存储库的数量等于2N,其中N是自然数。垂直方向上的可以被同时读取的数据的最大数量可以与存储库的数量彼此相同。如图4中所示,用于跨越访问的垂直方向上的数据的最大数量是8,即,(0,0)到(7,0)。因此,存储数据所必需的存储库的数量是8,即,B0到B7。当存储库具有用于存储2n的数据的数据宽度时,其中n是2、3、4……,垂直方向上的所有数据被分配给不同的存储库,以便同时加载垂直方向上的数据。跨越值可以通过等式1定义。
[等式1]
跨越值=a×2n,其中“n”是正奇数
跨越值被确定为满足等式2的条件。
[等式2]
跨越值=a×2n≥2D数据的列的数量
在等式2中,“a”是最小的正奇数,“2n”是存储库宽度,而“n”是自然数。
跨越值是相同列中的位于一行中的数据和位于相邻行中的数据之间的距离。在图4的列410中,跨越值是垂直方向上的相邻数据(例如,(0,0)和(1,0))之间的距离。例如,当存储库具有用于存储数据的数据宽度23=8时,跨越值可以满足a×8,其中“a”是奇数。因此,由于图4中示出的2D数据由八(8)个列组成,所以值1被选择用于等式2中的“a”,从而跨越值是8。因此,如图5中所示,在数据(0,0)到(0,7)被分配给存储库0的同时,数据(1,0)到(1,7)被分配给存储库1,并且数据(2,0)到(2,7)被分配给存储库3,从而在跨越值方面存在等于8的差异。结果,垂直方向上的相邻数据(0,0)到(7,0)被分配给不同的存储库B0到B7以用于向量处理。当处理器执行向量处理时,垂直方向上的数据(0,0)到(7,0)可以被同时存取到具有存储库地址“存储库地址0”的存储库0到7,从而所有必需的数据可以被加载。并且,当处理器不仅加载用于图像处理的数据还在执行图像处理之后将数据存储到存储器时,数据可以被同时访问。
图6示出了根据另一个实施例的用于跨越访问的16×8 2D数据600的示例。图7和图8用于描述根据另一个实施例的用于确定用于16×8 2D数据的跨越值的方法。
参考图6,示出了16×8 2D数据600中的第一列610和第九列620。第一列610的数据是(0,0)到(7,0),而第九列620的数据是(0,8)到(7,8)。由于根据等式1和等式2,将被同时读取的垂直方向上的数据的最大数量是8,所以存储库的数量是8。
如图6中所示,由于16×8 2D数据600是由十六(16)个列组成的2D数据,当等式2被应用时,不等式a×8≥16被满足。因此,因为满足该不等式的最小的正奇数“a”是3,所以跨越值是24。因此,当具有九(9)个到二十四(24)个列的2D数据被存储在存储器的存储库(memory bank)中时,满足等式2的奇数“a”是3,并且因此跨越值是24。根据等式1和等式2的跨越值的确定可以由表1来表达。
表1
[表1]
参考表1,当2D数据具有1到8的列尺寸时,跨越值被设定为8,并且当2D数据具有9到24的列尺寸时,跨越值被设定为24。因此,当将被处理或已经处理的数据根据跨越访问而从存储器被加载或被存储在存储器中时,数据根据跨越值被分配给不同的存储库,从而数据可以相对于存储器被同步或同时加载或存储,所述跨越值是根据2D数据的尺寸来确定的。
图7示出了根据参考等式1和等式2以及表1确定的跨越值24,将数据存储在存储库B0到B7中的结果。2D数据当中的数据的行的数量与跨越值的确定无关。
参考图6的行和列和图7的存储库,第一行中的数据(0,0)到(0,7)被分配给存储库0B0,并且通过在存储库0B0之后跳过两(2)个存储库,第二行中的数据(1,0)到(1,7)被分配给存储库3B3,所述两(2)个存储库中的每一个根据跨越值24而具有数据宽度8。跨越值24是第一数据(0,0)和垂直方向上与第一数据(0,0)相邻的数据(1,0)之间的数据宽度。因此,在第一数据(0,0)被分配给存储库0B0中的第一位置,并且数据(1,0)被分配给存储库3B3中的第一位置时,相邻数据被存储为分开跨越值24并且分配给不同的存储库B0和B3。接下来,第三行中的数据(2,0)到(2,7)被分配给存储库6B6,并且通过在存储库6B6之后跳过两(2)个存储库,第四行中的数据(3,0)到(3,7)被分配给存储库1B1,所述两(2)个存储库中的每一个根据跨越值24而具有数据宽度8。第五行中的数据(4,0)到(4,7)被分配给存储库4B4,而第六行中的数据(5,0)到(5,7)被分配给存储库7B7。第七行中的数据(6,0)到(6,7)被分配给存储库2B2,而第八行中的数据(7,0)到(7,7)被分配给存储库5B5。以上述方式,图6的第一列610的所有数据(0,0)到(7,0)被分配给不同的存储库B0到B7。因此,当需要数据(0,0)到(7,0),即,垂直方向上的相邻数据的向量处理时,处理器可以通过存储库地址addr 0、addr 1、以及addr 2访问存储器,以便同步或同时加载或存储必需的数据(0,0)到(7,0)。根据上述存储器管理方法,由于垂直方向上的相邻数据根据跨越访问被存储在不同的存储库中,可以维持同时读取数据的功能,并且存储器可以被高效地使用。同时,由于被使用的存储库中的每一个具有较大的数据宽度,所以可以减少存储库的数量,并且改进面积效率。
参考图8,图6的第九列620中的数据(0,8)到(7,8)被分配给存储库。第一行中的数据(0,8)到(0,15)被分配给存储库1B1,并且通过在存储库1B1之后跳过两(2)个存储库,第二行中的数据(1,8)到(1,15)被分配给存储库4B4,根据跨越值24,所述两(2)个存储库中的每一个具有数据宽度8。跨越值24是第一数据(0,8)和在垂直方向上与第一数据(0,8)相邻的数据(1,8)之间的数据宽度。接下来,第三行中的数据(2,8)到(2,15)被分配给存储库7B7。第四行中的数据(3,8)到(3,15)被分配给存储库2B2。第五行中的数据(4,8)到(4,15)被分配给存储库5B5。第六行中的数据(5,8)到(5,15)被分配给存储库0B0。第七行中的数据(6,8)到(6,15)被分配给存储库3B3。第八行中的数据(7,8)到(7,15)被分配给存储库6B6。以上述方式,图6的第八列620的所有数据(0,8)到(7,8)被分配给不同的存储库B0到B7。因此,当需要数据(0,8)到(7,8),即,垂直方向上的相邻数据的向量处理时,处理器可以通过存储库地址addr 0、addr 1、以及addr 2访问存储器,以便同步或同时加载或存储必需的数据(0,8)到(7,8)。
图9是用于示出根据实施例的存储器管理方法的处理框图。参考图9,根据本实施例的存储器管理装置900包括地址偏移生成器910、包括第0到第7存储库的存储器920、用于重新排列从存储器920加载的数据的重新排列单元930、以及高速缓冲存储器940。
如图6到图8中所示,存储库地址根据将从其加载数据的列的位置而变化。如图7和图8中所示,数据(0,0)被分配给存储库0B0,而数据(0,8)被分配给存储库1B1。由于在将被访问的第一数据的位置处的存储库的数量是8,所以总共八(8)个情况是可能的。存储库和地址针对每个情况而变化。
地址偏移生成器910根据跨越值和第一数据的存储库生成偏移值,以便生成每个存储库地址。通过将偏移值添加到作为开始存储库的存储库地址的基础地址来计算用于每个存储库的地址。
返回参考图7,由于被分配了第一数据的存储库是存储库0B0,而存储库0B0的存储库地址是0,所以基础地址是0。而且,存储库1B1的偏移值是1,存储库2B2的偏移值是2,存储库3B3的偏移值是3,并且每个存储库的地址都是基础地址和其偏移值的总和。通过相应的跨越值和作为第一存储库的开始存储库来确定的每个存储库的地址偏移值被示出在表2中。
[表2]
在表2中,A[5:3]的值代表第一数据的存储库,列T0是存储库0的地址偏移值,而列T1是存储库1的地址偏移值。
重新排列单元930重新排列从存储器920加载数据(即,数据0到7)的次序,并且以Rd0到Rd7的次序将该数据输出到处理器。返回参考图7,与在垂直方向上的相邻数据当中、在第一列610的最低处的数据(7,0)到在第一列610的最高处的数据(0,0)相对应的存储库在图8中被排序为{B5,B2,B7,B4,B1,B6,B3,B0}。而且,如在图8中进一步示出的,与在图7的第九列620的最低处的数据(7,8)到在第九列620的最高处的数据(0,8)相对应的存储库被排序为{B6,B3,B0,B5,B2,B7,B4,B1}。因此,输出数据需要被重新排列,以便处理器可以以根据图6的第一列610的数据排列{(0,0),(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0)}的次序来执行输出数据的向量处理。例如,在图9中,由于从存储库0到存储库7加载或读取的数据以{(0,0),(3,0),(6,0),(1,0),(4,0),(7,0),(2,0),(5,0)}的次序来排列,所以重新排列单元930重新排列数据,由此改变次序,并且以{(0,0),(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0)}的次序输出该输出数据。
当接收到访问存储在不同的存储库中的在垂直方向上的相邻数据的跨越访问请求、并且在垂直方向上的相邻数据是根据每个存储库的存储库地址从每个存储库加载的时,高速缓冲存储器940输出加载的数据并存储被存储在对应于存储库地址的存储库中的数据。
一般,大量图像算法通过使用相邻的连续数据执行迭代运算。如图6中所示,当16×8 2D数据600的列0 610中的数据被处理时,接下来很可能处理列1的数据(0,1)到(7,1)。因此,存储器访问的数量可以通过使用寄存器类型的高速缓冲存储器以使用向量处理中的特性来减少。
参考图1和图3,当执行向量处理时,描述了用于通过使用高速缓冲存储器来减少存储器访问的数量的方法。
如图3中所示,通过使用移位及旋转方法,2D数据100的列0到列7的数据被存储在具有数据宽度4的存储库中。第0行中的数据(0,0)到(0,3)被分配给存储库0,而第1行中的数据(0,4)到(0,7)被分配给存储库1。作为下一行的第二行中的数据(1,0)到(1,3)被分配给存储库1,而第二行中的数据(1,4)到(1,7)被分配给存储库2。当在垂直方向上相邻的数据(0,0)到(7,0)以上述方式被分配给不同的存储库时,数据可以被同步或同时地从存储库地址0到7加载。
当处理器访问列0 110以执行向量处理时,例如,通过存储库地址0到7经由存储器对垂直方向上的相邻数据执行操作,即,列0,列0 110的数据(0,0)到(0,3)、列1 120的数据(1,0)到(1,3)、……以及列7的数据(7,0)到(7,3),以便对其执行操作。
处理器对从存储库地址0到7加载的列0 110的数据(0,0)到(7,0)执行向量处理。在加载的存储库0的数据(0,0)到(0,3)当中,用于向量处理的数据是(0,0),而其它数据(0,1)到(0,3)很可能被用于向量处理的下一次迭代。同样地,在存储库1的数据(1,0)到(1,3)当中,用于向量处理的数据是(1,0),而其它数据(1,1)到(1,3)很可能被用于下一向量处理。如上所述,由于相邻的连续数据很可能在图像处理算法中被处理,所以接下来很可能被处理的其它数据被存储在高速缓冲存储器940中。对于下一向量处理,存储器不被访问,而存储在高速缓冲存储器940中的数据被使用。
返回参考图6、图7和图9,为了加载在图6中的列0 610的数据(0,0)到(7,0),图7中阴影的存储库B0到B7被分配地址。存储库0B0通过存储库地址0addr 0访问,存储库1B1通过存储库地址1addr 1访问,存储库2B2通过存储库地址2addr 2访问,存储库3B3通过存储库地址0addr 0访问,存储库4B4通过存储库地址1addr 1访问,存储库5B5通过存储库地址2addr2访问,存储库6B6通过存储库地址0addr 0访问,而存储库7B7通过存储库地址1addr 1访问。在这种情况下,从存储器输出用于每个存储库的八(8)条数据。列0 610的数据(0,0)到(7,0)被输出,并且列0到列7的数据(0,0)到(7,7)被存储在高速缓冲存储器940中。在示例中,当接收到下一列的相邻数据的地址时,不从存储器920的存储库B0到B7加载数据,而输出存储在高速缓冲存储器940中的数据。
因此,当具有较大数据宽度的存储库被用于向量处理时,根据本实施例的高速缓冲存储器的使用可以减少存储器访问的数量,并且由于减少了存储库冲突的数量,可以因此减少电力消耗并改进处理器的性能。而且,由于可以使用具有较大数据宽度的存储器并且可以减少存储库的数量,所以可以改进面积效率。在本实施例中的高速缓冲存储器可以是寄存器类型的,并且可以存在于处理器和处理器芯片的内部存储器之间,但是本实施例不限于此。
图10是用于示出根据另一个实施例的包括高速缓冲存储器的存储器管理方法的处理框图。参考图10,包括存储库0到7的存储器1000,用于存储8×8数据的寄存器类型的高速缓冲存储器1010,用于存储高速缓冲存储器的有效性的有效性值存储单元1020,以及地址标记存储单元1030。
如图6和图7中所示,为了加载列0 610的数据,根据每个存储库的各自的存储库地址,访问所有阴影的存储库。在存储库地址0访问存储库0,在存储库地址1访问存储库1,……以及在存储库地址7访问存储库7。当对于每个存储库输出八(8)条数据时,列0的数据被输出,并且同时与列0到列7相对应的数据被存储在高速缓冲存储器1010中。高速缓冲存储器1010存储存储库0到存储库7的数据。
在这种情况下,由于有效数据被存储在高速缓冲存储器1010中,所以存储在高速缓冲存储器1010中的有效数据的有效性值被存储在有效性值存储单元1020中,并且与存储在高速缓冲存储器1010中的有效数据相对应的存储库地址被存储在地址标记存储单元1030中作为地址标记。
接下来,当跨越访问被请求时,在请求时的存储库地址被与存储在地址标记存储单元1030中的地址标记进行比较。当高速缓冲存储器的有效性被设定在有效性存储单元1020中并且包括在下一个跨越访问请求中的存储库地址与存储的地址标记相同时,从高速缓冲存储器1010输出数据而无需访问存储器1000。
在本实施例中,当有效数据被存储在高速缓冲存储器1010中时,由于存储器1000不被访问,所以处理器的其它加载/存储单元可以访问存储器1000,并且因此可以减少存储库冲突的数量并且可以改进系统性能。而且,虽然图10示出了高速缓冲存储器1010的尺寸能够存储8x8 2D数据,但是本实施例不限于此,并且高速缓冲存储器1010可以被具体实现为根据存储库的数量和每个存储库的数据宽度而具有各种各样的尺寸。而且,虽然高速缓冲存储器1010可以具体实现为存在于处理器和内部存储器之间的寄存器,但是本实施例不限于此。
图11是用于解释根据实施例的存储器管理方法的流程图。参考图11,在操作1100,2D数据的尺寸被参考。2D数据的尺寸包括列的数量。在操作1102,用于跨越访问的跨越值被确定。根据来自处理器的跨越访问请求,适合于分配包括在2D数据当中的相邻数据的跨越值被根据2D数据的尺寸来确定。当存储库根据等式1和等式2具有能够存储八(8)条数据的数据宽度时,如果2D数据的列的数量是8,则跨越值被确定为8。如果2D数据的列的数量是16,则跨越值被确定为24,因为满足等式1或等式2的跨越值大于或等于16这一条件的最小的正奇数(即列的数量)是3。如表1中所示,根据基于2D数据的列尺寸的最小值和最大值的相应的列尺寸来确定跨越值。
在操作1104,相邻数据根据跨越值被分配给不同的存储库。当在操作1102中确定的跨越值是例如8时,要求跨越访问的其中在垂直方向上存储相邻数据的地址的差是8,并且因此相邻数据被分配给不同的存储库。因此,处理器可以根据每个存储库地址同步或同时读取存储在存储库中的数据。
图12是根据另一个实施例的用于解释存储器管理方法的流程图。参考图12,在操作1200,接收到跨越访问请求。跨越访问请求可以是由处理器做出的对于访问垂直方向上的相邻数据和对垂直方向上相邻数据执行向量处理的请求。
在操作1202,确定跨越访问是用于加载还是用于存储。也就是说,确定跨越访问是用于加载存储在存储器中的数据还是用于存储由处理器处理的数据。当跨越访问是用于存储时,在操作1210,清除高速缓冲存储器的有效性。当跨越访问是用于存储时,清除高速缓冲存储器的有效性。当跨越访问是用于加载时,在操作1204,检查高速缓冲存储器的有效性。当高速缓冲存储器有效时,将地址进行相互比较。当它是对于由处理器加载存储在存储器中的数据的跨越访问请求时,参考高速缓冲存储器的有效性来确定是否存在存储在高速缓冲存储器中的数据。当有效数据被存储在高速缓冲存储器中时,在操作1206,存储在高速缓冲存储器中的数据的地址标记被与根据当前跨越访问请求的地址进行比较。
当地址标记和接收到的地址相同时,在操作1208,高速缓冲存储器输出被选择。因此,存储在高速缓冲存储器中的数据被输出而无需访问存储器。在本实施例中,为了向量处理,在垂直方向上的相邻数据被处理之后,很可能与所处理的数据相邻的数据被处理。对于针对相邻数据的地址请求,存储器不被访问,而存储在高速缓冲存储器中的数据被输出到处理器。
当地址标记和接收到的地址不相同时,执行操作1212。而且,当在操作1204中高速缓冲存储器被确定为无效(invalid)时,执行操作1212。在操作1212,存储器数据被存储在高速缓冲存储器中。在操作1214,有效性和地址被设定。当从处理器接收的跨越访问请求不是对于相邻数据的请求时,从存储器加载数据,加载的数据被存储在高速缓冲存储器中,高速缓冲存储器的有效性被设定,并且相应的地址作为地址标记被存储。在操作1216,存储器输出被选择。因此,从存储器加载的数据被输出到处理器。
虽然示出了操作1212到1216的过程被顺序地执行,但是所述过程可以被同时执行,或者以这样的次序执行:操作1216被首先执行,接着是操作1212和1214的高速缓冲存储器更新过程。
在本实施例中,根据2D数据的尺寸,例如,2d数据的列的尺寸,确定用于跨越访问的跨越值。由于数据被分配给不同的存储库,所以垂直方向上的相邻数据全都存在于不同的存储库中,并且因此,在维持同时读取数据的基础功能的同时,可以更加高效地使用存储器。而且,由于存储库是通过使用具有较大数据宽度的存储器来配置的,所以可以减少存储库的数量并且可以改进面积效率。
而且,由于通过利用跨越访问(例如,用于读取垂直方向上的相邻数据的图像处理算法)来使用寄存器类型的高速缓冲存储器,所以可以减少存储器访问的数量并且因此可以减少电力消耗。而且,由于允许通过处理器的其它加载/存储单元的存储器访问,所以减少了存储库冲突并且因此可以改进总体系统性能。
而且,虽然本实施例描述了用于加载或存储数据的存储器管理方法和装置,但是本实施例不限于音频数据或视频数据,并且可以应用到各种数据加载/存储存储器管理。
如上所述,根据上述实施例的存储器管理方法可以使用具有较大数据宽度的存储器,从而垂直方向上的数据可以被高效地访问并且因此可以减少电力消耗的低效率。
这里描述的装置可以包括处理器、用于存储将由处理器运行的程序数据的存储器、诸如盘驱动的永久存储器、用于处理与外部设备的通信的通信端口、以及包括显示器、按键等的用户接口设备。当涉及软件模块时,这些软件模块可以被存储为非瞬时计算机可读介质上的程序指令或处理器可运行的计算机可读代码,所述非瞬时计算机可读介质诸如只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、以及光数据存储设备。计算机可读记录介质还可以分布在网络耦合的计算机系统上,从而计算机可读代码以分布式方式存储和运行。这个介质能够由计算机读取,存储在存储器中,并且由处理器运行。
这里引用的所有参考,包括出版物、专利申请、以及专利,通过相同的程度的参考被合并于此,就好像每个参考被个别地和特别地指示为通过引用而合并和在这里整体阐述一样。
为了促进对本发明的原理的理解的目的,已经参考了附图中示出的实施例,并且特定的语言已经被用来描述了这些实施例。然而,这种特定的语言并不意图限制本发明的范围,并且本发明应当被解释为包含本领域普通技术人员通常能够想到的所有的实施例,。
本发明可以按照功能块组件和各种处理步骤来描述。这样的功能块可以由被配置为执行指定功能的任意数量的硬件组件和/或软件组件来实现。例如,本发明可以采用各种集成的电路组件,例如,存储器元件、处理元件、逻辑元件、查找表等,它们可以在一个或多个微处理器或其它控制设备的控制下执行各种功能。类似地,在本发明的元件是使用软件编程或软件元素来实施的情况下,本发明可以利用以数据结构、对象、进程、例程或其他编程元素的任何组合来实施的各种算法、利用任何编程或脚本语言(诸如C、C++、Java、汇编程序等)来实施。功能方面可以以在一个或多个处理器上运行的算法来实施。而且,本发明可以采用用于电子配置、信号处理和/或处理、数据处理等的任意数量的传统技术。词语“机制”和“元件”被宽泛地使用而不限于机械的或物理的实施例,而是可以包括结合处理器等的软件例程。
这里示出和描述的特定实施方式是本发明的说明性的示例,而不意图以任何方式另外限制本发明的范围。为了简洁,传统电子学、控制系统、软件开发以及系统的其它功能方面(以及系统的单个操作组件的组件)可以不被详细地描述。而且,在所呈现的各个附图中示出的连接线或连接器意图代表各种元件之间的示范性的功能关系和/或物理或逻辑耦合。应当注意,许多的替换的或另外的功能关系、物理连接或逻辑连接可以存在于实际设备中。此外,没有项目或组件是本发明的实践所必不可少的,除非该元素被特定地描述为“必要的”或“关键的”。将认识到,如这里所用的术语“包括”、“包含”以及“具有”被特定地意图解读为开放式技术术语。
在描述本发明的上下文中的(特别是在所附权利要求的上下文中的)术语“一”和“该”以及类似指示物的使用将被解释为涵盖单数和复数两者。而且,这里的数值范围的叙述仅仅意图充当个别地引用落在该范围内的每个单独的值的便捷方法,除非这里另外指示,并且每个单独的值被合并在说明书中,就好像其在这里被个别地叙述一样。最后,这里描述的所有方法的步骤能够以任何适当的次序来执行,除非这里另外指示,或者与上下文明显矛盾。对任何以及全部示例、或者这里提供的示范性语言(例如,“诸如”)的使用仅仅意图更好地示出本发明,而不是对本发明的范围加以限制,除非另外声明。多种修改和调整将被本领域普通技术人员容易地理解,而不脱离本发明的精神和范围。
Claims (15)
1.一种存储器管理方法,包括:
通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值;以及
根据所确定的跨越值,向彼此不同的多个存储库分配所述2D数据的垂直方向上的相邻数据。
2.如权利要求1所述的存储器管理方法,其中,所述跨越值是所述存储库的数据宽度的奇数倍,所述2D数据的尺寸对应于所述2D数据的列的数量。
3.如权利要求2所述的存储器管理方法,其中,所述跨越值被确定为满足以下等式:
跨越=a×2n≥所述2D数据的列的数量,
其中,“a”是正奇数,“2n”是存储库宽度,而“n”是自然数。
4.如权利要求1所述的存储器管理方法,其中,在所述相邻数据被分配给彼此不同的多个存储库时,所述相邻数据被同时加载或存储。
5.如权利要求1所述的存储器管理方法,其中,所述跨越值是被分配了相邻数据的多个存储库之间的距离。
6.如权利要求1所述的存储器管理方法,其中,可用于跨越访问的垂直方向上的相邻数据的最大数量等于所述多个存储库的数量。
7.如权利要求1所述的存储器管理方法,还包括根据被分配了相邻2D数据的第一数据的存储库和所确定的跨越值,生成所述多个存储库中的每一个的偏移值。
8.如权利要求7所述的存储器管理方法,还包括通过使用所生成的偏移值之一计算所述多个存储库中的每一个的地址。
9.如权利要求1所述的存储器管理方法,还包括:
接收对分配给彼此不同的多个存储库的相邻数据的跨越访问请求;
基于所述多个存储库中的每一个的地址和所述跨越值,重新排列从不同的存储库加载数据的次序;以及
输出重新排列的数据。
10.如权利要求9所述的存储器管理方法,还包括:
将重新排列的数据存储在高速缓冲存储器中,并且设定所述高速缓冲存储器的有效性;
将所述多个存储库中的每一个的地址存储为地址标记;以及
当接收到下一个跨越访问请求、并且彼此不同的所述多个存储库中的每一个的地址与所存储的地址标记相同时,从所述高速缓冲存储器加载数据。
11.如权利要求10所述的存储器管理方法,还包括:
当彼此不同的所述多个存储库中的每一个的地址与所存储的地址标记不同时,存储与彼此不同的所述多个存储库中的每一个的地址相对应的数据;
设定所述高速缓冲存储器的有效性,并且将每个存储库的地址存储为地址标记;以及
根据所述下一个跨越访问请求选择存储器输出。
12.一种存储器管理方法,包括:
接收对存储在彼此不同的多个存储库中的垂直方向上的相邻数据的跨越访问请求;
根据与接收到的跨越访问请求相对应的存储库地址,从彼此不同的所述多个存储库中的每一个中加载垂直方向上的相邻数据;以及
在输出加载的数据的同时,将存储在彼此不同的所述多个存储库中的每一个中并且对应于所述存储库地址的数据存储在高速缓冲存储器中。
13.一种用于管理配置有多个存储库的存储器的数据的存储器管理装置,
所述存储器管理装置被配置为:
通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值,并且根据所确定的跨越值向彼此不同的多个存储库分配所述2D数据的垂直方向上的相邻数据。
14.如权利要求13所述的存储器管理装置,其中,所述跨越值是所述存储库的数据宽度的奇数倍,并且所述2D数据的尺寸对应于所述2D数据的列的数量。
15.如权利要求14所述的存储器管理装置,其中,所述跨越值被确定为满足以下等式:
跨越=a×2n≥所述2D数据的列的数量,
其中,“a”是正奇数,“2n”是存储库宽度,而“n”是自然数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2013-0168833 | 2013-12-31 | ||
KR1020130168833A KR102202575B1 (ko) | 2013-12-31 | 2013-12-31 | 메모리 관리 방법 및 장치 |
PCT/KR2014/013009 WO2015102352A1 (en) | 2013-12-31 | 2014-12-30 | Memory management method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105874437A true CN105874437A (zh) | 2016-08-17 |
CN105874437B CN105874437B (zh) | 2019-10-25 |
Family
ID=53493639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480071840.5A Active CN105874437B (zh) | 2013-12-31 | 2014-12-30 | 存储器管理方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10430339B2 (zh) |
EP (1) | EP3063636B1 (zh) |
KR (1) | KR102202575B1 (zh) |
CN (1) | CN105874437B (zh) |
WO (1) | WO2015102352A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112005213A (zh) * | 2018-02-27 | 2020-11-27 | 谷歌有限责任公司 | 用于图像处理器的大型查找表 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019091191A (ja) * | 2017-11-14 | 2019-06-13 | ルネサスエレクトロニクス株式会社 | 半導体装置、データ処理システム、データ読取り方法、及びデータ読取りプログラム |
WO2024058810A1 (en) * | 2022-09-15 | 2024-03-21 | Google Llc | Reducing memory bank conflicts in a hardware accelerator |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002039271A1 (en) * | 2000-11-13 | 2002-05-16 | Chipwrights Design, Inc. | Non-integral multiple size array loop processing in simd architecture |
US20060236072A1 (en) * | 2005-04-14 | 2006-10-19 | International Business Machines Corporation | Memory hashing for stride access |
EP1936628A1 (en) * | 2006-12-22 | 2008-06-25 | Fujitsu Ltd. | Memory device, memory controller and memory system |
CN101558391A (zh) * | 2006-12-15 | 2009-10-14 | 密克罗奇普技术公司 | 用于微处理器的可配置高速缓冲存储器 |
US7872657B1 (en) * | 2006-06-16 | 2011-01-18 | Nvidia Corporation | Memory addressing scheme using partition strides |
US20110087821A1 (en) * | 2009-10-13 | 2011-04-14 | Samsung Electronics Co., Ltd. | Apparatus to access multi-bank memory |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5111389A (en) | 1987-10-29 | 1992-05-05 | International Business Machines Corporation | Aperiodic mapping system using power-of-two stride access to interleaved devices |
US4888679A (en) | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
US4918600A (en) | 1988-08-01 | 1990-04-17 | Board Of Regents, University Of Texas System | Dynamic address mapping for conflict-free vector access |
JPH07219847A (ja) | 1994-01-31 | 1995-08-18 | Fujitsu Ltd | 情報処理装置 |
JPH08123953A (ja) * | 1994-10-21 | 1996-05-17 | Mitsubishi Electric Corp | 画像処理装置 |
US6381668B1 (en) | 1997-03-21 | 2002-04-30 | International Business Machines Corporation | Address mapping for system memory |
JP4292262B2 (ja) | 1998-01-30 | 2009-07-08 | アラタイン セラピューティクス, エルエルシー | 予後アレルギー試験または予後炎症試験 |
US6748480B2 (en) | 1999-12-27 | 2004-06-08 | Gregory V. Chudnovsky | Multi-bank, fault-tolerant, high-performance memory addressing system and method |
US20040006667A1 (en) | 2002-06-21 | 2004-01-08 | Bik Aart J.C. | Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions |
US6912616B2 (en) * | 2002-11-12 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Mapping addresses to memory banks based on at least one mathematical relationship |
US7779198B2 (en) | 2004-11-23 | 2010-08-17 | Efficient Memory Technology | Method and apparatus of multiple abbreviations of interleaved addressing of paged memories |
JP4635687B2 (ja) | 2005-03-30 | 2011-02-23 | ソニー株式会社 | データアクセス装置、データアクセス方法、プログラムおよび記録媒体 |
US8370603B2 (en) | 2008-12-23 | 2013-02-05 | Apple Inc. | Architecture for address mapping of managed non-volatile memory |
US8547385B2 (en) | 2010-10-15 | 2013-10-01 | Via Technologies, Inc. | Systems and methods for performing shared memory accesses |
-
2013
- 2013-12-31 KR KR1020130168833A patent/KR102202575B1/ko active IP Right Grant
-
2014
- 2014-12-30 US US15/107,255 patent/US10430339B2/en active Active
- 2014-12-30 CN CN201480071840.5A patent/CN105874437B/zh active Active
- 2014-12-30 EP EP14877478.9A patent/EP3063636B1/en active Active
- 2014-12-30 WO PCT/KR2014/013009 patent/WO2015102352A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002039271A1 (en) * | 2000-11-13 | 2002-05-16 | Chipwrights Design, Inc. | Non-integral multiple size array loop processing in simd architecture |
US20060236072A1 (en) * | 2005-04-14 | 2006-10-19 | International Business Machines Corporation | Memory hashing for stride access |
US7872657B1 (en) * | 2006-06-16 | 2011-01-18 | Nvidia Corporation | Memory addressing scheme using partition strides |
CN101558391A (zh) * | 2006-12-15 | 2009-10-14 | 密克罗奇普技术公司 | 用于微处理器的可配置高速缓冲存储器 |
EP1936628A1 (en) * | 2006-12-22 | 2008-06-25 | Fujitsu Ltd. | Memory device, memory controller and memory system |
US20110087821A1 (en) * | 2009-10-13 | 2011-04-14 | Samsung Electronics Co., Ltd. | Apparatus to access multi-bank memory |
Non-Patent Citations (1)
Title |
---|
PHILIP KOOPMAN: "Main Memory Performance", 《HTTPS://WWW.ECE.CMU.EDU/~ECE548/HANDOUTS/14M_PERF.PDF》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112005213A (zh) * | 2018-02-27 | 2020-11-27 | 谷歌有限责任公司 | 用于图像处理器的大型查找表 |
US11321802B2 (en) | 2018-02-27 | 2022-05-03 | Google Llc | Large lookup tables for an image processor |
TWI794423B (zh) * | 2018-02-27 | 2023-03-01 | 美商谷歌有限責任公司 | 用於影像處理器之大查找表 |
Also Published As
Publication number | Publication date |
---|---|
CN105874437B (zh) | 2019-10-25 |
WO2015102352A1 (en) | 2015-07-09 |
US10430339B2 (en) | 2019-10-01 |
EP3063636A4 (en) | 2017-08-09 |
US20160335185A1 (en) | 2016-11-17 |
KR20150078951A (ko) | 2015-07-08 |
KR102202575B1 (ko) | 2021-01-13 |
EP3063636B1 (en) | 2020-05-06 |
EP3063636A1 (en) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
US10140123B2 (en) | SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations | |
US7620781B2 (en) | Efficient Bloom filter | |
CN104699631B (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
EP2972907B1 (en) | Work stealing in heterogeneous computing systems | |
Cavalcante et al. | MemPool: A shared-L1 memory many-core cluster with a low-latency interconnect | |
CN1278342A (zh) | 用于带有间接超长指令字处理部件至处理部件通信的有效同步mimd操作的方法和设备 | |
Starke et al. | IBM's POWER10 processor | |
CN104011676A (zh) | 用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络 | |
CN112148665B (zh) | 缓存的分配方法及装置 | |
CN103744644A (zh) | 采用四核结构搭建的四核处理器系统及数据交换方法 | |
CN1328659C (zh) | 具有共享存储器的改进结构 | |
CN105874437A (zh) | 存储器管理方法和装置 | |
CN103186501A (zh) | 一种多处理器共享存储方法及系统 | |
CN105393210A (zh) | 用于模拟共享存储器结构的存储器单元 | |
CN100592282C (zh) | 共享的存储器装置 | |
CN100388211C (zh) | 计算引擎代码空间扩展方法与装置 | |
CN106484532A (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN104572480B (zh) | 用于数据元素的交织存储的数据处理设备和方法 | |
US9158731B2 (en) | Multiprocessor arrangement having shared memory, and a method of communication between processors in a multiprocessor arrangement | |
CN108121671A (zh) | 集成电路 | |
CN102136130B (zh) | 一种应用于图像处理的Cache的硬件实现 | |
WO2002008910A1 (en) | Memory device storing data and directory information thereon, and method for providing the directory information and the data in the memory device | |
Jagode et al. | Custom assignment of MPI ranks for parallel multi-dimensional FFTs: Evaluation of BG/P versus BG/L | |
US11829293B2 (en) | Processor and arithmetic processing method |
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 |