CN108139975A - 用于用分割索引对高速缓存进行寻址的系统和方法 - Google Patents

用于用分割索引对高速缓存进行寻址的系统和方法 Download PDF

Info

Publication number
CN108139975A
CN108139975A CN201680028652.3A CN201680028652A CN108139975A CN 108139975 A CN108139975 A CN 108139975A CN 201680028652 A CN201680028652 A CN 201680028652A CN 108139975 A CN108139975 A CN 108139975A
Authority
CN
China
Prior art keywords
cache
index
memory
address
cache line
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
CN201680028652.3A
Other languages
English (en)
Other versions
CN108139975B (zh
Inventor
R.里奇蒙
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.)
Movidius Ltd.
Original Assignee
Linear Algebra Technologies Ltd
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 Linear Algebra Technologies Ltd filed Critical Linear Algebra Technologies Ltd
Priority to CN202210532216.7A priority Critical patent/CN114924996A/zh
Publication of CN108139975A publication Critical patent/CN108139975A/zh
Application granted granted Critical
Publication of CN108139975B publication Critical patent/CN108139975B/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Abstract

呈现了高速缓存存储器映射技术。一种高速缓存可以包含索引配置寄存器。所述寄存器可以配置存储器地址的上部索引部分和下部索引部分的位置。可以组合所述部分以创建组合索引。除其他应用之外,还可以使用可配置分割索引寻址结构来减小在多个处理器并行地对视频帧进行解码之间发生的高速缓存冲突的速率。

Description

