处理分布式缓存组织结构中的已压缩数据的制作方法

文档序号:8905177阅读:308来源:国知局
处理分布式缓存组织结构中的已压缩数据的制作方法
【技术领域】
[0001 ] 此处所描述的技术一般涉及计算系统中的数据存储和检索。
【背景技术】
[0002]在数据处理中,一个挑战是优化存储器带宽和功率的使用,同时使处理时间最小化。优化存储器的使用的一种方式是在存储在存储器中之前压缩数据。已知计算系统在它们的处理块中包括昂贵的压缩/解压缩元件,而其他已知系统通过根本不利用压缩来最小化成本。
[0003]附图简述
[0004]图1是根据一实施例的存储器/缓存结构的框图。
[0005]图2是示出了根据一实施例的存储器中的已压缩数据条目,解压缩后的组件的框图。
[0006]图3是描绘了根据一实施例的加载操作的示例流程图。
[0007]图4和5是描绘了根据一实施例的存储操作的示例流程图。
[0008]图6是描绘了根据一实施例的存储操作的示例流程图。
[0009]图7是根据一实施例的示例计算设备的框图。
[0010]图8示出了其中可以实现实施例的示例信息系统。
[0011]图9示出了其中可以实现实施例的示例移动信息设备。
[0012]在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。
【具体实施方式】
[0013]就以经压缩的和解压缩的形式维护数据而论,给利用存储器中的已压缩数据的计算系统带来了独特挑战。已知的计算系统要么通过根本不利用压缩来避免这些挑战,要么将昂贵的压缩/解压缩元件包括到它们的处理块中。在任意一种已知情况下,相对于功率和面积消耗,收益递减。
[0014]使用已压缩数据所存在的具体挑战是如何在保存未经压缩的数据结构的分布式缓存层次结构上处理数据的可变长度压缩和解压缩。在处理分布式缓存架构上的可变长度数据压缩/解压缩时,当未经压缩时各种数据段可能会分散在具有多个物理缓存体的大缓存组织结构中。每一个数据段都可能相对于其他段脱节,并将需要被跟踪。当需要将数据从缓存组织结构写入到存储器时,可以收集、合并并压缩每一个段。此处所描述的解决方案可以在分布式缓存组织结构中有效率地维护未经压缩的数据。例如,利用这些解决方案,可以完成分配作为对于加载操作的回填后解压缩。对于存储操作,当从缓存组织结构的缓存体中驱除单一数据段时,可能会发生压缩。在下文中将更详细地描述这些操作。
[0015]图1是根据一实施例的存储器/缓存结构的框图。图1的存储器/缓存结构可以包括具有存储器接口 104的存储器102、压缩器-解压缩器单元106以及可以包括多个缓存体108-1到108-X的缓存组织结构108。缓存体108-1到108-X可以通过通信节点112-1到112-Z(共同地称为112)彼此可通信地耦合、可通信地耦合到压缩器-解压缩器单元106,可通信地耦合到一个或多个处理元件或引擎110-1到110-Y(共同地称为110)(例如,但不仅限于,图形处理元件)。通信节点112连接独立的物理实体,以形成单一逻辑视图,并为那些实体提供通信信道。在图1所示出的实施例中,有四个直接连接到每一个节点112的缓存体。然而,此配置只是一个示例,不是限制性的。缓存体和节点的其他配置也是可以构想到的。
[0016]存储器102可以实现为,例如,易失性存储器设备诸如,但不仅限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM),等等,包括当前正在开发的和未来的存储器类型。存储器102可以保存经压缩的或未压缩的数据。然而,此处所讨论的各实施例主要涉及处理经压缩的存储器数据。
[0017]压缩器-解压缩器单元106可以包括至少一个压缩器-解压缩器,该压缩器-解压缩器可以在向存储器102提供已压缩数据之前压缩来自缓存组织结构108的数据,并可以在向缓存组织结构108提供解压缩的数据之前解压缩从存储器102所提供的数据。在一个实施例中,压缩器-解压缩器单元106可以包括每个存储器通道一个压缩器-解压缩器,但是,不仅限于此配置,因为可以使用多个压缩器-解压缩器对。将压缩器-解压缩器单元106放置在从缓存组织结构108来往于存储器102的途中(例如,而不是在每一个处理块中都具有压缩器-解压缩器)将允许存储器接口 104上的功率使用的降低的最大化,同时将面积的成本保持为最低,因为缓存组织结构108扩展以处理各种进程请求。放置压缩器-解压缩器106将这些潜在成本只置于观察到最大功率增益的存储器接口 104。然而,这种实现带来了如何在带有多个物理缓存体的巨大的缓存组织结构上处理分布式数据和压缩/解压缩的问题。压缩的长度可以是任意数量的字节,而相应的缓存条目可以通过任意数量的字节来表示。如此,当处于未经压缩的格式时,单一经压缩的存储器条目可以分布到多个缓存体位置。当发生高速缓存未命中时,解压缩的数据段需要被分配到一个或多个(潜在地许多)缓存体(例如,加载操作)。类似地,当向存储器写入数据时,可压缩的数据段可以分布在缓存组织结构上,并且将需要朝向存储器集中(例如,存储操作)。
[0018]在一个实施例中,如果在一个处理元件110(例如,GPU)的缓存组织结构上的特定访问未命中来自缓存的内容,则一个解决方案涉及将来自存储器的已压缩数据的内容回填到多个物理缓存块,不仅对于被请求的数据段,而且还对于互补段。在此情况下,处理元件110可以生成向存储器102的加载请求。压缩器-解压缩器单元106可以检测可压缩的流LOAD请求,并且在从存储器102回来的途中压缩器-解压缩器单元106将解压缩内容。压缩器-解压缩器单元106可以标识原始请求中的被请求的内容(可以是解压缩的内容的子集),并将被请求的内容提供到缓存组织结构108的缓存体,从那里,它可以被提供给发出请求的处理元件110。压缩器-解压缩器单元106也可以标识互补数据段,它们是来自解压缩的内容的不是被请求的内容的一部分的数据段。例如,如图2所示,可以在加载请求时被解压缩的已压缩数据条目214可以包括,当被解压缩时,被请求的数据段216和互补数据段218-1到218-N(共同地称为218)。压缩器-解压缩器单元106可以将这些互补段218提供到缓存组织结构108的一个或多个缓存体以形成向缓存的回填。对于回填,如果有带宽,则数据将被置于缓存组织结构108的一个或多个缓存体,否则,可能被丢弃。这些互补段218不是原始加载请求的一部分,但是,可能是潜在的未来的需求所需的。在一个实施例中,假设这些互补段218不是积极地需求的,与实际数据请求(例如,实时数据请求)相比,它们可能具有较低的位于缓存组织结构108中的优先级。例如,如果缓存组织结构108中的带宽有限,则互补数据段218可以被未来请求的数据段所替换。
[0019]由于对于数据条目的连续需求的时间上接近的本质(例如,诸如对于图形和/或媒体应用程序),因此,有可能出现这样的情况:当原始数据请求在处理中时,在回填操作完成之前,将发生对其互补数据段的需求。在各实施例中,缓存组织结构108的缓存体和压缩器-解压缩器单元106可以各自(独立地或一起)解决此情况。例如,在一个实施例中,如果互补数据段218的回填已经被提供到缓存组织结构108的一个缓存体并处于回填的队列中,则该特定缓存体可以检测匹配的需求加载请求,而不必经过存储器而实现它。每一个回填操作都可以具有回到压缩器-解压缩器单元106的完成任务,以检测潜在需求请求。类似地,在一个实施例中,压缩器-解压缩器单元106可以包括对于当原始数据请求或互补回填仍在处理中时,对一个或多个互补段218的未来加载请求的跟踪逻辑。在此情况下,压缩器-解压缩器单元106可以对于互补数据段,取消向存储器的加载,以避免存储器接口 104上的额外的通信量。
[0020]当将向存储器102写入数据时,发生存储操作。向经压缩的存储器表面的存储可能带来要解决的额外的问题。处理元件I1可以在它将数据写出到缓存组织结构108时尽可能地使经压缩的条目的连续数据块保持原样。类似于加载操作,当数据从处理元件110的寄存器被写出时,这些存储操作可以在时间顺序上具有接近的接近度。缓存组织结构108可以将这些写出的数据段分布在许多缓存体上。缓存组织结构中的这些写出的数据段可以被视为“修改的内容”。在一个实施例中,当“修改的内容”的这些段中的任何一个从其相应的缓存体中被清除(即,写出)时,压缩器-解压缩器单元106可以检测一段“修改的内容”正在被写入经压缩的存储器表面。压缩器-解压缩器单元106可以将此可压缩的“修改的内容”拉到旁边,并对缓存组织结构108进行搜索(例如,通过生成“监听”),以搜索与“修改的内容”相关联的互补段。如果发现了所有互补段,则可以合并、压缩“修改的内容”和相关联的互补段(例如,按顺序),并向存储器102写入。在一个实施例中,持续保存互补段的缓存体的内容被降级到“非修改的”状态。
[0021]在一个实施例中,在上文所描述的存储操作中,如果在缓存组织结构108中并非所有的互补段都被发现(例如,如果任何“监听”作为未命中回来的话),可以类似于对经压缩的缓冲器的部分更新,处理存储操作。压缩器-解压缩器单元106可以从存储器102读取与“修改的内容”相关联的预先存储的经压缩的内容,解压缩相关联的内容,并将相关联的内容与“修改的内容”和发现的互补段合并以完成完整数据集。然后,可以压缩完整的数据集,并向存储器102写入。
[0022]在另一个实施例中,可以执行存储操作,回避缓存组织结构108,从处理元件110到压缩器-解压缩器单元106以便压缩并向存储器102写入始终使数据保持完好。在某些使用模型中,在可能没有对于已压缩数据的直接需求的情况下,使用缓存作为直接存储会带来开销(例如,额外的监听、存储空间等等)。然而,如果有需要数据存储对缓存组织结构内的未来加载操作可用的使用模型(例如,某些应用程序),则压缩器-解压缩器单元106也可以将数据回填到缓存组织结构。这可以使用基于使用情况定义的软件控制来实现。在此实施例中,缓存组织结构108可以被用作写入缓冲器,可以生成监听以发现所需的数据。此实施例可能需要大写入缓冲器。
[0023]图3是描绘了根据一实施例的加载操作300的示例流程图。加载操作300是上文所讨论的加载操作的示例。加载操作300从诸如图1的压缩器/解压缩器单元106之类的压缩器-解压缩器的角度来看。在302,可以检测来自发出请求的处理元件的向存储器的对于数据的所希望的一个或多个字节的加载请求。在304,可以解压缩响应于加载请求从存储器提供的内容。在306,可以从解压缩的内容标识数据的所希望的一个或多个字节。在308,可以向与发出请求的处理元件相关联的缓存体提供数据的所希望的一个或多个字节。缓存体可以是诸如图1所示出的缓存组织结构108之类的由多个缓存体构成的缓存组织结构的一部分。在310,可以将来自内容的数据的互补字节分布到缓存组织结构的一个或多个其他缓存体。分布到其
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1