CN111213132A - 用飞行中预取服务于cpu需求请求 - Google Patents

用飞行中预取服务于cpu需求请求 Download PDF

Info

Publication number
CN111213132A
CN111213132A CN201880066430.XA CN201880066430A CN111213132A CN 111213132 A CN111213132 A CN 111213132A CN 201880066430 A CN201880066430 A CN 201880066430A CN 111213132 A CN111213132 A CN 111213132A
Authority
CN
China
Prior art keywords
instruction
request
cache
address
level
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
CN201880066430.XA
Other languages
English (en)
Other versions
CN111213132B (zh
Inventor
O·奥洛罗德
R·文卡塔苏巴拉尼亚
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Priority to CN202310236384.6A priority Critical patent/CN117421259A/zh
Publication of CN111213132A publication Critical patent/CN111213132A/zh
Application granted granted Critical
Publication of CN111213132B publication Critical patent/CN111213132B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • 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)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

为高速缓存中的未命中的指令请求可能在高速缓存系统正服务于对相同指令的待决预取时发生。常规上,通过比较记分板中所有条目的请求地址来检测特定高速缓存危险。程序存储器控制器将所分配通道存储在所述记分板中。程序存储器控制器比较(2305)需求请求的所述所分配通道与所有记分板条目的所述所分配通道。仅在所述所分配通道匹配(2306)时才发生所述高速缓存危险。在通道比较(2305,2306)之后,将需求请求地址仅与具有匹配通道的那些记分板条目的所述请求地址进行比较(2308)。在此时间期间不对其它地址比较器供电。此用以减少检测此高速缓存危险所需要的电力。

Description