用于用分割索引对高速缓存进行寻址的系统和方法
相关专利申请的交叉引用
本申请要求2015年5月19日提交并且标题为“SYSTEMS AND METHODS FOR ADDRESSINGA CACHE WITH SPLIT-INDEXES”的美国专利申请No.14/716,588的优先权,其内容特此通过引用整体地并入。
技术领域
本申请一般地涉及利用分割索引地址结构对可配置中央处理单元(CPU)高速缓存进行寻址。
背景技术
计算机处理器的性能在过去的半个多世纪里一直以指数方式增加。处理性能方面的持续改进需要不断开发新技术和方法。一个已知的性能改进技术牵涉处理器高速缓存的使用。高速缓存提供了大大改进的主存储器上的数据访问时间,但是其存储容量有限。由于它们提供的性能增强,已经在本领域中看到高速缓存几乎统一的采用。
用于改进处理器性能的另一技术是并行地使用多个处理器。在这些场景中,当系统使用多个处理器时,各个处理核心可以共享对单个高速缓存的访问。这有利地允许每个处理器读取由另一处理器高速缓存的数据。然而,如果多个处理器中的每一个并行地访问文件的不同部分,则由每个处理器访问的存储器很可能在空间上远离(也就是说,很可能位于存储器的彼此远离的行和列处)。由于此原因,在此类场景中处理器可能请求映射到相同高速缓存线的数据从而产生冲突的可能性相当大。高速缓存冲突是代价高的,使处理器替代地从主存储器读取,导致相当多的降低的性能。因此,需要改进当并行处理器很可能访问存储器中的文件的空间上远离的部分时供多个处理器并行使用的高速缓存性能。
发明内容
依照所公开的主题,提供了用于用分割索引对可配置高速缓存进行寻址的系统和方法。在一些实施例中,一种用于将来自主存储器的元素存储到高速缓存中的方法包括:使来自高速缓存存储器的多个高速缓存线中的每一个与多个索引中的不同索引相关联,其中所述多个索引中的一个包括第一组合索引;将来自与来自所述主存储器的第一存储器位置相关联的第一地址的第一组比特定义为第一索引部分并且将来自所述第一地址的第二组比特定义为第二索引部分;通过级联所述第一索引部分和所述第二索引部分来生成所述第一组合索引;以及基于所述第一组合索引将至少所述第一存储器位置映射到来自所述多个高速缓存线的第一高速缓存线。
所述方法还可包括将来自所述第一地址的第三组比特定义为偏移,其中所述偏移确定所述第一存储器位置的所述第一高速缓存线内的位置。所述方法还可包括在所述多个高速缓存线内存储来自存储在所述主存储器中的高清晰度视频的帧的多个数据块。所述方法还可包括对从第一处理器和第二处理器到所述高速缓存存储器的读取和写入请求进行调度。所述方法还可包括:经由所述第一处理器读取位于所述主存储器的第一列中的第一数据块;经由所述第二处理器同时读取位于所述主存储器的所述第一列中的第二数据块;以及将所述第一数据块和所述第二数据块存储到所述高速缓存存储器中。
在一些实施例中,一种用于存储来自主存储器的数据元素的高速缓存,包括:高速缓存存储器,该高速缓存存储器包括各自通过多个索引中的不同索引来引用的多个高速缓存线,其中所述多个索引中的一个包括第一组合索引;索引配置寄存器,该索引配置寄存器被配置成将来自与来自所述主存储器的第一存储器位置相关联的第一地址的第一组比特定义为第一索引部分并且将来自所述第一地址的第二组比特定义为第二索引部分;索引生成模块,该索引生成模块被配置成接收如由所述索引配置寄存器所定义的所述第一索引部分和所述第二索引部分,并且通过级联所述第一索引部分和所述第二索引部分来生成所述第一组合索引;以及存储器地址映射模块,用于基于所述第一组合索引将至少所述第一存储器位置映射到来自所述多个高速缓存线的第一高速缓存线。
所述索引配置寄存器还可被配置成将来自所述第一地址的第三组比特定义为偏移,其中所述偏移确定所述第一存储器位置的所述第一高速缓存线内的位置。所述多个高速缓存线可被配置成存储来自存储在所述主存储器中的高清晰度视频的帧的多个数据块。所述存储器地址映射模块还可被配置成将来自所述高清晰度视频的所述帧的一行的所述多个数据块中的至少两个映射到来自所述多个高速缓存线的一个高速缓存线。所述高速缓存还可包括访问仲裁模块,所述访问仲裁模块被配置成对从第一处理器和第二处理器到所述高速缓存存储器的读取和写入请求进行调度。所述访问仲裁模块还可被配置成许可由所述第一处理器和所述第二处理器对来自所述多个高速缓存线的不同高速缓存线的同时读取和写入请求。
在一些实施例中,一种在上面存储有计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令在由计算机系统执行的情况下使所述计算机系统执行用于将来自主存储器的元素存储到高速缓存中的方法,所述方法包括:使来自高速缓存存储器的多个高速缓存线中的每一个与多个索引中的不同索引相关联,其中所述多个索引中的一个包括第一组合索引;将来自与来自所述主存储器的第一存储器位置相关联的第一地址的第一组比特定义为第一索引部分并且将来自所述第一地址的第二组比特定义为第二索引部分;通过级联所述第一索引部分和所述第二索引部分来生成所述第一组合索引;以及基于所述第一组合索引将至少所述第一存储器位置映射到来自所述多个高速缓存线的第一高速缓存线。
附图说明
所公开的主题的各种目的、特征和优点可参考所公开的主题的以下详细描述在连同以下附图一起考虑时被更充分地了解,在附图中相同的附图标记标识相同的元素。附图是示意性的,而不旨在按比例绘制。出于清楚的目的,未在每一图中标记每一组件。在图示不是允许本领域的普通技术人员理解所公开的主题所必要的情况下,也不示出所公开主题的每个实施例的每一组件。
图1图示了示例性计算机存储器和相关联的寻址方案。
图2图示了与图1相关联的示例性高速缓存条目地址结构。
图3图示了附加的高速缓存条目地址结构。
图4图示了高速缓存到存储器上的示例性映射。
图5图示了依照一些实施例的可以与具有分割索引地址结构的高速缓存一起利用的示例性处理系统。
图6图示了依照一些实施例的示例性计算和存储系统。
图7A-7C图示了依照一些实施例的示例性分割索引高速缓存条目地址结构。
图8A-8C图示了依照一些实施例的图像帧中的块的处理。
图9A-9B图示了依照一些实施例的高速缓存到图像块上的映射。
图10图示了依照一些实施例的到图像帧上的示例性高速缓存映射方案。
具体实施方式
在以下描述中,阐述了有关所公开的主题的系统和方法以及此类系统和方法可以在其中操作的环境等的许多特定细节,以便提供对所公开主题的透彻理解。然而,对于本领域的技术人员而言显而易见的是,可以在没有此类特定细节的情况下实践所公开的主题,并且不详细地描述在本领域中众所周知的某些特征以避免使所公开的主题复杂。此外,应当理解的是,在下面提供的示例是示例性的,并且设想了有在所公开的主题的范围内的其他系统和方法。
本公开的实施例致力于改进并行处理系统的高速缓存性能。高速缓存存储器已由处理器利用来改进性能几十年。一般而言,高速缓存存储器是有比从主存储器的读取时间短至少一个数量级的快速读取时间能力的小存储器。作为权衡,这个快速执行高速缓存存储器必须小以便允许性能提高。由于此原因,重要的是使用高效方法来选择要将数据存储在高速缓存存储器中的位置。
当并行处理器共享高速缓存时,它们可以各自并行地读取并写入到高速缓存的线。通常,排队系统将对同时请求进行仲裁以防止冲突。只要处理器不可能读取映射到高速缓存的重叠区域的数据此方案就是有利的。然而,每当两个处理器试图从存储器的碰巧映射到高速缓存的相同线的不同线读取时(换句话说,当存在冲突时)利用共享高速缓存将导致性能降低。如果已知并行处理器中的每一个对存储器中的不同线进行访问,则可以采用某些高速缓存寻址方案来消除由于来自多个处理器的访问而导致的高速缓存冲突的可能性。一个这样的技术(被称为分割索引地址结构)特别适合于减轻由于某些高速缓存访问模式而发生的冲突,并且在下面进行描述。
利用可以通过这样的方案来改进的高速缓存存储器的处理的一个形式是高清晰度视频的解码。尽管许多格式现今仍在使用中,然而在本领域中已广泛采用的一个格式是H.264/MPEG-4 Part 10高级视频编码(H.264或MPEG-4 AVC)。为了针对高清晰度视频重放改进解码时间,多个处理核心可以各自写入到在核心之间共享的单个高速缓存。尽管剩下的讨论一般地涉及H.264视频,然而其他形式的视频压缩或与视频压缩不相关的其他形式的处理可以受益于本文中所公开的存储方法。
高清晰度视频以及特别是H.264视频的一个特征是,当视频帧被缓冲到存储器中时,整个帧作为连续地址块被存储在存储器中,使得缓冲器中的线上的第一字节的地址也是视频帧中的线的第一字节。换句话说,即使存储器缓冲器比视频帧的宽度宽,视频帧的一线也被存储在存储器缓冲器的一线上。这个缓冲器填充方案被称为“平铺”到存储器中,并且在存储器的水平“步幅”(存储器的行的宽度)大于视频帧的水平分辨率时可以被利用。这可以让超过每条线末端的某个空间未使用,从而将线填满到某个物理边界。
当对已被平铺到存储器中的视频帧进行解码时,不同的处理器可以并行地对视频帧的不同线进行解码。例如,第一处理器可以对第一线进行解码,而第二处理器对第二线进行解码。因为高速缓存线通常被映射为使得高速缓存中的连续线映射到存储器的一行内的连续列,所以多个处理器中的每一个可以在特定时间使用碰巧映射到与其他处理器相同的高速缓存线的数据的块。在这种情形下,产生了冲突,因为高速缓存的一线不能存储两个不同的块。因此,必须从主存储器中检索正由多个处理器访问的块中的至少一个。为了减小在多个处理器之间共享的高速缓存的未命中率,本公开的实施例提出了特定于与H.264高清晰度视频相关联的存储方法的技术,或诸如MPEG或MPEG2之类的其他基于块的视频算法。然而,应该了解的是,可以扩展这些技术以改进其他并行化高清晰度视频处理或其他适合的数据处理方面的高速缓存性能。
H.264视频格式包含可以与在下面描述的分割索引高速缓存条目地址结构相结合地使用的许多唯一特征。在H.264中表示视频的数据被存储为一系列单独的帧。所存储的帧被进一步细分为被称为“宏块”的大的离散信息块,将在下面对“宏块”进行更详细的讨论。当重建压缩视频流时被称为“参考帧”的某些帧被保存并用于重建在时间上位于参考帧之间的中间帧。中间帧被重建为待渲染的帧与存储器中的最接近参考帧之间的差异。基于当前帧与参考帧之间的差异来生成视频帧的这个方法被称为“运动补偿”,并且提供显著的压缩,但是也需要附加的处理能力。
以下示例提供有关主存储器到高速缓存线的映射的背景技术。图1提供用于图示典型高速缓存的某些元素的示例性主存储器100。图1表示具有总容量为32个字节的简单主存储器。主存储器100被组织成四行和四列,总共达16个单元。图1还示出示例性列102、示例性行104和示例性单元106。
图1中的主存储器100的每行(例如,行104)包含8个字节,并且每列(例如,列102)包含4个字节。行与列之间的交叉定义总共16个单元,其中的每一个包含2个字节。例如,单元106包含2个字节的数据并且此单元表示列102与行104之间的交叉。如在图1中可看到的,主存储器的每个字节被指派唯一二进制地址。此地址仅仅是表示数据的特定字节在主存储器中的位置的二进制数字。对于图1的32字节主存储器,需要总共5个比特来唯一地表示每个可用的存储器位置。
在主存储器100中,使用从左到右、自上而下的方法来指派地址。如图1指示,行104中从左向右移动的每个地址比前一个地址大1。使用此组织,可注意到的是,在表示主存储器100中的字节的5比特存储器地址中,两个最高有效比特(比特3和4)表示主存储器中的行数。例如,在图1中,第一行104的两个最高有效比特是表示主存储器的第一行的“00”。类似地,接下来的行的两个最高有效比特是主存储器的分别表示第二行、第三行和第四行的“01”、“10”和“11”。
接下来的两个最高有效比特(比特1和2)表示主存储器中的列数。例如,在图1中,第一列102的比特1和2是表示存储器中的第一列的“00”。类似地,接下来的列的比特1和2是主存储器的分别表示第二列、第三列和第四列的“01”、“10”和“11”。最后,最低有效比特(比特0)表示主存储单元内的特定字节。参考此存储器组织,将描述可以与此存储器相结合地使用的简单的高速缓存存储器。
参考图示了32字节主存储器的图1,将考虑可以与主存储器相关联的8字节高速缓存。对于存储与32字节主存储器相关联的条目的8字节高速缓存,高速缓存能够在特定时间点保持主存储器中的条目的1/4。将在下面更详细地描述用来选择待存储在高速缓存中并从高速缓存中移除的条目的方法。与主存储器100不同,高速缓存未被组织成行和列;相反,高速缓存每个它可存储的主存储器的字将通常具有一个条目。在参考图1考虑8字节高速缓存的这种情况下,每个字是2个字节(因为在行与列之间的交叉处的每个单元包含2个字节),并且因此高速缓存将具有4行。
图2提供了用于将条目存储在主存储器100中的8字节高速缓存的示例高速缓存条目地址结构。高速缓存条目地址结构200包含标签202、索引204和偏移206。在此示例中,高速缓存条目地址结构200长5个比特,其是与存储器100中的每个字节的唯一地址相同的长度。应该了解的是,高速缓存条目地址结构取决于它寻址的主存储器的大小可以是任意长度,但是它一般地应该是与主存储器中的地址的长度相同的长度。在此示例中,标签202是2个比特,索引204是2个比特,并且偏移206是1个比特。高速缓存条目地址结构200可取的每个值使用标签202、索引204和偏移206来提供到高速缓存中的单个字节的唯一映射。
高速缓存条目200的索引204表示高速缓存条目地址结构200被映射到的高速缓存的行。因为索引204包括2个比特,所以在高速缓存中可以有最大22 = 4行。高速缓存条目地址结构200的偏移206表示高速缓存条目地址结构200参考的高速缓存行内的特定字节。因为偏移206包括1个比特,所以每个高速缓存行确切地包含21 = 2个字节的数据。因此,此高速缓存可在任何给定时间存储4*2 = 8个字节的数据。进一步,在此示例中,主存储器的每8个字节(例如,主存储器位置00000至00111、01000至01111、10000至10111等)被映射到高速缓存中的唯一位置。最后标签202是包括映射到高速缓存的主存储器位置的上部比特的唯一标识符。在此示例中,标签202包括2个比特(继续早前示例,上部比特是地址00000的前两位数)。作为此结构的结果,共享相同的3个最低有效比特的所有主存储器位置(例如,主存储器位置00011、01011、10011和11011)将映射到高速缓存的相同位置。标签202存储确定这四个可能的条目中的哪一个当前被存储在高速缓存中所必需的附加信息。这个简单的高速缓存和主存储器是为了说明性目的而提供的,并且大得多的高速缓存和主存储器被用于处理高清晰度视频。附加地,参考图1和图2所描述的简单的高速缓存由于将在下面描述的原因而不适合于使用多个处理器来处理视频。
现在将依照本公开的一些实施例呈现较大的高速缓存条目地址结构。图3提供了用于典型高速缓存的示例高速缓存条目地址结构。高速缓存条目地址结构300包含标签302、索引304和偏移306。在此示例中,高速缓存条目地址结构300长18个比特。然而,应该了解的是,高速缓存条目地址结构取决于高速缓存的大小可以是任意长度。在此示例中,标签302是10个比特,索引304是5个比特,并且偏移306是3个比特。高速缓存条目地址结构300可取的每个值使用标签302、索引304和偏移306来提供到高速缓存中的单个字节的唯一映射。
高速缓存条目300的索引304表示高速缓存条目地址结构300被映射到的高速缓存的行。因为索引304包括5个比特,所以在高速缓存中可以有最大25 = 32行。高速缓存条目地址结构300的偏移306表示高速缓存条目地址结构300参考的高速缓存行内的特定字节。因为偏移306包括3个比特,所以每个高速缓存行确切地包含23 = 8个字节的数据。因此,此高速缓存可在任何给定时间存储32*8 = 256个字节的数据。进一步,在此示例中,主存储器的每256个字节(主存储器位置0x00000至0x000FF、0x00000至0x001FF、0x00000至0x002FF等)被映射到高速缓存中的唯一位置。最后,标签302是包括映射到高速缓存的主存储器位置的上部比特的唯一标识符。在此示例中,标签302包括10个比特(继续早前示例,上部比特是地址0x00000的前三位数)。
可在高速缓存条目中唯一地映射的字节的总数与条目中的比特数有关—例如,高速缓存条目300可唯一地映射218 = 256千字节(kB)的数据。此高速缓存条目地址结构通常用于按照行业中的各式各样的高速缓存类型对高速缓存条目进行寻址。
为了进一步图示将存储器条目映射到具有图3的高速缓存条目地址结构的高速缓存中的构思,考虑以下示例。图4提供了可被复制到具有像在图3中那样组织的高速缓存条目的高速缓存中的简单的主存储器结构400。主存储器400可包括水平宽度402和垂直高度404。附加地,存储器中的单个单元的宽度可通过406来表示。
在一个示例中,图4中的主存储器400的水平宽度402是512个字节。继续此示例,256字节高速缓存被映射到存储器上。在利用图3中所公开的高速缓存条目地址结构的典型高速缓存中,该高速缓存被以以下方式组织成8个字节的32行。在图4的示例中,高速缓存被顺序地映射,使得每个连续索引映射到相邻列中的存储器条目。因此,高速缓存的每行被直接映射到特定行主存储器400内的连续列。当高速缓存被以这种方式映射时,高于偏移比特(比特3至7(图3))的最低有效比特表示主存储器400的一行内的连续列。一行内的连续条目映射到高速缓存的连续线的这种组织是高速缓存条目地址结构300的结构的结果。特别地,高速缓存条目地址结构300的索引比特位于该条目的最低有效部分中。主存储器地址的对应部分参考主存储器内的行。使用该结构,高速缓存必须如上所述映射到主存储器。
本公开的实施例提供高速缓存条目地址被以与以上图3中的高速缓存条目地址结构300不同的格式存储的高速缓存的使用。这些高速缓存利用高速缓存条目的索引被分割成上部部分和下部部分的地址结构。此结构将被称作“分割索引”,并且将在下面对此进行更详细的描述。分割高速缓存条目的索引可显著地减小当使用并行处理器来对高清晰度视频或其他数据进行解码时的高速缓存冲突的可能性。例如,在这些和其他上下文中,分割索引可增加对视频帧的并行访问的局部性。
图5图示了可以依照本公开的一些实施例利用的示例性处理系统500。在图5中,处理子系统500包含处理器502A、502B、502C和502D以及第2级(L2)高速缓存504。
处理器502A、502B、502C和502D可以是具有能够处理计算机指令的中央处理单元(CPU)核心的任何硬件。处理器502A、502B、502C和502D也可能用使用专用集成电路(ASIC)、可编程逻辑阵列(PLA)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或任何其他集成电路的硬件加以实现。作为示例,适合于执行计算机程序的处理器502A、502B、502C和502D包括专用微处理器、数字信号处理器以及专用数字计算机的任何一个或多个处理器。一般地,处理器502A、502B、502C和502D从只读存储器或随机存取存储器或两者接收指令和数据。
L2高速缓存504包括能够高速缓存来自处理器502A、502B、502C和502D中的任一个的条目的快速执行存储器。在一个实施例中,L2高速缓存504是能够许可由处理器502A、502B、502C和502D同时访问的共享高速缓存。在一个实施例中,可利用如在下面更详细地描述的分割索引地址结构来对L2高速缓存504进行寻址。
图6提供了可以依照本公开的一些实施例利用的示例性计算和存储系统600。在图6中,计算和存储系统600包含存储模块602和计算系统604。存储模块602包含高容量储存器606。计算系统604包含主存储器608和处理子系统500。
存储模块602内的高容量储存器606可以直接连接到计算系统604内的主存储器608。在一个实施例中,高容量储存器606可以是能够存储大量数据的非易失性物理存储介质。在一个实施例中,主存储器608可以是能够动态存储并访问数据条目的任何存储器。在一个示例性实施方式中,主存储器608可以是能够存储来自高容量储存器606的条目的随机存取存储器(RAM)。处理子系统500可以直接与主存储器608进行通信。L2高速缓存504还可以高速缓存存储在主存储器608内的条目。在一个实施例中,L2高速缓存504可以利用如下所述的分割索引地址结构来存储条目。
图7A-7C提供了依照本公开的一些实施例的分割索引高速缓存条目的示例。在图7A-7C中,高速缓存条目地址结构包括偏移、上部标签和下部标签以及上部索引和下部索引。
图7A提供了依照本公开的某些实施例的小高速缓存的高速缓存条目地址结构的示例。高速缓存条目地址结构700A包含上部标签702A、上部索引704A、下部标签706A、下部索引708A和偏移710A。在此示例中,高速缓存条目地址结构700A长18个比特。然而,应该了解的是,高速缓存条目地址结构取决于高速缓存的大小可以是任意长度。在此示例中,上部标签702A是5个比特,上部索引704A是4个比特,下部标签706A是5个比特,下部索引708A是1个比特,并且偏移710A是3个比特。应该注意的是,尽管索引和标签已被分割成上部部分和下部部分,然而它们保持完全与传统高速缓存条目地址的对应标签和索引相同的长度。
高速缓存条目地址结构700A的上部索引704A和下部索引708A的组合仍然表示高速缓存条目地址结构700A被映射到的高速缓存的行。因为上部索引704A和下部索引708A一起包含5个比特,所以在高速缓存中可以有最大25 = 32行。高速缓存条目地址结构700A的偏移710A仍然表示高速缓存条目地址结构700A参考的高速缓存行内的特定字节。因为偏移710A包括3个比特,所以每个高速缓存行确切地包含23 = 8个字节的数据。因此,此高速缓存可在任何给定时间存储32*8 = 256个字节的数据。与先前的示例类似,存储器的256个字节的大块映射到高速缓存中的唯一位置。最后,上部标签702A和下部标签706A的级联包括映射到高速缓存的存储器位置的唯一标识符。在此示例中,级联标签包括10个比特。
为索引的上部部分704A和下部部分708A所选取的特定比特对高速缓存条目的映射具有特殊意义。下部部分708A被选取来表示它映射到的存储器的列(例如,存储器500的列)。索引708A的下部部分长仅1个比特,并且因此它仅可表示两列中的一个。索引的剩余部分(上部部分704A)被选取来表示它映射到的存储器的行。在此示例中,索引的上部部分704A长4个比特,并且因此它可表示16个列中的一个。高速缓存条目的组织因此显著地更改存储器元素在高速缓存内的位置。
应该注意的是,在图2和图3的示例中,索引比特由于它们在高速缓存条目地址结构中的位置而仅表示特定行的不同列(在图2中,比特1和2代表列,而比特3和4代表行)。如果在图2中交换表示标签和索引的比特,则高速缓存条目将表示相同列内的不同行。参考图7A,分割索引的位置被仔细地选取,因为它们代表存储器中的行和列地址的最低有效比特。
图7B和图7C图示了依照本公开的一些实施例的与较大存储器相对应的高速缓存条目地址结构。在图7B中,高速缓存条目地址结构700B包含上部标签702B、上部索引704B、下部标签706B、下部索引708B和偏移710B。在此示例中,高速缓存条目地址结构700B长32个比特。然而,应该了解的是,高速缓存条目地址结构取决于高速缓存的大小可以是任意长度。在此示例中,上部标签702B是12个比特,上部索引704B是9个比特,下部标签706B是4个比特,下部索引708B是1个比特,并且偏移710B是6个比特。
假定双向集关联高速缓存,通过此条目地址结构表示的高速缓存被确定如下。因为偏移是6个比特,所以此高速缓存的每行包含26 = 64个字节。进一步,因为分割索引的下部部分708B是1个比特并且上部部分是9个比特,所以我们知道被映射到高速缓存中的存储器的每个“块”宽21 = 2列且高29 = 512行,并且大小为64 kB。因为该高速缓存是双向集关联的,所以该高速缓存的总大小是26 *21 *29 *21 = 217 = 128 kB。
在图7C中,高速缓存条目地址结构700C包含上部标签702C、上部索引704C、下部标签706C、下部索引708C和偏移710C。在此示例中,高速缓存条目地址结构700C长32个比特。在此示例中,上部标签702C是13个比特,上部索引704C是8个比特,下部标签706C是3个比特,下部索引708C是2个比特,并且偏移710C是6个比特。
假定双向集关联高速缓存,通过此条目地址结构表示的高速缓存被确定如下。因为偏移是6个比特,所以此高速缓存的每行包含26 = 64个字节。进一步,因为分割索引的下部部分708B是2个比特并且上部部分是8个比特,所以我们知道被映射到高速缓存中的存储器的每个“块”宽22 = 4列且高28 = 256行,并且大小为64 kB。因为该高速缓存是双向集关联的,所以该高速缓存的总大小是26 *21 *29 *21 = 217 = 128 kB。使用图7A、图7B和图7C中所描述的格式,高速缓存可被组织成映射到存储器上的任意块布置。
图8A-8C和图9A-9B图示了分割索引地址结构到并行地利用多个处理器的视频解码系统的应用。特别地,图8A-8C提供依照H.264视频格式或其他数据格式解码的示例性图像。图8A图示被分解成其组成宏块的图像(例如,扳手)的帧,并且图8B和图8C展示在解码过程的不同阶段期间的相同图像。
图8A提供了依照一些实施例的重叠在样本图像帧之上的网格。在图8A中,网格由8行和16列组成,以得到总共128个块。应当了解的是,此示例仅出于说明性目的图示了组成图像的128个块,并且在实践中高清晰度视频帧将由更多的宏块组成。处理器502A (P1)、502B (P2)、502C (P3)和502D (P4)各自对图像帧的不同行进行解码。例如,在图8A中,处理器502A对第一行(行0)进行解码,处理器502B对第二行(行1)进行解码,处理器502C对第三行(行3)进行解码,并且处理器502D对第四行(行3)进行解码。在完成处理一行时,每个处理器向前前进四行以继续处理。因此,处理器502A对第五行(行4)进行解码,处理器502B对第六行(行5)进行解码,处理器502C对第七行(行6)进行解码,并且处理器502D对第八行(行7)进行解码。
图8B图示了在处理已开始之后的阶段处的图像帧的解码。在图8B中,当前被处理的块通过用灰色突出显示的框来表示。在此阶段处,处理器502A处理图像帧的行0的列5-8中的块,处理器502B处理图像帧的行1的列4-7中的块,处理器502C处理图像帧的行2的列3-6中的块,并且处理器502D处理图像帧的行3的列2-5中的块。应该了解的是,典型处理器在对高清晰度视频进行解码时将同时对四个块进行解码。然而,处理器可以取决于速度和存储器限制而同时对更多或更少数量的块和行进行解码。附加地,典型的是处理器将同时对图像帧的不同列中的块进行解码,如图8B所图示,但是这也不是必需的。
图8C图示了在处理的稍后阶段处的图像帧的解码。在此阶段处,处理器502A处理图像帧的行0的列16中的块和图像帧的行4中的列0-2中的块,处理器502B处理图像帧的行1的列14-15中的块和图像帧的行5的列0-1中的块,处理器502C处理图像帧的行2的列13-15中的块和图像帧的行6的列0中的块,并且处理器502D处理图像帧的行3的列12-15中的块。如上所述,像图8A-8C所示出的那样经由不同的处理器同时处理图像帧的行可以通过将图像帧平铺到存储器中而变得可能。
图9A和图9B图示了依照一些实施例的高速缓存线到图8A-8C的图像帧的块上的映射。图9A图示了根据典型高速缓存的高速缓存线映射,而图9B图示了利用上述的分割索引高速缓存地址结构的高速缓存线映射。
在图9A中,图示了典型16字节高速缓存的高速缓存线的映射。出于说明性目的,图像帧中的每个块被假定为由一个字节构成。图9A示出了对于典型高速缓存,图像帧的每行内的每个块将映射到高速缓存的不同行。如从图9A可看到的,当四个块由不同处理器中的每一个同时处理时,这可导致多于一个处理器使用映射到高速缓存的相同位置的块的冲突。例如,在图9A中,处理器502A、502B和502C各自对映射到高速缓存的行5的块进行同时读取。因此,这些访问请求中的至少两个将导致高速缓存未命中,从而导致性能降低。当先前解码的图像由多个并行处理器同时并行地作为参考图像来访问时出现像这样的冲突。因为并行处理器各自正在图像的空间闭合块上工作,所以它们需要的参考图像的部分将重叠的可能性很高。由于图9A中的高速缓存布局,每个处理器所需要的参考图像的不同部分将映射到高速缓存中的相同位置。
在图9B中,依照本公开的一些实施例提供了已经用分割索引结构映射的高速缓存的高速缓存线的映射。图9B示出了图像帧的每行内的块可以以重复方式映射到高速缓存线。例如,图像帧的行1的前四个块映射到高速缓存线0-3,如图9A中所示。然而,与在图9A中不同,行1中的接下来的四个块也映射到高速缓存线0-3。行1内的此图像帧中的每四个块映射到相同组高速缓存线,如图9B中所示。如从该图像可看到的,由处理器502A解码的每一行的每一块仅可映射到高速缓存线0-3。类似地,由处理器502B解码的每一行的每一块仅映射到高速缓存线4-7。当这样将高速缓存映射到图像帧时,很明显处理器502A-502D不能访问映射到与另一处理器相同的高速缓存线的块。因此,此布置消除了由来自不同处理器的同时访问产生的高速缓存冲突。
高速缓存线到图像帧上的特定映射以避免冲突依赖于处理器的数量和由单个处理器并行地处理的块的数量。高速缓存应该唯一地映射图像帧的行中的和由给定处理器同时处理的一样多的块。在图9B中,可以同时处理四个块,并且因此图像帧的每行需要高速缓存的至少四行。此外,因为使用了四个处理器,所以块的至少四个唯一集合应该是可用的,每个处理器各一个集合。这些约束导致为图9B中的16字节高速缓存所选取的高速缓存线的布置。应该注意的是,如果高速缓存比必需的大,则保存以上要求的任何映射方案适合于避免由多处理器系统产生的冲突。因此,使用此方案可根据应用软件的特定需要将数据平铺到主存储器中并映射到高速缓存线。
图10图示了依照一些实施例的正由并行处理器解码的H.264图像帧1000的特定布置。图10包含行1002和行1004。每行存储与H.264视频的图像帧相关联的任意数量的宏块,同时注意存储器的每行仅存储与图像帧中的单行数据相关联的宏块。
基于此布置,高速缓存条目地址被组织为使得每第五个宏块映射到相同的高速缓存条目(例如,在图6A-6C的早前讨论中,索引的下部部分是2个比特使得它可映射到4列)。因此,行1002中的每第五个宏块将映射到高速缓存的相同行,并且行1004中的每第五个宏块将映射到高速缓存的相同行。然而,行1002中没有宏块将映射到与1004中的宏块相同的高速缓存线中的任一个,并且行1004中的宏块谁都将不会映射到与行1002中的宏块相同的高速缓存线中的任一个。重要的是,在一个实施例中,图像帧的不同行由不同处理器并行地解码。通过以这种方式组织高速缓存,使用共享高速缓存的各种处理器将从不试图覆写由其他处理器使用的高速缓存的部分。这具有通过防止处理器为高速缓存空间而战来显著地减小高速缓存未命中率从而有效地全面提高高速缓存命中率的效果。
应当了解的是,虽然已经在本文中描述了若干不同的布置,但是可以以各种形式将每个的特征有利地组合在一起以实现优点。
在上述说明书中,已经参考特定示例描述了应用。然而,将明显的是,在不脱离如所附权利要求中所阐述的本发明的更广精神和范围的情况下,可以对其进行各种修改和改变。例如,连接可以是适合于从或者向相应的节点、单元或设备传递信号的任何类型的连接,例如经由中间设备。因此,除非另外暗示或者陈述,否则连接可以例如是直接连接或间接连接。
应当理解的是,本文中所描绘的架构仅仅是示例性的,并且事实上可实现完成相同功能性的许多其他架构。在抽象但仍确切的意义上,用于完成相同功能性的组件的任何布置被有效地“关联”,使得所期望的功能性被完成。因此,在本文中组合以完成特定功能性的任何两个组件可被视为彼此“相关联”,使得所期望的功能性被完成,而不管架构或中间组件如何。同样地,如此关联的任何两个组件也可被视为彼此“可操作地连接”或“可操作地耦合”以完成所期望的功能性。
此外,本领域的技术人员将认识到,上述的操作的功能性之间的边界仅仅是说明性的。可以将多个操作的功能性组合到单个操作中,和/或单个操作的功能性可以分布在附加操作中。而且,替代实施例可以包括特定操作的多个实例,并且可以在各种其他实施例中更改操作的顺序。
然而,其他修改、变化和替代方案也是可能的。因此,将在说明性意义上而不是在限制性意义上考虑说明书和附图。
在权利要求中,置于括号之间的任何附图标记不应该被解释为限制权利要求。单词“包括”不排除除权利要求中列举的那些要素或步骤外的其他要素或步骤的存在。此外,如本文中所使用的术语“一”或“一个”被定义为一个或多于一个。另外,即便当相同权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”之类的不定冠词时,在权利要求中使用诸如“至少一个”和“一个或多个”之类的介绍性短语也不应该被解释成暗示通过不定冠词“一”或“一个”介绍另一权利要求要素将包含这样介绍的权利要求要素的任何特定权利要求限于包含仅一个这样的要素的发明。这同样适用于定冠词的使用。除非另外陈述,否则诸如“第一”和“第二”之类的术语用于任意地区分此类术语描述的要素。因此,这些术语不一定旨在指示此类要素的时间或其他优先顺序。在相互不同的权利要求中记载某些措施的简单事实不指示这些措施的组合不能用于获益。

