CN105224476A - 高速缓存路预测 - Google Patents

高速缓存路预测 Download PDF

Info

Publication number
CN105224476A
CN105224476A CN201510329085.2A CN201510329085A CN105224476A CN 105224476 A CN105224476 A CN 105224476A CN 201510329085 A CN201510329085 A CN 201510329085A CN 105224476 A CN105224476 A CN 105224476A
Authority
CN
China
Prior art keywords
road
value
cache
register
access
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
Application number
CN201510329085.2A
Other languages
English (en)
Other versions
CN105224476B (zh
Inventor
J·L·瑞德福特
M·G·佩尔金斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Analog Devices Global ULC
Analog Devices International ULC
Original Assignee
Analog Devices Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Analog Devices Technology filed Critical Analog Devices Technology
Publication of CN105224476A publication Critical patent/CN105224476A/zh
Application granted granted Critical
Publication of CN105224476B publication Critical patent/CN105224476B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及高速缓存路预测。在示例中,提供了用于预测在多路高速缓存中请求的内存地址更可能被保留在哪一路的系统和方法基于由其访问的最后的路,如果指定地址寄存器可用。如果不可用,那么系统可以确定没有最好的预测可用。在这种情况下,每路都是可读的,且多余的值被忽略,或高速缓存填充被适时地执行。在某些实施方案中,在基址加偏移量寻址模式中,只有加法运算的最低有效位的一部分被用于路预测。这使得在全宽加法完成前做出决定,使时钟周期长度不会不必要地由预测操作加长。

Description

高速缓存路预测
技术领域
本专利申请涉及信号处理领域,并且更具体地涉及配置用来高速缓存路预测的处理器。
背景技术
处理器中的″等待状态″是指该处理器闲置以等待内存操作完成而不是做有用的工作,避免过量″等待状态″的已知方法是为处理器使用专用的本地高速内存。在不同的体系结构中,这种高速内存可以采取一个或多个高速缓存或L1、L2或其它本地内存的形式,每种都有其自己特定的优点和用途。贯穿本说明书,所有的本地高速内存都被统称为″高速缓存″。
然而,只有在所需数据可以被写入或从本地内存读取时,这种本地内存才是有用的。特别地,当处理器需要从特定内存位置读值,且该内存位置还没有被加载到高速缓存中时,会发生″高速缓存未命中″。在这种情况下,内存子系统可能需要执行高速缓存填充来从内存获取所需的值,在此期间,处理器可以至少部分地处于闲置状态。
附图说明
通过阅读附图及下面的详细描述,我们可以更好的理解本申请。需要强调的是,按照在业界的标准做法,各种特征未按比例绘制,并且仅用于说明目的。事实上,各种特征的尺寸可为了讨论清楚而任意放大或缩小。
图1是根据本说明书一个或多个示例的处理器的框图。
图2是根据本说明书一个或多个示例的计算系统的框图。
图3A和3B是根据本说明书一个或多个示例的多路高速缓存的框图。
图4是根据本说明书一个或多个示例的高速缓存子系统的框图。
图5A-5F是根据本说明书一个或多个示例的路预测的流程图。
图6A和6B是根据本说明书一个或多个示例的路预测的流程图。
图7A和7B是根据本说明书一个或多个示例的路预测的流程图。
具体实施方式
综述
第一个示例展示了计算系统,该系统包括:处理器、包括Y高速缓存路的高速缓存、包括路区的寄存器和用于通知处理器来从高速缓存中访问值的电路和逻辑操作,其包括从多路读取值和仅保留来自路W的值,以及在寄存器路区中编码W。
第二个示例展示了用于访问Y路高速缓存的高速缓存控制器,包括用于从高速缓存访问值的电路和逻辑,其包括从多路读取值和仅保留来自路W的值,以及在寄存器路区编码W,以用于预测在随后的内存访问事件中首先检查哪路。
第三个示例展示了用于在具有Y路高速缓存的处理器上进行路预测的方法,包括从高速缓存中访问值,其包括从多路读取值和仅保留来自路W的值,以及在寄存器路区编码W。
本公开的示例实施方案
以下公开提供了许多不同的实施方案或示例,用于实现本公开的不同的特征。为简化本公开,组件和排列的具体示例描述如下。当然,这些仅是示例并不旨在进行限制。此外,本公开可能在各种示例中重复参考标记和/或字母。这种重复是为了简明和清楚,并不因本身决定所讨论的各种实施方案和/或结构之间的关系。
不同实施方案可能具有不同的优点,并且没有特定优点是任何实施方案必需的。
高速缓存可以被划分为不同的类,包括″直接映射″高速缓存和″N路″高速缓存等。主存中的值通常驻留在较大L字的″高速缓存行″。例如,8字高速缓存行(L=8)通常被映射,使得地址仅在最低3位(第0位至第2位)不同的内存位置位于相同高速缓存行内,并因此在高速缓存的相同位置上(每个位置存储整个高速缓存行)。通常地址的后续位用来识别高速缓存行被映射到的组。例如,在有8组的高速缓存中,第3位至第5位可以识别高速缓存行所属的组。换句话说,只有第3位至第5位是b000的位置可以存储在第0组,而第3位至第5位是b001的被映射到第1组,第3位至第5位是b010的被映射到第2组,依此类推。
在″直接映射″高速缓存中,每个组在高速缓存中包括一个确切的位置(″路″)。这种结构具有速度、功率和成本方面的某些优点,但在实现中却以灵活性为代价。为从内存地址0x40加载值,以0x0起始的高速缓存行必须被以0x40起始的高速缓存行替换,因为这两个地址被映射到高速缓存中的同一位置。
附加的灵活性可以通过将各组分成多个独立的N路来实现。在N路高速缓存中,N可以是任意的值,且甚至通常是二的幂,如2、4、8或16路高速缓存。附加的缓存路提高了灵活性,但在速度、功率或成本上有一定的牺牲。例如,在8组、4路高速缓存中,来自内存地址0x0、0x40、0x80与0xC0的值可能在高速缓存同时共存。实现4路(N=4)、8组(S=8)的高速缓存可能需要内存长达N×S×L=256个字,但其性能往往会比相同大小的直接映射高速缓存更好。
实现N路高速缓存的另一个挑战是,高速缓存控制器不一定事先知道所期望的值被存储在哪路。因此,在示例操作中,高速缓存控制器可首先从高速缓存中可能存有值的每一路中读取N个值或标记。然后高速缓存控制器检查对应的每个高速缓存行的标记,以确定它们中的任何一个是否含有所需的值。在最好的情况下,所需的位置在高速缓存中,并且处理器中保留该值,同时忽略从高速缓存中读取的其它N-1个值。如果高速缓存中没有所需的数据,那么高速缓存控制器执行高速缓存填充来加载高速缓存行到缓存,使得下次需要该高速缓存行的值时它是可用的。
有利地是,该方法是快速高效的,但它以功率和复杂性作为代价。在现代高效的处理器中,几乎在每个处理器活跃的时钟周期内,高速缓存都可被访问。因此,在每个时钟周期内,最好的情况下N-1个多余的标记和/或值可从高速缓存读出。在最坏的情况下,在高速缓存控制器确认该值不在高速缓存中并执行高速缓存填充之前,N个多余的标记和/或值被读出。
此方法的改进可通过允许DAG或高速缓存控制器首先确定哪一路最可能有所需的值来实现。如果在这路中找到该值,那么不再从高速缓存读取多余的值。如果该确定错误,未找到该值,那么在最坏的情况,处理器必须执行先前的方法,读出所有N个字,和/或执行高速缓存填充。
由于内存通常是顺序读取的,如在阵列或其它相关数据集中,先前命中的成功的路为寻找下一值的合适的路提供第一级″最佳猜测″。例如,如果寄存器R1处于″未命中″状态(即它没有先前命中的成功的路),那么它将读出所有N路以查看能否在高速缓存中找到该值,和/或执行高速缓存填充以将该值放入缓存。一旦该值已成功位于路W,N-1个多余的字将被忽略。然而,在下一个包含从R1读值的读周期中,处理器可以首先在路W上寻找所需的值,而不是加载所有N路。只要处理器设计者确信路W将包含所需值,那么节省非平凡时间段、相当大的功率和成本是可以实现的。
为进一步细化该方法,该处理器也应知道它何时有″已知的未知″。例如,当地址寄存器R1已经更改为未知的地址时,它可现在对应于不同的高速缓存行,且″猜测的″路W的值被大大降低,这比随机猜测稍好一点,或者更糟糕。因此,在这种情况下,可最好读取所有N路并丢弃N-1个多余的值。又如偏移寻址或后递增,其中基址被偏移或递增到超过本高速缓存行末端的值。在这种情况下,下一个值可能无法在高速缓存中找到,或者至少没有理由假定它可以在路W被找到。
现在转到附图,图1是根据本说明书一个或多个示例的示例的数字信号处理器(DSP)核100的原理框图。应当指出的是,DSP核100被提供为一种处理器的一个非限制性的示例,并且如贯穿本说明书使用的术语″处理器″意在广泛地涵盖提供可编程逻辑的硬件、软件或固件的任意组合,通过非限制性的示例的方式,包括微处理器、数字信号处理器、现场可编程门阵列、可编程逻辑阵列、专用集成电路或虚拟机处理器。DSP核100可以形成较大″计算设备″的一部分,通过非限制性示例的方式,在各个实施方案中其可以包括或成为计算机、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理(PDA)、便携式计算机、移动电话、IP电话、智能电话、平板电脑、手持计算器或任何其它用于处理和传送数据的电子、微电子或微机电装置一部分。为了清楚和更好地理解本公开的新颖概念,图1已经被简化。因此,可以在DSP核100中添加附加的特征,并且一些下述的特征可以在DSP核100的其它实施方案中被替换或消除。
DSP核100可以包括控制单元110、高速缓存120、内存122和计算阵列130。在示例中,控制单元110和计算阵列130构成可以执行DSP核100的计算和数据处理功能的核心处理器。一些DSP核100的实施方案包含其它组件,例如用于执行微控制器指令的微控制器、直接内存存取(DMA)单元和各种片外设备的接口。此外,虽然内存122在这里与高速缓存120作为在内存122与寄存器堆154之间被处理的单个逻辑块,但应当认识到,在不同的实施方案中内存122可以包含系统主存、各种级别的片上或本地内存、高速缓存和/或其它易失性或非易失性的内存技术。
控制单元110促进DSP核100的程序执行。控制单元110可以包括算术逻辑单元和数据地址产生(ALU-DAG)单元112、程序定序器114和本地程序内存116。控制单元110还可以包括其它组件,如指令高速缓存、计时器和指令寄存器。在示例中,ALU-DAG单元112支持通用目的整数计算并提供内存地址。例如,当数据在内存122和寄存器(如以下所述的计算阵列130的寄存器堆)之间传送时,ALU-DAG112提供内存地址。ALU-DAG单元112可以为数据内存(例如,内存122)和/或程序内存116提供地址。程序定序器114为程序内存116提供地址用以获取指令。程序内存116存储程序,DSP核100实现来处理数据(例如,存储在内存122的数据),并还可以存储处理数据。如贯穿本说明书使用的″程序″,包括任何可执行指令的有序集,其可以表示处理器,如DSP核100,以执行指定的任务。DSP核100可以通过获取指令来实现程序,例如从内存122中检索到指令并将它们加载到程序定序器114中,将指令解码,并提供解码的指令给处理元件PE来执行,或者在ALU-DAG单元112本地执行。在示例中,程序可以包含用于实现各种DSP算法的指令集,包括可以被并行执行的算法,通过在两个或更多处理元件PE上执行它们,或在单指令多数据(SIMD)模式下,其中两个或多个处理元件在不同的数据元件上执行相同的指令,如从程序定序器114接收的。SIMD是常用的,例如,用于大数据阵列的快速处理,通过将该矩阵列分成n个子阵列,然后允许n个处理元件以分别处理每一个子阵列。
内存122存储由DSP核100处理的数据(数据内存)、由DSP核100实现的处理数据的程序(程序内存),或是它们的组合。在一些示例中,内存122可具有多体交叉内存结构,使得内存122包括内存组M1-Mn,其中n是内存122的内存组的总数量。在示例中,内存122是随机存取内存,例如静态随机存取存储器(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、闪存或其它适当的内存技术。在示例中,一个或多个内存组M是单独的RAM。可替代地,内存122可以代表多层内存结构,例如包括快速L1内存、中间L2内存和慢速主存,其中每个内存的大小和成本可能与内存的存取速度成反比。在又一示例中,内存122可包括高速缓存或任何其它合适类型的内存。在一些情况下,直接内存存取(DMA)控制器可被提供以使能从DSP核100到内存122的DMA操作。
通过示例的方式,三条总线170被示出。如贯穿本说明书使用的,″总线″包括任何互连线、网络、连接、捆绑、单总线、多总线、交叉开关网络、单级网络、多级网络或其它操作以在计算设备各部分间或各计算设备间传输数据的传导介质。在必要或合适的情况下,总线170还可以包括合适的控制器,例如内存管理单元(MMU)等。在这个示例中,主系统总线170-1被提供用于通信耦合DSP核100到其它系统组件,如在图2中通过更详细的示例方式所讨论的。计算总线170-2通信耦合计算阵列130到控制单元110。内存总线170-3通信耦合处理元件PE到内存122。应当指出的是,这些使用仅通过非限制性的示例展现,并且一些实施方案可以省略一个或多个前述的总线,而其它的可以采用附加的或不同的总线。
控制单元110可以经由计算总线170-2发出指令和数据地址以给计算阵列130。计算总线170-2为指令和数据传送地址到计算阵列130不同的处理元件PE。内存总线170-3可以传送来自内存(例如内存122、程序内存116、其它内存或者它们的组合)的数据和/或指令,使得DSP核100的任何寄存器的内容可被传送到其它任何寄存器或任何内存位置,并且内存122可提供数据操作数(值)给计算阵列130。
在所示的示例中,计算阵列130包括四个处理元件PE1-PE4。在其它实施方案中,计算阵列130可以包括零个或多个分离的处理元件。处理元件PE执行数值处理,且在示例中可以包括用于执行特定类型计算如DSP算法的专用硬件。处理元件PE可独立操作、并行操作或作为SIMD引擎。在本示例中,每个处理元件PE可以作为向量处理器。可替代地,处理元件PE可以是标量处理器,或是标量处理器和向量处理器的组合。
每个处理元件PE包括各自的计算单元(CU)152。虽然本公开考虑的实施方案,其中计算单元152是不相同的,但是在描绘的实施方案中,计算单元152是可以相同的。本公开还考虑了结构,其中一个或多个处理元件PE不包括计算单元152。在本示例中,每一个计算单元152包括算术逻辑单元(ALU)、乘法器-累加器(MAC),移位器,其它计算单元或它们的组合。ALU可以执行算术和逻辑运算,如加、减、否定、递增、递减、绝对值、逻辑与运算、逻辑或运算、逻辑异或运算、逻辑非运算、数据元素除法,其它算术运算、其它逻辑运算或它们的组合。示例MAC可以执行乘法运算以及乘法和累加运算,如单周期乘法、乘/加、乘/减、其它操作或它们的组合。移位器可以执行逻辑和算术移位、位操作、规范化、反规范化、派生-指数运算、其它运算或它们的组合。各个算术运算、逻辑运算以及其它运算可以同时在定点和浮点格式上执行。在各种实施方案中,ALU、MAC、与/或移位器包括与其相关联的寄存器。
处理元件PE还可以各自包括相应的寄存器堆154。虽然本公开考虑的实施方案,其中寄存器堆154是不相同的,但是在描绘的实施方案中寄存器堆154是可以相同的。本公开还考虑了结构,其中一个或多个处理元件PE不包括寄存器堆154。寄存器堆154包括寄存器,其用于在处理元件PE和内存总线170-3之间传送数据和存储结果。在本示例中,寄存器堆154可包括相应的通用寄存器组155,其包括具有取决于DSP核100的设计要求宽度的通用寄存器,例如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其它宽度通用寄存器或它们的组合。为了下面的讨论,通用寄存器155包括32位通用寄存器。在本示例中,每一个寄存器堆154包括通用寄存器155和专用寄存器158,其可以包括用于执行如本文所述的路预测所需的任何寄存器。根据上下文,在某些架构中,任何通用寄存器155或专用寄存器158可被用作图4任何指定目的寄存器,如地址寄存器410、偏移寄存器430和数据寄存器480。在其它示例中,专用寄存器158内的某些寄存器可以被特别指定为一个或多个地址寄存器410、偏移寄存器430,和/或数据寄存器480。
DSP核100可以执行不同的并行操作。例如,在单个周期内,处理元件PE可访问指令(经由互连网络142)和访问来自内存的N个数据操作数(经由内存总线170-3)用于同步处理。在SIMD模式下,DSP核100可以并行处理多个数据流。例如,当在SIMD模式时,DSP核100在单个周期内可经由计算总线170-2调度单条指令到每个或多个处理元件PE;经由内存总线170-3加载N个来自内存(内存122、程序内存116、其它内存或它们的组合)的数据集,用于每个处理元件PE的一个数据集(在示例中,每个数据集可以包括两个数据操作数);在处理元件PE上同步执行单一指令;并存储来自内存122中的同步执行的数据结果。
图2是根据本说明书的一个或多个示例的计算设备200的框图。如参考图1所描述的,计算设备200包括通信耦合到系统总线170-1和内存总线170-3的DSP核100。内存总线170-3通信耦合DSP核100到内存122,其已经加载,其中操作系统122为应用软件提供低层次的服务。然而本说明书考虑的实施方案,其中传统操作系统122可以是不必要的,如在嵌入式系统或控制器中,其中应用程序可以运行在″裸机″。
存储器240可以经由系统总线170-1通信耦合到DSP核100。存储器240可以是一种内存122。在一些实施方案中,内存122和存储器240可以是单独的设备,内存122是相对低延迟易失性内存设备且存储器240是相对高延迟非易失性内存设备。存储器240还可以是另一种设备,例如硬盘驱动器、固态驱动器、外部存储器、独立磁盘冗余阵列(RAID)、网络附加存储器、光存储器、磁带驱动器、备份系统、云存储器或任何前述的组合。存储器240可以是,或可包括在其中,存储在其它结构上的一个或多个数据库或数据。许多其它的结构也是可能的,并旨在被涵盖在本说明书的广泛的适用范围内。在示例中,程序执行包括从存储器240加载指令到内存122。然后指令被取到DSP核100用于执行。数据也可以在程序执行期间从存储器240被加载到内存122,用于供应到DSP核100。
网络接口270可通信耦合到DSP核100,且可操作以通信耦合DSP核100到网络。在本说明书中,″网络″包括任何通信平台,其可操作以在计算设备内或计算设备之间交换数据或信息,通过非限制性示例的方式,包括自组织本地网络、提供具有电子交互能力的计算设备的互联网架构、普通老式电话系统(POTS),其计算设备可用于执行交易,其中它们可通过人工操作或手动将数据输入电话或其它合适的电子设备来被协助、任何在系统中任意两个节点之间提供通信接口或交换的分组数据网络(PDN),或者任何局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网络(WLAN)、虚拟专用网(VPN)、内联网,或任何其它适当的结构或系统,促进在网络或电话环境中通信。
外围接口250经由系统总线170-1通信耦合到DSP核100,并可操作以通信耦合DSP核100到一个或多个外围设备。如在说明书中使用的,″外围设备″包括任何连接到计算设备200但不必是计算设备200核心架构一部分的辅助设备。外围设备可被操作以提供扩展功能给计算设备200,并可能会或可能不会完全依赖于计算设备200。在某些情况下,外围设备本身可以是计算设备。外围设备可包括输入和输出设备,如显示器、终端、打印机、键盘、鼠标、调制解调器、网络控制器、传感器、致动器、执行器,控制器、数据采集总线、摄像头、麦克风、扬声器或通过非限制性示例的外部存储器。
应当指出的是,在图2中所描述的组件仅通过示例的方式被提供,且不旨在限制计算设备200为示出的具体的结构。图2的任何组件可以在适当的情况下省略,而在其它适当的情况下,任何组件可以根据需要重复,或与其它组件组合。例如,在一些情况下,网络接口270可被用来提供连接到某些外围设备,使外设接口250的功能包含在其中。因此,应当理解的是,本文中组件之间的划分不旨在表示必要或严格的物理划分。相反,组件根据逻辑功能划分,并在适当情况下,单一的设备可以执行多个功能。在一个示例中,计算设备200可以被提供,其全部,作为系统级芯片(SoC),其中本文展示的一些或全部功能可以由单个单片半导体设备提供。
图3A和3B是根据本说明书的一个或多个示例的高速缓存的框图。在图3A中展示了直接映射高速缓存120-1。高速缓存控制器310被提供以寻址直接映射高速缓存120-1。高速缓存控制器310接收地址用于内存位置访问,并使用该地址来访问直接映射高速缓存120-1。
在这个示例中,直接映射高速缓存120-1包括多个位、字节、字符、字或适合应用程序的其它内存部分。贯穿本说明书,字通过非限制性示例的方式被用来说明本文展示的方法和结构。然而,应当理解的是,从高速缓存120或内存122读出的任何数据″字″的引用旨在广泛地涵盖任何合适的内存元件或部分。
直接映射高速缓存(其可以被认为包括多个组,其中每个组仅包括单条路)120-1在这个示例中包括八个独立的组。每个高速缓存组合被配置以使得主存122的每个值可被映射到唯一的一组。例如,这可以基于,从内存122的地址的最低位的部分。应当指出的是,这仅通过示例的方式被提供,且有许多方法,其中内存可在高速缓存子系统300中被寻址和管理。在该示例中,内存地址基于从0到7的值被映射,其可以在RAM中的地址的第3至第5位被编码。因此,索引0x0和索引0x40只能存储在组0中,索引0x8和索引0x48只能存储在组1中,索引0x10和索引0x50只能存储在组2中,依此类推。
尽管该结构在速度和复杂性上具有优点,但是它在存储灵活性上面临一些限制。例如,如果程序以这种方式被写入使它需要重复轮流访问索引0x0和索引0X40,那么在每个负载指令上,缓存将在每下一次的读取中被填充,高速缓存未命中的现象会发生,因为索引0x40不会也不能在同一时间作为索引0x0被存储在直接映射缓存120-1中。因此,组0将必须被刷新,并在每次迭代上从高速缓存被填充。在下一次的读取中高速缓存-未命中-和-刷新周期将重复。这将继续通过需要访问索引0x0和索引0x40的内存的每一次迭代。这可能会导致显著的处理延迟,因为每个内存访问将必须从内存122而不是直接从直接映射缓存120-1检索该值。这可以被称为″抖动″。
抖动能够通过编写程序避免,使得它不会以这种方式同时或连续访问索引0x0和0x40。然而,在设计时或编译时,程序设计师可能不知道程序将需要访问那个特定的索引位置。在其它情况下,设计者可以编写跨越多个处理器架构的便携的程序,并且因此可能不会事先知道可以被提供的高速缓存的大小和类型。即使有良好的优化编译器,它也并不总是可能预先知道是否会发生抖动或其它次优行为。因此,有利的是设计处理器和系统,其中,抖动可以通过在高速缓存120内提供附加的灵活性被最小化。
图3B展示了示例,其中通过提供附加的路来为高速缓存120提供附加的灵活性。在本示例中,高速缓存控制器310产生地址并从4-路高速缓存120-2检索该值。4-路高速缓存120-2比直接映射高速缓存120-1更复杂一些,其中它被配置以使得每个位置和内存可在4-路高速缓存120-2中的任何四个位置被提供。例如,内存索引0x0和0x40可以在组0的任何四条路中被找到,内存索引0x8和0x48可以在组1的任何四条路中被找到,内存索引0x10和0x50可以在组2的任何四条路中被找到,等等。应当指出的是,4-路高速缓存120-2包括组3-6,其不被示出来简化附图。为了论述,可以假设4-路高速缓存120-2是具有8个字的高速缓存行大小的4-路、8-组高速缓存。
因此,在该示例中,如果程序需要交替访问索引0x0和索引0x40,索引0x0可以被加载到组0、路0,同时索引0x40可被加载到组0、路1。因此,在第一周期,高速缓存控制器310可以寻址4-路缓存120-2以找到存储在组0、路0的索引0x0。这表示高速缓存命中。在下一周期,高速缓存控制器310可以寻址4-路高速缓存120-2且找到存储在组0、路1的索引0x40,也是高速缓存命中。在接下来的数个周期内每个周期轮流访问位置0x0和0x40导致高速缓存命中。因此,没有高速缓存未命中和昂贵的高速缓存填充是所需的。
然而,4-路缓存的操作是有代价的。因为索引0x0可以在组0的任何一路中被找到,所以高速缓存控制器310事先不知道索引0x0是否位于路0、路1、路2或路3。
为提高速度,高速缓存控制器310可以访问所有的4条路来确定所期望的值是否在其中之一。如果在任何一路都未找到所期望的值,那么高速缓存控制器310从内存122执行高速缓存填充。在最好的情况下,如果该值在这些位置中的一个中被找到,那么四个值将被从4-路高速缓存120-2中读取,并且它们中将只有一个是所期望的值,其它三个将会被忽略。因为几乎每个周期正常操作的处理器都将访问4-路高速缓存120-2,这意味着,最好,三个额外的读操作将在每个周期与三个被忽略的额外的读取结果被执行。虽然这是快速的解决方案,但是因为高速缓存读取是非常快的,在一些实施方案中,它确实导致高速缓存控制器310汲取附加的不必要的功率。
大量的功率节省可以被实现,如果缓存控制器310可以提前预测在4-路高速缓存120-2中哪条路W最有可能保持所期望的值。在这种情况下,高速缓存控制器310可以仅从4-路高速缓存120-2读取最可能的值。如果W证明是正确的路,那么读取就已经成功而不需要检索额外的,不必要的信息。如果W是不正确的路,那么其它的路都需要进行检查。在示例中,高速缓存控制器310可先启动高速缓存填充。当高速缓存填充未决时,高速缓存控制器310可检查4-路高速缓存120-2所有的4条路,来查看是否所期望的值在高速缓存中的任何地方。虽然这相对来说不太可能,但是检查可能是必要的以确保在同一内存位置的两个副本不会在4-路高速缓存120-2中结束。如果该值被发现在4-路高速缓存120-2中,那么未决的高速缓存填充可能被中止。
图4是根据本说明书的一个或多个示例,结合DAG和高速缓存控制器310的扩大的框图。DAG访问一个或多个地址寄存器410,其每一个包括路位412。偏移寄存器430与加法器420、处理选择逻辑440、比较器442、标签RAM组460、数据RAM组480、选择逻辑450和数据寄存器490一起被提供。应当指出的是,在图4中高速缓存控制器310中所展示的某些元件在其它图中以其它视图展示。因此,应当认识到,图4没有必要展示展示元件的所需要的物理结构,而是展示功能排列。还应当指出的是,在某些情况下,地址寄存器410、偏移寄存器430和数据寄存器490可以,是任何合适的寄存器,如通用寄存器155。这些作为目的-指定寄存器的指定仅通过说明的方式提供。高速缓存控制器310的主要目的是要从内存中加载值到数据寄存器490,内存的地址由地址寄存器410提供,或者由地址寄存器410加偏移寄存器430提供。地址寄存器410可进行后递增,这意味着其在地址寄存器410之后被用来寻址内存位置,通过第二个值递增。这种寻址方式可能是有用的,例如,在环或其它结构中迭代,其中对于按顺序寻址一系列内存元件是有用的。
在示例中,地址寄存器410可以包括基地址或绝对地址。地址寄存器410可以提供其基地址给加法器420,且偏移寄存器430可为偏移量寻址模式提供偏移值。在该示例中,偏移式寻址可以被采用,例如,在线性阵列中,其中根据基地址加偏移量寻址阵列是最符合逻辑的。在后递增寻址中,加法器420可以增加地址,并提供递增的值返回到地址寄存器410。在其它寻址模式中,地址寄存器410可直接提供地址。
通过确定新的地址是否在本高速缓存行内,加法运算或后递增的结果可用于预测下一个值是否有可能在高速缓存中被找到。例如,如果寄存器R2中包含值0x6,并且如果地址0x0-0x7目前在高速缓存行中,那么伪指令"LDR1,(R2+5),″(″将地址R2+5的值加载到寄存器R1中″)不可能进入到高速缓存中,因为R2+0x5=0xB,其本高速缓存线之外。因此,尝试使用最后一条路W作为″最好的猜测″用于下一个地址,不可能成功。
然而,在某些实施方案中,如果全宽加法必须在判定新地址是否很可能在高速缓存行之前完成,那么加法器420会创建不可接受的长延迟时钟周期长度。在这种情况下,最低有效位的仅仅一部分可被用于高速缓存预测。例如,对于32位地址宽度,最有效位不可能被预测,因为它们只在阵列是数百万字长的情况下才会改变。虽然不是不可能,但这种情况很罕见,所以等待加法运算的高16位(例如)可能会产生一点有用的信息,以换取很长的延时。类似地,最低有效几位-例如对应于特定组的8-组高速缓存的底部三位也是没有用的,因为它们不被用来在高速缓存行之间区分。然而,接下来的几位可以很高的预测本加法运算是否将超过高速缓存行。例如,假设地址的0-2位包含着值驻留在高速缓存行的唯一信息,那么接下来的8位(3-10)可以精确地预测高速缓存行是否已超出任何一对地址不同的高达2047字(例如,对应于2047字的阵列跳跃)。换句话说,如果这些位中的一个改变,那么目前的高速缓存行会超出,且高速缓存填充可是必要的,然而如果该位保持不变,那么新的地址可能会在该高速缓存行中。
这一预测在某些情况下会失败,其中新地址比旧地址多出2047字。在这种情况下,高速缓存控制器310会做出错误的预测。然而,错误的预测的代价仅仅是可能从路W读取的失败的尝试。在示例中,用于预测的位的数量被选择为最大的位的数量值,其可以不用延伸处理器现有时钟周期长度被提供。
选择逻辑440接收选择信号,例如,来自执行读或写操作,表示地址寄存器410的地址是否可以直接使用,或是否适用于偏移寄存器430的指令。选择逻辑440提供地址以获得RAM组480,并且还可以提供地址返回到RAM组460。当选择了地址,DRAM组480提供数据值选择逻辑450,而比较器442被用于选择来自数据RAM组480的哪个值被提供给请求该值的寄存器155。
地址寄存器410中的路位412可提组使能信号470到标签组460和数据RAM组480。在一个示例中,Y-路高速缓存可以包括Y路位,使每一路位能够提供使能信号到其相应的路。在其它示例中,2n路可被编码在n路位中,且附加的逻辑可以提供选择信号。路位412用于从标签组460和数据组480中选择特定的组。因此,在特定的路提供在先前使用相同地址寄存器的指令上成功的读取数据情况下,路位412将存储这条路,并用它来使能组460和480。附加位可以被提供为″未命中″和″等待路″标志。
当进行到下一地址位置时,可以使用几种寻址模式。例如,地址寄存器410可以被设置为不相关的地址,或者来自加法器420的后递增可被提供给地址寄存器410,使得下一个地址指向阵列或结构字段中的随后元素。
因此,在某些实施方案中,数据RAM组480的不同组表示多个路。基于比较器442的选择,仅仅这些路的一路返回值。比较器442在某些情况下由路位412控制,它代表地址寄存器410的高速缓存器120的最后一次成功读操作。然而,正如说明书中看到的,附加的逻辑可被提供用于在最后成功的高速缓存路未预期是正确的高速缓存路的情况。
图5A-5F是根据本说明书的一个或多个示例,由DSP100执行的方法的流程图。图5A-5E一起展示了设置路位412状态标志的特定方法。
图5A展示了方法501。在块510中,DSP100执行伪指令"LDR1,<addr>.″。在这个示例中,寄存器R1充当寄存器490,且不包含其它寄存器。这种表示法表示值从内存122被加载到寄存器R1内。因为R1的值从内存被加载,我们不知道这个值在内存中可能指向哪儿,因此当我们访问由R1值指向的数据时,没有之前的路用于未来预测该数据最有可能驻留的路。
每个寄存器可以包括路位412。在这种情况下,寄存器R1的NH(″未命中″)位已经被设置,这表示没有足够的信息来提供有用的最佳的R1地址的任何未来间接引用的访问路的猜测。在块512中,R1NH被设置为1。
在块519中,方法501结束。
图5B展示了示例方法502。在块520中,DSP100执行伪指令″MOVR1,R2",意味着复制寄存器R2的内容到寄存器R1。在这种情况下,没有使用偏移寄存器430。例如,当寄存器R2先前被用作地址寄存器410,且寄存器R1现在被用作地址寄存器410时,这是可执行的。在这种情况下,用于R2的路位是对R1的预测。此外,即使R2已被用作数据寄存器490,通过拷贝路位也没坏处,所以可能没必要去确定复制路位之前R2所充当的角色。
在块522中,R2WAY=R1WAY,意味着来自寄存器R2的路位被复制到寄存器R1的路位中。
在块529中,方法502结束。
图5C展示了示例方法503。在示例方法503中,执行加法运算。在这种情况下,寄存器R2被用作地址寄存器410,同时变量i在指令操作码中是常量或者由偏移寄存器430提供。R1充当第二地址寄存器410。因此,R1被分配为值R2+i。
在块530中,DSP100执行伪指令MOVR1,(R2+i).。
在块532中,执行检查值R2+i是否在当前的高速缓存行内。如果是,则在块534中,来自R2的路位被复制到来自R1的路位,因为R2的路位能很好地预测由R1指向的数据将驻留在哪一路。
在块536中,如果R2+i不在现在的高速缓存行内,那么R1NH被设置为真。
在块529中,方法503结束。
图5D是方法504的框图。方法504表示后递增加载运算,其中R2充当数据寄存器490,且R1充当地址寄存器410。贯穿本说明书,符号″″表示″由下面指向的内存位置″。在值已被从R1加载后,R1递增(按某个值)。这在图4中被说明,如加法器420反馈到地址寄存器410。
在块540中,伪码指令"LDR2,(R1+=i)″被执行。此外,变量i在指令操作码中是常量或是由偏移寄存器430提供。这意味着寄存器R1包含被加载到寄存器R2中的值的地址。在寄存器R1被使用后,它随着i增加,使它指向内存结构的另一个内存位置。
在块542中,执行检查R1+i的值是否在现在的高速缓存行内。在块544中,如果是,那么R1WAY保持其现在形式,并且图5E中的方法505也可以被执行。
在块546中,如果R1+i不在现在的缓存行内,那么R1NH被设置为1。这是因为高速缓存控制器310不知在哪一路,如果有,那么由R1指向的下一个值可能驻留。
在块549中,该方法结束。
图5E是根据本说明书的一个或多个示例的方法505的流程图。在这种情况下,R1被用作地址寄存器410,且R2被用作数据寄存器490。
在块550中,DSP100执行伪指令"LDR2,R1″,意味着由R1指向的值被装入R2。在块552中,检查R1NH是否被设置。如果未被设置,那么在块554中,高速缓存控制器310从R1WAY读取值,意味着寄存器R1的路位被用于选择从高速缓存120所尝试的路。
如果R1NH被设置,那么在块560中,检验R1的″等待路径″(WFW)标志是否被设置。该标志被提供以确保当用于访问的高速缓存路被确定,只有寄存器没有在此期间变为不相关值时,寄存器路位才被更新。
在块562中,寄存器R1内的路位将接收变量W,意味着命中最后成功路值。在块556中,如果R1WFW未被设置,那么在块556中,R1WFW被设置为1。由于最后值被从主存122加载,R2NH也可被设置为1。
在块569中,该方法结束。
图5F是根据本说明书的一个或多个示例的方法507的流程图。方法507说明了当访问(R1+i)时WFW位的操作。应当指出的是,在某些示例中,当i==0,图5E的方法505可以被认为是方法507的特殊情况。
在块570中,DSP100执行伪指令"LDR2,(R1+i),″,意味着由R1+i指向的值应该被加载到寄存器R2中。
在块572中,检查R1+i是否在现在的高速缓存行中。如果没有,那么控制转向块579,且方法507结束。
返回到块572,如果在现在的高速缓存行中,那么在块574中,检查是否R1NH==1。如果不是,那么在块575中,从R1WAY读取值,且在块579中方法结束。
另外,在块576中,检查是否R1WFW==1。如果是,那么在块577中,R1WAY被设置为W,且在块579中,方法507结束。
如果不是,那么在块578中,R1WFW被设置为1,且在块579中,方法结束。
图6A和6B是根据本说明书的一个或多个示例的设置W变量的示例方法的流程图。
图6A展示了方法600。
在块610中,DSP100执行伪码操作"LDR2,(R1+=i)″。在这种情况下,R1是地址寄存器410,指向被加载到R2的值,R2是数据寄存器490。被用于寻址值后,R1通过变量i后递增。
在块612中,变量W被设置为R1或R1WAY的路位412的实质性(即非标志)部分。
在块619中,该方法结束。
图6B展示了方法601。在这种情况下,使用基址偏移寻址。意味着寄存器R2将载入由R1+i计算的地址指向的值,其中i是基址的偏移。
在块630中,DSP100执行伪码操作"LDR2,(R1+i)″。
在块632中,检查R1+i是否在现在的高速缓存行中。在块636中,如果不在现在的高速缓存行中,那么W被设置为未命中。在块634中,如果R1+i在现在的高速缓存行中,那么W被设置为寄存器R1的路位。
在块639中,该方法结束。
图7A和7B展示了根据本说明书的一个或多个示例访问来自预测路的值的示例方法(例如,当W并非未命中)。
图7A展示了方法700。在块710中,如在先前图中所展示的,当执行内存访问操作时,高速缓存控制器310首先查看所要求的值是否在高速缓存120的路W中。
在块720中,检查内存访问是否成功,意味着在路W中高速缓存控制器找到了所要求的值。如果来自路的内存访问成功,那么方法在块790中结束。这样的路径表示最佳的操作条件,其中W值被设置并且有效,且其中它正确预测了从哪条路访问值。这意味着不需额外步骤,且不必从高速缓存120的其它路执行读取操作。
按照从块720到块730的路径,如果访问不成功,那么高速缓存控制器730可开始高速缓存填充。
在块740中,高速缓存控制器740可检查剩余的路来查看该值是否在其它路中的一条路中。
在块760中,检查是否在任何其它路中成功找到了该值。
在块762中,如果该值在其它路径中的任一条路中被找到,那么在块762中高速缓存填充被终止。那么在块770中,W由新的值更新。
在块750中,如果剩余路的检查不成功,那么高速缓存控制器310等待在块730中的高速缓存填充开始来完成。那么在块770中,W由在高速缓存填充期间加载值的路更新。
应当指出的是,在某些实施方案中,730的高速缓存填充可能不会在块720之后自动开始。相反,块740的检查可能会首先执行,且块730的高速缓存填充可能只有在块760的″NO″分支中才会被执行。在那些实施方案中,块762可能就不必要了。选择哪种实施方案可在特定应用程序中通过设计考虑进行。在某些情况下,用户或固件可控的变量可被提供,使得这两种方法都可以被提供作为选择。
在块790中,该方法结束。
图7B展示了方法702。当已知无法预测最佳的可能的路时,图7B被执行,如W变量被设置成什么。因此,在块702中,W=NH。
在块722中,值来自所期望的数据可被加载的所有的路。在块732中,如果请求的值被找到,那么没有高速缓存填充是必要的。在块742中,如果值在任何可能的路中未被找到,那么值不在高速缓存中,且高速缓存填充是必要的。
在块770中,W由在块742的高速缓存填充期间所要求的值被加载到的路更新,且在块792中,该方法结束。
在块732的"YES"分支中,在高速缓存中找到所要求的值。在块752中,正确的值被选择,而其它的值被忽略。在块770中,W由其中所要求的值被找到的路更新。
在块792中,该方法结束。
应当指出的是,上面参考图所讨论的活动可以应用到任何涉及信号处理(例如,手势信号处理)的集成电路,特别是那些可以执行特殊软件程序或算法的,其中一些与实时数据的数字化处理相关联。某些实施方案涉及到多DSP信号处理、浮点处理、信号/控制处理、固定功能处理、微控制器应用等。在某些情况下,本文所讨论的特征可以应用到医疗系统、科学仪器、无线和有线通信、雷达、工业过程控制、音频和视频设备、电流检测、仪表(可以是高精度的),以及其它基于数字处理的系统。此外,上面所讨论的某些实施方案可在数字信号处理技术中被提供,用于医疗成像、病人监护、医疗仪器和家庭医疗保健。这可包括肺监视器、加速度计、心率监测器、起搏器等。其它应用可包括用于安全系统的汽车技术(例如,稳定控制系统、驾驶辅助系统、制动系统、信息娱乐以及任何种类的内部应用程序)。此外,动力系统(例如,在混合动力和电动汽车中的)可以在电池监测、控制系统、报告控制、维修活动等中使用高精度数据转换产品。在附加的其它示例方案中,本公开的教导可以应用在工业市场中,其包括有助于提高生产率的过程控制系统、能源效率和可靠性。在消费类应用中,上面所讨论的信号处理电路的教导,可被用于图像处理、自动对焦和图像稳定(例如,用于数码相机、摄像机等等)。其它消费类应用包括用于家庭影院系统的音频和视频处理器、DVD录像机和高清电视。还有其它消费类应用可包括先进的触摸屏控制器(例如,任意类型的便携式媒体设备)。因此,这种技术可以很容易地成为智能手机、平板电脑、安防系统、个人电脑、游戏技术、虚拟现实、模拟训练等的一部分。
前面概述了几个实施方案的特征,使本领域技术人员可以更好地理解本公开的各个方面。本领域技术人员应当认识到他们可很容易地使用本公开作为基础,用于设计或修改其它过程和结构,为了执行相同目的和/或达到本文所介绍的实施方案的相同的效果。本领域的技术人员还应当认识到,此类等效构造不得脱离本公开的精神和范围,且他们可以在不脱离本公开的精神和范围的情况下进行各种改变、替换和变化。
本公开中的特定实施方案可包括系统级芯片(SOC)中央处理单元(CPU)封装。SOC表示集成计算机或其它电子系统的组件到单个芯片的集成电路(IC)。它可包含数字、模拟、混合信号和射频功能:所有这些可在单个芯片衬底上被提供。其它实施方案可包括多芯片模块(MCM),具有多个位于单个电子封装内的芯片并在电子封装中被配置的彼此紧密相互作用。在各种其它实施方案中,在专用集成电路(ASICs)、现场可编程门阵列(FPGAs)和其它半导体芯片中,数字信号处理功能可以在一个或多个硅芯上被实现。
在示例实施方案中,至少一部分本文概述的处理活动也可以在软件中被实现。在一些实施方案中,这些特征的一个或多个可以在被提供外部给展示的图的元件的硬件中被实现,或被并入任何适当的方式以实现预定的功能。各种组件可以包括为了实现本文概述的操作可以相互协作的软件(或往复式软件)。在其它实施方案中,这些元件还可以包括任何合适的算法、硬件、软件、组件、模块、接口或促进其操作的物体。
另外,与所述微处理器相关联的一些组件可以被移除,或被合并。在一般意义上,在图中所描绘的安排可在表示上更合乎逻辑,而物理体系结构可以包括各种排列、组合和/或这些元件的混合。必须指出的是无数可能的设计结构可以被用来实现本文所概述的操作目标。因此,相关联的基础设施具有无数的替代排列、设计选择、设备可能性、硬件结构、软件实现、设备选项等。
任何适当配置的处理器组件可以执行任何类型的数据相关联的指令来实现本文所详细描述的操作。本文所公开的任何处理器可以将元件或者文章(例如,数据)从一种状态或事物转变成另一种状态或事物。在另一个示例中,本文所概述的一些活动可以使用固定逻辑或可编程逻辑(例如,由处理器执行的软件和/或计算机指令)实现,并且本文识别的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)),包括数字逻辑、软件、代码、电子指令、闪存、光盘、CD-ROMs、DVDROMs、磁或光卡的ASIC,其它类型适合存储电子指令的机器可读介质,或它们任何合适的组合。在操作中,处理器可以在适当情况下,基于特定的需求将信息存储在任何合适类型的非临时性存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦可编程只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等)、软件、硬件或任何其它合适的组件、设备、元件,或物体中。此外,基于特殊需要和实现,在处理器中被追踪、发送、接收或存储的信息可以在任何数据库、寄存器、表、缓存、队列、控制列表或存储结构中被提供,所有这些都可以在任何合适的时间内被引用。本文所讨论的任何的存储物应被理解为被涵盖在广义术语″内存″内。类似地,本文中所描述的任何潜在的处理元件、模块和机器应该被理解为被涵盖在广义术语″微处理器″或″处理器″内。此外,在不同的实施方案中,处理器、内存、网卡、总线、存储设备、相关的外围设备,以及本文描述的其它硬件元件可以由通过软件或固件来模拟或虚拟化这些硬件元件的功能配置的处理器、内存,以及其它相关的设备来实现。
实现本文所描述的所有的或部分的功能的计算机程序逻辑以不同的形式被表现,包括,但绝不限于,源代码形式、计算机可执行形式和各种中间形式(例如,由汇编器、编译器、连接器或定位器生成的形式)。在示例中,源代码包括一系列以各种编程语言实现的计算机程序指令,如目标代码、汇编语言或高级语言,如OpenCL、Fortran、C、C++、JAVA或HTML,用于与各种操作系统或操作环境使用。源代码可以定义和使用各种数据结构和通信消息。源代码可以在计算机可执行形式(例如,经由解释器),或者源代码可以被转换(例如,经由翻译器、汇编器或编译器)成计算机可执行形式。
在上面的实施方案的讨论中,电容器、缓冲器、图形元件、互连板、时钟、DDRs、相机传感器、分频器、电感、电阻、放大器、开关、数字核、晶体管和/或其它组件可容易为了适应特定的电路需要被替换、代替,或修改。此外,应当指出的是,互补的电子设备、硬件、非临时性软件等的使用提供了同等可行的选择用来实现本公开的教导。
在一个示例实施方案中,图中任何数量的电子电路都可在相关联的电气设备的主板上实现。该主板可以是可容纳电气设备的内部电气系统的各种组件,并可进一步为其它外围设备提供连接器的通用电路板。更特别地,该主板可以提供电气连接,通过该连接系统的其它组件可以电气地通信。任何合适的处理器(包括数字信号处理器、微处理器、支持芯片组等)、内存元件等可基于特定的结构需求、处理需求、电脑设计等适当地耦合到主板上。其它组件如外部存储、附加传感器、音频/视频显示控制器,以及外围设备可以作为插入式卡经由电缆连接到主板,或集成到主板上。在另一个示例实施方案中,图中的电子电路可以被实现为独立的模块(例如,与配置以执行特定的应用或功能的组件和电路相关联的设备)或被实现为电子设备的专用硬件上的插入式模块。
应当指出的是,使用本文提供的众多案例,可以两个、三个、四个或更多个电子元件的形式来描述交互。然而,仅仅为了清楚和示例起见,这项工作已经完成。应当理解的是,该系统可以以任何合适的方式合并。根据类似的设计替代方案,任何示出的组件、模块和图的元件可以以各种可能的结构组合,所有这些都清楚地在本规范的范围之内。在某些情况下,通过仅参考有限数目的电子元件,可更容易来描述一组给定流程的一个或多个功能。应当理解的是,图中的电子电路及其教导很容易扩展且可容纳大量的组件,以及更复杂/精密的排列和结构。因此,提供的示例不应该限制其范围或限制可能应用于众多的其它结构的电子电路的广义教导。
本领域技术人员可以确定多个其它改变、替换、变化、变更和修改,并且可以希望本公开涵盖落在所附权利要求的范围内的所有这样的改变、替换、变化、变更和修改。为了协助美国专利和商标局(USPTO),并且,另外地,发表在本申请的任何专利的任何读者在此解释所附权利要求,申请人希望指出,申请人:(a)不旨在所附权利要求中的任一项援引35U.S.C.第112部分的第六(6)段,由于其在提交日存在,除非词语″用于...的方法″或″用于...的步骤″被具体地用在特定权利要求中;和(b)不旨在,通过本说明书中的任何语句,以未在所附权利要求中反映的任何方式来限制本公开。

