首页> 中国专利> 用于依据存储器访问模式执行数据存取的装置和方法

用于依据存储器访问模式执行数据存取的装置和方法

摘要

描述了用于依据存储器存取模式执行数据存取的装置和方法。在一个实施例中,所述方法包含:响应于存储器存取指令,确定由所述存储器存取指令所请求的数据的存储器存取模式。一旦确定了所述存储器存取模式,依据所述确定的存储器存取模式来存取由所述存储器存取指令所请求的数据。最后,一旦所述数据被存取了,依据所述处理器存取指令来处理所述数据。因此,在本发明的这个实施例中,依据包含之字形模式扫描、零树扫描、位平面提取、细粒度可伸缩性等等在内的存储器存取模式来存取数据。

著录项

  • 公开/公告号CN1501258A

    专利类型发明专利

  • 公开/公告日2004-06-02

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN200310119825.7

  • 申请日2003-10-10

  • 分类号G06F12/08;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人程天正;梁永

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 15:18:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-08

    未缴年费专利权终止 IPC(主分类):G06F12/08 授权公告日:20071128 终止日期:20181010 申请日:20031010

    专利权的终止

  • 2007-11-28

    授权

    授权

  • 2004-08-11

    实质审查的生效

    实质审查的生效

  • 2004-06-02

    公开

    公开

说明书

技术领域

本发明的一个或多个实施例总体而言涉及存储器存取领域。更具体而言,本发明的一个实施例涉及一种用于依据存储器访问模式来执行数据存取的方法和装置。

背景技术

近十多年来,媒体应用一直在驱动着微处理器的开发。实际上,将来的媒体应用将把高得多的计算要求放在可用的微处理器上。因此,明天的个人计算(PC)体验在音频/视频效果中将丰富得多以及更容易来使用。更重要地是,将来的微处理器将使计算和通信合并起来。

因此,图像的显示对于当前、以及将来的计算设备越来越普及。不幸地是,这类媒体应用所需要的数据数量趋向于非常的大。此外,在计算能力、存储器和磁盘存储器、以及网络带宽方面的增加,已经便于创建和使用更大和更高质量的图像。然而,更大和更高质量图像的使用经常导致在处理器和存储器之间的一个瓶颈。因而,尽管微处理器时钟频率不断增加,但是图像/视频处理(媒体)应用经常遭受存储器等待时间问题的困扰。

虽然随机存取存储器(RAM)声称能提供对包含在其内的存储器进行随机访问,但是RAM通常不能以随机模式存取。实际上,访问RAM不同部分所要求的时间会变化。例如,一个存储器设备内的存储单元的横向访问通常是非常方便的。与此相反,当使用常规内存设备时,纵向存储器访问是非常缓慢的。

因此,用于视频图像的光栅扫瞄存储器排列线性地放置像素数据以使其跨过一高速缓冲存储器内的图像平面,这经常导致许多的问题。首先,一条高速缓存线保持若干个基本图象块(例如,8×8或者16×16)的某些部分。作为对比,一个基本的图像块被包含在几条高速缓存线中。因而,访问一个块,假定8×8,相当于访问几条高速缓存线(例如,在假定我们正处理比单条高速缓存线更宽的图像的情况下,在当前体系结构中有至少8条高速缓存线)。

使用常规内存设备访问一个图像需要至少八次存储器访问。此外,很可能需要八个软件预先缓存指令来避免八次高速缓存器未命中。此外,当处理一个图象块时,传统的应用除了所述块本身之外还加载多余的数据到所述高速缓存里。因此,如果邻近的块没有被立即处理,则多余的数据被带进高速缓冲存储器中,这就会由于所述多余的数据而降低所述高速缓存器的效率。

一种用于在处理图象数据涉及基于块的存储器排列时可提供改进的高速缓存器局部性的解决方案。虽然基于块的存储器排列方案提供了更高的高速缓存器局部性,但是使用一条指令访问一个8像素或者16像素的纵向集合仍然是不被支持的。为了访问一个纵向数据集,大多数的传统的实现使用压缩和解压缩操作来转置所述数据。不幸地是,在大多数应用中这是一个缓慢的过程。此外,在诸如图像/视频压缩之类的一些应用中,像素数据必须以变化的扫描次序加以访问,这几乎是所述像素数据的随机访问。

此外,不同的视频/图像算法和矩阵操作需要依据变化的存储器访问模式以及位平面提取来进行数据存取。实际上,依据变化的存储器访问模式的数据存取是图像和视频编码应用所需要的,上述这些应用包含例如零树图像编码、用于离散余弦变换(DCT)的之字形扫描,在联合摄影专家组(JPEG)2000和运动图像专家组-四(MPE6-4)细粒度可伸缩性中的位平面提取。不幸地是,在传统的图像/视频系统中,在JPEG2000图像编码标准中对位面进行编码会占据中央处理单元(CPU)执行时间的40%。因此,这仍需要克服上述现有技术中的一个或多个局限性。

附图说明

在附图中通过示例而不是限制的方式来说明了本发明的不同实施例,在所述附图中:

图1给出了根据本发明一个实施例的实现高速缓存处理器的计算机系统的框图。

图2给出了一个框图,所述框图依据本发明的另一个实施例进一步说明了在图1中所描述的处理器。

图3A和3B描述了这样的框图,所述框图依据本发明的一实施例说明了128位压缩SIMD数据类型。

图3C和3D描述了这样的框图,所述框图依据本发明的另一个实施例说明了64位压缩SIMD数据类型。

图4描述了一个框图,所述框图说明了在本技术领域中已知的传统光栅扫描存储器排列。

图5描述了一个框图,所述框图说明了根据本发明一个实施例的按照存储器访问模式的存储器读取操作。

图6描述了一个框图,所述框图进一步说明了依据本发明另一实施例的、如图1和2所描述的使用一高速缓存处理器的计算机系统。

图7A和7B描述了这样的框图,所述框图说明了依据本发明另一实施例的高速缓存处理器(CaPro)。

图8A描述了一个框图,所述框图说明了依据本发明一实施例的一个零树编码数据存取模式。

图8B描述了一个框图,所述框图说明了依据本发明一个实施例的一个位平面提取数据存取模式。

图9依据本发明的一实施例描述了如图1、2和6中所示的计算机系统的制造系统。

图10描述了一个流程图,所述流程图依据本发明的一实施例说明了一种用于依据所接收到的存储器存取模式来存取数据的方法。

图11描述了一个流程图,所述流程图依据本发明的另一实施例说明了另外一种用于确定所接收到的存储器存取指令的存储器存取模式的方法。

图12描述了一个流程图,所述流程图依据本发明的一实施例说明了另外一种用于依据所接收到的存储器存取模式来存取数据的方法。

