CN104854557B - 存取高速缓存的设备和方法 - Google Patents
存取高速缓存的设备和方法 Download PDFInfo
- Publication number
- CN104854557B CN104854557B CN201380065463.XA CN201380065463A CN104854557B CN 104854557 B CN104854557 B CN 104854557B CN 201380065463 A CN201380065463 A CN 201380065463A CN 104854557 B CN104854557 B CN 104854557B
- Authority
- CN
- China
- Prior art keywords
- prediction mask
- cache
- multidigit
- line
- value
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 36
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000012790 confirmation Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000000605 extraction Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 238000004891 communication Methods 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
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
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
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/3802—Instruction prefetching
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
在特定实施例中,一种设备包含经配置以基于预测掩码值选择性地设定多位通路预测掩码的位的控制逻辑。所述控制逻辑与包含数据阵列的指令高速缓存相关联。响应于所述多位通路预测掩码启用所述数据阵列的线驱动器的子集。线驱动器的所述子集包含多个线驱动器。
Description
技术领域
本发明通常针对一种指令高速缓存存储器系统。
背景技术
技术的进步已产生较小且较强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如便携式无线电话、个人数字助理(PDA)和寻呼装置,其体积小、重量轻且易于由用户携带。更具体来说,例如蜂窝电话和因特网协议(IP)电话等便携式无线电话可通过无线网络传达语音和数据包。此外,多个此类无线电话包含并入其中的其它类型的装置。举例来说,无线电话还可包含数字静态相机、数码摄像机、数字记录器,和音频文件播放器。而且,此类无线电话可处理可执行指令,包含软件应用程序,例如可用以接入网络的网络浏览器应用程序。由此,这些无线电话可包含大量计算能力。
此类计算功能可通过包含指令高速缓存(icache)的处理器增强,所述指令高速缓存经配置以存储(在高速缓存线中)最近或频繁被执行的程序指令。可由处理器存取存储在指令高速缓存中的指令,这比从主存储器存取指令更快。指令高速缓存包含多个通路,每一通路包含对应于指令高速缓存的一或多个高速缓存线(例如,存储位置)的驱动器。为了存取存储在指令高速缓存中的特定指令,所有驱动器可经启用(例如,触发)以驱动器(通过多个数据线)多路复用器的所有通路,并且所要通路可通过多路复用器选择。然而,驱动用于每一指令高速缓存存取的所有通路消耗功率来驱动每一通路,尽管最后只选择单个通路。
为减少功率消耗,通路预测技术已经用于预测(例如,识别)待驱动的“下一通路”及因此预测待执行的下一高速缓存线(例如,指令)。通过预测“下一通路”(即,待执行的下一指令的位置),仅需要驱动单个通路。然而,先前通路预测技术易受导致性能损失的频繁误预测(例如,预测不正确通路)及处理器所经历的功率恶化的影响,以修正所述误预测并存取正确的下一通路。
举例来说,第一技术存储用于每一高速缓存线的上一个(前一)“下一通路”(即,单个“下一通路”)。基于所述单个“下一通路”,指令高速缓存启用对应于所述单个“下一通路”的单个驱动器。当未驱动正确通路(即,不提供给多路复用器)时,发生误预测且执行对指令高速缓存数据阵列的第二次存取,这驱动正确通路(基于完成的标记查找操作或从控制逻辑提供的信号)。当使用第一技术时,预测正确“下一通路”的准确性由于给定程序(例如,多个指令)的可预测性可能不稳定而存在问题。因此,用于高速缓存线的上一个“下一通路”不一定是很好的预测子,并且发生频繁误预测。
第二技术分配置信度值至通路预测以决定通路预测是否可能引起选择(即,识别)正确通路。如果单个通路预测的置信度值不够高,那么启用所有驱动器。第三技术在识别分支类型指令时将预测的“下一通路”存储在将要使用的分支目标缓冲器(例如,跟踪高速缓存)中。储存的预测“下一通路”可具有高准确度,但可能不常采用分支并且因此第三技术仅对在执行当前指令之后采用分支的情况有用。
发明内容
本文公开一种用于指令高速缓存(icache)的通路预测技术,所述指令高速缓存利用对应于所提取(及被执行的)上一个高速缓存线的多位通路预测掩码(例如,预测掩码值)。多位通路预测掩码可提供相对于所提取的上一个高速缓存线的“下一通路”预测。多位通路预测掩码可包括n位向量,其中每一位对应于指令高速缓存的通路。举例来说,当指令高速缓存包含四个通路时,多位通路预测掩码可包括4位值。对应通路中的每一个可包括基于多位通路预测掩码启用或停用的驱动器(例如,线驱动器)。各自与对应高速缓存位置相关联的多位通路预测掩码值可存储在具有与指令高速缓存的高速缓存线的一对一关联的任何结构中。举例来说,特定高速缓存线的多位通路预测掩码可存储在标记阵列、对应于高速缓存线的寄存器中或作为最近所提取的高速缓存线的部分(例如,末端)。
在特定实施例中,一种设备包含经配置以基于预测掩码值选择性地设定多位方式预测掩码的位的控制逻辑。所述控制逻辑与包含数据阵列的指令高速缓存相关联。响应于多位通路预测掩码启用数据阵列的线驱动器子集。所述线驱动器子集包含多个线驱动器。
在另一特定实施例中,一种方法包含基于预测掩码值选择性地设定多位通路预测掩码的位。多位通路预测掩码与包含具有多个线驱动器的数据阵列的指令高速缓存相关联。响应于多位通路预测掩码启用所述数据阵列的线驱动器子集。所述线驱动器子集包含多个线驱动器。
在另一特定实施例中,一种设备包含用于基于预测掩码值选择性地设定多位通路预测掩码的位的装置。多位通路预测掩码与包含数据阵列的指令高速缓存相关联。所述设备还包含用于提供多位通路预测掩码到数据阵列的多个线驱动器的装置。响应于多位通路预测掩码启用多个线驱动器的多个线驱动器。
在另一特定实施例中,一种非暂时性计算机可读媒体包含在由处理器执行时导致所述处理器根据预测掩码值选择性地设定多位通路预测掩码的位的指令。多位通路预测掩码与包含数据阵列的指令高速缓存相关联。响应于多位通路预测掩码启用数据阵列的多个线驱动器。
由所公开实施例提供的一个特定优点在于降低低功率消耗的通路预测技术,具有高预测准确性并且克服先前通路预测技术的不足。通路预测技术减少或避免影响功率功效及处理器性能的误预测。指令高速缓存的误预测发生率相比于先前通路预测技术可大大降低(例如,小于1%)。
本发明的其它方面、优点和特征将在审阅申请案之后变得显而易见,所述申请案包含以下部分:附图说明、具体实施方式和权利要求书。
附图说明
图1为包含利用预测掩码的指令高速缓存的处理器系统的第一说明性实施例的方块图;
图2为包含利用预测掩码的指令高速缓存的处理器系统的第二说明性实施例的方块图;
图3为执行通路预测的方法的第一说明性实施例的流程图;
图4为执行通路预测的方法的第二说明性实施例的流程图;
图5为执行通路预测的方法的第三说明性实施例的流程图;及
图6为包含执行通路预测的指令高速缓存存储器系统的无线通信装置的特定实施例的方块图。
具体实施方式
图1说明包含指令高速缓存102(例如,icache)的处理器系统100的第一特定说明性实施例。指令高速缓存102可经配置以存储(在高速缓存线中)最近或频繁被执行的程序指令。可比从另一位置(例如,主存储器(未展示))存取的指令更快地存取存储在指令高速缓存102中的指令。在特定实施例中,指令高速缓存102为集相关高速缓存。指令高速缓存102包含数据阵列110及控制逻辑150。
数据阵列110可包括各自包含对应线驱动器140至144的多个通路120至124。每一线驱动器140至144对应于包含数据阵列110的多个高速缓存线(例如,存储位置)的通路(例如,数据阵列110的列)。数据阵列110可包含具有第一线驱动器140的第一通路120、具有第二线驱动器142的第二通路122及具有第N线驱动器144的第N通路124。虽然图1中展示三个线驱动器140至144,但是数据阵列110中可包含小于三个或大于三个线驱动器。在特定实施例中,数据阵列110包含四个通路。线驱动器140至144中的每一个可耦合到对应数据线(未展示),每一线驱动器140至144通过所述数据线驱动与对应通路120至124相关联的内容(例如,数据阵列110的高速缓存线的数据)。举例来说,线驱动器140可驱动与第一通路120相关联的内容(例如,存储于高速缓存线处的数据,如一或多个指令)。在特定实施例中,线驱动器140至144驱动通路120至124的内容作为数据阵列110至多路复用器(未展示)的输出。多路复用器可响应于多个线驱动器140至144且可经配置以选择特定通路(例如,所要通路)。在特定实施例中,数据阵列110可包含多路复用器。
控制逻辑150可包含或存取提供“下一通路”预测至数据阵列110的预测掩码152(例如,多位通路预测掩码)。“下一通路”预测可与所提取的上一个高速缓存线(例如,存取的数据阵列110的上一个高速缓存线)相关联且预测(例如,识别)待驱动的“下一通路”且因此预测待存取的下一高速缓存线(例如,待执行的下一指令)。通过预测一或多个“下一通路”(但并非所有通路120至124),驱动指令高速缓存102的少于全部线驱动器140至144(例如,启用对应驱动器),这与启用所有驱动器140至144来驱动所有通路120至124相比产生降低的功耗。预测掩码152的值(例如,预测掩码值)可对应于指令高速缓存102的所提取的上一个高速缓存线以预测一或多个下一通路。预测掩码152可包含n位向量,其中每一位对应于指令高速缓存102的特定通路。预测掩码152可存储在寄存器或缓冲器中。
控制逻辑150可经配置以基于(例如,根据)与所提取的上一个高速缓存线相关联的预测掩码值选择性地设定预测掩码152的一或多个位。预测掩码152可启用(或停用)数据阵列110的线驱动器子集,例如驱动器140至144中的一或多个。当预测掩码152的多个位经设定时,启用(或停用)对应数目的多个驱动器140至144。多个驱动器140至144中的每一个可通过预测掩码152的特定位选择性地启用(例如,接通或启动)或选择性地停用(例如,断开或撤销启动)。在特定实施例中,线驱动器子集为大于一个线驱动器(例如,预测掩码152设定多个位且同时启用多个线驱动器)。
控制逻辑150可经配置以维持各自对应于数据阵列110的高速缓存线的多个预测掩码值。多个预测掩码值可存储在控制逻辑150可存取的一或多个存储位置处。举例来说,预测掩码值中的一或多个可存储在标记阵列、与数据阵列110的高速缓存线相关联的寄存器中、作为个别高速缓存线的部分或在具有与数据阵列110的高速缓存线的一对一关联的结构中。当内容加载到数据阵列110的高速缓存线中时,控制逻辑150可将对应于特定高速缓存线的特定预测掩码值设定(例如初始化)为初始值。另外,控制逻辑150可视需要更新其它预测掩码值以反映内容正加载到特定高速缓存线中。举例来说,控制逻辑150可更新对应于另一高速缓存线的将特定高速缓存线的先前内容相关联的通路识别为“下一通路”的预测掩码值以指示所述通路不再被识别为其它高速缓存线的“下一通路”。
控制逻辑150可接收与数据阵列110的上一个提取的(例如,最近提取的)高速缓存线相关联的预测掩码值。预测掩码值可预测(例如识别)将在提取上一个高速缓存线之后存取的一或多个通路。待存取的一或多个通路可各自对应于存储将在提取对应于上一个高速缓存线的指令之后执行的一或多个指令的高速缓存线。控制逻辑150可基于预测掩码值设定预测掩码152。举例来说,当存取数据阵列110的特定高速缓存线时,对应于特定高速缓存线的预测掩码值可经识别及设定为预测掩码152的值以识别将在存取特定高速缓存线之后的下一高速缓存存取期间驱动的一或多个“预测”通路。可将预测掩码152提供到数据阵列110以基于预测掩码选择性地启用及/或停用驱动器140至144中的一或多个。由于预测掩码152经启用(例如,接通)或停用(例如,断开)的驱动器140至144可提供(例如,驱动)对应于启用的驱动器140至144(例如对应于输出多路复用器)的高速缓存线的内容(例如,指令),如相对于图2进一步详细论述。在特定实施例中,与将所提取的上一个高速缓存线的预测掩码值提供到数据阵列110同时,执行与所提取的上一个高速缓存线相关联的指令。
控制逻辑150(或指令高速缓存102的其它组件,例如多路复用器)可确定通过启用的驱动器140至144提供的内容是否包含接下来将执行的一或多个指令(例如,在提取对应于上一个高速缓存线的指令之后)。如果根据设定为预测掩码值的预测掩码152所启用的通路并不提供接下来将执行的一或多个指令(例如,预测掩码并不预测待驱动的正确的下一通路),那么将发生误预测。在特定实施例中,控制逻辑150基于多路复用器是否选择对应于由预测掩码152所识别的预测通路的数据阵列110的输出确定是否发生误预测。
控制逻辑150还可通过基于预测掩码152(例如,特定预测掩码值)被提供到数据阵列110以启用驱动器140至144中的一或多个确定是否发生误预测来维持多个预测掩码值。当将特定预测掩码值应用到数据阵列110时,控制逻辑150可基于特定预测掩码值确定是否发生误预测。当确定已发生误预测时,先前未启用的一或多个线驱动器140至144随后可经启用以提供正确的通路输出以从误预测恢复。在特定实施例中,在所述误预测之后启用所有线驱动器140至144。
控制逻辑150可识别所存取(例如,所驱动)的正确通路且基于所述正确通路更新引起误预测的预测掩码值。举例来说,控制逻辑150可在存取与预测掩码值相关联的高速缓存线(例如,通路)之后将所述正确通路识别为连续通路。在特定实施例中,从误预测恢复可包含存取除指令高速缓存102外的另一存储位置(例如,主存储器)以获得将在提取与上一个高速缓存线相关联的指令之后执行的指令。当从另一存储位置获得(例如,提取)指令时,指令可加载(例如,存储)到数据阵列110的的与特定通路120至124相关联的高速缓存线中。控制逻辑150可将特定通路识别为后续通路且基于所述识别的特定通路更新预测掩码值。控制逻辑150可通过设定对应于所存取的连续高速缓存线的预测掩码值的位来更新引起误预测的预测掩码值。因此,如果预测掩码值未能成功地预测连续通路,那么预测掩码值经更新,以使得当接下来存取高速缓存线时,连续通路经预测作为“下一通路”(例如,后续通路)。
操作期间,控制逻辑150可接收与存储在数据阵列110的高速缓存线(例如,通路)中的指令相关联的指令地址。基于指令地址,控制逻辑150可识别与指令地址相关联的特定预测掩码值。举例来说,控制逻辑150可从各自对应于数据阵列110的高速缓存线的多个预测掩码值识别特定预测掩码值。在特定预测掩码值经识别之后,控制逻辑150可基于所识别的特定预测掩码值设定预测掩码152的一或多个位,以使得预测掩码152的值为与特定预测掩码值相同的值。在提取与指令地址相关联的高速缓存线之后,控制逻辑150可将预测掩码152(例如,多位通路预测掩码)提供到数据阵列110(例如,线驱动器140至144)。预测掩码152的对应于特定线驱动器140至144的每一个别位可在特定线驱动器140至144的输入处接收,以基于特定线驱动器140至144的输入处接收到的值(例如,数据值)启用或停用特定线驱动器。
数据阵列110可接收预测掩码152且可基于接收到的预测掩码152选择性地启用数据阵列110的线驱动器140至144子集。举例来说,特定线驱动器140至144可接收对应于特定线驱动器140至144的预测掩码152的位。数据阵列110可将对应于线驱动器140至144子集的每一启用的驱动器的通路的内容(例如,高速缓存线的至少一部分)提供作为数据阵列110的输出。提供作为数据阵列110的输出的内容可表示预测为将在提取与指令地址相关联的高速缓存线之后存取的下一通路的通路。
通过选择性地启用多个驱动器140至144的子集及驱动一个以上预测通路(但并非所有通路),可对指令高速缓存102的每次数据存取实现功率效益。另外,使用上述通路预测技术,对于每一后续通路应仅仅发生一次误预测,因为在误预测之后,多位通路预测掩码152的位经更新以将特定高速缓存线识别为后续者。
参考图2,公开一种利用多位预测掩码的处理器系统200。处理器系统200可包含程序计数器270及指令高速缓存(icache)102。处理器系统200可使用指令高速缓存102来将指令提供到一或多个执行单元(未展示)。
程序计数器270可识别待执行的指令。程序计数器270可包含索引部分272及与待执行的指令相关联的标记部分274。每当执行指令时,程序计数器270可经调节(例如,递增)以识别待执行的下一指令。待执行的下一指令的索引部分272可提供到数据阵列110且可识别数据阵列110的与待执行的下一指令相关联的索引(例如,包含多个高速缓存线的行)。可将标记部分274提供到指令高速缓存102的标记阵列280。标记阵列280可使用标记部分274来识别数据阵列的与待执行的下一指令相关联的行(例如,通路)。因此,索引部分272及标记部分274的组合可特别地识别数据阵列110的存储待执行的下一指令的特定高速缓存线。在特定实施例中,程序计数器270还可将索引部分272、标记部分274或其组合提供到控制逻辑150。
指令高速缓存102可包含数据阵列110、多路复用器260、控制逻辑150及标记阵列280。数据阵列110可包含用于数据高速缓存的多个行中特定行的多个通路(例如,四个(4)通路),例如第一通路、第二通路、第三通路及第四通路,如图2中所描绘。所述通路中的每一个可与指令高速缓存102的对应高速缓存线220a-d相关联。可在程序执行(作为一系列指令由处理器系统200执行)期间存取多个通路。多个通路中的每一个可包含驱动器240a-d(例如,线驱动器)及对应于数据阵列110的高速缓存线的数据线230a-d。举例来说,第一通路可与高速缓存线A 220a相关联且包含第一驱动器240a及第一数据线230a,第二通路可与高速缓存线B 220b相关联且包含第二驱动器240b及第二数据线230b,第三通路可与高速缓存线C 220c相关联且包含第三驱动器240c及第三数据线230c,且第四通路可与高速缓存线D220d相关联且包含第四驱动器240d及第四数据线230d。
每一驱动器240a-d可启用存储在待通过对应数据线230a-d从数据阵列110读取(例如,驱动)的对应高速缓存线220a-d中的数据(例如,一或多个指令)。数据可提供作为数据阵列110的输出。举例来说,驱动器240a-d可对应于图1的驱动器140至144。数据阵列110可包含集相关指令高速缓存数据阵列。在特定实施例中,数据阵列110为四通路集相关高速缓存。
控制逻辑150可设定预测掩码152的值。预测掩码152的值集可对应于数据阵列110的上一个经存取的特定高速缓存线220a-d。预测掩码152的值可预测(例如识别)相对于上一个所提取的特定高速缓存线220a-d的“下一通路”(例如后续通路)。举例来说,预测掩码152的值集可对应于高速缓存线A 220a。图2的预测掩码152可包含四个(4)位,其中每一位分别对应于不同通路,且因此对应于不同驱动器240a-d。举例来说,从左到右,第一位(例如,最高有效位)可对应于第一通路,第二位可对应于第二通路,诸如此类。预测掩码152可基于所设定(例如,确证为逻辑一(1)值)的一或多个位指示将要启用的一或多个驱动器240a-d。举例来说,可启用(响应于应用到数据阵列110的预测掩码152)驱动器240a-d的子集(例如,线驱动器子集)以将内容(例如数据,如存储在对应高速缓存线220a-d中的一或多个指令)提供到多路复用器260。
每一高速缓存线220a-d可与对应预测掩码值(例如,对应多位预测掩码值)相关联。特定高速缓存线(例如高速缓存线220a-d中的一个)的对应预测掩码值可基于所存取的特定高速缓存线设定为预测掩码152的一部分的值。举例来说,当存取特定高速缓存线时,对应于特定高速缓存线的预测掩码值可经识别且设定为预测掩码152的一部分的值,以识别将在特定高速缓存线之后驱动的一或多个“预测”通路。对应预测掩码值可存储在具有与指令高速缓存102的高速缓存线的一对一关联的任何结构中。举例来说,对应预测掩码值中的一或多个可存储在标记阵列(例如,标记阵列280)、与高速缓存线220a-d相关联(例如对应于所述高速缓存线)的寄存器中或作为高速缓存线的部分(例如,末端)。在特定示范性实施例中,数据阵列110的高速缓存线A 220a包含高速缓存线A内容222(例如,一或多个存储的指令)及高速缓存线A预测掩码值254(例如,对应预测掩码值)。基于所存取(例如,所提取)的高速缓存线A 220a,控制逻辑150可选择高速缓存线A预测掩码值254且设定预测掩码152的值为高速缓存线A预测掩码值254。当发生一或多个错误预测时或当将内容加载到数据阵列110中或从数据阵列110提取时,控制逻辑150可维持并更新高速缓存线A预测掩码值254。虽然高速缓存线A预测掩码值254展示为存储为高速缓存线A 220a的部分,可理解,高速缓存线A预测掩码值254可存储为标记阵列280的部分或与高速缓存线A 220a相关联的寄存器的部分。
在处理器系统200开启时,控制逻辑150可将预测掩码152的值初始化到初始值(例如,零(0)值,例如“0000”)。控制逻辑150还可将每一预测掩码值初始化到初始值。举例来说,在处理器系统200的启动之后,控制逻辑150可将高速缓存线A预测掩码值254初始化到初始值。在特定实施例中,在预测掩码152包含所有零值时,不存在预测并且在提取高速缓存线A 220a之后不驱动(例如,启用)驱动器240a-d。在替代实施例中,当预测掩码152包含所有零值时驱动所有驱动器240a-d。
控制逻辑150还可在将内容加载(例如,高速缓存线填充)至对应于特定预测掩码的高速缓存线时初始化特定预测掩码值。举例来说,控制逻辑150可在将一或多个指令加载(例如,存储)于高速缓存线A 220a处时将高速缓存线A预测掩码值254设定为“0000”的初始值。
控制逻辑150可周期性地将一或多个预测掩码值设定为初始值。举例来说,控制逻辑150还可在时间周期到期(例如,时间周期的到期)之后或在多个高速缓存存取操作之后重设(例如,初始化到零值)一或多个预测掩码值。在特定实施例中,每一预测掩码值可与对应时间周期、对应数目的高速缓存存取操作或其组合相关联。在另一特定实施例中,整个数据阵列110可与对应时间周期、对应数目的高速缓存存取操作或其组合相关联。举例来说,高速缓存存取操作的数目可与数据阵列110的高速缓存操作(例如,高速缓存存取操作,例如高速缓存加载、高速缓存提取或其组合)的数目、数据阵列110的特定行的数目或特定高速缓存线220a-d的数目相关联。在特定实施例中,高速缓存操作的时间周期及/或数目可由控制逻辑150跟踪。当内容加载到特定高速缓存线中时,可将特定高速缓存线的对应预测掩码值设定为初始值,且可更新将对应于特定高速缓存线的通路识别为后续高速缓存线的所有其它预测掩码值。举例来说,当高速缓存线A预测掩码值254为“0001”(例如,指示与高速缓存线D 220d相关联的第四通路是后续通路)且将内容(例如,新内容)加载到高速缓存线D220d中时,高速缓存线D预测掩码值可设定为初始值且高速缓存线A预测掩码值254可设定为“0000”,指示在执行高速缓存线A220a之后,对应于高速缓存线D 220d的新内容的通路尚未经预测作为“下一通路预测”。
在内容加载到特定高速缓存线中且将对应预测掩码值设定为初始值之后,控制逻辑150可确定(例如,识别)接下来存取哪个通路(例如,在特定高速缓存线作为后续通路之后)。在确定后续通路之后,控制逻辑150可设定对应预测掩码值的位以识别所述后续通路。
举例来说,当内容(例如,一或多个指令)加载到数据阵列110的高速缓存线A 220a中(且高速缓存线A预测掩码值254经初始化到“0000”)时,控制逻辑150可确定存取哪个通路。当对应于高速缓存线D 220d的通路被识别为高速缓存线A 220a的后续时,控制逻辑150可将高速缓存线A预测掩码值254设定为“0001”。因此,当存取高速缓存线A且将高速缓存线A预测掩码值254设定为预测掩码152的值时,可选择性地启用驱动器240d以在预测高速缓存线A 220a之后存取的高速缓存线D 220d时驱动第四通路(例如高速缓存线D 220d)的内容。对应于高速缓存线A预测掩码值254的第四通路的位可保持确证直至替换(例如,收回或移除)高速缓存线D 220d的内容(例如,数据)或直至将高速缓存线A预测掩码值254重设到初始值。或者,对应于第四通路的位可保持确证直至高速缓存线D 220d的内容(例如,数据)无效。
控制逻辑150还可确定(例如,检测)是否由于预测掩码152应用到数据阵列110而发生误预测。举例来说,当预测掩码152设定为对应于数据阵列110的特定高速缓存线220a-d的特定预测掩码值的值时,控制逻辑150可确定特定预测掩码值是否导致误预测。当特定预测掩码值导致误预测时,控制逻辑150可识别待驱动的正确通路(例如待启用的正确驱动器)及基于识别的正确通路更新特定预测掩码值。
举例来说,当预测掩码152经设定为“0001”的高速缓存线A预测掩码值254时,可选择性地启用与第四通路相关联的驱动器240d以驱动高速缓存线D 220d的内容到多路复用器260。当控制逻辑150基于驱动到多路复用器260的第四通路确定发生误预测时,控制逻辑150可识别待驱动的正确通路且更新高速缓存线A预测掩码值254。举例来说,控制逻辑150可提供信号到多路复用器,所述信号识别待驱动的正确通路或识别当发生误预测时未经驱动的一或多个通路。在特定实施例中,对应于高速缓存线C 220c的第三通路由控制逻辑150识别为正确通路且控制逻辑150将高速缓存线A预测掩码值254更新为“0011”,反映与高速缓存线C 220c相关联的第三通路也是高速缓存线A220a的后续者的确定。
多路复用器260可选择数据阵列110的输出中的一者来提供作为指令高速缓存102的输出。指令高速缓存102的输出可提供到与处理器系统200相关联的执行单元(未展示)。多路复用器260可经配置以接收通路选择信号作为标记阵列280的输出。基于通路选择信号,多路复用器260可选择数据阵列110的输出中的一者来提供作为多路复用器260的输出(例如,指令高速缓存102的输出)。
程序计数器可提供标记部分274(与接下来将执行的指令相关联)到标记阵列280。在特定实施例中,可与控制逻辑150应用预测掩码152(与当前正在执行的指令相关联)并行地将标记部分274提供到标记阵列280,所述预测掩码预测可与接下来将执行的指令相关联的一或多个通路。在另一特定实施例中,可在(例如,响应于)误预测之后将标记部分274提供到标记阵列280。标记阵列280可识别数据阵列110中的包含接下来将执行的指令的位置(例如,高速缓存线或通路)。标记阵列280可提供所述位置到多路复用器160作为通路选择信号。当预测掩码152导致数据阵列110的一个以上通路驱动到多路复用器260时,多路复用器可基于从标记阵列280接收的通路选择信号选择特定通路。在预测掩码152并不启用对应于由通路选择信号识别的通路的特定线驱动器的情况下,控制逻辑150可确定发生误预测。为了恢复(例如,修正)误预测,可启用所有驱动器240a-d并且多路复用器260可选择正确通路以提供到执行单元。在替代实施例中,标记阵列280可将通路选择信号提供到控制逻辑150及多路复用器260。在误预测的情况下,控制逻辑150可通过基于通路选择信号启用单个驱动器240a-d来从误预测恢复。控制逻辑150可将正确通路的指示提供到多路复用器260。
在操作期间,特定指令从数据阵列110的特定高速缓存线220a-d提取并且(通过执行单元)被执行。基于所提取及/或执行的特定指令,控制逻辑150识别对应于特定高速缓存线的预测掩码值。控制逻辑150可将预测掩码152设定为预测掩码值以选择性地启用数据阵列110的一或多个驱动器240a-d。当启用一或多个驱动器240a-d时,可将对应于一或多个启用的驱动器(例如,一或多个驱动器240a-d)的所选高速缓存线(例如,一或多个高速缓存线220a-d)的内容提供到多路复用器260。
与所应用的预测掩码152并行,程序计数器270可将标记部分274(与接下来将执行的指令相关联)提供到标记阵列280。基于标记部分274,标记阵列280可确定将在特定指令之后存取的数据阵列110的内容的位置(例如,通路及/或高速缓存线)。标记阵列280可提供所述位置到多路复用器260作为通路选择信号。
多路复用器260可接收通路选择信号及对应于基于预测掩码152启用的一或多个驱动器(例如一或多个驱动器240a-d)的所选高速缓存线(例如,一或多个高速缓存线220a-d)的内容。当将由通路选择信号识别的通路提供到多路复用器260时,多路复用器260选择识别的通路并提供所述通路作为多路复用器260的输出。替代地,当由通路选择信号识别的通路不提供到多路复用器260时,控制逻辑150确定发生误预测并且启用一或多个驱动器240a-d以提供正确通路到多路复用器260。
通过选择性地启用多个驱动器240a-d的子集及驱动一个以上预测通路(但并非所有通路),或可对指令高速缓存102的每次数据存取实现功率效益。另外,处理器系统200可维持及更新数据阵列110的每一高速缓存线220a-d的预测掩码值。
参考图3,说明执行与指令高速缓存相关联的通路预测的方法300的第一说明性实施例的流程图。举例来说,指令高速缓存可包含图1的指令高速缓存102。在特定实施例中,方法300可通过图1的控制逻辑150来执行。
可在302处将对应于高速缓存线的多位通路预测掩码设定为初始值,并且可在304处提取高速缓存线。多位通路预测掩码可与包含具有多个高速缓存线的数据阵列的指令高速缓存相关联。多位通路预测掩码的值可对应于包含在指令高速缓存的数据阵列中的高速缓存线。举例来说,多位预测掩码可为预测掩码152并且数据阵列可为图1的数据阵列110。
可在306处将多位通路预测掩码应用到多个线驱动器。可响应于多位通路预测掩码启用数据阵列的多个线驱动器的线驱动器子集。在特定实施例中,所述子集可包含多个线驱动器(例如,预测掩码设定有多个位并且同时启用多个线驱动器)。举例来说,多个线驱动器可包含图1的线驱动器140至144或图2的线驱动器240a-d。多位通路预测掩码可设定为作为高速缓存线的部分存储在数据阵列中的值(例如,对应于高速缓存线的多位预测掩码值)。
可在308处执行标记查找操作。在特定实施例中,308处的标记查找操作可与306处的将多位通路预测掩码应用到多个线驱动器并行(例如,同时或至少部分重叠)执行。举例来说,标记查找操作可使用图2的指令高速缓存102的标记阵列280执行。
可在310处选择性地设定对应于高速缓存线的多位通路预测掩码值的位。举例来说,多位通路预测掩码值的一或多个位可经设定以更新多位通路预测掩码值。可基于存取数据阵列(例如,加载数据或提取数据)的一或多个操作更新多位通路预测掩码值的一或多个位,如进一步参考图4所描述。所更新的多位通路预测掩码值(例如,所设定的位)可存储在可提供与指令高速缓存的多个高速缓存线的一对一关联的任何结构中。举例来说,更新的多位通路预测掩码值(例如,所设定的位)可存储在标记阵列、与高速缓存线相关联(例如,对应于所述高速缓存线)的寄存器中或作为高速缓存线的部分(例如,末端或开端)。
可基于高速缓存线加载操作或高速缓存线提取操作选择性地设定对应于高速缓存线的多位通路预测掩码值的一或多个位。举例来说,当产生误预测时,可基于在存取对应于多位通路预测掩码的高速缓存线之后存取的所识别后续通路(例如,正确通路)更新多位通路预测掩码值。作为另一实例,当数据加载到高速缓存线中时,可将对应于高速缓存线的多位通路预测掩码值设定为初始值。另外,当数据加载到高速缓存线中时,可更新各自对应于不同高速缓存线的一或多个其它多位通路预测掩码值。举例来说,当对应于另一高速缓存线的另一多位通路预测掩码值将与高速缓存线相关联的通路识别为后续通路并且所识别的高速缓存线的内容经修改时,可基于正加载到高速缓存线中的数据更新(例如可选择性地设定一或多个位)对应于另一高速缓存线的另一多位通路预测掩码以指示与高速缓存线相关联的通路不再被识别(例如,预测)为后续通路。
根据方法300,当选择性地启用线驱动器子集时,可驱动一或多个预测的通路(但并非所有通路)并且可在指令高速缓存的数据存取期间实现功率效益。另外,使用上述通路预测技术,通路的误预测(例如后续通路不由多位通路预测掩码152识别)应只发生一次,因为在误预测之后,设定(例如,更新)对应于高速缓存线的预测掩码值的位以识别后续通路。可存储所更新的多位通路预测掩码值以在高速缓存线的下一次(例如,后续)存取之后使用(例如,预测一或多个通路)。
参考图4,说明执行与指令高速缓存相关联的通路预测的方法400的另一说明性实施例的流程图。方法400还可监视在指令高速缓存上执行的一或多个操作并且维持对应于指令高速缓存的第一高速缓存线的预测掩码值。举例来说,指令高速缓存可包含图1的指令高速缓存102。在特定实施例中,可通过图1的控制逻辑150执行方法400。
可在402处将第一内容加载到数据阵列的第一高速缓存线中,且可在404处设定对应于第一高速缓存线的多位通路预测掩码值。在将数据加载到数据阵列的第一高速缓存线中之后,可将对应于第一高速缓存线的多位通路预测掩码值设定为初始值。举例来说,第一高速缓存线可包含图2的第一高速缓存线220a-d中的一者。在特定实施例中,第一内容可加载到高速缓存线A 220a中且可将高速缓存线A预测掩码值254设定为初始值。
在406处,可识别下一通路且可更新多位通路预测掩码值。下一通路可为第一高速缓存线的后续通路(例如,连续高速缓存线)且可更新对应于第一高速缓存线的多位通路预测掩码值以指示所识别的下一通路作为后续通路。下一通路可对应于在将第一内容加载到数据阵列的第一高速缓存线中之后存取(例如从其提取内容或加载内容至其中)的特定高速缓存线。
在加载第一内容及更新对应于第一高速缓存线的多位通路预测掩码值之后,在402至406处,可监视对高速缓存的后续存取以确定是否影响第一内容及对应于第一高速缓存线的多位通路预测掩码值。举例来说,当对第二高速缓存线进行后续存取时,可在408处进行是否提取第二高速缓存线或是否将第二内容加载到第二高速缓存线中的确定。举例来说,图1的控制逻辑150可通过每次存取数据阵列110时进行此类确定来监视数据阵列100。当确定第二内容已经加载到第二高速缓存线中时,处理前进到418,其中进行对所提取的第二高速缓存线是否为第一高速缓存线的确定。当在418处确定第二高速缓存线为第一高速缓存线时,第一高速缓存线的内容已经修改并且第一高速缓存线之后的所预测下一通路很可能不再有效。因此,处理前进到404,其中设定多位通路预测掩码值。举例来说,基于第二内容正在加载到及替换第一高速缓存线的第一内容,可将多位通路预测掩码值设定为初始值。在特定实施例中,设定多位通路预测掩码值的值包含将多位通路预测掩码值设定到初始值(例如,零值)。
替代地,当代替地在418处确定第二高速缓存线并非阵列的第一高速缓存线时,处理前进到416,其中可更新第一高速缓存线及/或第二高速缓存线的多位通路预测掩码值。将对应于第二高速缓存线的特定预测掩码值设定为初始值且可基于(例如,反映)第二内容正加载到第二高速缓存线中来更新高速缓存的预测掩码值。举例来说,当对应于第一高速缓存线的多位通路预测掩码值包含指示对应于第二高速缓存线的通路为预测通路(例如,在存取第一高速缓存线之后的后续通路)的确证位时,可更新对应于第一高速缓存线的多位通路预测掩码。当对应于第一高速缓存线的多位通路预测掩码包含确证位时,可通过解除确证所述确证位(例如,设定为逻辑零值)来更新对应于第一高速缓存线的多位通路预测掩码。因此,对应于第一高速缓存线的多位通路预测掩码值的特定位值(例如,与对应于第二高速缓存线的通路相关联)保持设定直至第二高速缓存线的内容从指令高速缓存移除(例如,从高速缓存线位置移除)。在更新多位通路预测掩码之后,方法400前进到408。在替代实施例中,当确定第二高速缓存线并非第一高速缓存线时,不更新对应于第一高速缓存线的多位通路预测掩码值的值。实情为,当在418处确定第二高速缓存线并非第一高速缓存线时,处理前进到408,且不基于数据(例如,第二内容)正加载到第二高速缓存线中来更新对应于第一高速缓存线的多位预测掩码值。
当代替地在408处确定第二高速缓存线已经提取(例如,存取)时,处理前进到410,其中进行对第二高速缓存线是否为第一高速缓存线的确定。当在410处确定第二高速缓存线并非第一高速缓存线时,处理前进到408。在特定实施例中,将对应于第二高速缓存线的特定预测掩码值提供到数据阵列。
替代地,当在410处确定第二高速缓存线为第一高速缓存线时,在412处将第一高速缓存线的预测掩码值应用(例如,提供)到数据阵列。可将多位通路预测掩码值设定为应用(例如,提供)到包含多个线驱动器的数据阵列的预测掩码的值。预测掩码应用到数据阵列(例如,多个线驱动器)选择性地驱动一或多个通路,所述通路预测为在提取(例如,存取)第一高速缓存线之后存取的“下一通路”。当待存取的正确“下一通路”不包含在预测为“下一通路”的一或多个通路中时发生误预测。举例来说,参考图2,可将高速缓存线A预测掩码值254设定为预测掩码152的值。在特定实施例中,在提取(例如,存取)第一高速缓存线之后将对应于第一高速缓存线的多位通路预测掩码值应用到数据阵列所述多个线驱动器。举例来说,将多位通路预测掩码应用到数据阵列的多个线驱动器可包含将预测掩码152应用到图1的线驱动器140至144或图2的线驱动器240a-d。在应用多位通路预测掩码之后,方法400前进到414。
在414处,进行对是否发生误预测的确定。当由于将预测掩码应用到数据阵列以选择性地启用数据阵列的一或多个驱动器而不驱动“下一通路”时可发生误预测。举例来说,可通过图1的控制逻辑150进行所述确定。当确定已发生所述误预测时,处理前进到416,其中更新多位通路预测掩码值。在误预测之后,可启用数据阵列的一或多个线驱动器。在特定实施例中,启用所有线驱动器。在另一特定实施例中,启用单个线驱动器。在另一特定实施例中,所启用的一或多个线驱动器并不包含先前启用的导致误预测的线驱动器。接着可基于完成的标记查找操作从数据阵列选择后续通路以识别将在已存取的第一高速缓存线之后驱动的正确通路(例如,正确高速缓存线)。控制逻辑可确定(例如,识别)在误预测之后驱动的后续通路并且基于所述后续通路更新第一高速缓存线的多位预测掩码值。因此,可基于识别在应用预测掩码导致误预测(例如,并未驱动正确通路)之后驱动的后续通路(例如,正确通路)来更新预测掩码值。当确定未发生误预测时,处理前进到408。
根据方法400,可保持及更新第一高速缓存线的多位通路预测掩码值。可将多位预测掩码值提供到指令高速缓存的数据阵列作为预测掩码以选择性地启用指令高速缓存的一或多个线驱动器。选择性地启用(或停用)一或多个线驱动器可起作用以驱动在存取第一高速缓存线之后驱动的一或多个预测“下一通路”。可基于对数据阵列的第二高速缓存线执行加载操作还是提取操作及/或第二高速缓存线是否为第一高速缓存线来更新多位预测掩码值。通过保持及更新多位通路预测掩码值以选择性地启用不到全部的指令高速缓存的线驱动器,可影响功率效率及处理器性能。
参考图5,说明执行与指令高速缓存相关联的通路预测的方法500的第三说明性实施例的流程图。举例来说,指令高速缓存可包含图1的指令高速缓存102。在特定实施例中,可由图1的控制逻辑150执行方法500。
在502处,可在指令高速缓存的数据阵列处接收多位通路预测掩码。举例来说,多位通路预测掩码可为多位通路预测掩码152且数据阵列可为图1的数据阵列110。多位通路预测掩码的值可存储在标记阵列、寄存器中或作为对应于多位通路预测掩码的指令高速缓存的高速缓存线的部分。在特定实施例中,通过指令高速缓存的控制逻辑从指令高速缓存的标记阵列、寄存器或高速缓存线接收多位通路预测掩码的值。
在504处,可响应于多位通路预测掩码的设定位选择性地启用数据阵列的线驱动器子集。可通过预测掩码的不同位选择性地启用(例如,接通或启动)或选择性地停用(例如,断开或撤销启动)一或多个线驱动器。在特定实施例中,预测掩码的每一确证位使待启动(例如,接通)的对应驱动器驱动高速缓存线(例如,高速缓存线的内容)到多路复用器。子集可大于单个线驱动器。举例来说,子集可包含许多个线驱动器(例如,多个线驱动器)。线驱动器的子集可包含在多个线驱动器中,例如图1的线驱动器140至144或图2的线驱动器240a-d。
在506处,可将对应于线驱动器子集的每一驱动器的高速缓存线提供到多路复用器。举例来说,可将对应于线驱动器子集的每一启用的线驱动器的高速缓存线提供到多路复用器。可基于多位通路预测掩码进行对是否发生误预测(例如是否未驱动到多路复用器的正确通路)的确定。举例来说,控制逻辑可识别(例如,检测)是否多路复用器选择提供到多路复用器的经驱动通路(例如,一或多个高速缓存线的内容,例如一或多个指令)中的一者。当进行对发生误预测的确定时,可启用所有线驱动器且可基于完成的标记查找操作选择正确通路。标记查找操作可能已经与将多位通路预测掩码提供到多个线驱动器以选择性地启用线驱动器子集同时(例如,并行)执行。另外或替代地,标记查找操作可与选择性地启用(或停用)的线驱动器中的一或多个同时执行。
图6为包含利用多位通路预测掩码的指令高速缓存存储器系统的装置600(例如,通信装置)的特定实施例的方块图。装置600可为无线电子装置且可包含耦合到存储器632的处理器610,例如数字信号处理器(DSP)。
处理器610可经配置以执行存储于所述存储器632中的软件660(例如,一或多个指令的程序)。处理器610可包含指令高速缓存680。举例来说,指令高速缓存680可包含或对应于图1的指令高速缓存102。指令高速缓存680可包含数据阵列682、标记阵列684、控制逻辑686及多位通路预测掩码688。数据阵列682、控制逻辑686及多位通路预测掩码688可分别对应于图1的数据阵列110、控制逻辑150及预测掩码152。数据阵列682可包含多个线驱动器,例如图1的线驱动器140至144或图2的线驱动器240a-d。标记阵列684可对应于图2的标记阵列280。在说明性实例中,处理器610包含或对应于图1至2的任何所述系统,或其组件,并且根据图3至5的任何实施例或其任何组合操作。举例来说,如图2中所示,控制逻辑686可设定应用到数据阵列682以使预测通路能够提供作为数据阵列682的输出的多位通路预测掩码688的值。在特定实施例中,基于多位通路预测掩码启用多个线驱动器的子集,其中所述子集包含多个线驱动器。标记阵列684可执行标记查找操作以基于所应用的多位通路预测掩码688识别将在发生误预测的情况下驱动的正确通路。在特定实施例中,处理器610可经配置以执行存储在非暂时性计算机可读媒体(例如,存储器632)处电脑可执行指令(例如,软件660),所述指令可执行以使如处理器610的计算机根据预测掩码值选择性地设定多位通路预测掩码的位。多位通路预测掩码与包含数据阵列的指令高速缓存相关联。响应于多位通路预测掩码启用所述数据阵列的线驱动器子集。在特定实施例中,线驱动器子集为单个线驱动器。在另一特定实施例中,线驱动器子集为大于一个线驱动器(例如,多个线驱动器)。计算机可执行指令(例如,软件660)可进一步使处理器610接收预测掩码值及选择性地启用多个线驱动器。
相机接口668耦合到处理器610,且还耦合到相机(例如,摄像机670)。显示控制器626耦合到处理器610及显示装置628。编解码器(CODEC)634还可耦合到处理器610。扬声器636及麦克风638可耦合到CODEC 634。无线接口640可耦合到处理器610及天线642以使得通过天线642及无线接口640接收到的无线数据可提供到处理器610。
在特定实施例中,处理器610、显示控制器626、存储器632、CODEC 634、无线接口640及相机接口668包含在封装中系统或芯片上系统装置622中。在特定实施例中,输入装置630和电源644耦合到芯片上系统装置622。此外,在特定实施例中,如图6中所示,显示装置628、输入装置630、扬声器636、麦克风638、无线天线642、摄像机670及电源644在芯片上系统装置622外部。然而,显示装置628、输入装置630、扬声器636、麦克风638、无线天线642、摄像机670及电源供应器644中的每一个可耦合到芯片上系统装置622的组件,例如接口或控制器。
可通过现场可编程门阵列(FPGA)装置、专用集成电路(ASIC)、处理单元(例如,中央处理单元(CPU))、数字信号处理器(DSP)、控制器、另一硬件装置、固件装置或其任何组合实施图3至5的方法300至500。作为实例,可通过执行存储于如关于图6所述的存储器632中的指令的处理器开始图3的方法300、图4的方法400、图5的方法500或其任何组合。
结合所描述实施例中的一或多个,公开一种设备,所述设备可包含用于选择性地设定与包含数据阵列的指令高速缓存相关联的多位通路预测掩码的位的装置。用于选择性地设定位的装置可包含图1至2的控制逻辑150、图6的处理器610、控制逻辑686、经配置以选择性地设定多位通路预测掩码的位的一或多个其它装置或电路或其任何组合。
所述设备还可包含用于提供多位通路预测掩码到数据阵列的多个线驱动器的装置。用于提供的装置可包含图1至2的控制逻辑150、图6的处理器610、控制逻辑686、经配置以提供多位通路预测掩码的一或多个其它装置或电路或其任何组合。
所述设备还可包含用于从在启用多个线驱动器之后驱动的多个通路选择特定通路的装置。用于选择的装置可包含图1至2的控制逻辑150、预测掩码152、图2的多路复用器260、标记阵列280、图6的处理器610、控制逻辑686、多位通路预测掩码688、标记阵列688、经配置以从所驱动的多个通路选择特定通路的一或多个其它装置或电路或其任何组合。
所述设备还可包含用于输出特定通路的指示的装置。用于输出特定通路的指示的装置可包含图1的控制逻辑150、图2的标记阵列280、图6的标记阵列684、控制逻辑686、经配置以输出特定通路的指示的一或多个其它装置或电路或其任何组合。
所述设备还可包含用于输出从特定通路读取的数据的装置。用于输出从特定通路读取的数据的装置可包含图1的线驱动器140至144、图2的线驱动器240a-d、多路复用器260、经配置以输出从特定通路读取的数据的一或多个其它装置或电路或其任何组合。
所公开实施例中之一或多个可实施于可包含通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂巢式电话、计算机、平板计算机、便携式计算机或桌上型计算机的系统或设备(例如,装置600)中。另外,装置600可包含机顶盒、娱乐单元、导航装置、个人数字助理(PDA)、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、视频播放器、数字视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器、存储或检索数据或计算机指令的任何其它装置或其组合。作为另一说明性非限制性实例,所述系统或设备可包含远程单元,例如移动电话、手持式个人通信系统(PCS)单元、如个人数据助理的便携式数据单元、具备全球定位系统(GPS)功能的装置、导航装置、如仪表读取设备的固定位置数据单元或存储或检索数据或计算机指令的任何其它装置或其任何组合。
虽然图1至6中的一或多者可说明根据本发明的教示内容的系统、设备及/或方法,但本发明不限于这些所说明的系统设备及/或方法。本发明之实施例可适于用于包含集成电路(包括存储器、处理器及芯片上电路)之任何装置中。
所属领域的技术人员将进一步了解,关于本文公开的实施例所描述的各种说明性逻辑块、配置、模块、电路及算法步骤可实施为通过处理器执行的电子硬件、计算机软件或其组合。上文已大体在其功能性方面描述各种说明性组件、区块、配置、模块、电路和步骤。所述功能性是实施为硬件还是处理器可执行指令取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。
结合本文中所揭示的实施例而描述的方法或演算法的步骤可直接体现于硬件、由处理器执行的软件模块或其两者的组合中。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、压缩光盘只读存储器(CD-ROM)或所属领域中已知的任何其它形式的非暂时性存储媒体中。说明性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息和将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。在替代方案中,处理器和存储媒体可作为离散组件驻留在计算装置或用户终端中。
提供对所公开实施例的先前描述以使得所属领域的技术人员能够制造或使用所公开的实施例。所属领域的技术人员将容易了解对这些实施例的各种修改,且可在不脱离本发明的范围的情况下将本文定义的原理应用到其它实施例。因此,本发明并不希望限于本文所示的实施例,而应符合与如由所附权利要求书定义的原理和新颖特征一致的可能最宽范围。
Claims (24)
1.一种存取高速缓存的设备,其包括:
控制逻辑,其经配置以基于预测掩码值选择性地设定多位通路预测掩码的位,所述控制逻辑与包含数据阵列的指令高速缓存相关联,其中所述预测掩码值的每一位的值指示是否将启用对应通路,
其中响应于所述多位通路预测掩码启用所述数据阵列的线驱动器的子集,线驱动器的所述子集包含多个线驱动器。
2.根据权利要求1所述的设备,其中所述预测掩码值与高速缓存线相关联,且其中所述预测掩码值的特定位保持设定直至特定高速缓存线的对应于所述特定位的内容从所述指令高速缓存移除。
3.根据权利要求1所述的设备,其中所述预测掩码值在通电之后经初始化至初始值。
4.根据权利要求3所述的设备,其中所述预测掩码值的每一位经设定为零值。
5.根据权利要求1所述的设备,其中所述预测掩码值周期性地经设定为特定值。
6.根据权利要求3所述的设备,其中所述预测掩码值在时间周期到期之后或在多个高速缓存存取操作之后经设定为所述初始值。
7.根据权利要求1所述的设备,其进一步包括多路复用器,所述多路复用器经配置以响应于通路选择信号选择由多个驱动器的子集提供的数据。
8.根据权利要求1所述的设备,其进一步包括包含耦合到多个数据线的多个驱动器的所述数据阵列,所述多个驱动器中的每一个选择性地由所述多位通路预测掩码的不同位启用。
9.根据权利要求1所述的设备,其中所述预测掩码值存储在所述指令高速缓存的标记阵列、寄存器或高速缓存线中。
10.根据权利要求1所述的设备,其中所述数据阵列包括集相关指令高速缓存数据阵列。
11.一种存取高速缓存的方法,所述方法包括:
基于预测掩码值选择性地设定多位通路预测掩码的位,所述多位通路预测掩码与包含具有多个线驱动器的数据阵列的指令高速缓存相关联,其中所述预测掩码值的每一位的值指示是否将启用对应通路,
其中响应于所述多位通路预测掩码启用所述多个线驱动器中的线驱动器的子集,线驱动器的所述子集包含多个线驱动器。
12.根据权利要求11所述的方法,其进一步包括在所述多位通路预测掩码的应用产生误预测之后更新所述预测掩码值,其中所述预测掩码值经更新以识别在所述误预测之后驱动的特定通路。
13.根据权利要求11所述的方法,其中所述预测掩码值作为高速缓存线的一部分存储在所述数据阵列中。
14.根据权利要求11所述的方法,其进一步包括将所述多位通路预测掩码设定为对应于所述数据阵列的高速缓存线的所述预测掩码值。
15.根据权利要求14所述的方法,其进一步包括:
在存取所述高速缓存线之后确定连续高速缓存线;及
基于所述连续高速缓存线设定所述预测掩码值的位,其中所述预测掩码值的所述位对应于所述连续高速缓存线。
16.根据权利要求14所述的方法,其进一步包括在提取所述高速缓存线之后将具有所述预测掩码值的所述多位通路预测掩码提供到所述线驱动器。
17.根据权利要求16所述的方法,进一步包括与提供所述多位通路预测掩码同时执行标记查找操作。
18.根据权利要求11所述的方法,其进一步包括确定是否替换所述数据阵列的特定高速缓存线的内容。
19.根据权利要求18所述的方法,其进一步包括当所述特定高速缓存线的所述内容包含所述高速缓存线的内容时,将所述预测掩码值设定为初始值。
20.根据权利要求18所述的方法,其进一步包括当所述特定高速缓存线对应于所述预测掩码值的确证位时,解除确证所述预测掩码值的所述确证位。
21.一种存取高速缓存的设备,其包括:
用于基于预测掩码值选择性地设定多位通路预测掩码的位的装置,所述多位通路预测掩码与包含数据阵列的指令高速缓存相关联,其中所述预测掩码值的每一位的值指示是否将启用对应通路;及
用于将所述多位通路预测掩码提供到所述数据阵列的多个线驱动器的装置;
其中响应于所述多位通路预测掩码启用所述多个线驱动器中的线驱动器的子集,线驱动器的所述子集包含多个线驱动器。
22.根据权利要求21所述的设备,其进一步包括:
用于从在启用所述多个线驱动器之后驱动的多个通路选择特定通路的装置;
用于输出所述特定通路的指示的装置;及
用于输出从所述特定通路读取的数据的装置。
23.一种非暂时性计算机可读媒体,其包括在由处理器执行时导致所述处理器进行以下操作的指令:
根据预测掩码值选择性地设定多位通路预测掩码的位,所述多位通路预测掩码与包含具有多个线驱动器的数据阵列的指令高速缓存相关联,其中所述预测掩码值的每一位的值指示是否将启用对应通路,
其中响应于所述多位通路预测掩码启用所述多个线驱动器中的线驱动器的子集,线驱动器的所述子集包含多个线驱动器。
24.根据权利要求23所述的非暂时性计算机可读媒体,其进一步包括在由所述处理器执行时导致所述处理器进行以下操作的指令:
接收所述预测掩码值;及
基于所述多位通路预测掩码的对应位选择性地启用线驱动器的所述子集中的每一线驱动器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/721,317 | 2012-12-20 | ||
US13/721,317 US9304932B2 (en) | 2012-12-20 | 2012-12-20 | Instruction cache having a multi-bit way prediction mask |
PCT/US2013/077020 WO2014100632A1 (en) | 2012-12-20 | 2013-12-20 | Instruction cache having a multi-bit way prediction mask |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104854557A CN104854557A (zh) | 2015-08-19 |
CN104854557B true CN104854557B (zh) | 2018-06-01 |
Family
ID=49956453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380065463.XA Active CN104854557B (zh) | 2012-12-20 | 2013-12-20 | 存取高速缓存的设备和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9304932B2 (zh) |
EP (1) | EP2936303B1 (zh) |
JP (1) | JP6212133B2 (zh) |
CN (1) | CN104854557B (zh) |
WO (1) | WO2014100632A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GR20150100422A (el) | 2015-09-28 | 2017-05-15 | Arm Limited | Αποθηκευση δεδομενων |
WO2019010703A1 (zh) * | 2017-07-14 | 2019-01-17 | 华为技术有限公司 | 读、部分写数据方法以及相关装置 |
US11620229B2 (en) * | 2020-02-21 | 2023-04-04 | SiFive, Inc. | Data cache with prediction hints for cache hits |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6356990B1 (en) * | 2000-02-02 | 2002-03-12 | International Business Machines Corporation | Set-associative cache memory having a built-in set prediction array |
CN1397874A (zh) * | 2001-05-04 | 2003-02-19 | 智慧第一公司 | 高速缓存的快取线选取目标地址的装置及方法 |
CN1484788A (zh) * | 2000-12-29 | 2004-03-24 | 英特尔公司 | 根据未命中距离将数据预取到高速缓存器中的系统和方法 |
CN101313286A (zh) * | 2005-12-22 | 2008-11-26 | 英特尔公司 | 多线程处理器中的性能优先化 |
US8046538B1 (en) * | 2005-08-04 | 2011-10-25 | Oracle America, Inc. | Method and mechanism for cache compaction and bandwidth reduction |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142633A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Preprocessing implied specifiers in a pipelined processor |
US5287467A (en) | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
US5604909A (en) | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
JP3589485B2 (ja) * | 1994-06-07 | 2004-11-17 | 株式会社ルネサステクノロジ | セットアソシアティブ方式のメモリ装置およびプロセッサ |
US5848433A (en) * | 1995-04-12 | 1998-12-08 | Advanced Micro Devices | Way prediction unit and a method for operating the same |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
US5826071A (en) | 1995-08-31 | 1998-10-20 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
US5794028A (en) * | 1996-10-17 | 1998-08-11 | Advanced Micro Devices, Inc. | Shared branch prediction structure |
US5995749A (en) * | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US5845102A (en) * | 1997-03-03 | 1998-12-01 | Advanced Micro Devices, Inc. | Determining microcode entry points and prefix bytes using a parallel logic technique |
JP3469042B2 (ja) * | 1997-05-14 | 2003-11-25 | 株式会社東芝 | キャッシュメモリ |
US7085920B2 (en) | 2000-02-02 | 2006-08-01 | Fujitsu Limited | Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction |
US7406569B2 (en) * | 2002-08-12 | 2008-07-29 | Nxp B.V. | Instruction cache way prediction for jump targets |
US20050050278A1 (en) | 2003-09-03 | 2005-03-03 | Advanced Micro Devices, Inc. | Low power way-predicted cache |
JP3834323B2 (ja) | 2004-04-30 | 2006-10-18 | 日本電気株式会社 | キャッシュメモリおよびキャッシュ制御方法 |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US8225046B2 (en) | 2006-09-29 | 2012-07-17 | Intel Corporation | Method and apparatus for saving power by efficiently disabling ways for a set-associative cache |
US20080147989A1 (en) * | 2006-12-14 | 2008-06-19 | Arm Limited | Lockdown control of a multi-way set associative cache memory |
US8151084B2 (en) * | 2008-01-23 | 2012-04-03 | Oracle America, Inc. | Using address and non-address information for improved index generation for cache memories |
US8522097B2 (en) * | 2010-03-16 | 2013-08-27 | Qualcomm Incorporated | Logic built-in self-test programmable pattern bit mask |
JP2011257800A (ja) * | 2010-06-04 | 2011-12-22 | Panasonic Corp | キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 |
JP5954112B2 (ja) * | 2012-10-24 | 2016-07-20 | 富士通株式会社 | メモリ装置、演算処理装置、及びキャッシュメモリ制御方法 |
-
2012
- 2012-12-20 US US13/721,317 patent/US9304932B2/en not_active Expired - Fee Related
-
2013
- 2013-12-20 WO PCT/US2013/077020 patent/WO2014100632A1/en active Application Filing
- 2013-12-20 CN CN201380065463.XA patent/CN104854557B/zh active Active
- 2013-12-20 EP EP13821338.4A patent/EP2936303B1/en active Active
- 2013-12-20 JP JP2015549790A patent/JP6212133B2/ja not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6356990B1 (en) * | 2000-02-02 | 2002-03-12 | International Business Machines Corporation | Set-associative cache memory having a built-in set prediction array |
CN1484788A (zh) * | 2000-12-29 | 2004-03-24 | 英特尔公司 | 根据未命中距离将数据预取到高速缓存器中的系统和方法 |
CN1397874A (zh) * | 2001-05-04 | 2003-02-19 | 智慧第一公司 | 高速缓存的快取线选取目标地址的装置及方法 |
US8046538B1 (en) * | 2005-08-04 | 2011-10-25 | Oracle America, Inc. | Method and mechanism for cache compaction and bandwidth reduction |
CN101313286A (zh) * | 2005-12-22 | 2008-11-26 | 英特尔公司 | 多线程处理器中的性能优先化 |
Also Published As
Publication number | Publication date |
---|---|
CN104854557A (zh) | 2015-08-19 |
US9304932B2 (en) | 2016-04-05 |
JP6212133B2 (ja) | 2017-10-11 |
EP2936303A1 (en) | 2015-10-28 |
US20140181405A1 (en) | 2014-06-26 |
JP2016505971A (ja) | 2016-02-25 |
WO2014100632A1 (en) | 2014-06-26 |
EP2936303B1 (en) | 2020-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103119537B (zh) | 用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 | |
CN104903851B (zh) | 数据高速缓存通路预测 | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
US11416733B2 (en) | Multi-task recurrent neural networks | |
US10846097B2 (en) | Mispredict recovery apparatus and method for branch and fetch pipelines | |
KR20180127379A (ko) | 프로세서-기반 시스템들 내의 로드 경로 이력에 기반한 어드레스 예측 테이블들을 사용하는 로드 어드레스 예측들의 제공 | |
TW201235939A (en) | Instruction sequence buffer to store branches having reliably predictable instruction sequences | |
CN104871144B (zh) | 使用虚拟地址到物理地址跨页缓冲器的推测性寻址 | |
CN107250978A (zh) | 基于多核块的指令集架构中的寄存器重命名 | |
WO2019212688A1 (en) | Systems and methods for assigning tasks in a neural network processor | |
US9940139B2 (en) | Split-level history buffer in a computer processing unit | |
TW201411486A (zh) | 迴圈緩衝器封裝 | |
CN107209664A (zh) | 具有根据指令位选择性地使用专用寄存器作为源操作数的指令的保留站 | |
US20170046164A1 (en) | High performance recovery from misspeculation of load latency | |
US11093249B2 (en) | Methods for partially preserving a branch predictor state | |
CN104854557B (zh) | 存取高速缓存的设备和方法 | |
CN109716292A (zh) | 在块原子数据流架构中提供存储器相依性预测 | |
US8195889B2 (en) | Hybrid region CAM for region prefetcher and methods thereof | |
CN106462392A (zh) | 用于高速缓冲存储器存取模式选择的方法和设备 | |
CN106293639B (zh) | 使用微分支目标缓冲器的高性能零气泡条件分支预测 | |
CN104854556A (zh) | 建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体 | |
CN110096129A (zh) | 计算设备 | |
CN103189838A (zh) | 用于消除具有多个存储器存取的dsp/处理器中的存储缓冲器的架构和方法 | |
CN109219798A (zh) | 分支目标预测器 | |
CN107636611A (zh) | 用于临时加载指令的系统、设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |