存储器管理方法和装置的制造方法

文档序号:10517833阅读:482来源:国知局
存储器管理方法和装置的制造方法
【专利摘要】公开了一种存储器管理方法,包括:通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值,以及根据所确定的跨越值向彼此不同的多个存储库分配2D数据的垂直方向上的相邻数据。因此,通过使用具有较大数据宽度的存储器可以高效地访问垂直方向上的数据。
【专利说明】
存储器管理方法和装置
技术领域
[0001 ]本发明的一个或多个实施例涉及存储器管理方法和装置。
【背景技术】
[0002] 随着近期信息和通信技术的发展,诸如智能电话、数字相机、数字TV等的各种计算 机系统已经被引入。为了计算机系统的高效使用,高速处理器根据用户的需要而被安装在 计算机系统中。当高速处理器被安装在计算机系统上时,用于支持高速性能的高速存储器 控制器也被要求。
[0003] -般,存储器控制器从计算机系统中的各种处理单元(例如,中央处理单元(CPU)、 图形加速器等)接收存储器访问请求,并处理接收到的存储器访问请求,所述存储器访问请 求例如对于从存储器读取数据的请求、对于向存储器写入数据的请求等。例如,存储器控制 器可以从CPU接收数据加载请求,根据接收的数据加载请求从存储器读取数据,并向处理器 返回所读取的数据。

【发明内容】

