CN104881367B - 处理分布式缓存组织结构中的已压缩数据的方法、计算设备、计算系统和机器可读介质 - Google Patents

处理分布式缓存组织结构中的已压缩数据的方法、计算设备、计算系统和机器可读介质 Download PDF

Info

Publication number
CN104881367B
CN104881367B CN201510044011.4A CN201510044011A CN104881367B CN 104881367 B CN104881367 B CN 104881367B CN 201510044011 A CN201510044011 A CN 201510044011A CN 104881367 B CN104881367 B CN 104881367B
Authority
CN
China
Prior art keywords
data
content
memory
decompressor
caching
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
Application number
CN201510044011.4A
Other languages
English (en)
Other versions
CN104881367A (zh
Inventor
A·考克
江宏
J·M·霍兰德
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104881367A publication Critical patent/CN104881367A/zh
Application granted granted Critical
Publication of CN104881367B publication Critical patent/CN104881367B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0815Cache consistency protocols
    • 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

呈现了优化数据处理成本和效率的技术。计算系统可以包括:至少一个处理元件;通信地耦合到所述至少一个处理元件的存储器;通信地耦合到所述至少一个处理元件,并通过存储器接口通信地耦合到所述存储器的至少一个压缩器‑解压缩器;以及,包括通过多个节点,彼此通信地耦合、通信地耦合到所述至少一个处理元件,以及通信地耦合到所述至少一个压缩器‑解压缩器的多个分布式缓存体的缓存组织结构。在此系统中,至少一个压缩器‑解压缩器和缓存组织结构被配置成管理和跟踪对于处理元件作出的数据请求的可变长度的未经压缩的数据,允许使用存储器中的已压缩数据。

Description

处理分布式缓存组织结构中的已压缩数据的方法、计算设备、 计算系统和机器可读介质
技术领域
此处所描述的技术一般涉及计算系统中的数据存储和检索。
背景技术
在数据处理中,一个挑战是优化存储器带宽和功率的使用,同时使处理时间最小化。优化存储器的使用的一种方式是在存储在存储器中之前压缩数据。已知计算系统在它们的处理块中包括昂贵的压缩/解压缩元件,而其他已知系统通过根本不利用压缩来最小化成本。
附图说明
图1是根据一实施例的存储器/缓存结构的框图。
图2是示出了根据一实施例的存储器中的已压缩数据条目,解压缩后的组件的框图。
图3是描绘了根据一实施例的加载操作的示例流程图。
图4和5是描绘了根据一实施例的存储操作的示例流程图。
图6是描绘了根据一实施例的存储操作的示例流程图。
图7是根据一实施例的示例计算设备的框图。
图8示出了其中可以实现实施例的示例信息系统。
图9示出了其中可以实现实施例的示例移动信息设备。
在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。
具体实施方式
就以经压缩的和解压缩的形式维护数据而论,给利用存储器中的已压缩数据的计算系统带来了独特挑战。已知的计算系统要么通过根本不利用压缩来避免这些挑战,要么将昂贵的压缩/解压缩元件包括到它们的处理块中。在任意一种已知情况下,相对于功率和面积消耗,收益递减。
使用已压缩数据所存在的具体挑战是如何在保存未经压缩的数据结构的分布式缓存层次结构上处理数据的可变长度压缩和解压缩。在处理分布式缓存架构上的可变长度数据压缩/解压缩时,当未经压缩时各种数据段可能会分散在具有多个物理缓存体的大缓存组织结构中。每一个数据段都可能相对于其他段脱节,并将需要被跟踪。当需要将数据从缓存组织结构写入到存储器时,可以收集、合并并压缩每一个段。此处所描述的解决方案可以在分布式缓存组织结构中有效率地维护未经压缩的数据。例如,利用这些解决方案,可以完成分配作为对于加载操作的回填后解压缩。对于存储操作,当从缓存组织结构的缓存体中驱除单一数据段时,可能会发生压缩。在下文中将更详细地描述这些操作。
图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的缓存体。然而,此配置只是一个示例,不是限制性的。缓存体和节点的其他配置也是可以构想到的。
存储器102可以实现为,例如,易失性存储器设备诸如,但不仅限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM),等等,包括当前正在开发的和未来的存储器类型。存储器102可以保存经压缩的或未压缩的数据。然而,此处所讨论的各实施例主要涉及处理经压缩的存储器数据。
压缩器-解压缩器单元106可以包括至少一个压缩器-解压缩器,该压缩器-解压缩器可以在向存储器102提供已压缩数据之前压缩来自缓存组织结构108的数据,并可以在向缓存组织结构108提供解压缩的数据之前解压缩从存储器102所提供的数据。在一个实施例中,压缩器-解压缩器单元106可以包括每个存储器通道一个压缩器-解压缩器,但是,不仅限于此配置,因为可以使用多个压缩器-解压缩器对。将压缩器-解压缩器单元106放置在从缓存组织结构108来往于存储器102的途中(例如,而不是在每一个处理块中都具有压缩器-解压缩器)将允许存储器接口104上的功率使用的降低的最大化,同时将面积的成本保持为最低,因为缓存组织结构108扩展以处理各种进程请求。放置压缩器-解压缩器单元106将这些潜在成本只置于观察到最大功率增益的存储器接口104。然而,这种实现带来了如何在带有多个物理缓存体的巨大的缓存组织结构上处理分布式数据和压缩/解压缩的问题。压缩的长度可以是任意数量的字节,而相应的缓存条目可以通过任意数量的字节来表示。如此,当处于未经压缩的格式时,单一经压缩的存储器条目可以分布到多个缓存体位置。当发生高速缓存未命中时,解压缩的数据段需要被分配到一个或多个(潜在地许多)缓存体(例如,加载操作)。类似地,当向存储器写入数据时,可压缩的数据段可以分布在缓存组织结构上,并且将需要朝向存储器集中(例如,存储操作)。
在一个实施例中,如果在一个处理元件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可以被未来请求的数据段所替换。
由于对于数据条目的连续需求的时间上接近的本质(例如,诸如对于图形和/或媒体应用程序),因此,有可能出现这样的情况:当原始数据请求在处理中时,在回填操作完成之前,将发生对其互补数据段的需求。在各实施例中,缓存组织结构108的缓存体和压缩器-解压缩器单元106可以各自(独立地或一起)解决此情况。例如,在一个实施例中,如果互补数据段218的回填已经被提供到缓存组织结构108的一个缓存体并处于回填的队列中,则该特定缓存体可以检测匹配的需求加载请求,而不必经过存储器而实现它。每一个回填操作都可以具有回到压缩器-解压缩器单元106的完成任务,以检测潜在需求请求。类似地,在一个实施例中,压缩器-解压缩器单元106可以包括对于当原始数据请求或互补回填仍在处理中时,对一个或多个互补数据段218的未来加载请求的跟踪逻辑。在此情况下,压缩器-解压缩器单元106可以对于互补数据段,取消向存储器的加载,以避免存储器接口104上的额外的通信量。
当将向存储器102写入数据时,发生存储操作。向经压缩的存储器表面的存储可能带来要解决的额外的问题。处理元件110可以在它将数据写出到缓存组织结构108时尽可能地使经压缩的条目的连续数据块保持原样。类似于加载操作,当数据从处理元件110的寄存器被写出时,这些存储操作可以在时间顺序上具有接近的接近度。缓存组织结构108可以将这些写出的数据段分布在许多缓存体上。缓存组织结构中的这些写出的数据段可以被视为“修改的内容”。在一个实施例中,当“修改的内容”的这些段中的任何一个从其相应的缓存体中被清除(即,写出)时,压缩器-解压缩器单元106可以检测一段“修改的内容”正在被写入经压缩的存储器表面。压缩器-解压缩器单元106可以将此可压缩的“修改的内容”拉到旁边,并对缓存组织结构108进行搜索(例如,通过生成“监听”),以搜索与“修改的内容”相关联的互补段。如果发现了所有互补段,则可以合并、压缩“修改的内容”和相关联的互补段(例如,按顺序),并向存储器102写入。在一个实施例中,持续保存互补段的缓存体的内容被降级到“非修改的”状态。
在一个实施例中,在上文所描述的存储操作中,如果在缓存组织结构108中并非所有的互补段都被发现(例如,如果任何“监听”作为未命中回来的话),可以类似于对经压缩的缓冲器的部分更新,处理存储操作。压缩器-解压缩器单元106可以从存储器102读取与“修改的内容”相关联的预先存储的经压缩的内容,解压缩相关联的内容,并将相关联的内容与“修改的内容”和发现的互补段合并以完成完整数据集。然后,可以压缩完整的数据集,并向存储器102写入。
在另一个实施例中,可以执行存储操作,回避缓存组织结构108,从处理元件110到压缩器-解压缩器单元106以便压缩并向存储器102写入始终使数据保持完好。在某些使用模型中,在可能没有对于已压缩数据的直接需求的情况下,使用缓存作为直接存储会带来开销(例如,额外的监听、存储空间等等)。然而,如果有需要数据存储对缓存组织结构内的未来加载操作可用的使用模型(例如,某些应用程序),则压缩器-解压缩器单元106也可以将数据回填到缓存组织结构。这可以使用基于使用情况定义的软件控制来实现。在此实施例中,缓存组织结构108可以被用作写入缓冲器,可以生成监听以发现所需的数据。此实施例可能需要大写入缓冲器。
图3是描绘了根据一实施例的加载操作300的示例流程图。加载操作300是上文所讨论的加载操作的示例。加载操作300从诸如图1的压缩器/解压缩器单元106之类的压缩器-解压缩器的角度来看。在302,可以检测来自发出请求的处理元件的向存储器的对于数据的所希望的一个或多个字节的加载请求。在304,可以解压缩响应于加载请求从存储器提供的内容。在306,可以从解压缩的内容标识数据的所希望的一个或多个字节。在308,可以向与发出请求的处理元件相关联的缓存体提供数据的所希望的一个或多个字节。缓存体可以是诸如图1所示出的缓存组织结构108之类的由多个缓存体构成的缓存组织结构的一部分。在310,可以将来自内容的数据的互补字节分布到缓存组织结构的一个或多个其他缓存体。分布到其他缓存体的数据的互补字节可以用于未来的数据请求(例如,未来加载或存储操作)。
图4是描绘了根据一实施例的存储操作400的示例流程图。存储操作400是上文所讨论的存储操作的一个示例。存储操作400从诸如图1的压缩器/解压缩器单元106之类的压缩器-解压缩器的角度来看。在402,可以检测未经压缩的修改的内容正在被从诸如缓存组织结构108之类的缓存组织结构的一个或多个缓存体写出。在404,保存检测到的修改的内容(例如,代替直接去存储器)。在406,可以对缓存组织结构进行搜索,搜索其中的对修改的内容的互补内容。在408,如果发现了所有互补内容,则可以合并、压缩修改的并且互补的内容,并将它们写入到存储器。在410,如果并非所有互补内容都被发现,则处理可以在图5的过程500继续。
图5是描绘了根据一实施例的继续的存储操作500的示例流程图。存储操作500是上文所讨论的存储操作的一个示例。存储操作500从诸如图1的压缩器/解压缩器单元106之类的压缩器-解压缩器的角度来看,并且,如果在存储操作400的408中,并非所有互补内容都被发现,则执行。在502,可以从存储器中读取与修改的内容相关联的预先存储的压缩的内容。在504,可以解压缩相关联的内容。在506,可以合并并压缩修改的内容、发现的互补内容以及相关联的内容。在508,可以将合并并且压缩的内容写入到存储器。
图6是描绘了根据一实施例的存储操作600的示例流程图。存储操作600是上文所讨论的另一个存储操作的示例。存储操作600从诸如图1的压缩器/解压缩器单元106之类的压缩器-解压缩器的角度来看。在602,可以检测未经压缩的数据的一个或多个字节正在被写出。在604,可以压缩未经压缩的数据,回避多个缓存体的缓存组织结构。在606,可以将已压缩数据写入到存储器。在608,可以向缓存组织结构提供未经压缩的数据,以满足未来的数据请求。
本文披露的一个或多个特征可以硬件、软件、固件及其组合实现,包括分立和集成的电路逻辑、专用集成电路(ASIC)逻辑、微控制器,并可实现为专门领域的集成电路封装组件的一部分或多个集成电路封装组件的组合。如此处所使用的,术语“软件和固件”,是指包括至少一个计算机可读介质的计算机程序产品,所述计算机可读介质存储了诸如计算机可执行指令之类的计算机程序逻辑,以导致计算机系统执行此处所公开的一个或多个特征和/或特征组合。计算机可读介质可以是临时的或非临时的。临时计算机可读介质的一个例子可以是通过局域网或广域网或者通过诸如因特网的网络在无线电频率或在电导体上传输的数字信号。非瞬时的计算机可读介质的示例可以是光盘、闪存、SRAM、DRAM、硬盘驱动器、固态驱动器,或其他数据存储设备。
如上所述,在各实施例中,此处所描述的处理中的某些或全部都可以实现为硬件、软件和/或固件。可以在示例计算系统720的上下文中示出这样的实施例,如图7所示。计算系统720可以包括通过链路730或类似的机制,连接到存储器724、一个或多个辅助存储设备726以及一个或多个图形处理器728的一个或多个中央处理单元(CPU),诸如一个或多个通用处理器722。可另选地,图形处理器728可以与通用处理器722集成。图形处理器728可以包括用于执行此处所描述的方法的一个或多个逻辑单元。在各实施例中,也可以存在其他逻辑单元。本领域技术人员将认识到,逻辑单元的功能可以由单一逻辑单元或任意数量的逻辑单元来执行。计算系统720可以可任选地包括通信接口732和/或用户界面组件734。通信接口732可以以硬件或硬件和软件的组合来实现,并可以提供到网络的有线或无线网络接口。用户界面组件734可以包括,例如,触摸屏、显示器、一个或多个用户输入组件(例如,键盘、鼠标等等)、扬声器等等,或其任何组合。通过此处所描述的方法处理的数据和/或图形可以显示在一个或多个用户界面组件上。一个或多个辅助存储设备726可以是,例如,一个或多个硬盘驱动器等等,并可以存储要由图形处理器728和/或通用处理器722执行的逻辑736(例如,应用逻辑)。在一个实施例中,通用处理器722和/或图形处理器728可以是微处理器,而逻辑736可以被存储或加载到存储器724中,供由通用处理器722和/或图形处理器728执行,以提供此处所描述的功能。注意,尽管未示出,然而计算系统720可以包括额外的组件。
上文所描述的技术可以是较大的信息系统的一部分。图8示出了这样的实施例,作为系统800。在各实施例中,系统800可以是媒体系统,虽然系统800不仅限于此上下文。例如,系统800可集成到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上电脑、个人数字助理(PDA)、蜂窝电话、蜂窝电话/PDA的组合、电视机、智能设备(例如,智能电话、智能平板电脑或智能电视机)、移动因特网设备(MID)、消息接发设备、数据通信设备等等。
在各实施例中,系统800包括耦合到显示器820的平台802。平台802可以从诸如内容服务设备(多个)830、或内容递送设备(多个)840之类的内容设备或其他类似的内容源接收内容。包括一个或多个导航特征的导航控制器850可被用来与例如平台802和/或显示器820交互。在下文中更详细地描述这些组件中的每一个。
在各实施例中,平台802可包括芯片组805、处理器810、存储器812、存储814、图形子系统815、应用816和/无线电818的或任何组合。芯片组805可以在处理器810、存储器812、存储814、图形子系统815、应用816、和/或无线电818之间提供相互通信。例如,芯片组805可以包括能够提供与存储814的相互通信的存储器适配器(未描绘)。
处理器810可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容的处理器、多核,或任何其他微处理器或中央处理单元(CPU)。在各实施例中,处理器810可包括双核处理器(多个)、双核移动处理器(多个)等等。
存储器812可实现为易失性存储设备,例如但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。
存储814可实现为非易失性存储设备,例如但不限于,磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附属存储设备、闪存、电池应急SDRAM(同步DRAM)和/或网络可访问存储设备。在各实施例中,存储814可包括用于在例如包括多个硬盘驱动器时提高有价值数字媒体的存储性能改善保护的技术。
图形子系统815可以对诸如静止图像或视频之类的图像执行处理以供显示。图形子系统815可以例如是图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以被用来可通信地耦合图形子系统815和显示器820。例如,接口可以是高清多媒体接口(HDMI)、显示器端口、无线HDMI和/或无线HD适应技术中的任一种。图形子系统815可被集成至处理器810或芯片组805中。图形子系统815可以是可通信地耦合到芯片组805的独立卡。
本文中所描述的图形和/或视频处理技术可在各种硬件架构中实现。例如,图形和/或视频功能可被集成在芯片集中。替代地,可使用分立的图形和/或视频处理器。作为又一实施例,图形和/或视频功能可由包括多核处理器的通用处理器实现。在进一步的实施例中,功能可以在消费电子产品中实现。
无线电818可以包括能够使用各种合适的无线通信技术传输和接收信号的一个或多个无线电。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络以及卫星网络。在跨这样的网络的通信中,无线电818可以根据任何版本的一个或多个适用的标准来操作。
在各实施例中,显示器820可包括任何电视机型监视器或显示器。显示器820可包括例如计算机显示屏、触摸屏显示器、视频监视器、电视机类设备和/或电视机。显示器820可以是数字和/或模拟的。在各实施例中,显示器820可以是全息显示器。此外,显示器820还可以是可接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像,和/或对象。例如,这样的投影可以是用于移动增强的现实(MAR)应用程序的视觉覆盖。在一个或多个软件应用816的控制下,平台802可以在显示器820上显示用户界面822。
在各实施例中,内容服务设备830可由任何国内、国际和/或独立服务所主控,并因此可经由例如因特网对平台802访问。内容服务设备(多个)830可以耦合到平台802和/或显示器820。平台802和/或内容服务设备(多个)830可以耦合到网络860,以往返于网络860地通信(例如,发送和/或接收)媒体信息。内容递送设备840还可以耦合到平台802和/或显示器820。
在各实施例中,内容服务设备(多个)830可包括有线电视机顶盒、个人计算机、网络、电话、互联网启用设备或能够传递数字信息和/或内容的设施,以及能够经由网络860或直接地在内容提供者和平台802和/显示器820之间单向或双向地交换内容的任何其它类似设备。可以理解,内容可以通过网络860单向地和/或双向地传递往返于系统800中的组件中的任何一个和内容提供商。内容的示例可以包括任何媒体信息,包括,例如,视频、音乐、医疗和游戏信息等等。
内容服务设备(多个)830接收内容,诸如有线电视节目,包括媒体信息、数字信息和/或其他内容。内容提供商的示例可以包括任何有线或卫星电视或电台或因特网内容提供商。给出的例子不旨在对本发明的实施例构成限制。
在各实施例中,平台802可从具有一个或多个导航特征的导航控制器850接收控制信号。控制器850的导航特征可以被用来,例如,与用户界面822进行交互。在一些实施例中,导航控制器850可以是定点设备,它可以是允许用户将空间(例如连续和多维)数据输入到计算机中的计算机硬件组件(具体地说是人机接口设备)。许多系统,例如图形用户接口(GUI)以及电视机和监视器,允许用户使用身体姿势、面部表情或声音来控制并将数据提供给计算机或电视机。
控制器850的导航特征的移动可以通过指针、光标、焦点环,或显示在显示器上的其他可视指示器,反映到显示器(例如,显示器820)上。例如,在软件应用816的控制下,位于导航控制器850上的导航特征可以被映射到例如用户界面822上显示的虚拟导航特征。在各实施例中,控制器850可以不是单独组件,而是集成到平台802和/或显示器820上。然而,各实施例并不限于这些元件或本文中示出或描述的背景。
在各实施例中,驱动器(未示出)可包括技术,该技术例如当被启用时用于允许用户在最初引导之后通过触摸按钮立刻接通和切断类似电视机的平台802(例如当被启用时)。在平台被“关闭”时,程序逻辑可以允许平台802将内容流传输到媒体适配器或其他内容服务设备(多个)830或内容递送设备(多个)840。另外,芯片组805还可以包括,例如,对于5.1环绕声音频和/或高清晰度7.1环绕声音频的硬件和/或软件支持。驱动程序可以包括集成的图形平台的图形驱动程序。在各实施例中,图形驱动器可包括外围组件互连(PCI)快速(Express)图形卡。
在各实施例中,系统800中所示组件中的任意一个或多个可以是集成的。例如,可以集成平台802和内容服务设备(多个)830,或者也可以集成平台802和内容递送设备(多个)840,或者,例如,也可以集成平台802、内容服务设备(多个)830,以及内容递送设备(多个)840。在各实施例中,平台802和显示器820可以是集成单元。例如,可以集成显示器820和内容服务设备(多个)830,或者也可以集成显示器820和内容递送设备(多个)840。这些示例并不旨在限制本发明的实施例。
在各实施例中,系统800可实现为无线系统、有线系统或两者的组合。当实现为无线系统时,系统800可以包括适用于通过无线共享介质进行通信的组件和接口,诸如一个或多个天线、发射器、接收器、收发机、放大器、滤波器、控制逻辑等等。无线共享介质的示例可以包括诸如RF频谱之类的无线范围的某些部分等等。当实现为有线系统时,系统800可包括适于在有线通信介质上通信的组件和接口,例如输入/输出(I/O)适配器、将I/O适配器与相应的有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等。有线通信介质的示例可包括,线路、电缆、金属导线、印刷电路板(PCB)、后面板、交换机结构、半导体材料、双绞线、同轴电缆、光纤等等。
平台802可以建立一个或多个逻辑或物理信道以传递信息。信息可以包括媒体信息和控制信息。媒体信息可以是指表示给用户的内容的任何数据。例如,内容示例可包括来自语音会话、视频会议、流视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等的数据。来自语音会话的数据可以是,例如,言语信息、静默时间长度、背景噪声、舒适噪声、音调等等。控制信息可以是指表示用于自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以用来通过系统路由媒体信息,或指示节点以预先确定的方式处理媒体信息。然而,各实施例不限于图8中所示出的或所描述的上下文中的元件。
如前所述,系统800可表现为不同的物理样式或形状因子。图9示出其中可体现系统800的小形状因子设备900的实施例。在各实施例中,例如设备900可被实现为具有无线能力的移动计算设备的一部分。移动计算设备可以是指具有处理系统和移动电源(诸如,例如,一个或多个电池)的任何设备。
如上文所描述的,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上电脑、个人数字助理(PDA)、蜂窝电话、蜂窝电话/PDA的组合、电视机、智能设备(例如,智能电话、智能平板电脑或智能电视机)、移动因特网设备(MID)、消息传送设备、数据通信设备等等。
移动计算设备的示例还可以包括被配置为由人佩带的计算机,诸如腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带计算机、臂带计算机、鞋计算机、衣服计算机,及其他可佩带的计算机。在各实施例中,例如移动计算设备可被实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管已经以实现为智能电话的移动计算设备为例描述了一些实施例,但可理解其他实施例也可利用其他无线移动计算设备来实现。各实施例不限于这一上下文。
如图9所示,设备900可以包括外壳902、显示器904、输入/输出(I/O)设备906以及天线908。设备900还可包括导航特征912。显示器904可以包括用于显示适合于移动计算设备的信息910的任何合适的显示单元。I/O设备906可包括任何适当I/O设备,用以将信息输入到移动计算设备中。I/O设备906的示例可以包括字母数字键盘、数字键区、触摸板、输入键、按钮、开关、往复式开关、话筒、扬声器、语音识别设备以及软件等等。信息还可以通过麦克风输入到设备900中。该信息可通过语音识别设备数字化。各实施例不限于这一上下文。
各个实施例可利用硬件部件、软件部件或两者的组合来实现。硬件部件的例子可包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。软件的示例可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、程序、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或它们的任意组合。确定实施例是否利用硬件部件和/或软件部件来实现可根据任意数量的因素变化,这些因素比如所期望的计算速率、功率电平、热容限、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表征性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这样的表示可以存储在有形的机器可读介质中,并提供给各种客户或生产设施,以加载到实际制造逻辑或处理器的制造机器中。
此处所公开的技术管理缓存组织结构中的可变长度的未经压缩的数据的路由和维护。此处所提供的解决方案允许在存储器接口而并非在单个处理块中压缩和解压缩数据,有效率地节省了空间,优化功率需求,同时得益于存储器中的已压缩数据的优点。在各实施例中,至少一个压缩器-解压缩器和缓存体的缓存组织结构被配置成管理和跟踪(通过有限状态机、固定功能块、软件等等)至少一个处理元件向存储器的数据请求的可变长度的未经压缩的数据。本文档中所使用的特定示例和情况只是为了理解方便,不是限制性的。例如,可以有多个压缩器和解压缩器作为压缩器-解压缩器单元的一部分,或甚至可以是多个压缩器-解压缩器单元,每一个单元都具有一个或多个压缩器和解压缩器。作为另一个示例,此处所示出的缓存体和节点的配置只是一个示例实现。也可以使用许多其他配置。另外,此处所描述的特征可以用于许多其他上下文中,如那些精通本技术的普通人员所理解的。例如,此处所描述的概念可以应用于任何并行处理系统或单元,诸如,但不仅限于,中央处理单元(CPU)、图形处理单元(GPU)等等。
使用此处所描述的技术有各种优点。此处所描述的技术提供最小化管芯尺寸和功率需求的分布式解决方案,而同时仍得益于使用存储器中的已压缩数据。也可以构想许多其他优点。
以下示例关于进一步的实施例。
示例1可以包括计算系统,包括:至少一个处理元件;通信地耦合到所述至少一个处理元件的存储器;通信地耦合到所述至少一个处理元件,并通过存储器接口通信地耦合到所述存储器的至少一个压缩器-解压缩器;以及,缓存组织结构,包括通过多个节点,彼此通信地耦合、通信地耦合到所述至少一个处理元件以及通信地耦合所述至少一个压缩器-解压缩器的多个分布式缓存体,其中,所述至少一个压缩器-解压缩器和所述缓存组织结构被配置成管理和跟踪所述至少一个处理元件向所述存储器的数据请求的可变长度的未经压缩的数据。
示例2可以包括示例1的主题,其中,如果有所述至少一个处理元件的发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中:所述发出请求的处理元件被配置成向所述存储器生成加载请求,以便要求数据的所述所希望的一个或多个字节;以及,至少一个压缩器-解压缩器被配置成检测加载请求,解压缩从所述存储器提供的内容,标识来自内容的数据的所希望的一个或多个字节,向与所述发出请求的处理元件相关联的缓存体提供数据的所述所希望的一个或多个字节,以及,将来自所述内容的数据的剩余互补字节分布到所述缓存组织结构的一个或多个其他缓存体。
示例3可以包括示例2的主题,其中所述分布数据的所述剩余互补字节包括当所述缓存体的带宽允许时将数据的所述一个或多个剩余互补字节中的一个或多个分布到一个或多个其他缓存体。
示例4可以包括示例2或示例3的主题,其中包含数据的一个或多个互补字节的缓存体比不包含数据的互补字节的缓存体具有较低的优先级,因为所述较低优先级的缓存体中的数据的所述一个或多个互补字节可以根据数据的未来请求的字节的需要,被替换。
示例5可以包括示例4的主题,其中数据的所述未来请求的字节是针对实际数据请求的。
示例6可以包括示例4的主题,其中数据的所述未来请求的字节是针对即时数据请求的。
示例7可以包括示例2-6中的任何一个的主题,其中,如果在处理数据的所述一个或多个互补字节的缓存体的填充完成之前有随后的向所述存储器的对数据的一个或多个互补字节的请求:处理数据的所述一个或多个请求的互补字节的所述缓存体被配置成检测并填充所述随后的对数据的所述一个或多个互补字节的请求;以及,所述至少一个压缩器-解压缩器被配置成取消所述随后的向存储器的请求以减少所述存储器接口上的通信量。
示例8可以包括示例1-7中的任何一个的主题,其中所述至少一个处理元件中的处理元件被配置成向所述缓存组织结构写出未经压缩的数据的一个或多个字节;其中所述缓存组织结构被配置成作为修改的内容,分布未经压缩的数据的所述一个或多个字节;以及,其中如果从所述缓存组织结构写出了任何所述修改的内容,则所述至少一个压缩器-解压缩器被配置成:检测修改的内容正在被写出;保存检测到的修改的内容;对所述缓存组织结构进行搜索,搜索其中的对所述修改的内容的互补内容;以及,如果发现所有互补内容,则合并并压缩所述修改的并互补的内容,并将所述压缩的内容写入到所述存储器。
示例9可以包括示例8的主题,其中所述至少一个压缩器-解压缩器被配置成,当修改的内容被写出时,如果并非所有的互补内容都被发现:从所述存储器读取与所述修改的内容相关联的预先存储的经压缩的内容;解压缩所述相关联的内容;合并并压缩所述修改的内容,所述发现的互补内容,以及所述相关联的内容;以及,将所述合并并压缩的内容写入到所述存储器。
示例10可以包括示例1-7中的任何一个的主题,其中所述至少一个处理元件中的处理元件被配置成,写出未经压缩的数据的一个或多个字节,回避所述缓存组织结构;以及,其特征在于,所述至少一个压缩器-解压缩器被配置成:检测未经压缩的数据的所述一个或多个字节正在被写出;压缩所述未经压缩的数据;将所述已压缩数据写入到所述存储器;以及,将所述未经压缩的数据提供到所述缓存组织结构,以满足未来的数据请求。
在示例11中,示例1-10中的任何一个都可以可任选地包括:通信地耦合到所述至少一个处理元件和网络的通信接口;包括导航设备和显示器的用户界面,所述用户界面通信地耦合到所述至少一个处理元件;以及,存储应用逻辑的存储器,所述存储器可通信地耦合到所述至少一个处理元件,其中所述至少一个处理元件被配置成加载并执行所述应用逻辑,其中所述应用逻辑的所述执行包括通过所述用户界面呈现图形。
示例12可以包括至少一个计算机程序产品,其中包括至少一个存储了计算机程序逻辑的计算机可读介质,计算机程序逻辑包括导致压缩器-解压缩器执行以下操作的逻辑:如果有发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中:检测向存储器的对于数据的所希望的一个或多个字节的加载请求;响应于所述加载请求来解压缩从存储器提供的内容;标识来自内容的数据的所希望的一个或多个字节;向与所述发出请求的处理元件相关联的缓存体提供数据的所述所希望的一个或多个字节,所述缓存体是多个缓存体的缓存组织结构的一部分,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;以及,将来自所述内容的数据的剩余互补字节分布到所述缓存组织结构的一个或多个其他缓存体。
示例13可以包括示例12的主题,其中计算机程序逻辑还包括导致压缩器-解压缩器执行以下操作的逻辑,如果在处理数据的所述一个或多个互补字节的缓存体的填充完成之前有随后的向所述存储器的对数据的一个或多个互补字节的请求,则当处理数据的所述一个或多个请求的互补字节的所述缓存体检测并填充所述随后的请求时,取消所述随后的向存储器的请求以减少所述存储器接口上的通信量。
示例14可以包括至少一个计算机程序产品,其中包括至少一个存储了计算机程序逻辑的计算机可读介质,计算机程序逻辑包括导致压缩器-解压缩器执行以下操作的逻辑:检测未经压缩的修改的内容正在被从缓存组织结构的一个或多个缓存体写出,所述缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;保存检测到的修改的内容;对所述缓存组织结构进行搜索,搜索其中的对所述修改的内容的互补内容;以及,如果发现所有互补内容,则合并并压缩所述修改的并互补的内容,并将所述压缩的内容写入到存储器。
示例15可以包括示例14的主题,其特征在于,计算机程序逻辑还包括导致压缩器-解压缩器执行以下操作的逻辑,如果并非所有互补内容都被发现:从所述存储器读取与所述修改的内容相关联的预先存储的经压缩的内容;解压缩所述相关联的内容;合并并压缩所述修改的内容、所述发现的互补内容以及所述相关联的内容;以及,将所述合并并压缩的内容写入到所述存储器。
示例16可以包括至少一个计算机程序产品,其中包括至少一个存储了计算机程序逻辑的计算机可读介质,计算机程序逻辑包括导致压缩器-解压缩器执行以下操作的逻辑:检测未经压缩的数据的一个或多个字节正在被写出;压缩所述未经压缩的数据,所述未经压缩的数据回避了缓存组织结构,所述缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;将已压缩数据写入到存储器;以及,将所述未经压缩的数据提供到所述缓存组织结构,以满足未来的数据请求。
示例17可以包括用于处理数据的设备,包括,对于当有发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中时:用于检测向存储器的对于数据的所希望的一个或多个字节的加载请求的装置;用于响应于所述加载请求来解压缩从存储器提供的内容的装置;用于标识来自内容的数据的所希望的一个或多个字节的装置;用于向与所述发出请求的处理元件相关联的缓存体提供数据的所述所希望的一个或多个字节的装置,所述缓存体是多个缓存体的缓存组织结构的一部分,所述多个缓存体通过多个节点,彼此通信地耦合,通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;以及,用于将来自所述内容的数据的剩余互补字节分布到所述缓存组织结构的一个或多个其他缓存体的装置。
在示例18中,示例17可以可任选地包括,对于当在处理数据的所述一个或多个互补字节的缓存体的填充完成之前有随后的向所述存储器的对数据的一个或多个互补字节的请求时,用于当处理数据的所述一个或多个请求的互补字节的所述缓存体检测并填充所述随后的请求时,取消所述随后的向存储器的请求以减少所述存储器接口上的通信量的装置。
示例19可以包括用于处理数据的设备,包括:用于检测未经压缩的修改的内容正在被从缓存组织结构的一个或多个缓存体写出的装置,缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;用于保存检测到的修改的内容的装置;用于对所述缓存组织结构进行搜索,搜索其中的对所述修改的内容的互补内容的装置;以及,用于如果发现所有互补内容,则合并并压缩所述修改的并互补的内容,并将所述压缩的内容写入到存储器的装置。
在示例20中,示例19可以可任选地包括,对于当并非所有互补内容都被发现时:用于从所述存储器读取与所述修改的内容相关联的预先存储的经压缩的内容的装置;用于解压缩所述相关联的内容的装置;用于合并并压缩所述修改的内容、所述发现的互补内容以及所述相关联的内容的装置;以及,用于将所述合并并压缩的内容写入到所述存储器的装置。
示例21可以包括用于处理数据的设备,包括:用于检测未经压缩的数据的一个或多个字节正在被写出的装置;用于压缩所述未经压缩的数据的装置,所述未经压缩的数据回避了缓存组织结构,缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件以及通信地耦合到所述压缩器-解压缩器;用于将已压缩数据写入到存储器的装置;以及,用于将所述未经压缩的数据提供到所述缓存组织结构,以满足未来的数据请求的装置。
示例22可以包括一种处理数据的方法,包括:如果有发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中:由压缩器-解压缩器,检测向存储器的对于数据的所述所希望的一个或多个字节的加载请求;由所述压缩器-解压缩器,解压缩响应于所述加载请求从所述存储器提供的内容;由所述压缩器-解压缩器,标识来自所述内容的数据的所希望的一个或多个字节;由压缩器-解压缩器,将数据的所希望的一个或多个字节提供到与发出请求的处理元件相关联的缓存体,所述缓存体是多个缓存体的缓存组织结构的一部分,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;以及,将来自所述内容的数据的剩余互补字节分布到所述缓存组织结构的一个或多个其他缓存体。
在示例23中,示例22可以可任选地包括,如果在处理数据的所述一个或多个互补字节的缓存体的填充完成之前有随后的向所述存储器的对数据的一个或多个互补字节的请求,当处理数据的所述一个或多个请求的互补字节的所述缓存体检测并填充所述随后的请求时,取消所述随后的向存储器的请求以减少所述存储器接口上的通信量。
示例24可以包括至少一个机器可读介质,所述至少一个机器可读介质包括多个指令,响应于在计算设备上被执行,所述指令导致所述计算设备执行如示例22或示例23所述的方法。
示例25可以包括被配置成执行示例22或示例23所述的方法的设备。
示例26可以包括执行示例22或示例23所述的方法的计算机系统。
示例27可以包括执行示例22或示例23所述的方法的机器。
示例28可以包括一种包括用于执行示例22或示例23所述的方法的装置的设备。
示例29可以包括一种被配置成执行示例22或示例23所述的方法的包括存储器和芯片组的计算设备。
示例30可以包括一种处理数据的方法,包括:由压缩器-解压缩器检测未经压缩的修改的内容正在被从缓存组织结构的一个或多个缓存体写出,所述缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;由所述压缩器-解压缩器,保存所述检测到的修改的内容;由所述压缩器-解压缩器,对所述缓存组织结构进行搜索,搜索其中的对所述修改的内容的互补内容;以及,如果发现所有互补内容,则由所述压缩器-解压缩器,合并并压缩所述修改的并互补的内容,并将所述压缩的内容写入到存储器。
在示例31中,示例30可以可任选地包括,如果并非所有的互补内容都被发现:从所述存储器读取与所述修改的内容相关联的预先存储的经压缩的内容;解压缩所述相关联的内容;合并并压缩所述修改的内容,所述发现的互补内容,以及所述相关联的内容;以及,将所述合并并压缩的内容写入到所述存储器。
示例32可以包括至少一个机器可读介质,所述至少一个机器可读介质包括多个指令,响应于在计算设备上被执行,所述指令导致所述计算设备执行如示例30或示例31所述的方法。
示例33可以包括被配置成执行示例30或示例31所述的方法的设备。
示例34可以包括执行示例30或示例31所述的方法的计算机系统。
示例35可以包括执行示例30或示例31所述的方法的机器。
示例36可以包括一种包括用于执行示例30或示例31所述的方法的装置的设备。
示例37可以包括一种被配置成执行示例30或示例31所述的方法的包括存储器和芯片组的计算设备。
示例38可以包括一种数据处理的方法,包括:由压缩器-解压缩器,检测未经压缩的数据的一个或多个字节正在被写出;由所述压缩器-解压缩器,压缩所述未经压缩的数据,所述未经压缩的数据回避了缓存组织结构,所述缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;由所述压缩器-解压缩器,向存储器写入所述已压缩数据;以及,由所述压缩器-解压缩器,将所述未经压缩的数据提供到所述缓存组织结构,以满足未来的数据请求。
示例39可以包括至少一个机器可读介质,所述至少一个机器可读介质包括多个指令,响应于在计算设备上被执行,所述指令导致所述计算设备执行如示例38所述的方法。
示例40可以包括被配置成执行示例38的方法的设备。
示例41可以包括执行示例38的方法的计算机系统。
示例42可以包括执行示例38所述的方法的机器。
示例43可以包括一种包括用于执行示例38的方法的装置的设备。
示例44可以包括一种被配置成执行示例38所述的方法的包括存储器和芯片组的计算设备。
方法和系统在本文中是借助示出其功能、特征和关系的功能性构造框来披露的。为描述方便起见,在本文中任意地定义了这些功能性构造框的边界的至少一些。可定义替代的边界,只要指定功能及其关系能适当地实现。
尽管本文披露了多个实施例,然而应当理解它们只是以示例方式给出,而非作为限定。对人精通本技术的人员显而易见的是,在不偏离此处所公开的方法和系统的范围的情况下,可以对形式和细节进行各种更改。因此,权利要求书的宽度与范围不仅限于本文披露的任何示例性实施例。
如在此申请和权利要求中所使用的,由术语“中的一个或多个”连接的项目列表可以表示列出的项任何组合。例如,短语“A,B或C中的一个或多个”和“A,B,以及C中的一个或多个”可以表示A;B;C;A和B;A和C;B和C;或A,B和C。

