CN101256481B - 数据处理器以及存储器读激活控制方法 - Google Patents

数据处理器以及存储器读激活控制方法 Download PDF

Info

Publication number
CN101256481B
CN101256481B CN200810083121.1A CN200810083121A CN101256481B CN 101256481 B CN101256481 B CN 101256481B CN 200810083121 A CN200810083121 A CN 200810083121A CN 101256481 B CN101256481 B CN 101256481B
Authority
CN
China
Prior art keywords
data
instruction
branch instruction
storer
branch
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.)
Expired - Fee Related
Application number
CN200810083121.1A
Other languages
English (en)
Other versions
CN101256481A (zh
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.)
Socionext Inc
Original Assignee
Socionext 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 Socionext Inc filed Critical Socionext Inc
Publication of CN101256481A publication Critical patent/CN101256481A/zh
Application granted granted Critical
Publication of CN101256481B publication Critical patent/CN101256481B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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
    • 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
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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/6032Way prediction in set-associative 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明提供了一种数据处理器以及存储器读激活控制方法。指令缓冲存储器具有以下部件:多个存储器(例如缓存路);用以存储分支指令的条件分支发生或未发生的预测数据并且用以当预测是分支发生时存储多个存储器当中存储分支指令数据的存储器的预测数据的装置(3);以及用以当将要被执行的指令是分支指令时,通过使用两个利用与分支指令相对应的索引的方式而获取的预测数据,输出读激活控制信号至多个存储器(1)的装置。

Description