图13描述了一个流程图,所述流程图依据本发明的另一实施例说明了另外一种用于将数据块加载到本地数据缓冲器中的方法。

图14描述了一个流程图,所述流程图依据本发明的一个实施例说明了另外一种用于在本地高速缓存器未命中之后向一个或多个存储器缓冲器发出一个数据请求的方法。

图15描述了一个流程图,所述流程图依据本发明的另一实施例说明了另外一种用于对包含有请求数据的数据块进行加载的方法。

图16描述了一个流程图,所述流程图依据本发明的另一实施例说明了另外一种用于在一个或多个存储器缓冲器中存储数据以维护高速缓存器一致性的方法。

图17描述了一个流程图,所述流程图依据本发明的另一实施例说明了另外一种用于根据由一存储器存取指令所指示的存储器存取模式来存取数据的方法。

图18描述了一个流程图,所述流程图依据本发明的另一实施例说明了另外一种用于根据所接收的存储器存取指令来存储所存取的数据的方法。

图19描述了一个流程图,所述流程图依据本发明的示例性实施例说明了另外一种用于根据所接收到的存储器存取指令来存储所存取的数据的方法。

具体实施方式

描述了一种用于依据存储器存取模式来执行数据存取的方法和装置。在一个实施例中,所述方法包含:响应于存储器存取指令,确定与所述存储器存取指令相关联的数据的存储器存取模式。一旦确定了所述存储器存取模式,依据所确定的存储器存取模式来存取与所述存储器存取指令相关联的数据。最后,一旦所述数据被存取了,依据所述存储器存取指令来存储所述数据。因此,在本发明的这个实施例中,依据包含之字形模式扫描、零树扫描、位平面提取、细粒度可伸缩性等等的存储器存取模式来存取数据,以允许依据随机存储器存取模式的存储器存取。

在下面的描述中,为了说明起见,阐述了许多具体的细节以便提供对本发明实施例的一个彻底了解。然而,对于在本领域的技术人员来说,在没有一些具体细节的情况下,显然可以实践本发明的各个实施例。此外,以下的描述提供了示例,而且为了说明起见,附图给出了各种例子。然而,因为这些示例仅仅用来提供本发明实施例的例子而不是提供本发明所有可能实施例的一个穷尽列表,所以它们不应该以一种限制的意义进行解释。在其它实例中,以框图形式显示了众所周知的结构和设备,以避免弄模糊本发明实施例的细节。

以下详细说明的部分以对数据位的操作的算法和符号表示而给出。这些算法的描述和表示,被数据处理领域的那些技术人员使用来把他们的工作实质传送给所述领域的其它技术人员。在此描述的算法是指趋向期望结果的自相一致的动作序列。所述动作是那些需要物理量的物理操作的动作。这些量可以采取电的或者磁的、能够被存储、传送、组合、比较、以及以别的方式被操作的信号的形式。此外,主要是由于公共使用的原因,把这些信号称为位、值、元件、信号、字符、项、数值等等。

然而,这些及类似的术语是与适当的物理量相关联的,而且仅仅是应用于这些量的便利标记。除非以别的方式具体地说明了,否则应该理解:利用诸如“处理”或者“计算”或者“演算”或者“确定”或者“显示”等等的术语的讨论涉及一个计算机系统、或者类似的电子计算设备的动作和过程,所述计算机系统或者类似的电子计算设备,把在计算机系统设备内表示为物理(电子)量的数据操作并转换成为其它的如下数据,所述数据类似地表示为在诸如存储器、寄存器或者其他这样的信息存储器、传输、显示设备等等的计算机系统设备中的物理量。

在此所给出的算法及显示不是内在地与任何特定的计算机或者其它装置相关联。各种通用系统可以与根据此实施例的程序一起加以使用,或者可以证明构造一个更专用的装置以执行所要求的方法是方便的。例如,任何依据本发明实施例的方法能够以硬接线电路的形式、通过对一个通用处理器进行编程、或者通过硬件和软件的任何组合来实现。

在本领域的技术人员将会立即理解:本发明的实施例能够用不同于那些如下所述计算机系统配置进行实践,这些计算机系统配置包含手持设备、多处理器系统、基于微处理器或者可编程的消费者电子设备、数字信号处理(DSP)设备、网络PC、微型计算机、大型计算机、等等。本发明的实施例还能够在分布式计算环境中实践,在所述环境中,任务由通过一通信网络而链接的远程处理设备加以执行。从下面的描述中可得出各种系统所需的结构。

可以理解:各个术语和技术来由本领域技术人员使用来描述通信、协议、应用、实现、机制等等。一种这样的技术是依据一种算法或者数学表达式来描述一个技术的实现。即,虽然所述技术可以例如在一台计算机上作为执行代码来实现,但是所述技术的表示作为一个公式、算法、或者数学表达式可是更适宜且更简便地用于传送和通信。

因此,本领域的技术人员把表示A+B=C的一个方框认为是一个加法功能,它以硬件和/或软件的实现将使用两个输入(A和B)并且产生一个求和输出(C)。因此,公式、算法、或者数学表达式作为描述的使用将被理解为具有以至少硬件和/或软件的形式的物理实施例(诸如一个计算机系统,其中可以实践本发明的技术以及本发明的技术可以作为一个实施例而实现)。

在一个实施例中,本发明的方法以机器可执行指令的形式体现。这些指令能够用来导致一个可利用所述指令对其进行编程的通用或者专用处理器以执行本发明的方法。可选地,本发明实施例中的方法可以由包含硬连线逻辑的、用于执行所述方法的具体硬件部件执行,或者可以由编程的计算机部件和定制硬件部件的任何组合执行。

在一个实施例中,本发明可以作为一个计算机程序产品提供,所述计算机程序产品可以包含在上面存储如下指令的计算机可读介质或者机器,这些指令可以用来编程计算机(或者其他电子设备),以便依据本发明来执行一过程。所述计算机可读介质可以包含但不局限于软盘、光盘、压缩光盘、只读存储器(CD-ROM)、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程序只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁或者光卡、闪速存储器、等等。

因此,所述计算机可读介质包含适合于存储指令的任何类型的介质/机器可读介质。此外,本发明还可以作为一个计算机程序产品被下载。因而,所述程序可以从一台远程计算机(例如,一台服务器)传输到一台请求计算机(例如一客户)。可以经由一条通信链路(例如,一个调制解调器、网络连接等等)借助于包含在载波或者其他传播介质中的数据信号进行所述程序的传输。

计算体系结构