Claims (20)

1.一种计算系统,包括:
处理器;
包括N高速缓存路的高速缓存;
包括路区的寄存器;和
电路和逻辑操作,用来通知所述处理器以:
从所述高速缓存访问值,包括从多路读取值和仅保留来自W路的值;知
在所述寄存器的路区中编码W。
2.根据权利要求1所述的计算系统,其中所述寄存器的路区包括N路位、等待路标志和未命中标志。
3.根据权利要求1所述的计算系统,其中电路和逻辑是为了期望的值用于通知所述处理器检查路W的进一步操作,而无需访问所述高速缓存中的任何附加的路。
4.根据权利要求1所述的计算系统,还包括加法器,并且其中所述电路和逻辑还可操作以通知所述处理器以:
为了期望的值搜索路W,仅当所述加法器中的加法运算的结果表示所述期望的值在现在的高速缓存行中时。
5.根据权利要求4所述的计算系统,其中所述加法运算的结果仅包括全加运算的一部分。
6.根据权利要求4所述的计算系统,其中所述加法运算的结果仅包括所述加法器的最低有效输出位的一部分。
7.根据权利要求1所述的计算系统,其中所述电路和逻辑还可操作以通知处理器以:
访问高速缓存中的值,确定未命中位被设置,且设置等待路位;和
访问高速缓存中的值,确定所述等待路位被设置,从所述高速缓存中接收W,并在所述寄存器的位区中编码W。
8.一种用于访问N路高速缓存的高速缓存控制器,包括电路和逻辑以:
从所述高速缓存中访问值包括从多路读取值和仅保留路W的值;
在寄存器的路区中编码W。
9.根据权利要求8所述的高速缓存控制器,其中所述寄存器中的路区包括N路位、等待路标志和未命中位。
10.根据权利要求8所述的高速缓存控制器,其中所述电路和逻辑还可操作以为了期望的值检查路W,而不访问所述高速缓存中的任何附加的路。
11.根据权利要求8所述的高速缓存控制器,还包括加法器,且其中所述电路和逻辑还可操作以:
为了期望的值搜索路W,仅当所述加法器中的加法运算的结果表示所述期望的值在现在的高速缓存行中时。
12.根据权利要求11所述的高速缓存控制器,其中所述加法运算的结果仅包括全加运算的一部分。
13.根据权利要求11所述的高速缓存控制器,其中所述加法运算的结果仅包括所述加法器的最低有效输出位的一部分。
14.根据权利要求8所述的高速缓存控制器,其中所述电路和逻辑还可操作以:
访问高速缓存中的值,确定未命中位被设置,并设置等待路位;和
访问高速缓存中的值,确定所述等待路位被设置,从所述高速缓存接收W,以及在所述寄存器的路区中编码W。
15.一种在具有N路高速缓存的处理器中用于路预测的方法,包括:
从所述高速缓存访问值包括从多路读取值和仅保留来自路W的值;知
在寄存器的路区中编码W。
16.根据权利要求15所述的方法,还包括为了期望的值搜索路W,而不访问所述高速缓存中的任何附加的路。
17.根据权利要求16所述的方法,其中所述访问值还包括:
为了所述期望的值搜索路W,仅当采用加法运算的结果表示所述期望的值在现在的高速缓存行中时。
18.根据权利要求17所述的方法,其中采用所述加法运算的结果包括采用全加运算的一部分。
19.根据权利要求17所述的方法,其中采用所述加法运算的结果仅包括采用加法器的最低有效输出位的一部分。
20.根据权利要求15所述的方法,还包括:
访问高速缓存中的值,确定未命中位被设置,以及设置等待路位;和
访问高速缓存中的值,确定所述等待路位被设置,且在寄存器的路区中编码W。
CN201510329085.2A 2014-06-16 2015-06-15 高速缓存路预测 Active CN105224476B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/306,162 2014-06-16
US14/306,162 US9460016B2 (en) 2014-06-16 2014-06-16 Cache way prediction