数据处理器以及存储器读激活控制方法
技术领域
本发明涉及数据处理器,并且尤其涉及具有多路指令缓存(cache)的诸如微处理器和图像处理器之类的数据处理器,以及用于减少数据处理器的功耗的多路读激活控制方法。
背景技术
图1是具有指令缓存的传统数据处理器系统的结构示例的框图。在图1中,微处理器100连接至作为外部存储器的外部RAM 101。微处理器100具有以下部件:执行单元102,用以执行指令,指令缓存单元103,用以临时地存储指令数据;动态分支预测器(dynamic branch predictor)104,用以当将要被执行的指令是分支指令时,输出预测(条件)分支是否发生的分支预测数据;以及选择器105,用以选择来自外部RAM 101的指令数据或存储在指令缓存单元103的指令数据并且用以提供选择的指令数据给执行单元102。
如果通过指令地址指定的并且由执行单元102请求的指令数据没有存储在指令缓存单元103中,则相应的指令数据从外部RAM 101中读取并且提供给执行单元102,并且相应的指令数据还被存储在指令缓存单元103中。
如果执行单元102再次请求相同的指令数据,则相应的指令数据从指令缓存单元103中读取并且通过选择器105提供给执行单元102。通常,对指令缓存单元103的访问时间快于对外部RAM 101的访问时间,并且作为其结果,通过设置指令缓存单元可能减少从指令读取到指令执行所需的时间。
图2是说明使用图1中的动态分支预测器104的动态分支预测的传统实例的图。该实例通常被称为Gshare预测器。图1中描述的用以响应分支指令而预测(条件)分支是否发生的动态分支预测器104具有图2中的程序计数器110,分支历史寄存器(branch history Register,BHR)111,异或运算器(XOR)112,以及模式历史表(pattern history table,PHT)113。动态分支预测器104的操作在非专利文献1中描述了。注意在非专利文献1中,PHT 113被称为计数器表。
在图2中,BHR 111一个接一个地转移以前分支指令的执行结果而不考虑分支指令的地址,并且将执行结果存储为全局分支历史。具有m个位的数据从BHR 111中输出,XOR 112对m位数据和从程序计数器110中输出的n(≥m)位的指令地址执行异或运算,并且计算后的n位被用作在PHT中执行检索的索引。如上所述,通过使用来自PC 110的n位输出和来自BHR 111的m位输出的异或运算结果作为在PHT 113中检索的索引,这可能以与分支指令地址大体上一对一相关的形式在PHT 113中存储与分支指令相对应的分支预测数据而不会产生对PHT 113中多个条目的一部分的分支预测数据(即,预测数据)偏离。
存储在PHT 113的每个条目中的预测数据针对每个条目具有两个位。在预测数据中,值响应于分支指令的每次执行中(条件)分支是否发生,即,发生/未发生这一结果而变化。值等于计数器在分支发生时加“1”以及在分支未发生时减“1”的计数值。
图2的右半部分是说明分支预测数据(预测数据)的状态转换的图。在非专利文献1中,存储在PHT 113的每个条目中的分支预测数据是除反映作为相应的分支指令的前一个执行结果的是否发生分支之外还反映在前分支预测成功或失败的数据。
强发生状态(条目的数据11)例如表示响应于在前分支指令的执行结果而发生分支指令的预测并且在前分支预测成功,而弱发生状态(10)表示尽管分支指令的预测发生但在前预测失败。按照上述方式,强未发生(00)和弱未发生(01)表示各自状态。
如果图1的指令缓存单元103具有多个缓存路,则通过预测存储由执行单元102请求的指令数据的路并且使得被预测的路芯片使能(chip-enabled)以及其他路芯片禁止(chip-disabled),可能减少功耗,并且作为其结果,可提供能以低功耗操作的具有指令缓存单元的数据处理器。
图3是能够以低功耗操作的并且被描述在作为现有技术的专利文献1中的指令缓存单元的结构框图。图3中的单元的操作通过使用图4中的指令序列示例来说明。图4中示出了包括分支指令的指令序列示例。这里,图3中的指令缓存单元的操作基于下列假设而被说明:四个连续指令被算作一个块(block)并且与一个块中的指令相对应的指令数据仅被存储在多个缓存路中的一个路中。
在图3中,指令缓存单元具有以下部件:指令地址寄存器120,用以存储指令地址;对应多个缓存路的多个(在本发明中是两个)缓存RAM1210和1211;分别与两个缓存RAM 1210和1211对应的标记(tag)RAM1220和1221;两个比较器1230和1231,用以将两个标记RAM的输出和从指令地址寄存器输出的标记地址比较;块首侦测器124,用以侦测使用块偏移量作为指令地址一部分的块的首指令;命中/未命中确定逻辑电路125,用以响应于两个比较器1230和1231的输出、块首侦测器124的输出以及条目有效信号而确定由两个缓存RAM 1210和1211中的任何一个请求的指令数据是否被存储(命中)或未被存储(未命中),所述条目有效信号从标记RAM 1220和1221输出,表示值数据被存储在相应缓存RAM1210和1211中由标记RAM 1220和1221输出的地址所指定的条目中;两个反相器(inverter)1260和1261,用以将缓存RAM读激活(ReadActive)信号反相,并且用以提供反相后的信号给负逻辑(图3中省略了开圆)的芯片使能(CE)端,所述读激活信号是从命中/未命中确定逻辑电路125中输出并且致使缓存RAM 1210和1211中的每一个为读激活或芯片使能的信号;以及选择器127,用以选择并输出从缓存RAM 1210和1211中存储有被请求的指令数据的任何一个输出的指令数据。
下面进一步说明图3中的指令缓存单元的功耗减少的效果。
在通过块首侦测器124侦测为块首的指令的地址被提供的周期内,命中/未命中确定逻辑电路125致使两个缓存RAM 1210和1211的缓存RAM读激活信号为“H”,使得两个缓存RAM芯片使能,并且使能从两个缓存RAM的指令数据读取。
在接下来的周期内(指令的下一个地址被提供),命中/未命中确定逻辑电路125仅仅让与具有比较器输出“H”以及标记RAM输出作为条目有效性信号的“H”的比较器和标记RAM的组合相对应的缓存RAM的缓存RAM读激活信号保留为“H”,并且改变其它缓存RAM的缓存RAM读激活信号为“L”。在块的末尾两个指令地址被提供的两个周期内,相同的读激活控制状态被保持从而能够实现功耗的减少。注意如果两个缓存RAM 1210和1211都没有存储被请求的指令数据,则从命中/未命中确定逻辑电路125输出缓存未命中信号,并且如上所述的来自外部RAM 101的指令数据读取被执行。
然而,在专利文献1中,存在这样的问题:当与从执行单元输出的指令地址相对应的指令是分支指令时,两个缓存RAM处于与块首指令侦测时相同的芯片使能状态。功耗在分支指令侦测时不被减少,因而不能获得充分的功耗减少的效果。
在专利文献2中,其显示了用以从多个指令缓存路中预测存储被请求的指令数据的路的传统技术,通过在各种位置如分支目标缓冲器(branchtarget buffer)、指令缓存以及操作数历史表(operand history table)中存储与被访问的组相关存储器(set associative memory)有关的组预测信息,以及通过减少对指令和数据的组相关缓存的访问的延迟,从而实现了一种用以减少功耗的技术。然而,为了实现该技术,需要存储标记地址和目标地址的高容量分支目标缓冲器,这种大容量存储的附加增加了功耗,这是一个问题。
专利文献3描述了这样一种指令缓存路预测的传统技术,其公开了一种附加缓存路预测存储器被提供从而有利于非连续指令的缓冲存储的用以处理非连续指令的技术。然而,专利文献3中的技术具有如下问题:针对缓存路预测仅仅有最近路命中/未命中结果被保存,并且无法期望分支预测和缓存路预测的高准确性。
[非专利文献1]
S.McFarling:“Combining Branch Predictors”,Technical Note TN-36,Western Research Laboratory(1993年6月)
[专利文献1]
日本专利申请公开号No.2002-196981“Data Processor”
[专利文献2]
日本专利申请公开号No.2000-222205“Method and Device forReducing Delay of Set Associative Cache by Set Prediction”
[专利文献3]
日本专利申请公开号No.2005-535955“Instruction Cache WayPrediction for Jump Targets”
发明内容
根据一个实施例的一个方面,一种数据处理器包含以下部件:具有多个存储器的指令缓冲存储器(instruction cache memory);分支预测数据存储单元,用以存储分支指令的条件分支发生或未发生的预测数据,并且在条件分支发生的情况中,所述分支预测数据存储单元存储多个存储器当中存储该分支指令的数据的存储器的预测数据;以及读激活控制单元,用以当将要被执行的指令是分支指令时,通过使用从分支预测数据存储单元中利用与分支指令相对应的索引而获取的条件分支发生或未发生的预测数据,以及存储器的预测数据来将读激活控制信号输出至多个存储器。
附图说明
图1是传统数据处理器系统的结构示例框图;
图2是说明动态分支预测的传统实例的图;
图3是指令缓存单元的传统结构框图;
图4是通过数据处理器执行的指令序列的示例;
图5是本发明数据处理器的结构原理框图;
图6是当前实施例的数据处理系统结构示例框图;
图7是当前实施例的指令缓存单元和动态分支预测器的结构框图;
图8是图7的命中/未命中确定逻辑电路的结构框图;
图9是说明输出分支预测数据的系统的图;
图10是说明分支预测数据的状态转换的图;
图11是说明缓存路的读激活信号的确定逻辑的图;
图12是图8的读激活控制电路的结构示例电路图;
图13是数据处理器操作的第一示例的时间图;
图14是数据处理器操作的第二示例的时间图;以及
图15是数据处理器操作的第三示例的时间图。
具体实施方式
图5是当前实施例的数据处理器的结构原理框图。在图5中,数据处理器包含具有多个存储器1的指令缓冲存储器2,分支预测数据存储装置3,读激活控制装置4,命中/未命中确定装置5,以及索引生成装置6,并且还包含在图中未示出的执行单元。
分支预测数据存储装置3例如是模式历史表,并且存储分支指令是否发生的预测数据以及多个存储器1中的一个的预测数据,该存储器在预测是分支指令发生时,存储分支指令数据。
读激活控制装置4例如是读激活控制电路;当将要被执行的指令是分支指令时,其响应于与分支指令相对应的并且从索引生成装置6输出的索引,通过使用从分支预测数据存储装置3输出的(条件)分支是否发生的预测数据以及存储器预测数据而输出读激活控制信号至多个存储器1。
命中/未命中确定装置5响应于将要被执行的指令的地址而输出表示存储指令数据的存储器的数据至读激活控制装置4。当将要被执行的指令不是分支指令或者当指令是分支指令但其被预测为分支不发生时,读激活控制装置4将表示存储器的数据作为读激活控制信号输出至多个存储器1。
如上所述,在当前实施例中,通过输出读激活控制信号以导致多个存储器1中被预测为存储分支指令数据的存储器1被激活,其它存储器1的功耗被减少。
图6是当前实施例的数据处理系统的结构示例。在图6中,如图1的现有技术一样,微处理器10连接至外部RAM 11,并且在微处理器内部具有执行单元12、指令缓存单元13,以及动态分支预测器14。对比图1,当前实施例的根本区别是当前实施例的指令缓存的路预测数据是从动态分支预测器14提供给指令缓存单元13。
图7是当前实施例的指令缓存单元13和动态分支预测器14的结构框图。指令缓存单元13类似于图3的传统实例,具有以下部件:指令地址寄存器20;对应于指令缓存的多个路的多个(在本发明中是两个)缓存RAM 210和211;与每个缓存RAM相对应的标记RAM 220和221;标记比较器230和231;块首侦测器24;命中/未命中确定逻辑电路25;反相器260和261;以及选择器27。与图3的传统实例的根本区别是从动态分支预测器14输出的分支预测数据被提供给指令缓存单元13的命中/未命中确定逻辑电路25。
在图7中,指令地址从指令地址寄存器20提供给动态分支预测器14,取代图2中传统实例的程序计数器。指令地址和分支历史寄存器(BHR)28的输出的异或通过XOR 29来执行,并且将异或数据作为索引,检索模式历史表(PHT)30的条目。存储在条目中的分支预测数据(预测数据)被提供给命中/未命中确定逻辑电路25,并且还被提供给图6中的执行单元12。在图2的传统实例中,存储在模式历史表(PHT)的每个条目中的数据具有2个位;然而,在当前实施例中,数据具有3个位,这将在后面被说明。注意本发明权利要求3中的索引生成单元与BHR 28和XOR 29相对应。
图8是图7的指令缓存单元13中的命中/未命中确定逻辑电路25的详细结构框图。在图8中,命中/未命中确定逻辑电路25包含两个与(AND)门320和321、或非(NOR)门33、两个或(OR)门340和341,以及读激活控制电路35。
与图7中两个缓存RAM 210和211相对应的标记地址比较器230和231的输出和从标记RAM 220和221输出的表示缓存RAM 210和211中与标记地址相对应的条目中存储的指令数据有效的条目有效信号被输入至AND门320和321,并且当两个输入都是“H”时,从AND门输出“H”。
AND门320的输出被提供给NOR门33和两个OR门340和341,并且还被作为选择控制信号提供给选择器27。选择器27例如在AND门320的输出是“H”时,选择来自缓存RAM 210的指令数据输出,并且在输出是“L”时,选择来自缓存RAM 211的指令数据输出。
AND门321的输出也被提供给NOR门33,并且当两个AND门320和321的输出都是“L”时,缓存未命中侦测信号,也就是,表示两个缓存RAM 210和211都没有存储相应的指令数据的信号,从NOR门输出。响应于缓存未命中侦测信号,指令数据从图6的外部RAM 11中读取并且被提供给执行单元12,并且同时,指令数据被存储在指令缓存单元13中。
AND门320的输出和块首侦测单元24的输出被提供给两个OR门340和341中的每一个。OR门341的两个输入端中,提供有AND门320的输出的输入端具有负逻辑。
当AND门320的输出或者块首侦测单元24的输出是“H”时,OR门340输出为“H”的路0激活信号至读激活控制电路35。当AND门320的输出是“L”或者块首侦测单元24的输出是“H”时,OR门341输出为“H”的路1激活信号至读激活控制电路35。
例如,当与指令地址相对应的指令不是分支指令时,被提供给读激活控制电路35的路0激活信号和路1激活信号分别作为缓存RAM#0读激活信号和缓存RAM#1读激活信号从读激活控制电路35提供给反相器260和261。相应的缓存RAM 210和211被芯片使能,并且作为其结果,指令数据的读取被允许。因此,从图6中未示出的中央处理单元(CPU)输出的(例如)分支指令侦测信号被提供给读激活控制电路35。此外,作为动态分支预测器14的输出的分支预测(预测)数据还被提供给读激活控制电路35。读激活控制电路35的结构在后面被说明。应当注意本发明权利要求2中的命中/未命中确定单元对应于命中/未命中确定逻辑电路25的一部分,不包括读激活控制电路35,并且表示存储指令数据的存储器的信号对应于路0激活信号和路1激活信号。
图9是说明当前实施例从动态分支预测器输出分支预测数据(预测数据)的系统的图。在图9中,预测数据输出系统与图2的传统实例大部分相同,其中作为程序计数器37的输出的n位指令地址和从分支历史寄存器27输出的m位分支历史数据的异或通过XOR 28执行,n位数据结果被作为索引提供给模式历史表(PHT),并且基于索引而检索的3位条目数据被作为分支预测数据输出。
图10是说明存储在模式历史表的每个条目中的分支预测数据的状态转换的图。图10和图2中状态转换的传统实例的对比显示区别如下:强发生预测数据具有三个状态,两个缓存RAM 210和211(即路0或路1)中的一个被预测的状态以及没有路被预测(即缓存未命中)的状态;换言之,预测数据被划分为三个部分:预测路0的预测数据“100”、预测路1的“101”,以及预测缓存未命中的“011”。响应于分支指令的执行结果,状态转换在与每个状态对应的数据之间执行。
应当注意在图10中,触发强发生的三个状态和弱发生之间的状态转换的发生/命中表示分支发生以及缓存路的预测命中。发生/未命中表示缓存路的预测失败,包括分支发生但出现缓存未命中的情况。此外,在例如在强发生/路1状态下路预测失败且路0将要被读激活的情况中,状态转换至强发生C-未命中状态。在分支发生在弱发生状态并且分支指令数据从缓存中读取的情况中,识别路0还是路1命中,并且因此,响应于该结果而执行状态转换。
图11是说明响应于图10的分支预测数据的每个状态而提供给图7的两个反相器260和261的缓存RAM读激活信号的确定逻辑的图。在图11中,当分支指令侦测信号为“0”,也就是,当与存储在指令地址寄存器20的指令地址对应的指令不是分支指令时,从读激活控制电路35输出的两个缓存RAM的读激活信号是作为读激活控制电路35的输入的路0激活信号和路1激活信号。
在分支预测数据是“000”或“001”的情况中,也就是,当即使分支指令侦测信号为“1”而数据预测分支未发生时,和在分支指令侦测信号为“0”的情况中一样,输入至读激活控制电路35的路0激活信号和路1激活信号被用作缓存读激活信号。
在分支指令侦测信号的值为“1”并且即使分支预测数据为弱发生或者强发生而状态为缓存未命中,即“010”或者“011”的情况中,状态是在前分支预测失败,并且缓存路预测不稳定。其结果是,对应于两个缓存RAM 210和211的读激活信号的值都为“1”,即“H”,并且缓存RAM210和211都处于芯片使能的状态。
最后,在分支指令侦测信号的值为“1”并且预测数据具有分别表示强发生/缓存路0或者强发生/缓存路1的值“100”或者“101”的情况中,使得对应于各个预测路的缓存RAM 210和211的芯片使能的读激活信号被输出。
图12是读激活控制电路的结构示例的电路图。在图12中,读激活控制电路具有7个AND门40-46,4个OR门47-50,以及两个选择器51和52。
从图9的PHT 29输出的预测数据,即3位分支预测数据被提供给5个AND门40-44。前2位只被提供给AND门40,并且该AND门的两个输入端都具有负逻辑。AND门41的最高位的输入端和输入端的最低位、AND门42的最高位的输入端、AND门43的最低位和中间位的输入端,以及AND门44的中间位的输入端也具有负逻辑。
作为具有负逻辑的结果,表示未发生的信号从AND门40提供给AND门45和46。当分支预测未发生,也就是当分支未发生时,AND门45和46分别将提供给其它输入端的路0激活信号和路1激活信号输出到OR门49和50。
当AND门41、42或者43的输出是“H”,也就是,当分支预测数据是弱发生、强发生/缓存未命中,或者强发生/缓存路0时,OR门47输出“H”至OR门49。
当分支预测数据是弱发生、强发生/缓存未命中,或者强发生/缓存路1时,OR门48输出“H”至OR门50。
当分支预测数据是未发生时,OR门49输出路0激活信号至选择器51的输入端1,以及当分支预测数据表示弱发生、强发生/缓存未命中,或者强发生/缓存路0时,OR门49输出“H”至选择器51的输入端1。
当分支预测数据是未发生时,OR门50输出路1激活信号至选择器52的输入端1,以及当分支预测数据是弱发生、强发生/缓存未命中,或者强发生/缓存路1时,OR门50输出“H”至选择器52的输入端1。
选择器51和52中每一个的另一个输入端,也就是输入端0,分别被提供路0激活信号或路1激活信号。选择器51和52根据分支指令侦测信号的值是“0”还是“1”而从输入端0或1中选择任一信号,并且输出选择的信号作为读激活信号至缓存RAM。
图13至图15是当前实施例的数据处理器操作示例的时间图。这些时间图基于下列假设而被说明:在图4所说明的当前实施例中,一个指令块由四个指令组成并且针对一个块中的四个指令的缓存路在对指令序列的顺序访问时不改变。
在图13中,分支指令在第三个周期被侦测。当前实施例假设当分支指令被侦测时,作为惩罚(penalty),指令数据的读取在下一个周期不执行并且两个缓存路的读激活信号是“L”。惩罚可应用至下两个或更多周期。
假设响应于分支指令从PHT读取的预测数据是“101”,预测了条件分支发生,并且路1被预测为缓存路。当这个情况发生时,分支预测数据在第四个周期被输出,并且作为其结果,在第五个周期,路1的读激活信号是“H”,但路0的读激活信号仍然为“L”。
在当前实施例中,分支指令的执行结果在从地址被提供的周期开始第三个周期内被识别。当分支预测失败时,表示失败的信号变为“H”,并且响应于该信号,存储在PHT的条目中的分支预测数据被更新。这里,表示分支未发生的失败信号在第六个周期为“H”,并且表示图10状态转换图中弱发生的“010”被存储在PHT的条目中。
图13的底部说明除使用在专利文献1所描述的传统技术的功耗减少的效果之外的当前实施例的功耗减少的效果。在传统技术中,读激活状态在块首指令周期的下一个周期被保持的路对于相同块的指令仍然是读激活的。换言之,在第二个周期和第三个周期,通过路1的读激活信号为“L”来减少功耗。按照相同的方式,从第六个周期至第八个周期,仅仅是读激活的路被保持在读激活状态,因而能够实现功耗减少的效果。
如上所述,在当前实施例中,作为第四个周期的分支指令的惩罚,两个路的读激活信号是“L”,并且响应于该周期读取的预测数据,路1的读激活信号在第五个周期变为“H”,而路0的读激活信号保持“L”。在传统技术中,如上所述,当分支指令被侦测时,两个路的激活信号都是“H”,因而路0的读激活信号在第五个周期是“H”。另一方面,在当前实施例中,路0的读激活信号在第五个周期是“L”,导致增加了功耗减少的效果。
图14是第二操作示例的时间图。在图14中,一直到第四个周期的操作都与图13中的相同。在第五个周期,下一个分支指令被读取,并且响应于第五个周期的操作,指令的读取在第六个周期不被执行。此外,两个路的读激活信号都为“L”。
响应于下一个分支指令,“100”被作为预测数据从PHT中读出,并且通过使用分支预测数据,路0的读激活信号在第七个周期变为“H”;然而,路1的读激活信号仍然是“L”。与传统技术相比,当前实施例甚至在第七个周期达到了功耗的减少。应当注意因为作为下一个分支指令的执行结果的条件分支是“发生”并且缓存路预测成功,所以分支预测失败信号不被输出,并且PHT没有被更新。
操作的第三示例在图15中示出,因为与在第三个周期提供的分支指令相对应的预测数据是“000”并且预测了条件分支未发生,所以不同于图14和图15中的示例,指令数据读取的取消以及两个路的读激活信号的禁用(de-asserting)没有被执行。当分支指令被侦测时,在传统技术中两个路的读激活信号都保持“H”,而在当前实施例中路1的读激活信号在第四个周期变为“L”。因此,在当前实施例中功耗能够进一步减少和这个差别相等的量。
以上提供了本发明实施例的细节;然而本发明的实施例显然不限于以上的描述并且缓存路的数目,即例如图7的缓存RAM的数目不一定是两个而可以是三个或者更多。此外,还很明显的是,例如,图12的读激活控制电路可以是能够实现参照图11所说明的控制逻辑的任何电路。而且,用以确定检索模式历史表的索引的方法显然不限于参照图9所说明的方法,而是例如可以使用在非专利文献1中描述的各种索引确定方法。