图1给出了一个能够在其上实现本发明一实施例的一个计算机系统100。计算机系统100包含用于传递信息的总线102,以及用于处理信息的、与总线102相耦合的处理器(CPU)110。计算机系统100还包含与102相耦合的、用于为处理器110存储信息和指令的存储器子系统104-108。处理器110包括执行单元130,执行单元130包括有算术逻辑部件(ALU)180、寄存器堆200、一个或多个高速缓冲存储器160(160-1、……、160-N)、译码器170和内部总线190。此外,系统100包括协处理器400,协处理器400包含本地高速缓存器(数据缓冲器)410,在此被称为高速缓存处理器400。

高速、临时的存储器缓冲器(高速缓存)160与执行单元130相耦合,并且为处理器110存储频繁地和/或最近使用的信息。如在此所描述的,存储器缓冲器160、以及本地数据缓冲器400包含但不局限于,高速缓冲存储器、固态存储器、RAM、同步RAM(SRAM)、同步数据RAM(SDRAM)或者任何能够支持高速缓冲数据的设备。因此,高速、临时的存储器缓冲器160可互换地被称为高速缓冲存储器160或者一个或多个存储器缓冲器160,而高速、临时的存储器缓冲器410被可互换地称为本地高速缓存器410或者本地数据缓冲器410。

此外,应当注意到在一个替换实施例中,术语存储器缓冲器涉及外部存储器104。然而,与视频/图像处理系统相对照,系统100包含高速缓存处理器400。如在下面进一步详细描述的那样,高速缓存处理器400被用来在依据一存储器存取模式110来进行存取时,通过在本地高速缓存器410中执行必要的数据转换来隐藏CPU110的存储器存取时间。因此,一个实施例可依据随机存储器存取模式来进行数据的存取,同时避免了处理器到存储器的瓶颈。

计算机系统还包含寄存器堆200,寄存器堆200被用来存储由处理器110存取的数据,并且经由内部总线170与执行单元130相耦合。在一个实施例中,寄存器堆200包含多媒体寄存器,例如,用于存储多媒体信息的SIMD(单指令,多数据)寄存器。在一个实施例中,多媒体寄存器每个都存储高达128位的压缩数据。多媒体寄存器可以是专用的多媒体寄存器或者是被用来存储多媒体信息及其它信息的寄存器。在一个实施例中,当执行多媒体操作时,所述多媒体寄存器存储多媒体数据,以及当执行浮点运算时,所述多媒体寄存器存储浮点数据。

在一个实施例中,执行单元130依据由处理器110所接收到的、包含在指令集140中的指令对图像/视频数据进行操作。执行单元130还依据在通用处理器中所实现的指令来对压缩、浮点以及标量数据进行操作。处理器110以及高速缓存处理器400能够支持Pentium微处理器指令集以及压缩指令,所述压缩指令对压缩数据进行操作。通过将压缩指令集包含在标准的微处理器指令集,诸如Pentium微处理器指令集中,压缩数据指令能够被容易地并入现有的软件(先前是为标准微处理器指令集而编写的)中。其他的标准指令集,诸如PowerPC以及Alpha处理器指令集也可以依据描述的发明加以使用。(Pentium是Intel公司的一个注册商标。PowerPCIM是IBM、APPLECOMPUTER和MOTOROLA的商标。AlphaTM是Digital Equipment Corporation的商标。)

在一个实施例中,本发明提供了多个高速缓存处理器(CP)移动(CPMOV)指令,它们在此统称为CP加载操作或者指令。此外,在描述的实施例中,CP加载以及CPMOV指令可以被称为存储器存取指令。在一个实施例中,所述存储器存取指令包含CP写和CP读操作。

因此,如图1所示的,所述指令集包含可支持字节数据(指令142-146)、字数据(指令148-152)和双字数据(指令154-158)的CP移动操作。使用这些操作,当前的图像处理技术可以通过使CPU110避开依据非标准或者特定数据存取模式进行高代价的存储器存取而得到改善,这些非标准或者特定数据存取模式包含例如之字形扫描、零树编码、位平面提取、MPEG4细粒度可伸缩性等等,它们都是所需要的图像视频编码应用。

在所描述的实施例中的参数MMX和XMM涉及64位寄存器,例如如图2中描述的寄存器214,以及128位寄存器,诸如在图2中描述的寄存器210。PATTERN-MAP参数指定了一个包含多个地址的存储单元,这些地址定义了在描述的实施例中存取数据所依据的存储器存取模式。START_ADDR参数涉及一个图像块内的起始地址,而OFFSET参数涉及距离先前或者起始地址的地址偏移量。如在下面进一步详细描述的那样,统称为CP加载操作的CPMOV操作,允许使用本地高速缓存器410进行数据的非横向/非纵向顺序(随机)存储器存取。

通过将指令集140包括在通用处理器110的指令集中连同用于执行这些指令的相关联电路,由许多现有的多媒体应用使用的操作可以更有效地使用一个通用处理器执行图像/视频处理。因此,通过使用单条指令来依据非标准或者随机存储器存取模式执行一个图像块的存储器存取,就可以加速和更有效地执行包含视频/图像编码的多媒体应用。此外,压缩指令能够使用处理器的数据总线的全部宽度来执行对压缩数据的操作。这样就消除了通过所述处理器的数据总线来传输更小的数据单元来一次一个单元地执行一个或多个数据单元的操作的需要。

仍然参见图1,本发明的计算机系统100可以包含一个或多个I/O(输入/输出)设备120,设备120包含诸如监控器的显示设备。所述I/O设备120也可以包含诸如键盘之类的输入设备以及诸如鼠标、跟踪球、或者跟踪板之类的光标控制。此外,所述I/O设备还可以包含网络连接器,以便使计算机系统100作为局域网(LAN)、内部网、外部网络或者广域网(WAN)的一部分。此外,I/O设备120包含与用于记录声音输入以便进行语音识别的麦克风相耦合的如下设备,所述设备用于录音和/或回放,诸如音频数字化器。所述I/O设备120还可以包含能够用来捕捉视频图像的视频数字化设备、诸如打印机的硬拷贝设备、以及CD-ROM设备等等。

处理器

图2说明了一个处理器110,以及高速缓存处理器(CaPro)400的详图。利用下述多种工艺技术中的任何一种,将处理器110和CaPro400实现在一个或多个衬底上,所述工艺技术例如是BiCMOS、CMOS、和NMOS。处理器110包含用于对处理器110所使用的控制信号和数据进行译码的译码器202。然后,数据能够经由内部总线205被存储在寄存器堆200中。为了清楚起见,一个实施例中的寄存器不应该被限制为意味着特定类型的电路。更准确地说,实施例中的寄存器仅仅需要能够存储和提供数据,以及执行在此描述的功能。在一个实施例中,CaPro400可以包含处理器110的寄存器以及内部总线的一部分。