Claims (22)

1.一种计算系统,包括:
至少一个处理元件;
通信地耦合到所述至少一个处理元件的存储器;
通信地耦合到所述至少一个处理元件,并通过存储器接口通信地耦合到所述存储器的至少一个压缩器-解压缩器;以及,
缓存组织结构,包括通过多个节点,彼此通信地耦合,通信地耦合到所述至少一个处理元件,以及通信地耦合到所述至少一个压缩器-解压缩器的多个分布式缓存体,
其中,所述至少一个压缩器-解压缩器被配置成管理和跟踪所述至少一个处理元件向所述存储器的数据请求的可变长度的未经压缩的数据,以及
如果有所述至少一个处理元件的发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中,所述至少一个压缩器-解压缩器被配置成:
检测加载请求;
解压缩从所述存储器提供的内容;
从所述内容标识数据的所述所希望的一个或多个字节;
向与所述发出请求的处理元件相关联的缓存体提供数据的所述所希望的一个或多个字节;以及
将来自所述内容的数据的剩余互补字节分布到所述缓存组织结构的一个或多个其他缓存体。
2.如权利要求1所述的计算系统,其特征在于,如果有所述至少一个处理元件的发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中:
所述发出请求的处理元件被配置成向所述存储器生成所述加载请求,以便要求数据的所述所希望的一个或多个字节。
3.如权利要求2所述的计算系统,其特征在于,所述分布数据的所述剩余互补字节包括当所述缓存体的带宽允许时将数据的所述一个或多个剩余互补字节中的一个或多个分布到一个或多个其他缓存体。
4.如权利要求2所述的计算系统,其特征在于,包含数据的一个或多个互补字节的缓存体比不包含数据的互补字节的缓存体具有较低的优先级,因为所述较低优先级的缓存体中的数据的所述一个或多个互补字节可以根据数据的未来请求的字节的需要,被替换。
5.如权利要求4所述的计算系统,其特征在于,数据的所述未来请求的字节是针对实际数据请求的。
6.如权利要求4所述的计算系统,其特征在于,数据的所述未来请求的字节是针对即时数据请求的。
7.如权利要求2所述的计算系统,其特征在于,如果在处理数据的所述一个或多个互补字节的缓存体的填充完成之前有随后的向所述存储器的对数据的一个或多个互补字节的请求:
处理数据的所述一个或多个请求的互补字节的所述缓存体被配置成检测并填充所述随后的对数据的所述一个或多个互补字节的请求;以及
所述至少一个压缩器-解压缩器被配置成取消所述随后的向存储器的请求以减少所述存储器接口上的通信量。
8.如权利要求1所述的计算系统:
其特征在于,所述至少一个处理元件中的处理元件被配置成向所述缓存组织结构写出未经压缩的数据的一个或多个字节;
其中所述缓存组织结构被配置成作为修改的内容,分布未经压缩的数据的所述一个或多个字节;以及
其中如果从所述缓存组织结构写出了任何所述修改的内容,则所述至少一个压缩器-解压缩器被配置成
检测修改的内容正在被写出;
保存所述检测到的修改的内容;
对所述缓存组织结构进行搜索,搜索其中的对所述修改的内容的互补内容;以及
如果发现所有互补内容,则合并并压缩所述修改的并互补的内容,并将所述压缩的内容写入到所述存储器。
9.如权利要求8所述的计算系统,其特征在于,所述至少一个压缩器-解压缩器被配置成,如果当所述修改的内容被写出时,并非所有的所述互补内容都被发现:
从所述存储器读取与所述修改的内容相关联的预先存储的经压缩的内容;
解压缩所述相关联的内容;
合并并压缩所述修改的内容,所述发现的互补内容,以及所述相关联的内容;以及
将所述合并并压缩的内容写入到所述存储器。
10.如权利要求1所述的计算系统:
其特征在于,所述至少一个处理元件中的处理元件被配置成,写出未经压缩的数据的一个或多个字节,回避所述缓存组织结构;以及
其中所述至少一个压缩器-解压缩器被配置成:
检测未经压缩的数据的所述一个或多个字节正在被写出;
压缩所述未经压缩的数据;
将已压缩的数据写入到所述存储器;以及
将所述未经压缩的数据提供到所述缓存组织结构,以满足未来的数据请求。
11.如权利要求1-10中任一权利要求所述的计算系统,进一步包括:
通信地耦合到所述至少一个处理元件和网络的通信接口;
包括导航设备和显示器的用户界面,所述用户界面通信地耦合到所述至少一个处理元件;以及
存储应用逻辑的存储器,所述存储器通信地耦合到所述至少一个处理元件,
其中所述至少一个处理元件被配置成加载并执行所述应用逻辑,其中所述应用逻辑的所述执行包括通过所述用户界面呈现图形。
12.一种处理数据的方法,包括,如果有发出请求的处理元件所希望的数据的一个或多个字节的缓存未命中:
由压缩器-解压缩器,检测向存储器的对于数据的所述所希望的一个或多个字节的加载请求;
由所述压缩器-解压缩器,解压缩响应于所述加载请求从所述存储器提供的内容;
由所述压缩器-解压缩器,标识来自所述内容的数据的所希望的一个或多个字节;
由所述压缩器-解压缩器,向与所述发出请求的处理元件相关联的缓存体提供数据的所述所希望的一个或多个字节,所述缓存体是多个缓存体的缓存组织结构的一部分,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件,以及通信地耦合到所述压缩器-解压缩器;以及
将来自所述内容的数据的剩余互补字节分布到所述缓存组织结构的一个或多个其他缓存体。
13.如权利要求12所述的方法,其特征在于,进一步包括,如果在处理数据的所述一个或多个互补字节的缓存体的填充完成之前有随后的向所述存储器的对数据的一个或多个互补字节的请求,则当处理数据的所述一个或多个请求的互补字节的所述缓存体检测并填充所述随后的请求时,取消所述随后的向存储器的请求以减少所述存储器接口上的通信量。
14.如权利要求12所述的方法,其特征在于,进一步包括:
由压缩器-解压缩器,检测未经压缩的数据的一个或多个字节正在被写出;
由所述压缩器-解压缩器,压缩所述未经压缩的数据,所述未经压缩的数据回避了缓存组织结构,所述缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件以及通信地耦合到所述压缩器-解压缩器;
由所述压缩器-解压缩器,向存储器写入已压缩的数据;以及
由所述压缩器-解压缩器,将所述未经压缩的数据提供到所述缓存组织结构,以满足未来的数据请求。
15.至少一个机器可读介质,所述至少一个机器可读介质包括多个指令,响应于在计算设备上被执行,所述指令导致所述计算设备执行如权利要求12-14中任一项所述的方法。
16.一种包括用于执行权利要求12-14中任一项所述的方法的装置的设备。
17.一种被配置成执行权利要求12-14中任一项所述的方法的包括存储器和芯片组的计算设备。
18.一种处理数据的方法,包括:
由压缩器-解压缩器检测未经压缩的修改的内容正在被从缓存组织结构的一个或多个缓存体写出,所述缓存组织结构包括多个缓存体,所述多个缓存体通过多个节点,彼此通信地耦合、通信地耦合到多个处理元件以及通信地耦合到所述压缩器-解压缩器;
由所述压缩器-解压缩器,保存所述检测到的修改的内容;
由所述压缩器-解压缩器,对所述缓存组织结构进行搜索,搜索其中的对所述修改的内容的互补内容;以及
如果发现所有互补内容,则由所述压缩器-解压缩器,合并并压缩所述修改的并互补的内容,并将所述压缩的内容写入到存储器。
19.如权利要求18所述的方法,其特征在于,进一步包括,如果并非所有的互补内容都被发现:
从所述存储器读取与所述修改的内容相关联的预先存储的经压缩的内容;
解压缩所述相关联的内容;
合并并压缩所述修改的内容,所述发现的互补内容,以及所述相关联的内容;以及
将所述合并并压缩的内容写入到所述存储器。
20.至少一个机器可读介质,所述至少一个机器可读介质包括多个指令,响应于在计算设备上被执行,所述指令导致所述计算设备执行如权利要求18或19所述的方法。
21.一种包括用于执行权利要求18或权利要求19所述的方法的装置的设备。
22.一种被配置成执行权利要求18或权利要求19所述的方法的包括存储器和芯片组的计算设备。
CN201510044011.4A 2014-02-28 2015-01-28 处理分布式缓存组织结构中的已压缩数据的方法、计算设备、计算系统和机器可读介质 Expired - Fee Related CN104881367B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/193,550 2014-02-28
US14/193,550 US9612833B2 (en) 2014-02-28 2014-02-28 Handling compressed data over distributed cache fabric