用飞行中预取服务于CPU需求请求
技术领域
此大体上涉及数字数据处理,且更确切地说,涉及高速缓存操作。
背景技术
常规数字数据处理器以非常快的时钟操作,且通常执行指令的速度比其从通用存储器中召回的速度快。对将指令提供到数字数据处理器的问题的已知解决方案称为指令高速缓存。数字数据处理系统以物理及计算接近性对需要指令控制的数据要素提供小的快速存储器。此小的快速存储器存储所需指令的子集。数字数据处理器常常循环地工作。如果指令循环的全部或大部分存储在高速缓存中,则数字数据处理器可保持以比从通用存储器重新调用要快的速率用指令馈送。
由于这些高速缓存方案,在实际需要之前确定将使用何指令是有帮助的。此类预取使得高速缓存能够预测对于指令的需要。在需要时,预取的指令可能已经存储在高速缓存中。
许多预取技术存在一些问题。举例来说,由CPU提取的需求可能在对相同指令的预取待决的同时发生。
发明内容
一种数字数据处理设备包含:中央处理单元核心;以及一级指令高速缓存。所述中央处理单元核心响应于程序指令而执行数据处理操作。所述中央处理单元核心在需要时经由请求地址发布对额外程序指令的指令请求。所述一级指令高速缓存在一级高速缓存行中暂时存储程序指令的子集。在所述中央处理单元请求请求地址处的指令时,所述一级指令高速缓存确定其是否在所述请求地址处存储所述指令。如果是,则所述一级指令高速缓存供应所述所请求程序指令。如果否,则所述一级指令高速缓存将所述请求地址供应到另一存储器以获得高速缓存服务。
所述包含分支预测器,其预测程序分支的所采取/未采取状态。在指令请求时,所述分支预测器计算且供应在指令存取之后在预测支路将脱离线性路径之前所请求的线性后续指令的数目的指令计数。
预取单元接收所述指令请求地址及所述指令计数。所述预取单元依序产生对在所述所请求指令之后的线性后续指令的高速缓存预取请求直到所述指令计数。
程序存储器控制器确定所述一级指令高速缓存是否存储所预取指令的所请求指令。如果所述高速缓存存储所请求指令,则将其从所述高速缓存供应到所述中央处理单元核心。如果所述高速缓存存储所预取指令,则所述程序存储器控制器不采取动作。
如果所述高速缓存不存储所请求指令或所预取指令,则所述程序控制器从另一存储器请求高速缓存服务。所述程序存储器控制器确定为所述请求地址分配的高速缓存通道。在所述高速缓存服务待决时,所述请求地址、所述对应的所分配高速缓存通道及请求识别码存储在记分板条目中。
在由指令请求触发预取的情况下,有可能在高速缓存系统正服务于对在所述高速缓存中未命中的后续指令的待决预取的同时出现对相同指令的指令请求。在此情境中,产生对所述指令请求的高速缓存服务请求会造成冗余操作。此举否定了待决预取的价值。常规上,通过比较指令请求的指令请求地址与记分板中所有条目的请求地址来检测特定高速缓存危险。由于地址大小及记分板条目的数目,此可能需要相当大的电力。如果检测到高速缓存危险,则修改记分板条目以将待决预取改变为需求提取。因此,通过返回到待决预取来服务于稍后出现的指令请求。如果未检测到危险,则程序存储器控制器请求对所述需求请求的高速缓存服务。
在所描述的实施例中,以节省电力的方式检测此指令危险。所述程序存储器控制器在确定高速缓存未命中时确定所述高速缓存通道。此所确定高速缓存通道存储在用于所述高速缓存服务请求的所述记分板条目中。在产生危险的条件(对于与待决预取相同的指令,需求请求未命中高速缓存)下,所述需求请求与所述预取将分配到相同通道。所述程序存储器控制器比较所述需求请求的所述所分配通道与所有所述记分板条目的所分配通道。仅在所述所分配通道匹配时才发生高速缓存危险。在通道比较之后,将所述需求请求地址仅与具有匹配通道的那些记分板条目的请求地址进行比较。在此时间期间不对其它地址比较器供电。此用以减少检测此高速缓存危险所需要的电力。
附图说明
图1说明根据一个实施例的双标量/向量数据路径处理器。
图2说明图1中所说明的双标量/向量数据路径处理器中的寄存器及功能单元。
图3说明全局标量寄存器组。
图4说明由算术功能单元共享的局部标量寄存器组。
图5说明由乘法功能单元共享的局部标量寄存器组。
图6说明由加载/存储单元共享的局部标量寄存器组。
图7说明全局向量寄存器组。
图8说明预测寄存器组。
图9说明由算术功能单元共享的局部向量寄存器组。
图10说明由乘法及相关功能单元共享的局部向量寄存器组。
图11说明根据优选实施例的中央处理单元的管线阶段。
图12说明单个提取包的十六个指令。
图13说明由实例实施例使用的指令的指令译码的实例。
图14说明条件码扩展时隙0的位译码。
图15说明条件码扩展时隙1的位译码。
图16说明常量扩展时隙0的位译码。
图17为说明常量扩展的部分框图。
图18说明根据实例实施例的用于SIMD操作的进位控制。
图19说明中央处理单元核心与指令高速缓存及辅助支持结构的组合的一个视图。
图20说明中央处理单元核心与指令高速缓存及辅助支持结构的组合的第二视图。
图21说明如何剖析提取地址的位以进行处置。
图22说明用于二级组合式指令/数据高速缓存的控制器的相关细节。
图23为说明根据实例实施例的一个方面的操作的流程图。
图24为说明实例实施例的一个方面的部分示意图。
图25为说明根据实例实施例的另一方面的操作的流程图。
具体实施方式
图1说明根据优选实施例的双标量/向量数据路径处理器。处理器100包含分离的一级指令高速缓存(L1I)121及一级数据高速缓存(L1D)123。处理器100包含保存指令及数据两者的二级组合式指令/数据高速缓存(L2)130。图1说明一级指令高速缓存121与二级组合式指令/数据高速缓存130之间的连接(总线142)。图1说明一级数据高速缓存123与二级组合式指令/数据高速缓存130之间的连接(总线145)。在处理器100的优选实施例中,二级组合式指令/数据高速缓存130存储指令以备份一级指令高速缓存121且存储数据以备份一级数据高速缓存123。在优选实施例中,二级组合式指令/数据高速缓存130以图1中未说明的方式进一步连接到更高级高速缓存及/或主存储器。在优选实施例中,中央处理单元核心110、一级指令高速缓存121、一级数据高速缓存123及二级组合式指令/数据高速缓存130形成于单个集成电路上。此信号集成电路任选地包含其它电路。
中央处理单元核心110如在指令提取单元111的控制下从一级指令高速缓存121提取指令。指令提取单元111确定待执行的下一些指令且召回这类指令的提取包大小的集合。下文进一步详述提取包的本质及大小。常规上,在高速缓存命中(如果指令存储在一级指令高速缓存121中)时,直接从一级指令高速缓存121提取这些指令。在高速缓存未命中(指定指令提取包并未存储在一级指令高速缓存121中)之后,在二级组合式指令/数据高速缓存130中搜寻这些指令。在优选实施例中,一级指令高速缓存121中的高速缓存线的大小等于提取包的大小。这些指令的存储器位置为二级组合式指令/数据高速缓存130中的命中或未命中。命中由二级组合式指令/数据高速缓存130服务。未命中由更高级高速缓存(未说明)或由主存储器(未说明)服务。常规上,所请求指令可同时供应到一级指令高速缓存121及中央处理单元核心110两者以加速使用。
在优选实施例中,中央处理单元核心110包含用以执行指令指定数据处理任务的多个功能单元。指令调度单元112确定各提取指令的目标功能单元。在优选实施例中,中央处理单元110作为能够同时操作对应功能单元中的多个指令的超长指令字(very longinstruction word;VLIW)处理器进行操作。优选地,编译器组织执行包中的一起执行的指令。指令调度单元112将每条指令引导到其目标功能单元。指派给指令的功能单元完全由通过编译器产生的指令指定。中央处理单元核心110的硬件不具有在此功能单元指派中的部分。在优选实施例中,指令调度单元112可并联操作多个指令。这类平行指令的数目由执行包的大小设定。此将在下文进一步详述。
指令调度单元112的调度任务的一个部分为确定指令是在标量数据路径侧A115还是向量数据路径侧B116中的功能单元上执行。每条指令内被称作s位的指令位确定指令控制的数据路径。此将在下文进一步详述。
指令解码单元113解码当前执行包中的每条指令。解码包含识别执行指令的功能单元、识别可能的寄存器组当中用于为对应数据处理操作供应数据的寄存器,及识别对应数据处理操作的结果的寄存器目的地。如下文进一步描述,指令可包含常量字段而非一个寄存器编号操作数字段。此解码的结果为用于控制目标功能单元以对指定数据执行由对应指令指定的数据处理操作的信号。
中央处理单元核心110包含控制寄存器114。控制寄存器114以与实例实施例无关的方式存储用于控制标量数据路径侧A115及向量数据路径侧B116中的功能单元的信息。此信息可以是模式信息等。
将来自指令解码113的经解码指令及存储于控制寄存器114中的信息供应到标量数据路径侧A115及向量数据路径侧B116。因此,标量数据路径侧A115及向量数据路径侧B116内的功能单元在指令指定数据之后执行指令指定数据处理操作且将结果存储在一或多个指令指定数据寄存器中。标量数据路径侧A115及向量数据路径侧B116中的每一者包含优选地并联操作的多个功能单元。这些将结合图2在下文进一步详述。标量数据路径侧A115与向量数据路径侧B116之间存在准许数据交换的数据路径117。
中央处理单元核心110包含其它不基于指令的模块。仿真单元118响应于指令准许确定中央处理单元核心110的机器状态。此能力通常将用于算法开发。中断/异常单元119使中央处理单元核心110能够对外部、非同步事件(中断)作出响应且对试图执行不当操作(异常)作出响应。
中央处理单元核心110包含流式传输引擎125。流式传输引擎125将两个数据流从通常高速缓存于二级组合式指令/数据高速缓存130中的预定地址供应到向量数据路径侧B的寄存器组。此将受控数据移动从存储器(如高速缓存于二级组合式指令/数据高速缓存130中)直接提供到功能单元操作数输入端。这在下文进一步详述。
图1说明各个部分之间的总线的实例数据宽度。一级指令高速缓存121经由总线141将指令供应到指令提取单元111。总线141优选地为512位总线。总线141为单向的,从一级指令高速缓存121到中央处理单元核心110。二级组合式指令/数据高速缓存130经由总线142将指令供应到一级指令高速缓存121。总线142优选地为512位总线。总线142为单向的,从二级组合式指令/数据高速缓存130到一级指令高速缓存121。
一级数据高速缓存123经由总线143与标量数据路径侧A115中的寄存器组交换数据。总线143优选地为64位总线。一级数据高速缓存123经由总线144与向量数据路径侧B116中的寄存器组交换数据。总线144优选地为512位总线。总线143及144说明为双向的,支持中央处理单元核心110数据读取及数据写入两者。一级数据高速缓存123经由总线145与二级组合式指令/数据高速缓存130交换数据。总线145优选地为512位总线。总线145说明为双向的,为中央处理单元核心110数据读取及数据写入两者支持高速缓存服务。
常规上,在高速缓存命中(如果所请求的数据存储在一级一级数据高速缓存123中)时,直接从一级数据高速缓存123提取CPU资料请求。在高速缓存未命中(指定数据不存储于一级数据高速缓存123中)时,在二级组合式指令/数据高速缓存130中搜寻此数据。此所请求的数据的存储器位置是二级组合式指令/数据高速缓存130中的命中或未命中。命中由二级组合式指令/数据高速缓存130服务。未命中由另一级高速缓存(未说明)或由主存储器(未说明)服务。常规上,所请求的指令可同时供应到一级数据高速缓存123和中央处理单元核心110两者以加速使用。
二级组合式指令/数据高速缓存130经由总线146将第一数据流的数据供应到流式传输引擎125。总线146优选地为512位总线。流式传输引擎125经由总线147将此第一数据流的数据供应到向量数据路径侧B116的功能单元。总线147优选地为512位总线。二级组合式指令/数据高速缓存130经由总线148将第二数据流的数据供应到流式传输引擎125。总线148优选地为512位总线。流式传输引擎125经由总线149将此第二数据流的数据供应到向量数据路径侧B116的功能单元。总线149优选地为512位总线。根据本发明的优选实施例,总线146、147、148和149说明为单向地从二级组合式指令/数据高速缓存130到流式传输引擎125和向量数据路径侧B116。
在高速缓存命中(在所请求的数据存储于二级组合式指令/数据高速缓存130中的情况下)时,直接从二级组合式指令/数据高速缓存130提取流式传输引擎数据请求。在高速缓存未命中(指定数据不存储于二级组合式指令/数据高速缓存130中)时,从另一级高速缓存(未说明)或从主存储器(未说明)搜寻此数据。在一些实施例中,对于一级数据高速缓存123来说高速缓存不存储于二级组合式指令/数据高速缓存130中的数据在技术上是可行的。如果支持此类操作,则在流式传输引擎数据请求即二级组合式指令/数据高速缓存130中的未命中时,二级组合式指令/数据高速缓存130应为流引擎所请求的数据而监听一级数据高速缓存123。如果一级数据高速缓存123存储此数据,则其监听响应将包含数据,接着供应所述数据以服务流式传输引擎请求。如果一级数据高速缓存123不存储此数据,则其监听响应将指示此且二级组合式指令/数据高速缓存130必须从另一级高速缓存(未说明)或从主存储器(未说明)服务此流式传输引擎请求。
在优选实施例中,根据题为“包含高速缓存和直接可编址静态随机存取存储器的统一存储器系统架构(UNIFIED MEMORY SYSTEM ARCHITECTURE INCLUDING CACHE ANDDIRECTLY ADDRESSABLE STATIC RANDOM ACCESS MEMORY)”的第6,606,686号美国专利,一级数据高速缓存123和二级组合式指令/数据高速缓存130两者均可配置为选定量的高速缓存或直接可编址存储器。
图2说明标量数据路径侧A 115及向量数据路径侧B116内的功能单元及寄存器组的其它细节。标量数据路径侧A 115包含全局标量寄存器组211、L1/S1局部寄存器组212、M1/N1局部寄存器组213和D1/D2局部寄存器组214。标量数据路径侧A115包含L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226。向量数据路径侧B116包含全局标量寄存器组231、L2/S2局部寄存器组232、M2/N2/C局部寄存器组233和预测寄存器组234。向量数据路径侧B116包含L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246。存在对哪些功能单元可从哪些寄存器组读取或对哪些寄存器组写入的限制。这些将在下文详述。
标量数据路径侧A 115包含L1单元221。L1单元221通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或L1/S1局部寄存器组212中的指令指定寄存器召回。L1单元221优选地执行以下指令选择的操作:64位加/减运算;32位最小/最大操作;8位单指令多数据(SIMD)指令,例如绝对值、最小值和最大值确定的总和;循环最小/最大操作;和寄存器组之间的各种移动操作。结果可写入到全局标量寄存器组211、L1/S1局部寄存器组212、M1/N1局部寄存器组213或D1/D2局部寄存器组214的指令指定的寄存器中。
标量数据路径侧A115包含S1单元222。S1单元222通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或L1/S1局部寄存器组212中的指令指定寄存器召回。S1单元222优选地执行与L1单元221类型相同的操作。任选地,由L1单元221和S1单元222支持的数据处理操作之间可能存在微小变化。结果可写入到全局标量寄存器组211、L1/S1局部寄存器组212、M1/N1局部寄存器组213或D1/D2局部寄存器组214的指令指定的寄存器中。
标量数据路径侧A 115包含M1单元223。M1单元223通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或M1/N1局部寄存器组213中的指令指定的寄存器召回。M1单元223优选地执行以下指令选择的操作:8位乘法操作;复数内积操作;32位位计数操作;复共轭乘法操作;和逐位逻辑操作、移动、加法和减法。结果可写入到全局标量寄存器组211、L1/S1局部寄存器组212、M1/N1局部寄存器组213或D1/D2局部寄存器组214的指令指定的寄存器中。
标量数据路径侧A115包含N1单元224。N1单元224通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或M1/N1局部寄存器组213中的指令指定的寄存器召回。N1单元224优选地与M1单元223执行相同类型的操作。可能存在一起使用M1单元223和N1单元224两者的某些双重操作(被称作双发布指令)。结果可写入到全局标量寄存器组211、L1/S1局部寄存器组212、M1/N1局部寄存器组213或D1/D2局部寄存器组214的指令指定的寄存器中。
标量数据路径侧A115包含D1单元225和D2单元226。D1单元225和D2单元226通常各自接受两个64位操作数且各自产生一个64位结果。D1单元225和D2单元226通常执行地址计算以及对应的加载和存储操作。D1单元225用于64个位的标量加载及存储。D2单元226用于512位的向量加载和存储。D1单元225和D2单元226还优选地执行:对加载和存储数据的调换、打包和解包;64位SIMD算术操作;和64位逐位逻辑操作。D1/D2局部寄存器组214通常将存储在地址计算中用于对应加载及存储的基地址及偏移地址。两个操作数各自从全局标量寄存器组211或D1/D2局部寄存器组214中的指令指定的寄存器召回。所计算的结果可写入到全局标量寄存器组211、L1/S1局部寄存器组212、M1/N1局部寄存器组213或D1/D2局部寄存器组214的指令指定的寄存器中。
向量数据路径侧B116包含L2单元241。L2单元221通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231、L2/S2局部寄存器组232或预测寄存器组234中的指令指定寄存器召回。除了较宽512位数据以外,L2单元241优选地执行类似于L1单元221的指令。结果可写入全局向量寄存器组231、L2/S2局部寄存器组222、M2/N2/C局部寄存器组233或预测寄存器组234的指令指定寄存器中。
向量数据路径侧B116包含S2单元242。S2单元242通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231、L2/S2局部寄存器组232或预测寄存器组234中的指令指定寄存器召回。除了较宽512位数据以外,S2单元242优选地执行类似于S1单元222的指令。结果可写入全局向量寄存器组231、L2/S2局部寄存器组222、M2/N2/C局部寄存器组233或预测寄存器组234的指令指定寄存器中。
向量数据路径侧B116包含M2单元243。M2单元243通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231或M2/N2/C局部寄存器组233中的指令指定寄存器召回。除了较宽512位数据以外,M2单元243优选地执行类似于M1单元222的指令。结果可写入到全局向量寄存器组231、L2/S2局部寄存器组232或M2/N2/C局部寄存器组233的指令指定寄存器中。
向量数据路径侧B116包含N2单元244。N2单元244通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231或M2/N2/C局部寄存器组233中的指令指定寄存器召回。N2单元244优选地执行与M2单元243相同类型的操作。可能存在一起使用M2单元243及N2单元244两者的某些双重操作(被称作双发布指令)。结果可写入到全局向量寄存器组231、L2/S2局部寄存器组232或M2/N2/C局部寄存器组233的指令指定寄存器中。
向量数据路径侧B116包含C单元245。C单元245通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231或M2/N2/C局部寄存器组233中的指令指定寄存器召回。C单元245优选地执行:“搜寻(Rake)”及“搜索(Search)”指令;使每时钟周期至多512个2位PN*8位乘以I/Q复数相乘;8位及16位绝对差和(Sum-of-Absolute-Difference;SAD)计算,每时钟周期至多512个SAD;水平相加及水平最小/最大指令;及向量排列指令。C单元245还包含用于控制C单元245指令的某些操作的4个向量控制寄存器(CUCR0到CUCR3)。控制寄存器CUCR0到CUCR3在某些C单元245操作中用作操作数。控制寄存器CUCR0到CUCR3优选地使用:在对通用排列指令(VPERM)的控制中;及作为SIMD多重内积运算(DOTPM)及SIMD多重绝对差和(SAD)运算的掩模。控制寄存器CUCR0优选地用于存储用于伽罗瓦域乘法运算(Galios Field Multiply operation;GFMPY)的多项式。控制寄存器CUCR1优选地用于存储伽罗瓦域多项式产生器函数。
向量数据路径侧B116包含P单元246。P单元246对局部预测寄存器组234的寄存器执行基本逻辑运算。P单元246对预测寄存器组234具有直接的存取以从预测寄存器组读取及对其写入。这些运算包含AND、ANDN、OR、XOR、NOR、BITR、NEG、SET、BITCNT、RMBD、位抽取(BIT Decimate)及扩展(Expand)。P单元246的通常预期使用包含操纵用于控制另一SIMD向量运算的SIMD向量比较结果。
图3说明全局标量寄存器组211。存在命名为A0到A15的16个独立64位宽标量寄存器。全局标量寄存器组211的各寄存器可读取或写入为64位标量数据。所有标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可读取或写入到全局标量寄存器组211。全局标量寄存器组211可读取为32位或64位且可能仅写入为64位。执行的指令确定读取数据大小。在下文将详述的限制下,向量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可经由交叉路径117从全局标量寄存器组211读取。
图4说明D1/D2局部寄存器组214。存在命名为D0到D16的16个独立64位宽标量寄存器。D1/D2局部寄存器组214的各寄存器可读取或写入为64位标量数据。所有标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到全局标量寄存器组211。仅D1单元225及D2单元226可从D1/D1局部标量寄存器组214读取。预期存储在D1/D2局部标量寄存器组214中的数据将包含在地址计算中使用的基地址及偏移地址。
图5说明L1/S1局部寄存器组212。图5中说明的实施例具有命名为AL0到AL7的8个独立64位宽标量寄存器。优选指令译码(参见图13)准许L1/S1局部寄存器组212包含多达16个寄存器。图5的实施例实施仅8个寄存器以减小电路大小且降低复杂度。L1/S1局部寄存器组212的各寄存器可经读取或写入为64位标量数据。所有标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入L1/S1局部标量寄存器组212中。可从L1/S1局部标量寄存器组212读取仅L1单元221及S1单元222。
图6说明M1/N1局部寄存器组213。图6中说明的实施例具有命名为AM0到AM7的8个独立64位宽标量寄存器。优选指令译码(参见图13)准许M1/N1局部寄存器组213包含多达16个寄存器。图6的实施例实施仅8个寄存器以减小电路大小且降低复杂度。M1/N1局部寄存器组213的各寄存器可经读取或写入为64位标量数据。所有标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入M1/N1局部标量寄存器组213中。可从M1/N1局部标量寄存器组213读取仅M1单元223及N1单元224。
图7说明全局向量寄存器组231。存在16个独立512位宽向量寄存器。全局向量寄存器组231的命名为B0到B15的各寄存器可读取或写入为64位标量数据。全局向量寄存器组231的命名为VB0到VB15的各寄存器可读取或写入为512位向量数据。指令类型确定数据大小。所有向量数据路径侧B116功能单元(L2单元241、S2单元242、M3单元243、N2单元244、C单元245及P单元246)可读取或写入全局标量寄存器组231中。在下文将详述的限制下,标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可经由横向路径117从全局向量寄存器组231读取。
图8说明P局部寄存器组234。存在命名为P0到P15的8个独立64位宽寄存器。P局部寄存器组234的各寄存器可读取或写入为64位标量数据。向量数据路径侧B116功能单元L2单元241、S2单元242、C单元244及P单元246可写入P局部寄存器组234中。可从P局部标量寄存器组234读取仅L2单元241、S2单元242及P单元246。P局部寄存器组234的通常预期使用包含:写入来自L2单元241、S2单元242或C单元244的单位SIMD向量比较结果;通过P单元246操纵SIMD向量比较结果;及将操纵结果用于另一SIMD向量运算的控制。
图9说明L2/S2局部寄存器组232。图9中所说明的实施例具有8个独立512位宽向量寄存器。优选指令译码(参见图13)准许L2/S2局部寄存器组232包含至多16个寄存器。图9的实施例实施仅8个寄存器以减小电路大小且降低复杂度。L2/S2向量寄存器组232的命名为BL0到BL7的各寄存器可读取或写入为64位标量数据。L2/S2局部向量寄存器组232的命名为VBL0到VBL7的各寄存器可读取或写入为512位向量数据。指令类型确定数据大小。所有向量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元233、N2单元24、C单元245及P单元246)可写入L2/S2局部向量寄存器组232中。可从L2/S2局部向量寄存器组232读取仅L2单元241及S2单元242。
图10说明M2/N2/C局部寄存器组233。图10中所说明的实施例具有8个独立512位宽向量寄存器。优选指令译码(参见图13)准许L1/S1局部寄存器组212包含多达16个寄存器。图10的实施例实施仅8个寄存器以减小电路大小且降低复杂度。M2/N2/C局部向量寄存器组233的命名为BM0到BM7的各寄存器可读取或写入为64位标量数据。M2/N2/C局部向量寄存器组233的命名为VBM0到VBM7的各寄存器可读取或写入为512位向量数据。所有向量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可写入M2/N2/C局部向量寄存器组233中。可从M2/N2/C局部向量寄存器组233读取仅M2单元233、N2单元244及C单元245。
可由一侧的所有功能单元存取的全局寄存器组及可由一侧的功能单元中的仅一些存取的局部寄存器组的提供为一种设计选择。实例实施例可使用对应于所公开的全局寄存器组的仅一种类型的寄存器组加以实践。
交叉路径117准许标量数据路径侧A115与向量数据路径侧B116之间的有限数据交换。在各操作周期期间,一个64位数据字可从全局标量寄存器组A 211召回,以由向量数据路径侧B116的一或多个功能单元用作操作数,且一个64位数据字可从全局向量寄存器组231召回,以由标量数据路径侧A115的一或多个功能单元用作操作数。任何标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可从全局向量寄存器组231读取64位操作数。此64位操作数为全局向量寄存器组232的经存取寄存器中的512位数据的最低有效位。多个标量数据路径侧A115功能单元可使用与同一操作周期期间的操作数相同的64位交叉路径数据。然而,在任何单个操作周期中,仅一个64位操作数从向量数据路径侧B116传送到标量数据路径侧A 115。任何向量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可从全局标量寄存器组211读取64位操作数。如果对应指令为标量指令,则交叉路径操作数数据被视为任何其它64位操作数。如果对应指令为向量指令,则操作数的较高448位经填零。多个向量数据路径侧B116功能单元可使用与同一操作周期期间的操作数相同的64位交叉路径数据。在任何单个操作周期中,仅一个64位操作数从标量数据路径侧A115传送到向量数据路径侧B 116。
在某些受约束情况下,流式传输引擎125传送数据。流式传输引擎125控制两个数据流。流由特定类型的一系列元素组成。对流进行操作的程序顺序地读取数据,随后对各元素进行操作。每一流具有以下基本特性。流数据具有界限分明的开始及结束时间。流数据在整个流中具有固定元素大小及类型。流数据具有固定元素顺序。因此,程序不能在所述流内随机地搜寻。流数据在激活时为只读的。程序在从流读取的同时不能写入所述流中。一旦流打开,则流式传输引擎125:计算地址;从二级组合式指令/数据高速缓存130提取所界定数据类型(其可能需要来自较高级存储器的高速缓存服务);执行数据类型操纵,例如零扩展、符号扩展、例如矩阵变位等数据元素排序/调换;以及将数据直接递送到中央处理单元核心110内的经编程数据寄存器组。流式传输引擎125因此可用于良性数据的实时数字滤波操作。流式传输引擎125免于来自实现其它处理功能的对应CPU的这些存储器提取任务。
流式传输引擎125提供以下益处。流式传输引擎125准许多维存储器存取。流式传输引擎125将可用带宽增加到功能单元。流式传输引擎125最小化由于流缓冲器绕过一级数据高速缓存123的高速缓存未命中停顿的数目。流式传输引擎125减少所需的标量运算的数目以维持循环。流式传输引擎125管理地址指针。流式传输引擎125针对其它计算处置自动地释放地址产生指令时隙及D1单元224及D2单元226的地址产生。
中央处理单元核心110对指令管线进行操作。在下文进一步描述的固定长度的指令包中提取指令。所有指令要求用于提取及解码的相同数目个管线阶段,但要求不同数目的执行阶段。
图11说明以下管线阶段:程序提取阶段1110、调度及解码阶段1110及执行阶段1130。程序提取阶段1110对于所有指令包含三个级。调度及解码阶段对于所有指令包含三个级。执行阶段1130包含依赖于指令的一个到四个级。
提取阶段1110包含程序地址产生级1111(PG)、程序存取级1112(PA)及程序接收级1113(PR)。在程序地址产生级1111(PG)期间,程序地址产生于CPU中,且读取请求发送到一级指令高速缓存121的存储器控制器。在程序存取级1112(PA)期间,一级指令高速缓存121处理请求,存取其存储器中的数据,为将提取分组发送到CPU边界。在程序接收级1113(PR)期间,CPU寄存所述提取包。
指令始终一次提取十六个32位宽时隙,构成提取包。图12说明单个提取包的16个指令1201到1216。提取分组与512位(16字)边界对准。优选实施例使用固定的32位指令长度。固定长度指令由于一些原因是有利的。固定长度指令易于实现解码器对准。恰当对准的指令提取可将多个指令加载到并行指令解码器中。所述恰当对准的指令提取在存储于与固定指令分组提取耦合的存储器(在512位边界上对准的提取分组)中时可通过预定指令对准实现。对准指令提取准许并行解码器对设定指令大小的提取位的操作。可变长度指令在其可经解码之前要求定位每一指令边界的初始步骤。固定长度指令集通常准许指令字段的更规则布局。这简化每一解码器的构造,其对于广发布VLIW中央处理器为一优点。
个别指令的执行部分地受每条指令中的p位控制。此p位优选地为32位宽时隙的位0。p位确定指令是否与下一指令并行执行。指令从较低地址到较高地址经扫描。如果指令的p位为1,则下一指令(较高存储器地址)与(同一周期中的)所述指令并行地执行。如果指令的p位为0,则下一指令在所述指令之后的周期中执行。
中央处理单元核心110及一级指令高速缓存121管线彼此解耦。取决于外部环境,例如是一级指令高速缓存121中存在命中还是二级组合式高速缓存130中存在命中,从一级指令高速缓存121返回的提取分组可耗费不同时钟周期数。因此,程序存取级1112(PA)可耗费若干时钟周期而非如在其它级中的1个时钟周期。
并行执行的指令构成执行包。在优选实施例中,执行包可含有至多十六个指令。执行包中无两个指令可使用相同功能单元。时隙为五种类型中的一种:1)在中央处理单元核心110的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225、D2单元226、L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)中的一个上执行的独立指令;2)无单位指令,例如NOP(无操作)指令或多重NOP指令;3)分支指令;4)常量字段扩展;及5)条件码扩展。这些时隙类型中的一些将在下文进一步描述。
调度及解码阶段1110包含指令调度到适当执行单元级1121(DS)、指令预解码级1122(D1);及指令解码、操作数读取级1222(D2)。在指令调度到适当执行单元级1121(DS)期间,提取包分裂成执行包且指派给适当功能单元。在指令预解码阶段1122(D1)期间,源寄存器、目的地寄存器及相关联路径经解码用于执行功能单元中的指令。在指令解码操作数读取级1222(D2)期间,更详细地进行单元解码,以及从寄存器组读取操作数。
执行阶段1130包含执行级1131到1135(E1到E5)。不同类型的指令需要不同数目的这些级以完成其执行。管线的这些级在理解CPU周期边界处的装置状态中起重要作用。
在执行1级1131(E1)期间,评估指令条件且对操作数进行操作。如图11中所说明,执行1级1131可从流缓冲器1141及示意性地展示为1142的寄存器组中的一个接收操作数。对于加载及存储指令,地址产生经执行且地址修改写入寄存器组中。对于分支指令,PG级中的分支提取包受影响。如图11中所展示,加载及存储指令存取存储器在本文中示意性地展示为存储器1151。对于单周期指令,结果写入目标寄存器组中。此假设指令的任何条件评估为真。如果条件评估为假,则指令在执行1级1131之后并不写入任何结果或具有任何管线操作。
在执行2级1132(E2)期间,加载指令将地址发送到存储器。存储指令将地址及数据发送到存储器。使结果饱和的单周期指令在饱和发生时设定控制状态寄存器(CSR)中的SAT位。对于2周期指令,结果写入目标寄存器组中。
在执行3级1133(E3)期间,执行数据存储器存取。使结果饱和的任何乘法指令在饱和发生时设定控制状态寄存器(CSR)中的SAT位。对于3周期指令,结果写入目标寄存器组中。
在执行4级1134(E4)期间,加载指令将数据引入到CPU边界。对于4周期指令,结果写入目标寄存器组中。
在执行5级1135(E5)期间,加载指令将数据写入寄存器中。这在图11中通过从存储器1151到执行5级1135的输入示意性地说明。
图13说明由实例实施例使用的功能单元指令的指令译码1300的一实例。其它指令译码可行且在实例实施例的范围内。每条指令由32个位组成且控制可单独控制的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225、D2单元226、L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)中的一个的操作。位字段定义如下。
creg字段1301(位29到31)及z位1302(位28)是在条件性指令中使用的任选字段。这些位用于条件性指令以识别预测寄存器及条件。z位1302(位28)指示预测是基于预测寄存器中的零还是非零。如果z=1,则等同性测试等于零。如果z=0,则测试非零。creg=0且z=0的情况被视为总为真,以允许无条件性指令执行。creg字段1301及z字段1302如表1中所示在指令中编码。
表1
Figure BDA0002446281490000151
执行条件性指令的条件是存储于指定数据寄存器中的值。此数据寄存器处于用于所有功能单元的全局标量寄存器组211中。应注意,z位列中的“z”是指上文提到的零/非零比较选择,且“x”为无关状态。此译码可仅将16个全局寄存器的子集指定为预测寄存器。作出此选择以将位保持在指令译码中。应注意,无条件性指令并不具有这些任选的位。对于无条件性指令,字段1301及1302中的这些位(28到31)优选地用作额外操作码位。
dst字段1303(位23到27)将对应寄存器组中的寄存器指定为指令结果的目的地。
src2/cst字段1304(位18到22)取决于指令操作码字段具有若干含义(位4到12用于所有指令且另外位28到31用于无条件性指令)。第一含义将对应寄存器组的寄存器指定为第二操作数。第二含义为立即常量。取决于指令类型,这被视为无符号整数且零扩展到指定数据长度或被视为有符号整数且符号扩展到指定数据长度。
src1字段1305(位13到17)将对应寄存器组中的寄存器指定为第一源操作数。
用于所有指令的操作码字段1306(位4到12)(及另外用于无条件性指令的位28到31)指定指令的类型且指明适当指令选项。此包含所使用的功能单元及所执行的操作的明确标识。除了下文详述的指令选项以外,对操作码的详细解释超出实例实施例的范围。
e位1307(位2)仅用于立即常量指令,其中常量可扩展。如果e=1,则立即常量以下文详述的方式扩展。如果e=0,则立即常量不扩展。在这种情况下,立即常量由src2/cst字段1304(位18到22)指定。应注意,此e位1307仅用于一些指令。因此,使用恰当译码,此e位1307可从不需要其的指令省略,且此位用作额外操作码位。
s位1307(位1)指明标量数据路径侧A115或向量数据路径侧B116。如果s=0,则选择标量数据路径侧A115。此将功能单元限于图2中所说明的L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226及对应寄存器组。类似地,s=1选择向量数据路径侧B116,从而将功能单元限于图2中所说明的L2单元241、S2单元242、M2单元243、N2单元244、P单元246及对应寄存器组。
p位1308(位0)标记执行包。p位确定指令是否与后续指令并行执行。p位指令从较低地址到较高地址经扫描。如果对于当前指令p=1,则下一指令与当前指令并行执行。如果对于当前指令p=0,则下一指令在当前指令之后的周期中执行。并行执行的所有指令构成执行包。执行包可含有至多十二个指令。执行包中的每条指令必须使用不同功能单元。
存在两个不同条件码扩展时隙。每一执行分组可含有这些独特32位条件码扩展时隙中的每一个,所述每一个时隙含有用于相同执行分组中的指令的4位creg/z字段。图14说明条件码扩展时隙0的译码,且图15说明条件码扩展时隙1的译码。
图14说明具有32个位的条件码扩展时隙0的译码。字段1401(位28到31)指定指派给相同执行分组中的L1单元221指令的4个creg/z位。字段1402(位27到24)指定指派给相同执行包中的L2单元241指令的4个creg/z位。字段1403(位19到23)指定指派给相同执行分组中的S1单元222指令的4个creg/z位。字段1404(位16到19)指定指派给相同执行包中的S2单元242指令的4个creg/z位。字段1405(位12到15)指定指派给相同执行分组中的D1单元225指令的4个creg/z位。字段1406(位8到11)指定指派给相同执行包中的D2单元245指令的4个creg/z位。字段1407(位6及7)未使用/保留。字段1408(位0到5)经译码一组独特位(CCEX0)以识别条件码扩展时隙0。一旦检测到条件码扩展时隙0的此唯一ID,对应creg/z位用于控制相同执行分组中的任何L1单元221、L2单元241、S1单元222、S2单元242、D1单元224及D2单元225指令的条件执行。如表1中所示解释这些creg/z位。如果对应指令为有条件的(包含creg/z位),则条件码扩展时隙0的对应位重写指令中的条件码位。应注意,无执行包可具有引导到特定执行单元的多于一个指令。无指令的执行分组可含有多于一个条件码扩展时隙0。因此,creg/z位到功能单元指令的映射为明确的。设定creg/z位等于“0000”使指令为无条件的。因此,经恰当译码的条件码扩展时隙0可使一些对应指令有条件且一些无条件。
图15说明具有32个位的条件码扩展时隙1的译码。字段1501(位28到31)指定指派给相同执行分组中的M1单元223指令的4个creg/z位。字段1502(位27到24)指定指派给相同执行包中的M2单元243指令的4个creg/z位。字1503(位19到23)指定指派给相同执行包中的C单元245指令的4个creg/z位。字段1504(位16到19)指定指派给相同执行包中的N1单元224指令的4个creg/z位。字段1505(位12到15)指定指派给相同执行包中的N2单元244指令的4个creg/z位。字段1506(位5到11)未使用/保留。字段1507(位0到5)经译码一组独特位(CCEX1)以识别条件码扩展时隙1。一旦检测到条件码扩展时隙1的此唯一ID,对应creg/z位用于控制相同执行分组中的任何M1单元223、M2单元243、C单元245、N1单元224及N2单元244指令的条件执行。如表1中所示解释这些creg/z位。如果对应指令为有条件的(包含creg/z位),则条件码扩展时隙1的对应位重写指令中的条件码位。应注意,无执行包可具有引导到特定执行单元的多于一个指令。无指令的执行分组可含有多于一个条件码扩展时隙1。因此,creg/z位到功能单元指令的映射为明确的。设定creg/z位等于“0000”使指令为无条件的。因此,经恰当译码的条件码扩展时隙1可使一些指令有条件且一些无条件。
如上文结合图13所描述,条件码扩展时隙0及条件码扩展时隙1两者皆包含用以限定执行包的p位是可行的。在优选实施例中,如图14和15中所说明,码扩展时隙0及条件码扩展时隙1优选地具有始终编码为1的位0(p位)。因此,条件码扩展时隙0或条件码扩展时隙1都不可在执行分组的最末指令时隙中。
存在两个不同常量扩展时隙。每一执行分组可含有这些独特的32位常量扩展时隙中的每一个,所述每一个时隙含有待与5位常量字段1305串接为高阶位以形成32位常量的27个位。如上文的指令译码描述中所提及,仅一些指令将src2/cst字段1304限定为常量而非源寄存器标识符。所述指令中的至少一些可使用常量扩展时隙来将此常量扩展到32个位。
图16说明常量扩展时隙0的字段。每一执行分组可包含常量扩展时隙0的一个个例及常量扩展时隙1的一个个例。图16说明包含两个字段的常量扩展时隙0 1600。字段1601(位5到31)构成包含目标指令scr2/cst字段1304作为五个最低有效位的经扩展32位常量的27个最高有效位。字段1602(位0到4)经译码一组独特位(CSTX0)以识别常量扩展时隙0。在优选实施例中,常量扩展时隙0 1600可仅用于扩展相同执行分组中的L1单元221指令、D1单元225指令中的数据、S2单元242指令、D2单元226指令中的偏移、M2单元243指令、N2单元244指令、分支指令或C单元245指令中的一者的常量。除了位0到4经译码一组独特位(CSTX1)以识别常量扩展时隙1之外,常量扩展时隙1类似于常量扩展时隙0。在优选实施例中,常量扩展时隙1可仅用于扩展相同执行分组中的L2单元241指令、D2单元226指令中的数据、S1单元222指令、D1单元225指令中的偏移、M1单元223指令或N1单元224指令中的一者的常量。
如下使用常量扩展时隙0及常量扩展时隙1。目标指令必须属于准许常量规范的类型。常规上,此通过用如上文对于scr2/cSt字段1304所述的常量的最低有效位替换一个输入操作数寄存器规范字段来实施。指令解码器113从指令操作码位确定此情况,其被称为立即字段。目标指令还包含一个常量扩展位(e位1307),所述常量扩展位专用于用信号表示指定常量未扩展(优选地,常量扩展位=0)或所述常量扩展(优选地,常量扩展位=1)。如果指令解码器113检测到常量扩展时隙0或常量扩展时隙1,则其进一步检查用于对应于所检测到的常量扩展时隙的指令的所述执行包内的其它指令。仅在一个对应指令具有等于1的常量扩展位(e位1307)时才进行常量扩展。
图17为说明常量扩展的部分框图1700。图17假设指令解码器113在相同执行分组中检测到常量扩展时隙及对应指令。指令解码器113将来自常量扩展时隙的27个扩展位(位字段1601)及来自对应指令的5个常量位(位字段1305)供应到串接器1701。串接器1701由这两个部分形成单个32位字。在优选实施例中,来自常量扩展时隙的27个扩展位(位字段1601)为最高有效位,且5个常量位(位字段1305)为最低有效位。将此组合式32位字供应到多路复用器1702的一个输入端。来自对应指令字段1305的5个常量位将第二输入供应到多路复用器1702。多路复用器1702的选择受常量扩展位的状态控制。如果常量扩展位(e位1307)为1(经扩展),则多路复用器1702选择级联的32位输入。如果常量扩展位为0(未扩展),则多路复用器1702从对应指令字段1305选择5个常量位。多路复用器1702将此输出供应到符号扩展单元1703的输入端。
符号扩展单元1703由来自多路复用器1703的输入形成最终操作数值。符号扩展单元1703接收控制输入标量/向量及数据大小。标量/向量输入指示对应指令是标量指令还是向量指令。数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可仅执行标量指令。涉及这些功能单元中的一个的任何指令为标量指令。数据路径侧B功能单元L2单元241、S2单元242、M2单元243、N2单元244及C单元245可执行标量指令或向量指令。指令解码器113从操作码位确定指令是标量指令还是向量指令。P单元246可仅执行标量指令。数据大小可为8位(字节B)、16位(半字H)、32位(字W)、64位(双字D)、四字(128位)数据或半向量(256位)数据。
表2列出针对各种选项的符号扩展单元1703的操作。
表2
Figure BDA0002446281490000181
Figure BDA0002446281490000191
如上文结合图13所描述,常量扩展时隙0及常量扩展时隙1两者皆包含用以限定执行包的p位是可行的。在优选实施例中,如就条件码扩展时隙来说,常量扩展时隙0及常量扩展时隙1优选地具有始终编码为1的位0(p位)。因此,常量扩展时隙0或常量扩展时隙1都不可在执行分组的最末指令时隙中。
执行分组包含常量扩展时隙0或1及多于一个对应指令标记常量扩展(e位=1)是技术上可行的。对于常量扩展时隙0,这将意味着执行分组中的L1单元221指令、D1单元225指令中的数据、S2单元242指令、D2单元226指令中的偏移、M2单元243指令或N2单元244指令中的多于一个的e位为1。对于常量扩展时隙1,这将意味着执行分组中的L2单元241指令、D2单元226指令中的数据、S1单元222指令、D1单元225指令中的偏移、M1单元223指令或N1单元224指令中的多于一个的e位为1。预期将相同常量扩展供应到多于一个指令并非有用功能。因此,在一个实施例中,指令解码器113可确定此情况为无效操作且不支持。替代地,可用应用于每一对应功能单元指令标记常量扩展的常量扩展时隙的扩展位支持此组合。
特殊向量预测指令使用预测寄存器组234中的寄存器来控制向量运算。在当前实施例中,所有这些SIMD向量预测指令对选定数据大小进行操作。数据大小可包含字节(8位)数据、半字(16位)数据、字(32位)数据、双字(64位)数据、四字(128位)数据及半向量(256位)数据。预测寄存器的每一位控制SIMD操作是否在数据的对应字节上执行。P单元245的操作准许基于多于一个向量比较的各种复合向量SIMD操作。举例来说,可使用两个比较进行范围确定。候选向量与具有打包在第一数据寄存器内的范围的最小值的第一向量参考相比较。候选向量与具有打包在第二数据寄存器内的范围的最大值的第二参考向量进行第二比较。两个所得预测寄存器的逻辑组合将准许向量条件操作以确定候选向量的每一数据部分在范围内还是超出范围。
L1单元221、S1单元222、L2单元241、S2单元242及C单元245通常在单指令多数据(SIMD)模式中操作。在此SIMD模式中,相同指令应用于来自两个操作数的打包数据。每一操作数保存置于预定时隙中的多个数据元素。通过数据边界处的进位控制来启用SIMD操作。这类进位控制使得能够对不同数据宽度进行操作。
图18说明进位控制。AND门1801接收操作数宽算术逻辑单元内的位N的进位输出(对于标量数据路径侧A115功能单元64位且对于向量数据路径侧B116功能单元512位)。AND门1801还接收下文将进一步描述的进位控制信号。将AND门1801的输出供应到操作数宽算术逻辑单元的位N+1的进位输入。例如AND门1801的AND门设置在可能的数据边界处的每一对位之间。举例来说,对于8位数据,此类AND门将处于位7与8、位15与16、位23与24等之间。每一这类AND门接收对应进位控制信号。如果数据大小为最小值,则每一进位控制信号为0,从而有效地阻挡相邻位之间的进位发射。如果所选数据大小需要两个算术逻辑单元部分,则对应进位控制信号为1。下文表3展示在例如由向量数据路径侧B116功能单元使用的512位宽操作数的情况下的实例进位控制信号,所述操作数可划分成8位、16位、32位、64位、128位或256位部分。在表3中,较高32位控制较高位(位128到511)进位,且较低32位控制较低位(位0到127)进位。不需要控制最高有效位的进位输出,因此仅要求63个进位控制信号。
表3
Figure BDA0002446281490000201
常规上,对为2的整数幂(2N)的数据大小执行操作。然而,此进位控制技术不限于2的整数幂。此技术适用于其它数据大小及其它操作数宽度。
图19说明展示中央处理单元核心110与程序存储器控制器1930之间的协作的一个视图。中央处理单元核心110定期产生其操作所需指令的地址。中央处理单元核心110将指示所发射请求地址有效的Address_Valid信号发射到程序存储器控制器1930。将以下文描述的方式进一步使用此情况。
在优选实施例中,中央处理单元核心110对虚拟存储器地址操作。也在优选实施例中,高速缓存于一级指令高速缓存121中的指令通过这些虚拟地址进行存取。如图19中所说明,在此实例实施例中,此虚拟地址以48位表达。在优选实施例中,二级组合式指令/数据高速缓存130及其它存储器对物理地址进行操作,从而需要虚拟地址与物理地址之间的转换以使二级组合式指令/数据高速缓存130服务于对一级指令高速缓存121的任何高速缓存未命中。
程序存储器控制器1930包含用于地址转译的微表后备缓冲区(μTLB)1931。如果与标记随机存取存储器1934的标记比较确定所请求提取包不存储在一级指令高速缓存121中(未命中),则从二级组合式指令/数据高速缓存130请求此提取包。因为一级指令高速缓存121被虚拟地标记且二级组合式指令/数据高速缓存130被实体地标记,故此需要地址转译。虚拟地址供应到微表后备缓冲区1931。通常使用具有虚拟地址的最高有效位及物理地址的对应最高有效位的表执行地址转译。在此实例中,在检测到正确地址对时,地址转译用来自所述表的最高有效物理地址位代替所请求地址的最高有效虚拟地址位。通常,虚拟地址的最低有效位与物理地址的最低有效位相同。在此实例中,完整虚拟地址/物理地址转译表存储在存储器管理单元(MMU)1920中。另外,一级指令高速缓存121包含微表后备缓冲区1931,其以高速缓存式方式存储地址转译表条目中的一些的子集。在服务于地址转译时,将所请求虚拟地址与存储在微表后备缓冲区1931中的地址转译表条目进行比较。如果虚拟地址匹配微表后备缓冲区1931中的表条目,则匹配的表条目用于地址转译。如果虚拟地址不匹配微表后备缓冲区1931中的任何表条目,则从存储器管理单元1920提取这些地址转译参数。微表后备缓冲区1931将为虚拟地址请求的页转译条目发射到存储器管理单元1920。存储器管理单元1920找到对应地址转译条目,且将此条目传回到微表后备缓冲区1931。微表后备缓冲区1931存储此新提取的转译条目,通常逐出当前存储的条目以腾出空间。在地址转译之后,物理地址传递到二级组合式指令/数据高速缓存130。
分支预测器1911将虚拟提取地址供应到程序存储器控制器1930以及预取计数。分支预测通常存储程序代码在执行时遇到的每一条件性分支指令的存储器地址。此使得分支预测器1911能够辨识其遇到的条件性支路。采取/未采取分支预测及动态分支预测中使用的任何分支历史与条件性指令地址相关联。由于包含于分支预测器1911内的存储器及电路的量的限制,此分支预测信息将始终限于程序代码的相当小的区段。然而,基于当前指令存储器位置及由于分支预测而经由程序代码预测的路径,分支预测器1911可确定在当前指令提取包存取之后、在预测支路将脱离此线性路径之前将使用的线性后续指令提取包的预测数目。此数目称作提取包计数或预取计数。
中央处理单元核心110与为程序存储器控制器1930的一部分的仿真支持单元1932交换仿真信息。
中央处理单元核心110从程序存储器控制器1930接收呈指令提取包形式的指令。如图19中所说明,在优选实施例中,这些提取包为512位(64字节)。在优选实施例中,一级指令高速缓存121,二级组合式指令/数据高速缓存130及任何其它存储器存储与64字节边界对准的提取包。取决于存储指令之处,可从一级指令高速缓存121、二级组合式指令/数据高速缓存130或其它存储器召回此提取包。
程序存储器控制器1930比较从中央处理单元核心110接收的提取地址的一部分与标记随机存取存储器1934中的条目。标记随机存取存储器1934存储用于存储在一级指令高速缓存121中的每一高速缓存行的标记数据。将提取地址的对应最高有效位与标记随机存取存储器1934中的每一组标记进行比较。提取地址的这些位与任何标记之间的匹配(命中)指示存储在提取地址处的指令在对应于匹配标记的位置处存储在一级指令高速缓存121中。在此类匹配时,程序存储器控制器1930从一级指令高速缓存121召回所述指令以作为提取包供应到中央处理单元核心110。
提取地址的这些位与任何标记之间的不匹配(未命中)指示存储在提取地址处的指令不存储在一级指令高速缓存121中。程序存储器控制器1930将高速缓存请求发射到联合存储器控制器(UMC)1940以搜寻二级组合式指令/数据高速缓存130(图1)中的指令。高速缓存请求伴随着从虚拟地址转译的物理地址,如上文所论述。如果此地址处的指令存储在二级组合式指令/数据高速缓存130中(命中),则从此高速缓存服务于所述请求。否则,将所述请求供应到较高级存储器(未说明)。
程序存储器控制器1930包含一致性支持单元1935。相干性支持单元1935确保数据移动保留最近指令以供供应到中央处理单元核心110。
图20说明中央处理单元核心110与程序存储器控制器1930之间的接口的另一视图。在优选实施例中,一级指令高速缓存121具有32KB的固定高速缓存大小。一级指令高速缓存121最大化代码执行的性能且促进以快时钟速率提取指令。一级指令高速缓存121隐藏与执行存储在较慢系统存储器中的代码相关联的延时。每一中央处理单元核心110与单独的程序存储器控制器1930介接,所述程序存储器控制器与用于二级组合式指令/数据高速缓存130的联合存储器控制器1940介接。
在优选实施例中,一级指令高速缓存121及程序存储器控制器1930包含以下属性。其包括32KB 4通道指令高速缓存。其为利用49位虚拟地址虚拟地编索引且虚拟地标记的高速缓存。其包含具有集成式微表后备缓冲区1931的虚拟化支持。高速缓存行具有64字节的大小。在优选实施例中,此为与提取包相同的大小。其可将多达8对提取包请求排入联合存储器控制器1940的队列,以实现程序管线中的预取。
中央处理单元核心110在每条指令提取请求时发射提取地址及提取包计数。提取地址伴随着指示提取地址是否有效的Address_Valid信号。提取包计数由分支预测器1911(图19)产生。提取包计数指示从给定地址开始待传回到中央处理单元核心110的连续64字节高速缓存行的预测数目。每当到记分板的传入请求可通过先前请求的第二数据阶段满足时,程序存储器控制器1930预取有限状态机2024对于包中的每一者发布预取且将其在记分板2041中组合成对。提取包计数0指示中央处理单元核心110对程序存储器控制器1930提取64字节行的请求不具有提前提取。中央处理单元核心110必须请求清除程序存储器控制器1930以退出增量模式且恢复正常操作。
图21说明如何剖析提取地址2100以供由程序存储器控制器1930处置。提取地址2100划分成:偏移2101;集合2102;以及标记2103。一级指令高速缓存121中的高速缓存行为64字节长。假定存储器为字节可寻址的,则一级指令高速缓存121的高速缓存行内的位置充当地址的六个最低有效位的代理(偏移2101)。集合位2102直接对应于一级指令高速缓存121内的物理位置。如果一级指令高速缓存121存储指令,则其处于对应于集合位2102的位置。标记位2103经存储以供与提取地址进行比较。匹配(命中)指示经寻址指令存储在一级指令高速缓存121中。如果发现不匹配(未命中),则必须从不同于一级指令高速缓存121的另一来源获得所请求提取包的指令。
程序存储器控制器1930在多个指令阶段中操作。图20说明阶段2010、2020、2030、2040及2050。操作在不同提取请求的阶段2010、2020、2030、2040及2050期间同时发生。
指令提取单元111(中央处理单元核心110的部分,参见图1)确定下一条指令提取包的存储器地址。此提取地址在阶段2010与指示此所请求地址有效的Address_Valid信号一起主动地供应到多路复用器2011的一个输入端。此提取地址还在阶段2020主动地供应到提取地址寄存器2022。作为分支预测的部分,指令提取单元111还在阶段2020中主动地供应提取包计数寄存器2023。
多路复用器2011与2012的组合将三个地址中的一者供应到标记随机存取存储器1934用于标记比较。多路复用器2011在从中央处理单元核心110接收的提取地址与来自预取有限状态机2024的预取地址之间进行选择。上文描述此预取地址的形成。多路复用器2012在多路复用器2011的输出与程序存储器控制器记分板2041中对应于来自联合存储器控制器1940的传回的虚拟地址之间进行选择。从程序存储器控制器记分板2041存取具有最大优先级。从中央中央处理器单元核心110存取具有次高优先级。从预取有限状态机2024存取具有最低优先级。
在阶段2020期间,预取有限状态机(FSM)2024视情况产生预取请求。预取请求包含从中央处理单元核心110请求地址及如上所述的提取包计数计算的地址。预取有限状态机2024将下一预取地址供应到多路复用器2011。预取有限状态机2024将微表后备缓冲区请求供应到微表后备缓冲区2035以在其为不同于来自中央处理单元核心110的初始请求的页的情况下获得用于预取地址的页转译数据。
也在阶段2020期间,由多路复用器2011及2012在先前阶段2010中选择的地址供应到标记随机存取存储器1934以开始标记比较。
在阶段2030中,完成标记比较。在图20中说明的实例中,标记比较2031单独地比较所呈现地址的标记部分2103与存储在标记随机存取存储器1934的四个存储体中的数据。所述比较产生命中或未命中。命中指示所请求地址处的指令存储在存储器121中。在此情况下,多路复用器2036将这些指令从存储器121供应到中央处理单元核心110。
程序存储器控制器1930的标记比较获得通道信息及关于所请求行的信息。对于高速缓存命中,需要通道信息来定位所请求提取包。对于高速缓存未命中,通道信息确定通过从较高层级存储器传回的数据收回(覆写)的高速缓存行。在一级指令高速缓存未命中时,程序存储器控制器1930将此通道信息与所请求行的其它数据存储在记分板2041中。记分板2041存储Address_Valid信号以在需求存取与预取存取之间进行区分。需求存取(来自中央处理单元核心110)伴随着指示请求地址有效的Address_Valid信号。预取存取(来自预取有限状态机2024)不伴有此Address_Valid信号。记分板2041将用于每一存取的此Address_Valid信号存储到二级组合式指令/数据高速缓存130。此充当对二级组合式指令/数据高速缓存130的请求是响应于需求提取还是预取。下文将进一步描述此区分的重要性。一旦数据从二级组合式指令/数据高速缓存131传回,则程序存储器控制器1930咨询记分板2041以确定存储哪一通道。一旦产生请求就使待分配行(不管是需求还是预取)失效,以在所请求行的传回数据待决时避免较新存取的假命中。
在未命中时,在阶段2040中操作的程序存储器控制器1930经由联合存储器控制器1940从二级组合式指令/数据高速缓存130搜寻存储在所述地址处的指令。此包含:在程序存储器控制器记分板2041中建立条目;从由多路复用器2034选择的FIFO替换单元2033接收通道信息;以及从微表后备缓冲区1931接收经转译物理地址。程序存储器控制器记分板2041对于存储在此经转译物理地址处的指令产生对联合存储器控制器1940的请求信号。
程序存储器控制器1930不搜索存储在记分板2041中的飞行中请求以获得先前请求之间的可能匹配。因此,有可能对于相同高速缓存行的两个或更多个请求分配到相同集合的不同通道。此可能在在未来请求相同集合的情况下在标记比较时造成两个或更多个匹配。每当此情况发生时,程序存储器控制器1930使重复标记及对应高速缓存通道无效以释放所述通道供用于新条目。此失效仅在存取具有重复标记的集合以获得对另一请求的命中/未命中决策时才发生。在优选实施例中,程序存储器控制器1930保持最高有效的有效通道(即,由集合的有效位的MSB表示的通道),而使其它通道无效。举例来说,如果通道0与通道2具有相同标记且有效,则通道2保持,且通道0失效。L1P不使仿真存取上的重复标记失效。
在阶段2050(其可取决于所搜寻指令的位置而包含多于一个阶段)中,联合存储器控制器1940服务于指令请求。此过程包含确定所请求指令是否存储在二级组合式指令/数据高速缓存130中。在高速缓存命中二级组合式指令/数据高速缓存130时,联合存储器控制器1940从二级组合式指令/数据高速缓存130供应指令。在高速缓存未命中二级组合式指令/数据高速缓存130时,联合存储器控制器1940从另一存储器搜寻这些指令。此另一存储器可为外部第三级高速缓存或及外部主存储器。传回所请求指令所需的阶段数目取决于其高速缓存于二级组合式指令/数据高速缓存130中、其高速缓存于外部三级高速缓存还是其存储在外部主存储器中。
从联合存储器控制器1940传回的所有指令存储在存储器121中。记分板2014根据对应于传回识别码的所存储数据而供应用于此存储的位置数据(包括通道数据)。因此,这些指令可用于稍后由中央处理单元核心110使用。如果触发对联合存储器控制器1940的请求的指令请求直接来自中央处理单元核心110(需求提取),则多路复用器2036同时将所传回的指令直接供应到中央处理单元核心110。如果触发对联合存储器控制器1940的请求的请求为预取请求,则多路复用器2036阻止将这些指令供应到中央处理单元核心110。这些指令基于中央处理单元核心110的预期未来需要而仅存储在存储器121中。如上所述,记分板2041存储的信息使得能够确定传回数据是响应于需求提取还是预取。
图22为说明联合存储器控制器1940的相关部分的部分示意图。在一级高速缓存未命中时,程序存储器控制器1930将所请求地址供应到联合存储器控制器1940。
联合存储器控制器1940从程序存储器控制器1930接收呈所请求地址形式的请求。程序存储器控制器1930在高速缓存未命中一级指令高速缓存121时作出这些请求。存储在所请求地址处的指令不存储在一级指令高速缓存121中,且针对二级联合指令/数据高速缓存130进行搜寻。因此,程序存储器控制器1930将所请求地址发送到联合存储器控制器1940。
所请求地址发射到标记2201。常规上,将所请求地址与存储在标记2201中的部分地址进行比较以确定二级组合式指令/数据高速缓存130是否在所请求地址处存储指令。在检测到不匹配(未命中)时,联合存储器控制器1940将服务请求发射到下一级存储器。此下一级存储器可为外部三级高速缓存或外部主存储器。此下一级存储器将最终传回所述所请求地址处的数据或指令。此传回数据或指令存储在二级组合式指令/数据高速缓存130中。此存储通常涉及逐出且替换二级组合式指令/数据高速缓存130中的另一条目。接着从二级组合式指令/数据高速缓存130服务于原始请求。
在检测到匹配(命中)时,标记2201将地址的指示发射到二级组合式指令/数据高速缓存130。此指示使得二级组合式指令/数据高速缓存能够定位及召回对应于所请求地址的高速缓存行。此经召回高速缓存行存储在寄存器2201中。
寄存器2202被说明为具有上半部及下半部。二级组合式指令/数据高速缓存130中的高速缓存行大小为一级指令高速缓存121中的高速缓存行大小的两倍。因此,从二级组合式指令/数据高速缓存130召回一个高速缓存行可供应用于一级指令高速缓存121的两个高速缓存行。多路复用器2203及多路复用器控制器2204选择二级组合式指令/数据高速缓存行的上半部或下半部用于供应到程序存储器控制器1930。
多路复用器控制器2204从程序存储器控制器1930接收所请求地址。在大部分情形中,此地址的一个位控制多路复用器2203的选择。如果此地址位为0,则所请求地址处于存储在寄存器2202中的二级组合式指令/数据高速缓存行的下半部中。多路复用器控制器2204致使多路复用器2202选择寄存器2203的下半部用于供应到程序存储器控制器1930。如果此地址位为1,则所请求地址处于存储在寄存器2202中的二级组合式指令/数据高速缓存行的上半部中,且多路复用器控制器2204致使多路复用器2202选择此上半部。在优选实施例中,一级指令高速缓存121中的高速缓存行为64字节,且二级组合式指令/数据高速缓存130中的高速缓存行为128字节。对于此高速缓存行大小选择,控制地址位为位7,因为27等于128。
高速缓存预取的目标为预测中央处理单元核心110使指令的每一提取包在其被需要之前存储在一级指令高速缓存121中的需要。所述目标需要确定中央处理单元核心110所需的可能指令且在对所述指令提取包的需求提取之前调用并存储这些指令于一级指令高速缓存121中。预取有限状态机2024采用经由指令码的线性路径,且预取此线性路径上的指令提取包。
此技术可能造成问题。一个潜在问题取决于预取及对应需求提取的定时。有可能在对相同一级指令高速缓存121高速缓存行的预取待决时接收对指令包的需求提取。此类需求提取将产生一级指令高速缓存121中的标记未命中。在不检查此危险的情况下,高速缓存系统将产生对二级组合式指令/数据高速缓存130的提取以服务于此标记未命中。这将产生冗余存储器提取操作,且挫败预取的目的。
图23为根据实例实施例的操作2300的流程图。操作2300仅说明程序存储器控制器1930及联合存储器控制器1940的与实例实施例有关的操作部分。与此方面有关的操作在开始框2301处在中央处理单元需求指令提取时开始。
测试框2302确定仅对针对标记匹配提交的指令提取的提取地址是否导致程序存储器控制器190内的未命中。如果提取地址不为未命中(测试框2302处为否),则实例实施例不适用。流程继续进行到继续框2303以进行不与实例实施例有关的提取过程的其它方面。在此情况下,如果提取地址不为未命中,则其为命中。所搜寻的指令存储在一级指令高速缓存121中。从一级指令高速缓存121服务于此提取。
如果标记比较为未命中(在测试框2302处为是),则框2304确定经分配以存储一级指令高速缓存121未命中的服务中的传回数据的通道。存储在所分配通道中的当前指令被舍弃以为传回数据腾出空间。高速缓存固有地小于其镜像存储器。因此,高速缓存内的每一存储位置必须能够存储来自多个主存储器位置的指令。常规上,高速缓存提供称作通道的多个位置,其中可存储混叠到相同高速缓存行的存储器位置。在待收回高速缓存行以为来自主存储器的指令腾出空间时,选择替换一个高速缓存通道。常规技术选择替换最近最少使用的高速缓存通道。高速缓存是基于地点原理;地址在最近使用的指令附近的指令较之于较远指令更可能在未来使用。因此,最近最少使用的高速缓存通道(时间上较远)较之于最近使用的指令不大可能在未来使用。其它替换策略是可行的。替换/分配策略应用于高速缓存的当前条件,且选择用于替换的通道。此过程称为分配。
框2305比较此通道确定与用于记分板2041中请求的待决高速缓存服务的类似通道确定。图24为说明此过程的部分示意图。记分板2041包含多个条目,每一待决的一级指令高速缓存服务请求存在一个。此实例实施例包含八个记分板2041条目。记分板2014中的每一条目包含:请求地址2401;请求识别码(RQID)2402,其指派到用于跟踪的每一待决的服务请求;用于服务请求的需求提取/预取(D/P)2403指示符;以及用于服务请求的所指派通道2404。通道比较器2405比较当前需求请求的所确定通道与记分板2041中的每一待决请求的通道。在实例实施例最为适用的条件(对相同指令提取包的需求提取为待决预取)下,待决预取的所确定通道极有可能与当前需求提取的所确定通道相同。
测试框2306确定框2305的通道比较是否为命中。如果当前需求提取的所确定通道不匹配任何待决服务请求的通道(在测试框2306处为否),则记分板2041的待决服务请求都不是用于与当前需求请求相同的地址。通道比较器2405产生全部未命中信号。流程继续进行到继续框2307以进行提取过程的不与实例实施例有关的其它方面。在此情况下,无待决服务请求对应于当前需求请求。这些指令通过对二级组合式指令/数据高速缓存130的服务请求来搜寻。
如果当前需求提取的所确定通道匹配任何待决服务请求的通道(在测试框2306处为是),则测试框2308确定这些通道命中记分板条目中的任一者是否具有匹配当前需求请求的请求地址的请求地址。在图24中,通道比较器2405将比较启用信号发射到地址比较器2406,使得能够比较产生通道命中的记分板条目。地址比较器2410包含数目等于记分板2041中的条目数目的个别地址比较器2411、2412、2413...2418。每一个别地址比较器2411、2412、2413...2418使第一输入端从记分板2041中的对应条目接收请求地址及接收当前需求请求地址的第二输入。每一个别地址比较器2411、2412、2413...2418经启用以在来自通道比较器2305的对应通道命中时比较其输入。在优选实施例中,仅对作用中比较器供电。不对其它比较器供电。在未命中(在测试框2308处为否)指示无记分板条目匹配当前需求请求的请求地址时,则记分板2041的待决服务请求都不用于与当前需求请求相同的地址。流程继续进行到继续框2309以进行提取过程的不与实例实施例有关的其它方面。在此情况下,无待决服务请求对应于当前需求请求。在二级组合式指令/数据高速缓存130中搜寻这些指令。
如果记分板2041内的条目的请求地址匹配当前需求请求地址(在文本框2308处为是),则实例实施例适用。如果情况如此,则框2310将匹配记分板条目修改为需求请求。明确地说,改变字段2403以指示此请求为需求请求。如结合图25所提到,响应于预取的传回数据以与响应于需求请求的传回数据不同的方式进行处置。对当前需求请求不进行额外二级组合式指令/数据高速缓存请求。替代地,待决预取请求转换为需求请求,如上文所指出。对应于此待决预取请求的数据将在对应于对相同请求地址的当前需求请求的任何数据之前到达。此有效地用来自对应先前预取的传回数据服务于当前需求请求。
在修改请求时,流程继续进行到继续框2311以进行提取过程的不与实例实施例有关的其它方面。
图25为说明程序存储器控制器1930对来自联合存储器控制器1940的传回的响应的流程图2500。操作2500仅说明程序存储器控制器1930的与实例实施例有关的操作部分。与此方面有关的操作在开始框2501处开始。
测试框2502确定是否从联合存储器控制器1940接收到高速缓存服务传回。如果不存在高速缓存服务传回(在测试框2502处为否),则实例实施例不适用。过程2500以继续框2503继续。
在接收到来自联合存储器控制器1940的高速缓存服务传回时(在测试框2502处为是),测试框2504确定高速缓存服务传回是否是针对需求请求。高速缓存服务传回优选地包含请求识别码。此请求识别码用以确定记分板2041中的匹配条目。记分板2041中识别的条目包含请求地址2401、请求识别码2402、需求提取/预取2403及所指派通道2404。程序存储器控制器1930通过对应记分板条目的需求提取/预取来确定高速缓存服务传回是否是来自需求请求或预取。如上文所指出,需求请求是直接从中央处理单元核心110发布。如果此为需求请求传回(在测试框2504处为是),则框2505将所传回的指令转发到中央处理单元核心110。因为中央处理单元核心110已直接请求这些指令(需求提取),因此中央处理单元核心110等待所述指令。中央处理单元核心110甚至可停止而不产生结果。因此,高速缓存服务传回直接转发到中央处理单元核心110,目标为减少任何停止时间。过程2500接着前进到框2506。
如果此不为需求请求传回(在测试框2504处为否)或如果此为需求请求传回(在测试框2504处为是)(在将需求请求传回指令供应到中央处理单元核心110的框2506之后),则框2506将所传回指令存储在一级指令高速缓存121中。存在来自联合存储器控制器1940的高速缓存服务传回(测试框2502)意味着程序存储器控制器1930中的高速缓存未命中。因此,所传回指令应存储在一级指令121中,而不管触发事件为需求请求还是预取请求。此存储发生在请求地址及对应记分板条目的所指派通道处。
框2507接着删除记分板条目。在处置高速缓存服务传回时,此记分板条目不再有用。此释放所述条目以供用以跟踪另一高速缓存服务请求。流程继续进行到继续框2508以进行不与实例实施例有关的其它过程。
实例实施例检测且校正高速缓存危险。此高速缓存危险为需求提取,其致使对相同指令的预取之后的高速缓存未命中仍待决。存在用于处置此危险的若干方式。一种技术忽略危险且使得高速缓存服务请求对应于需求提取。此技术产生冗余的高速缓存服务请求。预取获得所搜寻指令,且将其存储在一级指令高速缓存中。需求提取过早地发生以利用此预取。需求提取产生高速缓存未命中及另一高速缓存服务请求。中央处理单元核心响应于需求请求而等待传回且接着继续进行。响应于需求请求的传回指令覆写响应于需求请求的相同指令。此具有不需要专门考虑检测及缓解危险的优点。此具有忽略对需求请求待决的预取的缺点,且不提供系统优点。因此,浪费了在预取中使用的电路、功率及时间。
第二可能技术检测且减轻此危险。为了检测此危险,将需求请求地址与记分板中每一待决请求条目的请求地址进行比较。如果未检测到匹配,则此危险不存在。高速缓存系统继续进行到作出对应于需求提取的高速缓存服务请求。如果检测到匹配,则将待决预取转换为需求请求,且丢弃需求请求。此利用预取,从而允许对预取的传回服务于需求请求。对待决预取的传回将在对相同指令的新需求请求之前完成。此技术具有需要许多位比较的缺点。在本申请案的实例实施例中,中央处理单元核心指令地址为48位。高速缓存偏移2101充当6个最低有效位的代理。因此,记分板2041必须对于每一条目存储42个地址位。高速缓存危险比较需要比较每一记分板条目的这42个地址位。本申请案的实例实施例包含八个记分板条目,因此对于每一需求请求需要8x 42=336个位比较以检测危险。此危险检测可与高速缓存标记比较并行执行,因此需要对每一需求请求进行危险检测的功率。仅可在需求请求高速缓存未命中之后执行此危险检测,从而减小需求高速缓存请求命中的功率消耗,但可能需要额外时间来完成。
实例实施例以与上述不同的方式检测高速缓存危险。实例实施例利用以下事实:需求请求及对应待决预取分配到相同高速缓存通道。实例实施例确定任何记分板条目是否具有与当前需求提取相同的通道分配。仅对于具有与需求请求相同的所分配通道的那些记分板条目执行全地址比较。实例实施例包含四个通道。通道比较需要2x 8=16个位比较。平均来说,两个记分板条目将产生通道命中((1/4)x 8=2)。因此,请求地址平均比较需要2x42=84个位比较。实例实施例的高速缓存危险检测需要16+84=100个位比较而非常规技术的336个位比较。此使得在使用实例实施例时能够节省相当大的功率。
通常,实例实施例在以下情况下是有利的:
Figure BDA0002446281490000301
其中:A为存储在记分板中的地址位的数目,其小于中央处理单元核心地址位的数目达对应于一级指令高速缓存的偏移大小的量;S为记分板中的条目的数目;且W为通道位的数目,其中2W为通道的数目。
已结合超长指令字(VLIW)中央处理单元核心描述实例实施例。实例实施例的教示同等地适用于中央处理单元核心提取由一级指令高速缓存服务的个别指令,所述一级指令高速缓存具有等于多个指令的长度的高速缓存行大小。

Claims (10)

1.一种数字数据处理设备,其包括:
中央处理单元核心,其响应于程序指令而执行数据处理操作,所述中央处理单元核心经由请求地址而发布对额外程序指令的指令请求,所述中央处理单元核心包含分支预测器,所述分支预测器发布在指令存取之后、在预测支路将脱离线性路径之前将请求的线性后续指令的预测数目的指令计数;
一级指令高速缓存,其在多个高速缓存通道中的一级高速缓存行中暂时存储程序指令的子集;
程序存储器控制器,其连接到所述中央处理单元核心以用于接收请求地址,且连接到所述一级指令高速缓存及另一存储器,所述程序存储器控制器包含
预取有限状态机,其接收所述请求地址及所述指令计数,所述预取有限状态机依序发布对所述线性路径上的指令的预取请求,
记分板,其包含多个条目,每一条目包含请求地址及所分配高速缓存通道;所述程序存储器控制器
确定所述一级指令高速缓存是否在指令请求或预取请求的所述请求地址处存储程序指令,
如果所述一级指令高速缓存在指令请求的所述请求地址处存储程序指令,则将所述程序指令从所述一级指令高速缓存供应到所述中央处理单元核心,
如果所述一级指令高速缓存不在预取请求的所述请求地址处存储程序指令:
分配所述一级指令高速缓存内对应于所述预取请求的所述请求地址的通道,将包含所述对应请求地址及所述预取请求的所述对应所分配通道的新条目存储在所述记分板中,
如果所述一级指令高速缓存不在指令请求的所述请求地址处存储程序指令:
分配所述一级指令高速缓存内对应于所述指令请求的所述请求地址的通道,将所述指令请求的所述请求地址的所述所分配通道与所述记分板中的每一条目的所述所分配通道进行比较:
如果所述请求地址的所述所分配通道不匹配所述记分板中的任何条目的所述所分配通道,则将包含所述对应请求地址及所述指令请求的所述对应所分配通道的新条目存储在所述记分板中,
如果所述请求地址的所述所分配通道匹配所述记分板中的任何条目的所述所分配通道,
将所述指令请求的所述请求地址与每一记分板条目的匹配所述指令请求的所述所分配通道的所述请求地址进行比较,
如果所述指令请求的所述请求地址不匹配任何记分板条目的匹配所述指令请求的所述所分配通道的所述请求地址,则将包含所述对应请求地址及所述指令请求的所述对应所分配通道的新条目存储在所述记分板中,
如果所述指令请求的所述请求地址匹配任何记分板条目的匹配所述指令请求的所述所分配通道的所述请求地址,则不将新条目存储在所述记分板中,
供应新记分板条目的所述请求地址以从所述另一存储器获得高速缓冲服务,及
在接收到响应于来自所述另一存储器的对应请求地址的传回时,删除所述记分板中的条目;
在接收到对所述另一存储器的高速缓存服务请求的传回时
将所述传回在对应于所述请求地址及对应记分板条目的所述所分配通道的位置处存储在所述一级指令高速缓存中;以及
如果所述传回数据是响应于指令请求,则将所述传回供应到所述中央处理单元核心。
2.根据权利要求1所述的数字数据处理设备,其中:
所述中央处理单元核心、所述一级指令高速缓存设置在单个集成电路上。
3.根据权利要求2所述的数字数据处理设备,其中:
所述另一存储器包含设置于所述单个集成电路上的二级高速缓存。
4.根据权利要求1所述的数字数据处理设备,其中:
所述中央处理单元核心产生指示指令请求的所述请求地址是否有效的地址有效信号;
所述记分板的每一条目存储需求提取/预取位,其具有:第一状态,其在所述条目对应于指令请求时、在所述地址有效信号指示所述请求地址有效时指示需求提取;及第二状态,其在所述条目对应于预取请求时、在所述地址有效信号指示所述请求地址无效时指示预取。
5.根据权利要求1所述的数字数据处理设备,其中:
所述程序存储器控制器进一步包含数目等于记分板条目的数目的多个请求地址比较器,每一请求地址比较器具有从所述记分板条目中的一个对应记分板条目接收请求地址的第一输入端、接收所述指令请求的所述请求地址的第二输入端及指示匹配或不匹配的输出端,所述程序存储器控制器将操作电力供应到对应于所分配通道匹配所述指令请求的所述所分配通道的记分板条目的所述请求地址比较器,且不将操作电力供应到对应于所分配通道不匹配所述指令请求的所述所分配通道的记分板条目的所述请求地址比较器。
6.一种操作数字数据处理设备中的高速缓存系统的方法,其包括以下步骤:
经由来自中央处理单元核心的请求地址发布对额外程序指令的指令请求;
发布在指令存取之后在预测支路将脱离线性路径之前将请求的线性后续指令的预测数目的指令计数;
在多个高速缓存通道中的一级指令高速缓存行中暂时存储程序指令的子集;
依序发布对所述线性路径上的指令的预取请求;
将高速缓存服务请求的请求地址及对应所分配高速缓存通道存储在多个条目中;
确定所述一级指令高速缓存是否在指令请求或预取请求的所述请求地址处存储程序指令;
如果所述一级指令高速缓存在指令请求的所述请求地址处存储程序指令,则将所述程序指令从所述一级指令高速缓存供应到所述中央处理单元核心;
如果所述一级指令高速缓存不在预取请求的所述请求地址处存储程序指令,
分配所述一级指令高速缓存内对应于所述预取请求的所述请求地址的通道,
将包含所述对应请求地址及所述预取请求的所述对应所分配通道的新条目存储在所述记分板中,
如果所述一级指令高速缓存不在指令请求的所述请求地址处存储程序指令:
分配所述一级指令高速缓存内对应于所述指令请求的所述请求地址的通道,
将所述指令请求的所述请求地址的所述所分配通道与所述记分板中的每一条目的所述所分配通道进行比较:
如果所述请求地址的所述所分配通道不匹配所述记分板中的任何条目的所述所分配通道,则将包含所述指令请求的所述对应请求地址及所述对应所分配通道的新条目存储在所述记分板中,
如果所述请求地址的所述所分配通道匹配所述记分板中的任何条目的所述所分配通道,
将所述指令请求的所述请求地址与每一记分板条目的匹配所述指令请求的所述所分配通道的所述请求地址进行比较,
如果所述指令请求的所述请求地址不匹配任何记分板条目的匹配所述指令请求的所述所分配通道的所述请求地址,则将包含所述指令请求的所述对应请求地址及所述对应所分配通道的新条目存储在所述记分板中,
如果所述指令请求的所述请求地址匹配任何记分板条目的匹配所述指令请求的所述所分配通道的所述请求地址,则不将新条目存储在所述记分板中,
供应新记分板条目的所述请求地址以从另一存储器获得高速缓冲服务,及
在接收到响应于来自所述另一存储器的对应请求地址的传回时,删除所述记分板中的条目;
在接收到对所述另一存储器的高速缓存服务请求的传回时
将所述传回在对应于所述请求地址及对应记分板条目的所述所分配通道的位置处存储在所述一级指令高速缓存中;以及
如果所述传回数据是响应于指令请求,则将所述传回供应到所述中央处理单元核心。
7.根据权利要求6所述的操作数字数据处理设备中的高速缓存系统的方法,其进一步包括以下步骤:
将所述中央处理单元核心、所述一级指令高速缓存设置在单个集成电路上。
8.根据权利要求7所述的操作数字数据处理设备中的高速缓存系统的方法,其中:
所述另一存储器包含设置于所述单个集成电路上的二级高速缓存。
9.根据权利要求6所述的操作数字数据处理设备中的高速缓存系统的方法,其进一步包括以下步骤:
产生指示指令请求的所述请求地址是否有效的地址有效信号;
在所述记分板的每一条目存储需求提取/预取位,其具有:第一状态,其在所述条目对应于指令请求时、在所述地址有效信号指示所述请求地址有效时指示需求提取;及第二状态,其在所述条目对应于预取请求时、在所述地址有效信号指示所述请求地址无效时指示预取。
10.根据权利要求6所述的操作数字数据处理设备中的高速缓存系统的方法,其进一步包括以下步骤:
将操作电力供应到对应于所分配通道匹配所述指令请求的所述所分配通道的记分板条目的所述请求地址比较器;以及
不将操作电力供应到对应于所分配通道不匹配所述指令请求的所述所分配通道的记分板条目的所述请求地址比较器。
CN201880066430.XA 2017-10-12 2018-10-10 用飞行中预取服务于cpu需求请求 Active CN111213132B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310236384.6A CN117421259A (zh) 2017-10-12 2018-10-10 用飞行中预取服务于cpu需求请求

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/730,893 2017-10-12
US15/730,893 US10210090B1 (en) 2017-10-12 2017-10-12 Servicing CPU demand requests with inflight prefetchs
PCT/US2018/055176 WO2019075034A1 (en) 2017-10-12 2018-10-10 CPU LOAD REQUESTS WITH LIVE PREXTRACTIONS

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310236384.6A Division CN117421259A (zh) 2017-10-12 2018-10-10 用飞行中预取服务于cpu需求请求