Claims (8)

1.一种数据处理器,包含:
具有多个存储器的指令缓冲存储器;
分支预测数据存储单元,所述分支预测数据存储单元用以存储分支指令的条件分支发生或者未发生的预测数据,以及在所述条件分支发生的情况下,存储所述多个存储器当中存储所述分支指令的数据的那个存储器的预测数据;以及
读激活控制单元,该读激活控制单元用以当将要被执行的指令是分支指令时,通过使用从所述分支预测数据存储单元中经由与所述分支指令相对应的索引而获取的所述条件分支发生或未发生的预测数据,以及所述存储所述分支指令的数据的那个存储器的预测数据,将读激活控制信号输出到所述多个存储器,
其中,通过输出读激活控制信号以导致多个存储器中被预测为存储所述分支指令的数据的那个存储器被激活。
2.如权利要求1所述的数据处理器,还包含
命中/未命中确定单元,该命中/未命中确定单元用以将表示存储与将要被执行的指令地址相对应的指令数据的存储器的信号输出到所述读激活控制单元,
其中当将要被执行的指令不是分支指令以及当将要被执行的指令是分支指令但被预测为条件分支未发生时,所述读激活控制单元将表示存储所述指令数据的存储器的信号作为所述读激活控制信号而输出。
3.如权利要求1所述的数据处理器,还包含
索引生成单元,该索引生成单元用以通过对将表示被执行的分支指令的条件分支发生或未发生的数据进行连续移位并且存储的寄存器的存储内容和将要被执行的分支指令的地址执行异或运算来生成索引,以及用以提供所述索引给所述读激活控制单元。
4.如权利要求1所述的数据处理器,其中
所述条件分支发生或未发生的预测数据是除了反映前一分支指令的执行结果之外,还反映所述前一分支指令的存储器预测的成功或失败的数据,所述执行结果是条件分支发生或未发生。
5.一种指令缓冲存储器中多个存储器的存储器读激活控制方法,包含:
当将要被执行的指令是分支指令时,通过与所述分支指令相对应的索引检索所述分支指令的条件分支发生或未发生的预测数据以及所述多个存储器当中存储所述分支指令的数据的那个存储器的预测数据;以及
响应于该检索的结果,将读激活控制信号输出到所述多个存储器,
其中,通过输出读激活控制信号以导致多个存储器中被预测为存储所述分支指令的数据的那个存储器被激活。
6.如权利要求5所述的存储器读激活控制方法,其中
当将要被执行的指令不是分支指令以及当将要被执行的指令是分支指令但被预测为条件分支未发生时,将表示存储与将要被执行的指令地址相对应的指令数据的存储器的信号作为所述读激活控制信号而输出。
7.如权利要求5所述的存储器读激活控制方法,其中
与所述分支指令相对应的索引是通过对将表示被执行的分支指令的条件分支发生或未发生的数据进行连续移位并且存储的寄存器的存储内容和将要被执行的分支指令的地址执行异或运算而生成的,以及将所述索引提供给读激活控制电路。
8.如权利要求5所述的存储器读激活控制方法,其中
所述条件分支发生或未发生的预测数据是除了反映前一分支指令的执行结果之外,还反映所述前一分支指令的存储器预测的成功或失败的数据,所述执行结果是条件分支发生或未发生。
CN200810083121.1A 2007-03-02 2008-03-03 数据处理器以及存储器读激活控制方法 Expired - Fee Related CN101256481B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007053127A JP4980751B2 (ja) 2007-03-02 2007-03-02 データ処理装置、およびメモリのリードアクティブ制御方法。
JP2007-053127 2007-03-02
JP2007053127 2007-03-02