Publications (2)

Publication Number Publication Date
CN104881367A CN104881367A (zh) 2015-09-02
CN104881367B true CN104881367B (zh) 2018-05-22

Family

ID=53801463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510044011.4A Expired - Fee Related CN104881367B (zh) 2014-02-28 2015-01-28 处理分布式缓存组织结构中的已压缩数据的方法、计算设备、计算系统和机器可读介质

Country Status (4)

Country Link
US (1) US9612833B2 (zh)
CN (1) CN104881367B (zh)
DE (1) DE102015001088A1 (zh)
TW (1) TWI559142B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9990298B2 (en) * 2014-05-12 2018-06-05 Western Digital Technologies, Inc System and method for caching solid state device read request results
US10223000B2 (en) * 2015-05-21 2019-03-05 International Business Machines Corporation Data compression for grid-oriented storage systems
US10191850B2 (en) * 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US10747678B2 (en) * 2016-10-27 2020-08-18 Seagate Technology Llc Storage tier with compressed forward map
CN106776373B (zh) * 2017-01-12 2020-10-16 合肥速显微电子科技有限公司 一种面向移动设备的基于闪存的高速缓存系统及方法
US10438569B2 (en) * 2017-04-17 2019-10-08 Intel Corporation Consolidation of data compression using common sectored cache for graphics streams
US20220283947A1 (en) * 2020-03-18 2022-09-08 Nec Corporation Information processing device and information processing method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446145B1 (en) * 2000-01-06 2002-09-03 International Business Machines Corporation Computer memory compression abort and bypass mechanism when cache write back buffer is full
TW513634B (en) * 1999-05-19 2002-12-11 Ibm Virtual uncompressed cache for compressed main memory
CN1484151A (zh) * 2002-08-08 2004-03-24 �Ҵ���˾ 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和系统
CN1799032A (zh) * 2002-12-12 2006-07-05 国际商业机器公司 用于变化内存压缩机器的方法和装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249242B2 (en) * 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US20040139298A1 (en) * 2003-01-09 2004-07-15 International Business Machines Corporation Method and apparatus for instruction compression and decompression in a cache memory
US7162584B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to include hints within compressed data
WO2005116982A1 (en) * 2004-05-25 2005-12-08 Ssd Company Limited Data processing unit, drawing apparatus and pixel packer
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US7589738B2 (en) * 2004-07-14 2009-09-15 Integrated Device Technology, Inc. Cache memory management system and method
US9026568B2 (en) * 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US10032243B2 (en) * 2012-10-26 2018-07-24 Nvidia Corporation Distributed tiled caching
US9430394B2 (en) * 2013-12-12 2016-08-30 Mediatek Singapore Pte. Ltd. Storage system having data storage lines with different data storage line sizes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW513634B (en) * 1999-05-19 2002-12-11 Ibm Virtual uncompressed cache for compressed main memory
US6446145B1 (en) * 2000-01-06 2002-09-03 International Business Machines Corporation Computer memory compression abort and bypass mechanism when cache write back buffer is full
CN1484151A (zh) * 2002-08-08 2004-03-24 �Ҵ���˾ 用于将存储器压缩数据存储到存储器压缩磁盘上的方法和系统
CN1799032A (zh) * 2002-12-12 2006-07-05 国际商业机器公司 用于变化内存压缩机器的方法和装置

Also Published As

Publication number Publication date
TW201543217A (zh) 2015-11-16
US9612833B2 (en) 2017-04-04
CN104881367A (zh) 2015-09-02
DE102015001088A1 (de) 2015-09-03
US20150248292A1 (en) 2015-09-03
TWI559142B (zh) 2016-11-21

Similar Documents

Publication Publication Date Title
CN104881367B (zh) 处理分布式缓存组织结构中的已压缩数据的方法、计算设备、计算系统和机器可读介质
CN103546158B (zh) 用于图形处理的方法、系统和装置
CN104471540B (zh) 通过统一存储器架构的存储器共享
CN104205161B (zh) 用于块压缩图象的解压缩的系统、方法和计算机程序产品
US9524536B2 (en) Compression techniques for dynamically-generated graphics resources
CN107025183A (zh) 共享虚拟存储器
JP6242029B2 (ja) 低電力画像圧縮及び表示のための技術
CN104782136B (zh) 在云中处理视频数据
CN103179393B (zh) 降低运动补偿和显示刷新中的功耗的dram压缩方案
CN108702480A (zh) 电子设备和用于驱动其显示器的方法
CN104952033A (zh) 分布式图形处理器分级中的系统一致性
CN105074772B (zh) 通过使用不可达比特组合而改进的多采样抗锯齿压缩
CN104952087A (zh) Mipmap压缩
CN104756150A (zh) 深度缓冲
CN104915916A (zh) 使用选择性色彩变换的色彩压缩
JP6182225B2 (ja) カラーバッファ圧縮
CN103518227A (zh) 用于随机运动模糊栅格化的深度缓冲器压缩
JP6745020B2 (ja) 方法、コンピュータプログラム、コンピュータ可読記録媒体および装置
CN104125480B (zh) 改进的代码转换管理技术
CN104754348B (zh) 用于自适应深度偏移压缩的方法和设备
CN104054049B (zh) 用于复制源数据从而实现对源数据的并行处理的方法和系统
CN109426473A (zh) 无线可编程媒体处理系统
CN104025035B (zh) 当执行迭代处理连续数据的程序时减少对存储器io请求的数量
CN104272285B (zh) 用于渲染图形应用程序的方法和装置
CN104025037B (zh) 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate 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

Granted publication date: 20180522

Termination date: 20220128

CF01 Termination of patent right due to non-payment of annual fee