Claims (20)

1.一种用于将来自主存储器的元素存储到高速缓存中的方法,所述方法包括:
使来自高速缓存存储器的多个高速缓存线中的每一个高速缓存线与多个索引中的不同索引相关联,其中所述多个索引中的一个索引包括第一组合索引;
将来自与来自所述主存储器的第一存储器位置相关联的第一地址的第一组比特定义为第一索引部分并且将来自所述第一地址的第二组比特定义为第二索引部分;
通过级联所述第一索引部分和所述第二索引部分来生成所述第一组合索引;以及
基于所述第一组合索引将至少所述第一存储器位置映射到来自所述多个高速缓存线的第一高速缓存线。
2.根据权利要求1所述的方法,还包括将来自所述第一地址的第三组比特定义为偏移,其中所述偏移确定所述第一存储器位置的所述第一高速缓存线内的位置。
3.根据权利要求2所述的方法,还包括:
将来自所述第一地址的第四组比特定义为下部标签并且将来自所述第一地址的第五组比特定义为上部标签;以及
通过级联所述下部标签和所述上部标签来生成唯一地标识存储在所述第一高速缓存线中的所述第一地址的组合标签。
4.根据权利要求1所述的方法,还包括在所述多个高速缓存线内存储来自存储在所述主存储器中的高清晰度视频的帧的多个数据块。
5.根据权利要求4所述的方法,其中所述高清晰度视频的帧遵照H.264视频格式。
6.根据权利要求4所述的方法,还包括将来自所述高清晰度视频的帧的一行的所述多个数据块中的至少两个映射到来自所述多个高速缓存线的一个高速缓存线。
7.根据权利要求1所述的方法,还包括对从第一处理器和第二处理器到所述高速缓存存储器的读取和写入请求进行调度。
8.根据权利要求7所述的方法,还包括对从第三处理器到所述高速缓存存储器的读取和写入请求进行调度。
9.根据权利要求7所述的方法,还包括:
经由所述第一处理器读取位于所述主存储器的第一列中的第一数据块;
经由所述第二处理器同时读取位于所述主存储器的所述第一列中的第二数据块;以及
将所述第一数据块和所述第二数据块存储到所述高速缓存存储器中。
10.根据权利要求1所述的方法,还包括:
将来自与来自所述主存储器的第二存储器位置相关联的第二地址的第一组比特定义为第三索引部分并且将来自所述第二地址的第二组比特定义为第四索引部分;
通过级联所述第三索引部分和所述第四索引部分来生成第二组合索引;以及
基于所述第二组合索引将至少所述第二存储器位置映射到来自所述多个高速缓存线的第二高速缓存线。
11.一种用于存储来自主存储器的数据元素的高速缓存,包括:
高速缓存存储器,所述高速缓存存储器包括各自通过多个索引中的不同索引来引用的多个高速缓存线,其中所述多个索引中的一个包括第一组合索引;
索引配置寄存器,所述索引配置寄存器被配置成将来自与来自所述主存储器的第一存储器位置相关联的第一地址的第一组比特定义为第一索引部分并且将来自所述第一地址的第二组比特定义为第二索引部分;
索引生成模块,所述索引生成模块被配置成接收如由所述索引配置寄存器所定义的所述第一索引部分和所述第二索引部分,并且被配置成通过级联所述第一索引部分和所述第二索引部分来生成所述第一组合索引;以及
存储器地址映射模块,用于基于所述第一组合索引将至少所述第一存储器位置映射到来自所述多个高速缓存线的第一高速缓存线。
12.根据权利要求11所述的高速缓存,其中所述索引配置寄存器还被配置成将来自所述第一地址的第三组比特定义为偏移,其中所述偏移确定所述第一存储器位置的所述第一高速缓存线内的位置。
13.根据权利要求12所述的高速缓存,其中所述索引配置寄存器还被配置成将来自所述第一地址的第四组比特定义为下部标签并且将来自所述第一地址的第五组比特定义为上部标签,并且通过级联所述下部标签和所述上部标签来生成唯一地标识存储在所述第一高速缓存线中的所述第一地址的组合标签。
14.根据权利要求11所述的高速缓存,其中所述多个高速缓存线被配置成存储来自存储在所述主存储器中的高清晰度视频的帧的多个数据块。
15.根据权利要求14所述的高速缓存,其中所述高清晰度视频的帧遵照H.264视频格式。
16.根据权利要求14所述的高速缓存,其中所述存储器地址映射模块还被配置成将来自所述高清晰度视频的帧的一行的所述多个数据块中的至少两个映射到来自所述多个高速缓存线的一个高速缓存线。
17.根据权利要求11所述的高速缓存,还包括访问仲裁模块,所述访问仲裁模块被配置成对从第一处理器和第二处理器到所述高速缓存存储器的读取和写入请求进行调度。
18.根据权利要求17所述的高速缓存,其中所述访问仲裁模块还被配置成许可由所述第一处理器和所述第二处理器对来自所述多个高速缓存线的不同高速缓存线的同时读取和写入请求。
19.根据权利要求11所述的高速缓存,其中:
所述索引配置寄存器还被配置成将来自与来自所述主存储器的第二存储器位置相关联的第二地址的第一组比特定义为第三索引部分并且将来自所述第二地址的第二组比特定义为第四索引部分;
所述索引生成模块还被配置成接收所述第三索引部分和所述第四索引部分,并且被配置成通过级联所述第三索引部分和所述第四索引部分来生成第二组合索引;并且
所述存储器地址映射模块还被配置成基于所述第二组合索引将至少所述第二存储器位置映射到来自所述多个高速缓存线的第二高速缓存线。
20.一种在上面存储有计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令在由计算机系统执行的情况下,使所述计算机系统执行用于将来自主存储器的元素存储到高速缓存中的方法,所述方法包括:
使来自高速缓存存储器的多个高速缓存线中的每一个高速缓存线与多个索引中的不同索引相关联,其中所述多个索引中的一个索引包括第一组合索引;
将来自与来自所述主存储器的第一存储器位置相关联的第一地址的第一组比特定义为第一索引部分并且将来自所述第一地址的第二组比特定义为第二索引部分;
通过级联所述第一索引部分和所述第二索引部分来生成所述第一组合索引;以及
基于所述第一组合索引将至少所述第一存储器位置映射到来自所述多个高速缓存线的第一高速缓存线。
CN201680028652.3A 2015-05-19 2016-05-11 用于用分割索引对高速缓存进行寻址的系统和方法 Active CN108139975B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210532216.7A CN114924996A (zh) 2015-05-19 2016-05-11 用于用分割索引对高速缓存进行寻址的系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/716,588 2015-05-19
US14/716,588 US9916252B2 (en) 2015-05-19 2015-05-19 Systems and methods for addressing a cache with split-indexes
PCT/IB2016/000709 WO2016185272A1 (en) 2015-05-19 2016-05-11 Systems and methods for addressing a cache with split-indexes

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210532216.7A Division CN114924996A (zh) 2015-05-19 2016-05-11 用于用分割索引对高速缓存进行寻址的系统和方法

