CN1501259A - 便于具有通用读/写模式的存储器数据存取的装置和方法 - Google Patents
便于具有通用读/写模式的存储器数据存取的装置和方法 Download PDFInfo
- Publication number
- CN1501259A CN1501259A CNA200310119844A CN200310119844A CN1501259A CN 1501259 A CN1501259 A CN 1501259A CN A200310119844 A CNA200310119844 A CN A200310119844A CN 200310119844 A CN200310119844 A CN 200310119844A CN 1501259 A CN1501259 A CN 1501259A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory access
- buffer unit
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 244
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000001514 detection method Methods 0.000 claims abstract description 7
- 238000013500 data storage Methods 0.000 claims abstract 2
- 239000000872 buffer Substances 0.000 claims description 128
- 238000003860 storage Methods 0.000 claims description 35
- 230000017105 transposition Effects 0.000 claims description 17
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 241001269238 Data Species 0.000 claims description 3
- 230000000295 complement effect Effects 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims 1
- 230000006835 compression Effects 0.000 description 48
- 238000007906 compression Methods 0.000 description 48
- 238000010586 diagram Methods 0.000 description 35
- 230000008569 process Effects 0.000 description 29
- 238000007667 floating Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000005429 filling process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000005538 encapsulation Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000008707 rearrangement Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了一种便于具有通用读/写模式的存储器数据存取的装置和方法。在一个实施例中,所述方法包括:响应于加载指令,在重布置的(RT)高速缓存器内检测所述加载指令请求的数据的高速缓存器命中/高速缓存器未命中。当检测到高速缓存器未命中时,依据加载指令把一个数据块加载到RT高速缓存器中。这个数据块将包含加载指令所请求的数据。一旦被加载了,就从RT高速缓存器中执行由加载指令所请求的数据的非横向顺序存取。最后,从RT高速缓存器中存取的数据可以依据加载指令被存储到目的地数据存储设备中。
Description
技术领域
本发明通常涉及存储器存取领域。更特别地,本发明涉及一种便于具有通用且连续的读/写模式的存储器数据存取的方法和装置。
背景技术
十多年来,媒体应用一直激励着微处理器的开发。实际上,将来的媒体应用将对可用的微处理器提出更高的计算要求。因此,未来的个人计算(PC)体验在音频/视频效果方面将更丰富,并且更容易使用。更重要地是,将来的微处理器将允许计算和通信合并起来。
因此,对于当前以及将来的计算设备,图像的显示已经变得越来越普及。不幸地是,这类媒体应用所需的数据量趋向于非常大。此外,在计算能力、存储器和磁盘存储、以及网络带宽方面的增加,已经便于更大和更高质量图像的创建和使用。然而,使用更大和更高质量的图像经常导致在处理器和存储器之间的一个瓶颈。因而,尽管有微处理器时钟速度不断增加的事实,图像/视频处理(媒体)应用还是经常遭受存储器等待时间的问题。
虽然随机存取存储器(RAM)自称能提供对包含在其中的存储器的随机存取,但是RAM通常不能以随机模式存取。实际上,存取RAM不同部分所需要的时间可以是变化的。例如,对存储器设备内的存储单元的横向存取通常是非常方便的。与此相反,当使用常规存储器设备时,纵向的存储器存取是非常缓慢的。
因此,用于视频图像的光栅扫描存储器排列跨越在高速缓冲存储器内的图像平面线性地放置像素数据,这经常导致许多的问题。首先,一条高速缓存线保持若干个基本图像块(例如,8×8或者16×16)的一些部分。与此相反,一个基本的图像块被包含在几条高速缓存线中。因而,存取一个块(假定是8×8的结构)相当于存取几条高速缓存线(例如,假设我们正处理比单条高速缓存线更宽的图像,那么在当前体系结构中至少要存取8条高速缓存线)。
使用常规存储器设备存取一个图像需要至少存取八次存储器。此外,很可能需要八个软件预先缓存指令以便避免八次高速缓存器未命中。此外,当处理一个图像块时,传统的应用除了所述块本身之外还加载多余的数据到所述高速缓存器里。因此,除非我们立即处理邻近的块,否则多余的数据会被带进高速缓冲存储器中,这将会由于所述多余的数据而降低高速缓存器的性能。
一种用于当处理图像数据时提供改进的高速缓存器位置的解决方案涉及基于块的存储器排列。虽然基于块的存储器排列方案提供了更高的高速缓存器位置,但是使用一条指令存取一个8个或者16个像素的纵向集合仍然是不被支持的。为了存取一个纵向数据集,大多数传统的实现方式使用压缩和解压缩操作来转置所述数据。不幸地是,在大多数应用中这是一个缓慢的过程。此外,在某些诸如图像/视频压缩等应用中,像素数据必须以变化的扫描次序存取,这几乎是对所述像素数据的随机存取。因此,还需要克服上述现有技术中的一个或多个局限性。
附图说明
在附图中通过示例的方式而不是限制的方式说明了本发明的不同实施例,其中附图包含:
图1描述了用于说明依据本发明一个实施例实现重布置(re-tiling)(RT)的高速缓冲存储器的计算机系统的框图。
图2描述了一个框图,它进一步说明了依据本发明另一个实施例的如图1所述的处理器。
图3A和3B描述了这样的框图,它们说明了依据本发明一个实施例的128位压缩的SIMD数据类型。
图3C和3D描述了这样的框图,它们说明了依据本发明的另一个实施例的64位压缩的SIMD数据类型。
图4描述了一个框图,它说明了在本技术领域已知的传统光栅扫描存储器排列。
图5描述了一个框图,它说明了依据本发明一个实施例的非横向顺序存储器读取操作。
图6描述了一个框图,它进一步说明了依据本发明另一个实施例、如图1和2所述利用RT高速缓存存储器的计算机系统。
图7A和7B描述了这样的框图,它们进一步说明了依据本发明另一个实施例、如图6所述的RT高速缓存器。
图8A描述了一个框图,它说明了一种用于如本领域已知的那样执行像素填充的传统方法。
图8B描述了一种方法,所述方法说明了依据本发明的一个实施例、利用RT加载操作的像素填充过程。
图9A-9E描述了这样的框图,它们说明了依据如图8A所述的传统像素填充过程对一幅图像的像素数据所进行的转置和填充。
图10A描述了一个框图,它说明了一幅被用于如图10B和10C所述的图像过滤的图像。
图10B描述了一种用于利用如本领域已知的可分离的过滤器进行图像过滤的方法。
图10C描述了说明一种依据本发明一个示例性实施例的方法的流程图,所述方法用于利用RT加载操作并用可分离的过滤器来执行图像过滤。
图11描述了依据本发明一个实施例的电子系统600的框图,所述电子系统600实现了支持非横向顺序存储器存取的RT高速缓冲存储器。
图12描述了流程图,它说明了依据本发明一个实施例的一种用于响应于存储器存取指令执行非横向顺序存取的方法。
图13描述了一个流程图,它说明了依据本发明另一个实施例的一种用于检测存储器存取操作所请求的数据的高速缓存器命中/未命中的另一方法。
图14描述了一个流程图,它说明了依据本发明另一个实施例的一种用于在第一存储缓冲器内加载一个数据块的另一方法。
图15描述了一个流程图,它说明了依据本发明另一个实施例的一种用于向一个或多个第二存储缓冲器发出数据请求的另一方法。
图16描述了一个流程图,它说明了依据本发明另一个实施例的一种用于从一个外部存储器请求数据块的另一方法。
图17描述了一个流程图,它说明了依据本发明一个示例性实施例的一种用于在存储缓冲器内加载一数据块的另一方法。
图18描述了一个流程图,它说明了依据本发明一个示例性实施例的一种用于执行非横向顺序存取的另一方法。
图19描述了一个流程图,它说明了依据本发明一个示例性实施例的、一种用于在一个目的地数据存储设备内加载非横向顺序存取的数据的方法。
具体实施方式
描述了一种便于具有利用一般读/写模式进行存储器数据存取的方法和装置。在一个实施例中,所述方法包含:响应于一个存储器存取指令,在一个重布置(RT)的高速缓存器中检测由所述存储器存取指令请求的数据的高速缓存器命中/高速缓存器未命中。当检测到高速缓存器未命中时,依据加载指令把一个数据块加载到RT高速缓存器中。这个数据块将包含由存储器存取指令所请求的数据。一旦被加载了,就从RT高速缓存器中执行由存储器存取指令请求的数据的非横向顺序存取。最后,从RT高速缓存器存取的数据可以依据所述存储器存取指令存储在目的地数据存储设备内。
在下面的描述中,为了说明起见,阐述了大量细节以便提供对本发明的一个彻底了解。然而,对于在本领域的技术人员来说,显然可以实践本发明而不用一些具体的细节。此外,以下的描述提供了示例,而且为了说明起见,附图显示了各种示例。然而,因为这些示例仅仅用来提供本发明实现的示例而不是提供本发明所有可能实现的实施例的一个完整列表,所以它们不应该以一个限制的意义进行解释。在其它实例中,以框图形式显示了众所周知的结构和设备,以避免弄模糊本发明实施例的细节。
以下详细说明中的部分可以以对数据位进行的操作的算法和符号表示法给出。这些算法描述和表示法被数据处理领域内的技术人员用来向所述领域其它技术人员最有效地传达他们的工作内容。如在此描述的那样,一个算法是指导致一个期望结果的一个自相一致的动作序列。所述动作是那些要求对物理量进行实际操作的动作。这些量可以采取能够被存储、传送、组合、比较、以及以别的方式被操作的电信号或磁信号的形式。此外,主要是由于共同使用的原因,这些信号被称为位、值、单元、符号、字符、项、数字等等。
然而,这些术语和类似的术语与适当的物理量相关联,而且仅仅是应用于这些量的便利标记。除非另外具体指出,否则应理解为:使用诸如“处理”或者“计算”或者“演算”或者“确定”或者“显示”等等术语的讨论涉及一个计算机系统、或者类似电子计算设备的动作和处理,这些计算机系统或者计算设备把表示为所述计算机系统设备内的物理(电子)量的数据操纵和转换成为类似地表示为计算机系统设备内的物理量的其它数据,所述计算机系统设备诸如存储器、寄存器或者其他这样的信息存储器、传输、显示设备等等。
在此给出的算法和显示不是固有地与任何特定计算机或者其它装置有关的。可以依据这里的教导与程序一起使用各种通用系统,或者可以证明构造更专用的装置来执行所要求的方法是方便的。例如,能够以硬接线电路形式、通过对通用处理器编程或者通过硬件和软件的任何组合来实现依据本发明的任何方法。
本领域的技术人员将会立即理解:本发明的实施例能够用除了那些如下所述的计算机系统配置来进行实践,这些计算机系统配置包含手持设备、多处理器系统、基于微处理器或者可编程的消费电子设备、数字信号处理(DSP)设备、网络PC、微型计算机、大型计算机等等。本发明还能够在分布式计算环境中实践,在所述分布式计算环境中,任务是由通过通信网络连接起来的远程处理设备来执行的。将从在下面的描述中发现用于多种这些系统的所需结构。
应该理解:那些本领域技术人员使用各种术语和技术来描述通信、协议、应用、实现、机制等等。这样的一种技术是依据算法或者数学表达式的技术实现的描述。也就是说,虽然所述技术可以,例如,被实现为在计算机上的执行代码,但是作为公式、算法或者数学表达式,那个技术的表示可以更适宜和更简便地用于传达和通信的。
因此,本领域的技术人员把表示A+B=C的方框认为是一个加法功能,它以硬件和/或软件的实现将获得两个输入(A和B)并且产生一个求和输出(C)。因此,公式、算法或者数学表达式作为描述的使用将被理解为以至少硬件和/或软件形式的物理实施例(诸如一个计算机系统,其中可以实践本发明的技术以及本发明的技术可以作为一个实施例而实现)。
在一个实施例中,本发明的方法以机器可执行指令的形式实施。这些指令能够用来导致一个用所述指令编程的通用或者专用处理器执行本发明的方法。可替换地,本发明中的方法可以由包含用于执行所述方法的硬连线逻辑的具体硬件组件来执行,或者可以由编程的计算机组件和定制硬件组件的任何组合来执行。
在一个实施例中,本发明可以作为计算机程序产品提供,所述计算机程序产品可以包含其上存储有指令的机器可读或者计算机可读的介质,这些指令可以用来对计算机(或者其他电子设备)编程从而执行依据本发明的处理过程。所述计算机可读介质可以包含但不局限于软盘、光盘、压缩光盘、只读存储器(CD-ROM)、和磁光磁盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程序只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁或者光卡、闪速存储器等等。
因此,所述计算机可读介质包含适合于存储电子指令的任何类型的介质/机器可读介质。此外,本发明的实施例还可以作为计算机程序产品被下载。因而,所述程序可以从远程计算机(例如服务器)传输到请求计算机(例如客户机)。所述程序的传输可以经由通信链路(例如,一个调制解调器、网络连接等等)通过包含在载波或者其它传播介质中的数据信号的方式进行。
计算体系结构
图1显示了能够在其上实现本发明一个实施例的计算机系统100。计算机系统100包含用于传送信息的总线102,以及耦合到总线102的、用于处理信息的处理器110。计算机系统100还包含耦合到总线102的存储器子系统104-108,用于为处理器110存储信息和指令。处理器110包括一个包含算术逻辑部件(ALU)180的执行单元130、寄存器堆200、一个或多个高速缓存存储器160(160-1、……、160-N)、一个重布置(RT)高速缓冲存储器400和内部总线190。
高速的临时存储缓冲器(高速缓存器)160耦合到执行单元130并且为处理器110存储频繁使用和/或最近使用的信息。如在此描述的那样,存储缓冲器160包含但不局限于高速缓存存储器、固态存储器、RAM、同步RAM(SRAM)、同步数据RAM(SDRAM)或者任何能够支持数据的高速缓冲的设备。因此,高速的临时存储缓冲器160可互换地被称为高速缓存存储器160或者一个或多个第二存储缓冲器。
此外,应当注意到在一个替换实施例中,术语第二存储缓冲器指主(外部)储存器104。然而,与传统的高速缓存存储器相反,系统100包含RT高速缓冲存储器400。如在下面进一步详细描述的那样,RT高速缓存存储器400支持处理器110对包含在其中的数据进行非横向顺序存储器存取。寄存器堆200在处理器110中存储信息,并且它经由内部总线190耦合到执行单元130。
在本发明的一个实施例中,寄存器堆200包含多媒体寄存器,例如,用于存储多媒体信息的SIMD(单指令多数据)寄存器。在一个实施例中,多媒体寄存器每个都存储至少六十四位压缩的数据。多媒体寄存器可以是专用的多媒体寄存器或者是被用来存储多媒体信息及其它信息的寄存器。在一个实施例中,当执行多媒体操作时,所述多媒体寄存器存储多媒体数据,而当执行浮点操作时,所述多媒体寄存器存储浮点数据。
在一个实施例中,执行单元130依据由处理器110接收的、包含在指令集140中的指令对图像数据进行操作。执行单元130还依据在通用处理器中实现的指令对压缩的、浮点以及标量数据进行操作。处理器110能够支持Pentium微处理器指令集以及对压缩数据进行操作的压缩指令。通过在标准的微处理机指令集(诸如Pentium微处理器指令集等)中包含压缩指令集,压缩的数据指令能够被很容易地并入现有的软件(先前为标准微处理器指令集编写的)中。其他的标准指令集(诸如PowerPCTM以及AlphaTM处理器指令集等)也可以依据描述的发明来使用。(Pentium是Intel公司的注册商标。PowerPCTM是IBM、APPLE COMPUTER和MOTOROLA的商标。AlphaTM是DigitalEquipment Corporation的商标。)
依据本发明的一个实施例提供了多个RT移动(RTMOV)指令,它们在此被统称为RT加载操作或者指令。此外,在描述的实施例中,RT加载以及RTMOV指令可以被称为存储器存取指令。在一个实施例中,所述存储器存取指令包含RT写和RT读操作。因此,如图1所示,指令集包含支持字节数据(指令142-146)、字数据(指令148-152)和双字数据(指令154-158)的RT移动操作。在一个替换实施例中,本指令集包含RT移动预取操作。所述预取操作依据所述指令将数据预载到RT高速缓存器中以便预期请求的数据。利用这些操作,可以通过避免高代价的图像数据转置操作,以及避免具有多余数据的高速缓存器位置问题和高速缓存器超载问题,来改善当前的图像处理技术。
在描述的实施例中的参数MMX和XMM指64位寄存器,例如如图2所示的寄存器214,以及诸如图2所示的寄存器210等128位寄存器。START_ADDR参数指图像块内的起始地址,而间距参数指图像块,所述参数在一个实施例中是8字节。如将在下面进一步详细描述的那样,被一起称为RT加载操作的RTMOV操作允许对RT高速缓存0器400内的数据进行非横向顺序存储器存取。如在此描述的那样,非横向顺序存储器存取包含但不局限于顺序和非顺序的纵向存储器存取以及非顺序的横向存储器存取。
通过在通用处理器110的指令集中包含指令集140,连同执行这些指令的相关电路一起,许多现有的多媒体应用使用的操作可以使用通用处理器更有效地执行图像处理。因此,通过利用单一指令来执行图像块的非横向顺序存取,可以加速以及更有效地执行许多多媒体应用。此外,压缩指令允许将处理器的数据总线的全部宽度用于执行对压缩数据的操作。这样就不需要通过所述处理器的数据总线传输较小单元的数据以执行一个或多个一次一个数据单元的操作。
仍然参见图1,本发明的计算机系统100可以包含一个或多个I/O(输入/输出)设备120,包括诸如监控器等显示设备。所述I/O设备120还可以包括诸如键盘等输入设备以及诸如鼠标、跟踪球、或者跟踪垫等光标控制。此外,I/O设备还可以包括网络连接器,以便使得计算机系统100是局域网(LAN)或广域网(WAN)的一部分,I/O设备120,用于声音记录和/或重放的设备,诸如耦合到麦克风的、用于记录声音输入以便语音识别的音频数字化器。所述I/O设备120还可以包括能够用来捕捉视频图像的视频数字化设备、诸如打印机等硬拷贝设备以及CD-ROM设备。
处理器
图2说明了处理器110的一个详图。处理器110能够使用多种工艺技术诸如BiCMOS、CMOS、和NMOS等中的任何一种在一个或多个基片上加以实现。然后,数据能够经由内部总线190被存储在寄存器堆200中。为了清楚起见,实施例中的寄存器在意思上不应该被限制于一种特定类型的电路。相反地,实施例中的寄存器只需要能够存储和提供数据,以及执行在此描述的功能即可。
根据数据的类型,数据可以被存储在整数寄存器202、寄存器210、寄存器214、状态寄存器208或者指令指针寄存器206中。其他的寄存器能够被包含在寄存器堆200中,例如浮点寄存器204。在一个实施例中,整数寄存器202存储32位整型数据。在一个实施例中,寄存器210包含R1212-1到R8212-8的8个多媒体寄存器(XMM),例如,包含压缩数据的单指令多数据(SIMD)寄存器。在寄存器210中的每个寄存器长都为128位。R1 212a,R2 212b和R3212c是寄存器209中独立寄存器的示例。
在一个实施例中,寄存器214包含216-1到216-8的8个多媒体寄存器(MMX),例如,包含压缩数据的单指令多数据(SIMD)寄存器。寄存器214中的每个寄存器长度都为64位。状态寄存器208指示处理器110的状态。指令指针寄存器206存储要被执行的下一个指令的地址。整数寄存器202、状态寄存器208、寄存器210、寄存器214、浮点寄存器204和指令指针寄存器206全部都和内部总线190连接。任何附加的寄存器将也和内部总线190连接。
在另一个实施例中,一些寄存器能够用于不同类型的数据。例如,寄存器210/214和整数寄存器202能够被组合在一起,其中,每个寄存器能够存储整型数据或者压缩数据。在另一个实施例中,寄存器210/214能够被用作浮点寄存器。在这个实施例中,压缩数据或者浮点数据能够被存储在寄存器210/214中。在一个实施例中,组合的寄存器长度为192位,而且整数被表示为192位。在这个实施例中,当存储压缩数据和整型数据时,寄存器不需要区分这两种数据类型。
执行单元130结合例如ALU180,执行由处理器110执行的操作。这样的操作可以包含移位、加法、减法和乘法等等。执行单元130经由内部总线190连接到处理器110的各个部件以及和它们进行通信。如上所述,处理器包含第一存储缓冲器(RT高速缓存器)400以及一个或多个第二存储缓冲器(高速缓存器)160。RT高速缓存器400以及一个或多个高速缓存存储器160能够被用来缓冲来自例如主存储器104的数据和/或控制信号。
数据和存储格式
现在参见图3A和3B,图3A和3B说明了依据本发明一个实施例的128位SIMD数据类型。图3A说明了四个128位的压缩数据类型:压缩字节221、压缩字222、压缩双字(dword)223和压缩四倍字224。压缩字节221为128位长,包含16个压缩字节数据单元。通常,一个数据单元是一个和其他同样长度的数据单元一起存储在单个寄存器(或者存储单元)中的单个数据片。在压缩数据单元序列中,存储在一个寄存器中的数据单元的数目是128位除以以数据单元的位为单位的长度。
压缩字222为128位长并且包含8个压缩字数据单元。每个压缩字包含16位的信息。压缩双字223为128位长并且包含4个压缩双字数据单元。每个压缩双字数据单元包含32位信息。一个压缩四倍字224为128位长而且包含2个压缩四倍字数据单元。因此,在所述寄存器中使用了所有可用的位。这个存储排列增加了所述处理器的存储效率。此外,利用多个数据单元同时存取,现在能够同时对多个数据单元执行一个操作。
图3B说明了依据本发明一个实施例的128位压缩浮点和整型数据类型230。压缩单精度浮点230示出了4个32位浮点值在如图2所示的一个SIMD-XMM寄存器210中的存储。压缩的双精度浮点231示出了两个64位浮点值在如图2所示的一个SIMD-XMM寄存器210中的存储。如将在下面的进一步详细描述的那样,压缩双精度浮点231可以被用来存储一个2×2子矩阵的两个单元向量,因此可以使用两个128位寄存器来存储整个子矩阵,其中每个寄存器包含四个以压缩双精度浮点格式存储的向量单元。压缩字节整数232说明了16个压缩整数的存储,而压缩字整数233说明了8个压缩字的存储。最后,压缩双字整数234说明了四个压缩双字的存储,而压缩四倍字整数235说明了2个压缩四倍字整数在如图2所述的一个128位寄存器内的存储。
现在参见图3C和3D,图3C和3D描述了这样的方框图,它说明了依据本发明一个实施例的64位的压缩SIMD数据类型。因而,图3C描述了4个64位压缩数据类型:压缩字节242、压缩字244、压缩双字246和压缩四倍字248。压缩字节242长为64位,包含8个压缩字节数据单元。如上所述,在压缩数据序列中,存储在一个寄存器中的数据单元的数目为64位除以以数据单元的位为单位的长度。压缩字244长为64位并且包含4个压缩字单元。每个压缩字都包含16位的信息。压缩双字246长为64位并且包含2个压缩双字数据单元。每个压缩双字数据单元包含32位信息。最后,压缩四倍字248长为64位并且正好包含一个64位的压缩四倍字数据单元。
现在参见图3D,图3D说明了依据本发明另一个实施例的64位压缩浮点和整型数据类型。压缩单精度浮点252示出了两个32位浮点值在如图2所示的一个SIMD-XMM寄存器214中的存储。压缩双精度浮点254示出了一个64位浮点值在如图2所示的一个SIMD-MMX寄存器214中的存储。压缩字节整数256示出了8个32位整数值在如图2所示的一个SIMD-MMX寄存器214中的存储。压缩双字整数260示出了2个32位整数值在如图2所示的一个SIMD-MMX寄存器214中的存储。最后,压缩四倍字整数262示出了一个64位整数值在如图2所示的一个SIMD-MMX寄存器214中的存储。
传统的图像块处理
如图4中描述的那样,当前用于图像/视频应用的光栅扫描存储器排列300以一种线性方式贯穿图像平面放置像素数据302。因此,在传统的光栅扫描存储器排列300中,一高速缓存线通常保存几个基本图像块(例如,8×8或者16×16)的某些部分。例如,一高速缓存线可以保持对应4个单独的基本图像块的一线。在另一方面,一个基本的图像块通常被包含在多条高速缓存线中。即,单个基本的块能够包含在例如八条单独的高速缓存线中。
非横向顺序存储器存取
现在参见图5,图5描述了一个框图,所述框图说明了依据本发明一个实施例的非横向顺序存储器读取350。如说明的那样,图像352包括一个图像块,它由高速缓存线(354-1,...,354-4)组成。为了处理所述图像,本发明描述了存储器存取(RT-Load)操作/指令,它允许以在每一个高速缓存/存储器线内的起始地址开始纵向读取/写入数据到目的地数据存储设备370中。与传统的存储器操作指令相比,这样的操作响应于单一指令来执行,其中,数据以横向方式(横向顺序)顺序地读取。如在此描述的那样,非横向的顺序存储器存取不局限于纵向存储器存取。在一个实施例中,非横向顺序存储器存取可以依据一个具体的模式(诸如之字形扫描等)来执行。
为了支持由例如CPU进行的非横向顺序存储器存取(如图5描述的那样),提供如图1所述的新指令。在一个实施例中,新的指令看来像以下所示的那样:
RTMOV[B|W|D]2[Q|DQ] [MMX|XMM],start_addr,pitch
如图5中说明的那样,新的指令,假定是RTMOVW2Q MM0,start_addr,pitch的效果如下所示:
MM0[0..15]←[start_addr] (1)
MM0[16..31]←[start_addr+pitch] (2)
MM0[32..47]←[start_addr+pitch*2] (3)
MM0[48..63]←[start_addr+pitch*3] (4)
在一个实施例中,RT加载操作的实现在预取硬件或者诸如协处理器之类的专用硬件中执行。
因此,如由操作1-4说明的那样,指令参数MM0指例如如图5所述的目的地数据存储设备370。如参考图1进行的描述一样,RTMOV操作支持字节、字和双字的非横向顺序存储器读取。然而,本领域的那些技术人员将要理解:本发明的实施例可以应用于字节倍数的任何变化。因此,RTMOV操作为了说明的目的而提供,而且它不应该以一种限制的意义来解释。
因而,响应于单个RTMOV操作实现移动操作1-4。此外,在检测到由RT加载操作请求的数据的高速缓存器未命中时,RTMOV操作内的参数2Q和2DQ指导将一个数据块加载到RT高速缓冲存储器中。因此,在一个实施例中,当处理所述字节数据时,参数2Q要求将一个8×8字节的数据块加载到一个RT高速缓冲存储器中。此外,当处理字节数据时,2DQ参数的检测要求在RT高速缓冲存储器的相应部分内加载一个8字节16线的块。
当处理字数据时,2Q参数要求在RT高速缓冲存储器内加载一个8字节4线的块,而2DQ参数需要加载一个8×8字节的块。 最后,当处理双字数据时,参数2Q要求加载一个8字节2线的块,而2DQ参数要求加载一个8字节4线的块。因此,假设RT移动操作如上所述,如果检测到所请求数据的高速缓存器未命中,那么所述操作将按如下所述执行:
RT Cache←[astart_addr][0..63] (5)
RT Cache←[astart_addr+pitch][0..63] (6)
RT Cache←[astart_addr+pitch*2][0..63] (7)
RT Cache←[astart_addr+pitch*3][0..63] (8)
到RT高速缓存器中,其中对齐的开始地址(astart_addr)=(start_addr&(-7))。
RT高速缓冲存储器
现在参见图6,图6进一步说明了依据一个实施例的、如图1所述的计算机系统100,该计算机系统利用RT高速缓冲存储器400来实现如上所述的RT加载操作。如说明的那样,RT高速缓冲存储器400包括字节缓冲器410、字缓冲器420和双字缓冲器430。然而,在本领域的技术人员将要理解:RT高速缓冲存储器400可以被实现为使用不同的多倍字节作为它的不同的数据缓冲器。因此,图6仅仅为说明的目的而提供,而且不应该以一种限制的意义进行解释。
在一个实施例中,RT高速缓存器400被称为第一存储缓冲器,而一级高速缓存器160-1和二级高速缓存器160-2被称为一个或多个第二存储缓冲器。在一个实施例中,使用例如存储器转置电路来实现RT高速缓冲存储器400。最初,从一个或多个第二存储缓冲器160中加载数据。一旦被加载了,所述数据就被横向地写入到所述电路中(例如,操作5-8)。接下来,从存储器转置电路中纵向读取所述数据(例如,操作1-4)。
现在参见图7A,图7A进一步说明了依据本发明另一个实施例的、如图6所述的RT高速缓冲存储器400。如说明的那样,RT高速缓存器410的数据缓冲器(410、420和430)均包含一个相应的高速缓存器标记(412、422、432),用于确定在所述相应数据缓冲器内所请求数据的高速缓存器命中或者未命中。此外,每个数据缓冲器包含一个并行写端口(414、424和434)以及一个并行读端口(416、426和436)。
例如,参见RT高速缓存器400的字节缓冲器410,并行写端口414允许将数据横向写入到RT高速缓存器400中(例如,操作5-8)。并行读端口416允许从RT高速缓存器400中非横向顺序存储器读取(纵向存储器读取)(例如,操作1-4)。利用各并行写端口和并行读端口,处理器110(图6)可以响应于RT加载操作从RT高速缓存器400中存取非横向顺序的存储器数据。在图7A描述的实施例中,并行写端口和并行读端口连接到例如如上所述的存储器转置电路。
现在参见图7B,图7B描述了一个RT高速缓冲存储器410的一个替换实施例,该替换实施例利用线缓冲器440以及数据混洗器450来产生相应的输出数据370。如说明的那样,线缓冲器440用来保存数据而混洗器/交叉开关450用来收集被分散的数据。一旦数据被收集到了,则该数据就被放置到输出370中。虽然如在图7A和7B中描述的那样,RT高速缓存存储器利用了存储器转置电路(图7A)或者线缓冲器440和混洗器450(图7B),但是在本领域的技术人员将会认识到:各种其他的装置由本发明所包含用于如由本发明示教的那样,实现对高速缓冲存储器的非横向顺序存储器存取。因此,因为提供了各种不同的实施例作为本发明可能的实现,所以描述的实施例不应该以限制的意义来解释。
因而,利用RT高速缓冲存储器400,执行单元130没有被限制成:响应于RT加载操作,从RT高速缓冲存储器400中以横向的顺序次序进行存储器数据的常规存取。这样做时,可以使用计算机系统100以一种超过传统计算机系统的改进和有效的方式来执行图像处理操作。如将要在下面进一步详细描述的那样,利用RT加载操作以及RT高速缓冲存储器,本发明能够简化像素填充过程以及图像过滤。因此,通过利用非横向的顺序存储器存取,诸如像如图5说明的那样纵向地从图像块中读取数据,来简化图像处理操作。
高速缓存器一致性:
在一个实施例中,假定描述的实施例不支持RT写操作,MESI(修改(M)、排它(E)、共享(S)和无效(I))高速缓存线状态的一个子集S和I,由RT高速缓存器400实现。如果发生RT加载未命中,则RT高速缓存器向L1/L2高速缓存器160发出一个请求。在L1/L2高速缓存器160中执行一次查找,这将导致命中或者未命中。如果检测到命中,则把请求的数据块供应给RT高速缓存器400。把所述数据块放置到S状态下的RT高速缓存器400中。如果所述请求导致高速缓存器未命中,则L1/L2高速缓存器160可以向外部总线接口发出一个请求,并且从外部储存器104中读取所述数据块。
在所述事务的探听阶段期间,其它高速缓存器(例如,协处理器170内的高速缓存存储器)报告它们是否有所述数据块的拷贝。如果任一其它处理器的高速缓存器都具有在M状态中的一拷贝,则所述线就从那个高速缓存器中加以提供,而且把所述线放置到在S状态下的L1/L2高速缓存器160和RT高速缓存器400中。同时当M数据块被提供给RT高速缓存器400时,所述数据块就被写入到存储器104中。在其它高速缓存器(例如,协处理器170的高速缓存存储器)中的所述数据块因此不再与存储器104中的数据块不同。
因而,数据块的状态从M转换为S状态。当没有其它的高速缓存器具有一拷贝(探听未命中)或者任何其他高速缓存器(这个处理器或者其它处理器)具有在E或者S状态中的一拷贝时,就从存储器104中读取数据块。当完成从存储器104中读取数据块时,L1/L2高速缓存器160和RT高速缓存器400使它们的拷贝处于S状态中。任何其他的高速缓存器(其它处理器)都具有一个拷贝,所述数据块还在S状态下。
为了支持用于在运动图像专家组-四(MPEG-4)中的任意形状视频对象编码的、基于块的算法,一种填充算法已经被引入。MPEG-4规范规定必须在纵向填充之前执行横向填充。不幸地是,由于存储器中的邻近字节是在同一个行、而不是同一个列中,所以用传统的指令有效地实现纵向填充是更加困难的。如将通过比较图8A和8B进行说明的那样,利用RTLoad操作,如在此描述的那样,避免了由传统的像素填充操作500(图8A)所使用的图像转置步骤(502和506)。
现在参见图8A,图8A描述了传统的像素填充方法500。在过程块502处,转置图像块。在所述块被第一次转置之后,在过程块504,纵向填充所述块。这相等于在横向进行填充。然后,在过程块506,转置所述矩阵,并且在过程块506,所述矩阵第二次以纵向被填充。为简单起见,假定忽略了像素平均,使用MMXTM指令以便实现连接像素填充过程500的汇编代码在表1中进行了说明。
表1
用于简单纵向填充的代码(没有重布置指令)
Twopassfillsimple:
mov edi,transposedpixelptr
mov esi,transposedmaskptr
mov ecx,7 ;循环计数器
passlooplsimple:
movq mm1,[esi+8] ;mm1<-M2
movq mm0,[edi+8] ;mm0<-P2
movq mm5,mm1 ;mm5<-M2
pandn mm1,[edi] ;mm1<-P1 AND(NOT M2)
;不对当前线的屏蔽逐位进行,并且
;当前线具有上一行的像素。
por mm0,mm1 ;mm0<-P2+[P1 AND(NOT M2)]
;并且将它们加在一起。
;这样就以向下方向“抹去”像素。
por mm5,[esi] ;mm5<-M2+M1
;改变所述屏蔽
movq[edi+8],mm0
movq[esi+8],mm5
add esi,8
add edi,8
loop passlooplsimple
mov ecx,7 ;循环计数器
sub esi,8
sub edi,8
passloop2simple:
movq mm1,[esi] ;这做的是同样的事,但这次是反向
movq mm0,[edi]; ;进行的。
movq mm5,mm1
pandn mm1,[edi+8]
por mm0,mm1
por mm5,[esi+8] ;新的屏蔽!在任一行中的所以像素
movq[edi],mm0
movq[esi],mm5
sub esi,8
sub edi,8
loop passloop2simple
另一方面,如表3所示,RT加载操作允许把转置操作和重复的像素填充过程组合到单一的操作中。在图8B中说明了这个RT加载像素填充过程510。整个像素填充过程510现在仅仅执行相同的代码两次。估计这个新的代码已经比传统的像素填充过程500获得了更高的性能。
现在参见图9A-E,图9A-9E描述了传统像素填充过程的一个示例。图9A描述了一个初始块。图9B描述了初始块的转置。图9C描述了一个纵向填充。图9D描述了所述纵向填充的转置块的转置,这相当于所述块的横向填充。图9E描述了纵向填充。
表2
用于转置一个8×8矩阵的代码
mov ecx,eax punpckhdq mm1,mm5
mov edx,eax movq[edi],mm1
sh1 ecx,2 add edi,ebx
sh1 edx,2
sub ecx,eax movq mm0,[esi]
movq mm1,[esi+eax]
movq mm0,[esi] punpckhbw mm0,mm1
movq mm1,[esi+eax] movq mm2,[esi+2*eax]
punpcklbw mm0,mm1 movq mm3,[esi+ecx]
movq mm2,[esi+2*eax] add esi,edx
movq mm3,[esi+ecx] punpckhbw mm2,mm3
add esi,edx
punpcklbw mm2,mm3 movq mm4,[esi]
movq mm5,[esi+eax]
movq mm4,[esi] punpckhbw mm4,mm5
movq mm5,[esi+eax] movq mm6,[esi+2*eax]
punpcklbw mm4,mm5 movq mm7,[esi+ecx]
movq mm6,[esi+2*eax] punpckhbw mm6,mm7
movq mm7,[esi+ecx] movq mm1,mm0
punpcklbw mm6,mm7 movq mm3,mm2
movq mm5,mm4
movq mm1,mm0 movq mm7,mm6
movq mm3,mm2
movq mm5,mm4 punpcklwd mm0,mm2
movq mm7,mm6 punpcklwd mm4,mm6
movq mm6,mm0
sub esi,edx
punpckldq mm0,mm4
punpcklwd mm0,mm2 movq[edi],mm0
punpcklwd mm4,mm6 add edi,ebx
movq mm6,mm0
punpckldq mm0,mm4 movq mm0,mm6
movq[edi],mm0 punpckhdq mm0,mm4
add edi,ebx movq[edi],mm0
movq mm0,mm6 add edi,ebx
punpckhdq mm0,mm4 punpckhwd mm1,mm3
movq[edi],mm0 punpckhwd mm5,mm7
add edi,ebx movq mm7,mm1
punpckhwd mm1,mm3 punpckldq mm1,mm5
punpckhwd mm5,mm7 movq[edi],mm1
movq mm7,mm1 add edi,ebx
punpckldq mm1,mm5 movq mm1,mm7
movq[edi],mm1
add edi,ebx punpckhdq mm1,mm5
movq mm1,mm7 movq[edi],mm1
表3
用于使用重布置指令进行纵向填充的代码
Twopassfillsimple:
mov edi,tpixelptr
mov esi,maskptr
mov eax,8
rtmovq mm2,[edi],eax ;mm2<-M1
rtmovq mm4,[edi],eax ;mm4<-P1
mov edx,transposedpixelptr
mov ebx,transposedmaskptr
movq[edx],mm2
movq[ebx],mm4
mov ecx,7 ;循环计数器
passlooplsimple:
rtmovq mm1,[esi+8],eax ;mm1<-M2
rtmovq mm0,[esi+8],eax ;mm0<-P2
movq mm5,mm1 ;mm5<-M2
pandn mm1,mm2 ;mm1<-P1 AND(NOT M2)
;不对当前线的屏蔽逐位进行,并且
;当前线具有上一行的像素。
por mm0,mm1 ;mm0<-P2+[P1 AND(NOT M2)]
;并且将它们加在一起。
;这样就以向下方向“抹去”像素。
por mm5,mm4 ;mm5<-M2+M1改变所述屏蔽
movq[edx+8],mm0
movq mm2,mm5
movq[ebx+8],mm5
movq mm4,mm5
add esi,8
add edi,8
add ebx,8
add edx,8
loop passlooplsimple
mov ecx,7 ;循环计数器
sub esi,8
sub edi,8
sub ebx,8
sub edx,8
passloop2simple:
movq mm1,[ebx] ;这做的是同样的事,但这次是反向
movq mm0,[edx] ;进行的。
movq mm5,mm1
pandn mm1,[edx+8]
pormm0,mm1
por mm5,[ebx+8] ;新的屏蔽!在任一行中的所以像素
movq[edi],mm0
movq[esi],mm5
sub esi,8
sub edi,8
sub ebx,8
sub edx,8
loop passloop2simple
另一个应用示例是利用分离的过滤器的图像过滤,如在图10A-10C中描述的那样。这种操作将被例如在将来用于为在H.26L中的半像素运动估计产生半像素位置(如由ITU视频编码专家小组在2001年六月在Test ModelLong Term H.26L版本8中定义的那样)。这个操作使用一个具有6个系数的过滤器产生一幅加倍横向和加倍纵向方向的图像。
现在参见图10A,在图像550内的‘X’表示可以从初始图像中获得的整数像素位置。首先通过使用一个6抽头过滤器:(1,-5,20,20,-5,1)/32产生′+′(横向像素位置)。所述结果被四舍五入到最近的整数并且被修剪到0到255的范围内。然后通过使用相同的6抽头产生所有的‘*’。所述结果被四舍五入到最近的整数并且被修剪在0到255的范围内。如果所述过滤过程涉及所述图片外部的像素,则它由最近的图像边缘像素来代替。
在图10B中显示了当前可能的最佳实现方式(现有技术)。不幸地是,为了以横向方式纵向过滤存取数据,需要有两次转置。使用建议的RT加载操作,有可能在没有转置操作的情况下,进行纵向向上采样和过滤。利用RT加载执行向上采样功能,这相当于转置操作(然后图像尺寸是2*高度×2*宽度)。然后用RT加载对所述图像执行纵向过滤操作。接下来,所述操作如在图10C中所述的块582-594描述的那样再次转置图像(所述图像具有正确的方位和大小)。使用RT加载操作的估算改善是2.1x。
现在转向图11,其中显示了电子系统600的实施例的框图,在所述电子系统600中,处理器具有如上所述的RT高速缓冲存储器的特征。所述系统包含一个多层印刷布线板604,并行总线608形成在所述电路板上。总线608可以是点到点类型的,或者是诸如用在主存储器中的那些总线的多站总线。可替换地,总线608可以使用在各个芯片封装间的光信号来实现,在所述芯片封装中,需要光/电转换。集成电路(IC)芯片封装606被可操作地安装在所述板上以使用并行总线608进行通信。封装606的安装可以采用表面安装技术或者经由连接器或者插槽来完成。
此外,所述封装具有如下的IC芯片610,所述IC芯片610包含逻辑功能部件和作为所述逻辑功能部件和总线608之间接口的I/O部分。在一个实施例中,逻辑功能是包含如上所述的RT高速缓冲存储器的微处理器。可替换地,能够在IC芯片的逻辑功能部件中实现的其他器件也可以被使用,诸如存储器控制器和总线桥等。所述I/O部分具有一个其中提供了如上所述的平衡回路的总线接收器。
第二IC封装612也被安装在板604上以便经由总线608和第一封装606进行通信。第二IC封装612也包含具有I/O部分的芯片614以及它自己的逻辑功能部件(在这里示为存储器控制器),在所述I/O部分中提供了总线接收器以便接口到总线608。本领域的技术人员将会认识到制造的系统600是为说明目的提供的而不应该以一种限制的意义进行解释。此外,各个IC封装可以按具体实现细节的要求在单独的板内实施或组合。此外,在各个部件之间的通信不局限于电信号,而且包含光通信、微电子机械通信信号等等。
依据一个实施例,处理器620利用如上所述的RT高速缓冲存储器630。因此,在这样一个实施例中,处理器620能够响应于单个RT加载指令执行包含在RT高速缓冲存储器630内的数据的非横向顺序存取。RT高速缓存器630的其他系统应用也是可能的,这包含例如存储器控制器。通过使用RT高速缓冲存储器400,处理器能够在RT高速缓存器400的相应部分内纵向读取/写入数据。现在描述用于实现本发明实施例的过程方法。
操作
现在参见图12,图12描述了一个流程图,它说明了一种用于从第一存储缓冲器诸如如图1、2和6-7B中所述的计算机系统100的RT高速缓冲存储器400中执行非横向顺序存储器存取的方法700。在过程块702,确定是否接收到RT存储器存取指令。RT存储器存取指令包含但不局限于例如在图1所述的RTMOV指令(142-158)。一旦接收到RT存储器存取指令,则在过程块704处,确定是否检测到了由存储器存取指令请求的数据的高速缓存器未命中。当检测到高速缓存器未命中时就执行过程块720。
在过程块720,在第一存储缓冲器内加载数据块。依据一个实施例,所述数据块的大小如图1中描述的那样由RTMOV操作的2DQ/2Q参数所确定。因此,根据RTMOV操作的数据类型,将加载包含由存储器存取指令请求的数据的数据块到高速缓冲存储器400内。最后,在过程块790,CPU可以执行由存储器存取指令请求的数据的非横向顺序存取。
现在参见图13,图13描述了说明另一种方法706的流程图,该方法用于检测在第一存储缓冲器诸如如图6所述的RT高速缓存400中由存储器存取指令请求的数据的高速缓存器命中/未命中。在过程块708处,确定所述存储器存取指令指示的目标地址。一旦确定了,在过程块710处,屏蔽所述目标地址以形成屏蔽的目标地址。一旦形成了屏蔽的目标地址,就在过程块712处,确定所述屏蔽的目标地址是否与标记地址相匹配。当检测到匹配时,则在过程块713处确定高速缓存器命中。否则,在过程块714处检测到高速缓存器未命中。
现在参见图14,图14描述了另一方法722的流程图,所述方法722用于在如图12所述的过程块720中将数据块加载到第一存储缓冲器内。在过程块724处,RT-高速缓存器400将向一个或者多个第二存储缓冲器发出一个数据请求。如参考图6描述的那样,RT-高速缓存器400将向一级高速缓存器160-1和二级高速缓存器160-2发出一个数据请求。
接下来,在过程块774处,从一个或者多个第二存储缓冲器中的一个第二存储缓冲器中接收包含请求的数据的数据块。如描述的那样,所述一个或者多个第二存储缓冲器指如图6所述的计算机系统100的一级高速缓存器160-1和二级高速缓存器160-2。最后,在过程块776处,所述数据块被加载到RT高速缓冲存储器400中,在此它被可互换地称为第一存储缓冲器。
现在参见图15,图15描述了说明另一方法的流程图,所述方法用于发出如图14所述的过程块724中的数据请求。当从第二存储缓冲器中请求和所述存储器存取指令相关联的数据时,在处理块728处确定是否检测到高速缓存器未命中。当检测到高速缓存器未命中时,则执行过程块730。否则,执行过程块770。在过程块730处,例如,CPU110将从外部存储器104请求包含由存储器存取指令请求的数据的数据块。在一个实施例中,如参考图6说明的那样,CPU110将从主存储器104请求数据块。
在过程块740处,包含请求的数据的数据块被加载到一个或者多个第二存储缓冲器中,例如,加载到如图6所述的一级高速缓存器160-1和二级高速缓存器160-2中。然而,当在所述一个或者多个第二存储缓冲器中检测到高速缓存器命中时,在过程块770处,所述数据块从包含请求的数据的一个第二存储缓冲器(160-1/160-2)中被选择出来。最后,在过程块772处,包含请求的数据的数据块被提供给第一存储缓冲器,例如提供给RT高速缓冲存储器400。
现在参见图16,图16描述了说明另一方法732的流程图,该方法732用于从如图15所述的过程块730中的外部储存器104中请求所述数据块。在过程块734处,请求数据的数据类型被确定为字节或者多倍字节,例如字或者双字等。一旦确定了数据类型,就在过程块736处确定请求的数据的这样的块宽度,块深度和所述块宽度就确定了数据块的数据大小。最后,在过程块738处,依据在过程块736处确定的数据大小,从外部储存器诸如像例如如图6所述的主存储器104中读取所述数据块。要注意到:这个流程图不仅适用于730,而且还适用于770和790。
现在参见图17,图17描述了说明另一方法780的流程图,所述方法780用于将数据加载到如图12所述的过程块720的第一存储缓冲器中。在过程块782处,确定数据块的块大小。接下来,在过程块784处,从一个或多个第二存储缓冲器例如在图6中所述的一级高速缓存器和二级高速缓存器160中请求所述数据块。接下来,在过程块736处,从第二存储缓冲器中接收所述数据块。最后,在过程块788处,所述数据块被加载到第一存储缓冲器的相应部分中。例如,参见图6,根据与RTMOV操作相关联的数据类型,所述数据块将被存储到如图6所述的RT高速缓冲存储器400的字节部分410、字部分420或者双字部分430中。
现在参见图18,图18描述了说明另一方法792的流程图,所述方法792用于执行如图12所述的过程块790中的请求数据的非横向顺序存取。在过程块794处,由存储器存取操作指示的数据类型被确定为字节或者多倍字节诸如字、双字、四倍字之一。接下来,在过程块796处,依据所述存储器存取指令确定块的深度。接下来,在过程块798处,从RT高速缓冲存储器400中纵向地读取请求的数据。最后,在过程块800处,纵向读取的数据部分被加载到目的地数据存储设备中。
最后,参见图19,图19描述了说明另一方法810的流程图,所述方法810用于例如从RT高速缓冲存储器400执行所请求的数据的非横向顺序存取。在过程块812处,从第一存储缓冲器例如像RT高速缓冲存储器400中执行请求数据的纵向、顺序存储器读取。一旦读取了所述数据,则执行过程块814。在过程块814处,依据所述存储器存取指令,纵向读取的数据被从第一存储缓冲器400中加载到目的地数据存储设备中。
因此,使用本发明的实施例,RT高速缓存器结合在此描述的RT加载指令允许在RT高速缓冲存储器非横向顺序存储器存取。因此,使用RT高速缓冲存储器400的CPU可以执行数据的纵向读取,所述的数据的纵向读取在图像处理操作期间被提供。因而,使用本发明教导的计算机系统能够通过使用RT加载操作来响应于单个指令执行数据的纵向读取数据,大大地提高例如图像处理的时间。因而,使用本发明的教导,避免了当以非横向方向处理像素数据时所要求的许多转置操作。
在一个实施例中,硬件预取能够使用对第一存储缓冲器的存储器请求,以便预取数据到RT高速缓存存储器400中。
替换实施例
已经描述了用于在RT高速缓存器内执行数据的非横向顺序存储器存取的RT加载操作的一个实施例的几个方面。然而,RT加载高速缓存器和RT加载指令的各个实施例提供了许多的特征,它们包括补充、增补、和/或代替如上所述的实施例的特征。在不同的实施例实现中,这些特征能够被实现为处理器的一部分或者存储器控制器的一部分。此外,为了解释起见,上面的描述使用了具体的命名法以提供对本发明实施例的一个彻底了解。然而,对于本领域的专业人员来说,显而易见的是这些细节不是实践本发明实施例所必需的。
此外,在此描述的一个实施例集中于RT高速缓存器,本领域的技术人员将要理解:本发明的实施例能够应用于其他的系统。实际上,用于非横向顺序存取的系统属于本发明的实施例之内,并且没有背离本发明的范围和精神。选择和描述如上所述的实施例是为了最好地说明本发明的原理和它的实际应用。选择这些实施例以借此允许在本领域的技术人员利用适用于所考虑的特定使用的各个修改最好地使用本发明的各个实施例。
将要理解:虽然在上述中已经阐述了本发明各个实施例的许多特征和优点以及本发明各个实施例的结构和功能的详细信息,但是这个公开仅仅是说明性的。在一些情况下,仅仅用一个这样的实施例详细描述了某些子部件。尽管如此,要认识并体会到,这样的子组件可以在本发明的其他实施例中使用。可以作出详细的改变,尤其是在本发明原理内的部件的结构和管理有关的部分,可以在由其中表示所附权利要求的术语的广泛的通用意思所指示的最大可能的范围内详细地进行。
本发明的实施例相对于已知技术提供了许多优点。在一个实施例中,本发明包含允许在RT高速缓冲存储器内的非横向顺序存储器存取的能力。因此,使用RT高速缓冲存储器400的CPU可以执行数据的纵向读取,这在图像处理操作期间提供。因而,使用本发明教导的图形子系统能够通过使用RT加载操作响应于单个指令来执行数据的纵向读取,大大地提高图像处理时间。因而,使用本发明的教导,避免了在以非横向方向处理像素数据时所要求的许多转置操作。
已经公开了示例性的实施例和最佳模式,可以对公开的实施例做出修改和变化,同时保持在如以下权利要求定义的本发明范围之内。
Claims (32)
1.一种方法,包含:
响应于存储器存取指令,在第一存储缓冲器内检测所述存储器存取指令所请求的数据的缓冲器命中/未命中;
当检测到缓冲器未命中时,依据所述存储器存取指令加载一个数据块到第一存储缓冲器中,所述数据块包含存所述储器存取指令请求的数据;以及
从第一存储缓冲器中执行由所述存储器存取指令请求的数据的非横向顺序存取。
2.如权利要求1所述的方法,其特征在于:检测缓冲器命中/缓冲器未命中进一步包括:
确定由所述存储器存取指令指示的如下目标地址,所述目标地址对应于由所述存储器存取指令所请求的数据;
屏蔽所述目标地址以形成屏蔽的目标地址;
当所述屏蔽的目标地址与一个标记地址相匹配时,就检测到缓冲器命中;以及
否则,就检测到缓冲器未命中。
3.如权利要求1所述的方法,其特征在于: 加载所述数据块进一步包括:
向一个或多个第二存储缓冲器发出一个对所述存储器存取指令所请求的数据的数据请求;
从一个或多个所述第二存储缓冲器中的一个第二存储缓冲器中接收包含由所述存储器存取指令请求的数据的数据块;以及
加载接收到的数据块到第一存储缓冲器中。
4.如权利要求3所述的方法,其特征在于:发出数据请求进一步包括:
依据所述数据请求,在所述一个或多个第二存储缓冲器内检测所述存储器存取指令请求的数据的缓冲器命中/缓冲器未命中;
当检测到缓冲器未命中时,从外部储存器中请求包含所述存储器存取指令请求的数据的数据块;
一旦接收到所述数据块,则把所述数据块加载到所述一个或多个第二存储缓冲器中;
否则,依据所述存储器存取指令,从所述一个或多个第二存储缓冲器中的一个第二存储缓冲器中选择包含所述存储器存取指令请求的数据的数据块;以及
向第一存储缓冲器提供包含所述存储器存取指令请求的数据的数据块。
5.如权利要求1所述的方法,其特征在于:加载所述数据块进一步包括:
依据所述存储器存取指令,确定所述数据块的块大小;
依据所确定的块大小,从一个或多个第二存储缓冲器中请求数据块;
从所述一个或多个第二存储缓冲器中的一个第二存储缓冲器中接收所述数据块;以及
依据所述存储器存取指令,把所述数据块加载到第一存储缓冲器的相应部分中。
6.如权利要求1所述的方法,其特征在于:执行非横向顺序存取进一步包括:
把由所述存储器存取指令指示的数据类型确定为字节和多倍字节之一;
确定由所述存储器存取指令指示的块深度;
对应于所确定的数据类型以及依据所确定的块深度,从第一存储缓冲器中读取数据部分;以及
依据所述存储器存取指令,把每个读取的数据部分加载到目的地数据存储设备中。
7.如权利要求1所述的方法,其特征在于:执行非横向存取进一步包括:
从第一存储缓冲器中执行由所述存储器存取指令请求的数据的纵向读取;以及
依据所述存储器存取指令,把从第一存储缓冲器中读取的数据加载到目的地数据存储设备中。
8.如权利要求4所述的方法,其特征在于:请求数据块进一步包括:
把由所述存储器存取指令指示的数据类型确定为字节和多倍字节之一;
依据由所述存储器存取指令指示的数据类型确定这样的块宽度,从而使得所述块深度和块宽度就确定了所述数据块的数据大小;
依据所确定的数据大小,从外部储存器中读取一个数据块。
9.如权利要求4所述的方法,进一步包括:
在第一存储缓冲器、第二存储缓冲器和外部储存器当中维护包含由所述存储器存取指令请求的数据的数据块的一致性。
10.如权利要求1所述的方法,其特征在于:所述存储器存取指令是读指令和写指令之一。
11.一种装置,包括:
一个或多个数据缓冲器,被配置成用于支持在其中包含的数据的非横向顺序存取,
其中所述装置被配置成用于执行如下的一个操作序列,所述操作序列包括:
响应于存储器存取请求,在所述一个或多个数据缓冲器内检测由所述存储器存取请求所请求的数据的缓冲器命中/未命中;
当检测到缓冲器未命中时,加载如下的一个数据块到所述一个或多个数据缓冲器中的、依据所述存储器存取请求选择的一个数据缓冲器中,所述数据块包含由所述存储器存取请求所请求的数据;以及
从选择的数据缓冲器中执行由所述存储器存取请求所请求的数据的非横向顺序存取。
12.如权利要求11所述的装置,其特征在于:检测缓冲器命中/缓冲器未命中的操作进一步包括:
确定由所述存储器存取请求指示的如下目标地址,所述目标地址对应于由所述存储器存取请求所请求的数据;
屏蔽所述目标地址,以形成屏蔽的目标地址;
当所屏蔽的目标地址与一个标记地址相匹配时,就检测到了缓冲器命中;以及
否则,检测到了缓冲器未命中。
13.如权利要求11所述的装置,其特征在于:加载所述数据块的操作进一步包括:
向一个或多个第二数据缓冲器发出一个对所述存储器存取请求所请求的数据的数据请求;
接收包含由所述存储器存取请求所请求的数据的数据块;以及
依据所述存储器存取请求,把所接收的数据块加载到所选择的数据缓冲器的相应部分中。
14.如权利要求13所述的装置,其特征在于:发出数据请求的操作进一步包括:
依据所述数据请求,在一个或多个第二存储缓冲器内检测存储器存取指令所请求的数据的缓冲器命中/缓冲器未命中;
当检测到缓冲器未命中时,从外部储存器中请求包含由所述存储器存取指令请求的数据的数据块;
一旦接收到所述数据块,就把所述数据块加载到所述的一个或多个第二存储缓冲器中;
否则,依据所述存储器存取指令,从所述一个或多个第二存储缓冲器中的一个第二存储缓冲器中选择包含存储器存取指令所请求的数据的数据块;以及
向所选择的数据缓冲器提供包含存储器存取指令所请求的数据的数据块。
15.如权利要求13所述的装置,其特征在于:加载数据请求的操作进一步包括:
依据所述存储器存取指令确定数据块的块大小;
依据所确定的块大小,从所述的一个或多个第二数据缓冲器中请求数据块;
从所述的一个或多个第二存储缓冲器中的一个第二存储缓冲器中接收所述数据块;以及
依据所述存储器存取指令,把数据存储到所选择的数据缓冲器的相应部分中。
16.如权利要求11所述的装置,其特征在于:执行非横向顺序存取的操作进一步包括:
把由所述存储器存取请求指示的数据类型确定为字节和多倍字节之一;
确定由所述存储器存取请求指示的块深度;
对应于确定的数据类型以及依据确定的块深度,从选择的数据缓冲器中读取数据部分;以及
依据所述存储器存取请求,把每个读取的数据部分加载到目的地数据存储设备中。
17.如权利要求11所述的装置,其特征在于:执行非横向顺序存取的操作进一步包括:
从选择的数据缓冲器中执行由存储器存取请求所请求的数据的纵向读取;以及
依据所述存储器存取请求,把从第一存储缓冲器中纵向读取的数据加载到目的地数据存储设备中。
18.如权利要求11所述的装置,其特征在于:所述一个或多个存储缓冲器进一步包括:
一个或多个多倍字节数据缓冲器,以便使所述多倍字节数据缓冲器支持对包含在其中的相应多倍字节数据的非横向顺序存取。
19.如权利要求11所述的装置,进一步包括:
一个或多个并行写端口;
一个或多个读端口;以及
一个或多个存储器转置电路,用于从选择的数据缓冲器中执行由存储器存取请求所请求的数据的非横向顺序存取。
20.如权利要求11所述的装置,进一步包括:
一个或多个数据混洗器,用于从选择的数据缓冲器中执行由存储器存取请求所请求的数据的非横向顺序存取。
21.一个系统,包括:
第一存储缓冲器,经由一总线耦合到执行单元,所述第一存储缓冲器被配置为允许对包含在其中的数据的非横向顺序存取;以及
一个或多个第二存储缓冲器,经由所述总线耦合到执行单元,以便响应来自执行单元的存储器存取请求,在检测到缓冲器未命中时,把数据加载到第一存储缓冲器中。
22.如权利要求21所述的系统,进一步包括:
一个或多个共同执行单元,经由一系统总线耦合到执行单元。
23.如权利要求21所述的系统,其特征在于:第一存储缓冲器进一步包括:
一个或多个多倍字节数据缓冲器,被配置为支持对包含在其中的多倍字节数据的非横向顺序存取。
24.如权利要求21所述的系统,其特征在于:第一存储缓冲器被配置为执行一个操作序列,所述操作序列包括:
响应于来自执行单元的存储器存取请求,在第一存储缓冲器内检测由存储器存取请求所请求的数据的缓冲器命中/未命中;
当检测到缓冲器未命中时,依据所述存储器存取请求从第二存储缓冲器中加载一个数据块到第一存储缓冲器中,所述数据块包含由存储器存取请求所请求的数据;以及
从第一存储缓冲器中执行由存储器存取请求所请求的数据的非横向顺序存取。
25.如权利要求24所述的系统,其特征在于:执行非横向顺序存取的操作进一步包括:
从第一存储缓冲器中执行由存储器存取请求所请求的数据的纵向读取;以及
依据所述存储器存取请求,从第一存储缓冲器中把纵向读取的数据加载到目的地数据存储设备中。
26.如权利要求21所述的系统,其特征在于:第一存储缓冲器保持在第一存储缓冲器和第二存储缓冲器当中的数据的一致性。
27.如权利要求21所述的系统,其特征在于:所述系统被制造到一个在上面形成了并行总线的布线板上,并且集成电路(IC)芯片封装可操作地被安装到所述板上以便使用并行总线进行通信,该所述包装封装具有如下的IC芯片,所述IC芯片包括处理器和作为处理器和总线之间接口的I/O部分,以便使处理器在第一存储缓冲器内执行数据的非横向顺序存取。
28.如权利要求27所述的系统,其特征在于:所述处理器进一步包括:
耦合到第一存储缓冲器的执行单元;以及
耦合到处理器的一个或多个第二存储缓冲器。
29.如权利要求27所述的系统,其特征在于:所述IC芯片进一步包括:
耦合到并行总线的协处理器,包含一个或多个外部存储缓冲器。
30.一种包含如下程序指令的计算机可读存储介质,当所述程序指令由处理器执行时指导计算机以一种指定的方式起作用,所述程序指令包含:
响应于存储器存取指令,从存储缓冲器中执行由存储器存取指令所请求的数据的非横向顺序存取。
31.如权利要求30所述的计算机可读存储介质,其特征在于:执行非横向顺序存取进一步包括:
从第一存储缓冲器中执行由所述存储器存取指令请求的数据的纵向读取;以及
依据所述存储器存取指令,将从第一存储缓冲器中读取的数据加载到目的地数据存储设备中。
32.如权利要求30所述的计算机可读存储介质,其特征在于:存储器存取指令是读指令和写指令之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/268186 | 2002-10-10 | ||
US10/268,186 US6957317B2 (en) | 2002-10-10 | 2002-10-10 | Apparatus and method for facilitating memory data access with generic read/write patterns |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1501259A true CN1501259A (zh) | 2004-06-02 |
CN100412821C CN100412821C (zh) | 2008-08-20 |
Family
ID=32068496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200310119844XA Expired - Fee Related CN100412821C (zh) | 2002-10-10 | 2003-10-10 | 便于具有通用读/写模式的存储器数据存取的装置和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6957317B2 (zh) |
EP (1) | EP1550041A2 (zh) |
KR (1) | KR100811904B1 (zh) |
CN (1) | CN100412821C (zh) |
AU (1) | AU2003272756A1 (zh) |
TW (1) | TWI243987B (zh) |
WO (1) | WO2004034265A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591813A (zh) * | 2009-07-10 | 2012-07-18 | 威盛电子股份有限公司 | 微处理器、存储器子系统以及快取数据的方法 |
CN108572931A (zh) * | 2017-03-14 | 2018-09-25 | 三星电子株式会社 | 存储器加载到加载熔合 |
CN112527390A (zh) * | 2019-08-28 | 2021-03-19 | 武汉杰开科技有限公司 | 数据获取方法、微处理器及具有存储功能的装置 |
CN113689707A (zh) * | 2021-07-20 | 2021-11-23 | 浙江大华技术股份有限公司 | 视频数据处理方法、装置以及计算机可读存储介质 |
WO2023161783A1 (en) * | 2022-02-23 | 2023-08-31 | International Business Machines Corporation | Padding input data for artificial intelligence accelerators |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236920A1 (en) * | 2003-05-20 | 2004-11-25 | Sheaffer Gad S. | Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation |
US7325176B2 (en) * | 2004-02-25 | 2008-01-29 | Dell Products L.P. | System and method for accelerated information handling system memory testing |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US8624906B2 (en) * | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US8725990B1 (en) | 2004-11-15 | 2014-05-13 | Nvidia Corporation | Configurable SIMD engine with high, low and mixed precision modes |
WO2006055546A2 (en) * | 2004-11-15 | 2006-05-26 | Nvidia Corporation | A video processor having a scalar component controlling a vector component to implement video processing |
US20080282034A1 (en) * | 2005-09-19 | 2008-11-13 | Via Technologies, Inc. | Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
GB2442984B (en) * | 2006-10-17 | 2011-04-06 | Advanced Risc Mach Ltd | Handling of write access requests to shared memory in a data processing apparatus |
US7877537B2 (en) * | 2006-12-15 | 2011-01-25 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
US9208095B2 (en) | 2006-12-15 | 2015-12-08 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US9064333B2 (en) * | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8489851B2 (en) | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
US10223450B1 (en) * | 2013-03-14 | 2019-03-05 | Google Llc | Data delivery |
US9513908B2 (en) * | 2013-05-03 | 2016-12-06 | Samsung Electronics Co., Ltd. | Streaming memory transpose operations |
US9891916B2 (en) | 2014-10-20 | 2018-02-13 | Via Technologies, Inc. | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
US10949496B2 (en) * | 2016-12-30 | 2021-03-16 | Intel Corporation | Dimension shuffling using matrix processors |
CN111208933B (zh) * | 2018-11-21 | 2023-06-30 | 昆仑芯(北京)科技有限公司 | 数据访问的方法、装置、设备和存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3018038B2 (ja) * | 1990-01-18 | 2000-03-13 | 三菱電機株式会社 | キャッシュを有するデータ処理装置 |
CA2080210C (en) * | 1992-01-02 | 1998-10-27 | Nader Amini | Bidirectional data storage facility for bus interface unit |
EP0651332B1 (en) * | 1993-10-29 | 2001-07-18 | Advanced Micro Devices, Inc. | Linearly addressable microprocessor cache |
US5787267A (en) * | 1995-06-07 | 1998-07-28 | Monolithic System Technology, Inc. | Caching method and circuit for a memory system with circuit module architecture |
US6674443B1 (en) * | 1999-12-30 | 2004-01-06 | Stmicroelectronics, Inc. | Memory system for accelerating graphics operations within an electronic device |
US6415356B1 (en) * | 2000-01-14 | 2002-07-02 | Sun Microsystems, Inc. | Method and apparatus for using an assist processor to pre-fetch data values for a primary processor |
EP1150213B1 (en) * | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
CN1121649C (zh) * | 2000-12-15 | 2003-09-17 | 智原科技股份有限公司 | 数据存取控制装置和方法 |
DE10064268A1 (de) * | 2000-12-22 | 2002-07-04 | Alstom Switzerland Ltd | Werkzeug und Verfahren zum Giessen eines Formteils für die Herstellung einer Turbinenschaufel |
US6760818B2 (en) * | 2002-05-01 | 2004-07-06 | Koninklijke Philips Electronics N.V. | Memory region based data pre-fetching |
-
2002
- 2002-10-10 US US10/268,186 patent/US6957317B2/en not_active Expired - Fee Related
-
2003
- 2003-09-26 EP EP03754957A patent/EP1550041A2/en not_active Withdrawn
- 2003-09-26 WO PCT/US2003/030578 patent/WO2004034265A2/en not_active Application Discontinuation
- 2003-09-26 KR KR1020057006264A patent/KR100811904B1/ko not_active IP Right Cessation
- 2003-09-26 AU AU2003272756A patent/AU2003272756A1/en not_active Abandoned
- 2003-10-09 TW TW092128154A patent/TWI243987B/zh not_active IP Right Cessation
- 2003-10-10 CN CNB200310119844XA patent/CN100412821C/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591813A (zh) * | 2009-07-10 | 2012-07-18 | 威盛电子股份有限公司 | 微处理器、存储器子系统以及快取数据的方法 |
CN102591813B (zh) * | 2009-07-10 | 2014-09-17 | 威盛电子股份有限公司 | 微处理器、存储器子系统以及快取数据的方法 |
CN108572931A (zh) * | 2017-03-14 | 2018-09-25 | 三星电子株式会社 | 存储器加载到加载熔合 |
CN108572931B (zh) * | 2017-03-14 | 2023-03-14 | 三星电子株式会社 | 存储器加载到加载熔合 |
CN112527390A (zh) * | 2019-08-28 | 2021-03-19 | 武汉杰开科技有限公司 | 数据获取方法、微处理器及具有存储功能的装置 |
CN112527390B (zh) * | 2019-08-28 | 2024-03-12 | 武汉杰开科技有限公司 | 数据获取方法、微处理器及具有存储功能的装置 |
CN113689707A (zh) * | 2021-07-20 | 2021-11-23 | 浙江大华技术股份有限公司 | 视频数据处理方法、装置以及计算机可读存储介质 |
WO2023161783A1 (en) * | 2022-02-23 | 2023-08-31 | International Business Machines Corporation | Padding input data for artificial intelligence accelerators |
Also Published As
Publication number | Publication date |
---|---|
EP1550041A2 (en) | 2005-07-06 |
TW200413909A (en) | 2004-08-01 |
CN100412821C (zh) | 2008-08-20 |
US6957317B2 (en) | 2005-10-18 |
WO2004034265A2 (en) | 2004-04-22 |
TWI243987B (en) | 2005-11-21 |
AU2003272756A8 (en) | 2004-05-04 |
US20040073771A1 (en) | 2004-04-15 |
KR20050061529A (ko) | 2005-06-22 |
AU2003272756A1 (en) | 2004-05-04 |
KR100811904B1 (ko) | 2008-03-10 |
WO2004034265A3 (en) | 2005-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1501259A (zh) | 便于具有通用读/写模式的存储器数据存取的装置和方法 | |
CN1149496C (zh) | 自适应视频信号运算处理装置 | |
CN1138420C (zh) | 图象处理器、图象数据处理器和可变长度代码解码器 | |
CN1287342C (zh) | 移位寄存器以及具备该寄存器的显示装置 | |
CN101034381A (zh) | 多主机系统和数据传送系统 | |
CN1684058A (zh) | 处理器 | |
CN1101737A (zh) | 数字图象处理方法及装置 | |
CN1276401C (zh) | 信号输出装置和显示装置 | |
CN1645462A (zh) | 图像显示装置 | |
CN1801082A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1845178A (zh) | 使用各向异性纹理映射的图像绘制方法和图像绘制设备 | |
CN1830002A (zh) | 图像处理装置、图像处理方法以及失真校正方法 | |
CN1914592A (zh) | 执行具有单元大小控制的紧缩数据操作的方法和设备 | |
CN1139777A (zh) | 处理器及其运算方法以及数据处理器 | |
CN101042682A (zh) | 访问控制装置、系统和方法,处理器 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN1991798A (zh) | 半导体存储装置 | |
CN1924931A (zh) | 视频绘制装置及方法 | |
CN1945741A (zh) | 半导体存储装置及具备该半导体存储装置的收发系统 | |
CN1549106A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1908904A (zh) | 实时内部简易监视器 | |
CN1471077A (zh) | 浮点存储方法及浮点运算装置 | |
CN1855027A (zh) | 存储设备控制装置 | |
CN1506971A (zh) | 半导体器件、图像数据处理装置和方法 | |
CN1932783A (zh) | 存储器控制装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
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: 20080820 Termination date: 20171010 |