CN108604211B - 用于片上系统中的多区块数据事务的系统和方法 - Google Patents

用于片上系统中的多区块数据事务的系统和方法 Download PDF

Info

Publication number
CN108604211B
CN108604211B CN201780010430.3A CN201780010430A CN108604211B CN 108604211 B CN108604211 B CN 108604211B CN 201780010430 A CN201780010430 A CN 201780010430A CN 108604211 B CN108604211 B CN 108604211B
Authority
CN
China
Prior art keywords
block
compressed data
transaction
compressed
data
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
CN201780010430.3A
Other languages
English (en)
Other versions
CN108604211A (zh
Inventor
S·加代尔拉布
M·瓦里亚
W·维尔让塔拉
C·K·W·宋
M·斯滕伯格
V·安德里亚尼奇
A·里纳尔迪
V·沙马蒂
P·辛哈
T·王
A·格鲁贝尔
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN108604211A publication Critical patent/CN108604211A/zh
Application granted granted Critical
Publication of CN108604211B publication Critical patent/CN108604211B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文公开了用于管理便携式计算设备(“PCD”)中的片上系统(“SoC”)中的压缩数据事务大小的方法和系统的各种实施例。可以基于组中关联的压缩数据区块的长度,将多个压缩数据区块聚合到单一多区块事务中,其中这些压缩数据区块包括在压缩图像文件内。可以与该单一多区块事务相关联地生成元数据文件,以将该事务标识为多区块事务,并且提供偏移数据以区分与压缩数据区块相关联的数据。利用元数据,本解决方案的实施例可以提供与多区块事务相关联地存储的压缩数据的随机访问和修改。

Description

用于片上系统中的多区块数据事务的系统和方法
优先权要求与交叉引用
本申请根据35 U.S.C§119(e)要求享受2016年2月10日提交的、标题为“SYSTEMAND METHOD FOR MULTI-TILE DATA TRANSACTIONS IN A SYSTEM ON A CHIP”的美国临时专利申请No.62/293,646和2016年6月23日提交的、标题为“SYSTEM AND METHOD FORMULTI-TILE DATA TRANSACTIONS IN A SYSTEM ON A CHIP”的美国临时专利申请No.62/495,577的优先权。故以引用方式将这些申请的全部内容并入本文。
背景技术
便携式计算设备(“PCD”)正成为个人和专业人士人员的必需品。这些设备可以包括蜂窝电话、便携式数字助理(“PDA”)、便携式游戏控制台、掌上型计算机和其它便携式电子设备。PCD通常包含集成电路或片上系统(“SoC”),它们包括被设计为一起工作以向用户提供功能的多个组件。例如,SoC可以包含任意数量的处理引擎,例如,调制解调器、由内核组成的中央处理单元(“CPU”)、图形处理单元(“GPU”)等,这些处理引擎从SoC上的内存组件读取数据和指令并向其写入数据和指令。
通过称为总线的一组线路在设备之间传输数据和指令。总线可以包括具有地址总线和数据总线形式的两个部分;数据总线用于在处理引擎和存储器组件之间实际地传输数据和指令,并且地址总线用于传输元数据,该元数据指定存储器组件中的用于读取/写入数据或指令的物理地址。
在PCD中对总线带宽和存储器容量的高效使用,对于优化SoC上的处理组件的功能能力来说是非常重要的。通常,通过压缩数据来优化存储器容量的利用,使得数据需要存储器中的较少空间。对于来自或前往存储器组件的处理事务而言,数据压缩还增加总线带宽的可用性(每存储器访问的字节数);但是,因为压缩事务是相对较小的处理事务,因此压缩会降低访问存储器组件的效率(每个时钟周期的字节数)。此外,压缩需要使用“填充”或“填充数据”来将处理事务向上舍入到存储器的最小访问长度(MAL)的整数倍。在处理压缩数据时,大量的与填充数据的传输相耦合的小型处理事务提供了提高存储器利用效率的机会。
因此,本领域需要一种解决与携带无损和有损压缩数据相关联的低效率处理事务的系统和方法。
发明内容
本文公开了用于管理便携式计算设备(“PCD”)中的片上系统(“SoC”)中的压缩数据事务大小的方法和系统的各种实施例。一种示例性方法开始于:确定组中关联的压缩数据区块的长度,其中压缩数据区块包括在压缩图像文件内。该组可以通过(但不限于)以下方式来定义:处于图像文件中的一行的连续区块、处于图像文件中的一列的连续区块、或者在图像文件中的一个区域内连续的区块。基于所确定的长度,可以将压缩数据区块聚合到写入DRAM存储器组件的一个或多个区块事务中。可以与每个多区块事务相关联地生成元数据文件,以将所述事务标识为多区块事务,并且提供偏移数据以区分与压缩数据区块相关联的数据。利用元数据,本解决方案的实施例可以提供与多区块事务相关联地存储的压缩数据的随机访问和修改。
附图说明
在附图中,除非另外指出,否则贯穿各个视图的相同附图标记指代类似的部件。对于利用诸如“102A”或“102B”之类的字母字符进行命名的附图标记而言,这些字母字符命名可以区分在同一附图中出现的两个类似部件或者组成部分。当一个附图标记旨在涵盖所有附图之中利用该相同附图标记进行标注的所有部件时,可以省略用于附图标记的字母字符命名。
图1示出了压缩由多个数据子单元或区块组成的图像帧的效果;
图2示出了与DRAM存储器组件的压缩数据事务,其中该DRAM存储器组件具有每个事务所需的最小访问长度(“MAL”);
图3示出了与示例性图像帧相关联的一系列压缩数据事务;
图4示出了当根据被配置为将一对压缩区块聚合到单一事务的示例性多区块事务(“MTT”)实施例发送时,来自图3的一系列压缩数据事务;
图5示出了当根据被配置为将四个压缩区块聚合到单一事务的示例性多区块事务(“MTT”)实施例发送时,来自图3的一系列压缩数据事务;
图6A示出了被配置为在不利用多区块事务的系统中存储压缩区块的解决方案的示例性实施例;
图6B示出了根据用于一种系统的解决方案的实施例的元数据的示例性配置,其中该系统允许将多达两个压缩区块组合成一个事务的多区块事务(在可行时);
图6C示出了一种系统的示例性实施例,其中,当与该系统分配的用于存储一个未压缩区块的占用空间(footprint)相比,压缩区块的大小的总和更小时,该系统允许多区块事务;
图7A描绘了当多个压缩区块占据未压缩区块的占用空间时,所述解决方案的MTT配置;
图7B描绘了与修改的压缩区块相关联的经转换数据布局,其中,与原始压缩区块相比,该修改的压缩区块更大;
图8是根据所述解决方案的实施例,示出用于管理具有多区块事务的压缩数据的方法的逻辑流程图;
图9是示出具有无线电话形式的用于实现多区块事务(“MTT”)方法和系统的便携式计算设备(“PCD”)的示例性非限制性方面的功能框图;
图10是示出用于使用多区块事务(“MTT”)来管理存储在DRAM组件中的压缩数据的片上系统的实施例的功能框图;以及
图11是示出用于管理具有多区块事务的压缩数据的图9的PCD的示例性软件架构的示意图。
具体实施方式
本文所使用的“示例性的”一词意味着“用作例子、例证或说明”。本文中描述为“示例性”的任何方面不应被解释为是排他性的、比其它方面更优选或更具优势。
在本说明书中,术语“应用”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节码、标记语言文件和补丁。此外,本文所引用的“应用”还可以包括:在本质上不可执行的文件,例如,需要被打开的文档或者需要进行访问的其它数据文件。
在本说明书中,对“DRAM”或“DDR”存储器组件的引用应当被理解为设想更广泛类别的易失性随机存取存储器(“RAM”)中的任何一个,不应将本文所公开的解决方案的范围限制于特定类型或代的RAM。也就是说,应当理解的是,这些系统和方法的各种实施例提供了用于管理已根据无损和/或有损压缩算法压缩的数据的事务的解决方案,其不一定被限制为应用于与双数据速率存储器相关联的压缩数据事务。此外,可以预期的是,本文所公开的解决方案的某些实施例可以适用于DDR、DDR-2、DDR-3、低功率DDR(“LPDDR”)或者任何后续的DRAM。
如本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”、等等旨在指代通常与计算机相关的实体,无论其是硬件、固件、硬件和软件的结合、软件或运行中的软件,除非专门将其限制于某种与计算机相关的实体。例如,组件可以是,但不限于是:在处理器上运行的处理、处理器、对象、可执行文件、执行的线程、程序和/或计算机。举例而言,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于处理和/或执行线程中,组件可以位于一个计算机中和/或分布在两个或更多计算机之间。此外,这些组件能够从其上存储有各种数据结构的各种计算机可读介质中执行。这些组件可以通过诸如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互),以本地和/或远程处理的方式进行通信。
在本说明书中,术语“中央处理单元(“CPU”)”、“数字信号处理器(“DSP”)”、“图形处理单元(“GPU”)”和“芯片”可互换地使用。此外,CPU、DSP、GPU或芯片可以包括本文通常称为“内核”的一个或多个不同的处理部件。
在本说明书中,术语“引擎”、“处理引擎”、“处理组件”等等用于指代通过总线传输去往或来自存储器组件的数据的片上系统(“SoC”)内的任何组件。因此,处理组件可以指代但不限于:CPU、DSP、GPU、调制解调器、控制器等等。
在本说明书中,术语“总线”指代一组线路,通过该组线路,将数据从处理引擎发送到位于SoC之上或者之外的存储器组件或其它设备。应当理解的是,总线由两部分组成:地址总线和数据总线,其中数据总线传输实际数据,地址总线传输用于指定该数据在存储器组件中的位置的信息(即,地址和相关联的元数据)。术语“宽度”或“总线宽度”或“带宽”是指数据的量(即,“块大小”),其可以通过给定总线来每个周期进行发送。例如,16字节总线可以一次发送16字节的数据,而32字节总线可以每周期传输32字节的数据。此外,“总线速度”是指每秒可以通过给定总线来传输的数据块的次数。类似地,“总线周期”或“周期”是指通过给定总线对一个数据块的传输。
在本说明书中,使用术语“便携式计算设备(“PCD”)”来描述在有限容量的电源(例如,电池)下操作的任何设备。虽然电池供电的PCD已经使用了数十年,但随着第三代(“3G”)和第四代(“4G”)无线技术的出现,可再充电电池的技术进步已经使得具有多种能力的许多PCD成为可能。因此,PCD可以是蜂窝电话、卫星电话、寻呼机、PDA、智能电话、导航设备、智能本或读取器、媒体播放器、上述设备的组合、具有无线连接的膝上型计算机等等。
为了高效地利用总线带宽和DRAM容量,通常根据无损或有损压缩算法来压缩数据,如本领域普通技术人员所理解的。由于数据是压缩的,因此其占用的存储空间较少,使用更少的带宽来进行传输。但是,由于DRAM通常要求处理事务是一次要处理的最小数据量(最小访问长度,即“MAL”)的整数倍,因此压缩数据的处理事务可能需要填充数据以向上舍入到最小访问长度的整数倍(以字节为单位)。使用填充数据或“填充”来“填满”必须考虑的事务中的未使用容量,以满足MAL的整数倍要求。
例如,考虑从处理引擎传送到具有64字节MAL的DRAM的256字节数据区块。如果以未压缩的形式传输,则在具有32字节带宽的总线上传输时,在理想情况下,该256字节数据传输应占用8个周期的32字节数据块以完成。当压缩时,可以将相同的数据区块仅压缩在93字节上,因此只需要3个周期来传输;但是,为了满足MAL的整数倍要求,向该事务添加额外的35字节填充或装填,以便满足DRAM的64字节MAL。在该情况下,包含压缩区块的事务将变为128字节,其中93字节是压缩数据,35字节是填充/装填(其不包含任何有用信息)。包含填充/填充数据的要求可能导致总线上的容量有效减少,这是因为在事务上使用了带宽的一部分来发送填充数据而不是压缩数据。
有利的是,多区块事务解决方案的实施例通过以下方式来对抗有效总线容量的下降:将多个压缩区块聚合到单一事务中,从而增加每个事务的大小,减少系统中的总事务数量,并且降低每个事务中的填充字节与有用压缩数据的比率。下面将参照附图来描述多区块事务解决方案的示例性实施例的更详细说明。
转到图1,该图示出了压缩由多个数据子单元或区块组成的图像帧的效果。在本说明书中,在由256字节区块组成的图像帧的上下文中描述各个实施例。但是,值得注意的是,将理解256字节的区块大小以及各种压缩数据事务大小在本质上是示例性的,其并不暗示该解决方案的实施例在应用中只限于256字节区块大小。此外,应当理解的是,在本说明书中对DRAM的任何特定最小访问长度(“MAL”)的引用只是用于描述该解决方案的便利性,其并不暗示该解决方案的实施例在应用中只限于具有特定MAL要求的DRAM设备。因此,本领域普通技术人员应当认识到,在本说明书中引用的特定数据传输大小、块大小、总线宽度、MAL等等只是被提供用于示例性目的,而不是限制所设想的解决方案的范围,因为其可适用于具有相同数据传输大小、块大小、总线宽度、MAL等等的应用。
返回图1的视图,将未压缩图像帧(也称为“缓冲器”)描述成由30个未压缩的区块组成,每个区块具有如最暗阴影所表示的大小“K”。示例性大小K可以是256字节,但是,如上面所解释的,区块并不限于任何特定大小,可以根据应用来变化。如本领域普通技术人员所理解的,可以通过压缩器块(在图1中将其描绘成图像CODEC模块113)减小未压缩图像帧的大小,从而优化其在总线上的传输和最小化对存储器容量的影响,其中压缩器块在逐个区块的基础上应用压缩算法。压缩的结果是压缩图像帧加上元数据文件,如图1的视图中所观察到的。在已经经过压缩块113的压缩算法之后,压缩图像帧由原始的、未压缩图像帧中的区块组成。
在未压缩图像帧中,每个区块可以具有大小K,而在压缩图像帧中,每个区块可以具有大小K或者更小(K对应于不可能压缩、K-1字节、K-2字节、K-3字节、...、K=1字节)。在该视图中,形成压缩图像帧的各个区块通过不同级别的阴影来表示,其取决于压缩块已经将其压缩算法应用于给定区块所保持的数据而产生的压缩程度。值得注意的是,压缩块113为压缩图像帧元数据创建伴随缓冲区,如本领域普通技术人员将理解的。压缩图像帧元数据包含压缩图像帧中每个压缩区块的大小、类型和属性的记录。因为DRAM访问可以限于最小访问长度MAL的单元,所以可以将给定压缩区块的大小在元数据中表示为表示该压缩区块大小所需要的ABS的数量(例如,1MAL、2MAL、...、N MAL)。元数据中的这种大小描述允许缓冲区的未来读取器仅向存储器询问用于将每个区块解压缩回原始大小K所需要的最小所需数据量。
图2示出了具有DRAM存储器组件的压缩数据事务,其中该DRAM存储器组件满足:每个事务的要求是每个事务具有最小访问长度(“MAL”)的整数倍。如通过图2的视图所理解的,压缩区块的长度可以小于存储它的DRAM的最小访问长度要求的整数倍。因此,对压缩数据的请求需要一种事务,其中该事务包括满足MAL要求的整数倍所需要的一定量的无用数据或“填充”。向压缩的区块数据添加不携带任何信息的填充,以使事务大小是系统MAL的整数倍(i*MAL)。根据具体的芯片技术(例如,LPDDR2、LPDDR3、LPDDR4等)和存储器总线宽度(x16、x32、x64),示例性MAL可以是32字节或64字节。举例而言,具有63字节大小的压缩区块可以用1字节的填充数据进行填充,以便形成完整的64字节事务大小(2x32B MAL或1x64BMAL)。类似地,具有65字节大小的压缩区块可以用31字节进行填充(如果MAL是32字节的话)(3x32B MAL),或者用63字节的填充数据进行填充(如果MAL是64字节的话),以便获得一个完整的128字节事务大小(2x64B MAL)。应当注意,在上面的例子中,压缩区块大小的差异仅仅为2个字节;但是,由于65字节压缩区块超过64字节,所以它的事务必须包含明显更多的填充。
图3示出了与示例性图像帧相关联的一系列压缩数据事务。该图像帧示出为“N”列和“M”行的区块。根据本领域已知的方法,第一行区块中的前四个连续区块利用其未压缩长度、压缩长度和事务长度(压缩长度加上填充)来示出。为了便于说明起见,在前四个连续区块的上下文中进行说明(其中,所描绘的概念与除了图像帧的第一行区块中的前四个连续区块之外的区块组相关),如本领域普通技术人员所将理解的。
在未压缩状态下查看示例性的四个连续区块,每个区块(#1,0;#2,0;#3,0;#4,0)具有256字节长度(可以设想其它长度)。当压缩时,示例性的这四个连续区块分别具有112字节、56字节、33字节和177字节的长度。假设MAL是64字节,用于示例性四个连续区块中的每一个的事务长度可以分别是128字节(112字节的压缩数据加上16字节的填充)、64字节(56字节的压缩数据加上8字节的填充)、64字节(33字节的压缩数据加上31字节的填充)和192字节(177字节的压缩数据加上15字节的填充)。值得注意的是,为了处理所有四个示例性连续区块,本领域中已知的方法进行四个事务(每个压缩区块一个)。
转到图4,该图示出了当根据被配置为将一对压缩区块聚合到单一事务的示例性多区块事务(“MTT”)中实施例发送时,来自图3的一系列示例性的压缩数据事务。有利的是,因为MTT解决方案在适当时对一组压缩区块进行聚合,所以与现有技术方法相比,可以减少处理压缩图像帧的所有区块所需要的事务数量。此外,对于更大的MTT,可以在处理压缩图像帧的压缩区块时,减少为了满足整数倍MAL要求所需要的填充字节与压缩数据字节的比率,从而以两种方式来优化系统性能。首先,由于降低了针对每个事务的数据字节的填充字节数,因此增加了总线带宽利用率。其次,通过增加每个事务的平均大小和减少事务的总数,增加了DRAM访问效率。MTT解决方案可适用于生成可变大小的压缩块的任何无损或有损压缩方法。如通过进一步的描述和附图而变得更显而易见的,MTT解决方案将多个压缩区块聚合到针对DRAM存储器设备的一个或多个事务中,通过这样做,可以通过产生相对较高的压缩比(其导致更高的DRAM利用率)、增加平均事务大小(其导致提高的DRAM效率)、减少给定数据块的事务计数(其导致提高的DRAM吞吐量),来提高压缩算法的有效性。
值得注意的是,虽然本文描述的示例性MTT实施例使用行中的连续区块,但MTT实施例并不限于对图像帧的一行中的连续区块进行聚合。相反,可以设想的是,MTT实施例可以根据任何逻辑分组(例如,但不限于:一行中的连续区块、一列中的连续区块、一个区域中的连续区块等等)来聚合区块。
返回到图4的视图,MTT实施例被配置为对多达两个连续区块(例如,区块#1,0和#2,0)进行聚合。与相对于图3描述的内容一致,处于其未压缩状态的示例性四个连续区块(#1,0;#2,0;#3,0;#4,0)各自具有256字节长度(可以设想其它长度)。当压缩时,示例性的四个连续区块分别具有112字节、56字节、33字节和177字节的长度。假设MAL是64字节,示例性MTT解决方案检查前两个连续区块(#1,0和#2,0)的长度,判断是否可以将压缩区块组合成单一事务。在该视图中,因为区块#1,0(112字节)和#2,0(56字节)可以组合成192字节的单一事务(112字节加上56字节加上24字节的填充),其是64字节MAL的整数倍(3x 64=192),因此MTT解决方案将前两个压缩区块聚合到一个大的事务中,从而避免了发出两个较小事务的需要。类似地,图4中示出的示例性MTT解决方案可以将区块#3,0(33字节)和#4,0(177字节)组合成单一的较大256字节事务,从而避免两个较小的事务。
可以设想的是,某些MTT实施例可以将两个以上的区块组合成单一事务。例如,图5示出了当根据被配置为将四个压缩区块聚合到单一事务的示例性多区块事务(“MTT”)中实施例发送时,来自图3的一系列压缩数据事务。如通过图5的视图所观察到的,可以将压缩区块#1,0(112字节)、#2,0(56字节)和#3,0(33字节)组合成单一的较大256字节事务,而区块#4,0(177字节)也在其自己的256字节事务中进行处理。用此方式,可以对去往和来自DRAM的事务进行聚合,使得与现有技术方法的情况相比,更频繁地使用256字节的最有效、最佳事务长度。
图6A示出了用于在不利用多区块事务的系统中,存储压缩区块CT1 610(1)和CT2610(2)的示例性配置。在该附图中,标记为CT1和CT2的方框包括为了满足系统的MAL要求而所需要的填充数据。如图6A中所示,压缩区块CT1 611(1)占据分配给未压缩区块#1的空间的一部分,压缩区块CT2 611(2)占据分配给未压缩区块#2的空间的一部分。由于压缩,CT1611(1)数据不占用为未压缩区块#1分配的整个DRAM空间,如方框612(1)所示的未使用的剩余空间使用标签“无数据”进行标记。CT2 611(2)具有类似的情况。标记为“无数据”的方框612(1)和612(2)表示将被未压缩数据占用,但在CT1 611(1)或CT2 611(2)写入DRAM时不写入的DRAM位置(由于以MAL为单位的填充压缩区块的长度可能小于分配给未压缩区块的存储器占用空间的大小)。因此,每个压缩区块占据的空间等于或小于DRAM中的未压缩区块的分配空间。通过减少每个区块写入DRAM的数据量,压缩产生功率节省并增加了可用的DRAM带宽。
此外,图6A还示出了CT2 611(2)的压缩比高于CT1 611(1)的压缩比的场景,因此与CT1 611(1)相关联的“无数据”区域的大小相比,与CT2 611(2)相关联的类似标记区域的大小更大。此外,图6A还表示在不利用多区块事务的系统中,用于压缩区块(CT1和CT2)的元数据的示例性配置。每个压缩区块的元数据615(1)和615(2)占据DRAM中的一个空间单元(U)。所述单元的大小必须大于或等于以MAL为单位来表示每个压缩区块的最大大小所需要的位数。例如,如果系统中所允许的最大事务是256字节,并且MAL是64字节,那么只需要2比特来表示压缩区块的长度。替代地,对于系统中允许的最大事务是256字节的相同系统而言,如果要将MAL减少到32字节,则需要最少3比特的元数据来表示压缩区块的长度。在图6A中,假设每个元数据条目在DRAM中具有长度U,其中U是以MAL为单位表示每个压缩区块的大小所需要的比特数量加上用于未来扩展的保留比特数量。标记为“CT1:MAL中的大小”的字段616(1)表示以MAL的倍数来表示的压缩CT1的大小。当字段616(1)的值乘以MAL值(以字节为单位)时,所获得的结果是压缩区块的大小(以字节为单位),如将字段616(1)“CT1:MAL中的大小”连接到图6A中的压缩区块CT1 611(1)的末端的箭头所示。应当注意,虽然每个压缩区块的大小会有所不同(因为实现的压缩比取决于各个区块的像素内容),但存储压缩区块的大小所需要的比特数量必须足够大,以容纳为了以MAL为单位来表示未压缩区块的值所需要的比特数量,从而适应压缩区块的长度加上填充等于未压缩区块的长度的情况。
图6B示出了根据用于一种系统的元数据的示例性配置,其中该系统根据被配置为将多达两个压缩区块组合成一个事务的解决方案的实施例来允许多区块事务(在可行时)(类似于图4)。在该情况下,将分配给两个连续区块的元数据的DRAM位置(占用空间)(615(1)和615(2))组合成单一字段625(1),其存储用于描述在未压缩区块#1 620(1)和未压缩区块#2 620(2)的DRAM位置中存储的内容的元数据。在图6B中描绘的示例性情形中,与系统分配的用于存储一个未压缩区块的占用空间(在图6中示出的例子中为256B)相比,压缩区块TC1 621(1)和压缩区块(CT2)的大小的总和更大。在该情况下,在两个压缩区块的大小大于系统分配的用于存储一个未压缩区块的占用空间的情况下,压缩区块的生成方将每个压缩区块插入到未压缩区块的相应位置的开始处。在图6B所示的例子中,生成方向DRAM发出两个写事务。第一写事务在分配给未压缩的区块#1 620(1)的位置的开始处写入压缩区块(CT1)621(1)。第二写事务在分配给未压缩区块2 620(2)的位置的开始处写入压缩区块(CT2)621(2)。应当注意,需要两个单独的事务(每个压缩区块一个)以确保不会由于写入“无数据”部分622(1)而浪费DRAM带宽和功率。
用于图6B中的CT1和CT2的元数据位于单一元数据字段625(1)中。单一元数据字段625(1)的长度可以是用于在未实现多区块事务的系统中描述压缩数据区块611(1)和611(2)的每个元数据字段的长度的两倍(2U)。替代地,如果需要更多比特来描述压缩区块(图6B中没有示出),则用于实现多区块事务的系统的元数据的大小可以大于2U。图6B示出了实现多区块事务的系统的元数据字段包括报头子字段626(0),其中报头子字段626(0)描述了压缩区块在存储器中的布置。报头字段626(0)有三种可能的值:如图6B中所示的“普通”、如图6C中所示的“多区块事务(MTT)”、以及如图7中所示的“具有“读取-修改-写入(MMT-RMW)的“MMT””。图6B中的报头字段626(0)指示“普通”配置,其中在该情况下,与系统分配的用于存储一个未压缩区块的占用空间相比,两个压缩区块的大小更大,压缩区块的生成方在用于未压缩区块的相应位置的开始处插入每个压缩区块。
想要读取压缩区块621(1)或621(2)的任何实体可以首先读取元数据625(1)以确定报头字段类型。对于“普通”报头字段,例如图6B中所示,读取器可以针对压缩区块CT1或CT2中的每一个,向存储器发出一个读取事务。不可能发出一个事务来读取图6B中的CT1和CT2,这是因为CT1 621(1)占用的存储器占用空间、无数据字段622(1)和CT2 621(2)将大于系统所允许的最大事务长度(在该情况下,其为256B)。因此,在图6B中描绘的情况下,没有实现多区块转换的益处。
图6C示出了允许多区块事务的系统的一种示例性情况,其中,与系统分配的用于存储一个未压缩区块的占用空间(在图6所示出的例子中,其为256B)相比,压缩区块TC1631(1)和压缩区块TC2 631(2)的大小的总和更小。在该场景下,两个压缩区块的大小小于系统分配的用于存储一个未压缩区块的占用空间,两个压缩区块的生成方将两个压缩区块联接成一个事务,并且向DRAM发出单一事务,其将联接的压缩区块插入在用于未压缩区块CT1的相应位置的开始处。未压缩区块CT2的位置未被写入,如无数据标签632(2)所示出的。在这样做时,生成方向DRAM发出单一事务,该事务传送用于CT1 631(1)和CT2 631(2)的数据。该单一事务包含多个区块(两个),因此称为“多区块事务”。通过将来自两个区块的数据组合成单一事务,系统节省了DRAM功率和带宽,并减少了流经系统的事务数量。
有利的是,如图6C中所示,图6C中的数据的生成方还可以产生单一相对应的元数据字段635(1),其描述了CT1 631(1)和CT2 631(2)的大小和位置。单一元数据字段635(1)的长度可以是用于在未实现多区块事务的系统中描述压缩数据区块611(1)和611(2)的每个元数据字段的长度的两倍(2U)。图6C中的元数据字段635(1)的大小和组织可以与图6B中的元数据字段625(1)的大小和组织相同,这是因为这两种情况可以在实现多区块事务的系统中共存。该关联的元数据的类型字段636(0)包含用于“多区块事务”的代码(该代码是(MTT)),因为生成方能够将CT1和CT2组合成单一事务,数据位于存储器中的未压缩区块#1的位置。此外,元数据还包含以MAL 636(1)为单位来描述CT1的大小和以MAL为单位来描述CT2 636(2)的大小的字段。在将用于CT1和CT2的元数据字段所占据的位置,生成方将该元数据字段写入DRAM。
一旦将MTT写入DRAM(如图6C中所示),基于图6中所示的数据和元数据组织,随机读取是可能的。想要读取压缩区块631(1)或631(2)的任何实体必须首先读取元数据635(1)以确定报头字段类型。对于“MTT”报头字段(如图6B中所示),例如,读取器可以通过请求DRAM从未压缩区块#1的起始点开始读取数据,长度等于CT1 631(1)和CT2 631(2)之和(以MAL为单位),来向存储器发出一个读取事务以获取压缩区块CT1 631(1)和CT2 631(2)。这节省了系统中的功率和带宽,这是因为两个区块是通过单一事务来获取的。替代地,读取器可以仅通过发出一个事务来读取CT1631(1),其中该事务在未压缩区块#1的起始点处开始读取,其中长度等于以MAL为单位的CT1 631(1)的大小。替代地,读取器可以仅通过发出一个事务来读取CT2 631(2),其中该事务在未压缩区块#1的起始点加上CT1 631(1)的大小的长度(以MAL为单位)处开始。该读取事务长度等于CT2 631(2)的大小。本领域普通技术人员应当清楚的是,本文公开的数据和元数据的组织允许减少向存储器发出的事务的数量而不损失灵活性,以便能够随机地读取或写入压缩区块。
对于已经作为图6C中所示出的MTT来写入DRAM的压缩区块来说,随机写入也是可能的。例如,考虑要修改第二区块CT2或者如果创建新的压缩区块CT2的情况。如果创建新的压缩区块CT2,并且新创建/修改的CT2的大小小于或等于原始CT2 631(2)与原始无数据字段632(1)的总和,则新的CT2可以使用针对DRAM的单一事务来覆盖较旧的CT2,其将新的CT2写入较旧的CT2的起点。随后,写入器可以修改元数据字段635(2)以反映CT2的新大小,而不对元数据635(1)进行任何其它改变。但是,如果新CT2的大小大于原始CT2 631(2)和原始无数据字段632(1)的总和,则它将不适合未压缩区块#1的相同占用空间,如图6C中所示。在该情况下,多区块事务是不可行的。随后,新CT2的生成方应当通过使用单一事务将修改的CT2写入未压缩区块#2的占用空间中,来恢复到使用图6B的组织。写入器对用于较旧的CT1和较新的CT2的相关联元数据进行修改为类似于625(1),其中,新的CT2的大小放入在626(2)中,较旧的CT1的大小在626(1)内,并且将类型字段626(0)设置为普通。有利的是,CT1的内容从不移动或触摸,并且保持在其位置。
对于已经作为图6C中所示出的MTT来写入DRAM的新的或者修改的CT1区块来说,随机写入也是可能的。例如,考虑创建新压缩区块CT1并且新创建/修改的CT1的大小小于或等于原始CT1 631(1)的总和的情况。在该情况下,新的CT1可以使用针对DRAM的单一事务来覆盖较旧的CT1,其在较旧的CT1的起始点处写入新的CT1。写入器不修改元数据字段635(2),因此MAL 636(1)中的字段CT1大小将包含用于CT1的较旧的较大大小。这是必要的,因为CT1636(1)的较旧大小反映了CT2 631(2)的起点,因此不能进行修改。虽然这在读取较小的CT1时表现出较少的低效率,但使用MTT来利用一个事务读取CT1和CT2能获得更高的带宽和功率节省。
如果新CT1的大小大于原始CT1 631(1),则不能将其写入与原始CT1 631(1)相同的位置,因为它将覆盖现有的CT2数据631(2)。在该情况下,图7中示出的数据和元数据布局可以与设置为“读取-修改-写入(MMT-RMW)”的Type(类型)字段一起使用。图7A示出了MTT配置,其中,CT1和CT2占据未压缩区块#1的占用空间(并且是图6C的数据部分的副本)。图7B示出了当修改的CT1(MCT1)641(1)的大小大于原始CT1 631(1)时,修改CT1时的变换的数据布局。如图7B中所描述的,修改的CT1(MCT1)的写入器将MCT1的数据写入到未压缩区块#2 640(2)的占用空间中,未压缩区块#1的占用空间中先前由CT1占据的数据被标记为无效数据,如图7B所示。用于该组织的元数据635(1)必须反映以下事实:CT2 641(2)位于未压缩区块#1的占用空间中,而MCT1 640(2)位于未压缩区块#2的占用空间中。将元数据的类型字段646(0)设置为MTT-RMMW,以指示它表示先前类型为MTT的两个区块,并且因此已将CT1修改为MCT1,其中MCT1大小大于CT1的原始大小。元数据646(3)中的第二字段是MAL中的原始CT1的大小,其提供了在DRAM中与未压缩区块#1的占用空间内的CT2的位置的偏移。
值得注意的是,读取器可以使用646(3)字段来定位CT2在DRAM中的未压缩区块#1的占用空间内的起始字节。元数据中的第三字段646(1)是MAL中的CT2的大小,其允许正在访问CT2的读取器向DRAM发出读取指令的正确大小。元数据646(2)的第四字段是修改的CT1(MCT1)的大小,使得需要访问MCT1的读取器可以发出下面的读取事务:该事务在DRAM中的未压缩区块#2的占用空间的起始处,开始读取等于646(2)的多个MAL。
上述算法/方法演示了将多达两个压缩区块组合成多区块事务。可以容易地将该算法扩展为:将一个事务中的压缩区块的最大数量增加到超过两个(三个、四个等等)。这可能需要相应地增加用于这些系统的元数据的大小。
图8是根据本文的解决方案的实施例,来示出用于利用多区块事务管理压缩数据的方法800的逻辑流程图。上面相对于先前附图来详细描述了由示例性方法800中的方框所捕获的特定功能以及其变体。从方框805开始,可以确定组中的压缩区块的长度。如上面所解释的,可以设想的是,一组压缩区块的大小和配置可以根据MTT实施例而变化。例如,某个MTT实施例可以寻求对图像帧的行中连续排序的压缩区块对进行聚合。此外,某个其它MTT实施例可以寻求对图像帧的一个区域中连续的多达四个压缩区块(例如,区块#1,0;#1,1;#2,0;#2,1)进行聚合。
在判断框810处,MTT实施例可以判断该组中的区块是否可以组合成单一事务(基于区块长度的总和来确定)。如果不可能或者不期望区块的组合,则沿着“否”分支,方法800返回。如果可以并且期望将该组中的区块组合成单一事务,则沿着“是”分支转到方框815,生成多区块事务以包括来自该组中的多个区块的压缩区块数据。生成与该MTT事务相关联的元数据,使得可以随机地访问和更新该MTT事务中的每个压缩区块。
在判断框820处,方法800可以识别先前存储在与MTT事务相关联的存储器空间中的压缩区块是否需要更新。如果不需要,则沿着“否”分支,并且方法800返回。如果需要更新先前聚合到MTT事务的压缩数据,则沿着“是”分支转到判断框825。
在判断框825处,如果修改的压缩文件的大小等于或小于原始压缩文件,则沿着“否”分支转到方框830,并且将修改的数据改写原始压缩数据。但是,如果修改的压缩文件的大小大于原始压缩文件的大小,则沿着“是”分支转到方框835。
在方框835处,可以将修改的数据写入与第二事务相关联的未使用的存储器位置,其中,作为多区块聚合的结果而先前不需要第二事务。方法800转到方框840,更新与该MTT事务相关联的元数据,以便反映每第一个事务存储的压缩区块的原始数据是无效的,并且可以在与先前未使用的第二个事务相关联的存储空间中,找到用于该压缩区块的“新鲜”修改数据。方法800返回。
图9是示出具有无线电话形式的用于实现多区块事务(“MTT”)方法和系统的便携式计算设备(“PCD”)100的示例性非限制性方面的功能框图。如图所示,PCD 100包括片上系统102,后者包括耦合在一起的多核中央处理单元(“CPU”)110和模拟信号处理器126。如本领域普通技术人员所应当理解的,CPU 110可以包括第零内核222、第一内核224和第N内核230。此外,代替CPU 110,也可以使用数字信号处理器(“DSP”),如本领域普通技术人员所应当理解的。
通常,多区块事务(“MTT”)聚合器模块101可以通过硬件和/或软件来形成,可以负责将图像帧的多个压缩区块组合到单一事务中。可以设想的是,例如,MTT聚合器101可以根据图像CODEC模块113执行的无损或有损压缩算法,对针对DRAM存储器115的写突发(其在图9的视图中通常标记为112)进行压缩,并组合到单一多区块事务中。
如图9中所示,显示控制器128和触摸屏控制器130耦合到数字信号处理器110。在片上系统102之外的触摸屏显示器132,耦合到显示控制器128和触摸屏控制器130。此外,PCD 100还可以包括视频解码器134,例如,逐行倒相(“PAL”)编码器、顺序与存储彩色电视系统(“SECAM”)编码器、国家电视制式委员会(“NTSC”)编码器或者任何其它类型的视频编码器134。视频编码器134耦合到多核CPU 110。视频放大器136耦合到视频编码器134和触摸屏显示器132。视频端口138耦合到视频放大器136。如图9中所示,通用串行总线(“USB”)控制器140耦合到CPU 110。此外,USB端口142耦合到USB控制器140。存储器112(其可以包括PoP存储器、高速缓存116、掩膜ROM/启动ROM、启动OTP存储器、DDR类型的DRAM存储器115(参见后续附图))还可以耦合到CPU 110。此外,用户识别模块(“SIM”)卡146也可以耦合到CPU110。此外,如图9中所示,数码相机148可以耦合到CPU 110。在一个示例性方面,数码相机148是电荷耦合器件(“CCD”)相机或者互补金属氧化半导体(“CMOS”)相机。
如图9中所进一步示出的,立体声音频CODEC 150可以耦合到模拟信号处理器126。此外,音频放大器152可以耦合到立体声音频CODEC 150。在一个示例性方面,第一立体声扬声器154和第二立体声扬声器156耦合到音频放大器152。图9示出了麦克风放大器158还可以耦合到立体声音频CODEC 150。另外,麦克风160可以耦合到麦克风放大器158。在一个特定的方面,调频(“FM”)无线调谐器162可以耦合到立体声音频CODEC 150。此外,FM天线164耦合到FM无线电调谐器162。此外,立体声耳机166可以耦合到立体声音频CODEC 150。
此外,图9还指示射频(“RF”)收发机168可以耦合到模拟信号处理器126。RF开关170可以耦合到RF收发机168和RF天线172。如图9中所示,键盘174可以耦合到模拟信号处理器126。此外,具有麦克风的单声道耳机176可以耦合到模拟信号处理器126。此外,振动器设备178可以耦合到模拟信号处理器126。此外,图9还示出了电源180(例如,电池)通过电源管理集成电路(“PMIC”)180耦合到片上系统102。在一个特定的方面,电源188包括可充电DC电池或者DC电源,后者是通过将交流电(“AC”)驱动到连接到AC电源的DC变换器来得到的。
此外,CPU 110还可以耦合到一个或多个内部、片上热传感器157A,以及一个或多个外部、片外热传感器157B。片上热传感器157A可以包括一个或多个正比于绝对温度(“PTAT”)温度传感器,后者是基于垂直PNP结构,并通常专用于互补金属氧化物半导体(“CMOS”)甚大规模集成(“VLSI”)电路。片外热传感器157B可以包括一个或多个热敏电阻。热传感器157可以产生电压下降,利用模数转换器(“ADC”)控制器(没有示出)将该电压下降转换成数字信号。但是,也可以使用其它类型的热传感器157。
触摸屏显示器132、视频端口138、USB端口142、照相机148、第一立体声扬声器154、第二立体声扬声器156、麦克风160、FM天线164、立体声耳机166、RF开关170、RF天线172、键盘174、单声道耳机176、振动器178、热传感器157B、PMIC 180和电源188,在片上系统102之外。但是,应当理解的是,在图9中的PCD 100的示例性实施例中描述成在片上系统102之外的这些器件中的一个或多个,可以在其它示例性实施例中位于芯片102之上。
在特定的方面,本文所描述的方法步骤中的一个或多个,可以由存储器112中所存储的可执行指令和参数来实现,或者实现成形成MTT聚合器模块101和/或图像CODEC模块113。此外,MTT聚合器模块101、图像CODEC模块113、存储器112、在其中所存储的指令、或者它们的组合,可以服务成用于执行本文所描述的方法步骤中的一个或多个的单元。
图10是示出用于使用多区块事务(“MTT”)来管理存储在DRAM组件115中的压缩数据的片上系统102的实施例的功能框图。如图10的视图中的箭头205所指示的,处理引擎201可以通过系统总线211,提交用于从DRAM 115读取数据或者将数据写入DRAM 115或者其组合的事务请求。如本领域普通技术人员所应当理解的,处理引擎201(例如,CPU 110)在执行工作负载时,可以获取和/或更新存储在DRAM存储器115的地址处的指令和/或数据。
当处理引擎201生成用于经由总线211传输到高速缓冲存储器116和/或DRAM存储器115的数据传输时,图像CODEC模块113可以对图像帧的区块大小的单元进行压缩,如本领域任何普通技术人员所应当理解的。随后,MTT聚合器模块101可以寻求将这些压缩区块中的两个或更多组合成单一事务,与存储器控制器114一起工作以更高效地使用DRAM 115容量和总线211带宽。使用与MTT事务相关联的元数据,存储器控制器114可以根据MTT事务,针对存储在DRAM 115中的数据,对来自处理引擎201的访问请求和/或写请求进行服务。
图11是示出用于管理具有多区块事务的压缩数据的图9的PCD的示例性软件架构的示意图。如图11中所示,CPU或数字信号处理器110经由主总线211耦合到存储器112。如上所述,CPU 110是具有N个内核处理器的多核异构处理器。也就是说,CPU 110包括第一内核222、第二内核224和第N内核230。如本领域普通技术人员所知道的,第一内核222、第二内核224和第N内核230中的每一个都可用于支持专用的应用或程序。替代地,可以将一个或多个应用或程序分布在这些可用的内核中的两个或更多上来进行处理。
CPU 110可以从MTT聚合器模块101(其可以包括软件和/或硬件)接收命令。如果将模块101实现成软件,则模块101包括由CPU 110执行的指令,其向CPU 110和其它处理器执行的其它应用程序发出命令。
可以将CPU 110的第一内核222、第二内核224到第N内核230集成在单一集成电路芯片上,或者可以将它们集成或耦合在多电路封装中的不同芯片上。设计人员可以经由一个或多个共享高速缓存,来耦合第一内核222、第二内核224到第N内核230,设计人员可以经由诸如总线、环状、网状和交叉拓扑之类的网络拓扑来实现消息或指令传送。
总线211可以包括经由一个或多个有线或无线连接的多个通信路径,如本领域所已知的、以及如在上面的定义中所描述的。总线211可以具有用于实现通信的其它元件(例如,控制器、缓冲器(高速缓存)、驱动器、中继器和接收机),但为了简单起见,省略了这些元件。此外,总线211还可以包括地址、控制和/或数据连接,以便在前述的部件之间实现适当的通信。
当PCD 100使用的逻辑利用软件来实现时,如图11中所示,则应当注意的是,可以将下面中的一个或多个存储在任何计算机可读介质上,以便由任何与计算机相关系统或方法使用,或者结合任何与计算机相关系统或方法来使用:启动逻辑250、管理逻辑260、MTT接口逻辑270、应用存储280中的应用、以及文件系统290的一部分。
在本文档的上下文中,计算机可读介质是能够包含或存储计算机程序和数据,以便由与计算机相关系统或方法使用或者结合与计算机相关系统或方法来使用的电、磁、光或其它物理器件或单元。各种逻辑单元和数据存储可以利用任何计算机可读介质来体现,以便由指令执行系统、装置或设备使用,或者结合该指令执行系统、装置或设备进行使用,该指令执行系统、装置或设备例如是基于计算机的系统、包含处理器的系统、或者是可以从该指令执行系统、装置或设备获取指令并执行这些指令的其它系统。在本文档的上下文中,“计算机可读介质”可以是能够存储、传输、传播或者传送程序,以便由指令执行系统、装置或设备使用或者结合该指令执行系统、装置或设备进行使用的任何单元。
计算机可读介质可以是例如,但不限于:电、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。计算机可读介质的更具体示例(非详尽列表)包括下面的各项:具有一个或多个电线的电连接(电)、便携式计算机磁盘(磁)、随机存取存储器(RAM)(电)、只读存储器(ROM)(电)、可擦除可编程只读存储器(EPROM、EEPROM或闪存)(电)、光纤(光)和便携式压缩光盘只读存储器(CDROM)(光)。应当注意,计算机可读介质甚至可以是纸质的,或者能在其上打印程序的其它适当介质,这是由于例如通过纸介质或其它介质的光扫描,可以电子地捕获该程序,随后以适当的方式进行编译、解释或者处理(如果需要的话),并随后存储在计算机存储器中。
在替代的实施例中,当利用硬件来实现启动逻辑250、管理逻辑260以及或许的MTT接口逻辑270中的一个或多个时,可以利用下面技术中的任何一种或者组合来实现各种逻辑,其中这些技术中的每一种都是本领域公知的:具有用于在数据信号上实现逻辑功能的逻辑门的离散逻辑电路、具有适当组合的逻辑门的专用集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等等。
存储器112是诸如闪存或固态存储器件之类的非易失性数据存贮设备。虽然将存储器112描述成单一设备,但存储器112可以是将不同的数据存贮设备耦合到数字信号处理器110(或者其它的处理器内核)的分布式存储器设备。
启动逻辑250包括用于选择性地识别、装载和执行用于聚合和管理多区块事务的一个或多个可执行指令。启动逻辑250可以识别、装载和执行选择MTT程序。可以在嵌入式文件系统290的程序存储296中找到示例性选择程序。当该示例性选择程序被CPU 110中的内核处理器中的一个或多个执行时,其可以根据MTT聚合器模块101所提供的一个或多个信号进行操作以创建和管理多区块事务。
管理逻辑260包括用于终止相应的处理器内核中的一个或多个上的MTT程序,以及选择性地识别、装载和执行更适当的替换程序的一个或多个可执行指令。管理逻辑260被布置为在运行时执行这些功能,或者当PCD 100加电并被该设备的操作者使用时,管理逻辑260执行这些功能。可以在嵌入式文件系统290的程序存储296中找到替换程序。
接口逻辑270包括用于呈现、管理和与外部输入进行交互,以观测、配置或者更新在嵌入式文件系统290中存储的信息的一个或多个可执行指令。在一个实施例中,接口逻辑270可以结合经由USB端口142接收的制造商输入进行操作。这些输入可以包括要从程序存储296中删除或者增加到程序存储296中的一个或多个程序。替代地,这些输入可以包括针对程序存储296中的程序中的一个或多个的编辑或改变。此外,这些输入可以识别针对启动逻辑250和管理逻辑260中的一个或二者的一个或多个改变或者其完全替换。举例而言,这些输入可以包括针对能够组合到单一MTT事务的多个压缩区块的改变,和/或针对有资格聚合到单一MTT事务的一组区块的定义的改变。
接口逻辑270使制造商能根据PCD 100上的规定的操作状况,可控地配置和调整终端用户的体验。当存储器112是闪存时,可以对下面中的一个或多个进行编辑、替换或者修改:启动逻辑250、管理逻辑260、接口逻辑270、应用存储280中的应用程序或者嵌入式文件系统290中的信息。在一些实施例中,接口逻辑270可以准许PCD 100的终端用户或者操作者搜索、定位、修改或者替换启动逻辑250、管理逻辑260、应用存储280中的应用和嵌入式文件系统290中的信息。操作者可以使用所获得的接口来进行改变,其中这些改变将在PCD 100的下一次启动时实现。替代地,操作者可以使用所获得的接口来进行改变,其中这些改变在运行时进行实现。
嵌入式文件系统290包括分层布置的存储器管理存储292。在该方面,文件系统290可以包括其总的文件系统容量的保留部分,以便存储用于配置和管理PCD 100使用的各个MTT算法的信息。
本说明书所描述的处理或者处理流程中的某些步骤,自然地在本发明的其它步骤之前以实现如上所述的功能。但是,本发明并不限于这些所描述的步骤的顺序,如果这种顺序或者序列并不改变本发明的功能的话。也就是说,应当认识到,在不脱离本发明的保护范围或者精神的基础上,一些步骤可以在其它步骤之前执行、之后执行或者并行地执行(基本同时地执行)。在一些实例中,在不脱离本发明的基础上,可以省略或者不执行某些步骤。此外,诸如“其后”、“转而”、“接着”等等之类的词语,并不旨在限制这些步骤的顺序。这些词语仅仅只是用于引导读者遍历该示例性方法的描述。
另外,编程领域的普通技术人员能够编写计算机代码或者识别适当的硬件和/或电路,以便例如基于本说明书中的流程图和相关联的描述,没有困难地实现所公开的发明内容。因此,对于充分地理解如何利用和使用本发明来说,并不认为是必需要公开特定的程序代码指令集或者详细的硬件设备。在上面的描述中,结合描绘各个处理流程的附图,来更详细地解释所主张的计算机实现的处理的创新型功能。
在一个或多个示例性方面,本文所描述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。举例而言,但非做出限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。
因此,虽然本文详细地描绘和描述了选定的方面,但应当理解的是,可以在不脱离本发明的精神和保护范围的基础上,对其做出各种替代和改变,如所附权利要求书所规定的。

Claims (30)

1.一种用于管理便携式计算设备PCD中的片上系统SoC中的压缩数据事务大小的方法,所述方法包括:
确定组中关联的压缩数据区块的长度,其中,所述压缩数据区块包括在压缩图像文件中;
基于所确定的长度,确定是否将所述压缩数据区块聚合到单一多区块事务中;
响应于确定将所述压缩数据区块聚合到单一多区块事务中,将所述压缩数据区块聚合到单一多区块事务中,其中,所述压缩数据区块的长度的总和小于存储器组件中的一个未压缩数据区块的占用空间;
生成与所述单一多区块事务相关联的元数据文件,其中,所述元数据文件将所述事务标识为多区块事务,并且提供偏移数据以区分与所述压缩数据区块相关联的数据;以及
将所述单一多区块事务写入所述存储器组件中的表示第一未压缩数据区块的占用空间的位置中,而不写入表示第二未压缩数据区块的占用空间的位置中。
2.根据权利要求1所述的方法,还包括:
确定与所述单一多区块事务相关联的第一压缩数据区块需要修改;
确定所述第一压缩数据区块处于其修改形式下的长度等于或小于所述第一压缩数据区块处于其原始形式下的长度;以及
使用修改的形式来改写所述原始形式。
3.根据权利要求1所述的方法,还包括:
确定与所述单一多区块事务相关联的第一压缩数据区块需要修改;
确定所述第一压缩数据区块处于其修改形式下的长度大于所述第一压缩数据区块处于其原始形式下的长度;
将所述修改形式的所述第一压缩数据区块写入与第二事务相关联的未使用存储空间;以及
更新所述元数据文件以使与所述原始形式相关联的数据无效,并且识别与所述修改形式相关联的所述数据的位置。
4.根据权利要求1所述的方法,其中,所述存储器组件是双倍数据速率存储器组件。
5.根据权利要求1所述的方法,其中,所述压缩数据区块是根据无损压缩算法来压缩的。
6.根据权利要求1所述的方法,其中,所述组中的区块在所述压缩图像文件的行中是顺序的。
7.根据权利要求1所述的方法,其中,所述组中的区块在所述压缩图像文件的列中是顺序的。
8.根据权利要求1所述的方法,其中,所述组中的区块在所述压缩图像文件的区域中是连续的。
9.一种用于管理便携式计算设备PCD中的片上系统SoC中的压缩数据事务大小的系统,所述系统包括:
多区块事务MTT聚合器模块,其可操作用于:
确定组中关联的压缩数据区块的长度,其中,所述压缩数据区块包括在压缩图像文件中;
基于所确定的长度,确定是否将所述压缩数据区块聚合到单一多区块事务中;
响应于确定将所述压缩数据区块聚合到单一多区块事务中,将所述压缩数据区块聚合到单一多区块事务中,其中,所述压缩数据区块的长度的总和小于存储器组件中的一个未压缩数据区块的占用空间;
生成与所述单一多区块事务相关联的元数据文件,其中所述元数据文件将所述事务标识为多区块事务,并且提供偏移数据以区分与所述压缩数据区块相关联的数据;以及
将所述单一多区块事务写入所述存储器组件中的表示第一未压缩数据区块的占用空间的位置中,而不写入表示第二未压缩数据区块的占用空间的位置中。
10.根据权利要求9所述的系统,其中,所述MTT聚合器模块还可操作用于:
确定与所述单一多区块事务相关联的第一压缩数据区块需要修改;
确定所述第一压缩数据区块处于其修改形式下的长度等于或小于所述第一压缩数据区块处于其原始形式下的长度;以及
使用修改的形式来改写所述原始形式。
11.根据权利要求9所述的系统,其中,所述MTT聚合器模块还可操作用于:
确定与所述单一多区块事务相关联的第一压缩数据区块需要修改;
确定所述第一压缩数据区块处于其修改形式下的长度大于所述第一压缩数据区块处于其原始形式下的长度;
将所述修改形式的所述第一压缩数据区块写入与第二事务相关联的未使用存储空间;以及
更新所述元数据文件以使与所述原始形式相关联的数据无效,并且识别与所述修改形式相关联的所述数据的位置。
12.根据权利要求9所述的系统,其中,所述存储器组件是双倍数据速率存储器组件。
13.根据权利要求9所述的系统,其中,所述压缩数据区块是根据无损压缩算法来压缩的。
14.根据权利要求9所述的系统,其中,所述组中的区块在所述压缩图像文件的行中是顺序的。
15.根据权利要求9所述的系统,其中,所述组中的区块在所述压缩图像文件的列中是顺序的。
16.根据权利要求9所述的系统,其中,所述组中的区块在所述压缩图像文件的区域中是连续的。
17.一种用于管理便携式计算设备PCD中的片上系统SoC中的压缩数据事务大小的系统,所述系统包括:
用于确定组中关联的压缩数据区块的长度的单元,其中,所述压缩数据区块包括在压缩图像文件中;
用于基于所确定的长度,来确定是否将所述压缩数据区块聚合到单一多区块事务中的单元;
用于响应于确定将所述压缩数据区块聚合到单一多区块事务中,将所述压缩数据区块聚合到单一多区块事务中的单元,其中,所述压缩数据区块的长度的总和小于存储器组件中的一个未压缩数据区块的占用空间;
用于生成与所述单一多区块事务相关联的元数据文件的单元,其中所述元数据文件将所述事务标识为多区块事务,并且提供偏移数据以区分与所述压缩数据区块相关联的数据;以及
用于将所述单一多区块事务写入所述存储器组件中的表示第一未压缩数据区块的占用空间的位置中,而不写入表示第二未压缩数据区块的占用空间的位置中的单元。
18.根据权利要求17所述的系统,还包括:
用于确定与所述单一多区块事务相关联的第一压缩数据区块需要修改的单元;
用于确定所述第一压缩数据区块处于其修改形式下的长度等于或小于所述第一压缩数据区块处于其原始形式下的长度的单元;以及
用于使用修改的形式来改写所述原始形式的单元。
19.根据权利要求17所述的系统,还包括:
用于确定与所述单一多区块事务相关联的第一压缩数据区块需要修改的单元;
用于确定所述第一压缩数据区块处于其修改形式下的长度大于所述第一压缩数据区块处于其原始形式下的长度的单元;
用于将所述修改形式的所述第一压缩数据区块写入与第二事务相关联的未使用存储空间的单元;以及
用于更新所述元数据文件以使与所述原始形式相关联的数据无效,并且识别与所述修改形式相关联的所述数据的位置的单元。
20.根据权利要求17所述的系统,其中,所述存储器组件是双倍数据速率存储器组件。
21.根据权利要求17所述的系统,其中,所述压缩数据区块是根据无损压缩算法来压缩的。
22.根据权利要求17所述的系统,其中,所述组中的区块在所述压缩图像文件的行中是顺序的。
23.根据权利要求17所述的系统,其中,所述组中的区块在所述压缩图像文件的列中是顺序的。
24.一种计算机可读介质,所述计算机可读介质中体现有计算机可读程序代码,所述计算机可读程序代码适于被执行以实现用于管理便携式计算设备PCD中的片上系统SoC中的压缩数据事务大小的方法,所述方法包括:
确定组中关联的压缩数据区块的长度,其中,所述压缩数据区块包括在压缩图像文件中;
基于所确定的长度,确定是否将所述压缩数据区块聚合到单一多区块事务中;
响应于确定将所述压缩数据区块聚合到单一多区块事务中,将所述压缩数据区块聚合到单一多区块事务中,其中,所述压缩数据区块的长度的总和小于存储器组件中的一个未压缩数据区块的占用空间;
生成与所述单一多区块事务相关联的元数据文件,其中所述元数据文件将所述事务标识为多区块事务,并且提供偏移数据以区分与所述压缩数据区块相关联的数据;以及
将所述单一多区块事务写入所述存储器组件中的表示第一未压缩数据区块的占用空间的位置中,而不写入表示第二未压缩数据区块的占用空间的位置中。
25.根据权利要求24所述的计算机可读介质,其中,所述方法还包括:
确定与所述单一多区块事务相关联的第一压缩数据区块需要修改;
确定所述第一压缩数据区块处于其修改形式下的长度等于或小于所述第一压缩数据区块处于其原始形式下的长度;以及
使用修改的形式来改写所述原始形式。
26.根据权利要求24所述的计算机可读介质,其中,所述方法还包括:
确定与所述单一多区块事务相关联的第一压缩数据区块需要修改;
确定所述第一压缩数据区块处于其修改形式下的长度大于所述第一压缩数据区块处于其原始形式下的长度;
将所述修改形式的所述第一压缩数据区块写入与第二事务相关联的未使用存储空间;以及
更新所述元数据文件以使与所述原始形式相关联的数据无效,以及识别与所述修改形式相关联的所述数据的位置。
27.根据权利要求24所述的计算机可读介质,其中,所述存储器组件是双倍数据速率存储器组件。
28.根据权利要求24所述的计算机可读介质,其中,所述压缩数据区块是根据无损压缩算法来压缩的。
29.根据权利要求24所述的计算机可读介质,其中,所述组中的区块在所述压缩图像文件的行中是顺序的。
30.根据权利要求24所述的计算机可读介质,其中,所述组中的区块在所述压缩图像文件的列中是顺序的。
CN201780010430.3A 2016-02-10 2017-01-14 用于片上系统中的多区块数据事务的系统和方法 Expired - Fee Related CN108604211B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662293646P 2016-02-10 2016-02-10
US62/293,646 2016-02-10
US201662495577P 2016-06-23 2016-06-23
US62/495,577 2016-06-23
US15/406,516 US20170228252A1 (en) 2016-02-10 2017-01-13 System and method for multi-tile data transactions in a system on a chip
US15/406,516 2017-01-13
PCT/US2017/013599 WO2017139069A1 (en) 2016-02-10 2017-01-14 System and method for multi-tile data transactions in a system on a chip

Publications (2)

Publication Number Publication Date
CN108604211A CN108604211A (zh) 2018-09-28
CN108604211B true CN108604211B (zh) 2021-07-20

Family

ID=59497652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780010430.3A Expired - Fee Related CN108604211B (zh) 2016-02-10 2017-01-14 用于片上系统中的多区块数据事务的系统和方法

Country Status (4)

Country Link
US (1) US20170228252A1 (zh)
EP (1) EP3414666B1 (zh)
CN (1) CN108604211B (zh)
WO (1) WO2017139069A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3938899A4 (en) * 2019-03-11 2022-04-27 Saferide Technologies Ltd. CONTROLLER AREA NETWORK (CAN) MESSAGES COMPRESSION SYSTEM AND METHOD
US10965944B2 (en) * 2019-07-01 2021-03-30 Qualcomm Incorporated Dynamic bandwidth voting
US11307841B2 (en) * 2019-07-30 2022-04-19 Sony Interactive Entertainment LLC Application patching using variable-sized units
CN111178490B (zh) 2019-12-31 2021-08-24 北京百度网讯科技有限公司 数据输出方法、获取方法、装置和电子设备
US11061571B1 (en) * 2020-03-19 2021-07-13 Nvidia Corporation Techniques for efficiently organizing and accessing compressible data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102483687A (zh) * 2009-09-01 2012-05-30 马维尔国际贸易有限公司 用于对非易失性半导体存储器中的数据进行压缩的系统和方法
CN104272258A (zh) * 2012-06-13 2015-01-07 甲骨文国际公司 用于在事务中间件机器环境中支持隐式版本控制的系统和方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080165843A1 (en) * 2007-01-03 2008-07-10 Human Monitoring Ltd. Architecture for image compression in a video hardware
US7987162B2 (en) * 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102483687A (zh) * 2009-09-01 2012-05-30 马维尔国际贸易有限公司 用于对非易失性半导体存储器中的数据进行压缩的系统和方法
CN104272258A (zh) * 2012-06-13 2015-01-07 甲骨文国际公司 用于在事务中间件机器环境中支持隐式版本控制的系统和方法

Also Published As

Publication number Publication date
US20170228252A1 (en) 2017-08-10
WO2017139069A1 (en) 2017-08-17
EP3414666A1 (en) 2018-12-19
CN108604211A (zh) 2018-09-28
EP3414666B1 (en) 2020-11-04

Similar Documents

Publication Publication Date Title
CN108604211B (zh) 用于片上系统中的多区块数据事务的系统和方法
CN111149095B (zh) 用于片上系统中的图像帧的凹式压缩的系统和方法
TWI645334B (zh) 用於管理操作狀態資料之方法、記憶體模組及主機裝置
CN110583018B (zh) 用于片上系统中的智能数据/帧压缩的系统和方法
CN110521208B (zh) 用于片上系统中的智能数据/帧压缩的系统和方法
JP6069031B2 (ja) 計算機及びメモリ管理方法
JP6276470B2 (ja) ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法
US10754785B2 (en) Checkpointing for DRAM-less SSD
TWI634421B (zh) 用以存取資料之電子裝置及其資料存取方法
WO2014100954A1 (zh) 数据控制方法及系统
US20200250101A1 (en) System and method for intelligent tile-based memory bandwidth management
US20160026588A1 (en) System and method for bus width conversion in a system on a chip
US20200250097A1 (en) System and method for intelligent tile-based prefetching of image frames in a system on a chip
CN110377534B (zh) 数据处理方法及装置
US20210200679A1 (en) System and method for mixed tile-aware and tile-unaware traffic through a tile-based address aperture
JP2018505489A (ja) システムオンチップにおける動的メモリ利用
WO2018026451A1 (en) System and method for out-of-stream order compression of multi-media data tiles in a system on a chip
US10719440B2 (en) Semiconductor device and memory access method
US11030976B2 (en) Image combination device and display system comprising the same
KR20090095842A (ko) 메모리 복사 방법 및 그 방법을 이용하는 컴퓨터 시스템
JP2005202628A (ja) メモリ制御装置、メモリ制御方法およびメモリ制御プログラム
KR20070118920A (ko) 공유 메모리를 가지는 디지털 처리 장치 및 공유 메모리의분할 영역 억세스 방법
WO2017146864A1 (en) System and method for improved memory performance using cache level hashing
JP2018010464A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210720