Publications (2)

Publication Number Publication Date
CN101256481A CN101256481A (zh) 2008-09-03
CN101256481B true CN101256481B (zh) 2015-07-08

Family

ID=39733971

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810083121.1A Expired - Fee Related CN101256481B (zh) 2007-03-02 2008-03-03 数据处理器以及存储器读激活控制方法

Country Status (3)

Country Link
US (1) US8667259B2 (zh)
JP (1) JP4980751B2 (zh)
CN (1) CN101256481B (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449256B (zh) 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
CN105468334A (zh) * 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US8244982B2 (en) * 2009-08-21 2012-08-14 Empire Technology Development Llc Allocating processor cores with cache memory associativity
CN102053818B (zh) * 2009-11-05 2014-07-02 无锡江南计算技术研究所 分支预测方法及装置
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
US8635408B2 (en) * 2011-01-04 2014-01-21 International Business Machines Corporation Controlling power of a cache based on predicting the instruction cache way for high power applications
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013100940A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Cache memory staged reopen
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
JP5954112B2 (ja) * 2012-10-24 2016-07-20 富士通株式会社 メモリ装置、演算処理装置、及びキャッシュメモリ制御方法
CN103984525B (zh) * 2013-02-08 2017-10-20 上海芯豪微电子有限公司 指令处理系统及方法
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9904625B2 (en) * 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US10209992B2 (en) * 2014-04-25 2019-02-19 Avago Technologies International Sales Pte. Limited System and method for branch prediction using two branch history tables and presetting a global branch history register
CN108255517B (zh) * 2016-12-29 2020-05-05 展讯通信(上海)有限公司 处理器及请求指令缓存数据的方法
CN109308191B (zh) * 2017-07-28 2021-09-14 华为技术有限公司 分支预测方法及装置
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
US11836498B1 (en) 2022-08-02 2023-12-05 Ventana Micro Systems Inc. Single cycle predictor
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
US11816489B1 (en) 2022-08-02 2023-11-14 Ventana Micro Systems Inc. Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle
US12118360B2 (en) 2023-01-05 2024-10-15 Ventana Micro Systems Inc. Branch target buffer miss handling

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US6079003A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
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
JP2002196981A (ja) * 2000-12-22 2002-07-12 Fujitsu Ltd データ処理装置
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7406569B2 (en) * 2002-08-12 2008-07-29 Nxp B.V. Instruction cache way prediction for jump targets
US7380110B1 (en) * 2003-09-11 2008-05-27 Sun Microsystems, Inc. Branch prediction structure with branch direction entries that share branch prediction qualifier entries
KR100688503B1 (ko) * 2004-11-02 2007-03-02 삼성전자주식회사 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Scott McFarling.Combining Branch Predictors.《Combining Branch Predictors》.1993,全文. *

Also Published As

Publication number Publication date
JP4980751B2 (ja) 2012-07-18
US8667259B2 (en) 2014-03-04
CN101256481A (zh) 2008-09-03
JP2008217353A (ja) 2008-09-18
US20080215865A1 (en) 2008-09-04

Similar Documents

Publication Publication Date Title
CN101256481B (zh) 数据处理器以及存储器读激活控制方法
US7694077B2 (en) Multi-port integrated cache
TWI599882B (zh) 快取記憶體及其操作方法、用於操作一組相關快取記憶體的操作方法
CN101694613B (zh) 不对准存储器存取预测
US5274790A (en) Cache memory apparatus having a plurality of accessibility ports
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
KR20120086363A (ko) 연산 처리 장치
CN104657285B (zh) 一种数据缓存系统和方法
US20190065205A1 (en) Variable length instruction processor system and method
US6898671B2 (en) Data processor for reducing set-associative cache energy via selective way prediction
US6345336B1 (en) Instruction cache memory includes a clock gate circuit for selectively supplying a clock signal to tag RAM to reduce power consumption
JP4635063B2 (ja) キャッシュメモリ制御回路及びプロセッサ
US8578135B2 (en) Apparatus for calculating and prefetching a branch target address
US7346737B2 (en) Cache system having branch target address cache
EP1807767A1 (en) A virtual address cache and method for sharing data stored in a virtual address cache
US7447884B2 (en) Multi-table branch prediction circuit for predicting a branch's target address based on the branch's delay slot instruction address
KR100517765B1 (ko) 캐시 메모리 및 그 제어 방법
JP2007293814A (ja) プロセッサ装置とその処理方法
KR100456215B1 (ko) 블럭 버퍼링을 사용하는 캐쉬 메모리 장치 및 그 제어방법
CN118210555A (zh) Tage算法中的ghr更新方法及对应的rtl设计方法
CN117950725A (zh) 用于处理cpu访问高速缓冲存储器的方法及外围电路
JP2013097637A (ja) キャッシュ装置、メモリシステム及びデータ転送方法
JPH052608A (ja) データ検索装置
JPH02224159A (ja) 階層構造のキャッシュメモリシステム
JP2007293816A (ja) プロセッサ装置とその処理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: FUJITSU MICROELECTRONICS CO., LTD.

Free format text: FORMER OWNER: FUJITSU LIMITED

Effective date: 20081024

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20081024

Address after: Tokyo, Japan, Japan

Applicant after: Fujitsu Microelectronics Ltd.

Address before: Kanagawa

Applicant before: Fujitsu Ltd.

ASS Succession or assignment of patent right

Owner name: SUOSI FUTURE CO., LTD.

Free format text: FORMER OWNER: FUJITSU SEMICONDUCTOR CO., LTD.

Effective date: 20150601

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150601

Address after: Kanagawa

Applicant after: Co., Ltd. Suo Si future

Address before: Kanagawa

Applicant before: Fujitsu Semiconductor Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150708

Termination date: 20180303

CF01 Termination of patent right due to non-payment of annual fee