Publications (2)

Publication Number Publication Date
CN108139975A true CN108139975A (zh) 2018-06-08
CN108139975B CN108139975B (zh) 2022-05-31

Family

ID=56178393

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680028652.3A Active CN108139975B (zh) 2015-05-19 2016-05-11 用于用分割索引对高速缓存进行寻址的系统和方法
CN202210532216.7A Pending CN114924996A (zh) 2015-05-19 2016-05-11 用于用分割索引对高速缓存进行寻址的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210532216.7A Pending CN114924996A (zh) 2015-05-19 2016-05-11 用于用分割索引对高速缓存进行寻址的系统和方法

Country Status (6)

Country Link
US (3) US9916252B2 (zh)
EP (1) EP3298496A1 (zh)
KR (2) KR102052256B1 (zh)
CN (2) CN108139975B (zh)
DE (1) DE112016002247T5 (zh)
WO (1) WO2016185272A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111372038A (zh) * 2018-12-26 2020-07-03 厦门星宸科技有限公司 多串流影像处理装置及方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916252B2 (en) 2015-05-19 2018-03-13 Linear Algebra Technologies Limited Systems and methods for addressing a cache with split-indexes
US10565115B2 (en) * 2017-03-30 2020-02-18 Western Digital Technologies, Inc. Calculating the optimal number of LBNS to prefetch per CPU
US20210065758A1 (en) * 2019-08-29 2021-03-04 Advanced Micro Devices, Inc. Adaptable allocation of sram based on power

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
CN101127606A (zh) * 2006-07-08 2008-02-20 国际商业机器公司 传输数据对象的方法和装置
CN101939749A (zh) * 2008-02-11 2011-01-05 Nxp股份有限公司 程序模糊方法和用于执行模糊程序的处理设备
CN102439580A (zh) * 2009-03-20 2012-05-02 普林斯顿大学托管委员会 用于网络加速以及对高速缓存文件系统进行高效索引编制的系统及方法
US20140040541A1 (en) * 2012-08-02 2014-02-06 Samsung Electronics Co., Ltd. Method of managing dynamic memory reallocation and device performing the method
US20140208027A1 (en) * 2009-03-03 2014-07-24 Qualcomm Incorporated Configurable cache and method to configure same

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5687350A (en) * 1995-02-10 1997-11-11 International Business Machines Corporation Protocol and system for performing line-fill address during copy-back operation
US6230231B1 (en) 1998-03-19 2001-05-08 3Com Corporation Hash equation for MAC addresses that supports cache entry tagging and virtual address tables
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6941421B2 (en) * 2002-10-29 2005-09-06 International Business Machines Corporation Zero delay data cache effective address generation
US7475219B2 (en) 2004-08-27 2009-01-06 Marvell International Ltd. Serially indexing a cache memory
US20070233961A1 (en) 2006-03-31 2007-10-04 Banning John P Multi-portioned instruction memory
US8122216B2 (en) * 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
JP5440067B2 (ja) 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US20120210069A1 (en) * 2009-10-25 2012-08-16 Plurality Ltd. Shared cache for a tightly-coupled multiprocessor
JP5482197B2 (ja) * 2009-12-25 2014-04-23 富士通株式会社 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
EP2761472B1 (en) * 2011-09-30 2020-04-01 Intel Corporation Memory channel that supports near memory and far memory access
KR102017526B1 (ko) * 2012-09-25 2019-09-03 삼성전자주식회사 Url 리스트에서 url 주소 검색 방법 및 장치
US9690581B2 (en) 2013-10-15 2017-06-27 Mil Computing, Inc. Computer processor with deferred operations
US9916252B2 (en) 2015-05-19 2018-03-13 Linear Algebra Technologies Limited Systems and methods for addressing a cache with split-indexes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
CN101127606A (zh) * 2006-07-08 2008-02-20 国际商业机器公司 传输数据对象的方法和装置
CN101939749A (zh) * 2008-02-11 2011-01-05 Nxp股份有限公司 程序模糊方法和用于执行模糊程序的处理设备
US20140208027A1 (en) * 2009-03-03 2014-07-24 Qualcomm Incorporated Configurable cache and method to configure same
CN102439580A (zh) * 2009-03-20 2012-05-02 普林斯顿大学托管委员会 用于网络加速以及对高速缓存文件系统进行高效索引编制的系统及方法
US20140040541A1 (en) * 2012-08-02 2014-02-06 Samsung Electronics Co., Ltd. Method of managing dynamic memory reallocation and device performing the method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
J. CHANDARLAPATI: "LEMap: Controlling leakage in large chip-multiprocessor caches via profile-guided virtual address translation", 《2007 25TH INTERNATIONAL CONFERENCE ON COMPUTER DESIGN》 *
房骥: "基于多核CPU的软件无线电平台研发及应用技术研究", 《中国博士学位论文全文数据库 信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111372038A (zh) * 2018-12-26 2020-07-03 厦门星宸科技有限公司 多串流影像处理装置及方法
CN111372038B (zh) * 2018-12-26 2021-06-18 厦门星宸科技有限公司 多串流影像处理装置及方法