Publications (2)

Publication Number Publication Date
CN111213132A true CN111213132A (zh) 2020-05-29
CN111213132B CN111213132B (zh) 2023-03-31

Family

ID=65322709

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310236384.6A Pending CN117421259A (zh) 2017-10-12 2018-10-10 用飞行中预取服务于cpu需求请求
CN201880066430.XA Active CN111213132B (zh) 2017-10-12 2018-10-10 用飞行中预取服务于cpu需求请求

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310236384.6A Pending CN117421259A (zh) 2017-10-12 2018-10-10 用飞行中预取服务于cpu需求请求

Country Status (4)

Country Link
US (3) US10210090B1 (zh)
EP (2) EP4290387A3 (zh)
CN (2) CN117421259A (zh)
WO (1) WO2019075034A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402199B2 (en) * 2015-10-22 2019-09-03 Texas Instruments Incorporated Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US10567504B2 (en) * 2017-11-29 2020-02-18 International Business Machines Corporation Protecting in-flight transaction requests
US11500779B1 (en) * 2019-07-19 2022-11-15 Marvell Asia Pte, Ltd. Vector prefetching for computing systems
US11379379B1 (en) 2019-12-05 2022-07-05 Marvell Asia Pte, Ltd. Differential cache block sizing for computing systems
US11523340B2 (en) * 2020-11-29 2022-12-06 Silicon Laboratories Inc. Delayed preamble detection for Bluetooth® receiver based on interferer metrics
US20240111684A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Multi-level starvation widget
US20240184698A1 (en) * 2022-12-01 2024-06-06 SiFive, Inc. Cache Coherency State Request Vector Encoding and Use Thereof

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0439025A2 (en) * 1990-01-22 1991-07-31 Motorola, Inc. A data processor having a deferred cache load
EP0911736A1 (en) * 1997-10-24 1999-04-28 Digital Equipment Corporation Low occupancy protocol for managing concurrent transactions with dependencies
US20020144054A1 (en) * 2001-03-30 2002-10-03 Fanning Blaise B. Prefetch canceling based on most recent accesses
CN102221989A (zh) * 2010-05-25 2011-10-19 威盛电子股份有限公司 微处理器以及相关的操作方法、以及加密、解密方法
US20140229719A1 (en) * 2011-07-22 2014-08-14 Ericsson Moderns SA Method and Apparatus for Branch Prediction
US20140281248A1 (en) * 2013-03-16 2014-09-18 Intel Corporation Read-write partitioning of cache memory
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
US20160019151A1 (en) * 2014-07-18 2016-01-21 Texas Instruments Incorporated Using l1 cache as re-order buffer
US20170147493A1 (en) * 2015-11-23 2017-05-25 International Business Machines Corporation Prefetch confidence and phase prediction for improving prefetch performance in bandwidth constrained scenarios

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6606686B1 (en) 1999-07-15 2003-08-12 Texas Instruments Incorporated Unified memory system architecture including cache and directly addressable static random access memory
US6718454B1 (en) * 2000-04-29 2004-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for prefetch operations to reduce latency associated with memory access
US7383391B2 (en) * 2005-05-18 2008-06-03 International Business Machines Corporation Prefetch mechanism based on page table attributes
US7600078B1 (en) * 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US8473689B2 (en) * 2010-07-27 2013-06-25 Texas Instruments Incorporated Predictive sequential prefetching for data caching
US9009414B2 (en) * 2010-09-21 2015-04-14 Texas Instruments Incorporated Prefetch address hit prediction to reduce memory access latency
US10579530B2 (en) * 2016-05-31 2020-03-03 Intel Corporation Prefetch filter cache for a processor
US10747540B2 (en) * 2016-11-01 2020-08-18 Oracle International Corporation Hybrid lookahead branch target cache

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0439025A2 (en) * 1990-01-22 1991-07-31 Motorola, Inc. A data processor having a deferred cache load
EP0911736A1 (en) * 1997-10-24 1999-04-28 Digital Equipment Corporation Low occupancy protocol for managing concurrent transactions with dependencies
US20020144054A1 (en) * 2001-03-30 2002-10-03 Fanning Blaise B. Prefetch canceling based on most recent accesses
CN102221989A (zh) * 2010-05-25 2011-10-19 威盛电子股份有限公司 微处理器以及相关的操作方法、以及加密、解密方法
US20140229719A1 (en) * 2011-07-22 2014-08-14 Ericsson Moderns SA Method and Apparatus for Branch Prediction
US20140281248A1 (en) * 2013-03-16 2014-09-18 Intel Corporation Read-write partitioning of cache memory
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
US20160019151A1 (en) * 2014-07-18 2016-01-21 Texas Instruments Incorporated Using l1 cache as re-order buffer
US20170147493A1 (en) * 2015-11-23 2017-05-25 International Business Machines Corporation Prefetch confidence and phase prediction for improving prefetch performance in bandwidth constrained scenarios

