CN112559049A - 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 - Google Patents

用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 Download PDF

Info

Publication number
CN112559049A
CN112559049A CN201910912797.5A CN201910912797A CN112559049A CN 112559049 A CN112559049 A CN 112559049A CN 201910912797 A CN201910912797 A CN 201910912797A CN 112559049 A CN112559049 A CN 112559049A
Authority
CN
China
Prior art keywords
instruction
way
cache
jump
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910912797.5A
Other languages
English (en)
Inventor
刘东启
江滔
陈晨
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910912797.5A priority Critical patent/CN112559049A/zh
Priority to US17/017,047 priority patent/US11720365B2/en
Priority to PCT/US2020/050129 priority patent/WO2021061411A1/en
Publication of CN112559049A publication Critical patent/CN112559049A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/0875Addressing 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
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

公开了一种指令处理装置,包括:指令高速缓存,按照多相组相连结构映射内存的数据块且包括多路缓存行;以及访问控制单元,耦接在取指令单元和指令高速缓存之间,适于采用多个数据通道分别读取多路缓存行,采用多个选择逻辑通道从多路缓存行中选择命中的缓存行,以获取指令,其中,访问控制单元包括路预测单元,路预测单元根据指令的类型获取与指令地址相对应的路预测信息,以及根据路预测信息开启至少一个数据通道和/或至少一个选择逻辑通道。该指令处理装置采用访问控制单元根据路预测信息选择性开启指令高速缓存的访问通道,以降低动态访问功耗。还公开了相应的路预测方法、计算机系统和片上系统。

Description