Publications (2)

Publication Number Publication Date
CN105224476A true CN105224476A (zh) 2016-01-06
CN105224476B CN105224476B (zh) 2018-12-18

Family

ID=54706943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510329085.2A Active CN105224476B (zh) 2014-06-16 2015-06-15 高速缓存路预测

Country Status (3)

Country Link
US (1) US9460016B2 (zh)
CN (1) CN105224476B (zh)
DE (1) DE102015109124B4 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020015120A1 (zh) * 2018-07-19 2020-01-23 江苏华存电子科技有限公司 低延迟指令调度器及过滤猜测访问方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916259B1 (en) * 2015-02-02 2018-03-13 Waymo Llc System and method for low latency communication
US10140122B2 (en) 2015-09-23 2018-11-27 Hanan Potash Computer processor with operand/variable-mapped namespace
US10095641B2 (en) * 2015-09-23 2018-10-09 Hanan Potash Processor with frames/bins structure in local high speed memory
US9977693B2 (en) 2015-09-23 2018-05-22 Hanan Potash Processor that uses plural form information
US10061511B2 (en) 2015-09-23 2018-08-28 Hanan Potash Computing device with frames/bins structure, mentor layer and plural operand processing
US10067878B2 (en) 2015-09-23 2018-09-04 Hanan Potash Processor with logical mentor
GB2547893B (en) * 2016-02-25 2018-06-06 Advanced Risc Mach Ltd Combining part of an offset with a corresponding part of a base address and comparing with a reference address
US11093286B2 (en) 2016-04-26 2021-08-17 Hanan Potash Computing device with resource manager and civilware tier
US11281586B2 (en) 2017-05-09 2022-03-22 Andes Technology Corporation Processor and way prediction method thereof
US10229061B2 (en) 2017-07-14 2019-03-12 International Business Machines Corporation Method and arrangement for saving cache power
US11114136B2 (en) * 2018-08-21 2021-09-07 Marcon International Inc Circuit, system, and method for reading memory-based digital identification devices in parallel
US11372768B2 (en) * 2019-11-25 2022-06-28 Alibaba Group Holding Limited Methods and systems for fetching data for an accelerator
US12040013B2 (en) 2021-08-11 2024-07-16 Stmicroelectronics International N.V. Static random access memory supporting a single clock cycle read-modify-write operation
US12046324B2 (en) 2021-08-11 2024-07-23 Stmicroelectronics International N.V. Modular memory architecture with gated sub-array operation dependent on stored data content
CN115299888A (zh) * 2022-09-14 2022-11-08 曹毓琳 基于现场可编程门阵列的多微器官系统数据处理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187860A (zh) * 2006-11-21 2008-05-28 国际商业机器公司 用于指令高速缓存踪迹生成的设备和方法
CN101558390A (zh) * 2006-12-15 2009-10-14 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
US20120144121A1 (en) * 2009-05-08 2012-06-07 Bret Ronald Olszewski Demand Based Partitioning of Microprocessor Caches

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6687789B1 (en) 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US6643739B2 (en) 2001-03-13 2003-11-04 Koninklijke Philips Electronics N.V. Cache way prediction based on instruction base register
US20040015669A1 (en) * 2002-07-19 2004-01-22 Edirisooriya Samantha J. Method, system, and apparatus for an efficient cache to support multiple configurations
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
JP2007272280A (ja) * 2006-03-30 2007-10-18 Toshiba Corp データ処理装置
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
US8392651B2 (en) 2008-08-20 2013-03-05 Mips Technologies, Inc. Data cache way prediction
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187860A (zh) * 2006-11-21 2008-05-28 国际商业机器公司 用于指令高速缓存踪迹生成的设备和方法
CN101558390A (zh) * 2006-12-15 2009-10-14 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
US20120144121A1 (en) * 2009-05-08 2012-06-07 Bret Ronald Olszewski Demand Based Partitioning of Microprocessor Caches

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020015120A1 (zh) * 2018-07-19 2020-01-23 江苏华存电子科技有限公司 低延迟指令调度器及过滤猜测访问方法