根据数据的类型,数据可以被存储在整数寄存器202、寄存器210、寄存器214、状态寄存器208、或者指令指针寄存器206中。其他的寄存器能够被包含在寄存器堆204中,例如被包含浮点寄存器204中。在一个实施例中,整数寄存器202存储32位整型数据。在一个实施例中,寄存器210包含8个多媒体寄存器,R0212-1到R7212-7,例如,包含压缩数据的单指令、多数据(SIMD)寄存器。在一个实施例中,在寄存器210中的每个寄存器长度为128位,R1 212-1、R2 212 2和R3 212-3是寄存器210中的单独寄存器的示例。在寄存器210中的寄存器的32位能够被移入到在整数寄存器202中的整数寄存器中。类似地,整数寄存器中的值能够被移入寄存器210中的寄存器的32位中。

在一个实施例中,寄存器214包含8个多媒体寄存器,216-1到216-N,例如,包含压缩数据的单指令、多数据(SIMD)寄存器。在一个实施例中,寄存器214中的每个寄存器长度为64位。寄存器214中的寄存器的32位能够被移入到整数寄存器202中的整数寄存器中。类似地,整数寄存器中的值能够被移入寄存器214中的寄存器的32位中。状态寄存器208指示处理器109的状态。在一个实施例中,指令指针寄存器211存储要被执行的下一个指令的地址。整数寄存器202、寄存器210、状态寄存器208、寄存器214、浮点寄存器204和指令指针寄存器206它们都与内部总线190相连接。任何附加的寄存器也常和内部总线190相连接。

在另一个实施例中,一些寄存器能够供不同类型的数据使用。例如,寄存器210/214和整数寄存器202能够被组合在一起,其中每个寄存器能够存储整型数据或者压缩数据。在另一个实施例中,寄存器210/214能够被用作浮点寄存器。在这个实施例中,压缩数据或者浮点数据能够被存储在寄存器210/214中。在一个实施例中,组合的寄存器长度为192位,而且整数被表示为192位。在这个实施例中,在存储压缩数据和整型数据时,寄存器不需要区分这两种数据类型。

执行单元130与例如ALU180一起执行由处理器110执行的操作。这样的操作可以包含移位、加法、减法和乘法等等。功能单元130连接到内部总线190。在一个实施例中,如上所述,系统100包含高速缓存处理器(CaPro)400,包括数据缓冲器(本地高速缓存器)410,而处理器110包含一个或多个第二存储器缓冲器(高速缓存器)160。CaPro400,以及一个或多个高速缓冲存储器160和本地高速缓存器410,能够用来缓冲来自例如主存储器104的数据和/或控制信号。CaPro400以及高速缓冲存储器160被连接到译码器170,以及被连接来接收控制信号。

数据和存储格式

现在参见图3A和3B,图3A和3B说明了依据本发明一实施例的128位SIMD数据类型。图3A说明了四个128位压缩数据类型220,压缩字节222、压缩字224、压缩双字(双字)226和压缩四倍字228。压缩字节222的长度是包含16个压缩字节数据单元的128位。通常,一个数据单元是一个和其他同样长度的数据单元一起被存储在单个寄存器(或者存储单元)中的单个数据片。在压缩数据序列中,存储在寄存器中的数据单元的数目是128位除以以数据单元的位为单位的长度。

压缩字224长度是128位,并且包含8个压缩字的数据单元。每个压缩字包含16位的信息。压缩双字226长度为128位,并且包含四个压缩双字数据单元。每个压缩双字数据单元包含32位信息。压缩四倍字228长度为128位,而且包含两个压缩四倍字数据单元。因此,所有可用的位都被用在寄存器中。这个存储排列增加了所述处理器的存储效率。此外,利用同时存取的多个数据单元,现在能够同时对多个数据单元执行一个操作。

图3B依据本发明的一实施例说明了128位压缩浮点和整型数据类型230。压缩单精度浮点232说明了存储在如图2所示的一SIMD寄存器210中的四个32位浮点值。压缩双精度浮点234说明了存储在如图2所示的一SIMD寄存器210中的两个64位浮点值。如在下面进一步详细描述的那样,利用两个128位寄存器,压缩双精度浮点234可以被用来存储一个完整的子矩阵,其中每个寄存器128都包含以压缩双精度浮点格式存储的四个向量元素。压缩字节整数236说明了16个压缩整数的存储,同时压缩字整数238说明了8个压缩字的存储。最后,压缩双字整数240说明了四个压缩双字的存储,同时压缩四倍字整数242说明了在例如如图2所示的128位寄存器内的两个压缩四倍字整数的存储。

现在参见图3C和3D。图3C和3D描述了这样的方框图,所述方框图说明了依据本发明一实施例的64位压缩单指令多数据(SIMD)数据类型,如在寄存器214内所存储的。因而,图3C描述了四464位压缩数据类型250,压缩字节252、压缩字254、压缩双字256和压缩四倍字258。压缩字节252长度为64位,包含8个压缩字节数据单元。如上所述,在压缩数据序列中,存储在一个寄存器中的数据单元的数目为64位除以以一个数据单元的位为单位的长度。压缩字254长度为64位并且包含4个压缩字单元。每个压缩字都包含16位的信息。压缩双字256长度为64位并且包含2个压缩双字数据单元。每个压缩双字数据单元包含32位信息。最后压缩四倍字258长度为64位,并且正好包含一个64位的压缩四倍字数据单元。

现在参见图3D,图3D说明了依据本发明的另一个实施例,64位压缩浮点和整型数据类型260,如在寄存器214内所存储的。压缩单精度浮点262说明了在如图2所示的一SIMD寄存器214中所存储的两个32位浮点数值。压缩双精度浮点264说明了在如图2所示的一SIMD寄存器214中所存储的一个64位浮点值。压缩字节整数266说明了在如图2所示的一SIMD寄存器214中所存储的八个32位整数值。压缩双字整数270说明了在如图2所示的一SIMD寄存器214中所存储的两个32位整数值。最后,压缩四倍字整数272说明了在如图2所示的一SIMD寄存器214中所存储的一个64位整数值。

传统的图像块处理

如图4中描述的那样,当前用于图像/视频应用的光栅扫瞄存储器排列300以一种线性方式贯穿图像平面放置像素数据302。因此,在传统的光栅扫描存储器排列300中,一条高速缓存线通常保持了几个基本图像块(例如,8×8或者16×16)的一些部分。例如,一条高速缓存线能够保持用于四个单独基本图像块的一条线。在另一方面,一个基本的图像块通常被包含多条高速缓存线中。即,单个基本的块能够包含在例如八条单独的高速缓存线中。

依据Memorv存取模式的数据存取

现在参见图5,图5描述了一个框图,所述框图说明了依据本发明的一个实施例、依据一个存储器访问模式的存储器读取操作350。如说明的那样,图像352包括一个图像块,所述图像块由高速缓存线354(354-1,…,354-4)组成。为了处理这图像,本发明描述了存储器存取(CP-Load)操作/指令,它允许依据每一高速缓存/存储器线内的存储器存取模式来纵向读取/写入数据到一个目的地数据存储设备370中。与传统的存储器操作指令相反,响应于单条指令来执行这样一个操作。