用于指令高速缓存的路预测方法、访问控制单元以及指令处 理装置
技术领域
本发明涉及处理器领域,更具体地,涉及用于指令高速缓存的路径预测方法、访问控制单元以及指令处理装置。
背景技术
高性能处理器包括多级存储结构,包括寄存器、多级高速缓存、经由存储总线访问的内存、以及经由IO总线访问的外部存储装置。第一级高速缓存(L1)例如包括指令高速缓存和数据高速缓存,分别用于存储处理器初次访问内存所获取的指令和数据。在后续访问中,处理器从高速缓存中查找指令和数据,从而可以减少访问内存的次数。高速缓存的使用还可以弥补处理器和内之间的速度差异,从而提高系统性能。爽肤水
在将内存的数据块迁移至高速缓存时采用多种映射规则。例如,组相连映射的高速缓存包括S个缓存组,每个组分别包括E个缓存行,即形成E路组相连结构,其中,S为任意自然数,E是数值为2、4、8等的自然数。在数据迁移时,内存的数据块存放在唯一组的任意行中。
在一种高速缓存访问控制方法中,处理器在访问多路组相连映射的高速缓存时,并行访问多路缓存行以获得多路缓存行的内容,进行地址比较选择命中的缓存行。然而,并行访问方法需要读取多路的缓存行和进行多路的地址比较,这不仅导致高速缓存访问延迟,而且将产生大量的动态功耗。
在进一步改进的高速缓存访问控制方法中,处理器采用分支目标缓冲器(BranchTarget Buffer,缩写为BTB)进行分支预测,同时,在BTB的表项中,预测信息包括顺序路预测信息和跳转路预测信息,根据预测信息产生路选择信号,使得处理器在访问高速缓存时,如果指令类型为分支指令,则可以启用单路缓存行以降低动态功耗。然而,该高速缓存访问控制方法仅能对分支指令进行路预测,而不能对非分支指令进行路预测,从而处理器在执行非分支指令访问高速缓存时,仍然需要并行访问多路缓存行的内容。而且,该高速缓存访问控制方法需要将跳转和未跳转的分支指令均存入BTB的表项中,这会导致BTB冲突的概率增加。
因此,在处理器的高速缓存访问控制方法中期望引入新的机制,以使得处理器在执行不同类型的指令时访问内存均可以降低动态功耗。
发明内容
有鉴于此,本公开提供了用于组相连指令高速缓存的路预测方法、逻辑单元以及指令处理装置,在访问控制单元101中根据指令类型进行跳转路预测或顺序路预测以产生路选择信号,从而在执行不同类型的指令时可以访问高速缓存中的单路缓存行,以降低高速缓存访问的动态功耗。
根据本公开的第一方面,提供一种指令处理装置,包括:取指令单元,适于根据程序计数的指令地址获取指令;执行单元,与所述取指令单元耦接,适于执行所述指令;指令高速缓存,适于保存采用指令地址访问的指令内容,所述指令高速缓存按照多相组相连结构映射内存的数据块且包括多路缓存行;以及访问控制单元,耦接在所述取指令单元和所述指令高速缓存之间,适于采用多个数据通道分别读取所述多路缓存行,采用多个选择逻辑通道从所述多路缓存行中选择命中的缓存行,以获取所述指令,其中,所述访问控制单元包括路预测单元,所述路预测单元根据所述指令的类型获取与所述指令地址相对应的路预测信息,以及根据所述路预测信息开启至少一个数据通道和/或至少一个选择逻辑通道。
根据本公开的第二方面,提供一种用于指令高速缓存的路预测方法,所述指令高速缓存适于保存采用指令地址访问的指令内容,按照多相组相连结构映射内存的数据块且包括多路缓存行,所述路预测方法包括:根据程序计数的指令地址获取指令;根据所述指令的类型获取与所述指令地址相对应的路预测信息;根据所述路预测信息开启多个数据通道中的至少一个数据通道和/或多个选择逻辑通道中的至少一个选择逻辑通道;以及采用所述指令地址作为索引,从所述多路缓冲行中选择与所述指令地址相对应的缓存行,以获取所述指令。
根据本公开的第二方面,提供一种计算机系统,包括上述的指令处理装置。
根据本公开的第四方面,提供一种片上系统,包括上述的指令处理装置。
根据本公开实施例的指令处理装置,采用组相连映射的指令高速缓存,采用路预测单元根据指令的类型获取与所述指令地址相对应的路预测信息,以及根据所述路预测信息开启至少一个数据通道和/或至少一个选择逻辑通道。与现有技术的指令处理装置相比,不仅可以实现跳转指令的路预测,而且可以实现非跳转指令的路预测。在各种类型的指令访问指令高速缓存时,根据路预测信息开启指令高速缓存的仅一部分访问通道(数据通道和/或选择逻辑通道),因而可以在访问指令高速缓存时可以降低高速缓存访问的动态功耗。
根据优选实施例的指令处理装置,路预测单元仅在获取跳转指令时才访问分支指令缓冲器以获取路预测信息,而在获取未跳转的分支指令时无需访问分支指令缓冲器以获取路预测信息,因而可以减少分支指令缓冲器的冲突概率。
根据优选实施例的指令处理装置,路预测单元暂存跳转指令的分支指令地址、目标地址和路命中,在获取下一个跳转指令未命中分支指令缓冲器时,利用指令流的空拍期间采用暂存的信息更新分支指令缓冲器,以减少路维护对指令流执行造成的延时。
附图说明
通过参考以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出根据本发明一个实施例的指令处理装置的示意性框图;
图2示出根据本发明一个实施例的指令处理装置采用分支预测方法执行指令的示意图;
图3示出根据本发明一个实施例的分支预测方法的流程图;
图4示出根据本发明一个实施例的指令高速缓存系统的示意性框图;
图5示出本发明一个实施例的跳转路预测器的示意性框图;
图6示出本发明一个实施例的顺序路预测器的示意性框图;
图7示出根据本发明一个实施例的跳转路预测方法的流程图;
图8示出根据本发明一个实施例的顺序路预测方法的流程图;
图9示出根据本发明一个实施例的计算机系统的结构示意图;以及
图10示出根据本发明一个实施例的片上系统的结构示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
指令包,指处理器从指令高速缓存或外部总线上获取、在一个取指周期内处理的固定长度的二进制段。
指令元字段,按照各个指令编码长度的最大公约数从指令包中提取的一个个字段。例如,如果一个指令包内包含两种指令编码,指令编码长度分别为8bit和16bit,则按照8bit从指令包中提取一个个指令元字段。
指令流水线,指令流水线是为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。目前主流的指令流水线的技术有三级、四级、五级、七级和超级指令流水线,等等。例如教课书示例的五级指令流水线包括取指级、译码级、执行级、访存级和写回级。在本文中,将取指级、译码级、执行级、访存级和写回级又称为取指单元、译码单元、执行单元、访存单元和引退单元。将实现指令流水线的软件硬件组合称为流水线结构。
空拍:在某些情况下,指令流水线中的某一级无法执行任何指令,这种情况称为流水线中出现了空拍。
程序计数器:简称PC,用于保存下一条指令的指令地址的寄存器。处理器根据程序计数器的指令地址从内存或高速缓存中获取和执行指令。
指令高速缓存,用于存储指令的第一级高速缓存,处理器采用指令地址访问指令高速缓存以获取指令的内容,从而可以减少在内存查找指令内容的次数和消耗时间。
分支目标缓冲器:简称BTB,用于在映射表的表项中保存分支指令地址、目标地址、目标预测统计信息的小型高速缓存,处理器采用分支目标缓冲器进行分支预测以减少空拍,从而可以提高指令流水线的效率。
转译后备缓冲区:简称TLB,用于在映射表的表项中保存虚拟地址、页物理地址的小型高速缓存,用于虚拟地址与物理地址之间的交互,处理器根据虚拟地址索引查找匹配的表项,从而将虚拟地址转译成物理地址,从而可以减少在内存查找物理地址的次数和消耗时间。
另外,在本申请中,将BTB兼用于分支预测和路预测,在路预测时区分跳转的分支指令和未跳转的分支指令,前者称为跳转指令,后者称为非跳转指令。
图1示出根据本发明一个实施例的指令处理装置的示意性框图。
指令处理装置100包括用于处理指令的一个或多个处理器核110。应用程序和/或系统平台可以控制多个处理器核110处理和执行指令。
每个处理器核110可以用于处理特定的指令集。在一些实施例中,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(ReducedInstruction Set Computing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算。不同的处理器核110可以各自处理不同或相同的指令集。在一些实施例中,处理器核110还可以包括其他处理模块,例如数字信号处理器(Digital Signal Processor,DSP)等。
指令处理装置100还可以包括多级存储结构,例如,寄存器堆116、多级高速缓存L1至L3、以及经`由存储总线访问的存储器110。
寄存器堆116可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆116可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆116中的寄存器可以选用通用寄存器来实现,也可以根据指令处理装置100的实际需求采用特定的设计。
高速缓存L1至L3可以全部或部分集成于各个处理器核110中。例如,第一级高速缓存L1位于各个处理器核110的内部,包括用于存放指令的指令高速缓存118和用于存放数据的数据高速缓存119。根据不同架构,至少一级高速缓存(例如,图1所示的第三级高速缓存L3)可以位于多个处理器核110的外部并且由多个处理器核共享。指令处理装置100还可以包括外部高速缓存。
指令处理装置100可以包括内存管理单元(Memory Management Unit,MMU)112,实现虚拟地址到物理地址的转译,用于根据物理地址对内存进行访问以获取指令和数据。在高速缓存中可以设置转译后备缓冲区TLB,以暂存虚拟地和页物理地址的映射表,用于虚拟地址与物理地址之间的交互,处理器根据虚拟地址索引查找匹配的表项,从而将虚拟地址转译成物理地址,从而可以减少在内存查找物理地址的次数和消耗时间。内存管理单元112也可以从内存中获取未暂存的映射关系。每个处理器核110中可以设置一个或多个内存管理单元112,不同处理器核110中的内存管理单元112也可以与位于其他处理器或处理器核中的内存管理单元112实现同步,使得每个处理器或处理器核可以共享统一的虚拟存储系统。
指令处理装置100用于执行指令序列(即应用程序)。指令处理装置100执行每个指令的过程包括:从存放指令的存储器中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停止指令。
为了实现上述过程,指令处理装置100可以包含取指令单元114、译码单元115、指令发射单元(未示出)、执行单元111和指令退休单元(未示出)等。
取指令单元114作为指令处理装置100的启动引擎,用于将指令从指令高速缓存118或存储器110中迁移至指令寄存器(例如,寄存器堆116中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
在取出指令后,指令处理装置100进入指令译码阶段,译码单元115按照预定的指令格式,对取回的指令进行解释和译码,识别并区分出不同的指令类别以及操作数获取信息(操作数获取信息可以指向立即数或用于存储操作数的寄存器),为执行单元111的操作做准备。
指令发射单元通常存在于高性能的指令处理装置100中,位于译码单元115与指令执行单元之间,用于指令的调度和控制,以将各个指令高效地分配至不同的执行单元111,使得多个指令的并行操作成为可能。指令经取指、译码并被调度到相应的执行单元111之后,相应的执行单元111开始执行该指令,即执行该指令所指示的操作、实现相应的功能。
指令退休单元主要用于负责将执行单元111产生的执行结果写回到相应的存储位置(例如为指令处理装置100内部的寄存器)中,以使后续指令能够从该存储位置处快速获取相应的执行结果。
对于不同类别的指令,可以在指令处理装置100中相应地设置不同的执行单元111。执行单元111可以是运算单元(例如包含算术逻辑单元、矢量运算单元等,用于根据操作数进行运算并输出运算结果)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据等)以及协处理器等。在指令处理装置100中,各个执行单元111可以并行运行并输出相应的执行结果。
在该实施例中,指令处理装置100是多核处理器,包括共用第三级缓存L3的多个处理器核110。在替代的实施例中,指令处理装置100可以是单核处理器,或者电子系统中用于处理指令的逻辑元件。本发明不限于任何特定类型的处理器。
根据该实施例的指令处理装置100,进一步包括访问控制单元101和BTB(分支目标缓冲器)102。访问控制单元101与指令高速缓存118和BTB 102耦合,兼有从指令高速缓存118获取指令内容的查找功能、以及根据指令地址进行路预测以控制指令高速缓存118的内部通道的路选择功能。
指令高速缓存118例如是组相连映射的高速缓存,包括分别S个缓存组,每个组分别包括E个缓存行,即形成E路组相连结构,其中,S为任意自然数,E是数值为2、4、8等的自然数。在将存储器110的数据迁移至指令高速缓存118时,存储器110的数据块存放在唯一组的任意行中。
在取指令单元114在从指令高速缓存118获取指令时,访问控制单元101采用指令地址中的索引i和标记t作为组索引和路索引,查找指令高速缓存118中与指令地址相对应的缓存行,然后采用指令地址中的块偏移o获取缓存行中相应的指令内容,从而实现指令内容的查找功能。
根据该实施例的指令处理装置100,BTB 102不仅用于分支预测,而且用于跳转路预测。BTB 102的每个表项不仅包括分支指令地址、目标地址、目标预测统计信息,而且还包括扩展的目标地址的路预测信息。
进一步地,访问控制单元101采用指令地址进行跳转路预测,根据预译码的指令类型,检索获得目标地址的路预测信息以产生路选择信号,从而在访问指令高速缓存118的目标地址时仅使能单路缓存行,以降低高速缓存访问的动态功耗。
结合图2和3进一步描述根据本发明一个实施例的指令处理装置100的分支预测方法。
指令处理装置100用于执行应用程序的指令序列,包括指令A至F,其中,指令A、D至F为非跳转指令,指令B和C为跳转指令。指令B跳转的目标地址是指令F,指令C跳转的目标地址是指令E。
指令处理装置100执行每个指令的过程包括:从存放指令的存储器中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停机指令。
如图3所示,取指单元114执行以下步骤。
在步骤S01中,根据程序PC从高速缓存或内存中获取物理地址。
在步骤S02中,采用物理地址从指令高速缓存118中获取指令包。
在步骤S03中,对获取到的指令包进行预译码。
在步骤S04中,根据预译码结果判断当前指令是否为跳转指令。如果是跳转指令,则执行步骤S05至S07。如果不是跳转指令,则直接执行步骤S07。
在步骤S05中,根据指令地址查找BTB 102,以得到目标地址。
在步骤S06中,获取目标地址的指令包。
在步骤S07中,缓存指令,以供译码单元读取。
对于BTB 102的查找,存在以下可能:
第一种,命中BTB 102;此时取指令单元114根据从BTB 102中查找到的目标地址从指令高速缓存118获取指令包,并接着对该指令包进行预译码、判断是否有跳转指令、根据跳转指令查找BTB 102以及缓存跳转指令的步骤;
第二种,未命中BTB 102;此时取指单元114对于该指令不作任何预测。该指令经由译码单元115和指令发射单元发送到执行单元,执行单元对该指令进行执行,并根据实际执行结果,将该指令的目标地址作为新的表项存储到BTB 102中。
根据该实施例,通过预译码识别跳转指令,进而根据BTB获得跳转指令的目标地址,并获取目标地址处的指令包,从而可以避免或者降低后续向指令流水中加入空拍的可能性。
图4示出根据本发明一个实施例的指令高速缓存系统的示意性框图。指令高速缓存系统包括指令高速缓存118和访问控制单元101。访问控制单元101用于根据程序计数器PC的指令地址从指令高速缓存118中获取相应的指令,以及根据指令类型进行顺序路预测和跳转路预测至少之一,然后使用预测信息控制下次指令高速缓存的访问使能,只开启预测路的数据路进行访问,从而减少指令高速缓存访问的动态功耗
程序计数器PC的指令地址包括标记t、组索引i、块偏移o,但本发明不限于此。在根据指令地址访问指令高速缓存时,访问控制单元101根据指令地址的标记t和组索引i可以查找指令高速缓存中相对应的缓存行。
指令高速缓存118例如位于指令处理装置100的第一级高速缓存L1中。指令高速缓存118是组相连结构的高速缓存,包括S个缓存组,每个组分别包括E个缓存行,每个缓存行包括B个字节的缓存块,即形成E路组相连结构,其中,S和E为任意自然数,E是数值为2、4、8等的自然数。在该实施例中,指令高速缓存包括256个组,每个组分别包括2个缓存行,每个缓存行包括32K个字节的缓存块,即形成2路组相连结构的指令高速缓存。
在该实施例中,指令高速缓存118中的缓存行具有彼此相同的结构,分别包括有效位v、标记t、缓存块b三部分的内容,但本发明不限于此。
访问控制单元101包括比较逻辑单元10、路预测单元20和路维护单元30。比较逻辑单元10从指令高速缓存118中获取相应的指令内容。路预测单元20根据指令类型进行路选择以降低缓存访问的动态功耗。路维护单元30维护路预测单元20中的预测信息,包括根据跳转指令的目标地址的命中信息向路预测单元20增加新的路预测信息或者更新路预测单元20已有的路预测信息。
比较逻辑单元10包括与指令高速缓存118的多路组相连结构相对应的多路比较逻辑和多路数据通道。指令高速缓存118根据指令地址中的组索引选择相应的缓存组。比较逻辑单元10的多路比较逻辑包括比较器11、与门12,其中,比较器11用于将指令地址中的标记与缓存行中的标记进行比较,从而可以匹配与指令地址的标记和组索引相应的缓存行,与门12用于进一步判断缓存行是否有效,从而产生多路命中信息h0和h1。比较逻辑单元10的多路数据通道包括多路选择器14,根据多路命中信号h0和h1从与多路缓存行中获取的多个数d0和d1中选择命中缓存行的数据d。
在访问控制单元101接收到访问请求时,比较逻辑单元10查找与指令地址相对应的指令高速缓存118中的缓存行数据,从而获取与指令地址相对应的指令数据。如果比较逻辑单元10的多路比较逻辑判断第i路读出的标记与指令地址的标记相等,则表示第i路命中,采用多路选择器将多路数据通道中第i路读出的数据发送给指令处理装置的取指令单元114。如果全部比较结果都不相等,则表示没有命中,指令处理装置的取指令单元114需要访问内存。
访问控制单元101中的路预测单元20根据指令类型进行顺序路预测和跳转路预测至少之一,以及根据目标地址的预测信息产生路选择信号ws。进一步地,比较逻辑单元10可以根据路选择信号ws选择单路通道以获得与目标地址相对应的指令内容。
根据上述实施例的指令高速缓存系统,路预测单元20提供了路选择信号,使得比较逻辑单元10不需要并行地读取所有路通道的数据,而是选择读取单路通道中与目标地址相对应的指令内容,从而可以减少比较逻辑单元10对指令高速缓冲存储器118的读取操作,有效地降低了缓存访问的动态功耗。
图5示出本发明一个实施例的跳转路预测器的示意性框图。跳转路预测器21可以直接作为图4所示的路预测单元20,或者作为路预测单元20的内部单元,或者也可以作为BTB 102的内部单元。
根据该实施例的BTB 102不仅用于图2和3所示的分支预测方法,而且用于图5所示的跳转路预测方法。为此,BTB 102的每个表项不仅包括分支指令地址b、目标地址t、目标预测统计信息v,而且还包括扩展的路预测信息w和标识位。该路预测信息例如组相连指令高速缓存的路序号。例如,对于2相组相连的指令高速缓存118,采用1比特二进制数字作为路预测信息,其中,数值0和1分别表示第0路缓存行和第1路缓存行。标识位表示对应的路预测信息w是否有效。例如可以采用1比特二进制数字表示标识位。
访问控制单元101中的跳转路预测器21与BTB 102耦合,在取指令单元114根据指令地址查找BTB 102以获取路预测信息w,以及产生与路预测信息w相对应的路选择信号ws。在预译码发现指令包中存在跳转指令后,访问控制单元101中的比较逻辑单元10根据跳转路预测的路选择信号ws仅开启单路通道,从而产生1/N的动态功耗,其中,N表示指令高级缓存118中的缓存行的路数量。
在该实施例中,指令高速缓存118为2相组连结构,应用程序中的指令B为跳转指令。在采用跳转路预测的情形下,跳转路预测器21根据在BTB 102中的路预测信息是第0路缓存行。进一步地,访问控制单元101根据指令B的取指令操作访问指令高速缓存118,仅开启第0路缓存行的比较逻辑和数据通道,从而仅产生1/2的动态功耗。
在该实施例中,在预译码获知指令类型为跳转指令之后,跳转路预测器21采用指令地址查找BTB 102中的路预测信息控制访问指令高速缓存118的单路通道,从而实现跳转路预测方法。该跳转路预测方法仅仅对于跳转指令才需要访问BTB 102,对于非跳转指令则不需要访问BTB102,因而减少了BTB 102的访问次数,有利于降低BTB 102的冲突概率。
在替代的实施例中,跳转路预测器21在分支预测的查找过程中可以获得分支指令的路预测信息,从而不需要单独访问BTB 102,因而进一步减少了BTB 102的访问次数,有利于降低BTB 102的冲突概率。
图6示出本发明一个实施例的顺序路预测器的示意性框图。顺序路预测器22可以直接作为图4所示的路预测单元20,或者作为路预测单元20的内部单元。
顺序路预测器22包括预测缓冲区221和多路选择器222,用于对非跳转指令进行路预测,根据预测信息控制访问控制单元101中的比较逻辑单元10的路选择。
预测缓冲区221例如是第一级高速缓存L1的一部分。预测缓冲区221的大小与指令高速缓存118的索引大小和组相连数相关。对于32K 2路组相连256索引的指令高速缓存(即,S=256,E=2,B=64Byte),预测缓冲区221的大小为2*256*log22=512比特。指令高速缓存118的每个缓存行在预测缓冲区221中均有1比特的预测值,采用1比特二进制数字作为路预测信息,其中,数值0和1分别表示第0路缓存行和第1路缓存行。
在取指令单元114在从指令高速缓存118获取指令时,访问控制单元101在指令地址位于缓存行边界(cache line boundary)触发顺序路预测。程序计数器PC的指令地址中的标记t和组索引i可以用于索引高速指令缓存118中的任一个缓存行,块偏移o可以用于判断是否位于缓存行边界。如果块偏移o指向当前缓存行的最后一个数据块,则下一个指令地址可能位于另一个缓存行中,从而可能发生跨缓存行访问。
顺序路预测器21采用指令地址中的索引i作为组索引,查找预测缓冲区221中S个缓存组的相应缓存组,获得该组中E路缓存行的路预测信息,以及根据当前访问指令高速缓存118的命中信息,多路选择器222从多个路预测信息中选择相应路的路预测信息w。进一步地,在发生跨缓存行访问时,则顺序路预测器产生与路预测信息w相对应的路选择信号ws。进一步地,在预译码发现指令包中存在非跳转指令的跨行访问后,访问控制单元101中的比较逻辑单元10根据顺序路预测的路选择信号ws仅开启单路的数据通道,从而产生大约1/N的动态功耗,其中,N表示指令高级缓存118中的缓存行的路数量。
在该实施例中,指令高速缓存118为2相组连结构,应用程序中的指令D为非跳转指令。在采用顺序路预测的情形下,顺序路预测器22根据在BTB 102中的路预测信息是第0路缓存行。访问控制单元101根据指令D的取指令操作访问指令高速缓存118,仅开启第0路缓存行的比较逻辑和数据通道,从而仅产生大约1/2的动态功耗。
图7示出根据本发明一个实施例的跳转路预测方法的流程图。该跳转路预测方法例如在图5所示的跳转路预测器21中执行主要步骤。以图2所示的应用程序为例对跳转路预测方法进行详细说明。
如上所述,为了实现跳转路预测,BTB 102的每个表项不仅包括分支指令地址b、目标地址t、目标预测统计信息v,而且还包括扩展的路预测信息w和标识位。
在步骤S101中,取指令单元114获取程序计数器PC的指令地址。该指令地址例如是采用TBL进行地址转译获得的物理地址。指令地址包括括标记t、组索引i和偏移块o。例如,应用程序中的指令B为跳转指令。
在步骤S102中,跳转路预测器21与BTB 102耦合,根据指令地址查找BTB 102以获取路预测信息w。例如,跳转指令B的目标地址为指令F的指令地址,在BTB 102与跳转指令B相对应的表项中,路预测信息为0,表示指令F的数据块位于指令高速缓存118的第0路缓冲行中。
在步骤S103,跳转路预测器21判断是否命中BTB 102中的任一个表项。如果命中,则获取BTB 102中相应表项的路预测信息w作为用于路选择的路预测信息,执行步骤S104至S106,从而实现路选择。如果未命中,则按顺序执行指令,并且执行步骤S111至S113,从而实现路径维护。
在步骤S104中,对指令包进行译码。
在步骤S105中,判断当前指令是否为跳转指令。如果当前指令为跳转指令,则执行步骤S106。如果当前指令非跳转指令,则执行顺序路预测。
在步骤S106中,采用跳转路预测器21产生与路预测信息w相对应的选择信号ws。
在实现跳转路选择之后,访问控制单元101中的比较逻辑单元10根据跳转路预测的路选择信号ws仅开启单路通道,因而可以降低指令高速缓存118的动态访问功耗。
对于BTB 102的查找,存在以下可能:
第一种,命中BTB 102;此时取指令单元114根据从BTB 102中查找到的目标地址从指令高速缓存118获取指令包,并且访问控制单元101根据跳转指令B的路预测信息w开启单路缓存行;
第二种,未命中BTB 102;此时取指令单元114按顺序执行指令,即执行上述的步骤S111。指令处理装置100暂存跳转指令B和目标指令F的地址,并且采用并行访问多路数据行的方式访问指令高速缓存118。在步骤S112中,访问控制单元101的比较逻辑单元10判断是否在指令高速缓存118中命中跳转指令B和目标指令F。在指令高速缓存118中命中跳转指令B和目标指令F的情形下,执行步骤S113。访问控制单元101的路维护单元30,在并行访问多路数据行时,记录目标指令F的路命中信息,从而形成将跳转指令B的指令地址b、目标指令F的指令地址t、路命中信息(作为路预测信息w)作为新的表项写入BTB 102中,从而采用更新BTB 102的方式实现跳转路预测的路维护。
根据该实施例的跳转路预测方法,在BTB 102的表项中包括扩展的路预测信息。访问控制单元101在BTB 102中命中跳转指令B的情形下,不仅可以实现跳转指令B的分支预测以获得目标地址,而且可以实现跳转指令B的跳转路预测,根据路预测信息开启单路缓存行的访问,因而可以降低指令高速缓存118的动态访问功耗。访问控制单元102在BTB102中未命中跳转指令B的情形下,按顺序执行指令并且暂存跳转指令B、目标指令F的指令地址、以及目标指令F的路命中信息,在BTB 102中新增表项,实现跳转路预测的路维护。
在跳转路预测的路维护中,采用暂存上述信息、延时回写的方式可以减少BTB 102的冲突概率。在BTB中未命中跳转指令的情形,指令处理装置100的指令流会出现一个多个周期的空拍。在优选的实施例中,在暂存上述信息之后,直至下一次发生BTB中未命中跳转指令时才进行回写,从而利用空拍期间进行跳转路预测的路维护,以减少跳转路预测的路维护对指令处理装置性能的不利影响。
图8示出根据本发明一个实施例的顺序路预测方法的流程图。该顺序路预测方法例如在图6所示的顺序路预测器22中执行主要步骤。以图2所示的应用程序为例对顺序路预测方法进行详细说明。
如上所述,为了实现顺序路预测,顺序路预测器22包括预测缓冲区221和多路选择器222,用于对非跳转指令进行路预测,根据预测信息控制访问控制单元101中的比较逻辑单元10的路选择。
下文将以32K 2路组相连256索引的指令高速缓存(即,S=256,E=2,B=32K)为例说明该实施例的顺序路预测方法。然而,本发明不限于特定大小的缓存组、缓存行、缓存块。
指令高速缓存118的每个缓存行在预测缓冲区221中均有log2N比特的预测值,其中,N表示指令高速缓存118的缓存行的路数量。例如,在指令高速缓存118为2相组连结构的情形下,指令高速缓存118的每个缓存行采用1比特二进制数字作为路预测信息。
在步骤S201中,取指令单元114获取程序计数器PC的指令地址。该指令地址例如是采用TBL进行地址转译获得的物理地址。指令地址包括括标记t、组索引i和偏移块o。例如,应用程序中的指令D为非跳转指令。
在步骤S202中,顺序路预测器22根据指令地址判断该指令是否位于缓存行边界。如果指令地址位于缓存行边界,则执行步骤S203。
在该步骤中,如上所述,根据指令地址的块偏移o可以判断指令地址是否位于缓存行边界。如果块偏移o指向当前缓存行的最后一个数据块,则下一个指令地址可能位于另一个缓存行中,从而可能发生跨缓存行访问。
在步骤S203中,采用指令地址中的索引i作为组索引,查找预测缓冲区221中256个缓存组中第i个缓存组中2路缓存行的2路路预测信息。
在步骤S204中,根据当前访问指令D高速缓存118的命中信息,多路选择器222从2路路预测信息中选择相应路的路预测信息w。
在步骤S205中,访问控制单元101中的比较逻辑单元10判断路预测信息w是否正确。如果路预测信息w正确,则将路预测信息w用于路选择,执行步骤S206至S208。如果路预测信息w错误,执行步骤S211至S214,从而实现路径维护。
在访问控制单元101采用顺序路预测器22开启指令高速缓存118的单路数据通道时,访问控制单元101中的比较逻辑单元10仍然开启所有路的比较逻辑通道。因此,比较逻辑单元10将指令地址的标记t与指令高速缓存118中命中缓存行的标记t进行比较,根据比较结果可以判断路预测信息w是否正确。
在步骤S206中,对指令D进行译码。
在步骤S207中,判断指令D是否为跳转指令。如果指令D为非跳转指令,则执行步骤S208。如果指令D为跳转指令,则执行跳转路预测。
在步骤S208中,采用顺序路预测器22产生与路预测信息w相对应的选择信号ws。如果下一个指令地址的组索引i+1,则发生跨缓存行访问,访问控制单元101中的比较逻辑单元10根据顺序路预测的路选择信号ws仅开启单路数据通道,以实现顺序路选择。
根据该实施例的顺序路预测方法,在当前指令D位于缓存行边界时触发顺序路预测,不仅根据当前指令D的路命中信息选择路预测信息,而且根据下一指令E访问高速指令缓存118时开启的全部比较逻辑通道判断是否预测正确。如果路预测信息w错误,执行步骤S211至S214,从而实现路径维护。
在步骤S211中,在当前指令D访问顺序路预测器22时,记录访问使用的索引A。
在步骤S212中,由于指令D为非跳转指令,因此,如果发生跨缓存行访问,则计算下一条指令E的索引B=A+1。
在步骤S213中,采用顺序路预测器22提供的路预测信息w进行路选择,访问控制单元101的比较逻辑单元10对所有路缓存行的标记t进行比较,以获得下一条指令E在指令高速缓存118中的路命中信息。
在步骤S214中,如果路命中信息与路预测信息不一致,则在顺序路预测器22的预测缓冲区221中,采用索引A写入路命中信息,作为新的路径预测信息。
在该实施例中,指令高速缓存118为2相组连结构,应用程序中的指令D为非跳转指令。在预译码发现指令包中存在非跳转指令E的跨行访问后,访问控制单元101中的比较逻辑单元10根据顺序路预测的路选择信号ws仅开启单路的数据通道,从而产生大约1/N的动态功耗,其中,N表示指令高级缓存118中的缓存行的路数量。
图9示出根据本发明一个实施例的计算机系统的结构示意图。
计算机计算机系统1000是“中心”系统架构的示例。计算机系统1000可基于目前市场上各种型号的处理器构建,并由WINDOWSTM操作系统版本、UNIX操作系统、Linux操作系统等操作系统驱动。此外,计算机系统1000一般在PC机、台式机、笔记本、服务器中实施。
如图8所示,计算机系统1000包括处理器1002。处理器1002具有本领域所公知的数据处理能力。它可以是复杂指令集(CISC)架构、精简指令集(RISC)架构、超长指令字(VLIW)架构的处理器、或者是实现上述指令集组合的处理器、或者是任何为了专用目标构建的处理器设备。
处理器1002耦接到系统总线1001,系统总线1001可以在处理器1002和其它单元之间传输数据信号。
计算机系统1000还包括存储器1004和显卡1005。存储器1004可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其它存储器设备。存储器1004可以存储由数据信号表示的指令信息和/或数据信息。显卡1005包括显示驱动器,用于控制显示信号在显示屏上的正确显示。
经由存储器控制器1003,显卡1005和存储器1004被耦接到系统总线1001上。处理器1002可以经由系统总线1001与存储器控制器1003通信。存储器控制器1003向存储器1004提供高带宽存储器访问路径421,用于指令信息和数据信息的存储和读取。同时,存储器控制器1003和显卡1005基于显卡信号输入输出接口420进行显示信号的传输。显卡信号输入输出接口420例如为DVI、HDMI等接口类型。
存储器控制器1003不仅在处理器1002、存储器1003和显卡1005之间传输数字信号,而且,实现了在系统总线1001和存储器1004以及输入/输出控制器1006桥接数字信号。
计算机系统1000还包括输入/输出控制器1006,通过专用集线器接口总线422耦接到存储器控制器1003,并经由局部I/0总线将一些I/0设备到输入/输出控制器1006上。局部I/0总线用于将外围设备耦接到输入/输出控制器1006,进而耦接到存储器控制器1003和系统总线1001上。外围设备包括但不限于以下设备:硬盘1007、光盘驱动器1008、声卡1009、串行扩展端口1010、音频控制器1011、键盘1012、鼠标1013、GPIO接口1014、闪存1015和网卡1016。
当然,不同的计算机系统根据主板,操作系统和指令集架构的不同,其结构图也有所变化。例如目前很多计算机系统将存储器控制器103集成到处理器1002的内部,这样输入/输出控制器1006会成为和处理器1002耦接的控制中心。
图10示出根据本发明一个实施例的片上系统的结构示意图。
片上系统2000是单芯片集成的完整系统,可以作为一个独立器件生产和销售,也可以和其他组件结合,形成新的器件进行生产和销售。
片上系统2000可以使用目前市场上多种型号的处理器来制造,并可由WINDOWSTM、UNIX、Linux和Android、RTOS等操作系统进行驱动。片上系统2000可以在计算机设备、手持设备和嵌入式产品中实现。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字摄像机、个人数字助理(PDA)和手持PC。嵌入式产品可以包括网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可以执行一个或多个指令的任何其它系统。
如图9所示,片上系统2000包括经由AHB(Advanced High performance Bus,系统总线)总线2001耦接的处理器2002、静态随机存取存储器2005、LCD控制器2004和闪存2006以及AHB/APB桥2007。
处理器2002可以为复杂指令集(CISC)微处理器、精简指令集(RISC)微处理器、超长指令字(VLIW)微处理器、实现上述指令集组合的微处理器、或任何其它处理器设备中的一种。处理器2001还包括根据本公开实施例提供的技术方案进行改进的处理器核20011,其具体细节将在下文提供。
静态随机存取存储器2005和闪存2006用于存储由数字信号表示的指令信息和/或数据信息。例如,静态随机存取存储器2005可以作为各种应用程序的运行空间,为各种应用程序创建堆、栈、存储中间数据等,闪存2006可以存储各种应用程序的可执行代码和操作系统的可执行代码。
AHB总线2001用于在片上系统2000的高性能模块之间传输数字信号,例如在处理器2002和静态随机存取存储器2005、处理器2002和LCD控制器2004、处理器2002和闪存2006、处理器2002和AHB/APB桥2007之间传输数字信号。
AHB/APB桥2007用于在AHB总线和APB总线之间进行数据传输的桥接,通过锁存来自AHB总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。
片上系统2000还可以包括与APB总线耦接的各种接口。各种接口包括但不限于通过以下接口类型:高容量SD存储卡(SDHC,Secure Digital High Capacity)、I2C总线、串行外设接口(SPI,Serial Peripheral Interface)、通用异步收发传输器(UART,UniversalAsynchronous Receiver/Transmitter)、通用串行总线(USB,Universal Serial Bus)、通用型之输入输出(GPIO,General-purpose input/output)和蓝牙UART。与接口耦接的外围设备例如为USB设备、存储卡、报文收发传输器、蓝牙设备等。
随着片上系统设计复杂性的增加以及处理器处理能力的不断提升,总线结构的性能局限导致总线结构也在更新换代,例如ARM公司在上述AHB总线的基础上又推出更高性能的AXI(Advanced eXtensible Interface)总线,因此可以采用AXI总线取代图上的AHB总线2001,而且,本领域的研发人员也可以基于自身的实际需求改进现有总线结构,或者构建新的总线结构。因此,虽然图上示出AHB总线,但是实际上,SoC对于总线的选择可以是多种多样的。
综上所述,本公开实施例的核心在于提供低功耗实现的指令处理装置。该指令处理装置采用访问控制单元根据路预测信息选择性开启指令高速缓存的访问通道,以降低动态访问功耗。该指令处理装置尤其适用于多种对功耗敏感度较高的场景,例如诸如人体内传感器等无法使用大容量电池的场景,再例如,作为微控制器(MCU),应用于例如刷脸机、指纹机、遥控器、家居设备IoT产品中。在这些场景下,功耗受到产品尺寸和成本的双重限制。对于厂商而言,通过降低功耗可以突破电池尺寸和成本的限制,进而可以使相关品进入到新的潜在市场;同时,通过降低功耗,也能够使现有产品更具性能优势,以进一步扩大市场规模,并获得经济效益。
但在某些情况下,功耗敏感度较高和较低的场景会在一个指令处理装置中交替出现。例如,如果该指令处理装置具有能源获取技术,能够在某种条件下从外部获取能源以提供给指令处理装置,因此,当能源充足时,该指令处理装置可以开启指令高速缓存的多个访问通道,同时从多个访问通道中获取指令以确保一次性地获取到指令,当能源不足时,该指令处理装置可以选择性开启指令高速缓存的访问通道获取指令,以降低动态访问功耗。下面以图1为基础,介绍该实施例变形。如图1所示,将访问控制单元101和一个检测单元(未示出)耦接,该检测单元用于检测系统中的电池能量,当电池能量小于临界点时,向访问控制单元101发送使能信号,访问控制单元101据此开启路预测单元,以降低动态访问功耗,当电池能量大于或者等于临界点时,向访问控制单元101发送截止信号,访问控制单元101据此关闭路预测单元,以确保一次性地获取到指令。
对于本发明,可以在硬件或专用电路、软件、逻辑或其任何组合中实现上述处理单元、处理系统和电子设备。举例来说,可以在硬件中实现一些方面,而可以在可由控制器、微处理器或其它计算设备执行的固件或软件中实现其它方面,尽管本发明并不限于此。虽然可以将本发明的各个方面说明和描述为框图、流程图或使用一些其它的图形表示来说明和描述本发明的各个方面,但是很好理解的是,作为非限制性例子,可以以硬件、软件、回件、专用电路或逻辑、通用硬件或控制器或其它计算设备,或者其某种组合来实现文中所描述的这些块、装置、系统、技术或方法。如果涉及的话,可以在诸如集成电路模块的各种组件中实施本发明的电路设计。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (30)

1.一种指令处理装置,包括:
取指令单元,适于根据程序计数的指令地址获取指令;
执行单元,与所述取指令单元耦接,适于执行所述指令;
指令高速缓存,适于保存采用指令地址访问的指令内容,所述指令高速缓存按照多相组相连结构映射内存的数据块且包括多路缓存行;以及
访问控制单元,耦接在所述取指令单元和所述指令高速缓存之间,适于采用多个数据通道分别读取所述多路缓存行,采用多个选择逻辑通道从所述多路缓存行中选择命中的缓存行,以获取所述指令,
其中,所述访问控制单元包括路预测单元,所述路预测单元根据所述指令的类型获取与所述指令地址相对应的路预测信息,以及根据所述路预测信息开启至少一个数据通道和/或至少一个选择逻辑通道。
2.根据权利要求1所述的指令处理装置,其中,所述路预测单元包括跳转路预测器,在所述指令的类型是跳转指令时,所述跳转路预测器获取所述跳转指令的路预测信息。
3.根据权利要求2所述的指令处理装置,还包括:
分支目标缓冲器,与所述取指令单元和所述访问控制单元耦接,包括适于将分支指令地址、目标地址、路预测信息保存为表项内容的映射表,所述路预测信息表示所述跳转指令的目标地址在所述指令高速缓存中的多路缓存行中的哪一路缓存行,
其中,所述跳转路预测器采用所述跳转指令的指令地址作为索引,查找所述分支目标缓冲器中的分支指令地址,以获得与所述跳转指令相对应的路预测信息。
4.根据权利要求3所述的指令处理装置,其中,所述路预测信息为所述跳转指令的目标地址在所述指令高速缓存中的多路缓存行中的路序号。
5.根据权利要求3所述的指令处理装置,其中,所述访问控制单元还包括路维护单元,
在所述分支目标缓冲器中未命中所述跳转指令的指令地址时,所述访问控制单元执行以下操作:
开启多个数据通道和多个选择逻辑通道;以及
并行读取所述多路缓存行以获得所述跳转指令的目标地址和路命中信息,所述路维护单元执行以下操作:
采用所述跳转指令、所述目标地址和所述路命中信息在所述分支目标缓冲器中新增表项,以执行路维护。
6.根据权利要求5所述的指令处理装置,其中,所述路维护单元还执行以下操作:
暂存所述跳转指令、所述目标地址和所述路命中信息,以及
在所述分支目标缓冲器未命中所述跳转指令后续的跳转指令的指令流空拍期间,执行所述路维护。
7.根据权利要求1所述的指令处理装置,其中,所述路预测单元包括顺序路预测器,在所述指令的类型是非跳转指令时,所述顺序路预测器获取所述非跳转指令的路预测信息。
8.根据权利要求7所述的指令处理装置,其中,所述指令地址包括标记、组索引和块偏移,所述标记和所述组索引用于索引所述多路缓存行中的单个缓存行。
9.根据权利要求8所述的指令处理装置,其中,所述顺序路预测器包括:
预测缓冲区,适于保存所述指令高速缓存中的每个缓存行的路预测信息,所述预测缓冲区在所述非跳转指令位于缓存行边界时,根据所述非跳转指令的指令地址中的组索引获得多个路预测信息;以及
多路选择器,与所述预测缓存区耦接,根据非跳转指令的路命中信息从所述多个路预测信息选择单个路预测信息,以在所述非跳转指令的下一个非跳转指跨缓存行时开启至少一个数据通道,
其中,所述顺序路预测器采用所述非跳转指令的指令地址中的组索引作为索引,查找所述预测缓冲区中与所述非跳转指令相对应的所述多个路预测信息。
10.根据权利要求9所述的指令处理装置,其中,根据所述非跳转指令的指令地址块偏移与所述多路缓存行的相应缓存行的数据块之间的关系,判断所述非跳转指令是否位于所述缓存行边界。
11.根据权利要求9所述的指令处理装置,其中,所述顺序路预测器在开启至少一个数据通道的同时,开启所述多个选择逻辑通道。
12.根据权利要求9所述的指令处理装置,其中,所述预测缓冲器区的大小为N*S*log2N个比特,其中,S表示所述多路缓冲行的组数量,N表示所述多路缓冲行的路数量。
13.根据权利要求12所述的指令处理装置,其中,所述路预测信息为所述非跳转指令的下一缓存行在所述指令高速缓存中的多路缓存行中的路序号。
14.根据权利要求11所述的指令处理装置,其中,所述访问控制单元还包括路维护单元,
在所述顺序路预测器选择单个路预测信息以开启至少一个数据通道之后,
所述访问控制单元执行以下操作:
在所述多个逻辑通道中,将所述指令地址的标记与所述多路缓存行的标记进行比较;所述路维护单元执行以下操作:
根据所述多个逻辑通道的比较结果判断选择的单个路预测信息是否正确;以及
在所述选择的单个路预测信息错误的情形下,根据路缓存行的下一个非跳转指令的命中路信息更新所述预测缓冲区,以实现路维护。
15.一种用于指令高速缓存的路预测方法,所述指令高速缓存适于保存采用指令地址访问的指令内容,按照多相组相连结构映射内存的数据块且包括多路缓存行,所述路预测方法包括:
根据程序计数的指令地址获取指令;
根据所述指令的类型获取与所述指令地址相对应的路预测信息;
根据所述路预测信息开启多个数据通道中的至少一个数据通道和/或多个选择逻辑通道中的至少一个选择逻辑通道;以及
采用所述指令地址作为索引,从所述多路缓冲行中选择与所述指令地址相对应的缓存行,以获取所述指令。
16.根据权利要求15所述的路预测方法,其中,在所述指令的类型是跳转指令时,获取所述跳转指令的路预测信息。
17.根据权利要求16所述的路预测方法,还包括:
采用分支目标缓冲器保存所述跳转指令的路预测信息,所述分支目标缓冲器是适于将分支指令地址、目标地址、路预测信息保存为表项内容的映射表,所述路预测信息表示所述跳转指令的目标地址在所述指令高速缓存中的多路缓存行中的哪一路缓存行,
其中,获取所述跳转指令的路预测信息的步骤包括采用所述跳转指令的指令地址作为索引,查找所述分支目标缓冲器中的分支指令地址,以获得与所述跳转指令相对应的路预测信息。
18.根据权利要求17所述的路预测方法,其中,所述路预测信息为所述跳转指令的目标地址在所述指令高速缓存中的多路缓存行中的路序号。
19.根据权利要求17所述的路预测方法,在所述分支目标缓冲器中未命中所述跳转指令的指令地址时,还包括:
开启多个数据通道和多个选择逻辑通道;
并行读取所述多路缓存行以获得所述跳转指令的目标地址和路命中信息;
采用所述跳转指令、所述目标地址和所述路命中信息在所述分支目标缓冲器中新增表项,以执行路维护。
20.根据权利要求19所述的路预测方法,还包括:
暂存所述跳转指令、所述目标地址和所述路命中信息,以及
在所述分支目标缓冲器未命中所述跳转指令后续的跳转指令的指令流空拍期间,执行所述路维护。
21.根据权利要求15所述的路预测方法,其中,在所述指令的类型是非跳转指令时,所述顺序路预测器获取所述非跳转指令的路预测信息。
22.根据权利要求21所述的路预测方法,其中,所述指令地址包括标记、组索引和块偏移,所述标记和所述组索引用于索引所述多路缓存行中的单个缓存行。
23.根据权利要求22所述的路预测方法,还包括:
建立预测缓冲区,所述预测缓冲区适于保存所述指令高速缓存中的每个缓存行的路预测信息,所述预测缓冲区在所述非跳转指令位于缓存行边界时,根据所述非跳转指令的指令地址中的组索引获得多个路预测信息;以及
根据非跳转指令的路命中信息从所述多个路预测信息选择单个路预测信息,以在所述非跳转指令的下一个非跳转指跨缓存行时开启至少一个数据通道,
其中,所述顺序路预测器采用所述非跳转指令的指令地址中的组索引作为索引,查找所述预测缓冲区中与所述非跳转指令相对应的所述多个路预测信息。
24.根据权利要求23所述的路预测方法,其中,根据所述非跳转指令的指令地址块偏移与所述多路缓存行的相应缓存行的数据块之间的关系,判断所述非跳转指令是否位于所述缓存行边界。
25.根据权利要求24所述的路预测方法,其中,在开启至少一个数据通道的同时,开启所述多个选择逻辑通道。
26.根据权利要求24所述的路预测方法,其中,所述预测缓冲器区的大小为N*S*log2N个比特,其中,S表示所述多路缓冲行的组数量,N表示所述多路缓冲行的路数量。
27.根据权利要求26所述的路预测方法,其中,所述路预测信息为所述非跳转指令在所述指令高速缓存中的多路缓存行中的路序号。
28.根据权利要求26所述的路预测方法,在选择单个路预测信息以开启至少一个数据通道之后,还包括:
在所述多个逻辑通道中,将所述指令地址的标记与所述多路缓存行的标记进行比较;
根据所述多个逻辑通道的比较结果判断选择的单个路预测信息是否正确;以及
在所述选择的单个路预测信息错误的情形下,根据路缓存行的下一个非跳转指令的命中路信息更新所述预测缓冲区,以实现路维护。
29.一种计算机系统,包括如权利要求1-14任一项所述的指令处理装置。
30.一种片上系统,包括如权利要求1-14任一项所述的指令处理装置。
CN201910912797.5A 2019-09-25 2019-09-25 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 Pending CN112559049A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910912797.5A CN112559049A (zh) 2019-09-25 2019-09-25 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置
US17/017,047 US11720365B2 (en) 2019-09-25 2020-09-10 Path prediction method used for instruction cache, access control unit, and instruction processing apparatus
PCT/US2020/050129 WO2021061411A1 (en) 2019-09-25 2020-09-10 Path prediction method used for instruction cache, access control unit, and instruction processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910912797.5A CN112559049A (zh) 2019-09-25 2019-09-25 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置

Publications (1)

Publication Number Publication Date
CN112559049A true CN112559049A (zh) 2021-03-26

Family

ID=74881851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910912797.5A Pending CN112559049A (zh) 2019-09-25 2019-09-25 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置

Country Status (3)

Country Link
US (1) US11720365B2 (zh)
CN (1) CN112559049A (zh)
WO (1) WO2021061411A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114090077A (zh) * 2021-11-24 2022-02-25 海光信息技术股份有限公司 调取指令的方法及装置、处理装置及存储介质
CN114528229A (zh) * 2022-04-21 2022-05-24 飞腾信息技术有限公司 一种缓存数据访问方法、装置及电子设备
CN115328821A (zh) * 2022-10-18 2022-11-11 北京红山微电子技术有限公司 基于GPU的可重构Cache系统、访存系统及访存方法
TWI792546B (zh) * 2021-09-09 2023-02-11 瑞昱半導體股份有限公司 用於管線化控制的設備以及方法
WO2023174126A1 (zh) * 2022-03-17 2023-09-21 阿里巴巴(中国)有限公司 一种数据处理方法及装置
CN117331858A (zh) * 2023-11-30 2024-01-02 摩尔线程智能科技(北京)有限责任公司 存储装置及数据处理系统
CN117472798A (zh) * 2023-12-28 2024-01-30 北京微核芯科技有限公司 高速缓存的路预测方法、装置、电子设备及存储介质
US12008375B2 (en) 2022-06-08 2024-06-11 Ventana Micro Systems Inc. Branch target buffer that stores predicted set index and predicted way number of instruction cache
US12014178B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Folded instruction fetch pipeline
US12014180B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Dynamically foldable and unfoldable instruction fetch pipeline
US12020032B2 (en) 2022-08-02 2024-06-25 Ventana Micro Systems Inc. Prediction unit that provides a fetch block descriptor each clock cycle
US12106111B2 (en) 2022-08-02 2024-10-01 Ventana Micro Systems Inc. Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11366590B2 (en) * 2019-10-11 2022-06-21 EMC IP Holding Company LLC Host device with multi-path layer providing dynamic control of one or more path selection algorithms
CN115225572B (zh) * 2022-07-13 2023-05-26 阿里巴巴(中国)有限公司 路由信息的处理方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4134392A1 (de) * 1990-10-17 1992-04-23 Mitsubishi Electric Corp Verfahren und vorrichtung zum ungueltigmachen von befehlen in geraeten mit parallelverarbeitung
US20080120496A1 (en) * 2006-11-17 2008-05-22 Bradford Jeffrey P Data Processing System, Processor and Method of Data Processing Having Improved Branch Target Address Cache
CN101727311A (zh) * 2009-12-03 2010-06-09 浙江大学 用于降低指令缓存功耗的分支序列缓冲器
CN102306092A (zh) * 2011-07-29 2012-01-04 北京北大众志微系统科技有限责任公司 超标量处理器实现指令缓存路选择的方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5752259A (en) * 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
US6418525B1 (en) * 1999-01-29 2002-07-09 International Business Machines Corporation Method and apparatus for reducing latency in set-associative caches using set prediction
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
US8892924B2 (en) * 2011-05-31 2014-11-18 Intel Corporation Reducing power consumption of uncore circuitry of a processor
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9529643B2 (en) * 2015-01-26 2016-12-27 Qualcomm Incorporated Method and system for accelerating task control flow
US10719321B2 (en) * 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11126714B2 (en) 2017-11-29 2021-09-21 Arm Limited Encoding of input to storage circuitry
GB2572780B (en) * 2018-04-10 2020-07-15 Advanced Risc Mach Ltd An Apparatus and Method for Controlling Allocation Of Instructions Into An Instruction Cache Storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4134392A1 (de) * 1990-10-17 1992-04-23 Mitsubishi Electric Corp Verfahren und vorrichtung zum ungueltigmachen von befehlen in geraeten mit parallelverarbeitung
US20080120496A1 (en) * 2006-11-17 2008-05-22 Bradford Jeffrey P Data Processing System, Processor and Method of Data Processing Having Improved Branch Target Address Cache
CN101727311A (zh) * 2009-12-03 2010-06-09 浙江大学 用于降低指令缓存功耗的分支序列缓冲器
CN102306092A (zh) * 2011-07-29 2012-01-04 北京北大众志微系统科技有限责任公司 超标量处理器实现指令缓存路选择的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
梁静;陈志坚;孟建熠;: "基于循环的指令高速缓存访问预测方法", 计算机应用研究, no. 07, 15 July 2012 (2012-07-15) *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI792546B (zh) * 2021-09-09 2023-02-11 瑞昱半導體股份有限公司 用於管線化控制的設備以及方法
CN114090077A (zh) * 2021-11-24 2022-02-25 海光信息技术股份有限公司 调取指令的方法及装置、处理装置及存储介质
WO2023174126A1 (zh) * 2022-03-17 2023-09-21 阿里巴巴(中国)有限公司 一种数据处理方法及装置
CN114528229A (zh) * 2022-04-21 2022-05-24 飞腾信息技术有限公司 一种缓存数据访问方法、装置及电子设备
US12014178B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Folded instruction fetch pipeline
US12014180B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Dynamically foldable and unfoldable instruction fetch pipeline
US12008375B2 (en) 2022-06-08 2024-06-11 Ventana Micro Systems Inc. Branch target buffer that stores predicted set index and predicted way number of instruction cache
US12106111B2 (en) 2022-08-02 2024-10-01 Ventana Micro Systems Inc. Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block
US12020032B2 (en) 2022-08-02 2024-06-25 Ventana Micro Systems Inc. Prediction unit that provides a fetch block descriptor each clock cycle
CN115328821A (zh) * 2022-10-18 2022-11-11 北京红山微电子技术有限公司 基于GPU的可重构Cache系统、访存系统及访存方法
CN115328821B (zh) * 2022-10-18 2022-12-23 北京红山微电子技术有限公司 基于GPU的可重构Cache系统、访存系统及访存方法
CN117331858A (zh) * 2023-11-30 2024-01-02 摩尔线程智能科技(北京)有限责任公司 存储装置及数据处理系统
CN117331858B (zh) * 2023-11-30 2024-01-30 摩尔线程智能科技(北京)有限责任公司 存储装置及数据处理系统
CN117472798B (zh) * 2023-12-28 2024-04-09 北京微核芯科技有限公司 高速缓存的路预测方法、装置、电子设备及存储介质
CN117472798A (zh) * 2023-12-28 2024-01-30 北京微核芯科技有限公司 高速缓存的路预测方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US11720365B2 (en) 2023-08-08
US20210089314A1 (en) 2021-03-25
WO2021061411A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
CN112559049A (zh) 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US7743232B2 (en) Multiple-core processor with hierarchical microcode store
US20150186293A1 (en) High-performance cache system and method
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
CN112631657B (zh) 用于字符串处理的字节比较方法以及指令处理装置
US20080082755A1 (en) Administering An Access Conflict In A Computer Memory Cache
US9753855B2 (en) High-performance instruction cache system and method
KR101839479B1 (ko) 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
JPH10177481A (ja) 改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法
US11704131B2 (en) Moving entries between multiple levels of a branch predictor based on a performance loss resulting from fewer than a pre-set number of instructions being stored in an instruction cache register
KR20130141396A (ko) 루프 버퍼 패킹
US10481912B2 (en) Variable branch target buffer (BTB) line size for compression
US11436146B2 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
US20210042146A1 (en) Systems, Methods, and Apparatuses for Resource Monitoring
US10691460B2 (en) Pointer associated branch line jumps for accelerated line jumps
US20220197662A1 (en) Accessing A Branch Target Buffer Based On Branch Instruction Information
US20120173850A1 (en) Information processing apparatus
US9342303B2 (en) Modified execution using context sensitive auxiliary code
CN113568663A (zh) 代码预取指令
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
EP3989063B1 (en) High confidence multiple branch offset predictor

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