[0004] 技术方案
[0005] 本发明的一个或多个实施例包括存储器管理方法,通过该方法,可以通过使用具 有较大数据宽度的存储器来高效地访问垂直方向上的数据。
[0006] 本发明的一个或多个实施例包括存储器管理方法,该方法可以减少在使用具有较 大数据宽度的存储器时可能发生的低效的电力消耗。
[0007]其它方面将在下面的描述中被部分地阐述,并且将从所述描述中部分地变得清 晰,或者可以通过对给出的实施例的实践而习得。
[0008] 根据本发明的一个或多个实施例,存储器管理方法包括:通过参考二维(2D)数据 的尺寸确定用于跨越访问的跨越值;以及根据所确定的跨越值向彼此不同的多个存储库分 配2D数据的垂直方向上的相邻数据。
[0009] 根据本发明的一个或多个实施例,存储器管理方法包括:接收对存储在彼此不同 的多个存储库中的垂直方向上的相邻数据的跨越访问请求;根据与接收到的跨越访问请求 相对应的存储库地址,从彼此不同的多个存储库中的每一个中加载垂直方向上的相邻数 据;以及在输出加载的数据的同时,将存储在彼此不同的多个存储库中的每一个中并且对 应于存储库地址的数据存储在高速缓冲存储器中。
[0010] 根据本发明的一个或多个实施例,用于管理配置有多个存储库的存储器的数据的 存储器管理装置包括:通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值;以及根 据所确定的跨越值向彼此不同的多个存储库分配2D数据的垂直方向上的相邻数据。
[0011] 根据本发明的一个或多个实施例,非瞬时计算机可读记录介质具有指令,该指令 当被计算机运行时执行上述方法。
【附图说明】
[0012]图1示出了8x8二维(2D)数据的示例;
[0013]图2示出了用于图1的8x8 2D数据的跨越访问(stride access)的存储库(bank)的 示例;
[0014]图3示出了用于图1的8X8 2D数据的跨越访问的存储库的另一个示例;
[0015]图4示出了根据实施例的用于跨越访问的8x8 2D数据的示例;
[0016]图5用于描述根据实施例的用于确定用于8x8 2D数据的跨越值(stride value)的 方法;
[0017] 图6示出了根据另一个实施例的用于跨越访问的16X8 2D数据;
[0018] 图7和图8用于描述根据另一个实施例的用于确定用于16X8 2D数据的跨越值的 方法;
[0019] 图9是用于示出根据实施例的存储器管理方法的处理框图;
[0020] 图10是用于示出根据另一个实施例的包括高速缓冲存储器(cache)的存储器管理 方法的处理框图;
[0021] 图11是用于解释根据实施例的存储器管理方法的流程图;以及 [0022]图12是用于解释根据另一个实施例的存储器管理方法的流程图。
【具体实施方式】
[0023]现在将详细参考实施例,其示例被示出在附图中,其中,相似的参考标号始终指代 相似的元素,并且因此它们的描述将不会被重复。关于这一点,本实施例可以具有不同的形 式,并且不应被解释为受限于这里所阐述的描述。因此,实施例仅仅在下面通过参考附图被 描述以用来解释本描述的各个方面。
[0024]诸如"第一"和"第二"的术语在这里被仅仅用来描述各种组成元素,但是所述组成 元素不被所述术语限制。所述术语只是用于区别一个组成元素与另一个组成元素的目的。
[0025] 这里使用的术语只是为了描述特定实施例的目的,而不意图限制示范性实施例。 如这里所使用的,单数形式"一"和"该"意图也包括复数形式,除非上下文清楚地另外指出。 还将理解,术语"包括"和/或"包含"当在本说明书中使用时,表明了所述特征、整体、步骤、 操作、元素、和/或组件的存在,但是并不排除一个或多个其它特征、整体、步骤、操作、元素、 组件、和/或它们的组的存在或添加。
[0026] 图1示出了8X8二维(2D)数据的示例。图2示出了用于图1的8X8 2D数据的跨越访 问的存储库的示例。图3示出了用于图1的8X8 2D数据的跨越访问的存储库的另一个示例。 参考图1到图3,描述了跨越访问。
[0027]在许多图像算法中,需要垂直或水平方向上的处理以用于处理图像的数据。向量 处理(vector processing)被用作使能快速图像处理的解决方案。对于单指令多数据 (single instruction multiple data,SIMD),向量处理被使用从而可以改进系统的性能, 在SB?中以单一指令来处理多个数据。
[0028]参考图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)等相对应的数据可 以是像素数据。
[0029] 如图2中所示,可以通过使用匹配数据的位宽(bit width)的存储器来配置存储 库。图1中8x8 2D数据100的第一列110中的垂直方向上的八(8)条数据被分别存储在存储库 〇到存储库7中。图1中8x8 2D数据100的第二列120中的垂直方向上的八(8)条数据被分别存 储在存储库1到存储库8中。八(8)个列中的数据被以同样方式存储在不同的存储库中。因 此,垂直方向上的相邻数据,即,垂直方向上的彼此相邻的多条数据,例如,(0,0)和(1,0), 可以存储在不同的存储库中,例如,可以存储在存储库〇和存储库1中。因此,垂直方向上的 相邻数据,例如,(〇,〇)到(7,0 ),可以通过存储库地址0到7从存储库0到7同时加载。在以上 存储器系统中,存储器系统是通过根据数据的位宽收集具有大约1到2字节的数据宽度的存 储库来配置的。图2中示出的存储库中的每一个都具有较小的位宽,并且因此需要大量的存 储器模件或存储库。但是,对于具有相同容量的存储器,如果存储库的数量增加,则存储器 系统的面积效率(area efficiency)降低,并且因此存储器系统的尺寸增大。
[0030]参考图3,当具有较大数据宽度的存储库被用来实现上述面积效率时,存储器系统 可以通过使用比在图2的存储器系统中使用的存储库数量更少的存储库数量来配置。换句 话说,虽然在图2中示出的示例中使用了六十二(64)个存储库,但是在图3中示出的示例中 使用了十六(16)个存储库。因此,与图2的示例相比,存储器系统的总体尺寸减小。但是,因 为存储库的位宽增加,在访问存储库时的电力消耗也增加。同时,虽然对于每个存储库而言 存在四条数据,并且因此可以从存储器同时读取四个列,但是在同一时间只有一个列可以 存储在目的寄存器中。因此,因为每次读取图3中示出的与存储器的列0到3相对应的数据 (即,以(〇,〇)到(〇,3)开始的数据)时都需要访问存储器,所以电力消耗进一步增加。但是, 对于稍后描述的方法中的跨越访问,即,当垂直方向上的相邻数据被加载时,可以避免在使 用具有较大数据宽度的存储库时可能导致的低效的电力消耗。为此,可以通过使用用于存 储存储器数据的寄存器类型的高速缓冲存储器来减少存储器访问的数量。当存储器访问的 数量减少时,避免了处理器的不同的加载/存储单元访问相同的存储库的存储库冲突,从而 可以改进总体性能。并且,可以提供通过使用具有较大数据宽度的存储器来读取垂直方向 上的数据的存储器管理方法。为了高效地使用存储器,提供了用于根据2D数据的尺寸来确 定用于存储相邻数据的存储间隔(即,存储库之间的距离)的方法。
[0031]图4示出了根据实施例的用于跨越访问的8X8 2D数据400的示例。参考图4,示出 了8x8 2D数据400的第一列410。第一列410的数据是(0,0)到(7,0)。第一列410的数据是垂 直方向上的相邻数据,并且当处理器执行向量处理时,对相邻数据执行相同的操作。虽然2D 数据400的尺寸被示出为8X8,但是本实施例不限于此,并且可以使用任何尺寸,例如,16X 16、64X64等。
[0032] 图5用于描述根据实施例的用于确定用于8X8 2D数据的跨越值的方法。参考图5, 示出了八(8)个存储库B0到B7。存储库的数量等于2N,其中N是自然数。垂直方向上的可以被 同时读取的数据的最大数量可以与存储库的数量彼此相同。如图4中所示,用于跨越访问的 垂直方向上的数据的最大数量是8,即,(0,0)到(7,0)。因此,存储数据所必需的存储库的数 量是8,即,B0到B7。当存储库具有用于存储2n的数据的数据宽度时,其中η是2、3、4……,垂 直方向上的所有数据被分配给不同的存储库,以便同时加载垂直方向上的数据。跨越值可 以通过等式1定义。
[0033] [等式 1]
[0034] 跨越值=aX 2η,其中"η"是正奇数
[0035] 跨越值被确定为满足等式2的条件。
[0036] [等式2]
[0037]跨越值= aX2n2 2D数据的列的数量
[0038]在等式2中,"a"是最小的正奇数,"2n"是存储库宽度,而"η"是自然数。
[0039] 跨越值是相同列中的位于一行中的数据和位于相邻行中的数据之间的距离。在图 4的列410中,跨越值是垂直方向上的相邻数据(例如,(0,0)和(1,0))之间的距离。例如,当 存储库具有用于存储数据的数据宽度23 = 8时,跨越值可以满足aX8,其中"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以 用于向量处理。当处理器执行向量处理时,垂直方向上的数据(〇,〇)到(7,0)可以被同时存 取到具有存储库地址"存储库地址〇"的存储库〇到7,从而所有必需的数据可以被加载。并 且,当处理器不仅加载用于图像处理的数据还在执行图像处理之后将数据存储到存储器 时,数据可以被同时访问。
[0040] 图6示出了根据另一个实施例的用于跨越访问的16X8 2D数据600的示例。图7和 图8用于描述根据另一个实施例的用于确定用于16X8 2D数据的跨越值的方法。
[0041 ] 参考图6,示出了16X8 2D数据600中的第一列610和第九列620。第一列610的数据 是(〇,〇)到(7,0),而第九列620的数据是(0,8)到(7,8)。由于根据等式1和等式2,将被同时 读取的垂直方向上的数据的最大数量是8,所以存储库的数量是8。
[0042]如图6中所示,由于16X8 2D数据600是由十六(16)个列组成的2D数据,当等式2被 应用时,不等式aX8 2 16被满足。因此,因为满足该不等式的最小的正奇数"a"是3,所以跨 越值是24。因此,当具有九(9)个到二十四(24)个列的2D数据被存储在存储器的存储库 (memory bank)中时,满足等式2的奇数"a"是3,并且因此跨越值是24。根据等式1和等式2的 跨越值的确定可以由表1来表达。
[0043] 表 1
[0044] [表1]
[0045]
[0046] 参考表1,当2D数据具有1到8的列尺寸时,跨越值被设定为8,并且当2D数据具有9 到24的列尺寸时,跨越值被设定为24。因此,当将被处理或已经处理的数据根据跨越访问而 从存储器被加载或被存储在存储器中时,数据根据跨越值被分配给不同的存储库,从而数 据可以相对于存储器被同步或同时加载或存储,所述跨越值是根据2D数据的尺寸来确定 的。
[0047] 图7示出了根据参考等式1和等式2以及表1确定的跨越值24,将数据存储在存储库 B0到B7中的结果。2D数据当中的数据的行的数量与跨越值的确定无关。
[0048] 参考图6的行和列和图7的存储库,第一行中的数据(0,0)到(0,7)被分配给存储库 0B0,并且通过在存储库0B0之后跳过两(2)个存储库,第二行中的数据(1,0)到(1,7)被分配 给存储库3B3,所述两(2)个存储库中的每一个根据跨越值24而具有数据宽度8。跨越值24是 第一数据(〇,〇)和垂直方向上与第一数据(〇,〇)相邻的数据(1,〇)之间的数据宽度。因此,在 第一数据(〇,〇)被分配给存储库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)。根 据上述存储器管理方法,由于垂直方向上的相邻数据根据跨越访问被存储在不同的存储库 中,可以维持同时读取数据的功能,并且存储器可以被高效地使用。同时,由于被使用的存 储库中的每一个具有较大的数据宽度,所以可以减少存储库的数量,并且改进面积效率。
[0049] 参考图8,图6的第九列620中的数据(0,8)到(7,8)被分配给存储库。第一行中的数 据(〇,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)被分配给存储库282。第五行中的数据(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。因 此,当需要数据(〇,8)到(7,8),即,垂直方向上的相邻数据的向量处理时,处理器可以通过 存储库地址addr 0、addr 1、以及addr 2访问存储器,以便同步或同时加载或存储必需的数 据(〇,8)到(7,8)。
[0050] 图9是用于示出根据实施例的存储器管理方法的处理框图。参考图9,根据本实施 例的存储器管理装置900包括地址偏移生成器910、包括第0到第7存储库的存储器920、用于 重新排列从存储器920加载的数据的重新排列单元930、以及高速缓冲存储器940。
[0051] 如图6到图8中所示,存储库地址根据将从其加载数据的列的位置而变化。如图7和 图8中所示,数据(0,0)被分配给存储库0B0,而数据(0,8)被分配给存储库1B1。由于在将被 访问的第一数据的位置处的存储库的数量是8,所以总共八(8)个情况是可能的。存储库和 地址针对每个情况而变化。
[0052]地址偏移生成器910根据跨越值和第一数据的存储库生成偏移值,以便生成每个 存储库地址。通过将偏移值添加到作为开始存储库的存储库地址的基础地址来计算用于每 个存储库的地址。
[0053]返回参考图7,由于被分配了第一数据的存储库是存储库0B0,而存储库0B0的存储 库地址是0,所以基础地址是0。而且,存储库1B1的偏移值是1,存储库2B2的偏移值是2,存储 库3B3的偏移值是3,并且每个存储库的地址都是基础地址和其偏移值的总和。通过相应的 跨越值和作为第一存储库的开始存储库来确定的每个存储库的地址偏移值被示出在表2 中。
[0054][表2]
[0056]在表2中,A[5:3]的值代表第一数据的存储库,列TO是存储库0的地址偏移值,而列 T1是存储库1的地址偏移值。
[0057]重新排列单元930重新排列从存储器920加载数据(即,数据0到7)的次序,并且以 RdO到Rd7的次序将该数据输出到处理器。返回参考图7,与在垂直方向上的相邻数据当中、 在第一列610的最低处的数据(7,0)到在第一列610的最高处的数据(0,0)相对应的存储库 在图8中被排序为{85,82,87,84 31,86,83,80}。而且,如在图8中进一步示出的,与在图7的 第九列620的最低处的数据(7,8)到在第九列620的最高处的数据(0,8)相对应的存储库被 排序为{B6,B3,BO,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)}的次序输出该输出数据。
[0058] 当接收到访问存储在不同的存储库中的在垂直方向上的相邻数据的跨越访问请 求、并且在垂直方向上的相邻数据是根据每个存储库的存储库地址从每个存储库加载的 时,高速缓冲存储器940输出加载的数据并存储被存储在对应于存储库地址的存储库中的 数据。
[0059] -般,大量图像算法通过使用相邻的连续数据执行迭代运算。如图6中所示,当16 X 8 2D数据600的列0 610中的数据被处理时,接下来很可能处理列1的数据(0,1)到(7,1)。 因此,存储器访问的数量可以通过使用寄存器类型的高速缓冲存储器以使用向量处理中的 特性来减少。
[0060] 参考图1和图3,当执行向量处理时,描述了用于通过使用高速缓冲存储器来减少 存储器访问的数量的方法。
[0061] 如图3中所示,通过使用移位及旋转方法,2D数据100的列0到列7的数据被存储在 具有数据宽度4的存储库中。第0行中的数据(0,0)到(0,3)被分配给存储库0,而第1行中的 数据(〇,4)到(0,7)被分配给存储库1。作为下一行的第二行中的数据(1,0)到(1,3)被分配 给存储库1,而第二行中的数据(1,4)到(1,7)被分配给存储库2。当在垂直方向上相邻的数 据(〇,〇)到(7,0)以上述方式被分配给不同的存储库时,数据可以被同步或同时地从存储库 地址0到7加载。
[0062]当处理器访问列0 110以执行向量处理时,例如,通过存储库地址0到7经由存储器 对垂直方向上的相邻数据执行操作,即,列0,列0 110的数据(0,0)到(0,3 )、列1 120的数据 (1,〇)到(1,3)、……以及列7的数据(7,0)到(7,3),以便对其执行操作。
[0063]处理器对从存储库地址0到7加载的列0 110的数据(0,0)到(7,0)执行向量处理。 在加载的存储库〇的数据(〇,〇)到(〇,3)当中,用于向量处理的数据是(0,0),而其它数据(0, 1)到(〇,3)很可能被用于向量处理的下一次迭代。同样地,在存储库1的数据(1,0)到(1,3) 当中,用于向量处理的数据是(1,〇),而其它数据(1,1)到(1,3)很可能被用于下一向量处 理。如上所述,由于相邻的连续数据很可能在图像处理算法中被处理,所以接下来很可能被 处理的其它数据被存储在高速缓冲存储器940中。对于下一向量处理,存储器不被访问,而 存储在高速缓冲存储器940中的数据被使用。
[0064] 返回参考图6、图7和图9,为了加载在图6中的列0 610的数据(0,0)到(7,0),图7中 阴影的存储库Β0到Β7被分配地址。存储库0Β0通过存储库地址Oaddr 0访问,存储库1Β1通过 存储库地址laddr 1访问,存储库2B2通过存储库地址2addr 2访问,存储库3B3通过存储库 地址Oaddr 0访问,存储库4B4通过存储库地址laddr 1访问,存储库5B5通过存储库地址 2addr2访问,存储库6B6通过存储库地址Oaddr 0访问,而存储库7B7通过存储库地址laddr 1访问。在这种情况下,从存储器输出用于每个存储库的八(8)条数据。列0 610的数据(0,0) 到 (7,0)被输出,并且列0到列7的数据(0,0)到(7,7)被存储在高速缓冲存储器940中。在示 例中,当接收到下一列的相邻数据的地址时,不从存储器920的存储库B0到B7加载数据,而 输出存储在高速缓冲存储器940中的数据。
[0065] 因此,当具有较大数据宽度的存储库被用于向量处理时,根据本实施例的高速缓 冲存储器的使用可以减少存储器访问的数量,并且由于减少了存储库冲突的数量,可以因 此减少电力消耗并改进处理器的性能。而且,由于可以使用具有较大数据宽度的存储器并 且可以减少存储库的数量,所以可以改进面积效率。在本实施例中的高速缓冲存储器可以 是寄存器类型的,并且可以存在于处理器和处理器芯片的内部存储器之间,但是本实施例 不限于此。
[0066] 图10是用于示出根据另一个实施例的包括高速缓冲存储器的存储器管理方法的 处理框图。参考图10,包括存储库0到7的存储器1000,用于存储8X8数据的寄存器类型的高 速缓冲存储器1010,用于存储高速缓冲存储器的有效性的有效性值存储单元1020,以及地 址标记存储单元1030。
[0067] 如图6和图7中所示,为了加载列0 610的数据,根据每个存储库的各自的存储库地 址,访问所有阴影的存储库。在存储库地址0访问存储库0,在存储库地址1访问存储库 1,……以及在存储库地址7访问存储库7。当对于每个存储库输出八(8)条数据时,列0的数 据被输出,并且同时与列〇到列7相对应的数据被存储在高速缓冲存储器1010中。高速缓冲 存储器1010存储存储库0到存储库7的数据。
[0068] 在这种情况下,由于有效数据被存储在高速缓冲存储器1010中,所以存储在高速 缓冲存储器1010中的有效数据的有效性值被存储在有效性值存储单元1020中,并且与存储 在高速缓冲存储器1010中的有效数据相对应的存储库地址被存储在地址标记存储单元 1030中作为地址标记。
[0069] 接下来,当跨越访问被请求时,在请求时的存储库地址被与存储在地址标记存储 单元1030中的地址标记进行比较。当高速缓冲存储器的有效性被设定在有效性存储单元 1020中并且包括在下一个跨越访问请求中的存储库地址与存储的地址标记相同时,从高速 缓冲存储器1010输出数据而无需访问存储器1000。
[0070] 在本实施例中,当有效数据被存储在高速缓冲存储器1010中时,由于存储器1000 不被访问,所以处理器的其它加载/存储单元可以访问存储器1〇〇〇,并且因此可以减少存储 库冲突的数量并且可以改进系统性能。而且,虽然图10示出了高速缓冲存储器1010的尺寸 能够存储8x8 2D数据,但是本实施例不限于此,并且高速缓冲存储器1010可以被具体实现 为根据存储库的数量和每个存储库的数据宽度而具有各种各样的尺寸。而且,虽然高速缓 冲存储器1010可以具体实现为存在于处理器和内部存储器之间的寄存器,但是本实施例不 限于此。
[0071] 图11是用于解释根据实施例的存储器管理方法的流程图。参考图11,在操作1100, 2D数据的尺寸被参考。2D数据的尺寸包括列的数量。在操作1102,用于跨越访问的跨越值被 确定。根据来自处理器的跨越访问请求,适合于分配包括在2D数据当中的相邻数据的跨越 值被根据2D数据的尺寸来确定。当存储库根据等式1和等式2具有能够存储八(8)条数据的 数据宽度时,如果2D数据的列的数量是8,则跨越值被确定为8。如果2D数据的列的数量是 16,则跨越值被确定为24,因为满足等式1或等式2的跨越值大于或等于16这一条件的最小 的正奇数(即列的数量)是3。如表1中所示,根据基于2D数据的列尺寸的最小值和最大值的 相应的列尺寸来确定跨越值。
[0072] 在操作1104,相邻数据根据跨越值被分配给不同的存储库。当在操作1102中确定 的跨越值是例如8时,要求跨越访问的其中在垂直方向上存储相邻数据的地址的差是8,并 且因此相邻数据被分配给不同的存储库。因此,处理器可以根据每个存储库地址同步或同 时读取存储在存储库中的数据。
[0073]图12是根据另一个实施例的用于解释存储器管理方法的流程图。参考图12,在操 作1200,接收到跨越访问请求。跨越访问请求可以是由处理器做出的对于访问垂直方向上 的相邻数据和对垂直方向上相邻数据执行向量处理的请求。
[0074]在操作1202,确定跨越访问是用于加载还是用于存储。也就是说,确定跨越访问是 用于加载存储在存储器中的数据还是用于存储由处理器处理的数据。当跨越访问是用于存 储时,在操作1210,清除高速缓冲存储器的有效性。当跨越访问是用于存储时,清除高速缓 冲存储器的有效性。当跨越访问是用于加载时,在操作1204,检查高速缓冲存储器的有效 性。当高速缓冲存储器有效时,将地址进行相互比较。当它是对于由处理器加载存储在存储 器中的数据的跨越访问请求时,参考高速缓冲存储器的有效性来确定是否存在存储在高速 缓冲存储器中的数据。当有效数据被存储在高速缓冲存储器中时,在操作1206,存储在高速 缓冲存储器中的数据的地址标记被与根据当前跨越访问请求的地址进行比较。
[0075]当地址标记和接收到的地址相同时,在操作1208,高速缓冲存储器输出被选择。因 此,存储在高速缓冲存储器中的数据被输出而无需访问存储器。在本实施例中,为了向量处 理,在垂直方向上的相邻数据被处理之后,很可能与所处理的数据相邻的数据被处理。对于 针对相邻数据的地址请求,存储器不被访问,而存储在高速缓冲存储器中的数据被输出到 处理器。
[0076] 当地址标记和接收到的地址不相同时,执行操作1212。而且,当在操作1204中高速 缓冲存储器被确定为无效(invalid)时,执行操作1212。在操作1212,存储器数据被存储在 高速缓冲存储器中。在操作1214,有效性和地址被设定。当从处理器接收的跨越访问请求不 是对于相邻数据的请求时,从存储器加载数据,加载的数据被存储在高速缓冲存储器中,高 速缓冲存储器的有效性被设定,并且相应的地址作为地址标记被存储。在操作1216,存储器 输出被选择。因此,从存储器加载的数据被输出到处理器。
[0077] 虽然示出了操作1212到1216的过程被顺序地执行,但是所述过程可以被同时执 行,或者以这样的次序执行:操作1216被首先执行,接着是操作1212和1214的高速缓冲存储 器更新过程。
[0078] 在本实施例中,根据2D数据的尺寸,例如,2d数据的列的尺寸,确定用于跨越访问 的跨越值。由于数据被分配给不同的存储库,所以垂直方向上的相邻数据全都存在于不同 的存储库中,并且因此,在维持同时读取数据的基础功能的同时,可以更加高效地使用存储 器。而且,由于存储库是通过使用具有较大数据宽度的存储器来配置的,所以可以减少存储 库的数量并且可以改进面积效率。
[0079] 而且,由于通过利用跨越访问(例如,用于读取垂直方向上的相邻数据的图像处理 算法)来使用寄存器类型的高速缓冲存储器,所以可以减少存储器访问的数量并且因此可 以减少电力消耗。而且,由于允许通过处理器的其它加载/存储单元的存储器访问,所以减 少了存储库冲突并且因此可以改进总体系统性能。
[0080] 而且,虽然本实施例描述了用于加载或存储数据的存储器管理方法和装置,但是 本实施例不限于音频数据或视频数据,并且可以应用到各种数据加载/存储存储器管理。
[0081] 如上所述,根据上述实施例的存储器管理方法可以使用具有较大数据宽度的存储 器,从而垂直方向上的数据可以被高效地访问并且因此可以减少电力消耗的低效率。
[0082]这里描述的装置可以包括处理器、用于存储将由处理器运行的程序数据的存储 器、诸如盘驱动的永久存储器、用于处理与外部设备的通信的通信端口、以及包括显示器、 按键等的用户接口设备。当涉及软件模块时,这些软件模块可以被存储为非瞬时计算机可 读介质上的程序指令或处理器可运行的计算机可读代码,所述非瞬时计算机可读介质诸如 只读存储器(R0M)、随机存取存储器(RAM)、CD-R0M、磁带、软盘、以及光数据存储设备。计算 机可读记录介质还可以分布在网络耦合的计算机系统上,从而计算机可读代码以分布式方 式存储和运行。这个介质能够由计算机读取,存储在存储器中,并且由处理器运行。
[0083]这里引用的所有参考,包括出版物、专利申请、以及专利,通过相同的程度的参考 被合并于此,就好像每个参考被个别地和特别地指示为通过引用而合并和在这里整体阐述 一样。
[0084]为了促进对本发明的原理的理解的目的,已经参考了附图中示出的实施例,并且 特定的语言已经被用来描述了这些实施例。然而,这种特定的语言并不意图限制本发明的 范围,并且本发明应当被解释为包含本领域普通技术人员通常能够想到的所有的实施例,。
[0085] 本发明可以按照功能块组件和各种处理步骤来描述。这样的功能块可以由被配置 为执行指定功能的任意数量的硬件组件和/或软件组件来实现。例如,本发明可以采用各种 集成的电路组件,例如,存储器元件、处理元件、逻辑元件、查找表等,它们可以在一个或多 个微处理器或其它控制设备的控制下执行各种功能。类似地,在本发明的元件是使用软件 编程或软件元素来实施的情况下,本发明可以利用以数据结构、对象、进程、例程或其他编 程元素的任何组合来实施的各种算法、利用任何编程或脚本语言(诸如(:、0++、拓似、汇编程 序等)来实施。功能方面可以以在一个或多个处理器上运行的算法来实施。而且,本发明可 以采用用于电子配置、信号处理和/或处理、数据处理等的任意数量的传统技术。词语"机 制"和"元件"被宽泛地使用而不限于机械的或物理的实施例,而是可以包括结合处理器等 的软件例程。
[0086] 这里示出和描述的特定实施方式是本发明的说明性的示例,而不意图以任何方式 另外限制本发明的范围。为了简洁,传统电子学、控制系统、软件开发以及系统的其它功能 方面(以及系统的单个操作组件的组件)可以不被详细地描述。而且,在所呈现的各个附图 中示出的连接线或连接器意图代表各种元件之间的示范性的功能关系和/或物理或逻辑耦 合。应当注意,许多的替换的或另外的功能关系、物理连接或逻辑连接可以存在于实际设备 中。此外,没有项目或组件是本发明的实践所必不可少的,除非该元素被特定地描述为"必 要的"或"关键的"。将认识到,如这里所用的术语"包括"、"包含"以及"具有"被特定地意图 解读为开放式技术术语。
[0087] 在描述本发明的上下文中的(特别是在所附权利要求的上下文中的)术语"一"和 "该"以及类似指示物的使用将被解释为涵盖单数和复数两者。而且,这里的数值范围的叙 述仅仅意图充当个别地引用落在该范围内的每个单独的值的便捷方法,除非这里另外指 示,并且每个单独的值被合并在说明书中,就好像其在这里被个别地叙述一样。最后,这里 描述的所有方法的步骤能够以任何适当的次序来执行,除非这里另外指示,或者与上下文 明显矛盾。对任何以及全部示例、或者这里提供的示范性语言(例如,"诸如")的使用仅仅意 图更好地示出本发明,而不是对本发明的范围加以限制,除非另外声明。多种修改和调整将 被本领域普通技术人员容易地理解,而不脱离本发明的精神和范围。
【主权项】
1. 一种存储器管理方法,包括: 通过参考二维(2D)数据的尺寸确定用于跨越访问的跨越值;以及 根据所确定的跨越值,向彼此不同的多个存储库分配所述2D数据的垂直方向上的相邻 数据。2. 如权利要求1所述的存储器管理方法,其中,所述跨越值是所述存储库的数据宽度的 奇数倍,所述2D数据的尺寸对应于所述2D数据的列的数量。3. 如权利要求2所述的存储器管理方法,其中,所述跨越值被确定为满足以下等式: 跨越=aX 2η 2所述2D数据的列的数量, 其中,"a"是正奇数,"2η"是存储库宽度,而"η"是自然数。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所述的存储器管理装置,其中,所述跨越值被确定为满足以下等式: 跨越=aX 2η 2所述2D数据的列的数量, 其中,"a"是正奇数,"2η"是存储库宽度,而"η"是自然数。
【文档编号】G06F12/02GK105874437SQ201480071840
【公开日】2016年8月17日
【申请日】2014年12月30日
【发明人】权起奭, 朴哲秀, 金硕镇
【申请人】三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1