为了支持由例如CPU所进行的依据一个存储器存取模式(如图5描述的那样)的存储器存取,如图1中说明的那样提供新的指令。在一个实施例中,一个新的指令看来像以下所示:

CPMOV[B|W|D]2[Q|DQ][MMX|XMM],patten_map,start_addr,offset

如图5中说明的那样,新的指令,假定CPMOVW2Q MMO,start_addr,pitch的效果如下所示:

MMO[0..15]←[start_addr+pattern_map[offset]]        (1)

MMO[16..31]←[start_addr+pattern_map+[offset]]      (2)

MMO[32..47]←[start_addr+pattern_map[offset]+*2]    (3)

MMO[48..63]←[start_addr+pattem_map[offset]+*3]     (4)

在一个实施例中,CP加载操作的实现是利用CaPro400来执行的,当依据随机/各种存储器存取模式来存取数据时使用本地高速缓存器410来隐藏数据存取时间。换句话说,CaPro400依据存储器存取模式来存取所请求的数据,并且例如如在图3A-3D中描述的那样,顺序地在一个目的地数据存储设备诸如z寄存器内顺序地存储数据。在一个替换的实施例中,CP加载指令/操作能够把本地高速缓存器指定为目的地设备。依据这个实施例,一旦请求的数据可用于由CPU110进行的顺序存储器存取,则CaPro400通知CPU110。

因此,如由操作1-4说明的那样,指令参数MMO涉及例如目的地数据存储设备370,如图5所示。如参考图1所描述的,CPMOV操作支持字节、字和双字的非横向顺序存储器读取。然而,本领域的那些技术人员将要理解:本发明的实施例可以应用于字节倍数的任何变化。因此,CPMOV操作用于说明的目的而提供,而且它不应该以一种限制的意义被解释。

因而,响应于单个CPMOV操作来实现移动操作1-4。此外,当检测到由CP加载操作所请求的数据的高速缓存器未命中时,CPMOV操作内的参数2Q和2DQ引导在本地高速缓存器410内的数据块加载。因此,在一个实施例中,当处理所述字节数据时,参数2Q要求在CP高速缓冲存储器410的相应部分内加载8字节8线的数据块。此外,当提供2DQ参数时,在所述CP高速缓冲存储器410的相应部分内加载一个8字节16线的块。

当处理字数据时,2Q参数要求在本地高速缓存器410内加载一个8字节4线的块,同时2DQ参数要求加载一个8字节8线块的数据。最后,当处理双字数据时,参数2Q要求加载一个8字节2线的块,而2DQ参数要求加载一个8字节4线的块。因此,假定CP移动操作如上所述,如果检测到请求数据的高速缓存器未命中,所执行的操作如下所述:

local Cache←[astart_addr][0..63]              (5)

