CN101189574A - 指令存储器单元和操作方法 - Google Patents
指令存储器单元和操作方法 Download PDFInfo
- Publication number
- CN101189574A CN101189574A CNA2006800199786A CN200680019978A CN101189574A CN 101189574 A CN101189574 A CN 101189574A CN A2006800199786 A CNA2006800199786 A CN A2006800199786A CN 200680019978 A CN200680019978 A CN 200680019978A CN 101189574 A CN101189574 A CN 101189574A
- Authority
- CN
- China
- Prior art keywords
- instruction
- queue
- target
- resolution
- instruction queue
- 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 title claims description 37
- 230000004044 response Effects 0.000 claims description 28
- 238000000605 extraction Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 3
- 230000015572 biosynthetic process Effects 0.000 description 11
- 238000005755 formation reaction Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011514 reflex 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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
-
- 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
-
- 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/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
指令存储器单元包括可操作以存储程序指令的第一存储器结构和可操作以存储从所述第一存储器结构提取的程序指令及发出所存储的程序指令以供执行的第二存储器结构。所述第二存储器结构可操作以识别正向程序重定向构造的重复发出,并且如果正向分支指令的分辨与所述同一正向分支指令的前一分辨相同,那么发出已存储在所述第二存储器结构中的下一程序指令。所述第二存储器结构进一步可操作以发出反向程序重定向构造,确定目标指令是否存储在所述第二存储器结构中,如果所述目标指令存储在所述第二存储器结构中,那么发出所述目标指令,并且如果所述目标指令未存储在所述第二存储器结构中,那么从所述第一存储器结构提取所述目标指令。
Description
技术领域
本发明大体来说涉及数字信号处理器,并且更具体的说涉及指令队列和操作方法。
背景技术
数字信号处理器是能以高速执行操作的专门化微处理器。数字信号处理器(DSP)通常嵌入多种装置中,例如移动电话、个人数字助理和便携式计算系统。这些便携式移动装置中的功耗降低是重要的设计目标,旨在使电池寿命最大化。随着这此移动装置的功能扩展到包括多媒体和图形应用,功耗已成为最重要的设计和实施考虑因素之一。
发明内容
用以降低数字信号处理器中功耗的一个考虑因素是当从存储器、指令高速缓冲存储器和指令队列中提取指令供执行时以及当将所提取指令预解码和解码时在指令存储器单元中使用的能量。由于数字信号处理器程序通常大部分时间在执行程序循环,因此可充分利用此特点来降低指令存储器单元的功耗。
在实施例的一个方面中,一种方法包括:从指令队列发出包含反向分支路径的反向程序重定向构造,确定所述反向分支路径是否被采用,响应于所述反向分支路径被采用而确定由所述反向分支路径指示的目标指令是否已存储在所述指令队列中,响应于所述目标指令已存储在所述指令队列中而从所述指令队列发出所述目标指令,及响应于所述目标指令先前未存储在所述指令队列而从耦合到所述指令队列的指令高速缓冲存储器提取所述目标指令。
在实施例的另一方面中,一种方法包括:从指令阵列发出包含正向分支路径的正向程序重定向构造,确定所述正向程序重定向构造的前一分辨是否得到与所述正向程序重定向构造的当前分辨一样的结果,以及响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到相同的结果而从所述指令队列发出下一指令。
在实施例的再一方面中,一种指令存储器单元包括:可操作以存储程序指令的第一存储器结构,耦合到所述第一存储器结构并且可操作以存储从所述第一存储器结构提取的程序指令并且可操作以发出所存储程序指令供执行的第二存储器结构。所述第二存储器结构可操作以识别正向分支指令的重复发出,并且如果所述正向分支指令的分辨与所述同一正向分支指令的前一分辨相同,那么发出已存储在所述第二存储器结构中的下一程序指令。所述第二存储器结构进一步可操作以发出存储在所述第二存储器结构中的反向分支指令,确定其目标指令是否存储在所述第二存储器结构中,响应于所述目标指令存储在所述第二存储器结构中而发出所述目标指令,以及响应于所述目标指令未存储在所述第二存储器结构中而从所述第一存储器结构提取所述目标指令。
因此,程序循环执行被“截获”,以便对于每一循环迭代,程序循环可从指令队列执行而不必从指令高速缓冲存储器提取指令。由于指令队列远远小于指令高速缓冲存储器,所以可通过在这些程序循环迭代期间避开指令高速缓冲存储器而达成显著的功率节省和高速。另外,由于所述指令队列中的指令已经预解码,因此在指令队列操作模式期间不使用程序循环执行的指令解码逻辑而可另外节省功率。如上所述,以指令队列或指令高速缓冲存储器操作模式操作指令存储器单元不需要程序指令中有任何软件代码来预先向指令存储器单元通知程序循环执行即将开始以及可能发生特殊的循环执行。
附图说明
图1为数字信息处理器的指令存储器体系结构实施例的简化方框图;
图2A为主存储器含有指令I0至I8的一部分的例示性内容的示图;
图2B-D为在三个指令执行情景期间一指令队列(IQ)实施例的例示性内容的示图;
图3为指令队列地址实施例的例示性格式;
图4为当遇到反向分支或零开销循环时指令队列操作方法实施例的流程图;和
图5为当遇到正向分支或转移时指令队列操作方法实施例的流程图。
具体实施方式
由于降低功耗已成为移动装置的致关重要的设计目标,因此设计工程师正在全方面研究移动装置,以期找出将总功率使用最小化的可能方法。一个可能的领域为由数字信号处理器所消耗的功率,并且更具体的说是在程序循环执行期间由数字信号处理器消耗的功率。信号数字处理器可能将80%以上的时间花费在执行程序循环上。这些程序循环可能具有各种大小,但大多数是含有少于10个程序指令的小程序循环,举例来说。当循环的执行次数是确定的时,例如FOR循环,通常使用零开销循环构造。当循环迭代的数目未知时,例如WHILE循环,通常使用反向分支指令。本文所述指令存储器单元和其操作充分利用这些数字信号处理器执行特点来降低功耗以及提高执行速度。
图1为数字信息处理器的指令存储器单元实施例的简化方框图。所述数字信号处理器包括常驻有程序指令的主存储器10。为提高处理速度,使用指令缓冲方案。使用具有更快存取速度的指令高速缓冲存储器(I$)12来存储从主存储器10提取的指令。使用具有甚至更快存取速度的指令队列(IQ)来使将即刻在执行引擎16中执行的程序指令排成队列。通常,指令队列14具有比指令高速缓冲存储器12小的存储容量并且更比主存储器10小的存储容量。在存储器存取期间指令队列14的功耗通常比指令高速缓冲存储器12和主存储器10的要小。执行引擎16可为专门进行算术计算的处理器,例如数字信号处理器。在一个实施例中,执行引擎16可支持交错的多线程操作,从而可利用高时钟速度以及最大的核心和存储器利用。
图2A为主存储器10含有指令I0至I8的一部分20的例示性内容示图。在这些指令中,指令I2为正向程序重定向构造,例如条件正向分支指令或具有正补偿的转移正向指令。简便起见,下文将所有具有正向路径的程序重定向构造均称为正向程序重定向构造。如果符合预定条件,那么正向程序重定向构造I2转移到指令I6。指令I7为条件反向分支指令、具有负补偿的转移指令或零开销循环。简便起见,下文将所有具有反向路径的程序重定向指令均称为反向程序重定向构造。如果符合预定条件,那么反向程序重定向构造I7转移到指令I0。其他指令I0、I1、I3至I6以及I8为顺序指令,这些指令的执行通向存储器中的下一指令。
指令存储器单元可至少以两种模式操作:指令高速缓冲存储器模式和指令队列模式。在指令高速缓冲存储器模式期间,必须将将被执行的指令从指令高速缓冲存储器12提取到指令队列14中。在指令队列操作模式期间,将被执行的指令已例如在循环的迭代期间从指令高速缓冲存储器12装入指令队列14中,从而可避开对指令高速缓冲存储器的存取。此方法加速指令存储器单元的操作,并且降低指令存储器单元的功耗。下文陈述指令存储器单元操作模式的详细情况。
图2B-D为在三个指令执行情景期间一指令队列实施例的例示性内容的图解表示。在图2B中,指令队列14已装有指令,其中将条件正向分支作为执行路径。因此,I6紧跟在I2之后装入指令队列14。还参见图3,其显示一指令队列条目的例示性指令队列地址和控制部分27。指令队列地址和控制格式27可包括指令地址(IA)字段28和T位字段29。程序计数器在执行期间维持当前指令地址的地址。所述T位可用于指示正向分支是否被采用。所述T位在正向程序重定向构造分辨期间更新。因此,当I6装入指令队列条目3时,设置存储所述正向程序重定向构造的条目2的T位。然后将指令I7装入条目4。当发出指令I7时,反向分支被采用。此使得在指令队列14中查找指令I0。由于指令I0在指令队列14中,所以将指令存储器单元置于指令队列操作模式,在指令队列操作模式下所需指令已装入指令队列14而无需存取指令高速缓冲存储器12。仅仅是按顺序读取指令队列以获得接下来的指令,如由按顺序递增的指令队列读取指针所指示。当再次执行指令I0、I1和然后I2时,如果再次采用分支正向路径,那么执行转移到条目3中的指令队列14的下一指令,即I6。
如果分支正向路径在此迭代中不被采用,而是在如由所设置的T位所指示的先前迭代中被采用,那么执行离开指令队列模式而返回指令高速缓冲存储器模式。重置T位以指示未采用当前分支。将指令I2后的顺序指令即指令I3至I7装入指令队列14的条目3至7,如由图2C中所示指令队列的内容24所显示。当发出指令I7这一条件反向分支时,进行查找以确定目标指令是否在指令队列14中。由于指令I0已在指令队列中,所以执行进入指令队列操作模式。此时如果在指令I2处采用正向分支路径,那么指令存储器单元进入指令高速缓冲存储器操作模式,因为条目2的T位指示前一次未采用正向分支。现在设置T位。再一次,将指令I6装入条目3而将指令I7装入条目4,如图2D中的指令队列内容26所示。如果未采用指令I7的反向分支路径,那么指令存储器单元操作模式保持在指令高速缓冲存储器模式,并且将I8从指令高速缓冲存储器装入指令队列的条目5中。类似地,将指令I9和I10装入指令队列的条目6和7。
如果在操作模式为指令队列模式时不采用指令I7的反向分支路径,那么操作模式变成指令高速缓冲存储器模式并且也将指令I8至I10从指令高速缓冲存储器装入指令队列中。
如果在图2D中,在操作模式为指令高速缓冲存储器模式时采用指令I7的反向分支路径,那么操作模式变成指令队列模式并且所述指令队列为如图2B中所示。
图4为当遇到反向程序重定向构造时一指令队列操作方法的实施例的流程图。在框30中,从指令队列14提取或发出一指令。在框32中,确定所述指令是否为具有立即补偿或零开销循环指令的反向分支。如果不是,那么执行通常以指令高速缓冲存储器操作模式继续进行。此时可进行检查,以确定所发出指令是否为正向程序重定向构造,如图5中所示,如果此在之前尚未进行的话。如果所述指令为反向程序重定向构造并且采用所述分支路径,如框33中所确定,那么在框34中确定所述指令的目标指令。在框36中,确定所述目标指令是否已在指令队列中。如果所述目标指令未在指令队列中,那么在框40中从指令高速缓冲存储器读取所述指令,并且指令存储器单元操作模式为指令高速缓冲存储器模式。如果所述目标指令在指令队列中,那么所述目标指令为将在框38中被发出的下一指令。
图5为当遇到反向程序重定向构造时指令队列操作方法实施例的流程图。通常,如果正向程序重定向构造的先前分辨以与当前正向分支分辨相同的方式产生,那么正向循环被“截获”。换句话说,如果当前的正向程序重定向构造分辨产生与前一分辨相同的结果,那么程序执行所需的指令已在指令队列中,并且无需存储指令高速缓冲存储器。无需在指令队列中进行查找。
参见图5,在框50中,在指令高速缓冲存储器操作模式期间从指令高速缓冲存储器12读取一指令并存储在指令队列14中。在框52中确定所述指令是否为正向程序重定向构造。如果不是,那么执行继续正常进行。此时可进行检测,以确定所发出指令是否为反向程序重定向构造,如图4中所示,如果此在之前尚未进行。如果所发出指令为正向程序重定向构造,那么在框54中确定在其指令队列地址中的T位是否被设置。如果所述T位被设置,那么这意味着上一次未发出此指令,正向分支路径被采用。如果这次再次采用正向分支,如在框56中所确定,那么目标指令应已在指令队列中并在框58中被发出。指令存储器单元继续以指令队列操作模式操作。如果这次不采用正向分支,那么在框60中重置T位并且从指令高速缓冲存储器读取将被发出的下一指令,指令存储器单元以指令高速缓冲存储器操作模式操作。
如果不设置T位,如在框54中所确定,那么在前一次过程期间不采用正向分支路径。在框62中对当前正向程序重定向构造的目标指令进行分辨。在框64中,确定此时采用正向分支路径。如果采用正向路径,那么在框66中设置所述正向程序重定向构造的指令队列地址上的T位。然后在框68中从指令高速缓冲存储器读取目标指令。之所以产生此执行路径是因为前一次正向分支路径未被采用(如由T位所指示)并且因此在这次被采用。因此,指令队列不含所需指令并且从指令高速缓冲存储器提取。如果在框64中确定这一次未采用正向分支路径,那么下一指令已在指令队列中,在框70中发出下一指令。之所以产生此执行路径是因为前一次正向分支路径未被采用(如由T位所指示)并且这次也未采用。因此,指令队列已含有所需指令。因此,如果正向程序重定向构造的当前和前一分辨相同并且指令存储器单元以指令队列模式操作,那么下一组指令已在指令队列中,可通过按顺序递增指令队列读取指针来存取指令队列。在指令队列操作模式期间,无需存储指令高速缓冲存储器,从而可大大节省功耗并且速度更高。如果当前的分辨不同于前一分辨或如果有不同于正向程序重定向构造的程序重定向指令,那么指令存储器单元从指令队列模式变换为指令高速缓冲存储器模式。然后存取指令高速缓冲存储器来提取目标指令。
尽管未在本文中阐述,但可使用一或多个指针来指示指令队列条目的位置从而在图4和5中所示以及上文阐述的过程期间发出和装入指令。本文所用术语“主存储器(main memory)”指用作程序指令的主存储器(main storage)的存储器装置或结构。本文所用术语“指令高速缓冲存储器”指具有比主存储器快的存取速度并且尺寸比主存储器小的存储器装置或结构。本文所用术语“指令队列”指具有比指令高速缓冲存储器快的存取速度并且尺寸比指令高速缓冲存储器小的存储器装置或结构。尽管本文在主存储器-指令高速缓冲存储器-指令高速缓冲存储器三级层次的背景中阐述本发明,但本发明可扩展到具有两级或多级指令存储器层次的实施例。尽管指令队列14显示为具有8个条目的存储大小,但本发明不应限于此。与图4和5中所示过程相关联的逻辑或代码模块可常驻在指令队列中或只读存储器中或数字信号处理器的其他存储器结构中。
从上述内容可看出,因此,程序循环执行被“截获”,以便对于每一循环迭代,程序循环可从指令队列执行而不必从指令高速缓冲存储器提取指令。由于指令队列远远小于指令高速缓冲存储器,所以可通过在这些程序循环迭代期间避开指令高速缓冲存储器而达成显著的功率节省和高速。另外,由于所述指令队列中的指令已经预解码,因此在指令队列操作模式期间不使用程序循环执行的指令解码逻辑使用而可另外节省功率。如上所述,以指令队列或指令高速缓冲存储器操作模式操作指令存储器单元不需要程序指令中有任何软件代码来预先向指令存储器单元通知程序循环执行即将开始以及可能发生特殊的循环执行。
尽管已详细阐述本发明的实施例,但所属领域的技术人员应了解,其可在本文中进行各种改变、替代和更改,此并不背离本发明的精神和范围。因此,所有这些修改均将包括在本发明随附权利要求书中所定义的本发明范围内。在权利要求书中,手段附加功能(means-plus-function)子句意在涵盖本文描述为执行所述功能的结构,其不仅涵盖结构等效物且同时也涵盖等效结构。
Claims (26)
1.一种方法,其包括:
从指令队列发出含有反向分支路径的反向程序重定向构造;
确定所述反向分支路径是否被采用;
响应于所述反向分支路径被采用而确定由所述反向分支路径指示的目标指令是否已存储在所述指令队列中;
响应于所述目标指令已存储在所述指令队列中而从所述指令队列发出所述目标指令;和
响应于所述目标指令尚未存储在所述指令队列中而从耦合到所述指令队列的指令高速缓冲存储器提取所述目标指令。
2.如权利要求1所述的方法,其进一步包括响应于所述目标指令已存储在所述指令队列中而继续按顺序从所述指令队列发出指令。
3.如权利要求所述1的方法,其进一步包括:
从所述指令队列发出含有正向分支路径的正向程序重定向构造;
确定所述正向程序重定向构造的前一分辨是否得到与所述正向程序重定向构造的当前分辨相同的结果;和
响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到相同的结果而从所述指令队列发出下一指令。
4.如权利要求3所述的方法,其中从所述指令队列发出下一指令包括递增读取指针及发出由所述递增的读取指针所指向的所述下一指令。
5.如权利要求3所述的方法,其进一步包括响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到不同的结果而从耦合到所述指令队列的指令高速缓冲存储器提取下一指令。
6.如权利要求5所述的方法,其中确定所述正向程序重定向构造的前一分辨是否得到与当前分辨相同的结果包括确定所述正向程序重定向构造的至少一个预定字段是否具有预定值。
7.如权利要求5所述的方法,其中确定所述正向程序重定向构造的前一分辨是否得到与当前分辨相同的结果包括确定所述正向程序重定向构造的T位是否被设置。
8.一种方法,其包括:
从指令队列发出含有正向分支路径的正向程序重定向构造;
确定所述正向程序重定向构造的前一分辨是否得到与所述正向程序重定向构造的当前分辨相同的结果;和
响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到相同的结果而从所述指令队列发出下一指令。
9.如权利要求8所述的方法,其进一步包括响应于所述正向分支路径被采用而设置所述正向程序重定向构造的预定字段。
10.如权利要求9所述的方法,其中确定所述正向程序重定向构造的前一分辨是否得到与当前分辨相同的结果包括:
确定所述正向程序重定向构造的当前分辨是否使所述正向分支路径被采用;和
确定所述正向程序重定向构造的所述预定字段是否从所述正向程序重定向构造的前一分辨而设置。
11.如权利要求8所述的方法,其中从所述指令队列发出下一指令包括递增读取指针及发出由所述递增的读取指针所指向的所述下一指令。
12.如权利要求8所述的方法,其进一步包括响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到不同的结果而从耦合到所述指令队列的指令高速缓冲存储器提取下一指令。
13.如权利要求8所述的方法,其中确定所述正向程序重定向构造的前一分辨是否得到与当前分辨相同的结果包括确定所述正向程序重定向构造的至少一个预定字段是否具有预定值。
14.如权利要求所述8的方法,其进一步包括:
从指令队列发出含有反向分支路径的反向程序重定向构造;
确定所述反向分支路径是否被采用;
响应于所述反向分支路径被采用而确定由所述反向分支路径指示的目标指令是否已存储在所述指令队列中;
响应于所述目标指令已存储在所述指令队列中而从所述指令队列发出所述目标指令;和
响应于所述目标指令尚未存储在所述指令队列中而从耦合到所述指令队列的指令高速缓冲存储器提取所述目标指令。
15.如权利要求14所述的方法,其进一步包括响应于所述目标指令已存储在所述指令队列中而继续按顺序从所述指令队列发出指令。
16.一种集成电路,其包括:
第一存储器结构,其可操作以存储程序指令;
第二存储器结构,其耦合到所述第一存储器结构并且可操作以存储从所述第一存储器结构提取的程序指令并且可操作以发出所存储程序指令以供执行;
所述第二存储器结构可操作以识别正向程序重定向构造的重复发出,及响应于所述正向分支指令的分辨与所述相同正向程序重定向构造的前一分辨相同而发出已存储在所述第二存储器结构中的下一程序指令;和
所述第二存储器结构进一步可操作以发出存储在所述第二存储器结构中的反向程序重定向构造,确定其目标指令是否存储在所述第二存储器结构中,响应于所述目标指令存储在所述第二存储器结构中而发出所述目标指令,以及响应于所述目标指令未存储在所述第二存储器结构中而从所述第一存储器结构提取所述目标指令。
17.如权利要求16所述的集成电路,其中所述第一存储器结构具有比所述第二存储器结构慢的存取速度并且比所述第二存储器结构消耗更多功率。
18.如权利要求16所述的集成电路,其中所述第二存储器结构包括多个用以存储所述程序指令的程序指令条目以及一用于各程序指令条目的地址和控制条目。
19.如权利要求16所述的集成电路,其中所述控制条目包括用以记录所述正向分支指令的分辨是否与所述同一正向分支指令的前一分辨相同的预定字段。
20.如权利要求16所述的集成电路,其进一步包括可操作以存储程序指令的第三存储器结构,且所述第一存储器结构可从所述第三存储器结构提取所选程序指令。
21.一种存储器装置,其包括:
用以从指令队列发出含有反向分支路径的反向程序重定向构造的装置;
用以确定所述反向分支路径是否被采用的装置;
用以响应于所述反向分支路径被采用而确定由所述反向分支路径指示的目标指令是否已存储在所述指令队列中的装置;
用以响应于所述目标指令已存储在所述指令队列中而从所述指令队列发出所述目标指令的装置;和
用以响应于所述目标指令尚未存储在所述指令队列中而从耦合到所述指令队列的指令高速缓冲存储器提取所述目标指令的装置。
22.如权利要求21所述的存储器装置,其进一步包括用以响应于所述目标指令已存储在所述指令队列中而继续按顺序从所述指令队列发出指令的装置。
23.如权利要求所述21的存储器装置,其进一步包括:
用以从所述指令队列发出含有正向分支路径的正向程序重定向构造的装置;
用以确定所述正向程序重定向构造的前一分辨是否得到与所述正向程序重定向构造的当前分辨相同的结果的装置;和
用以响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到相同的结果而从所述指令队列发出下一指令的装置。
24.如权利要求23所述的存储器装置,其中用以从所述指令队列发出下一指令的装置包括用以递增读取指针及发出由所述递增的读取指针所指向的所述下一指令的装置。
25.如权利要求23所述的存储器装置,其进一步包括用以响应于所述正向程序重定向构造的所述前一分辨和当前分辨得到不同的结果而从耦合到所述指令队列的指令高速缓冲存储器提取下一指令的装置。
26.如权利要求25所述的存储器装置,其中用以确定所述正向程序重定向构造的前一分辨是否得到与当前分辨相同的结果的装置包括用以确定所述正向程序重定向构造的至少一个预定字段是否具有预定值的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/104,115 | 2005-04-11 | ||
US11/104,115 US7685411B2 (en) | 2005-04-11 | 2005-04-11 | Multi-mode instruction memory unit |
PCT/US2006/013948 WO2006110886A2 (en) | 2005-04-11 | 2006-04-11 | Instruction memory unit and method of operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101189574A true CN101189574A (zh) | 2008-05-28 |
CN101189574B CN101189574B (zh) | 2010-05-19 |
Family
ID=36968162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800199786A Expired - Fee Related CN101189574B (zh) | 2005-04-11 | 2006-04-11 | 指令存储器单元和操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7685411B2 (zh) |
CN (1) | CN101189574B (zh) |
MX (1) | MX2007012582A (zh) |
WO (1) | WO2006110886A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968293A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN103631566A (zh) * | 2013-11-29 | 2014-03-12 | 深圳中微电科技有限公司 | 一种用于处理器中的指令取得装置及其处理器 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8219756B2 (en) * | 2007-11-20 | 2012-07-10 | Florida State University Research Foundation | Systems and methods for lookahead instruction fetching for processors utilizing tagless hit instruction caches |
US9262140B2 (en) * | 2008-05-19 | 2016-02-16 | International Business Machines Corporation | Predication supporting code generation by indicating path associations of symmetrically placed write instructions |
US7886132B2 (en) * | 2008-05-19 | 2011-02-08 | International Business Machines Corporation | Predication support in an out-of-order processor by selectively executing ambiguously renamed write operations |
US11481953B2 (en) * | 2019-05-28 | 2022-10-25 | Advanced Micro Devices, Inc. | Command processor based multi dispatch scheduler |
US11269642B2 (en) * | 2019-09-20 | 2022-03-08 | Microsoft Technology Licensing, Llc | Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor |
US20220207148A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Hardening branch hardware against speculation vulnerabilities |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623615A (en) * | 1994-08-04 | 1997-04-22 | International Business Machines Corporation | Circuit and method for reducing prefetch cycles on microprocessors |
US5734881A (en) * | 1995-12-15 | 1998-03-31 | Cyrix Corporation | Detecting short branches in a prefetch buffer using target location information in a branch target cache |
US6256728B1 (en) * | 1997-11-17 | 2001-07-03 | Advanced Micro Devices, Inc. | Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction |
US6125440A (en) * | 1998-05-21 | 2000-09-26 | Tellabs Operations, Inc. | Storing executing instruction sequence for re-execution upon backward branch to reduce power consuming memory fetch |
US6233676B1 (en) * | 1999-03-18 | 2001-05-15 | Ip-First, L.L.C. | Apparatus and method for fast forward branch |
EP1050804A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Execution of instruction loops |
-
2005
- 2005-04-11 US US11/104,115 patent/US7685411B2/en not_active Expired - Fee Related
-
2006
- 2006-04-11 CN CN2006800199786A patent/CN101189574B/zh not_active Expired - Fee Related
- 2006-04-11 MX MX2007012582A patent/MX2007012582A/es active IP Right Grant
- 2006-04-11 WO PCT/US2006/013948 patent/WO2006110886A2/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968293A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN102968293B (zh) * | 2012-11-28 | 2014-12-10 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN103631566A (zh) * | 2013-11-29 | 2014-03-12 | 深圳中微电科技有限公司 | 一种用于处理器中的指令取得装置及其处理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2006110886A3 (en) | 2007-03-29 |
US7685411B2 (en) | 2010-03-23 |
WO2006110886A2 (en) | 2006-10-19 |
US20060230259A1 (en) | 2006-10-12 |
CN101189574B (zh) | 2010-05-19 |
MX2007012582A (es) | 2007-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101189574B (zh) | 指令存储器单元和操作方法 | |
KR101710116B1 (ko) | 프로세서, 메모리 관리 장치 및 방법 | |
CN102141905B (zh) | 一种处理器体系结构 | |
CN102112966B (zh) | 用于推测式中断向量预取的设备及方法 | |
CN103593167B (zh) | 循环缓冲器学习 | |
KR100492041B1 (ko) | 캐시를구비한데이터처리시스템및그방법 | |
CN101627366B (zh) | 预加载指令的方法及装置 | |
CN102117198B (zh) | 一种分支处理方法 | |
CN101223504B (zh) | 高速缓存用于多状态处理器的指令 | |
CN103365627B (zh) | 执行单元内的数据转发系统和方法 | |
CN102144225A (zh) | 实时数据处理方法和装置 | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
CN104267927A (zh) | 用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 | |
JP2006134331A (ja) | ブランチ目的アドレスを利用してキャッシュウェイを予測するプロセッサ及びその方法 | |
CN103198026A (zh) | 指令高速缓存功耗降低 | |
JP5513744B2 (ja) | 動的自動減衰デバイスアーキテクチャ | |
CN101164040A (zh) | 用于可变长度指令的功率节省方法和设备 | |
CN101809547A (zh) | 使用n路高速缓冲存储器的系统和方法 | |
CN103238134A (zh) | 编码于分支指令中的双模态分支预测器 | |
CN101371223B (zh) | 运算数的提早有条件选择 | |
JP5159258B2 (ja) | 演算処理装置 | |
CN102637149B (zh) | 一种处理器及其运行方法 | |
US7346737B2 (en) | Cache system having branch target address cache | |
CN106557304A (zh) | 用于预测子程序返回指令的目标的取指单元 | |
CN103207776A (zh) | 一种gene乱序发射处理器内核 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1114679 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1114679 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100519 Termination date: 20210411 |
|
CF01 | Termination of patent right due to non-payment of annual fee |