CN103765378B - 2d收集指令和2d高速缓存 - Google Patents
2d收集指令和2d高速缓存 Download PDFInfo
- Publication number
- CN103765378B CN103765378B CN201280041912.2A CN201280041912A CN103765378B CN 103765378 B CN103765378 B CN 103765378B CN 201280041912 A CN201280041912 A CN 201280041912A CN 103765378 B CN103765378 B CN 103765378B
- Authority
- CN
- China
- Prior art keywords
- dimentional
- caches
- blocks
- sub
- processor
- 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.)
- Expired - Fee Related
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
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Processing (AREA)
Abstract
处理器可以支持二维(2D)收集指令和2D高速缓存。处理器可以执行2D收集指令以访问来自存储在耦合到处理器的存储器中的二维(2D)图像的一个或多个数据子块。二维(2D)高速缓存可以将数据子块存储在多个高速缓存线中。而且,2D高速缓存可以在保留2D图像的二维结构的同时支持访问多于一个的高速缓存线。
Description
技术领域
本申请涉及计算机处理器技术,尤其涉及2D收集指令和2D高速缓存。
背景技术
随着半导体技术继续扩展,越来越多的功能被集成,特别是集成到处理器中。例如,这样的处理器可以有能力在执行传统任务之外执行图形和媒体应用。媒体处理算法的大多数使用收集(gather)的“1D或2D区域”变体。当收集加载行或线(1×m)、列(m×1)或矩阵(m×n)(例如,(2×2)、(4×4)、或(8×2))时,通用vgather将此“块加载”转换成16个偏移,并且丢失了图像(行长度)结构中的信息。
发明内容
本发明的一个方面涉及一种处理器,所述处理器包括:预取指单元,用于取指一个或多个指令,解码单元,用于将所述一个或多个指令解码,其中所述一个或多个指令包括二维2D收集指令,执行单元,用于执行所述二维2D收集指令以访问来自存储在耦合到所述处理器的存储器中的二维2D图像的一个或多个数据子块,二维2D高速缓存,用于将所述一个或多个数据子块存储在多个高速缓存线中,并在保留所述二维2D图像的二维结构的同时支持在单个处理周期中访问至少多于一个的高速缓存线,其中所述二维2D高速缓存包括多个组和多个路。
本发明的另一方面涉及一种处理器中的方法,所述方法包括:预取指一个和多个指令,将所述一个或多个指令解码,其中所述一个或多个指令包括二维2D收集指令,执行所述二维2D收集指令以访问来自存储在耦合到所述处理器的存储器中的二维2D图像的一个或多个数据子块,将所述一个或多个数据子块存储在2D高速缓存的多个高速缓存线中,其中所述二维2D高速缓存包括多个组和多个路,以及在保留所述二维2D图像的二维结构的同时支持在单个处理周期中访问至少多于一个的高速缓存线。
本发明的再一方面涉及一种用于二维2D收集指令和二维2D高速缓存的系统,所述系统包括:存储器;机器可读存储介质,逻辑,多个输入-输出设备,以及包括多个核和多个高速缓存的处理器,其中所述处理器用于,取指一个或多个指令、解码所述一个或多个指令,其中所述一个或多个指令包括二维2D收集指令、执行所述二维2D收集指令以访问来自存储在耦合到所述处理器的存储器中的二维2D图像的一个或多个数据子块,包括在所述多个高速缓存中的二维2D高速缓存用以将所述一个或多个数据子块存储在多个高速缓存线中并在保留所述二维2D图像的二维结构的同时支持在单个处理周期中访问至少多于一个的高速缓存线,其中所述二维2D高速缓存包括多个组和多个路。
附图简述
此处所描述的本发明是作为示例的方式而不是作为限制的方式在附图中示出的。为了图示的简明和清晰起见,图中示出的元素不必按尺寸绘制。例如,为了清晰,一些元素的尺寸可以相对于其它元素放大。而且,在认为合适的地方,引用标签在图中进行重复以指示相对应的或类似的元素。
图1示出了根据一个实施例的处理器100,其支持2D高速缓存和2D收集指令。
图2示出了根据一个实施例的2D高速缓存,其可以存储存储在存储器中的图像信息。
图3示出了根据一个实施例的2D高速缓存,其可以表示为组(set)和路(way)的组合。
图4示出了根据一个实施例的图像信息(或元素x,y)到2D高速缓存中的(组,路)的映射。
图5示出了根据一个实施例的数据高速缓存180中的各种字段。
图6示出了根据一个实施例的用于对高速缓存中的每个元素确定合适数据的标签阵列逻辑。
图7示出了根据一个实施例的按次序安排数据的数据阵列逻辑,该次序相对应于收集指令中的地址。
图8是根据一个实施例的计算机系统,其可以支持2D收集指令和2D高速缓存。
具体实施方式
以下描述描述了2D高速缓存和2D收集指令的实施例。在以下描述中,阐述了诸如逻辑实现、资源分区、或共享、或重复的实现、系统组件的类型和相互关系、和逻辑分区或集成选择之类的众多具体细节以便提供对本发明更全面的理解。然而本领域技术人员应理解的是,没有这些具体细节也可以实践本发明。在其它实例中,没有详细地示出控制结构、门级电路和完整软件指令序列以便不妨碍本发明。使用所包括的描述,本领域的普通技术人员将能够实现合适的功能而无需过度的实验。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表示所描述的实施例可以包括特定特征、结构或特性,但是,每一个实施例可以不必包括该特定特征、结构或特征。此外,这些短语不必指同一实施例。而且,当结合实施例来描述特定特征、结构或特性时,不管是否被明确描述,结合其他实施例来实现该特征、结构或特性被认为是在本领域技术人员的知识范围内。
本发明的各实施例可以用硬件、固件、软件或其组合来实现。本发明的各实施例也可以实现为存储在机器可读介质上的指令,该指令可以由一个或多个处理器读取和执行。机器可读介质可以包括用于以可由机器(例如计算机设备)读的形式存储或传输信息的任何机制。
例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存存储器设备;电子、光学、声学或其它类似信号。而且,此处可以将固件、软件、例程和指令描述为执行某些动作。然而应理解,这样的描述只是为了方便,且这样的动作事实上是从计算设备、处理器、控制器和执行固件、软件、例程和指令的其它设备产生的。
在一个实施例中,指令集可以包括专用收集(gather)指令,其可以称为2D收集指令。在一个实施例中,2D收集指令可以保留二维图像结构或与2D图像结构相关的图像信息。在一个实施例中,2D高速缓存可以使用专用高速缓存填充策略的图像信息,该策略可以导致与通用收集指令相比更高的收集性能和低等待时间。通用收集可以从存储器地址加载(或块加载)多达2或4个双精度浮点值,且通用vgather将“块加载”转换成16个偏移并丢失了关于图像结构(即行长度)的信息。
为了克服上述的丢失图像结构的缺点,在一个实施例中,公开了可以保留图像和区域参数的2D指令。在一个实施例中,2D收集指令可以执行双跨步收集,其可以从2D图像加载诸如(1×16、2×8、4×4、8×2、或16×1)的2D区域。
在一个实施例中,2D高速缓存是基于2D局部性的概念的。在一个实施例中,如果程序从存储在存储器中的图像“A”加载像素(x,y),那么可以有很高的可能性像素(x,y)周围的像素可以很快被使用。另外,可以有很高的可能性像素(x,y)周围的像素可以被多次使用。在一个实施例中,为了利用2D局部性,可以在高速缓存中维护存储器中的大图像的多个小矩形窗口“W”。
在一个实施例中,可以使用2D高速缓存填充策略来用存储在存储器中的图像信息填充高速缓存。在一个实施例中,可以将2D窗口“W”(即图像信息)映射到2D高速缓存,从而避免2D区域加载(例如,(1×16)、(2×8)、(4×4)、(8×2)、或(16×1))的可能的读冲突。在一个实施例中,可以基于以下方程式(1)和(2)将图像元素(x,y)分别映射到高速缓存的组(set)和路(way):
组=x mod组的数量(X mod Num_of_Sets)——方程式(1)
路=y mod路的数量(Y mod Num_of_Ways)——方程式(2)
其中mod表示取模操作符,其确定一个数被另一个数除的余数。
在一个实施例中,2D高速缓存查找可以包括两个任务:1)标识高速缓存中包括正确数据的位置;和2)按次序安排数据,该次序可以相对应于2D收集指令中的地址的次序。在一个实施例中,高速缓存中的地址(包括正确数据的)可以通过将地址生成单元所生成的地址与相关联于每个组的标签相比较来标识。在一个实施例中,所标识的位置中的数据可以按次序安排以相对应于2D收集指令中的地址的次序。
在图1中示出了可以支持2D高速缓存和2D收集指令的处理器100的实施例。在一个实施例中,处理器100可以包括诸如核102-1到102-N的多个核、L2高速缓存190和存储器控制中心(MCH)103。在一个实施例中,核102-A可以包括预取指单元110、指令高速缓存120、指令转换后备缓冲区(ITLB)122、分支预测单元130、解码单元140、保留站150、地址生成单元160、执行单元170、加载和存储单元(LSU)175、数据高速缓存180、数据转换后备缓冲区(DTLB)182、重排序缓冲区185、顶点处理块191和纹理处理块193。其它核102-2到102-N可以包括与核102-1的类似的块。
在一个实施例中,预取指单元110可以从存储器101取指,同时较早被取指的其它指令正被执行。这样取指的指令可以存储在指令高速缓存120中。可以使用指令转换后备缓冲区(ITLB)122将虚拟地址转换到物理地址。然后将指令提供给解码单元140,其可以将宏指令解码成多个微操作。然后可以将微操作发送到保留站150,其可以将微操作(uops)分派到执行单元170、顶点处理块191或纹理处理块193中的一个或多个。在一个实施例中,可以基于指令的类型将指令分派到单元170、191或193中的一个。例如,如果处理相关于图形数据,则可以由顶点处理块191和纹理处理块193来执行指令,并且如果是非图形数据时由执行单元170来执行指令。在一个实施例中,可以用乱序方式执行指令,并且重排序缓冲区185可以用保留原始程序次序的次序来存储这样的执行的结果。
在一个实施例中,可以用来从2D图像加载2D区域到数据高速缓存180的2D收集指令可以如下面的方程(3)给出的。示例2D收集指令可以如下面给出的:
Zmml=2-D_gather_16(pImage,rowWidth,blockX,blockY,blockW,blockH,strideX,strideY);
其中
pImage——是到图像的指针;
rowwidth——行中的元素数量;
blockX——块的左上角的X坐标;
blockY——块的左上角的Y坐标;
blockW——块的行中的元素数量;
strideX——水平跨步(可选,默认=1);以及
strideY——垂直跨步(可选,默认=1)。
结构上,2D收集指令可以与通用vgather指令有一些相似性,该通用vgather指令可以如下面的方程(4)中给出的:
Zmml=vgather(pBase,offset0,offset 15)...................方程(4)
其中
pBase=[pImage+(rowWidth*(blockY-1)+blockX)+sizeofElem];
i=0;
for(y=0;y<blockH;y++)
for(x=0;x<blockY;x++){
offset[i]=(x+y*rowWidth)*sizeofElem;
i++;}
而且,下面参考图2-7详细地描述了2D高速缓存结构、2D高速缓存填充策略和2D高速缓存查找。
图2示出了根据一个实施例的包括存储在存储器中的图像的图像信息的一个或多个小窗口的高速缓存。在一个实施例中,存储在存储器101中的图像201可以划分成诸如窗口204和208的多个窗口。在一个实施例中,窗口204和208可以在高速缓存180中分别存储为窗口254和258。在一个实施例中,如果程序或指令从图像201加载了像素(x,y),则看上去有很高的可能性像素(x,y)周围的邻近像素可以在像素(x,y)被处理之后迅速地被使用。另外,看上去有很高的可能性邻近像素可以在像素(x,y)的处理之后被使用许多次。在一个实施例中,邻近像素在像素(x,y)的处理之后被迅速地使用且然后在那之后迅速地多次使用该邻近像素的高可能性可以称为“2D局部性”。
图3示出了2D高速缓存,其根据一个实施例可以表示为组和路的组合。在一个实施例中,2D高速缓存180可以包括访问逻辑370、控制逻辑380、和以列(组)和行(路)的形式安排的多个存储器块。在一个实施例中,访问逻辑370可以支持下面描述的高速缓存填充和2D高速缓存查找任务。在一个实施例中,控制逻辑380可以初始化访问逻辑370以执行高速缓存填充和2D高速缓存查找,同时2D收集指令可以由执行单元170执行。
在一个实施例中,2D高速缓存180可以看作多个存储器块的组合,所述存储器块的每一个可以由组和路的标识符的组合唯一地标识。在一个实施例中,2D高速缓存180可以包括N个组(组0到组N)和M个路(路0到路M)。在一个实施例中,2D高速缓存内的每个存储器块由路和组的标识符唯一地标识。
在一个实施例中,2D高速缓存可以看作可以在存储在存储器101中的图像中的窗口(即一组像素)上滑动的滑动窗口。在一个实施例中,2D高速缓存180可以存储诸如204和208的一个或多个窗口的图像信息。在一个实施例中,在第一时间点期间2D高速缓存180可以将由窗口204和208覆盖的像素存储在组和路中。在其他实施例中,2D高速缓存180可以存储由窗口204覆盖的像素并且然后滑动以覆盖窗口208的像素。
类似地,2D高速缓存180可以存储由第一组窗口覆盖的像素并且然后滑动以存储由第二组窗口覆盖的像素。在一个实施例中,可以将主存储器101中的窗口204中的像素映射到2D高速缓存180中的存储器块中,并且每个存储器块可以由组号和路号的唯一组合来标识。例如,存储器块300可以由组号(N=0)和路号(M=0)的组合唯一地标识。类似地,存储器块312可以由组号(N=1)和路号(M=2)的组合唯一地标识。
在一个实施例中,2D高速缓存180可以采用2D高速缓存填充策略来填充2D高速缓存180内的存储器块。在一个实施例中,2D高速缓存包括N个组和M个路,并且是二维的。在一个实施例中,可以将诸如存储器180中的204和/或208的2D窗口“W”映射到2D高速缓存180上,从而避免2D区域加载(例如,(1×16)、(2×8)、(4×4)、(8×2)或(16×1))的可能的读冲突。在一个实施例中,可以基于上面的方程(1)和(2)将图像元素(x,y)分别映射到高速缓存的组和路上。例如,映射或高速缓存填充可以实现为组=地址[6...11]和路=行mod路的数量(Row mod Num_of_Ways)。
对于有32个路的2D高速缓存,上面的填充高速缓存的示例可以导致图4中描绘的高速缓存填充。在一个实施例中,可以将窗口204映射(或高速缓存填充)到2D高速缓存180。例如,可以将图像204中的坐标[(0,0)-(15,0)]之内的像素映射到2D高速缓存180中的存储器块401-00,并且可以将图像204的坐标[(48,1)-(63,1)]之内的像素映射到2D高速缓存180中的存储器块401-31。类似地,可以分别将图像204的坐标[(32,2)-(47,2)]、[(48,3)-(63,3)]、[(0,5)-(15,5)]和[(16,5)-(31,5)]之内的像素映射到存储器块401-22、401-33、401-05和401-15。在一个实施例中,可以直接地将2D图像加载到2D高速缓存180上。由于可以将2D图像直接地从存储器101映射(或加载)到2D高速缓存180中,因此可以避免对可能要求显式的预加载的中间2D注册文件(RF)或2D高速暂存(scratch pad)的需求。
在一个实施例中,使用2D收集指令的二维(2D)图像的映射允许最多2次迭代。例如,2D收集指令可以从线(1×16)、列(16×1)、矩阵(8×2)、(4×4)和(2×8)收集数据,并且所涉及的最大迭代可以分别等于2、1、2、2和2个处理周期。
图5示出了根据一个实施例的2D高速缓存的各种字段。在一个实施例中,诸如401-00到401-NM的每个存储器块可以包括诸如标签(510-1到510-M)、索引(520-1到520-M)和数据(540-1到540-M)的各种字段。在一个实施例中,可以使用标签510-1到510-M在比较了由地址生成单元160提供的地址和标签510-1到510-M之后对2D高速缓存180中的每个元素确定合适的数据。
图6示出了装置(arrangement)601,其可以根据一个实施例确定可以用于填充图像信息的一个或多个存储器块。在一个实施例中,装置601可以包括地址生成单元160、包括存储器块620-1到620-P的组和路、和标签阵列逻辑600。在一个实施例中,标签阵列逻辑600可以包括在图3的访问逻辑370中,并且标签阵列逻辑600可以与地址生成单元160一起操作以确定可以用于填充图像信息的一个或多个存储器块。在一个实施例中,标签阵列600可以包括多个同或(X-NOR)门630-1到630-P,并且可以提供同或门630-1到630-P的输出作为对P-输入的与(AND)门640的输入。
在一个实施例中,地址生成单元160可以生成地址A1,并且可以将地址A1的位(a1,a2,a3,...,ak)的其中至少一些提供为对逻辑同或门630-1到630-P的第一输入。在一个实施例中,可以将标签中的位提供为对同或逻辑门630-1到630-P的第二输入。在一个实施例中,如果存在标签中的位和地址中的位的位置方向的(position-wise)匹配(即,如果提供给同或(ex-Nor)的位的值是相同的),则由同或门630-1到630-P的每一个所生成的输出都可以是逻辑1。在一个实施例中,如果所有同或门630-1到630-P的输出都等于1,则由与门640生成的输出也可以等于逻辑1。在一个实施例中,标签阵列600可以由此确定包括等于由地址生成单元610所生成的地址的标签的存储器块。
图7示出了装置700,其可以根据一个实施例用来将存储在存储器块中的数据安排成按照一次序来布置,该次序相对应于通过执行2D收集指令而访问地址的次序。在一个实施例中,装置700可以包括地址生成单元160、包括存储器块620-1到620-P的组和路、和包括读/写逻辑720和混洗单元750的访问逻辑370。在一个实施例中,可以基于可以称为“采用每路标签比较的直接映射(direct map with tag comparison per way)”的技术来执行2D高速缓存查找。在一个实施例中,这样的技术可以包括:标识可以由2D高速缓存180的组和路唯一标识的存储器块、寻取(retrieve)标签字段的内容、和确定存储在由组和路的唯一组合标识的存储器块中的数据是否被驱逐(evicted)或取代了。在一个实施例中,诸如300或312或401-00、401-05、401-15、401-22、401-31或401-33的存储器块可以如上参考图6所描述地进行标识。
在标识了诸如401-00、401-05、401-15、401-22、401-31或401-33的存储器块之后,可以将存储器块中的内容或图像信息提供给读/写逻辑720和混洗单元750。在一个实施例中,读/写逻辑720可以访问存储器块401-00、401-05、401-15、401-22、401-31或401-33的标签部分并确定标签是否仍然相关(即,没有被驱逐或取代)。在一个实施例中,混洗单元750可以用2D收集指令所提供的地址的次序来重布置未驱逐的存储器块中的数据。
在一个实施例中,访问逻辑370可以访问多于一个的高速缓存线,这可以包括未驱逐的数据。在一个实施例中,2D高速缓存180可以支持每单个处理周期访问多达16个单独的高速缓存线,这不同于可以允许每个处理周期访问一个高速缓存线的现有技术的高速缓存。在一个实施例中,存储在这些高速缓存线之内的相关的存储器块中的数据可以由访问逻辑370提取并由混洗单元750布置以生成2D收集数据。结果是,2D高速缓存180可以每个端口访问多于一个的路,例如,如果多个元素可以存储在同一物理存储体(bank)但在不同的组中的时候。在一个实施例中,以上所描述的高速缓存填充技术和2D收集技术可以最小化2D区域加载期间的排冲突。
2D收集指令和2D高速缓存的操作是参考例如2D数据高速缓存180来描述的。然而,以上所描述的技术也可以在诸如L2高速缓存190或任何其它高速缓存或任何其它存储器的其它高速缓存中执行。
图8是根据一个实施例的计算机系统,其可以支持2D收集指令和2D高速缓存。在一个实施例中,计算机系统800可以包括处理器802(其可以包括单指令多数据(SIMD)、精简指令集(RISC))、和其它类似的通用中央处理单元803和图形处理单元(GPU)805和高速缓存806。在一个实施例中,处理器802可以存储指令序列,以提供和处理数据位来执行机器可读存储介质825中的多位错误校正。然而,指令序列也可以存储在存储器820或任何其它适合的存储介质中。处理器802被示为包括CPU 802和GPU 805,然而其它实施例也是可能的。一个这样的实施例可以包括包括多个核的处理器802,其中每个核都可以有能力执行CPU和GPU二者的功能。在其它实施例中,CPU 802和GPU 805可以制成在单个管芯上。在又一个实施例中,CPU 802和GPU 805可以制成在不同的管芯上。这样的其它实施例也可以支持2D收集指令和2D高速缓存。
操作计算机系统800的处理器802可以是耦合到逻辑830的一个或多个处理器核。在一个实施例中,处理器810可以包括中央处理单元803和存储器子系统MSS 804。在一个实施例中,CPU 802或GPU 803可以执行以上所描述的2D收集指令,并且高速缓存806可以支持以上所描述的2D高速缓存结构、2D高速缓存填充、和2D收集技术。
例如,在一个实施例中,逻辑830可以是芯片组逻辑。逻辑830耦合到存储器820,其可以是任何种类的存储,包括光学、磁或半导体存储。I/O设备860可以允许计算机系统800与诸如网络设备的设备或计算机系统800的用户接口。
已经参考示例实施例描述了本发明的某些特征。然而,此描述不旨在以限制性的意义来解释。对于本发明目标所涉及的领域的技术人员显而易见的示例实施例的各种修改和本发明的其它实施例被认为落入本发明的精神和范围内。
Claims (23)
1.一种处理器,所述处理器包括:
预取指单元,用于取指一个或多个指令,
解码单元,用于将所述一个或多个指令解码,其中所述一个或多个指令包括二维2D收集指令,
执行单元,用于执行所述二维2D收集指令以访问来自存储在耦合到所述处理器的存储器中的二维2D图像的一个或多个数据子块,
二维2D高速缓存,用于将所述一个或多个数据子块存储在多个高速缓存线中,在保留所述二维2D图像的二维结构的同时支持在单个处理周期中访问至少多于一个的高速缓存线,以及支持对所述一个或多个子块的映射以避免加载所述一个或多个子块之后的读冲突,其中所述二维2D高速缓存包括:
多个组和多个路,以及
访问逻辑,用于将所述一个或多个子块映射到多个组和多个路,以及执行二维2D高速缓存查找,其中所述高速缓存查找包括所述访问逻辑以,
使用所述二维2D高速缓存的所述组和所述路来标识所述二维2D高速缓存内的存储器块,
寻取所述存储器块内的标签字段的内容,以及
确定存储在所述存储器块中的数据是否被驱逐了。
2.如权利要求1所述的处理器,其特征在于,所述执行单元响应于执行所述二维2D收集指令而引起将所述一个或多个子块加载到所述二维2D高速缓存中。
3.如权利要求2所述的处理器,其特征在于,所述二维2D收集指令规定到所述二维2D图像的指针、标识所述一个或多个子块的多个坐标、和所述一个或多个子块中的多个元素。
4.如权利要求1所述的处理器,其特征在于,所述二维2D收集指令将引起在一个处理周期中访问十六个高速缓存线。
5.如权利要求1所述的处理器,其特征在于,所述访问逻辑确定所述多个组中的一个组,所述一个或多个子块的图像像素的第一坐标映射到该组上,其中所述访问逻辑使用在所述二维2D图像的所述第一坐标和所述二维2D高速缓存中可用的组的总数量上执行的取模操作的结果。
6.如权利要求1所述的处理器,其特征在于,所述访问逻辑确定所述多个路中的一个路,所述一个或多个子块内的所述图像像素的第二坐标映射到该路上,其中所述访问逻辑使用在所述二维2D图像的所述第二坐标和所述二维2D高速缓存中可用的路的总数量上执行的取模操作的结果。
7.如权利要求1所述的处理器,所述访问逻辑还包括读/写逻辑,其中所述读/写逻辑访问来自所述存储器块的所述标签字段并确定所述标签字段的内容是否是未驱逐的。
8.如权利要求1所述的处理器,所述访问逻辑还包括以所述二维2D收集指令所提供的地址的次序重布置所述存储器块中的所述数据的混洗逻辑,其中与未驱逐的标签字段相关联的存储器块被选中。
9.一种处理器中的方法,所述方法包括:
预取指一个和多个指令,
将所述一个或多个指令解码,其中所述一个或多个指令包括二维2D收集指令,
执行所述二维2D收集指令以访问来自存储在耦合到所述处理器的存储器中的二维2D图像的一个或多个数据子块,
将所述一个或多个数据子块存储在二维2D高速缓存的多个高速缓存线中,其中所述二维2D高速缓存包括多个组和多个路,
在保留所述二维2D图像的二维结构的同时支持在单个处理周期中访问至少多于一个的高速缓存线,
在所述二维2D高速缓存中映射所述一个或多个子块以避免加载所述一个或多个子块后的读冲突,其中所述映射包括将所述一个或多个子块映射到所述2D高速缓存的多个组和多个路上,
确定所述多个组中的一个组,所述一个或多个子块的图像像素的第一坐标映射到该组上,其中使用在所述二维2D图像的所述第一坐标和所述二维2D高速缓存中可用的组的总数量上执行的取模操作的结果来确定所述组。
10.如权利要求9所述的方法,包括响应于执行所述二维2D收集指令而将所述一个或多个子块加载到所述二维2D高速缓存中。
11.如权利要求10所述的方法,其特征在于,包括:
响应于所述二维2D收集指令的执行,指定到所述二维2D图像的指针,以及
使用多个坐标来标识所述一个或多个子块和所述一个或多个子块中的多个元素。
12.如权利要求9所述的方法,包括响应于执行所述二维2D收集指令在一个处理周期中访问十六个高速缓存线。
13.如权利要求9所述的方法,包括确定所述多个路中的一个路,所述一个或多个子块内的所述图像像素的第二坐标映射到该路上,其中使用在所述二维2D图像的所述第二坐标和所述二维2D高速缓存中可用的路的总数量上执行的取模操作的结果来确定所述路。
14.如权利要求9所述的方法,包括执行二维2D高速缓存查找,其中所述高速缓存查找包括,
使用所述二维2D高速缓存的所述组和所述路来标识所述二维2D高速缓存内的存储器块,
寻取所述存储器块内的标签字段的内容,以及
确定存储在所述存储器块中的数据是否被驱逐了。
15.如权利要求14所述的方法,包括访问来自所述存储器块的所述标签字段并确定所述标签字段的内容是否是未驱逐的。
16.如权利要求9所述的方法,包括以所述二维2D收集指令所提供的地址的次序重布置所述存储器块中的所述数据,其中与未驱逐的标签字段相关联的存储器块被选中。
17.一种用于二维2D收集指令和二维2D高速缓存的系统,所述系统包括:
存储器;
机器可读存储介质,
逻辑,
多个输入-输出设备,以及
包括多个核和多个高速缓存的处理器,其中所述多个高速缓存包括二维2D高速缓存,其中所述二维2D高速缓存包括多个组和多个路,并且其中所述处理器用于,
取指一个或多个指令,解码所述一个或多个指令,其中所述一个或多个指令包括二维2D收集指令,
执行所述二维2D收集指令以访问来自存储在耦合到所述处理器的存储器中的二维2D图像的一个或多个数据子块,
将所述一个或多个数据子块存储在所述二维2D高速缓存的多个高速缓存线中,以及
在保留所述二维2D图像的二维结构的同时支持在单个处理周期中访问所述二维2D高速缓存的至少多于一个的高速缓存线,
支持在所述二维2D高速缓存中将所述一个或多个子块映射到所述二维2D高速缓存的多个组和多个路上以避免加载所述一个或多个子块后的读冲突,
确定所述多个路中的一个路,所述一个或多个子块内的所述图像像素的第二坐标映射到该路上,其中使用在所述二维2D图像的所述第二坐标和所述二维2D高速缓存中可用的路的总数量上执行的取模操作的结果来确定所述路。
18.如权利要求17所述的系统,其特征在于,所述处理器响应于执行所述二维2D收集指令而将所述一个或多个子块加载到所述二维2D高速缓存中。
19.如权利要求18所述的系统,其特征在于,所述处理器用于:
响应于执行所述二维2D收集指令,指定到所述二维2D图像的指针,以及
使用多个坐标来标识所述一个或多个子块和所述一个或多个子块中的多个元素。
20.如权利要求17所述的系统,其特征在于,所述处理器确定所述多个组中的一个组,所述一个或多个子块的图像像素的第一坐标映射到该组上,其中使用在所述二维2D图像的所述第一坐标和所述二维2D高速缓存中可用的组的总数量上执行的取模操作的结果来确定所述组。
21.如权利要求17所述的系统,其特征在于,所述处理器支持执行二维2D高速缓存查找,其中所述高速缓存查找包括,使用所述二维2D高速缓存的所述组和所述路来标识所述二维2D高速缓存内的存储器块、寻取所述存储器块内的标签字段的内容、并确定存储在所述存储器块中的数据是否被驱逐了。
22.如权利要求21所述的系统,其特征在于,所述处理器支持访问来自所述存储器块的所述标签字段并确定所述标签字段的内容是否是未驱逐的。
23.如权利要求17所述的系统,其特征在于,所述处理器支持以所述二维2D收集指令所提供的地址的次序重布置所述存储器块中的所述数据,其中与未驱逐的标签字段相关联的存储器块被选中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/220,402 | 2011-08-29 | ||
US13/220,402 US9001138B2 (en) | 2011-08-29 | 2011-08-29 | 2-D gather instruction and a 2-D cache |
PCT/US2012/051748 WO2013032788A2 (en) | 2011-08-29 | 2012-08-21 | A 2-d gather instruction and a 2-d cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103765378A CN103765378A (zh) | 2014-04-30 |
CN103765378B true CN103765378B (zh) | 2017-08-29 |
Family
ID=47745361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280041912.2A Expired - Fee Related CN103765378B (zh) | 2011-08-29 | 2012-08-21 | 2d收集指令和2d高速缓存 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9001138B2 (zh) |
CN (1) | CN103765378B (zh) |
WO (1) | WO2013032788A2 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9001138B2 (en) | 2011-08-29 | 2015-04-07 | Intel Corporation | 2-D gather instruction and a 2-D cache |
US9244684B2 (en) | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
KR102213668B1 (ko) | 2013-09-06 | 2021-02-08 | 삼성전자주식회사 | 제너럴 퍼포즈 프로그래머블 컴퓨팅 디바이스에서의 멀티미디어 데이터 프로세싱 방법 및 그에 따른 데이터 프로세싱 시스템 |
US20150228106A1 (en) * | 2014-02-13 | 2015-08-13 | Vixs Systems Inc. | Low latency video texture mapping via tight integration of codec engine with 3d graphics engine |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6571320B1 (en) * | 1998-05-07 | 2003-05-27 | Infineon Technologies Ag | Cache memory for two-dimensional data fields |
CN1961295A (zh) * | 2004-07-14 | 2007-05-09 | 奥普提克斯晶硅有限公司 | 高速缓冲存储器管理系统和方法 |
CN101206908A (zh) * | 2006-12-22 | 2008-06-25 | 富士通株式会社 | 存储器设备、存储器控制器和存储器系统 |
US7649538B1 (en) * | 2006-11-03 | 2010-01-19 | Nvidia Corporation | Reconfigurable high performance texture pipeline with advanced filtering |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973469B1 (en) | 2001-02-01 | 2005-12-06 | Advanced Micro Devices, Inc. | Two-dimensional discrete cosine transform using SIMD instructions |
US20030221089A1 (en) | 2002-05-23 | 2003-11-27 | Sun Microsystems, Inc. | Microprocessor data manipulation matrix module |
US7028168B2 (en) | 2002-12-05 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | System and method for performing matrix operations |
US20070008323A1 (en) * | 2005-07-08 | 2007-01-11 | Yaxiong Zhou | Reference picture loading cache for motion prediction |
US8432409B1 (en) * | 2005-12-23 | 2013-04-30 | Globalfoundries Inc. | Strided block transfer instruction |
US20080285652A1 (en) * | 2007-05-14 | 2008-11-20 | Horizon Semiconductors Ltd. | Apparatus and methods for optimization of image and motion picture memory access |
JP2010146205A (ja) * | 2008-12-17 | 2010-07-01 | Toshiba Corp | キャッシュメモリ装置及び画像処理装置 |
US8117390B2 (en) * | 2009-04-15 | 2012-02-14 | International Business Machines Corporation | Updating partial cache lines in a data processing system |
US8984043B2 (en) | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
US9001138B2 (en) | 2011-08-29 | 2015-04-07 | Intel Corporation | 2-D gather instruction and a 2-D cache |
-
2011
- 2011-08-29 US US13/220,402 patent/US9001138B2/en not_active Expired - Fee Related
-
2012
- 2012-08-21 WO PCT/US2012/051748 patent/WO2013032788A2/en active Application Filing
- 2012-08-21 CN CN201280041912.2A patent/CN103765378B/zh not_active Expired - Fee Related
-
2015
- 2015-03-02 US US14/635,403 patent/US9727476B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6571320B1 (en) * | 1998-05-07 | 2003-05-27 | Infineon Technologies Ag | Cache memory for two-dimensional data fields |
CN1961295A (zh) * | 2004-07-14 | 2007-05-09 | 奥普提克斯晶硅有限公司 | 高速缓冲存储器管理系统和方法 |
US7649538B1 (en) * | 2006-11-03 | 2010-01-19 | Nvidia Corporation | Reconfigurable high performance texture pipeline with advanced filtering |
CN101206908A (zh) * | 2006-12-22 | 2008-06-25 | 富士通株式会社 | 存储器设备、存储器控制器和存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
US9727476B2 (en) | 2017-08-08 |
US20130054899A1 (en) | 2013-02-28 |
US9001138B2 (en) | 2015-04-07 |
WO2013032788A3 (en) | 2013-05-10 |
US20150178217A1 (en) | 2015-06-25 |
CN103765378A (zh) | 2014-04-30 |
WO2013032788A2 (en) | 2013-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11604649B2 (en) | Techniques for efficiently transferring data to a processor | |
US9921972B2 (en) | Method and apparatus for implementing a heterogeneous memory subsystem | |
JP6134962B2 (ja) | クロスページプリフェッチングの方法、装置、およびシステム | |
US7707397B2 (en) | Variable group associativity branch target address cache delivering multiple target addresses per cache line | |
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
TWI405081B (zh) | 對共享第二層對映快取記憶體對稱配置之方法與系統 | |
CN104756090B (zh) | 提供扩展的缓存替换状态信息 | |
JP5697279B2 (ja) | メモリアクセスを正確に予測するための、領域に基づく技術 | |
US20120089792A1 (en) | Efficient implementation of arrays of structures on simt and simd architectures | |
US9595075B2 (en) | Load/store operations in texture hardware | |
CN107479860A (zh) | 一种处理器芯片以及指令缓存的预取方法 | |
US9256536B2 (en) | Method and apparatus for providing shared caches | |
TWI451330B (zh) | 快取記憶體系統以及快取資料取代之方法 | |
CN103765378B (zh) | 2d收集指令和2d高速缓存 | |
JPH07104816B2 (ja) | コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置 | |
US11907717B2 (en) | Techniques for efficiently transferring data to a processor | |
CN112749120A (zh) | 将数据有效地传输至处理器的技术 | |
CN116775518A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
JP3929872B2 (ja) | キャッシュメモリ、プロセッサ及びキャッシュ制御方法 | |
CN107408076B (zh) | 数据处理装置 | |
CN103514107B (zh) | 高性能数据缓存系统和方法 | |
US20230289304A1 (en) | Method and apparatus for efficient access to multidimensional data structures and/or other large data blocks | |
US11995442B2 (en) | Processor having a register file, processing unit, and instruction sequencer, and operable with an instruction set having variable length instructions and a table that maps opcodes to register file addresses | |
JP2005071351A (ja) | プロセッサおよびプロセッサの動作方法 | |
US20230267992A1 (en) | Keeper-free volatile memory 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170829 Termination date: 20210821 |