local Cache←[[astart_addr+offset][0..63]      (6)

local Cache←[[astart_addr+offset*2][0..63]    (7)

local Cache←[astart_addr+offset*3][0..63]     (8)

到CP高速缓存器中,其中对齐的开始地址(astart_addr)=(start_addr&(-7))。可选地,在一个实施例中,可以依据存储器存取模式来选择数据块以确定包含所请求数据的图像块的最小维度。

高速缓存处理器-CaPro

现在参见图6,图6依据一个利用用于实现如上所述的CP加载操作的高速缓存处理器(CaPro)400的实施例,进一步说明了如图1中描述的计算机系统100。如说明的那样,CaPro400包含能够存储位和多倍字节的数据的本地高速缓存器410。在一个实施例中,本地高速缓存器410被再分成字节缓冲器、字缓冲器和双字缓冲器。然而,在本领域的技术人员将要理解:可以使用不同的多倍字节作为本地高速缓冲存储器410的各种数据缓冲器来实现本地高速缓冲存储器410。因此,图6仅仅为说明的目的提供而且不应该以一种限制的意义进行解释。在一个实施例中,高速缓存410被称为本地数据缓冲器,而一级高速缓存器160-1和二级高速缓存器160-2被称为一个或多个存储器缓冲器。

在图6描述的实施例中,CPU110可能需要依据非横向/非纵向的顺序存取模式进行数据高速缓存。因而,依据本发明的一个实施例,CPU110将确定所期望的存取模式,并和CP加载指令一起将所述存取模式(或者另外的引用)和加载指令传输到高速缓存处理器400。接着,高速缓存处理器400将收集来自1级(LI)高速缓存160-1、2二级高速缓存器(L2)160-2或者主存储器104的所希望的数据。

一旦收集了所希望的数据,CaPro400重新组织所希望的数据,以使CPU110能够使用传统的顺序存储器存取来存取所希望的数据。然而,在描述的实施例中,本地高速缓存器410被配置为用于CPU110的只读高速缓存器。因而,CPU110总体上被限值在读取来自本地高速缓存器410的数据,而由CPU110执行的数据写在L1/L2高速缓存器160和主存储器104内加以执行,并且仅限于在它们中加以执行。作为对照,CaPro400在本地高速缓存器410内读和写希望的数据,如由所接收的存储器存取模式以及CP加载指令所规定。

现在参见图7A,图7A依据本发明的另一实施例,进一步说明了如图6所示的本地高速缓冲存储器410。如所说明的那样,本地高速缓存器410的数据缓冲器(420、430和440),每个都包含相应的高速缓存器标记(422、432和442),用于在所述相应数据缓冲器内确定所请求数据的高速缓存器命中或者未命中。此外,每个数据缓冲器包含一个并行写端口(424、434和444),以及一个并行读端口(426、436和446)。在一个实施例中,并行读/写端口由CaPro400使用来依据存储器存取模式来加载数据,并且组织所述数据以允许由CPU110在一个选定的目的地数据存储设备内顺序存取数据。

现在参见图7B,图7B描述了一个本地高速缓冲存储器410的一个替换实施例,本地高速缓冲存储器4 10图示了线缓冲器450,以及数据混洗器460,由CaPro400使用来产生相应的输出数据370。如说明的那样,线缓冲器450被用来保持数据,而混洗器/交叉开关460用来收集分散的数据。一旦数据被收集了,则数据就被放置到输出370中。可选地,一旦所述数据是按照顺序的次序被放置的以允许对其的存取,则CaPro400就向CPU110发送一个信号。

虽然如在图7A和7B中描述的那样,本地高速缓存器410利用了存储器转置电路(图7A)或者线缓冲器440和混洗器450(图7B),但是在本领域的技术人员将要承认:本发明包含了各种用于如由本发明所示教的那样、依据从高速缓冲存储器所接收的存储器存取模式而实现存储器存取的其他装置。因此,所描述的实施例不应该以限制的意义解释,因为所提供的各种实施例是作为本发明的一种可能的实现。

因而,当响应于指定存储器存取模式的CP加载操作来存取数据时,使用高速缓存处理器400,就从CPU110隐藏了存储器存取时间。这样做时,可以使用计算机系统100以一种超过传统计算机系统的改进和有效方式执行图像和视频处理操作。在一个实施例中,CaPro400将依据所请求的存储器存取模式来在诸如像寄存器之类的目的地数据存储设备中加载数据。可选地,CaPro400将在本地高速缓存器410内组织所请求的数据。因此,基于所示的实施例,一旦所请求的数据被组织以允许顺序的存储器存取数据时,CaPro400将发信号通知CPU110。因而,一旦提供了来自CaPro400的信号,CPU110可以使用传统的顺序存储器存取来存取所请求的数据。

如上所述,使用CP加载操作以及CaPro400,本发明的实施例能够为CPU110屏蔽如下存储器存取时间,所述存储器存取时间是依据由例如视频/图像处理操作所要求的随机存储器存取模式来存取数据所需要的。因此,如图5中说明的那样,通过使用非横向/非纵向顺序存储器存取,诸如以之字形扫描次序从一个图像块中读取数据,图像视频处理/编码操作就被简化了。可以依据本发明中的实施例,例如,如图8A和8B中描述的那样,实现各种图像处理/编码操作。

图8A描述了这样一个框图,所述框图说明了在例如JPEG2000内执行基于小波变换的图像编码所要求的零树编码500。如说明的那样,使用传统的横向顺序存储器存取(图4)不能有效地执行所需的数据存取。然而,利用CaPro400,使用依据CP加载操作的非纵向/非横向的顺序存储器存取,能够有效地存取所需要的零树数据504(504-1、5042和504-3)。因此,CPU110能够确定存储器存取模式(如箭头所示的那样)来收集低频率510和高频率零树数据504。响应于CP加载操作和所接收的参考存取模式,CaPro400依据零树编码500把CPU110从存取数据所需要的存储器存取时间中屏蔽开来。一旦被存取了,CaPro400就组织所述数据以允许它由CPU110进行的顺序存取。

现在参见图8B,图8B描述了一个说明一图像550的框图,其中要求用位平面提取来执行小波图像编码和解码。如说明的那样,位平面提取需要存取位平面数据554(554-1,…,554-N),所述数据无法使用传统的横向顺序存储器存取(图4)来加以存取。然而,依据本发明的实施例,可以由CPU110发出存储器存取模式,从而使得利用CP加载操作以及CaPro400,如图6中描述的,可以有效地存取各种位平面数据554。因此,利用CP加载指令以及CaPro400,通过利用根据本发明的实施例所提供的非横向/非纵向顺序存储器存取,在小波图像编码和解码期间位平面提取所需要的存储器存取和CPU110就被屏蔽掉了。

高速缓存器一致性

在一个实施例中,假定描述的实施例不支持CP写操作,那么由CaPro400实现MESI(修改(M)、排它(E)、共享(S)和无效(I))高速缓存线状态的一个子集,S和I。如果CP加载未命中,则CaPro向L1/L2高速缓存160发出一个请求。在L1/L2高速缓存160中执行一次查找,导致一次命中或者未命中。如果检测到了命中,则CaPro400检索所述块。把所述数据块放置到具有S状态的本地高速缓存器410中。如果所述请求导致高速缓存器未命中,则CaPro400可以向外部总线接口发出一个请求,并且所述数据块就被从外部存储器104或者外部数据缓冲器(没有显示)中读取。

在所述事务的探听阶段期间,其他的高速缓存器报告它们是否具有一份所述数据块的拷贝。如果任何外部的高速缓存器都具有在M状态中的一个拷贝,则从那个高速缓存器中提供所述线,并且所述线被放置到处于S状态的本地高速缓存器410和L1/L2高速缓存器160中。在M个数据块被提供给本地高速缓存器410的同时,所述数据块被写入存储器104中。外部高速缓存器中的所述块数据因此不再和存储器104中的不相同了。

因而,数据块的状态从M转换为S状态。当没有其它的高速缓存器具有一个拷贝(探听未命中)或者任何其他高速缓存器(外部高速缓存器)具有在E或者S状态中的一个拷贝时,从存储器104中读取所述数据块。当完成从存储器104中读取所述数据块时,L1/L2高速缓存160和本地高速缓存器410使它们的拷贝处于S状态。任何其他的高速缓存器具有一个拷贝,所述数据块也在S状态。因此,CaPro400维护在系统100内的数据一致性。在描述的实施例中,CPU110不负责维护本地高速缓存器410的一致性,因为CPU110不向本地高速缓存器410进行写入。

现在转向图9,其中显示了一个电子系统600的一个实施例框图,所述电子系统600中处理器具有如上所述的CaPro400以及本地高速缓冲存储器的特征。所述系统包含一个多层印刷布线板604,在其上形成了一条并行总线608。总线608可以是点到点类型的,或者诸如在主存储器中所使用的那些总线的多站总线。可选地,总线608可以利用各种芯片封装之间的光信号来实现,其中需要光/电转换。集成电路(IC)芯片封装606可被操作地安装在板上以使用所述并行总线608进行通信。封装606的安装可以通过表面安装技术或者经由连接器或者槽来完成。

此外,所述封装具有IC芯片610,IC芯片610包括逻辑功能部分和I/O部分,I/O部分作为所述逻辑功能部分和总线608之间的接口。在一个实施例中,逻辑功能是一个微处理器,包含如上所述的CaPro400和本地高速缓存器410存储器。可选地,能够在IC芯片的逻辑功能部分中实现的其他设备也可以被使用,诸如存储器控制器,和总线桥接器。所述I/O部分具有一个总线接收器,在所述总线接收器中,提供了如上所述的平衡回路。

第二IC封装612也被安置在板604上,以经由总线608与第一个封装606进行通信。第二IC封装612也包含一个在其中提供了总线接收器的芯片614,用于与总线608相接口,以及它自己的逻辑功能部分(在此显示为一个存储控制器)。本领域的技术人员将会明白,制造系统600是为说明目的提供而不应该以一种限制的意义进行解释。此外,各个IC封装可以按具体实现细节的要求被包括在独立的板内体现或者加以组合。此外,在各个部件之间通信不局限于电信号而且包含光通信、微电子机械通信信号等等。

如上所述,依据一个实施例,微处理器(MP)620利用一个高速缓存处理器(CaPro)630。因此,在这样一个实施例中,当响应于单个CP加载指令并根据存储器存取模式来存取数据时,CaPro630隐藏MP620的存储器存取时间。高速缓存处理器630的其他系统应用是可能的,包括例如存储器控制器。

因此,在图1和2中描述的计算机系统100没有遭受上面参考传统的图形应用所述的问题。通过使用一个高速缓存处理器400,处理器110能够依据由当前图像/视频处理/编码算法所需要的特定/存储器存取模式来读取/写入数据。此外,当依据特定存储器存取模式进行处理图像数据时,高速缓存处理器400避免了由传统高速缓冲存储器所遭受的过多的数据存取时间。现在描述用于实现本发明实施例的过程方法。

操作

现在参见图10,图10描述了一个流程图,所述流程图说明了用于依据随机存储器存取模式,从本地数据缓冲器诸如在图1,2,6和9中描述的计算机系统100的高速缓存处理器400的本地高速缓冲存储器410中,存取数据的方法700。在过程块702处,确定是否接收了CP存储器存取指令。CP存储器存取指令包含例如但不局限于,如图1所描述的CPMOV指令(142-158)。一旦接收了CP存储器存取指令,则执行过程块704。

在过程块704处,确定是否检测到了存储器存取模式。如在上面实施例中描述的那样,存储器存取模式依据一组由存储器存取模式指针所指示的数据地址和偏移量来指示存储器存取。存储器存取模式可能包含但不局限于,之字形存储器存取模式(如在图5中描述的那样)、零树编码存储器存取模式(图8A)、位平面提取存储器存取模式(图8B)、细粒度可伸缩性存取模式等等。

此外,如在上面的实施例中描述的那样,当检测到这样的存储器存取模式时,高速缓存处理器400向CPU110屏蔽依据所述存储器存取模式的存取数据所要求的存储器存取时间。存取模式根据视频或者图像编码操作而变化,这些操作是,诸如离散余弦变换、JPEG2000位平面提取、和MPEG4细粒度可伸缩性等等所需要的。因此,让CPU110集中于图像/视频处理操作的其他部分。

接下来,在过程块706处,确定与所接收的存储器存取指令相关联的数据的存储器存取模式。如在上面的实施例描述的那样,所述存储器存取模式可以起到指向存储器中的地址单元的指针的作用,其中所述指针包含如下数据的地址和偏移列表,所述数据包含存储器存取模式。因此,一旦确定了这些数据地址和偏移,在过程块720处,高速缓存处理器410将依据所确定的存储器存取模式存取与所接收到的存储器存取指令相关联的数据。最后,在过程块790处,高速缓存处理器依据所接收的存储器存取指令来存储所存取的数据,这在一个实施例将要求高速缓存处理器在CPU110的数据存储设备内存储所存取的数据,并且一旦所述数据可利用顺序存储器存取来存取,则修改CPU110。

现在参见图11,图11描述了一个流程图,所述流程图说明了一种如在图6中描述的CaPro410执行的,用于依据所确定的存储器存取模式确定用于存取数据的数据地址和数据偏移量的另一方法708。在过程块710处,高速缓存处理器400确定所述存储器存取模式的存储单元。在一实施例中,存储器存取模式充当指向存储单元的指针,所述指针包含如下数据的地址和偏移量,所述数据地址和偏移量定义了包含存储器存取模式的数据。一旦确定了所述存储单元,在过程块712处,高速缓存处理器400读取定义所述存储器存取模式的一个或多个数据地址。接下来,在过程块714处,高速缓存处理器确定用于存取与接收的存储器存取指令相关联的数据的数据偏移量。最后,在过程块716处,高速缓存处理器存储按照所述一个或多个数据偏移量的一个或多个数据地址,以允许依据所述存储器存取模式存取数据。

现在参见图12,图12描述了另外一种用于对如图10所示的过程块720的存取数据的方法722的流程图,所述过程块720可以是例如如图6所示的本地高速缓存器410的过程块。在过程块724处,确定是否检测到由所述存储器存取指令请求的数据的高速缓存器未命中。当检测到高速缓存器未命中时,在过程块724处,在本地数据缓冲器410内加载一数据块。依据一个实施例,数据块的大小是由如图1所示的CPMOV操作的2DQ/2Q参数所确定的。因此,根据CPMOV操作的数据类型,在本地高速缓存器410内将加载一个包含与所述存储器存取指令相关联的数据的数据块。最后,在过程块778处,高速缓存处理器400依据存储器存取模式从本地数据缓冲器410中存取数据。

现在参见图13,图13描述了一个流程图,所述流程图说明了另外一种方法726,用于如图12所示的过程块724的在本地数据缓冲器内加载一数据块。在过程块728处,高速缓存处理器400向一个或多个存储器缓冲器160发出一个数据请求。如参考图6描述的那样,高速缓存处理器400会向一级高速缓存器160-1和二级高速缓存器160-2都发出一个数据请求。

接下来,在过程块772处,高速缓存处理器400从一个或多个存储器缓冲器160的一个存储器缓冲器160-1中检索包含所请求的数据的数据块。如描述的那样,所述一个或多个存储器缓冲器是指计算机系统100的一级高速缓存器160-1和二级高速缓存器160-2,如在图6所示。最后,在过程块774处,数据块被如下高速缓存处理器加载到本地高速缓存器410中,在此可互换地称为协处理器400或者CaPro400。

现在参见图14,图14描述了一个流程图,所述流程图说明了另外一种方法730,用于发出如图13所示的过程块728的数据请求。在过程块732处,确定是否检测到与所述存储器存取指令相关联的数据的高速缓存器未命中。当检测到高速缓存器未命中时,执行过程块732。否则,执行过程块770。在过程块730处,CaPro400,例如,从外部存储器104请求一个包含与所述存储器存取指令相关联的数据的数据块。在一个实施例中,如参考图6说明的那样,CaPro400向主存储器104请求一个数据块。

在过程块740处,所述包含所请求的数据的数据块被加载到一个或多个存储器缓冲器100,例如像图6所示的一级高速缓存器和二级高速缓存器160中。然而,当在一个或多个存储器缓冲器160内检测到高速缓存命中时,从包含所述请求的数据的存储器缓冲器中检索所述数据块。最后,在过程块772处,将包含所请求数据的数据块存储到本地数据缓冲器,例如存储到本地高速缓冲存储器410中。

现在参见图15,图15描述了一个流程图,所述流程图说明了另外一种方法742,用于维护一个或多个存储器缓冲器160以及本地高速缓冲存储器410和外部存储器104内的高速缓存器一致性。因此,在一个实施例中,方法792说明了如图6所示的计算机系统100的一级高速缓存器160-1、二级高速缓存器160-2、本地高速缓存器410以及主存储器104内的高速缓存器一致性的性能。在过程块744处,确定是否接收了所述请求数据块的探听命中的通知。

因此,当接收到了探听命中的通知时,执行过程块746。否则,执行过程块762。在过程块746处,将所述数据块存储在具有共享S状态的一个或多个存储器缓冲器内,例如存储在如图6所示的一级高速缓存器160和二级高速缓存器160内。否则,在过程块762处,在具有排它E状态的一个或多个存储器缓冲器160内存储所述数据块。一旦存储了,控制流返回到如在图14中描述的过程块740。

现在参见图16,图16描述了一个流程图,所述流程图说明了另外一种方法748,用于在具有如图5所示的S状态的过程块746的一个或多个存储器缓冲器160内存储数据块。在过程块750处,确定所述数据块的状态。一旦确定了所述数据块的状态,则在过程块752处,确定是否检测到所述数据块的修改状态。当没有检测到修改状态时,则如在图15中描述的那样,控制流返回到过程块746。否则,执行过程块753。在过程块753处,向诸如主存储器104这样的外部存存储器请求所述数据块。

接下来,在过程块754处,将所述数据块加载到具有S状态的一个或多个存储器缓冲器160内。一旦在存储设备160内加载了,则在过程块756处,在诸如如图6所示的本地高速缓冲存储器410这样的具有S状态的本地数据缓冲器中加载数据块。与过程块753-756同时,在过程块758处,数据块被写入到诸如图6所示的存储器104这样的外部存存储器中。最后,在过程块760处,在包含所述数据块的外部存储器缓冲器(没有显示)中,数据块的状态被修改为S状态。

现在参见图17,图17描述了一个流程图,所述流程图说明了另外一种方法780,用于加载一个数据块到如图10所示的过程块720的本地数据缓冲器中。在过程块782处,确定包含有与所接收的存储器存取指令相关数据的数据块的块大小。接下来,在过程块784处,向诸如如图6所示一级高速缓存器和二级高速缓存器160这样的一个或多个存储器缓冲器请求所述数据块。接下来,在过程块736处,从一个存储器缓冲器中接收所述数据块。最后,在过程块788处,把所述数据块加载到本地数据缓冲器410中。

现在参见图18,图18描述了一个流程图,所述流程图说明了另外一种方法792,用于执行对如图12所示的过程块790的请求数据进行非横向/非纵向顺序存取。在过程块794处,由存储器存取操作所指示的数据类型被确定为位、字节或者多倍字节诸如字、双字、四倍字等等之一。接下来,在过程块796处,依据存储器存取模式来确定一个数据部分的数据地址和数据偏移量。接下来,在过程块798处,从本地高速缓存器410中读取所述数据部分。接下来,在过程块800处,所读取的数据部分被加载到一个目的地数据存储设备中。最后,在过程块802处,为由存储器存取模式所指示的每个数据部分重复过程块796到800。

最后,参见图19,图19描述了一个流程图,所述流程图说明了另外一种方法810,用于由例如高速缓存处理器400进行的请求数据存取。在过程块812处,CaPro 400使用本地数据缓冲器410,诸如本地高速缓存器410,来执行请求数据的一个非纵向/非横向的顺序存储器存取。一旦存取了所述数据,则执行过程块814。在过程块814处,所存取的数据从本地数据缓冲器400加载到CPU110的一个目的地数据存储设备中。可选地,所述数据可以在本地高速缓存器410内被重新组织,从而使得一旦被通知知了数据的可用性,则CPU110就能够顺序地存取数据。

因此,利用本发明的实施例,高速缓存处理器结合在此描述的CP加载指令,允许根据一存储器存取模式在所述本地高速缓冲存储器内进行非横向/非纵向顺序(随机)存储器存取。因此,使用高速缓存处理器的CPU就被屏蔽了如下存储器存取时间,所述存储器存取时间被要求用来根据在视频/图像处理操作期间所要求的实际上的随机存储器存取模式,执行数据存取。因而,使用本发明实施例的计算机系统能够例如通过使用CP加载操作来大大地改善例如图像的处理时间,所述时间被CP加载操用来响应单个指令,根据一存储器存取模式来执行数据存取。因而,使用本发明的实施例,避免了在以随机次序/方向处理像素数据时所要求的许多转置操作。

替换实施例

已经描述了实现用于依据数据存取模式而提供数据存取的高速缓存处理器的的几个方面。然而,高速缓存处理器的各个实现提供了许多的特征,它们包含、补充、增补、和/或代替如上所述的特征。在不同的实施例实现中,这些特征能够作为一个处理器芯片的部分或者作为一个存储控制器的部分而被实现。此外,上面的描述,为了解释起见,使用了具体的命名法以提供对本发明实施例的一个彻底了解。然而,对于本领域的专业人员来说,显而易见对于实施本发明实施例,这些细节并不是必须的。

此外,尽管在此描述的实施例是指用于依据数据存取模式来提供数据存取的高速缓存处理器,但是本领域的技术人员将要理解:本发明的实施例能够应用于其他的系统。实际上,用于数据的非纵向/横向顺序存取的系统属于本发明的实施例,而没有背离本发明的范围和精神。选择和描述如上所述的实施例是为了最好地说明本发明和它的实际应用的原理。选择这些实施例以借此允许在本领域的技术人员来利用本发明和具有各种修改的各种实施例,这些具有各种修改的各种实施例适用于所考虑的特定使用。

将要理解:虽然在上述中已经连同本发明各个实施例的结构和功能的详细信息一起阐述了本发明各个实施例的许多特征和优点,但是这个公开仅仅是说明性的。在某些情况下,仅仅用一个这样的实施例详细描述了某些子部件。尽管如此,应该认识到并明白,这样的子部件可以在本发明的其他实施例中使用。可以进行更详细地改变,尤其是可以进行在本发明原理内的与部件结构和管理有关的改变,而这些与部件结构和管理有关的改变能将由附加权利要求所表达的术语的广泛意思的全部内容表示出来。

本发明的实施例提供了许多优于现有技术的优点。在一个实施例中,本发明包含了在处理图像/视频数据时,当从一个存储器子系统中读取数据时,显著地降低了由一个处理器使用的时间的性能。例如,在新的JPEG图像编码标准中的位平面编码大幅度地降低了当前图像/视频处理应用所需要的百分之四十(40%)执行时间。因而,使用本发明的实施例,能够由CaPro来处理硬件位平面提取,而让主CPU自由地处理小波变换和算术编码。此外,其他的应用能够从像之字形扫描的CaPro、零树编码、MPEG4细粒度可伸缩性等等实施例中受益。此外,目的在于协处理器、或者CaPro的实施例能够通过在发送数据到主处理单元之前,在本地高速缓存器中执行必要的数据转换,而从CPU隐藏存取时间。

已经公开了示例实施例和最佳模式,可以向公开的实施例做出修改和变化而同时保持在如以下权利要求定义的本发明范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号