Also Published As

Publication number Publication date
US10585803B2 (en) 2020-03-10
WO2016185272A1 (en) 2016-11-24
KR20190135549A (ko) 2019-12-06
CN114924996A (zh) 2022-08-19
US20180260333A1 (en) 2018-09-13
KR102173474B1 (ko) 2020-11-04
KR102052256B1 (ko) 2019-12-04
US20160342521A1 (en) 2016-11-24
CN108139975B (zh) 2022-05-31
US10198359B2 (en) 2019-02-05
US9916252B2 (en) 2018-03-13
DE112016002247T5 (de) 2018-03-01
KR20180046917A (ko) 2018-05-09
EP3298496A1 (en) 2018-03-28
US20190251032A1 (en) 2019-08-15

Similar Documents

Publication Publication Date Title
US10055810B2 (en) Cache architecture for efficiently accessing texture data using buffers
JP5663009B2 (ja) 原画像をワープまたは回転させて表示する装置、その方法、そのコンピュータプログラムおよびそれを記録した記録媒体
CN106504181B (zh) 用于处理子图元的图形处理方法和系统
US7050063B1 (en) 3-D rendering texture caching scheme
CN108139975A (zh) 用于用分割索引对高速缓存进行寻址的系统和方法
TWI490779B (zh) 無鎖的先進先出裝置
CN106504184B (zh) 用于处理子图元的图形处理方法和系统
CN106127721A (zh) 用于显示由叠加图像层合成的混合图像的图形系统及方法
JP5039334B2 (ja) キャッシュメモリ制御方法、及び装置
US9942510B2 (en) Method and device for processing input image data
US20120212489A1 (en) Method and apparatus for tile based depth buffer compression
CN106201914A (zh) 一种基于指令和数据推送的处理器系统和方法
CN116010299B (zh) 一种数据处理方法、装置、设备及可读存储介质
CN115760545A (zh) 一种图形处理器中纹理缓存的并行寻址方法
WO2020073801A1 (zh) 一种3d图像处理中数据读写方法及系统、存储介质及终端
CN102804150B (zh) 数据处理装置、数据处理方法及数据共享系统
KR101106080B1 (ko) 데이터 저장 제어 장치, 데이터 저장 제어 방법 및 데이터 저장 제어 프로그램이 기록된 기록 매체
US9990288B2 (en) Information processing device and data structure
CN111538677A (zh) 数据处理方法及装置
JP2006268250A (ja) 画像処理装置および画像処理方法
JPS62216058A (ja) 情報処理装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220811

Address after: Schiphol-Lake, The Netherlands

Patentee after: Movidius Ltd.

Address before: Irish Dublin

Patentee before: LINEAR ALGEBRA TECHNOLOGIES LTD.