Also Published As

Publication number Publication date
CN117421259A (zh) 2024-01-19
WO2019075034A1 (en) 2019-04-18
EP3695318A1 (en) 2020-08-19
EP3695318A4 (en) 2020-12-30
US10558578B2 (en) 2020-02-11
EP4290387A2 (en) 2023-12-13
CN111213132B (zh) 2023-03-31
US10210090B1 (en) 2019-02-19
US20200167288A1 (en) 2020-05-28
EP3695318B1 (en) 2023-10-04
US11500777B2 (en) 2022-11-15
US20230078414A1 (en) 2023-03-16
US20190179759A1 (en) 2019-06-13
EP4290387A3 (en) 2024-04-10

Similar Documents

Publication Publication Date Title
CN111213132B (zh) 用飞行中预取服务于cpu需求请求
CN111213131B (zh) 高速缓存器中的零时延预提取
EP3238073B1 (en) Hiding page translation miss latency in program memory controller by selective page miss translation prefetch
US5249286A (en) Selectively locking memory locations within a microprocessor's on-chip cache
US6687789B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
EP3550437B1 (en) Adaptive spatial access prefetcher apparatus and method
US11238155B2 (en) Microarchitectural mechanisms for the prevention of side-channel attacks
EP4020225A1 (en) Adaptive remote atomics
EP0459233A2 (en) Selectively locking memory locations within a microprocessor's on-chip cache
KR100218617B1 (ko) 변환우선참조 버퍼를 이용하여 메모리를 관리하는 데이터 처리 시스템의 효율적인 메모리 관리 방법 및 시스템과 그를 이용한 데이터 처리 시스템
US9652402B2 (en) Hiding page translation miss latency in program memory controller by next page prefetch on crossing page boundary
CN115878506A (zh) 共享预取指令和支持
US12124374B2 (en) Servicing CPU demand requests with inflight prefetches
US12124371B2 (en) Apparatus and method to reduce bandwidth and latency overheads of probabilistic caches
US20220308998A1 (en) Apparatus and method to reduce bandwidth and latency overheads of probabilistic caches
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant