CN105138473A - 管理高速缓冲存储器的系统和方法 - Google Patents
管理高速缓冲存储器的系统和方法 Download PDFInfo
- Publication number
- CN105138473A CN105138473A CN201510268801.0A CN201510268801A CN105138473A CN 105138473 A CN105138473 A CN 105138473A CN 201510268801 A CN201510268801 A CN 201510268801A CN 105138473 A CN105138473 A CN 105138473A
- Authority
- CN
- China
- Prior art keywords
- data
- cache element
- cache
- request
- qualifier
- 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
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- 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/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及管理高速缓冲存储器的系统和方法。一种系统(500)包括第一和第二处理组件(508和510)、基于限定符的分离器组件(502)、第一和第二可配置高速缓冲存储器元件(514和516)以及仲裁器组件(504)。第一数据处理组件(508)生成针对存储器(520)内的第一位置处的第一部分数据的第一请求。第二数据处理组件(510)生成针对存储器(520)内的第二位置处的第二部分数据的第二请求。基于限定符的分离器组件(502)基于限定符路由第一请求和第二请求。第一可配置高速缓冲存储器元件(514)启用或禁用预取存储器(520)的第一区域内的数据。第二可配置高速缓冲存储器元件(516)启用或禁用预取存储器(520)的第二区域内的数据。仲裁器组件(504)将第一请求和第二请求路由到存储器(520)。
Description
背景技术
多媒体片上系统(SoC)是将计算机或电子多媒体系统的所有组件集成到单一芯片上的集成电路。传统的多媒体SoC通常包括用于图像捕获、图像处理、视频压缩/解压缩、计算机视觉、制图法和显示处理的硬件组件。由于SoC的低功耗,所以在移动电子市场非常常见。
在传统的多媒体SoC中,每个硬件组件访问和竞争共享主存储器(例如双倍数据速率(DDR)存储器)中的有限可用带宽。由于每个单独的硬件组件是计算密集且存储器带宽密集,所以满足各种多媒体的延迟和吞吐量要求对于SoC来说是困难的。这个问题将参考图1-4描述。
图1示出传统的多媒体SoC100。
如在图中示出的,多媒体SoC100包括主系统互连件102、次级互连件104、多个处理组件106、高速缓冲存储器116、主存储器118和外围设备120。多个处理组件106进一步包括主CPU108、音频组件110、次级CPU112和视频组件114。
主系统互连件102可操作以充当多媒体SoC100的主通信总线。主系统互连件102允许次级互连件104、主CPU108、音频组件110、次级CPU、视频组件114、高速缓冲存储器116或主存储器118中的任何一个将数据传送或传递给连接到主系统互连件102的任何另一组件。
次级互连件104可操作以经由双向线122与外围设备120通信。次级互连件104额外地可操作以经由双向线124与主系统互连件102通信。
主CPU108可操作以经由双向线126和主系统互连件102与多媒体SoC100的所有其他组件通信。主CPU108额外地可操作以经由双向线138与音频组件110通信。主CPU108还进一步可操作以处理来自高速缓冲存储器116或主存储器118的数据。
音频组件110可操作以经由双向线130和主系统互连件102与多媒体SoC100的所有其他组件通信。音频组件110还进一步可操作以处理来自高速缓冲存储器116或主存储器118的音频数据。
次级CPU112可操作以经由双向线132和主系统互连件102与多媒体SoC100的所有其他组件通信。次级CPU112额外地可操作以经由双向线134与视频组件114通信。
视频组件114可操作以经由双向线136和主系统互连件102与多媒体SoC100的所有其他组件通信。视频组件114还进一步可操作以处理来自高速缓冲存储器116或主存储器118的视频数据。
高速缓冲存储器116可操作以经由双向线138和主系统互连件102与多媒体SoC100的所有其他组件通信。高速缓冲存储器116可操作以经由双向线140与主存储器118通信。高速缓冲存储器116是系统级3(L3)存储器,其额外地可操作以存储在主存储器118中存储的音频和视频数据部分。
主存储器118可操作以经由双向线142和主系统互连件102与多媒体SoC100的所有其他组件通信。主存储器118是随机存取存储器(RAM),其可操作以存储多媒体SoC100的所有音频和视频数据。
外围设备120可操作以经由双向线122和次级互连件104与多媒体SoC100的所有其他组件通信。外围设备120额外地可操作以接收来自用户的输入从而指示传统的SoC100处理音频或视频数据。外围设备120还进一步可操作以显示音频或视频数据。
在传统的多媒体SoC中,每个处理组件通过注入唯一的业务模式从主存储器提取数据。例如,成像组件将主要地提取图像帧的栅格数据,而编解码器引擎将对提取视频帧的确定性和随机性块级执行混合。处理组件提取主存储器中的数据是缓慢的过程。由于更多的处理组件需要提取主存储器中的数据,业务模式变得更加复杂,而且满足针对给定使用情况的延迟和吞吐量要求对于SoC来说变得愈加困难。
为了减小延迟并增加吞吐量,传统的多媒体SoC使用系统级(L3)高速缓冲存储来减少主存储器中的数据需要访问的次数。高速缓冲存储器是小型专用存储器类型,其比SoC主存储器中使用的RAM更小和更快。高速缓冲存储器用于存储主存储器中频繁访问的数据的副本。当传统多媒体SoC的处理组件需要访问数据时,它首先检查高速缓冲存储器。如果高速缓冲存储器包含请求的数据(高速缓冲存储器命中(cachehit)),则该数据能够快速地直接从它在高速缓冲存储器中的位置读取,从而不需要提取主存储器中的数据。如果数据不在高速缓冲存储器中(高速缓冲存储器未命中(cachemiss)),那么不得不从主存储器提取数据。
当高速缓冲存储器未命中发生时,一旦从主存储器提取请求的数据,该数据被放置在高速缓冲存储器中。由于高速缓冲存储器通常都非常小,为了给新数据腾出空间,需要从高速缓冲存储器移出数据。通常,最近最少使用(LRU)算法用于确定哪些数据需要从高速缓冲存储器中移出。使用LRU算法,在高速缓冲存储器中的耗费最多时间而没有被访问的数据被移出。一旦被移出,由于高速缓冲存储器未命中而已经从主存储器中提取的数据被放到它的位置。
使用L3高速缓冲存储器不一定降低传统多媒体SoC的延迟和增加吞吐量。由于SoC具有很多访问高速缓冲存储器的处理组件,所以发生交叉颠簸(corssthrashing)。当太多处理组件试图同时使用SoC高速缓冲存储器时,发生交叉颠簸。
如果第一处理组件检测到高速缓冲存储器未命中,使用从主存储器得到的数据重写高速缓冲存储器。当第二处理组件检查高速缓冲存储器时,发生另一个高速缓冲存储器未命中,并且高速缓冲存储器再次使用来自主存储器的新数据重写。由于高速缓冲存储器中的所有数据都已经被第二处理组件重写,所以当第一处理组件检查高速缓冲存储器时,将发生另一个高速缓冲存储器未命中。以这种方式,由于每次每个处理组件检查高速缓冲存储器时检测到高速缓冲存储器未命中,因此高速缓冲存储器不断地被重写。
在操作中,考虑用户将指示外围设备120开始播放音频数据的情况。外围设备120将接着经由次级互连件104和主系统互连件102指示主CPU108需要播放音频数据。从外围设备120接收到需要播放音频数据的指令后,主CPU108经由双向线138指示音频组件110它需要开始处理将要播放的音频数据。音频组件110通知主CPU108它准备好开始处理音频数据,但是它一次仅能处理音频数据的一小部分。
此时,主CPU108需要定位将要由音频组件110处理的第一小部分音频数据。主CPU108首先检查将要处理的音频数据的一小部分是否位于高速缓冲存储器116中。主CPU108发现高速缓冲存储器116不包含需要的音频数据。由于高速缓冲存储器116不包含需要的音频数据,因此主CPU108接着定位主存储器118中的音频数据。
主CPU108定位将要处理的第一小部分音频数据以及剩下的将要播放的音频数据。主CPU108接着将将要处理的所有音频数据写入高速缓冲存储器116。在将音频数据写入高速缓冲存储器116之后,主CPU108将将要处理的第一小部分音频数据传输到音频组件110。
音频组件110接着处理音频数据,并经由主系统互连件102和次级互连件104将处理的数据传输到外围设备120。在将处理的数据传输到外围设备120之后,音频组件110指示主CPU108它准备好处理下一部分音频数据。主CPU108检查下一小部分音频数据是否位于高速缓冲存储器116中。主CPU108发现高速缓冲存储器116不包含下一小部分音频数据。
主CPU108将来自高速缓冲存储器116的数据传输到音频组件110以进行处理。再次,音频组件110处理音频数据,将处理的数据传输到外围设备120,并接着指示主CPU108它准备好下一小部分音频数据。传统多媒体SoC100将继续以这种方式操作直到随后的时间。
在一些时间之后,让用户指示外围设备120开始播放除当前播放的音频数据之外的视频数据。外围设备120将接着经由次级互连件104和主系统互连件102指示次级CPU112需要播放视频数据。从外围设备120接收到需要播放视频数据的指令后,次级CPU112经由双向线140指示视频组件114它需要开始处理将要播放的视频数据。视频组件114通知次级CPU112它准备好开始处理视频数据,但是它一次仅能处理一小部分视频数据。
此时,次级CPU112需要定位将要由视频组件114处理的第一小部分视频数据。次级CPU112首先检查将要处理的一小部分视频数据是否位于高速缓冲存储器116中。次级CPU112发现高速缓冲存储器116包含音频数据但不包含需要的视频数据。由于高速缓冲存储器116不包含需要的视频数据,次级CPU112接着定位主存储器118中的视频数据。
次级CPU112定位将要处理的第一小部分视频数据和剩下的将要播放的视频数据。次级CPU112接着将将要处理的所有视频数据写入高速缓冲存储器116。在将视频数据写入高速缓冲存储器116之后,次级CPU112将将要处理的第一小部分视频数据传输到视频组件114。
同时,音频组件110指示CPU108它已经完成处理一小部分音频数据并且准备好处理下一部分音频数据。主CPU108检查下一小部分音频数据是否位于高速缓冲存储器116中。主CPU108发现高速缓冲存储器116包含视频数据但不包含需要的音频数据。
由于主CPU108不能在高速缓冲存储器116中找到需要的音频数据,它必须在主存储器118中找到音频数据。从主存储器118而不是高速缓冲存储器116定位和提取需要的音频数据花很长时间,并且传统多媒体SoC100不再能够满足播放音频数据的延迟要求。为了满足播放音频数据的延迟要求,主CPU108使用需要的音频数据重写高速缓冲存储器116。
接下来,视频组件114处理来自次级CPU112的视频数据并经由主系统互连件102和次级互连件104将处理的数据传输到外围设备120。在将处理的视频数据传输到外围设备120之后,视频组件114指示次级CPU110它准备好处理下一小部分视频数据。
在被指示视频组件114准备好处理下一小部分视频数据之后,次级CPU112检查下一小部分视频数据是否位于高速缓冲存储器116中。由于高速缓冲存储器116正要由主CPU108使用音频数据重写,所以次级CPU112不会在高速缓冲存储器116中找到需要的视频数据。
由于次级CPU112不能在高速缓冲存储器116中找到需要的视频数据,它必须在主存储器118中找到视频数据。从主存储器118而不是高速缓冲存储器116中定位和提取需要的视频数据花费很长时间,并且传统多媒体SoC100不再能够满足播放视频数据的延迟要求。为了满足播放视频数据的延迟要求,次级CPU112接着使用需要的视频数据重写高速缓冲存储器116。
此时,交叉颠簸继续发生在传统多媒体SoC中。主CPU108和次级CPU112继续重写彼此在高速缓冲存储器116中的数据。由于高速缓冲存储器116继续被重写,主CPU108和次级CPU112被迫使继续从主存储器118提取数据。由于主CPU108和次级CPU112继续从主存储器118提取数据,传统多媒体SoC100不能够满足延迟要求。
此外,任意一次能够从主存储器118提取的数据量是有限的。由于交叉颠簸,主CPU108和次级CPU112两者被迫使从主存储器118提取数据。由于主存储器118的有限带宽,一个CPU在它可以开始提取自己的数据之前可能不得不等待另一个CPU完成提取数据,从而进一步增加了延迟和降低了吞吐量。
一种处理交叉颠簸的方法是使用分区高速缓冲存储器(partitionedcache)。在分区高速缓冲存储器中,传统多媒体SoC的每个处理组件具有指定的高速缓冲存储器部分供使用。高速缓冲存储器分区减少了交叉颠簸,这是由于每个处理组件仅能够重写它自己指定的高速缓冲存储器部分。高速缓冲存储器分区需要在传统多媒体SoC中不可行的大的高速缓冲存储器,这是由于随着高速缓冲存储器大小增加,提取高速缓冲存储器中的数据变得更加缓慢。
块编码是视频编码期间使用的技术,用于在称为宏块(macroblock,MB)的离散块中编码数据。MB通常由4x4、8x8或16x16像素样本的阵列组成,该阵列可以进一步细分为有待在块解码过程期间使用的若干不同类型的块。在每个MB都被编码之后,它紧挨着之前编码的MB存储在存储器中。
环路滤波器(LPF)是应用于解码压缩视频的滤波器,在使用块编码/解码技术时环路滤波器通过平滑MB之间能够形成的锐利边缘来改善视觉质量和预测性能。在块解码期间,LPF可以按顺序访问和解码来自主存储器的每个MB,并接着使用MB来预测将需要从主存储器提取和解码的下一个MB。
处理组件访问传统多媒体SoC的主存储器中的数据的示例现在将额外参考图2-3描述。
图2示出在粒度级(agranularlevel)处针对H264视频解码的LPF的存储器地址分配的图表200。
如在图中示出的,图表200包括Y-轴线202、X-轴线204、MB块206、MB块208和MB块210。MB块206进一步包括MB212、MB214和MB216。MB块208进一步包括MB218、MB220和MB222。MB块210进一步包括MB224、MB226和MB228。
Y-轴线202表示存储器地址。X-轴线204表示时间。
MB块206表示从时间t0到时间t1由LPF访问的所有单独的MB块。MB块208表示从时间t1到时间t2由LPF访问的所有单独的MB块。MB块210表示超过时间t2由LPF访问的所有单独的MB块。
MB212、MB214、MB216、MB218、MB220、MB222、MB224、MB226和MB228每个都表示针对正由LPF处理的MB块的数据存储在主存储器中的地址范围。
MB212、MB214、MB216、MB218、MB220、MB222、MB224、MB226和MB228中的每个的数据被存储在主存储器中地址0和地址100之间。在时间t0,LPF被指示解码MB块206。LPF接着开始解码第一MB,即MB212。
在解码时,LPF需要的MB块212的数据在时间t0和时间t0+1之间、地址20和地址60之间提取。接下来LPF使用MB212预测需要解码的下两个MB块是MB214和MB216。LPF接着在时间t0+1和时间t0+2之间解码MB块214,在此期间,在地址20和地址60之间访问解码块MB214需要的数据。最终,在解码MB214之后,LPF在时间t0+2和时间t1之间以相同的方式解码MB216,在此期间,在地址20和地址60之间访问解码块MB214需要的数据。
在时间t1,在完成解码MB块206中的每个MB之后,LPF被指示接下来解码MB块208。再次,LPF通过解码MB块208的第一MB(其是MB218)开始。LPF在时间t1和时间t1+1之间解码MB218。在解码时,LPF使用MB218预测需要解码的下两个MB是MB220和MB222。接下来,LPF在时间t1+1和时间t1+2之间解码MB220,以及在时间t1+2和时间t2之间解码MB222。
在解码MB218、MB220和MB222之后,LPF被指示解码下一个MB,其为MB224。如上所述,LPF使用MB224预测接下来哪些MB需要解码,以及接着在主存储器中它们的地址处提取所有MB。一旦提取,LPF解码MB并等待进一步指令。
访问主存储器中的每个MB是非常带宽密集的。在LPF访问主存储器中的不同位置的多个MB时由于MB解码预测增加了带宽。将包含当前将要解码的MB的整个MB块写到高速缓冲存储器中将会减少主存储器正被使用的带宽。使用高速缓冲存储器,LPF将仅仅需要从主存储器提取MB块一次,以及接着能够从高速缓冲存储器提取每个单独的MB。
块运动补偿(blockmotioncompensation)是一种鉴于先前的帧和/或未来的帧、通过考虑摄像机和/或视频中的物体的运动用于预测视频中的帧的算法技术。块运动补偿利用这样一种事实,即对于视频中的很多帧来说,两个相邻帧之间的差别仅在于摄像机运动或帧中物体移动。使用运动补偿,视频流将包含一些用作参考的全帧,参考帧之间唯一需要存储的信息将是需要将之前的帧转换为下一帧的信息。类似于块编码/解码,块运动补偿使用大小为4x4、8x8或16x16像素的MB。
图3示出针对H264解码器的运动补偿器的存储器地址分配的图表300。
如图中所示,图表300包括Y-轴线302、X-轴线304、MB306、MB308、MB310、MB312、MB314和MB316。
Y-轴线302表示存储器地址。X-轴线304表示时间。
MB306、MB308、MB310、MB312、MB314和MB316每个都表示特定MB的数据存储在存储器中的地址范围。
在操作中,在时间t0,运动补偿器被指示补偿两个帧之间的运动。此时,运动补偿器通过处理MB306开始补偿运动。在处理MB306时,运动补偿器在时间t0和时间t1之间提取存储在主存储器中的地址20和地址70之间的数据。在处理MB306之后,运动补偿器需要处理MB308以便继续补偿两个帧之间的运动。从时间t1和时间t2,运动补偿器处理MB308,在此期间,提取存储器地址30和存储器地址80之间的数据。
运动补偿器继续处理MB310、MB312、MB314和MB316中的每个。如上所述,运动补偿器通过提取和处理每个MB边界内的地址处存储的数据来处理每个MB。
类似于图2的LPF,运动补偿器从主存储器访问运动补偿需要的所有MB是非常带宽密集的。将每个MB写入到高速缓冲存储器将会减少使用的主存储器带宽。由于各个MB都被使用若干次从而将一个参考MB转换为另一个,因此能够使用具有LRU策略的高速缓冲存储器。使用LRU策略,通过仅仅移出自使用以来经过最长持续时间的MB,将会降低高速缓冲存储器未命中。
图2的LPF和图3的运动补偿器两者都从主存储器的不同部分提取不同类型的数据。用于不同处理组件的数据的位置现在将在图4中描述。
图4示出针对多个处理组件的主存储器地址分配的图表400。
如图中所示,图表400包括Y-轴线402、X-轴线404、存储器地址部分406、存储器地址部分408和存储器地址部分410。
Y-轴线402表示存储器地址。X-轴线404表示时间。
存储器地址部分406表示LPF使用的所有数据的地址。存储器地址部分408表示运动补偿器使用的所有数据的地址。存储器地址部分410表示成像组件使用的所有数据的地址。
在操作中,LPF使用的所有数据位于存储器地址部分406内的地址。当LPF需要从主存储器提取数据时,其总是从存储器地址部分406内的地址提取数据。LPF将不从存储器地址部分408或存储器地址部分410提取数据。
类似地,运动补偿器使用的所有数据位于存储器地址部分408内的地址,而成像组件使用的所有数据位于存储器地址部分410内的地址。运动补偿器将不从存储器地址部分406或存储器地址部分410提取数据,而成像组件将不从存储器地址部分406或存储器地址部分408提取数据。
图4还可以用于进一步示出传统多媒体SoC中的处理组件的交叉颠簸。由于数据由多个处理组件从地址部分406、地址部分408或地址部分410之一提取,因此高速缓冲存储的数据将不断地被移出以便为新提取的数据腾出空间。多个处理组件从存储器提取数据将不断地重写高速缓冲存储器,从而产生交叉颠簸。
提取多媒体SoC上的数据的传统系统和方法的一个问题在于当多个处理组件正使用单个高速缓冲存储器时发生交叉颠簸。每次发生高速缓冲存储器未命中,产生高速缓冲存储器未命中的处理组件使用从主存储器提取的数据重写高速缓冲存储器。当另一个处理组件试图访问高速缓冲存储器中的数据时,由于高速缓冲存储器刚刚被重写而发生高速缓冲存储器未命中。
多个处理组件使用单个高速缓冲存储器不仅产生交叉颠簸,还需要每个组件从主存储器提取数据。处理组件不断地从传统多媒体SoC的主存储器提取数据增加了延迟并且降低了吞吐量。
提取多媒体SoC上的数据的传统系统和方法的另一个问题在于分区高速缓冲存储器是不实际的。传统分区高速缓冲存储器非常大,由于高速缓冲存储器的速度随着高速缓冲存储器大小增加而降低,这对于传统多媒体SoC是不利的。传统分区高速缓冲存储器的大小减少了交叉颠簸,但是由于它们的大小和速度,当相比于从主存储器提取数据时没有益处。
从多媒体SoC的主存储器提取数据的传统系统和方法的另一个问题在于主存储器的有限带宽。随着更多组件从主存储器提取数据,更多的带宽被占用。有限的主存储器带宽限制了一次能够从主存储器提取的数据量,这增加了延迟并且降低了吞吐量。
需要一种在存在多媒体SoC的情况下使用高速缓冲存储器的系统和方法,其中多媒体SoC在不增加延迟或降低吞吐量的情况下消除交叉颠簸。
发明内容
本发明提供了一种在存在多媒体Soc的情况下使用高速缓冲存储器的系统和方法,其中多媒体SoC在不增加延迟或降低吞吐量的情况下消除交叉颠簸。
本发明的各个方面涉及一种系统,其包括第一和第二处理组件、基于限定符的分离器组件、第一和第二可配置高速缓冲存储器组件和仲裁器组件。第一数据处理组件生成针对存储器内的第一位置处的第一部分数据的第一请求。第二数据处理组件生成针对存储器内的第二位置处的第二部分数据的第二请求。基于限定符的分离器组件基于限定符路由第一请求和第二请求。第一可配置高速缓冲存储器组件启用或禁用预取存储器的第一区域内的数据。第二可配置高速缓冲存储器组件启用或禁用预取存储器的第二区域内的数据。仲裁器组件路由第一请求和第二请求到存储器。
本发明的额外的优势和新颖性特征部分在后面的说明书中阐述,以及在审查本发明下面的内容后,部分对本领域技术人员将变得明显或可以从本发明的实践中获悉。本发明的优势可以通过所附权利要求书中特别指出的手段和组合实现和得到。
附图说明
并入本说明书并成为本说明书的一部分的附图示出了本发明的示例实施例,并且和说明书一起用于解释本发明的原理。在附图中:
图1示出传统多媒体SoC;
图2示出粒度级处针对H264视频解码的LPF的存储器地址分配的图表;
图3示出针对H264解码器的运动补偿器的存储器地址分配的图表;
图4示出针对多个处理组件的主存储器地址分配的图表;
图5示出根据本发明的各个方面的多媒体SoC;
图6示出根据本发明的各个方面作为多媒体SoC的运动补偿的带宽减少的测量值的高速缓冲存储器的前后像素与像素之间比率的图表;以及
图7示出根据本发明的各个方面多媒体SoC的运动补偿的每帧重新提取的次数的图表;以及
图8示出根据本发明的各个方面的针对多媒体SoC中的运动补偿的各个大小的高速缓冲存储器的存储器带宽使用的图表。
具体实施方式
本发明提供了一种使用基于限定符的分离器、可配置高速缓冲存储器和仲裁器来减少多媒体SoC的多个处理组件的交叉颠簸、延迟并增加吞吐量的系统和方法。
根据本发明的第一方面,基于限定符的分离器用于基于限定符(例如,存储器地址、事务类型和主标识符)路由来自处理组件的事务。基于限定符的分离器能够被动态地配置以便将处理组件事务路由到指定高速缓冲存储器。基于限定符的分离器还能够将不是高速缓冲存储器友好(friendly)的事务直接路由到仲裁器。
使用基于限定符的分离器允许将事务路由到最适于处理给定类型事务的高速缓冲存储器。由于高速缓冲存储器可以被配置并最优化为符合特定处理组件或事务类型的需求,将事务路由到已经被配置为符合特定处理组件或事务类型的需要的高速缓冲存储器的能力降低了给定处理组件的交叉颠簸和延迟并且增加了吞吐量以及多媒体SoC的总体性能。
根据本发明的第二方面,可配置高速缓冲存储器能够动态地被重新配置为适应来自处理组件的特定类型的事务。可配置高速缓冲存储器能够被配置为预取启用或禁用的以及高速缓冲存储器通写(wirtethrough)或高速缓冲存储器回写(writeback)模式。使用能够动态地被重新配置的高速缓冲存储器允许高速缓冲存储器的高速缓冲存储器命中/未命中率、速度和事务类型指定被最优化,从而减少数据必须从多媒体SoC的主存储器提取的次数。使用可配置高速缓冲存储器降低了与从主存储器提取数据的处理组件相关的延迟,同时增加了主存储器的可用带宽。
预取是一种用于通过减少等待时间加速SoC的技术。由于SoC上的硬件比存储数据的存储器更快,数据不能被足够快速地提取以保持硬件繁忙。预取是在数据实际需要之前被请求的时候。一旦数据从存储器提取,其被存储在高速缓冲存储器中。当接着需要数据时,数据能够快速地从高速缓冲存储器读取,从而防止硬件停止。预取启用的高速缓冲存储器能够预取数据,而预取禁用的高速缓冲存储器不能预取数据。
通写高速缓冲存储是一种将数据写入到高速缓冲存储器的方法。在通写高速缓冲存储器中,数据被同时写入到高速缓冲存储器和存储器中。通写高速缓冲存储器是安全的,但是由于写入到存储器而经历延迟。
回写高速缓冲存储是另一种将数据写入高速缓冲存储器的方法。在回写高速缓冲存储器中,数据仅在系统启动时写入到高速缓冲存储器。数据仅从高速缓冲存储器写入到存储器,直到高速缓冲存储器中的数据被修改或移出。回写高速缓冲存储没有通写安全,但是由于减少了数据需要写入到存储器的次数,回写高速缓冲存储降低了延迟。
在两个或更多个处理组件之间共享的数据需要使用通写高速缓冲存储来维持数据相干性。如果一个处理元件使用回写高速缓冲存储器,而另一个元件使用通写高速缓冲存储器,使用通写高速缓冲存储器的处理元件可以在回写高速缓冲存储器不得不将数据写入存储器之前多次写数据到存储器。在这种情况下,使用存储在回写高速缓冲存储器中的数据的处理组件可以不使用通写高速缓冲存储器写入的最新数据,从而导致数据消相干。
每个可配置高速缓冲存储器还能够被配置为具有用于移出出数据的替换策略。任何已知类型的替换策略可以根据本发明的各个方面实施,这些策略中的非限制性示例包括最近最少提取(LRF)策略、最近最少使用(LRU)策略或伪最近最少使用(PLRU)策略。
在LRU替换策略中,基于自从最后一次数据被使用以来经过的时间量移出数据。已经在高速缓冲存储器中时间最长但是没有被处理组件访问的数据被移出。LRU替换策略成本昂贵,这是因为它需要跟踪高速缓冲存储器中的每行数据的访问时间,数据接着需要被分类和选择以用于移出。
除了数据被选择用于不同地移出之外,PLRU替换策略类似于LRU策略。在PLRU策略中,每个数据片的访问时间仍被跟踪,但是不是移出经历最长时间而未被访问的数据片,而是移出经历最长时间的若干数据片之一。例如,PLRU可以移出在预定时间内未被访问的任一数据片,或者可以移出经历最长时间而未被访问的10个数据片中的任何一个数据片。
根据本发明的各个方面,可配置高速缓冲存储器可以实施LRU替换策略以便基于自从数据第一次被提取以来已经经过的时间量移出数据。LRF策略在数据递增地从地址提取时是有利的。当数据递增地从地址提取时,例如,第一数据片由处理组件提取并使用,一旦完成后,提取第二数据片。一旦第二数据片已经提取,第一数据片不再使用或需要再次提取。以这种方式,LRF策略能够容易地使用环形缓冲器来实施。
在多媒体中,数据通常被递增地提取。例如,视频数据按顺序存储在存储器中。由于视频数据被逐行处理,一旦用于帧的数据已经被处理,它能够从高速缓冲存储器移出从而为下一帧的数据腾出空间,这使得LRF策略适于SoC的多媒体处理组件。
由于LRU和PLRU替换策略需要的成本和功率,它们最适于与CPU和处理器工作负荷一起使用。
使用基于限定符的分离器和可配置高速缓冲存储器改善多媒体SoC的延迟和吞吐量,并且还减少交叉颠簸和使用的存储器带宽。
根据本发明的各个方面的示例系统现在将参考图5-7描述。
图5示出根据本发明的第一方面和第二方面的多媒体SoC500。
如图中所示,多媒体SoC500包括基于限定符的分离器502、仲裁器504、控制组件506、多个处理组件(其样本被指示为处理组件508、处理组件510和处理组件512)、多个可配置高速缓冲存储器(其样本被指示为可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518)、多个存储器(其样本被指示为存储器520、存储器522和存储器524)、数据521、数据523、数据525和旁路通路538。控制组件506进一步包括控制器532、控制器534和控制器536。
基于限定符的分离器502可操作以经由双向线540接收来自处理组件508的事务请求,从而接收来自可配置高速缓冲存储器之一的数据。类似地,基于限定符的分离器502可操作以经由双向线542接收来自处理组件510的事务请求,从而接收来自可配置高速缓冲存储器之一的数据。此外,基于限定符的分离器502可操作以经由对应的双向线接收来自任何处理组件的事务请求(例如,经由双向线544接收来自处理元件512的事务请求)。最终,基于限定符的分离器502可操作以经由对应的双向线将数据传输到任何处理组件。
基于限定符的分离器502额外地可操作以基于限定符经由双向线546将来自任何处理组件的事务请求路由到可配置高速缓冲存储器514。类似地,基于限定符的分离器502额外地可操作以基于限定符经由双向线546将来自任何处理组件的事务请求路由到可配置高速缓冲存储器514。最终,基于限定符的分离器502额外地可操作以基于限定符经由对应的双向线将来自任何处理组件的事务请求路由到任何剩余的可配置高速缓冲存储器(例如,基于限定符经由双向线546路由到可配置高速缓冲存储器514)。限定符可以基于地址范围、事务类型、主标识符或其组合。
基于限定符的分离器502还进一步可操作以由控制组件506的控制器532经由线路564动态地配置。
仲裁器504可操作以经由双向线552接收从可配置高速缓冲存储器元件514转发的事务请求,经由双向线554接收从可配置高速缓冲存储器516转发的事务请求;仲裁器504可操作以经由双向线556接收从可配置高速缓冲存储器元件518转发的事务请求;以及仲裁器504可操作以经由旁路通路538接收来自基于限定符的分离器502的事务请求。
仲裁器504额外地可操作以将转发的事务请求或基于负载共享策略的事务请求经由双向线558路由到存储器520、经由双向线560路由到存储器522或经由双向线562到存储器524中的任何一个。仲裁器504还进一步可操作以由控制组件506的控制器536经由线路568动态地配置。
处理组件508可操作以经由双向线540将针对存储器520的数据521、存储器522的数据523或存储器524的数据525的事务请求传输到基于限定符的分离器502。处理组件510可操作以经由双向线542将针对存储器520的数据521、存储器522的数据523或存储器524的数据525的事务请求传输到基于限定符的分离器502。处理组件512可操作以经由双向线544将针对存储器520的数据521、存储器522的数据523或存储器524的数据525的事务请求传输到基于限定符的分离器502。
处理组件508、处理组件510和处理组件512中的每个可操作以基于之前传输的事务请求经由基于限定符的分离器502接收存储器520的数据521、存储器522的数据523或存储器524的数据525之一。
如果存在高速缓冲存储器命中,可配置高速缓冲存储器514可操作以经由双向线546将事务传输回基于限定符的分离器502,或者如果存在高速缓冲存储器未命中,经由双向线552将事务请求转发到仲裁器504。
在这个示例实施例中,可配置高速缓冲存储器514可进一步操作以包含回写和预取禁用的高速缓冲存储器元件和可配置高速缓冲存储器替换策略。可配置高速缓冲存储器514还进一步可操作以基于其预取元件的状态启用或禁用预取存储器520、存储器522或存储器524之一的数据。
如果存在高速缓冲存储器命中,可配置高速缓冲存储器516可操作以经由双向线548将事务传输回基于限定符的分离器502,或者如果存在高速缓冲存储器未命中,经由双向线554将事务请求转发到仲裁器504。
可配置高速缓冲存储器516进一步可操作以包含通写和预取禁用的高速缓冲存储器元件。可配置高速缓冲存储器516还进一步可操作以基于其预取元件的状态启用或禁用预取存储器520、存储器522或存储器524之一的数据。
可配置高速缓冲存储器518可操作以经由双向线550接收来自基于限定符的分离器502的事务请求。如果存在高速缓冲存储器命中,可配置高速缓冲存储器518额外地可操作以将事务传输回基于限定符的分离器502,或者如果存在高速缓冲存储器未命中,经由双向线556将事务请求转发到仲裁器504。
可配置高速缓冲存储器518进一步可操作以包含预取启用的高速缓冲存储器元件。可配置高速缓冲存储器518还进一步可操作以启用或禁用预取存储器520、存储器522或存储器524之一的数据。
可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518中的每个都可操作以经由线路566由控制组件506的控制器534动态地配置。在这个示例实施例中,可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518中的每个都额外地可操作以具有LRF替换策略。
存储器520可操作以经由双向线558接收来自仲裁器504的事务请求或者将数据521传输到仲裁器504。存储器522可操作以经由双向线560接收来自仲裁器504的事务请求或者将数据523传输到仲裁器504。存储器524可操作以经由双向线562接收来自仲裁器504的事务请求或者将数据525传输到仲裁器504。
存储器520额外地可操作以存储数据521。存储器522额外地可操作以存储数据523。存储器524额外地可操作以存储数据525。
数据521位于开始于存储器520的地址527。数据523位于开始于存储器522的地址529。数据525位于开始于存储器524的地址531。
控制器532可操作以经由线路564动态地配置基于限定符的分离器502。控制器534可操作以经由线路566动态地配置可配置高速缓冲存储器514、可配置高速缓冲存储器516或可配置高速缓冲存储器518中的每个。控制器536可操作以经由线路568动态地配置仲裁器504。
旁路通路538可操作以允许基于限定符的分离器502绕过可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518,并将事务请求直接传输到仲裁器504。旁路通路538额外地可操作以允许仲裁器504绕过可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518,并将事务直接传输到基于限定符的分离器502。
这个示例实施例包括处理组件、可配置高速缓冲存储器和存储器的三个单独的实例。需要的实例的数量不需要与实际中完全相同。在一些实施例中,可能仅有单个处理组件、5个可配置高速缓冲存储器和单个存储器。在其他实施例中,可能有10个处理组件、15个可配置高速缓冲存储器和4个存储器。
在这个示例中,基于限定符的分离器502、仲裁器504、处理组件508、处理组件510、处理组件512、可配置高速缓冲存储器514、可配置高速缓冲存储器516、可配置高速缓冲存储器518、存储器520、存储器522、存储器524、控制器532、控制器534和控制器536示出为单独的设备。然而,在一些实施例中,基于限定符的分离器502、仲裁器504、处理组件508、处理组件510、处理组件512、可配置高速缓冲存储器514、可配置高速缓冲存储器516、可配置高速缓冲存储器518、存储器520、存储器522、存储器524、控制器532、控制器534和控制器536中的至少两个可以被组合为单一设备。此外,在一些实施例中,基于限定符的分离器502、仲裁器504、处理组件508、处理组件510、处理组件512、可配置高速缓冲存储器514、可配置高速缓冲存储器516、可配置高速缓冲存储器518、存储器520、存储器522、存储器524、控制器532、控制器534和控制器536中的至少一个可以实施为具有有形计算机可读介质的计算机,所述有形计算机可读介质用于携带或具有存储于其上的计算机可执行指令或数据结构。这种有形计算机可读介质能够是由通用或专用计算机访问的任何可用的介质。有形计算机可读介质的非限制性示例包括物理存储装置和/或存储器介质(例如,RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁性存储设备)或能够用于携带或存储计算机可执行指令或数据结构形式的期望的程序代码手段并且能够由通用或专用计算机访问的任何其他介质。对于通过网络或其他通信连接件(硬接线的、无线的或硬接线的或无线的组合)转移到或提供给计算机的信息,计算机可以合理地将该连接件视为计算机可读介质。因此,任何这种连接件可以合理地称为计算机可读介质。上述组合也应当被包括在计算机可读介质的范围内。
在操作中,考虑处理组件508经由双向线540将针对数据521的事务请求传输到基于限定符的分离器502的情况。在接收到事务请求之后,基于限定符的分离器502将确定将请求路由到哪里。在这个非限制性示例实施例中,基于限定符的分离器502基于事务请求的主标识符确定将事务请求路由到哪里。在其他示例实施例中,基于限定符的分离器502可以基于地址范围、事务类型、主标识符或其组合确定将事务请求路由到哪里。
基于限定符的分离器502发现事务请求的主标识符对应于处理组件508。基于限定符的分离器502接着将事务请求路由到对应于处理组件508的高速缓冲存储器中,在这个示例实施例中该高速缓冲存储器是可配置高速缓冲存储器514。一旦经由双向线546接收到事务请求,可配置高速缓冲存储器514检查以查看它是否包含数据521。可配置高速缓冲存储器514发现它不包含数据521,接着经由双向线558将事务请求转发给仲裁器504。
一旦仲裁器504接收到事务请求,它检查事务请求中数据的地址以便确定它应当被路由到哪里。在检查之后,仲裁器504确定事务请求应当经由双向线558被路由到存储器520。
一旦存储器520接收到事务请求,它提取地址527处的数据521。一旦提取,数据521被传输回仲裁器504。仲裁器504接着将数据521传输到可配置高速缓冲存储器514,其接着写数据521。此时,数据521经由基于限定符的分离器502被传输回处理组件508。接下来,处理组件508处理数据521。
在处理数据521之后,数据521需要写入存储器520。处理组件508接着传输处理的数据521和事务请求到基于限定符的分离器502。再次,基于限定符的分离器502检查事务请求并确定事务请求和处理的数据521应当被传输到可配置高速缓冲存储器514。
可配置高速缓冲存储器514检查是否在不需要移出数据的情况下具有可用于写入处理的数据521的充足的空间。可配置高速缓冲存储器514发现有可用空间并写入处理的数据521。由于可配置高速缓冲存储器514是回写高速缓冲存储器,写入高速缓冲存储器的新数据没有传输到存储器520用于写入,直到数据被移出。此时,来自处理组件508的针对数据521的所有事务请求能够由可配置高速缓冲存储器514满足。
一些时间之后,处理组件508将针对数据523的事务请求传输到基于限定符的分离器502。如上所述,基于限定符的分离器502确定将事务请求路由到可配置高速缓冲存储器514。可配置高速缓冲存储器514发现它不包含数据523,并将事务请求转发到仲裁器504。
一旦仲裁器504接收到事务请求,仲裁器504检查事务请求中的数据的地址以便确定事务请求应当被路由到哪里。在检查之后,仲裁器504确定事务请求应当经由双向线560路由到存储器522。
在接收到事务请求之后,存储器520提取地址529处的数据523。在从存储器522提取之后,数据523被传输回可配置高速缓冲存储器514。可配置高速缓冲存储器514确定其具有充足的空间以写入处理的数据521和数据523。可配置高速缓冲存储器514接着写入数据523,其中数据523被接着转发到处理组件508。
处理组件508接着处理数据523。在处理之后,处理的数据523需要被写入存储器522。处理组件508接着将处理的数据523和事务请求传输到基于限定符的分离器502。再次,基于限定符的分离器502检查事务请求并确定事务请求和处理的数据523应当被传输到可配置高速缓冲存储器514。
可配置高速缓冲存储器514检查在不移出数据的情况下是否有足够可用空间用于写入处理的数据523。可配置高速缓冲存储器514发现在不首先移出处理的数据526的情况下,其不能写入处理的数据528。可配置高速缓冲存储器514接着将事务请求和处理的数据526传输到仲裁器504。仲裁器504将事务请求和处理的数据526路由到存储器520。一旦接收,存储器520使用处理的数据521重写地址527处的数据521。
同时,在将事务请求和处理的数据526传输到仲裁器504之后,可配置高速缓冲存储器514移出处理的数据526。在移出处理的数据526之后,可配置高速缓冲存储器514接着写入处理的数据528。
在这个时间,来自处理组件508的针对数据523的所有事务请求能够由可配置高速缓冲存储器514满足。由于可配置高速缓冲存储器514是回写高速缓冲存储器,存在非常少的调用以将存储的数据回写到其在存储器中的位置。低数量的存储器调用减少了延迟,这允许处理组件508满足所有的延迟和吞吐量要求。
在随后的时间,处理组件510将经由双向线542将针对数据523的事务请求传输到基于限定符的分离器502。基于限定符的分离器502发现事务请求的主标识符对应于处理组件510。基于限定符的分离器502接着将事务请求路由到对应于处理组件510的高速缓冲存储器,在这个示例实施例中该高速缓冲存储器为可配置高速缓冲存储器516。
一旦经由双向线548接收到事务请求,可配置高速缓冲存储器516检查以查看其是否包含数据523。可配置高速缓冲存储器516发现其不包含数据523并接着经由双向线560将事务请求转发到仲裁器504。
在接收到事务请求之后,仲裁器504检查事务请求中的数据地址以便确定事务请求应当被路由到哪里。在检查之后,仲裁器504确定事务请求应当经由双向线560路由到存储器522。
存储器522接收事务请求,并提取地址529处的数据523。一旦提取,数据523就被传输回仲裁器504。仲裁器504接着将数据523传输到可配置高速缓冲存储器516,其接着写入数据523。在被写入之后,可配置高速缓冲存储器516经由基于限定符的分离器502将数据523传输到处理组件510。处理组件510接着处理数据523。
在数据523处理之后,它需要被写入存储器522。处理组件510接着将处理的数据523和事务请求传输到基于限定符的分离器502。再次,基于限定符的分离器502检查事务请求并确定事务请求和处理的数据523应当被传输到可配置高速缓冲存储器516。
可配置高速缓冲存储器516检查在不移出数据的情况下是否有充足可用的空间用于写入处理的数据523。可配置高速缓冲存储器516发现有可用的空间并写入处理的数据523。由于可配置高速缓冲存储器516是通写高速缓冲存储器,写入高速缓冲存储器的新数据总是被传输到存储器用于写入。可配置高速缓冲存储器516将处理的数据523传输到仲裁器504。仲裁器504接着将处理的数据523传输到存储器522,其中在存储器522中使用处理的数据523重写地址529处的数据523。
此时,来自处理组件510的数据523的所有事务请求能够由可配置高速缓冲存储器516满足。由于可配置高速缓冲存储器516是通写高速缓冲存储器,写入高速缓冲存储器的新数据同样总是被写入其在存储器器中的位置。写入数据到存储器是缓慢的,如果处理组件510传输另一个需要从存储器提取数据的事务请求,可配置高速缓冲存储器516将不能处理该请求。
由于存储器的有限带宽,数据不能同时写入存储器并从存储器提取。存储器在提取下一个事务请求的数据之前必须首先写入新的数据。由于对通写高速缓冲存储器存在大量的调用,延迟明显增加,而处理组件510不能满足其吞吐量要求。
可配置高速缓冲存储器514和可配置高速缓冲存储器516初始是预取禁用的,因此数据不能提前从存储器得到。因为处理组件510不能满足由于可配置高速缓冲存储器516的通写过程而导致的吞吐量要求,控制器534针对可配置高速缓冲存储器516经由线路566启用预取数据。
随着预取启用,可配置高速缓冲存储器516可以提前为处理组件510提取大数据部分。来自处理组件510、被写入到可配置高速缓冲存储器516的数据将仍然不得不被写入到存储器,但是新的事务请求将能够使用预取的数据进行处理,从而降低与等待从存储器提取数据相关的延迟。
在另一个非限制性示例实施例中,代替启用预取可配置高速缓冲存储器的数据,控制器532能够经由线路564已经配置基于限定符的分离器502,从而将来自处理组件510的事务请求路由到可配置高速缓冲存储器518,高速缓冲存储器518具有已启用的预取数据。在这个示例实施例中,在经由双向线550接收到来自基于限定符的分离器502的事务请求之后,可配置高速缓冲存储器518将检查其是否包含与事务请求相关的数据。
如果可配置高速缓冲存储器518发现其没有包含该数据,其将经由双向线562将事务请求转发到仲裁器504。如上所述,仲裁器504将接着将事务请求路由到存储器522。提取的数据将接着被传输回并写入到可配置高速缓冲存储器518。此时,可配置高速缓冲存储器518会将数据传输回处理组件510,并且可配置高速缓冲存储器518将能够满足来自处理组件510的事务请求。
在又一个非限制性示例实施例中,处理组件512将针对数据525的事务请求经由双向线544传输到基于限定符的分离器502。如上所述,基于限定符的分离器502根据事务请求的主标识符确定请求的数据不是高速缓冲存储器友好的。
在确定事务请求不适于与高速缓冲存储器一起使用时,基于限定符的分离器502经由旁路通路538将事务请求直接路由到仲裁器504。接下来,仲裁器504基于事务请求中的数据的地址经由双向线562将事务请求路由到存储器524。
存储器524接收事务请求,并且提取地址531处的数据525。一旦提取,数据525被传输回仲裁器504。仲裁器504接着经由旁路通路538将数据525传输到基于限定符的分离器502。基于限定符的分离器502接着将数据525传输到处理组件512。由于旁路通路538用于事务请求,数据530没有被存储在高速缓冲存储器中,并且必须每次需要它时从存储器524提取。
在上面的实施例中,可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518中的每个可操作用于提取和写入来自存储器520、存储器522或存储器524中的任何一个的数据。在其他非限制性示例实施例中,多媒体SoC可能仅需要单个存储器。在这种情况下,可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518将会提取和写入数据到相同的存储器。
在这个示例实施例中,单个存储器可能被分区,从而允许可配置高速缓冲存储器514、可配置高速缓冲存储器516和可配置高速缓冲存储器518提取和写入数据到单个存储器的它们指定部分用于使用。
在另一个非限制性示例实施例中,控制器536可以经由线路568配置仲裁器504,以便基于事务请求地址范围、事务类型、主标识符或其组合将事务请求路由到单个存储器。
根据本发明的各个方面的多媒体SoC的仿真结果现在将参考图6-8讨论。
图6示出根据本发明的各个方面作为多媒体SoC的运动补偿的带宽减少的测量值的高速缓冲存储器的前后像素与像素之间的比率的图表600。
如图中所示,图表600包括Y-轴线602、X-轴线604、线606、线608和线610。
Y-轴线602表示像素与像素之间的比率。X-轴线604表示帧。像素与像素之间的比率是每帧每像素需要多少字节的测量值。
线606表示根据本发明的各个方面的具有64KB高速缓冲存储器的多媒体SoC。线608表示根据本发明的各个方面的具有16KB高速缓冲存储器的多媒体SoC。线606表示根据本发明的各个方面的具有8KB高速缓冲存储器的多媒体SoC。
在操作中,由于初始帧仍在被处理,因此不存在与帧1到帧2的不同高速缓冲存储器大小相关的增益。然而,在帧2处,新的帧被处理并且需要两个帧之间的运动补偿。如图表600所示,64KB的两个帧之间需要补偿的字节的数量远低于16KB高速缓冲存储器需要补偿的字节的数量,并且几乎是8KB高速缓冲存储器需要补偿的字节的数量的一半。
图7示出根据本发明的各个方面用于多媒体SoC的运动补偿的每帧重新提取的次数的图表700。
如图中所示,图表700包括Y-轴线702、X-轴线704、线706、线708和线710。
Y-轴线702表示重新提取。X-轴线704表示帧。
线706表示根据本发明的各个方面的多媒体SoC。线708表示传统多媒体SoC。线710表示没有高速缓冲存储器的传统多媒体SoC。
在操作中,对于根据本发明的各个方面的多媒体SoC、传统多媒体SoC和没有高速缓冲存储器的传统多媒体SoC,单个帧的重新提取的次数是最小的。在帧2处,新的帧被处理。如线708和线710所示,对于传统多媒体SoC和没有高速缓冲存储器的传统多媒体SoC,由于数据不在高速缓冲存储器中而导致重新提取的次数猛增。从主存储器重新提取数据的次数增加了延迟并且降低了吞吐量。
如线706所示,根据本发明的各个方面的多媒体SoC没有看到重新提取的增加。由于根据本发明的各个方面的多媒体SoC具有更好的管理和高速缓冲存储器使用,数据保持存储在高速缓冲存储器中且不需要从存储器重新提取。
图8示出根据本发明的各个方面的针对多媒体SoC的运动补偿的各个大小的高速缓冲存储器的存储器带宽使用的图表800。
如图中所示,图表800包括Y-轴线802、X-轴线804、线806、线808、线810和线812。
Y-轴线802表示像素与像素之间比率。X-轴线804表示高速缓冲存储器大小。
线806表示理想的像素与像素之间的比率。线808表示根据本发明的各个方面的行大小为8KB的高速缓冲存储器。线810表示传统的行大小为32KB的高速缓冲存储器。线812表示传统的行大小为64KB的高速缓冲存储器。
在操作中,当高速缓冲存储器从存储器提取数据时,提取的数据量等于高速缓冲存储器的行大小。根据本发明的各个方面的高速缓冲存储器具有小的行大小为8KB的高速缓冲存储器,因此当从存储器提取数据时,每次仅有8KB被提取。如线808所示,由于8KB是小的行大小,非常少的存储器带宽被利用。
传统的行大小为32KB的高速缓冲存储器是非常大的,并且每次从存储器提取数据,必须提取32KB。如线810所示,从存储器提取32KB数据使用大量存储带宽,其产生了延迟。传统的行大小为64KB需要每次调用提取的64KB数据到存储器。如线812所示,64KB高速缓冲存储器使用存储器带宽的大部分。
用于使用多媒体SoC处理数据的传统系统和方法的一个问题在于多个处理组件之间的交叉颠簸。多个处理组件使用共同的高速缓冲存储器导致每次发生高速缓冲存储器未命中时,一个处理组件重写存储在高速缓冲存储器中、另一个组件的数据。这导致每个处理组件不断地从主存储器提取数据并接着将重写存储在高速缓冲存储器中的数据。
重写高速缓冲存储器中的数据强迫每个处理组件从主存储器提取数据。从主存储器提取数据使用了主存储器的有限带宽,从而产生了瓶颈。随着主存储器的业务量增加,处理组件不得不等待提取数据,从而增加了延迟并且降低了吞吐量。
本发明提出一种系统和方法,其用于使用基于限定符的分离器、可配置高速缓冲存储器和仲裁器从SoC的主存储器提取数据并存储来自SoC的主存储器的数据。当需要提取数据时,基于限定符的分离器将来自每个处理组件的业务量路由到可配置高速缓冲存储器。如果可配置高速缓冲存储器具有请求的数据,则其能够简单地从其在可配置高速缓冲存储器内的位置读取。如果可配置高速缓冲存储器不具有请求的数据,针对数据的请求被转发到仲裁器,其中在仲裁器中数据从SoC的主存储器提取。数据接着被写入到可配置高速缓冲存储器,其中在可配置高速缓冲存储器中该数据能够在随后的时间提取。
如果处理组件开始经历延迟或者降低的吞吐量,通过启用或禁用数据预取、改变数据替换策略或者改变可配置高速缓冲存储器的写入模式,可配置高速缓冲存储器能够被动态地配置以改善性能。此外,不止一个的可配置高速缓冲存储器能够被用在SoC中以便进一步改善延迟和吞吐量。
基于限定符的分离器还能够被动态地配置以改善从处理组件到可配置高速缓冲存储器的数据请求的数据路由。基于限定符的分离器可以额外地将不是高速缓冲存储器友好的数据请求直接路由到仲裁器,其接着将从主存储器提取数据。将不是高速缓冲存储器友好的数据请求直接路由到主存储器进一步减少延迟并且增加吞吐量。
使用基于限定符的分离器和可配置高速缓冲存储器明显减少了需要从主存储器提取数据的次数。主存储器减少的业务量减少了使用的带宽,从而消除了瓶颈。以这种方式,由于大量的可用存储器带宽,必须从主存储器提取的数据(例如不是高速缓冲存储器友好的数据)能够及时地从主存储器提取。
本发明的各种优选实施例的在前描述已经出于说明和描述的目的被提供。不是旨在穷尽或限制本发明公开的精确形式,而且很明显地,鉴于上面的教导很多修改和变形是可能的。如上所述的示例实施例被选择和描述以便最好地解释本发明的原理和它的实际应用,从而使得其他本领域技术人员能够以各种实施例和各种适于预期到的特定使用的修改更好地利用本发明。旨在通过所附权利要求书限定本发明的范围。
Claims (20)
1.一种系统,包含:
第一数据处理组件,其可操作以生成针对存储器内的第一位置处第一部分数据的第一请求;
第二数据处理组件,其可操作以生成针对所述存储器内的第二位置处的第二部分数据的第二请求;
基于限定符的分离器组件,其可操作以基于限定符路由所述第一请求和所述第二请求;
第一可配置高速缓冲存储器元件,其可操作以执行预取所述存储器的第一区域内的数据的启用或禁用之一;
第二可配置高速缓冲存储器元件,其可操作以执行预取所述存储器的第二区域内的数据的启用或禁用之一;以及
仲裁器组件,其可操作以将所述第一请求路由到所述存储器并将所述第二请求路由到所述存储器。
2.根据权利要求1所述的系统,包括:
旁路通路;
其中所述基于限定符的分离器组件进一步可操作以经由所述旁路通路以便绕过所述第一可配置高速缓冲存储器元件,将所述第一请求路由到所述仲裁器组件。
3.根据权利要求2所述的系统,
其中所述第一可配置高速缓冲存储器元件包含回写、预取禁用的高速缓冲存储器元件,以及
其中所述第二可配置高速缓冲存储器元件包含通写、预取禁用的高速缓冲存储器元件。
4.根据权利要求3所述的系统,包括第三可配置高速缓冲存储器元件,其可操作以执行预取所述存储器的第三区域内的数据的启用或禁用之一。
5.根据权利要求4所述的系统,其中所述第三可配置高速缓冲存储器元件包含预取启用的高速缓冲存储器元件。
6.根据权利要求5所述的系统,其中所述基于限定符的分离器组件可操作以基于包括地址范围、事务类型、主标识符和其组合的组中的一个路由所述第一请求和所述第二请求。
7.根据权利要求6所述的系统,其中所述第一可配置高速缓冲存储器元件包含可配置高速缓冲存储器替换策略。
8.根据权利要求7所述的系统,其中所述仲裁器组件可操作以基于负载共享策略,将所述第一请求路由到第一存储器以及将所述第二请求路由到第二存储器。
9.根据权利要求1所述的系统,
其中,所述第一可配置高速缓冲存储器元件包含回写、预取禁用的高速缓冲存储器元件,以及
其中,所述第二可配置高速缓冲存储器元件包含通写、预取禁用的高速缓冲存储器元件。
10.根据权利要求1所述的系统,其中所述基于限定符的分离器组件可操作以基于包括地址范围、事务类型、主标识符和其组合的组中的一个路由所述第一请求和所述第二请求。
11.一种方法,包含:
经由第一数据处理组件,生成针对存储器内的第一位置处的第一部分数据的第一请求;
经由第二数据处理组件,生成针对所述存储器内的第二位置处的第二部分数据的第二请求;
经由基于限定符的分离器组件,基于限定符路由所述第一请求;
经由所述基于限定符的分离器组件,基于所述限定符路由所述第二请求;
经由第一可配置高速缓冲存储器元件,执行预取所述存储器的第一区域内的数据的启用或禁用之一;
经由第二可配置高速缓冲存储器元件,执行预取所述存储器的第二区域内的数据的启用或禁用之一;
经由仲裁器组件,路由所述第一请求;以及
经由所述仲裁器组件,路由所述第二请求。
12.根据权利要求11所述的方法,包括:经由所述基于限定符的分离器组件,经由旁路通路以便绕过所述第一可配置高速缓冲存储器元件,将所述第一请求路由到所述仲裁器组件。
13.根据权利要求12所述的方法,
其中经由第一可配置高速缓冲存储器元件,执行预取所述存储器的第一区域内的数据的启用或禁用之一包含:经由回写、预取禁用的高速缓冲存储器元件执行预取数据的启用或禁用之一,以及
其中经由第二可配置高速缓冲存储器元件,执行预取所述存储器的第二区域内的数据的启用或禁用之一包含:经由通写、预取禁用的高速缓冲存储器元件执行预取数据的启用或禁用之一。
14.根据权利要求13所述的方法,包括经由第三可配置高速缓冲存储器元件执行预取所述存储器的第三区域内的数据的启用或禁用之一。
15.根据权利要求14所述的方法,其中经由第三可配置高速缓冲存储器元件执行预取所述存储器的第三区域内的数据的启用或禁用之一包含:经由预取启用的高速缓冲存储器元件执行预取数据的启用或禁用之一。
16.根据权利要求15所述的方法,其中经由基于限定符的分离器组件,基于限定符路由所述第一请求包含:基于包括地址范围、事务类型、主标识符和其组合的组中的一个路由所述第一请求。
17.根据权利要求16所述的方法,其中经由第一可配置高速缓冲存储器元件,执行预取所述存储器的第一区域内的数据的启用或禁用之一包含:经由具有最近最少提取的高速缓冲存储器替换策略的高速缓冲存储器元件执行预取数据的启用或禁用之一。
18.根据权利要求17所述的方法,
其中,经由仲裁器组件,路由所述第一请求包含:基于负载共享策略将所述第一请求路由到第一存储器,以及
其中,经由所述仲裁器组件,路由所述第二请求包含:基于所述负载共享策略将所述第二请求路由到第二存储器。
19.根据权利要求11所述的方法,
其中经由第一可配置高速缓冲存储器元件,执行预取所述存储器的第一区域内的数据的启用或禁用之一包含:经由回写、预取禁用的高速缓冲存储器元件执行预取数据的启用或禁用之一,以及
其中经由第二可配置高速缓冲存储器元件,执行预取所述存储器的第二区域内的数据的启用或禁用之一包含:经由通写、预取禁用的高速缓冲存储器元件执行预取数据的启用或禁用之一。
20.根据权利要求11所述的方法,其中经由基于限定符的分离器组件基于限定符路由所述第一请求包含:基于包括地址范围、事务类型、主标识符和其组合的组中的一个路由所述第一请求。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2594CH2014 | 2014-05-26 | ||
IN2594/CHE/2014 | 2014-05-26 | ||
US14/583,020 | 2014-12-24 | ||
US14/583,020 US9430393B2 (en) | 2014-05-26 | 2014-12-24 | System and method for managing cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138473A true CN105138473A (zh) | 2015-12-09 |
CN105138473B CN105138473B (zh) | 2019-07-09 |
Family
ID=54556168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510268801.0A Active CN105138473B (zh) | 2014-05-26 | 2015-05-25 | 管理高速缓冲存储器的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9430393B2 (zh) |
CN (1) | CN105138473B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9639473B1 (en) * | 2014-12-09 | 2017-05-02 | Parallel Machines Ltd. | Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location |
FR3038428B1 (fr) * | 2015-07-03 | 2018-08-24 | Ingenico Group | Procede de traitement de donnees transactionnelles, dispositif et programme correspondant |
US11182306B2 (en) * | 2016-11-23 | 2021-11-23 | Advanced Micro Devices, Inc. | Dynamic application of software data caching hints based on cache test regions |
US10242654B2 (en) * | 2017-01-25 | 2019-03-26 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations |
US9978118B1 (en) * | 2017-01-25 | 2018-05-22 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations with data compression |
US10514753B2 (en) | 2017-03-27 | 2019-12-24 | Microsoft Technology Licensing, Llc | Selectively applying reprojection processing to multi-layer scenes for optimizing late stage reprojection power |
US10410349B2 (en) | 2017-03-27 | 2019-09-10 | Microsoft Technology Licensing, Llc | Selective application of reprojection processing on layer sub-regions for optimizing late stage reprojection power |
US10255891B2 (en) | 2017-04-12 | 2019-04-09 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations with multiple LSR processing engines |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5572660A (en) * | 1993-10-27 | 1996-11-05 | Dell Usa, L.P. | System and method for selective write-back caching within a disk array subsystem |
CN1766862A (zh) * | 2004-10-25 | 2006-05-03 | 三星电子株式会社 | 包括存储器存取控制器和总线的存储器件的微处理器系统 |
US20090300340A1 (en) * | 2008-06-02 | 2009-12-03 | Chou Yuan C | Accuracy of Correlation Prefetching Via Block Correlation and Adaptive Prefetch Degree Selection |
CN101908036A (zh) * | 2010-07-22 | 2010-12-08 | 中国科学院计算技术研究所 | 一种高密度多处理器系统及其节点控制器 |
CN102223394A (zh) * | 2010-04-02 | 2011-10-19 | 英特尔公司 | 远程直接存储设备访问 |
US20140108740A1 (en) * | 2012-10-17 | 2014-04-17 | Advanced Micro Devices, Inc. | Prefetch throttling |
-
2014
- 2014-12-24 US US14/583,020 patent/US9430393B2/en active Active
-
2015
- 2015-05-25 CN CN201510268801.0A patent/CN105138473B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5572660A (en) * | 1993-10-27 | 1996-11-05 | Dell Usa, L.P. | System and method for selective write-back caching within a disk array subsystem |
CN1766862A (zh) * | 2004-10-25 | 2006-05-03 | 三星电子株式会社 | 包括存储器存取控制器和总线的存储器件的微处理器系统 |
US20090300340A1 (en) * | 2008-06-02 | 2009-12-03 | Chou Yuan C | Accuracy of Correlation Prefetching Via Block Correlation and Adaptive Prefetch Degree Selection |
CN102223394A (zh) * | 2010-04-02 | 2011-10-19 | 英特尔公司 | 远程直接存储设备访问 |
CN101908036A (zh) * | 2010-07-22 | 2010-12-08 | 中国科学院计算技术研究所 | 一种高密度多处理器系统及其节点控制器 |
US20140108740A1 (en) * | 2012-10-17 | 2014-04-17 | Advanced Micro Devices, Inc. | Prefetch throttling |
Also Published As
Publication number | Publication date |
---|---|
CN105138473B (zh) | 2019-07-09 |
US9430393B2 (en) | 2016-08-30 |
US20150339234A1 (en) | 2015-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138473A (zh) | 管理高速缓冲存储器的系统和方法 | |
US11531617B2 (en) | Allocating and accessing memory pages with near and far memory blocks from heterogenous memories | |
CN103927277B (zh) | Cpu和gpu共享片上高速缓存的方法及装置 | |
TWI684099B (zh) | 剖析快取替代 | |
CN100481029C (zh) | 操作运行具有线程的图形应用程序上下文的计算机系统的方法 | |
US20140006687A1 (en) | Data Cache Apparatus, Data Storage System and Method | |
CN107526546B (zh) | 一种Spark分布式计算数据处理方法及系统 | |
CN103345368B (zh) | 一种在缓冲存储器中缓存数据的方法 | |
US10496550B2 (en) | Multi-port shared cache apparatus | |
CN104937931A (zh) | 使用软件驱动器及硬件驱动器彼此联合来实现混合视频编码器的方法及装置 | |
JP4451717B2 (ja) | 情報処理装置および情報処理方法 | |
US20150302903A1 (en) | System and method for deep coalescing memory management in a portable computing device | |
US11093410B2 (en) | Cache management method, storage system and computer program product | |
CN103154909A (zh) | 分布式高速缓冲存储器一致性协议 | |
CN104808952A (zh) | 数据缓存方法及装置 | |
KR101472967B1 (ko) | 라이트 백 동작을 수행하는 캐시 메모리, 이의 동작 방법, 및 이를 포함하는 시스템 | |
US10116943B2 (en) | Adaptive video compression for latency control | |
CN101821717A (zh) | 采用高速缓存一致性负荷测试控制的电路和方法 | |
US20170004087A1 (en) | Adaptive cache management method according to access characteristics of user application in distributed environment | |
CN105531683A (zh) | 定向窥探介入 | |
US20180276140A1 (en) | Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies | |
US8514233B2 (en) | Non-graphics use of graphics memory | |
US20120047330A1 (en) | I/o efficiency of persistent caches in a storage system | |
US20220300421A1 (en) | Memory Sharing | |
CN102541808A (zh) | Soc芯片系统及实现Soc芯片中可配置缓冲器的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |