CN101180611A - 依赖于指令类型的可配置高速缓存系统 - Google Patents
依赖于指令类型的可配置高速缓存系统 Download PDFInfo
- Publication number
- CN101180611A CN101180611A CN200680017950.9A CN200680017950A CN101180611A CN 101180611 A CN101180611 A CN 101180611A CN 200680017950 A CN200680017950 A CN 200680017950A CN 101180611 A CN101180611 A CN 101180611A
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache
- written
- type
- speed cache
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 7
- 230000002123 temporal effect Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000000875 corresponding effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002596 correlated effect Effects 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
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000005055 memory storage Effects 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- G06F9/3824—Operand accessing
-
- 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
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
处理器(51)包括确定取出的每条指令的指令类型的译码逻辑(54)、一级高速缓存(L1)、耦合到一级高速缓存的二级高速缓存(L2)和操作地耦合到一级和二级高速缓存的控制逻辑。当高速缓存错过第一类型指令时,所述控制逻辑优选地导致对一级高速缓存执行线填充,但对于第二类型指令,控制逻辑阻止对一级高速缓存执行线填充。
Description
技术领域
【0001】本发明涉及一种可用于数据通信系统中的微处理器高速缓存装置和方法。
背景技术
【0002】片上高速缓存用于各种微处理器设计中,以通过将常用的信息存储在快速的片上高速缓存存储器中来提高性能。由于在程序执行期间能够快速地取出信息因此性能得到提高。一些系统具有多级高速缓存。“L1”高速缓存典型地容量相对小,但存取时间非常快。“L2”高速缓存典型地比L1高速缓存容量大,但是比L1高速缓存的存取时间慢。
【0003】当遇到一个试图从目标存储单元获取数据的“载入”指令时,处理器首先确定目标数据是否已经驻存于L1高速缓存中。如果数据存在于L1高速缓存中(称为高速缓存“命中”),则从L1高速缓存取出目标数据。如果数据不在L1高速缓存中(高速缓存“未命中”),则处理器接着确定目标数据是否存在于L2高速缓存中。如果是,则从L2高速缓存取出目标数据。最后,如果目标数据既不在L1高速缓存中也不在L2高速缓存中,则从系统存储器取出目标数据,系统存储器比L1和L2高速缓存的容量大并且比L1和L2高速缓存的速度慢。
【0004】在一些系统中,L1高速缓存中对载入指令的未命中将导致目标数据从它当前的位置(L2高速缓存或系统存储器)被复制到L1高速缓存。通常,高速缓存未命中损害性能而高速缓存命中会提高性能。通常,由于处理器必须在执行后续指令之前等待数据返回,因此L1和/或L2高速缓存未命中会损害处理器性能。通过将目标数据放入到速度最快的L1高速缓存存储器中,对数据的任何后续需求都能够快速地从L1高速缓存中得到满足。虽然将目标数据放入到L1高速缓存是需要多个时钟周期的相当费时的过程,然而一旦数据存在于L1高速缓存中,这样做就可以在对数据进行后续存取时得到回报。因此性能得到提高。
【0005】高速缓存系统利用两种效应——时间局部性和空间局部性。时间局部性表示一旦一组数据被存取,则相同的数据很可能在近期内再次被需要。空间局部性表示一旦一组数据被存取,则它邻近的数据(例如,邻近的存储单元中的数据)很可能在近期被存取。当数据被复制到L1高速缓存时,目标数据以及邻近的周围数据也被复制到L1高速缓存的“线”中。如果随后需要任何邻近的数据,则这个过程可提高系统性能,这可能发生在具有高度空间局部性的数据集中。
【0006】具有相对较低的空间和/或时间局部性的数据集易于“污染”高速缓存存储器。这表示一些数据可能被存储在高速缓存中,但是很可能在近期不需要。这样的数据占用更适合高速缓存使用的数据可能另外占用的空间。由于L1高速缓存相对小的容量,这个问题对于L1高速缓存是特别棘手的。
发明内容
【0007】公开各种实施例以处理上述的一个或更多问题。在一个实施例中,处理器包括确定每条被取出的指令的指令类型的译码逻辑、一级高速缓存、耦合到一级高速缓存的二级高速缓存和操作地耦合到一级和二级高速缓存的控制逻辑。当高速缓存未命中第一类型指令(例如,载入、存储、直接存储器存取、预取)时,该控制逻辑优选地导致对一级高速缓存执行高速缓存线填充,但对于第二类型指令,则阻止对一级高速缓存执行线填充。控制逻辑可包括用于执行第一类型指令的载入/存储单元(load/store unit)和用于执行第二类型指令的协处理器。通常,是否在未命中时执行线填充取决于指令类型(例如,SIMD指令与非SIMD指令)和/或是协处理器还是载入/存储单元执行该指令。
【0008】还公开一种包括确定指令类型的方法。如果指令是第一类型指令并且引起一级高速缓存的未命中,则该方法包括对一级高速缓存执行线填充。然而,如果指令是第二类型指令并且引起一级高速缓存的未命中,则该方法包括不对一级高速缓存执行线填充。在其他实施例中,第二类型指令如载入指令可能引起从外部存储器(即不包含高速缓存子系统)加载被请求的数据并且提供给例如协处理器。
【0009】在本说明书中公开这些实施例和其他实施例。
附图说明
【0010】为了详细描述本发明的示例实施例,可以参考附图,其中:
图1示出了根据本发明优选实施例的带有高速缓存子系统的处理器架构;
图2示出了根据优选实施例的方法;和
图3示出了电池供电的和通信设备形式的系统的实施例。
符号和术语
【0011】在下面的说明书和权利要求中使用特定的术语来指特定的系统组件。本技术领域的技术人员应理解,不同公司可能以不同的名称提及一个组件。本文件不打算对这些功能相同但名称不同的组件进行区分。在下面的描述中和权利要求中,术语“包含”和“包括”以开放形式采用,并且因此应解释为“包含,但不限于”。同样,术语“耦合(couple和couples)”应表示间接或直接的电连接。因此,如果第一个设备耦合到第二个设备,则这个连接可能是通过一个直接的电连接或是通过经由其他设备和连接的一个间接电连接。术语“系统”广泛地指两个或更多组件的集合并且可用于指总体系统以及在较大系统范围内的子系统。
具体实施方式
【0012】下面的描述是针对本发明的各种实施例。虽然这些实施例中的一个或更多可能是优选的,但是所公开的实施例不应被解释为,或另外用作限制包括权利要求的公开范围。此外,本领域的技术人员应理解下面的描述具有广泛的应用,并且对任何实施例的描述仅是这个实施例的说明性叙述,并不意味着将包括权利要求的公开范围限于这个实施例。
【0013】图1示出了系统50的优选实施例,该系统包括耦合到系统存储器68的处理器51。该处理器优选地包括取逻辑52、译码逻辑54、载入/存储单元56、处理器指令执行逻辑单元58、协处理器60和高速缓存子系统62。高速缓存子系统62包括耦合到二级高速缓存(“L2”)的一级高速缓存(“L1”)。根据至少一个实施例,L1高速缓存包括32千字节的缓冲器,而L2高速缓存包括256千字节的缓冲器。
【0014】通常,取逻辑52从例如系统存储器68或其他位置取指令,并且将取出的指令提供给译码逻辑54。译码逻辑54检验每个指令中的操作码(“opcode”)以确定指令类型,以便适当地对指令进行处理。通常,这些指令可以是载入,存储,相加,相乘等。载入指令导致目标数据从存储器被取出并且被提供给处理器中的寄存器(未明确示出)。存储指令将数据写入到存储器中的指定地址。如公知理解,相加指令将两个操作数相加在一起并且相乘指令将两个操作数相乘在一起。也可以是其他类型的指令,例如直接存储器存取(DMA)和预取指令。
【0015】协处理器60包括至少一个指令队列61、数据加载队列63和执行逻辑单元65。协处理器60也可包括其他逻辑单元,比如对指令进行译码的译码逻辑。指令队列61或执行逻辑单元65可包括译码逻辑。协处理器60可包括其他组件和逻辑,以及所需要的组件和逻辑。指令队列61存储通过指令执行逻辑单元58接收到的指令(例如,载入、存储等),这些指令由执行逻辑单元65待决执行。由载入指令从高速缓存子系统和/或存储器68取出的数据被存储在由执行逻辑单元65待决消耗的加载队列63中。在一些实施例中,当指令执行逻辑单元58执行非SIMD指令时,协处理器60执行单指令多数据(“SIMD”)指令。虽然在一个实施例中,协处理器60打算执行SIMD指令,但在其他实施例中,协处理器60可执行其他类型的指令。通常,载入指令和存储指令由载入/存储单元56执行。根据载入指令的类型,来自高速缓存子系统62的载入数据被提供给指令执行逻辑单元58或协处理器60。
【0016】在一些实施例中,提供不止一个协处理器。在图1中示出了第二个协处理器69。根据需要可以提供两个以上的协处理器。同样,高速缓存子系统62可包括多于而不仅仅是一个L1高速缓存和一个L2高速缓存。例如,可包含多个L2高速缓存。作为进一步举例,可提供若干附加级的高速缓存,例如图1中所示的L3高速缓存67。还可提供除图1中描述的三个高速缓存之外的附加级高速缓存,并且可包含多种类型的各级高速缓存。L2高速缓存(若干)可包括存储器系统例如流缓冲器、一块具有相邻地址存储空间的随机存取存储器(“RAM”)和类似元件。
【0017】根据指令的“类型”,将非载入/存储指令(例如相加、相乘等)提供给指令执行逻辑单元58或协处理器60中的任何一个。通常,将第一类型指令提供给指令执行逻辑单元58以做进一步处理,并且将第二类型指令提供给协处理器60以做进一步处理。可通过检验指令的操作码(“opcode”)来确定指令类型。SIMD指令通常具有与非SIMD指令相区别的操作码。在至少一些实施例中,指令执行逻辑单元58包括对易于具有相对高的空间和/或时间局部性的数据进行操作的整数型执行单元。因此,由指令执行逻辑单元58操作的数据倾向于极其适于存储在高速缓存子系统的L1高速缓存中。协处理器60执行对具有相对低的空间和/或时间局部性的数据操作的指令或需要存取相对大的存储空间或者需要相对高带宽的指令/应用程序,并且因而不适于存储在L1高速缓存中。这样的指令可包括SIMD指令、浮点指令和其他基于多媒体的指令。
【0018】上述介绍的第一和第二类型的指令也可应用于载入和存储指令。将第一类型的载入和存储指令提供给载入/存储单元56以执行载入和存储的进一步处理,并且将第二类型的载入和存储指令提供给协处理器60用以执行。第一类型的载入和存储以指令执行逻辑单元58后续使用的数据为目标,并且第二类型的载入和存储以由协处理器60后续使用的数据为目标。因而,载入或存储的目标数据可以是来自具有高或低空间和/或时间局部性的数据集的数据。此外,载入和存储目标数据可能极其适于或不适于存储在L1高速缓存中。对于描述了哪种数据极其适于L1高速缓存使用和哪种数据不适合于L1高速缓存使用的空间和/或时间局部性的等级没有限定。
【0019】在一些实施例中,使用L1高速缓存存储数据取决于数据的性质。具有相对低的空间和/或时间局部性的数据优选地不被存储在L1高速缓存中。所有其他数据允许存储在L1高速缓存中。根据优选实施例,处理器51将与每个载入指令相关的类型用作代理,用于确定载入的目标数据是具有高的还是低的空间和/或时间局部性。第一类型(上述的)的载入指的是对易于具有相对高的时间和/或空间局部性的数据进行操作的载入(例如整数载入)。这样的目标数据由指令执行逻辑单元58使用,如上面所描述的。第二类型的载入指的是对易于具有相对低的时间和/或空间局部性的数据进行操作的载入(例如SIMD指令载入)。这样的目标数据由指令执行逻辑单元60使用,如上面所描述的。如上所述,载入的类型由指令的操作码确定。在一些实施例中,某个数据是否存储在L1高速缓存中取决于该数据是被执行逻辑单元58还是协处理器60存取和使用。因此,具有相对低的空间或时间局部性的数据集仍然可存储在L1高速缓存中。
【0020】根据本发明的优选实施例,载入/存储单元56对与第一类型相关的载入指令进行处理。载入/存储单元56对这样的载入指令进行处理,处理方式不同于由协处理器60处理的第二类型的载入指令。类似地,载入/存储单元56对存储指令进行处理,处理方式不同于由协处理器60处理的第二类型的存储指令。导致由载入/存储单元56不同对待的载入和存储指令“类型”可以是任何适合的类型,例如上述的那些。
【0021】如果载入是第一类型的(例如整数载入),则载入/存储单元56会做如下反应。检查L1高速缓存64以确定载入的目标数据是否已经驻存于L1高速缓存中。如果载入在L1高速缓存中命中,则从L1高速缓存中取出数据。然而,如果载入在L1高速缓存中未命中,则检查L2高速缓存并且将停止对L1高速缓存的存取,直到存储器引用(memory reference)被解析。如果载入指令在L2高速缓存中命中,则优选地执行“线填充”操作以将目标数据从L2高速缓存写入到L1高速缓存。线填充包括将整个高速缓存线写入到L1高速缓存,包括将目标数据写入。在本发明的至少一个实施例中,高速缓存线的容量为64字节。如果载入指令在L2高速缓存中未命中,则执行线填充以便从系统存储器68取出数据从而填充L1和/或L2高速缓存中相应的线。
【0022】如果载入是第二类型的(例如SIMD载入),则协处理器60会做如下反应。检查L1高速缓存64以确定载入的目标数据是否已经驻存在L1高速缓存中。如果载入指令在L1高速缓存中命中,则从L1高速缓存中取出数据。然而,如果载入指令在L1高速缓存中未命中,则检查L2高速缓存。如果载入指令在L2高速缓存中命中,则协处理器60阻止执行“线填充”操作或另外不执行线填充,因此阻止将目标数据(这个目标数据与具有相对低的空间和/或时间局部性的数据集相关)移入L1高速缓存中。如果载入指令在L2高速缓存中未命中,则执行线填充以便从系统存储器68中取出数据从而填充L2高速缓存中相应的线,但不对L1高速缓存执行线填充。可替代地,如果载入指令在L2高速缓存中未命中,则数据从外部系统存储器68返回,并且不执行任何高速缓存(L1或L2)的线填充。第二类型的载入由协处理器的加载队列61进行处理。因此,即使存在L1或L2高速缓存未命中,这样的未命中不会使处理器51停止对L1高速缓存存取第一类型的载入。因此,对于任何类型的数据存取(例如上述的第一类型或第二类型),L2高速缓存的延长存取时间不会影响处理器的性能。
【0023】当L1高速缓存未命中时,第一类型的载入引起L1高速缓存线填充,而第二类型的载入在L1高速缓存未命中时不引起对L1高速缓存的线填充。如果目标数据恰巧已经存在于L1高速缓存中,这有可能发生,例如作为第一类型载入的结果,则从L1高速缓存供应目标数据而不管载入的类型。换句话说,在至少一些实施例中,对所有载入指令进行处理而不执行L1高速缓存线填充,这些载入指令的数据将要由协处理器60进行处理。相反地,对与指令执行逻辑单元58相关的所有载入指令进行处理,同时执行L1高速缓存线填充。确定载入指令的类型可包括检验至少部分的载入指令的操作码以确定哪个指令执行逻辑单元适合处理载入指令的目标数据。对于由协处理器60处理的某些类型的载入指令(例如,SIMD、浮点和多媒体指令),L2高速缓存可有效地起到L1高速缓存的作用。因此,处理器51包括控制逻辑,其操作地耦合到一级和二级高速缓存并且当高速缓存未命中第一类型的载入指令(例如非SIMD指令)时,导致对一级高速缓存执行高速缓存线填充,但对于第二类型的载入指令(例如SIMD指令),则阻止对一级高速缓存执行线填充。控制逻辑包括用于处理第一类型载入指令的处理器指令执行逻辑单元58和用于处理第二类型载入指令的协处理器。在其他实施例中,由载入/存储单元56执行的功能可包含于指令执行逻辑单元58中。
【0024】在一些实施例中,当存储指令未命中时不执行任何线填充。在其他实施例中,对存储指令的处理与上述的载入指令相似。也就是说,对某些类型的存储指令(例如上述的第一类型)做如下处理。检查L1高速缓存64以确定存储指令的目标数据是否已经驻存在L1高速缓存中。如果存储指令在L1高速缓存中命中,则在L1高速缓存中更新目标数据。然而,如果存储指令在L1高速缓存中未命中,则检查L2高速缓存。如果存储指令在L2高速缓存中命中,则执行“线填充”操作以将目标高速缓存线从L2高速缓存写入L1高速缓存并且然后用存储指令的数据更新L1高速缓存。如果存储指令在L2高速缓存中未命中,则执行线填充以从系统存储器68取出数据从而填充L1和/或L2高速缓存中相应的线,并且然后用存储指令的数据更新L1高速缓存中的高速缓存线。
【0025】如果存储指令是另一种类型(例如上述的第二类型),则随后是上段描述的相似过程,除不执行L1线填充以将目标数据带入到L1高速缓存中之外。表示关于L1高速缓存的数据的处理的存储指令类型可以与上述关于载入指令描述的类型相同或不同。例如,不导致执行L1高速缓存线填充的载入指令类型可以与也导致不执行L1高速缓存线填充的存储指令类型相同(或不同),并且可基于是执行逻辑单元58还是协处理器60对存储指令进行处理。
【0026】图2示出了根据优选实施例的处理载入指令和存储指令的方法100。该方法包括在102取指令和在104对该指令进行译码。如果该指令是载入,则该方法继续进行到106。如果该指令是存储,则该方法继续进行到120。首先对载入指令的处理进行描述,接下来描述对存储指令的处理。
【0027】在106,方法100包括为载入指令所请求的数据检查L1高速缓存。如果载入指令在L1高速缓存命中,如判决108所确定的,则控制权转到110,在110处从L1高速缓存中取出目标数据。然而,如果在L1高速缓存未命中,则在112处假设目标数据已经存在于L2高速缓存中并且从L2高速缓存取出被请求的数据。如果不是,则从系统存储器68取出数据并且将副本带入到L2高速缓存以用于后续使用。在114,该方法包括如果载入指令是第一类型的,则执行L1高速缓存线填充,但如果载入指令是第二类型的则不执行。如上所述,“第一”类型的载入指令对应于由执行逻辑单元58执行的和/或对具有相对高的空间和/时间局部性的数据集进行操作的载入指令(例如整数载入),而“第二”类型的载入指令对应于由协处理器60执行的和/或对具有相对低的空间和/时间局部性的数据集进行操作的载入指令(例如SIMD、浮点取指令)。提示有时但不总是执行的线填充的载入指令类型之间的其他描述也是可能的。
【0028】如果指令是存储指令,则该方法从动作104转到120,在120处检查L1高速缓存中的命中。如果存储指令在L1高速缓存中命中(判决框122),则在124处存储指令更新L1高速缓存中的相关高速缓存线。然而,如果存储指令在L1高速缓存中未命中,则根据指令类型执行动作126或128。如果存储指令是第一类型的(126),则对L1高速缓存执行线填充以将相关的高速缓存线带入到L1高速缓存中并且用存储指令的数据更新这个高速缓存线。如果存储指令是第二类型的(128),则更新L2高速缓存中的相关高速缓存线(假设数据已存在于L2高速缓存中或者如果数据不在其中则将数据带入到L2高速缓存中)。对于第二类型的存储指令,不对L1高速缓存执行任何线填充。在其他实施例中,当L1高速缓存对存储指令未命中时,不执行任何线填充,而不管是何种存储指令类型。
【0029】在具有多于两级高速缓存的实施例中(例如,L1、L2和L3高速缓存),各级高速缓存可根据指令被使用和被存取。也就是说,上面关于L1和L2高速缓存解释的概念可延伸到高速缓存的附加级。指令的操作码可被译码并且根据操作码执行或不执行高速缓存线填充,如上面对某级高速缓存说明的。
【0030】例如,特定的载入指令类型可按如下操作。首先检查L1高速缓存。如果被请求的数据存在于L1高速缓存中,则从其中提供数据。如果L1高速缓存未命中,则检查L2高速缓存。如果被请求的数据是特定类型的,则在L2高速缓存中的命中导致数据从L2高速缓存返回并且不对L1高速缓存执行任何线填充。然而,如果L2高速缓存未命中,则检查L3高速缓存。如果被请求的数据是特定类型的(它可能与上面刚刚提到的“特定类型”相同或不同),则L3高速缓存命中导致数据从L3高速缓存返回并且不对L1或L2高速缓存执行任何线填充。可替代地,当L3高速缓存命中时,可以阻止对L1高速缓存发生线填充,并且允许对L2高速缓存线填充。上述的关于其他指令类型(即,载入、DMA、预取)的概念也可以按照这种方式扩展。
【0031】如上所述,可提供每个类型的多个高速缓存(例如,多个L2高速缓存)。因此,如上所述,以一个特定L2高速缓存为目标的某些指令可阻止或允许L1高速缓存线填充,而以不同的L2高速缓存为目标的其他指令在L1高速缓存中未命中并且L2高速缓存中命中时可能常常对L1高速缓存执行线填充。
【0032】在一些实施例中,处理器50通常是“按次序的”处理器,表示指令通常按程序顺序执行。然而一些SIMD载入指令(由协处理器60执行的)可能需要多个存储器载入指令来完成。也就是说,要从存储器取出的数据可能需要第一个载入周期和第二个载入周期。例如,取决于到高速缓存子系统62的总线相对于目标数据的容量的宽度,可能需要这样的多个载入周期。如上所述,目标数据可能存在或可能不存在于L2高速缓存64中。此外,可能的是,上述的第一个载入周期导致在L1高速缓存未命中而第二个载入周期导致在L1高速缓存命中。继续这个示例,由于第一个载入周期的L1高速缓存未命中,因此在第一个载入周期的目标数据之前返回第二个载入周期的目标数据是可能的。协处理器60优选地跟踪返回的数据,这可能会使次序颠倒,并且尽管两个载入周期次序颠倒地返回它们的目标数据,但协处理器60能够将载入数据重新排列成适当的顺序。
【0033】图3示出了包含上述特征的系统的示例实施例。图3的实施例包括电池供电的无线通信装置415。如所示的,该通信装置包括集成的键盘412和显示器414。上述的高速缓存子系统和/或包含上述高速缓存子系统的处理器可包含于电子组件410中,该组件可耦合到键盘412、显示器414和射频(“RF”)通信收发器416。RF电路416可优选地耦合到天线418以接收和/或发送无线通信。在一些实施例中,通信装置415包括移动电话。
【0034】上述讨论意在对本发明的原理和各种实施例做说明性讨论。本领域的技术人员一旦完全理解上述公开内容,许多变化和修改将变得显而易见。应注意要求保护的本发明应解释为包含所有这些变化和修改。
Claims (12)
1.一种数据处理器装置,其包括:
确定每条取出的指令的指令类型的译码逻辑;
一级高速缓存;
耦合到所述一级高速缓存的二级高速缓存;和
操作地耦合到所述一级和二级高速缓存的控制逻辑,当高速缓存未命中第一类型指令时,所述控制逻辑导致对所述一级高速缓存执行高速缓存线填充,但对于第二类型指令则阻止对所述一级高速缓存执行线填充。
2.如权利要求1所述的装置,其中所述控制逻辑包括导致所述第一类型指令执行的处理器指令执行逻辑单元和导致所述第二类型指令执行的协处理器。
3.如权利要求2所述的装置,其中所述协处理器包括耦合到执行逻辑单元的指令队列,并且所述协处理器还包括数据加载队列。
4.如权利要求1-3中任一项所述的装置,其中所述第一和第二类型指令包括第一和第二类型的载入指令;并且其中所述控制逻辑在一级高速缓存对第三类型的存储指令未命中时阻止对所述一级高速缓存执行线填充,但当一级高速缓存对第四类型的存储指令未命中时允许对所述一级高速缓存执行线填充。
5.如权利要求1-3中任一项所述的装置,还包括第一和第二指令执行逻辑单元,并且其中所述第一类型指令以由所述第一指令执行逻辑单元处理的数据为目标,而所述第二类型指令以由所述第二指令执行逻辑单元处理的数据为目标。
6.如权利要求1-3中任一项所述的装置,还包括耦合到所述二级高速缓存的三级高速缓存,并且其中所述控制逻辑在高速缓存对于所述第一或第二类型指令未命中时,导致对所述一级和二级高速缓存执行高速缓存线填充,但对于第三类型指令则阻止对所述一级和二级高速缓存执行线填充。
7.如权利要求1所述的装置,还包括:
通信收发器;
操作地耦合到所述通信收发器的高速缓存子系统,所述高速缓存子系统包括耦合到所述二级高速缓存的所述一级高速缓存;
所述译码逻辑包括操作地耦合到所述一级和二级高速缓存的载入/存储单元;和
所述控制逻辑包括操作地耦合到所述一级和二级高速缓存的协处理器;
其中所述载入/存储单元在高速缓存未命中第一类型指令时,导致对所述一级高速缓存执行高速缓存线填充,并且对于第二类型指令,所述协处理器阻止对所述一级高速缓存执行线填充。
8.如权利要求7所述的系统,其中所述装置包括移动电话。
9.一种方法,其包括:
根据操作码确定指令类型;
如果指令是第一类型的并且导致在所述一级高速缓存中的未命中,则对所述一级高速缓存执行线填充;和
如果指令是第二类型的并且导致对所述一级高速缓存的未命中,则不对所述一级高速缓存执行线填充。
10.如权利要求9所述的方法,还包括如果所述指令是第二类型的并且导致对所述一级高速缓存的命中,则从所述一级高速缓存载入数据。
11.如权利要求8或9所述的方法,其中所述指令包括载入、存储、直接存储器存取或预取。
12.如权利要求8或9所述的方法,其中确定所述指令类型包括检验所述指令中的至少部分的操作码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/136,169 | 2005-05-24 | ||
US11/136,169 US7237065B2 (en) | 2005-05-24 | 2005-05-24 | Configurable cache system depending on instruction type |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101180611A true CN101180611A (zh) | 2008-05-14 |
Family
ID=37452359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680017950.9A Pending CN101180611A (zh) | 2005-05-24 | 2006-05-24 | 依赖于指令类型的可配置高速缓存系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7237065B2 (zh) |
EP (1) | EP1891530B1 (zh) |
JP (1) | JP2008542880A (zh) |
CN (1) | CN101180611A (zh) |
DE (1) | DE602006019584D1 (zh) |
WO (1) | WO2006127857A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631566A (zh) * | 2013-11-29 | 2014-03-12 | 深圳中微电科技有限公司 | 一种用于处理器中的指令取得装置及其处理器 |
CN104615548A (zh) * | 2010-03-29 | 2015-05-13 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
CN105183433A (zh) * | 2015-08-24 | 2015-12-23 | 上海兆芯集成电路有限公司 | 指令合并方法以及具有多数据通道的装置 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131951B2 (en) * | 2008-05-30 | 2012-03-06 | Freescale Semiconductor, Inc. | Utilization of a store buffer for error recovery on a store allocation cache miss |
US8904109B2 (en) | 2011-01-28 | 2014-12-02 | Freescale Semiconductor, Inc. | Selective cache access control apparatus and method thereof |
US8756405B2 (en) * | 2011-05-09 | 2014-06-17 | Freescale Semiconductor, Inc. | Selective routing of local memory accesses and device thereof |
CN104137060B (zh) * | 2011-12-30 | 2018-03-06 | 英特尔公司 | 高速缓存协处理单元 |
US20130179642A1 (en) * | 2012-01-10 | 2013-07-11 | Qualcomm Incorporated | Non-Allocating Memory Access with Physical Address |
CN107678781B (zh) * | 2016-08-01 | 2021-02-26 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
WO2018115920A1 (en) * | 2016-12-20 | 2018-06-28 | Intel Corporation | Methods and apparatus to perform memory copy operations |
US11036644B2 (en) * | 2017-02-02 | 2021-06-15 | Arm Limited | Data processing systems |
US10705590B2 (en) * | 2017-11-28 | 2020-07-07 | Google Llc | Power-conserving cache memory usage |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3207591B2 (ja) | 1993-03-19 | 2001-09-10 | 株式会社日立製作所 | キャッシュメモリを有する計算機の改良 |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5590352A (en) | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
US5802588A (en) | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
KR100243100B1 (ko) * | 1997-08-12 | 2000-02-01 | 정선종 | 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법 |
US6643745B1 (en) * | 1998-03-31 | 2003-11-04 | Intel Corporation | Method and apparatus for prefetching data into cache |
US6658552B1 (en) | 1998-10-23 | 2003-12-02 | Micron Technology, Inc. | Processing system with separate general purpose execution unit and data string manipulation unit |
DE60143194D1 (de) * | 2000-04-12 | 2010-11-18 | Dsp Group Switzerland Ag | Datenverarbeitungsschaltung mit cachespeicher und vorrichtung mit solcher schaltung |
US6889314B2 (en) | 2001-09-26 | 2005-05-03 | Intel Corporation | Method and apparatus for fast dependency coordinate matching |
US6963962B2 (en) | 2002-04-11 | 2005-11-08 | Analog Devices, Inc. | Memory system for supporting multiple parallel accesses at very high frequencies |
US20030196072A1 (en) | 2002-04-11 | 2003-10-16 | Chinnakonda Murali S. | Digital signal processor architecture for high computation speed |
US20040158694A1 (en) | 2003-02-10 | 2004-08-12 | Tomazin Thomas J. | Method and apparatus for hazard detection and management in a pipelined digital processor |
US20040225840A1 (en) | 2003-05-09 | 2004-11-11 | O'connor Dennis M. | Apparatus and method to provide multithreaded computer processing |
US7302528B2 (en) * | 2004-11-19 | 2007-11-27 | Intel Corporation | Caching bypass |
-
2005
- 2005-05-24 US US11/136,169 patent/US7237065B2/en active Active
-
2006
- 2006-05-24 WO PCT/US2006/020163 patent/WO2006127857A1/en active Application Filing
- 2006-05-24 DE DE602006019584T patent/DE602006019584D1/de active Active
- 2006-05-24 EP EP06771121A patent/EP1891530B1/en active Active
- 2006-05-24 JP JP2008513691A patent/JP2008542880A/ja not_active Abandoned
- 2006-05-24 CN CN200680017950.9A patent/CN101180611A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615548A (zh) * | 2010-03-29 | 2015-05-13 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
CN104615548B (zh) * | 2010-03-29 | 2018-08-31 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
CN103631566A (zh) * | 2013-11-29 | 2014-03-12 | 深圳中微电科技有限公司 | 一种用于处理器中的指令取得装置及其处理器 |
CN105183433A (zh) * | 2015-08-24 | 2015-12-23 | 上海兆芯集成电路有限公司 | 指令合并方法以及具有多数据通道的装置 |
CN105183433B (zh) * | 2015-08-24 | 2018-02-06 | 上海兆芯集成电路有限公司 | 指令合并方法以及具有多数据通道的装置 |
US9904550B2 (en) | 2015-08-24 | 2018-02-27 | Via Alliance Semiconductor Co., Ltd. | Methods for combining instructions and apparatuses having multiple data pipes |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
CN116909943B (zh) * | 2023-09-08 | 2023-12-19 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP1891530A4 (en) | 2009-04-29 |
WO2006127857A1 (en) | 2006-11-30 |
EP1891530B1 (en) | 2011-01-12 |
JP2008542880A (ja) | 2008-11-27 |
EP1891530A1 (en) | 2008-02-27 |
DE602006019584D1 (de) | 2011-02-24 |
US7237065B2 (en) | 2007-06-26 |
US20060271738A1 (en) | 2006-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101180611A (zh) | 依赖于指令类型的可配置高速缓存系统 | |
CN101375228B (zh) | 具有省电指令高速缓存通路预测器和指令代替方案的微处理器 | |
CN100530080C (zh) | 用于在一系统中进行多存储缓冲器转发的系统 | |
CN100573446C (zh) | 执行存储器消歧的技术 | |
US6490658B1 (en) | Data prefetch technique using prefetch cache, micro-TLB, and history file | |
US11080052B2 (en) | Determining the effectiveness of prefetch instructions | |
JP5030796B2 (ja) | データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 | |
US8060701B2 (en) | Apparatus and methods for low-complexity instruction prefetch system | |
JP2003216494A (ja) | オンチップキャッシュのデータ圧縮により有効キャッシュサイズを増大させるキャッシュ圧縮エンジンのための装置 | |
US20090217004A1 (en) | Cache with prefetch | |
KR20040041550A (ko) | 타입 비트들을 이용한, 레벨 2 캐시에서의 ecc 및프리디코드 비트들의 저장 추적 | |
CN1675626A (zh) | 用于转移目标的指令高速缓冲存储器通路预测 | |
CN102057442A (zh) | 在数据处理系统中用ecc选择性地执行单周期写操作 | |
CN103198026A (zh) | 指令高速缓存功耗降低 | |
CN101501635B (zh) | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 | |
US7769954B2 (en) | Data processing system and method for processing data | |
WO2002045385A2 (en) | Methods and devices for caching method frame segments in a low-power stack-based processor | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
US20080282051A1 (en) | Methods and arrangements for controlling results of memory retrival requests | |
KR100282225B1 (ko) | 데이타 캐쉬 메모리의 제어장치 | |
Scheuer | Energy Efficient Computer Architecture | |
Appleton et al. | High Performance Computer Architecture Team The University of Adelaide South Australia | |
JP2000089952A (ja) | 情報処理装置 | |
KR19990068872A (ko) | 데이타 캐쉬 메모리의 제어장치 | |
JPH09282308A (ja) | ベクトル命令制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080514 |