Also Published As

Publication number Publication date
DE102015109124B4 (de) 2020-11-05
US20150363318A1 (en) 2015-12-17
CN105224476B (zh) 2018-12-18
DE102015109124A1 (de) 2015-12-17
US9460016B2 (en) 2016-10-04

Similar Documents

Publication Publication Date Title
CN105224476A (zh) 高速缓存路预测
CN101030192B (zh) 管理处理器的寄存器的方法和系统
JP6143872B2 (ja) 装置、方法、およびシステム
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
JP7244046B2 (ja) 遠隔アトミックオペレーションの空間的・時間的マージ
JP5489991B2 (ja) メモリ割り当ての機構
US20150134935A1 (en) Split Register File for Operands of Different Sizes
US20150227366A1 (en) Processor with granular add immediates capability &amp; methods
US20140115278A1 (en) Memory architecture
CN1763730A (zh) 用于在处理环境中提供路径记忆的系统和方法
JP2014142969A (ja) 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体
JP2018504666A (ja) 多次元アレイから要素の多次元ブロックをプリフェッチするためのハードウェア装置および方法
CN104364775A (zh) 具有段偏移寻址的专用存储器访问路径
JPH05502125A (ja) 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
TWI692213B (zh) 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC)
TW201730755A (zh) 用於以傳巷為基礎之跨步分散運算的指令與邏輯
CN107851013B (zh) 数据处理装置和方法
KR20150079809A (ko) 축소된 다중 네스트된 루프들의 벡터화
CN105993000B (zh) 用于浮点寄存器混叠的处理器和方法
CN108269226B (zh) 用于处理稀疏数据的装置和方法
CN100594481C (zh) 允许运行在逻辑分区上的程序访问资源的方法与系统
JP2021504804A (ja) 仮想マシンの動的アドレス変換のためのコンピュータ実装方法、システム、およびコンピュータ・プログラム
CN105264489A (zh) 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统
US8707013B2 (en) On-demand predicate registers
US10275230B2 (en) Cache aware self-referential structure peeling

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Limerick

Patentee after: Analog Devices Global Unlimited Co.

Address before: Limerick

Patentee before: Analog Devices Global

CP01 Change in the name or title of a patent holder
CP02 Change in the address of a patent holder

Address after: Limerick

Patentee after: Analog Devices Global

Address before: Bermuda (UK) Hamilton

Patentee before: Analog Devices Global

CP02 Change in the address of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20210629

Address after: Limerick

Patentee after: ANALOG DEVICES INTERNATIONAL UNLIMITED Co.

Address before: Limerick

Patentee before: Analog Devices Global Unlimited Co.

TR01 Transfer of patent right