CN102037443A - 用于分支预测的多模式寄存器堆 - Google Patents
用于分支预测的多模式寄存器堆 Download PDFInfo
- Publication number
- CN102037443A CN102037443A CN2009801181529A CN200980118152A CN102037443A CN 102037443 A CN102037443 A CN 102037443A CN 2009801181529 A CN2009801181529 A CN 2009801181529A CN 200980118152 A CN200980118152 A CN 200980118152A CN 102037443 A CN102037443 A CN 102037443A
- Authority
- CN
- China
- Prior art keywords
- register file
- pattern
- mode register
- branch
- coupled
- 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
Links
- 238000000034 method Methods 0.000 claims description 15
- 238000003860 storage Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 15
- 230000000694 effects Effects 0.000 description 9
- 230000000712 assembly Effects 0.000 description 7
- 238000000429 assembly Methods 0.000 description 7
- 230000001413 cellular effect Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明描述一种用于多线程系统的每一线程的多模式寄存器堆。在一个实施例中,所述多模式寄存器堆在第一模式中包括用于所述线程的操作数。所述多模式寄存器堆在第二模式中进一步包括代替所述操作数的分支预测信息。
Description
技术领域
本文中所揭示的发明性概念的实施例大体上涉及数据处理系统的领域。更明确地说,本文中所揭示的发明性概念的实施例涉及多模式寄存器堆。
背景技术
为在处理器中处理指令,处理的各个级可包括提取(用以获得所述指令)、解码(用以将所述指令分解成运算和操作数,例如操作数A加操作数B)、从寄存器堆检索操作数、执行所述指令和回写结果(例如,操作数A加操作数B的和)。在管线化之前,处理器在进行到下一指令之前将执行一个指令的所有级。为提高计算速度,曾在处理器中实施管线,以便分开处理指令的不同级。因此,可执行处理指令的一个级,同时在同一时钟周期期间执行处理后续指令的另一级。举例来说,当在第一时钟周期期间对第一指令进行解码的同时,可在第一时钟周期期间提取第二指令。接着,当在第二时钟周期期间针对第一指令从寄存器堆检索操作数的同时,在第二时钟周期期间可对第二指令进行解码且可提取第三指令。经由管线化而进行的多个指令的同时处理可提高处理器的计算速度。
分支指令可指示处理器在程序中的不同位置处开始计算指令。举例来说,作为分支指令的第五指令可使处理器跳转以开始处理第二十指令。然而,通过使用管线化,处理器可在执行所述分支指令之前开始检索后续指令(例如,第六指令、第七指令和第八指令)并对其进行解码。因此,如果采用分支,那么正在处理中的指令被移除,且分支到的新指令被处理。处理不应被处理的指令耗费时间且因此影响处理速度。此外,误推测的指令也浪费能量。
因此,处理器可包括分支预测逻辑,以便供处理器预测应提取分支指令之后的哪一指令(即,确定是否应采用分支)。所述分支预测逻辑减少了处理器因遗漏的分支而错误地提取指令的次数。分支预测逻辑可包括分支历史表和/或分支目标高速缓冲存储器。所述分支历史表存储待预测的每一分支指令的分支历史的某一变化。分支历史是针对分支指令的每次执行而采用分支还是不采用分支的记录。所述分支历史表可为2×n位表,其中n个行中的每一者对应于程序的不同分支指令,且用于n个行中的每一者的两个位由处理器用来预测针对对应于所述行的分支指令是否采用分支。行越多,表示可预测越多的分支指令。所述两个位可充当计数器,其中等于1-1可表示预测采用分支,0-0可表示预测不采用分支,且1-0或0-1可表示不确定。通过观察待预测的每一分支指令的分支历史来训练所述位。如果采用分支,那么使所述计数器递增(直到达到1-1为止)。如果不采用分支,那么使所述计数器递减(直到达到0-0为止)。
所述分支目标高速缓冲存储器存储待预测的每一分支指令的目的地。在一个实施例中,所述分支目标高速缓冲存储器可存储数目等于所述分支目标高速缓冲存储器的行或寄存器的数目(例如,每分支目标一个行或寄存器)的分支指令的目的地。所述分支目标高速缓冲存储器可存储分支指令的分支所指向的指令的地址。将分支历史表和/或分支目标高速缓冲存储器包括在处理器中的一个问题在于:所述分支历史表和所述分支目标高速缓冲存储器是额外逻辑,因此增大了处理器的面积以及处理器的电力消耗。
发明内容
在一实施例中,描述一种多模式寄存器堆。所述多模式寄存器堆在第一模式期间包括一操作数。所述多模式寄存器堆在第二模式中进一步包括代替所述操作数的辅助信息。
本文中所揭示的一个或一个以上实施例的优点可包括对用于包括分支预测逻辑的电路的最小大小增加以及电力节省。
提到此说明性实施例不是为了限制或界定本文中所揭示的发明性概念,而是为了提供辅助理解所述概念的实例。在回顾整个申请案之后,本发明的其它方面、优点和特征将变得显而易见,整个申请案包括以下部分:“附图说明”、“具体实施方式”和“权利要求书”。
附图说明
当参看附图阅读以下“具体实施方式”时,会更好地理解本文中所揭示的本发明性概念的这些和其它特征、方面和优点,其中:
图1是说明用于实施分支预测的处理器内的示范性电路的示意图。
图2是说明图1中的示意图的示范性寄存器堆单元的示意图。
图3是说明图1中的示意图的示范性寄存器堆单元的替代示意图。
图4是说明用于第一模式中或用于第二模式中的图3中的示意图的寄存器堆的示范性分离的示意图。
图5是说明用于将信息存储在一个多模式寄存器堆中的示范性方法的流程图。
图6是说明用于依据多个多模式寄存器堆中的每一者的模式而将信息存储在所述多模式寄存器堆中的示范性方法的流程图。
图7是说明并入有可包括多模式寄存器堆的数字信号处理器的实例便携式通信装置的总图。
图8是说明并入有可包括多模式寄存器堆的数字信号处理器的实例蜂窝式电话的总图。
图9是说明并入有可包括多模式寄存器堆的数字信号处理器的实例无线因特网协议电话的总图。
图10是说明并入有可包括多模式寄存器堆的数字信号处理器的实例便携式数字助理的总图。
图11是说明并入有可包括多模式寄存器堆的数字信号处理器的实例音频文件播放器的总图。
具体实施方式
遍及整个描述内容,出于阐释的目的,陈述众多特定细节以便提供对本文中所揭示的发明性概念的透彻理解。然而,所属领域的技术人员将明白,可在不具有这些特定细节中的一些细节的情况下实践本文中所揭示的发明性概念。在其它情况下,以框图形式展示众所周知的结构和装置,以避免模糊本文中所揭示的发明性概念的基本原理。
本文中所揭示的发明性概念的实施例涉及用于分支预测的多模式寄存器堆。处理器的每一线程可具有其自己的寄存器堆。举例来说,六线程处理器可具有六个寄存器堆。在线程的执行期间,寄存器堆存储已由所述处理器收回以用于所述线程的操作数。举例来说,对于指令/运算“操作数A加操作数B”,所述寄存器堆可存储总和以供稍后检索。
在多线程架构中,并非所有线程均可同时执行。举例来说,收听音频文件可致使一个线程进行运算,但可能不需要其它线程。因此,在一个实施例中,与非活动线程相关联的寄存器堆可用以存储不对应于相应活动线程的辅助信息,例如分支预测信息。所述分支预测信息可由处理器用来预测活动指令流的分支。因此,多线程架构的寄存器堆可处于第一模式中,从而存储用于其相应线程的操作数,或处于第二模式中,从而存储例如分支预测信息等辅助信息。
分支预测信息可包括分支历史表和/或分支目标高速缓冲存储器。当多模式寄存器堆处于第二模式中且存储分支预测信息时,所述寄存器堆可存储用于活动线程的分支历史表和分支目标高速缓冲存储器中的一者或两者。因此,存储在所述寄存器堆中的表用以预测不与所述寄存器堆相关联的活动线程中的分支。一旦对应于处于第二模式的寄存器堆的线程将再次变成活动的(即,所述线程的指令将由处理器执行),所述寄存器堆就从第二模式切换到第一模式,以便存储用于新活动的线程的操作数。在一个实施例中,当寄存器堆切换到第一模式时,存储在所述寄存器堆中的任何辅助信息可被传送到用于多线程架构中的当前非活动线程的一个或一个以上寄存器堆。在另一实施例中,存储在寄存器堆中的辅助信息中的全部或一部分可能丢失。虽然分支预测信息的丢失可能导致处理器重新编译分支预测信息,但当处理器重新编译此信息时,分支预测的正确性得以确保。
如果多线程架构的所有线程均为活动的,那么所有寄存器堆均处于存储用于其相应线程的操作数的第一模式。因此,由于无寄存器堆处于第二模式以存储分支预测信息,所以可不执行分支预测。另一方面,多个线程可为非活动的,且可能不需要所有用于非活动线程的寄存器堆来存储分支预测信息。因此,处理器可包括用以确定哪些寄存器堆将优先处于第二模式(例如,以存储分支预测信息)的逻辑。此外,所述处理器可包括用以确定哪些线程将执行指令流且哪些线程将为非活动,因此确定指令执行在多个线程间的优先级的逻辑。
图1到图4的示意图说明用于实施分支预测的处理器内的示范性电路的实施例。图1的示意图说明用于分支预测的处理器100内的示范性电路。图2的示意图说明图1中的示意图的示范性寄存器堆单元102,其中寄存器堆单元102包括多个寄存器堆。图3的示意图说明包括多个寄存器堆及其相应的寄存器堆寄存器的图1中的示意图的示范性寄存器堆单元102。图4的示意图说明用于第一模式中或用于第二模式中的图3中的寄存器堆单元102的寄存器堆的示范性分离。
处理器100(图1)可包括用于预测分支的分支预测逻辑,其中分支预测信息104存储在寄存器堆单元102中。所述逻辑可为除包括于处理器100中的其它运算电路之外的电路。如先前所陈述,分支预测信息104可为分支历史表和分支目标高速缓冲存储器中的一者或两者。在另一实施例中,分支预测信息可为允许处理器尝试预测分支的任何信息。在图1中,分支预测信息104为分支目标高速缓冲存储器。寄存器堆单元102包括:读取端口106,其用于从寄存器堆单元102读取数据;写入数据端口108,其用于将数据写入到寄存器堆单元102;以及地址总线110,其用于识别待存取(读取或写入)的寄存器堆单元102的特定地址。如所说明,寄存器堆单元102可耦合到控制逻辑112。
在一个实施例中,控制逻辑112确定在处理来自指令管线114的指令时是否遇到分支指令,以及针对所遇到的分支指令是否将预测分支。在一个实施例中,在管线中的指令的解码期间确定分支指令。在确定是否遇到分支时,控制逻辑112可确定所遇到的指令的地址是否与分支指令的已知地址匹配。在一个实施例中,可从指令的程序计数器116中抽出所遇到的指令的地址。可从分支预测信息104或从单独的列表存取已知分支指令的地址。如果所遇到的指令的地址与分支指令的地址匹配,那么控制逻辑112假定所遇到的指令为分支指令。
处理器100可接着通过存取分支历史信息104来确定分支的目的地。在一个实施例中,处理器100针对将在地址总线110上发送的分支指令从程序计数器116产生地址,以存取寄存器堆单元102而寻找预测信息118。由于分支预测信息104包括分支存取表(其包括分支的目标地址),所以预测信息118包括所遇到的分支指令的目标地址。如果将采用所述分支,那么在采用所述分支时使用来自预测信息118的目标地址。
多路复用器120可确定是否将采用所述分支,其中对多路复用器120的控制输入可为分支历史信息。对多路复用器120的一个输入可为来自预测信息118的目标地址。在一个实施例中,进入多路复用器中的另一输入为逻辑零(例如,接地),使得多路复用器在将不采用所述分支的情况下将逻辑零输出到分支预测124上。在另一实施例中,多路复用器120经配置以在将不采用所述分支的情况下将高阻抗信号输出到分支预测124上。
在图1的示意图中,分支历史信息可存储在程序计数器116中。举例来说,所遇到的分支的二位分支历史(如先前针对分支历史表所描述)可存储在程序计数器116中。因此,所述电路可将来自程序计数器116的分支历史信息输出到控制器122上,以便控制多路复用器120将是否应采用所述分支的预测输出到分支预测124上。举例来说,如果程序计数器中的分支历史的两个位为1-1,那么控制器122包括用以切换多路复用器120的信号,以便将关于采用所述分支的预测输出在分支预测124上。
在一个实施例中,如果将采用分支(例如,分支历史等于1-1),那么将目标地址发送到分支预测124,以便将其反馈到控制逻辑112。控制逻辑112接着根据所述信号来确定将采用所述分支且使流跳转到位于目标地址处的指令。在另一实施例中,可经由分支预测124将逻辑一发送到控制逻辑112,以便供控制逻辑112确定将采用分支。如果将不采用分支(例如,分支历史等于0-0),那么控制逻辑112可经由分支预测124接收逻辑零或高阻抗。控制逻辑接着根据所述信号来确定流应在不采用所述分支的情况下,继续进行到处理所述分支指令之后的指令。
在另一实施例中且如先前所陈述,分支历史可作为分支历史表存储在寄存器堆单元102中。因而,寄存器堆单元102中的分支历史表可视情况从读取数据端口106输出到控制器122上,以便控制多路复用器120的输出。在一个实施例中,分支指令的分支历史和目标地址可存储在一个寄存器中,从而对分支历史表信息与分支目标高速缓冲存储器信息进行组合。
参看图2,寄存器堆单元102可包括存储区202,所述存储区202包括多个寄存器堆204到214。在所说明的实施例中,说明六个寄存器堆,其中处理器可为六线程架构。在其它实施例中,寄存器堆的数目可为大于一的任一数目(例如,二),其中所述寄存器堆中的至少一者可处于第一模式,且所述寄存器堆中的至少一者可处于第二模式。寄存器堆204到214中的每一者与六线程架构处理器的相应线程相关联。举例来说,寄存器堆1 204可与处理器的第一线程相关联。寄存器堆204到214可经由总线216而互连。因此,用于处于第二模式的寄存器堆的分支预测信息可在处于第二模式的寄存器堆间划分。在另一实施例中,寄存器堆中的一部分可为单一模式寄存器堆(仅存储操作数),而其余寄存器堆为多模式寄存器堆。
再次参看图2,存储区202连接到提取单元218和回写单元220。提取单元218将地址222发送到存储区202,以便存取并提取寄存器堆204到214中的一者的寄存器值。将所存取的值发送到寄存器堆数据接口224,其从寄存器堆单元102输出所述值。回写单元220发送存储区202中数据将写入和存储到的寄存器的地址222。在一个实施例中,提取单元218和回写单元220可存取来自/去往处于第一模式的寄存器堆的操作数,以及来自/去往处于第二模式的寄存器堆的辅助信息(例如,分支预测信息)。
参看图3,寄存器堆单元102可进一步包括寄存器堆寄存器302到312(例如,在存储区202中)。在一个实施例中,每一寄存器堆寄存器302到312与一寄存器堆204到214相关联。举例来说,RF1寄存器302与寄存器堆1 204相关联,RF2寄存器304与寄存器堆2 206相关联,依此类推。寄存器堆寄存器302到312可包括关于其相应的寄存器204到214的信息,包括关于何时将寄存器切换到第二模式的优先级信息、关于寄存器何时将处于第一模式的优先级信息或关于对应寄存器与哪一线程相关联的信息。举例来说,RF1寄存器302可包括以下信息:寄存器堆1 204与线程0相关联,寄存器堆1 204是将处于第一模式以便存储操作数的第一寄存器和/或寄存器堆1 204是将处于第二模式以存储辅助信息的最后一个寄存器。在另一实施例中,寄存器堆寄存器可包括关于对应寄存器是处于第一模式还是第二模式的信息。
在一个实施例中,由于每一寄存器204到214的寄存器堆寄存器302到312包括关于相应寄存器堆何时将处于第一模式以及相应寄存器堆何时将切换到第二模式的优先级的信息,所以处理器100可使用所述信息以便控制哪些寄存器堆处于第一模式以及哪些寄存器堆处于第二模式。举例来说,处理器可通过经由总线214控制寄存器堆寄存器302到312来将寄存器堆从第一模式切换到第二模式/从第二模式切换到第一模式。
图4的示意图说明一个实例,其中寄存器堆204到208处于第一模式,且寄存器堆210到214处于第二模式。如先前所描述,寄存器堆寄存器302到312可包括寄存器堆204到214何时将处于第一模式的优先级信息。举例来说,所述优先级信息可为:寄存器堆1 204为将处于第一模式的第一寄存器堆(即,其相关联线程第一个执行指令),寄存器堆2 206为将处于第一模式的第二寄存器堆(即,其相关联线程第二个执行指令),寄存器堆3 208为将处于第一模式的第三寄存器堆(即,其相关联线程第三个执行指令),寄存器堆4 210为将处于第一模式的第四寄存器堆(即,其相关联线程第四个执行指令),寄存器堆5 212为将处于第一模式的第五寄存器堆(即,其相关联线程第五个执行指令),且寄存器堆6 214为将处于第一模式的第六且最后一个寄存器堆(即,其相关联线程第六个执行指令)。因此,如果五个线程将执行指令,那么寄存器堆204到212将处于第一模式(例如,存储用于其相应线程的操作数),且寄存器堆6 214无需处于第一模式。
也如先前所描述,寄存器堆寄存器302到312可包括寄存器堆204到214何时将处于第二模式的优先级信息。举例来说,所述优先级信息可为:寄存器堆1 204为将处于第二模式的第六且最后一个寄存器堆(例如,以存储用于活动线程的分支预测信息),寄存器堆2 206为将处于第二模式的第五且倒数第二个寄存器堆,寄存器堆3 208为将处于第二模式的第四寄存器堆,寄存器堆4 210为将处于第二模式的第三寄存器堆,寄存器堆5 212为将处于第二模式的第二且正数第二寄存器堆,且寄存器堆6 214为将处于第二模式的第一寄存器堆。因此,如果两个线程正执行指令,那么寄存器堆208到214可处于第二模式。如果两个寄存器堆将处于第二模式,那么寄存器堆212到214处于第二模式。在一个实施例中,寄存器堆是否处于第一模式(即,相应线程为活动的/正执行指令)相较于寄存器堆是否将切换到第二模式具有优先级。
再次参看图4,在所述实例中,三个线程将为活动的,且三个寄存器堆将处于第二模式。因此,寄存器堆204到208处于第一模式,进而存储用于活动线程的操作数。寄存器堆210到214处于第二模式以存储(例如)用于所述三个活动线程的分支预测信息。在一个实施例中,所述分支预测信息可在第二模式中在整个存储区402之中划分或展开。因此,当越多的寄存器堆204到214处于第二模式时,存在越多存储区用于存储分支预测信息,因此允许分支历史表和分支目标高速缓冲存储器更大(例如,每一表中有更多的行)以便允许预测更多分支指令。
图5是说明用于将信息存储在图1到图3的一个多模式寄存器堆中的示范性方法500的流程图。在502处开始,处理器100确定多模式寄存器堆(例如,图3中的寄存器堆1 204)是否处于第一模式。在确定寄存器堆1 204是否处于第一模式的一个实施例中,处理器100存取RF1寄存器302,所述RF1寄存器302与寄存器堆1 204相关联,且可包括关于寄存器堆1 204处于哪一模式的信息。在另一实施例中,处理器100可检查RF1寄存器302的优先级信息以及活动线程的数目,以确定寄存器堆1 204是否处于第一模式。在另一实施例中,处理器100可确定寄存器堆1 204的相应线程(例如,线程0),且确定所述相应线程是否为活动的。如果寄存器堆1 204处于第一模式,那么寄存器堆1 204的相应线程为活动的,且寄存器堆1 204可在504中从回写单元220(图3)接收操作数。刚一接收到操作数,寄存器堆就可将所述操作数存储在由回写单元220识别的寄存器位置中(506)。
如果处理器100在502中确定寄存器堆不处于第一模式,那么处理器100可在508中确定多模式寄存器堆1 204是否处于第二模式。在一个实施例中,处理器100可假定在寄存器堆1 204不处于第一模式的情况下,寄存器堆1 204处于第二模式。在另一实施例中,寄存器堆1 204可为非活动的,且因此既不处于第一模式也不处于第二模式。因此,如果处理器100确定寄存器堆1 204不处于第二模式,那么寄存器堆1 204既不处于第一模式也不处于第二模式,且当时可能不在接受信息。如果多模式寄存器堆处于第二模式,那么寄存器堆1 204在510中从回写单元220(图3)接收辅助信息(例如,分支预测信息)。刚一接收到所述辅助信息,寄存器堆1 204就可将所述辅助信息存储在由回写单元220识别的寄存器位置中(506)。
图6的流程图说明用于依据图1到图3中的寄存器堆单元102的多个多模式寄存器堆204到214中的每一者的模式将信息存储在所述多模式寄存器堆204到214中的示范性方法600。在602处开始,处理器100确定寄存器堆单元102的哪些多模式寄存器堆204到214处于第一模式。在一个实施例中,处理器100确定哪些线程为活动的,且从寄存器堆寄存器302到312确定哪些寄存器堆204到214与活动线程相关联。在另一实施例中,处理器100可从相关联的寄存器堆寄存器读取寄存器堆是否处于第一模式的信息。
刚一确定哪些寄存器堆204到214处于第一模式,处理器100就可在604中确定哪些寄存器堆204到214处于第二模式。在一个实施例中,处理器100可读取不处于第一模式的寄存器堆204到214的相应寄存器堆寄存器302到312,以确定寄存器堆是否处于第二模式。在另一实施例中,处理器100假定不处于第一模式的所有寄存器204到214均处于第二模式。在另一实施例中,处理器100确定将处于第二模式的寄存器堆204到214的数目,且从寄存器堆204到214的相应寄存器堆寄存器302到312读取针对第二模式的优先级信息。
进行到606,处理器100将操作数发送到处于第一模式的寄存器堆204到214。举例来说,如果线程0包括由被执行的指令引起的操作数,那么处理器100将所述操作数发送到寄存器堆1 204(图3)以存储。接着在608中,处于第一模式的接收寄存器堆204到214存储所述操作数。
进行到610,处理器100将辅助信息发送到处于第二模式的寄存器堆204到214。举例来说,处理器100可发送用于最近执行的分支指令的分支预测信息,其可稍后用于预测相同分支。在一个实施例中,处理器100确定处于第二模式的哪一寄存器堆204到214将存储哪一条辅助信息。举例来说,再次参看图4,处理器100可确定,寄存器堆210到212将存储分支目标高速缓冲存储器,且寄存器堆6 214将存储正执行的指令流的分支历史表。再次参看图6,接着在612中,处于第二模式的接收寄存器堆204到214存储所述辅助信息。
包括上文所描述的特征的实例装置
多模式寄存器堆可包括于例如数字信号处理器等包括寄存器堆的任何处理器中。图7到图11的总图说明可并入有用于在第一模式中存储(例如)操作数且在第二模式中存储分支预测信息以便用于预测正执行的分支指令的分支的多模式寄存器堆的实例装置。
图7是说明便携式通信装置700的示范性实施例的图。如图7的总图中所说明,便携式通信装置包括芯片上系统702,所述芯片上系统702包括数字信号处理器(DSP)704。图7的总图还展示耦合到数字信号处理器704和显示器708的显示器控制器706。此外,输入装置710耦合到DSP 704。如图所示,存储器712耦合到DSP 704。另外,编码器/解码器(编解码器)714可耦合到DSP 704。扬声器716和麦克风718可耦合到编解码器714。
图7的总图进一步说明耦合到数字信号处理器704和无线天线722的无线控制器720。在特定实施例中,电力供应724耦合到芯片上系统702。此外,在特定实施例中,如图7中所说明,显示器708、输入装置710、扬声器716、麦克风718、无线天线722和电力供应724在芯片上系统702的外部。然而,显示器708、输入装置710、扬声器716、麦克风718、无线天线722和电力供应724每一者均耦合到芯片上系统702的一组件。
在特定实施例中,DSP 704包括一个或一个以上多模式寄存器堆726,以便在寄存器堆不处于第一模式(不存储活动线程的操作数)时存储(例如)分支预测信息。举例来说,当处理器704遇到分支指令且多模式寄存器堆726正存储分支预测信息时,处理器704接着使用多模式寄存器堆726中的所述分支预测信息来确定应将分支预测为采用还是不采用。处理器704接着开始处理来自分支预测的下一个所预测的指令。
图8是说明蜂窝式电话800的示范性实施例的图。如图所示,蜂窝式电话800包括芯片上系统802,所述芯片上系统802包括耦合在一起的数字基带处理器804和模拟基带处理器806。在特定实施例中,数字基带处理器804为数字信号处理器。如图8的总图中所说明,显示器控制器808和触摸屏控制器810耦合到数字基带处理器804。在芯片上系统802外部的触摸屏显示器812又耦合到显示器控制器808和触摸屏控制器810。
图8的总图进一步说明视频编码器814(例如,逐行倒相(PAL)编码器、顺序传送色彩与存储(SECAM)编码器或国家电视制式委员会(NTSC)编码器)耦合到数字基带处理器804。另外,视频放大器816耦合到视频编码器814和触摸屏显示器812。而且,视频端口818耦合到视频放大器816。如图8的总图中所描绘,通用串行总线(USB)控制器820耦合到数字基带处理器804。而且,USB端口822耦合到USB控制器820。存储器824和订户身份模块(SIM)卡826也可耦合到数字基带处理器804。另外,如图8的总图中所展示,数字相机828可耦合到数字基带处理器804。在示范性实施例中,数字相机828为电荷耦合装置(CCD)相机或互补金属氧化物半导体(CMOS)相机。
如图8的总图中进一步说明,立体声音频编解码器830可耦合到模拟基带处理器806。此外,音频放大器832可耦合到立体声音频编解码器830。在示范性实施例中,第一立体声扬声器834和第二立体声扬声器836耦合到音频放大器832。麦克风放大器838也可耦合到立体声音频编解码器830。另外,麦克风840可耦合到麦克风放大器838。在特定实施例中,调频(FM)无线电调谐器842可耦合到立体声音频编解码器830。而且,FM天线844耦合到FM无线电调谐器842。另外,立体声耳机846可耦合到立体声音频编解码器830。
图8的总图进一步说明射频(RF)收发器848可耦合到模拟基带处理器806。RF开关850可耦合到RF收发器848和RF天线852。小键盘854可耦合到模拟基带处理器806。另外,振动器装置858可耦合到模拟基带处理器806。图8的总图还展示电力供应860可耦合到芯片上系统802。在特定实施例中,电力供应860为向蜂窝式电话800的各种组件提供电力的直流(DC)电力供应。另外,在特定实施例中,电力供应为可再充电DC电池或得自耦合到AC电源的交流(AC)到DC变压器的DC电力供应。
如图8的总图中所描绘,触摸屏显示器812、视频端口818、USB端口822、相机828、第一立体声扬声器834、第二立体声扬声器836、麦克风840、FM天线844、立体声耳机846、RF开关850、RF天线852、小键盘854、振动器858和电力供应860可在芯片上系统802的外部。在特定实施例中,数字基带处理器804可包括一个或一个以上多模式寄存器堆862,以便在寄存器堆862不处于第一模式(不存储活动线程的操作数)时存储(例如)分支预测信息。
图9是说明无线因特网协议(IP)电话900的示范性实施例的图。如图所示,无线IP电话900包括芯片上系统902,所述芯片上系统902包括数字信号处理器(DSP)904。显示器控制器906可耦合到DSP 904,且显示器908耦合到所述显示器控制器906。在示范性实施例中,显示器908为液晶显示器(LCD)。图9进一步展示小键盘910可耦合到DSP 904。
快闪存储器912可耦合到DSP 904。同步动态随机存取存储器(SDRAM)914、静态随机存取存储器(SRAM)916和电可擦除可编程只读存储器(EEPROM)918也可耦合到DSP 904。图9的总图还展示发光二极管(LED)920可耦合到DSP 904。另外,在特定实施例中,语音编解码器922可耦合到DSP 904。放大器924可耦合到语音编解码器922,且单声道扬声器926可耦合到放大器924。图9的总图进一步说明耦合到语音编解码器922的单声道头戴耳机928。在特定实施例中,单声道头戴耳机928包括麦克风。
无线局域网(WLAN)基带处理器930可耦合到DSP 904。RF收发器932可耦合到WLAN基带处理器930,且RF天线934可耦合到RF收发器932。在特定实施例中,蓝牙控制器936也可耦合到DSP 904,且蓝牙天线938可耦合到控制器936。图9的总图还展示USB端口940也可耦合到DSP 904。此外,电力供应942耦合到芯片上系统902,且向无线IP电话900的各种组件提供电力。
如图9的总图中所指示,显示器908、小键盘910、LED 920、单声道扬声器926、单声道头戴耳机928、RF天线934、蓝牙天线938、USB端口940和电力供应942可在芯片上系统902的外部,且耦合到芯片上系统902的一个或一个以上组件。在特定实施例中,DSP 904可包括一个或一个以上多模式寄存器堆960,以便在寄存器堆960不处于第一模式(不存储活动线程的操作数)时存储(例如)分支预测信息。
图10是说明便携式数字助理(PDA)900的示范性实施例的图。如图所示,PDA 1000包括芯片上系统1002,所述芯片上系统1002包括数字信号处理器(DSP)1004。触摸屏控制器1006和显示器控制器1008耦合到DSP 1004。另外,触摸屏显示器1010耦合到触摸屏控制器1006,且耦合到显示器控制器1008。图10的总图还指示小键盘1012可耦合到DSP 1004。
在特定实施例中,立体声音频编解码器1026可耦合到DSP 1004。第一立体声放大器1028可耦合到立体声音频编解码器1026,且第一立体声扬声器1030可耦合到第一立体声放大器1028。另外,麦克风放大器1032可耦合到立体声音频编解码器1026,且麦克风1034可耦合到麦克风放大器1032。图10的总图进一步展示第二立体声放大器1036可耦合到立体声音频编解码器1026,且第二立体声扬声器1038可耦合到第二立体声放大器1036。在特定实施例中,立体声耳机1040也可耦合到立体声音频编解码器1026。
图10的总图还说明802.11控制器1042可耦合到DSP 1004,且802.11天线1044可耦合到802.11控制器1042。另外,蓝牙控制器1046可耦合到DSP 1004,且蓝牙天线1048可耦合到蓝牙控制器1046。USB控制器1050可耦合到DSP 1004,且USB端口1052可耦合到USB控制器1050。另外,智能卡1054(例如,多媒体卡(MMC)或安全数字卡(SD))可耦合到DSP 1004。另外,电力供应1056可耦合到芯片上系统1002,且可向PDA 1000的各种组件提供电力。
如图10的总图中所指示,显示器1010、小键盘1012、IrDA端口1022、数字相机1024、第一立体声扬声器1030、麦克风1034、第二立体声扬声器1038、立体声耳机1040、802.11天线1044、蓝牙天线1048、USB端口1052和电力供应1056可在芯片上系统1002的外部,且耦合到所述芯片上系统上的一个或一个以上组件。在特定实施例中,DSP 1004可包括一个或一个以上多模式寄存器堆1060,以便在寄存器堆1060不处于第一模式(不存储活动线程的操作数)时存储(例如)分支预测信息。
图11是说明音频文件播放器(例如,MP3播放器)1100的示范性实施例的图。如图所示,音频文件播放器1100包括芯片上系统1102,所述芯片上系统1102包括数字信号处理器(DSP)1104。显示器控制器1106可耦合到DSP 1104,且显示器1108耦合到显示器控制器1106。在示范性实施例中,显示器1108为液晶显示器(LCD)。小键盘1110可耦合到DSP 1104。
如图11的总图中进一步描绘,快闪存储器1112和只读存储器(ROM)1114可耦合到DSP 1104。另外,在特定实施例中,音频编解码器1116可耦合到DSP 1104。放大器1118可耦合到音频编解码器1116,且单声道扬声器1120可耦合到放大器1118。图11的总图进一步指示麦克风输入1122和立体声输入1124也可耦合到音频编解码器1116。在特定实施例中,立体声耳机1126也可耦合到音频编解码器1116。
USB端口1128和智能卡1130可耦合到DSP 1104。另外,电力供应1132可耦合到芯片上系统1102,且可向音频文件播放器1100的各种组件提供电力。
如图11的总图中所指示,显示器1108、小键盘1110、单声道扬声器1120、麦克风输入1122、立体声输入1124、立体声耳机1126、USB端口1128和电力供应1132在芯片上系统1102的外部,且耦合到芯片上系统1102上的一个或一个以上组件。在特定实施例中,数字信号处理器1104可包括一个或一个以上多模式寄存器堆1160,以便在寄存器堆1160不处于第一模式(不存储活动线程的操作数)时存储(例如)分支预测信息。
概要
本文中所揭示的发明性概念的实施例的以上描述已仅出于说明和描述的目的而呈现,且无意为详尽的或将本文中所揭示的发明性概念限于所揭示的精确形式。在不脱离本文中所揭示的发明性概念的精神和范围的情况下,众多修改和适应对于所属领域的技术人员来说是显而易见的。
Claims (21)
1.一种多模式寄存器堆,其包含:
操作数,其在第一模式中被存储;以及
辅助信息,其中在第二模式中,所述辅助信息代替所述操作数。
2.根据权利要求1所述的多模式寄存器堆,其中所述辅助信息为分支预测信息。
3.根据权利要求2所述的多模式寄存器堆,其中所述分支预测信息包含:
分支目标高速缓冲存储器;以及
分支历史表。
4.根据权利要求2所述的多模式寄存器堆,其中所述寄存器堆是在多线程架构中的多个寄存器堆中。
5.根据权利要求4所述的多模式寄存器堆,其中所述操作数是来自将由所述多线程架构执行的运算管线中的运算。
6.根据权利要求5所述的多模式寄存器堆,其中所述多线程架构经配置以:
确定所述多模式寄存器堆是否处于所述第一模式;且
在确定所述多模式寄存器堆不处于所述第一模式的情况下,确定所述多模式寄存器堆是否处于所述第二模式。
7.根据权利要求4所述的多模式寄存器堆,其中所述多个寄存器堆中的每一者为多模式寄存器堆。
8.根据权利要求7所述的多模式寄存器堆,其中所述多线程架构经配置以确定所述寄存器堆进入所述第二模式的优先级。
9.根据权利要求8所述的多模式寄存器堆,其中所述多个寄存器堆经配置以在处于所述第二模式的多个寄存器堆之间划分所述分支预测信息。
10.一种方法,其包含:
在第一模式期间由多模式寄存器堆存储操作数;以及
在第二模式中由所述多模式寄存器堆用辅助信息来代替所述操作数。
11.根据权利要求10所述的方法,其中所述辅助信息为分支预测信息。
12.根据权利要求11所述的方法,其中所述分支预测信息包含:
分支目标高速缓冲存储器;以及
分支历史表。
13.根据权利要求11所述的方法,其进一步包含:
确定所述多模式寄存器堆是否处于所述第一模式;以及
在确定所述多模式寄存器堆不处于所述第一模式的情况下,确定所述多模式寄存器堆是否处于所述第二模式。
14.根据权利要求11所述的方法,其中所述寄存器堆是在多线程架构中的多个多模式寄存器堆中。
15.根据权利要求14所述的方法,其进一步包含:
确定所述多个寄存器堆中的每一者是否处于所述第一模式;以及
对于所述多个寄存器堆中的不处于所述第一模式的每一者,确定每一寄存器堆是否处于所述第二模式。
16.根据权利要求15所述的方法,其进一步包含在处于所述第二模式的多个寄存器堆之间划分所述分支预测信息。
17.一种多模式寄存器堆,其包含:
用于在第一模式期间存储操作数的装置;以及
用于在第二模式中用辅助信息来代替所述操作数的装置。
18.根据权利要求17所述的多模式寄存器堆,其中所述辅助信息为分支预测信息。
19.根据权利要求18所述的多模式寄存器堆,其进一步包含:
用于确定所述多模式寄存器堆是否处于所述第一模式的装置;以及
用于在确定所述多模式寄存器堆不处于所述第一模式的情况下确定所述多模式寄存器堆是否处于所述第二模式的装置。
20.根据权利要求19所述的多模式寄存器堆,其进一步包含:
用于确定多个多模式寄存器堆中的每一者进入所述第二模式的优先级的装置,其中所述多模式寄存器堆是所述多个多模式寄存器堆中的一者。
21.一种多线程系统,其包含:
用于所述多线程系统的每一线程的多模式寄存器堆,其中所述多模式寄存器堆经配置以在第一模式中存储用于所述线程的操作数,且在第二模式中存储用于不同线程的分支历史表;以及
用于每一多模式寄存器堆的多模式寄存器堆寄存器,其用以确定所述多模式寄存器堆是处于所述第一模式还是所述第二模式。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/124,357 US8639913B2 (en) | 2008-05-21 | 2008-05-21 | Multi-mode register file for use in branch prediction |
US12/124,357 | 2008-05-21 | ||
PCT/US2009/043331 WO2009142928A1 (en) | 2008-05-21 | 2009-05-08 | Multi-mode register file for use in branch prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102037443A true CN102037443A (zh) | 2011-04-27 |
CN102037443B CN102037443B (zh) | 2014-07-09 |
Family
ID=40908655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980118152.9A Active CN102037443B (zh) | 2008-05-21 | 2009-05-08 | 用于分支预测的多模式寄存器堆 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8639913B2 (zh) |
EP (1) | EP2304551B1 (zh) |
JP (1) | JP5280521B2 (zh) |
KR (1) | KR101302611B1 (zh) |
CN (1) | CN102037443B (zh) |
TW (1) | TW201013524A (zh) |
WO (1) | WO2009142928A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927149A (zh) * | 2013-01-14 | 2014-07-16 | 想象力科技有限公司 | 间接分支预测 |
CN105653472A (zh) * | 2015-12-31 | 2016-06-08 | 北京中科晶上科技有限公司 | 缓存辅助的向量寄存器堆的缓冲方法 |
WO2017103740A1 (en) * | 2015-12-15 | 2017-06-22 | International Business Machines Corporation | Auxiliary branch prediction with usefulness tracking |
CN107003898A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 包括至少一个具有线程模式和事务模式的资源的设备及方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582275B2 (en) * | 2011-05-31 | 2017-02-28 | Intel Corporation | Method and apparatus for obtaining a call stack to an event of interest and analyzing the same |
WO2013101128A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Using a single table to store speculative results and architectural results |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
US11150904B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US10908911B2 (en) | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US11150908B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10884745B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US10705973B2 (en) | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
US10713050B2 (en) | 2017-09-19 | 2020-07-14 | International Business Machines Corporation | Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions |
US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
US11061575B2 (en) | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5950012A (en) * | 1996-03-08 | 1999-09-07 | Texas Instruments Incorporated | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US20080005534A1 (en) * | 2006-06-29 | 2008-01-03 | Stephan Jourdan | Method and apparatus for partitioned pipelined fetching of multiple execution threads |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4829422A (en) * | 1987-04-02 | 1989-05-09 | Stellar Computer, Inc. | Control of multiple processors executing in parallel regions |
US5210831A (en) * | 1989-10-30 | 1993-05-11 | International Business Machines Corporation | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations |
CA2128393C (en) * | 1992-12-23 | 2001-10-02 | Jean-Felix Perotto | Multi-tasking low-power controller |
US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
US6357016B1 (en) * | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US7017073B2 (en) * | 2001-02-28 | 2006-03-21 | International Business Machines Corporation | Method and apparatus for fault-tolerance via dual thread crosschecking |
US6954846B2 (en) * | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
US6981113B2 (en) * | 2003-04-21 | 2005-12-27 | Intel Corporation | Storage registers for a processor pipeline |
US7120784B2 (en) | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
JP2005284749A (ja) * | 2004-03-30 | 2005-10-13 | Kyushu Univ | 並列処理コンピュータ |
US7278012B2 (en) | 2005-06-02 | 2007-10-02 | Qualcomm Incorporated | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions |
US7877587B2 (en) * | 2006-06-09 | 2011-01-25 | Arm Limited | Branch prediction within a multithreaded processor |
US7760576B2 (en) * | 2007-11-08 | 2010-07-20 | Qualcomm Incorporated | Systems and methods for low power, high yield memory |
-
2008
- 2008-05-21 US US12/124,357 patent/US8639913B2/en active Active
-
2009
- 2009-05-08 WO PCT/US2009/043331 patent/WO2009142928A1/en active Application Filing
- 2009-05-08 JP JP2011510563A patent/JP5280521B2/ja not_active Expired - Fee Related
- 2009-05-08 KR KR1020107028749A patent/KR101302611B1/ko active IP Right Grant
- 2009-05-08 CN CN200980118152.9A patent/CN102037443B/zh active Active
- 2009-05-08 EP EP09751157.0A patent/EP2304551B1/en active Active
- 2009-05-20 TW TW098116742A patent/TW201013524A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5950012A (en) * | 1996-03-08 | 1999-09-07 | Texas Instruments Incorporated | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US20080005534A1 (en) * | 2006-06-29 | 2008-01-03 | Stephan Jourdan | Method and apparatus for partitioned pipelined fetching of multiple execution threads |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927149A (zh) * | 2013-01-14 | 2014-07-16 | 想象力科技有限公司 | 间接分支预测 |
CN107003898A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 包括至少一个具有线程模式和事务模式的资源的设备及方法 |
WO2017103740A1 (en) * | 2015-12-15 | 2017-06-22 | International Business Machines Corporation | Auxiliary branch prediction with usefulness tracking |
GB2562651A (en) * | 2015-12-15 | 2018-11-21 | Ibm | Auxiliary branch prediction with usefulness tracking |
GB2562651B (en) * | 2015-12-15 | 2019-04-10 | Ibm | Auxiliary branch prediction with usefulness tracking |
CN105653472A (zh) * | 2015-12-31 | 2016-06-08 | 北京中科晶上科技有限公司 | 缓存辅助的向量寄存器堆的缓冲方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2011521382A (ja) | 2011-07-21 |
KR101302611B1 (ko) | 2013-09-02 |
EP2304551A1 (en) | 2011-04-06 |
WO2009142928A1 (en) | 2009-11-26 |
TW201013524A (en) | 2010-04-01 |
US8639913B2 (en) | 2014-01-28 |
EP2304551B1 (en) | 2017-03-29 |
JP5280521B2 (ja) | 2013-09-04 |
CN102037443B (zh) | 2014-07-09 |
KR20110019751A (ko) | 2011-02-28 |
US20090292906A1 (en) | 2009-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102037443B (zh) | 用于分支预测的多模式寄存器堆 | |
CN101960433B (zh) | 用于高速缓冲存储器线替代的系统和方法 | |
CN101203830B (zh) | 用于在交错的多线程环境中操作的数字信号处理器的寄存器堆 | |
KR101710116B1 (ko) | 프로세서, 메모리 관리 장치 및 방법 | |
CN101330294A (zh) | 键控制电路、电子设备、便携式装置及键控制方法 | |
MY122682A (en) | System and method for performing context switching and rescheduling of a processor | |
US9715392B2 (en) | Multiple clustered very long instruction word processing core | |
CN107566609B (zh) | 一种下载任务处理方法、装置、终端和存储介质 | |
CN101346694A (zh) | 用于处理器中的算术逻辑和移位装置 | |
EP2609595B1 (en) | System and method of reducing power usage of a content addressable memory | |
US7496921B2 (en) | Processing block with integrated light weight multi-threading support | |
US11199893B2 (en) | Method, device for processing data of bluetooth speaker, and bluetooth speaker | |
US7346737B2 (en) | Cache system having branch target address cache | |
CN101258465A (zh) | 控制多线程处理器内的多个程序线程的系统和方法 | |
CN101960422A (zh) | 用于计算硬件预提取地址及算术运算值的双功能加法器 | |
CN102884506A (zh) | 使用用于转换并存储数据值的指令来配置替代存储器存取代理 | |
KR20070118705A (ko) | 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법 | |
US8234319B2 (en) | System and method of performing two's complement operations in a digital signal processor | |
CN107678786A (zh) | 一种快速切换菜单的方法、存储介质及智能终端 | |
CN107886119B (zh) | 特征提取方法、应用管控方法、装置、介质及电子设备 | |
CN102479054A (zh) | 一种存储芯片的读写系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |