CN103119537A - 用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 - Google Patents
用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 Download PDFInfo
- Publication number
- CN103119537A CN103119537A CN2011800459591A CN201180045959A CN103119537A CN 103119537 A CN103119537 A CN 103119537A CN 2011800459591 A CN2011800459591 A CN 2011800459591A CN 201180045959 A CN201180045959 A CN 201180045959A CN 103119537 A CN103119537 A CN 103119537A
- Authority
- CN
- China
- Prior art keywords
- instruction
- advance
- impact damper
- power down
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000001514 detection method Methods 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 4
- 230000008878 coupling Effects 0.000 description 10
- 238000010168 coupling process Methods 0.000 description 10
- 238000005859 coupling reaction Methods 0.000 description 10
- 230000003252 repetitive effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
描述了用于通过使指令拾取单元掉电来降低处理器中的功耗的装置和方法。例如,方法的一个实施例包括:检测分支,该分支具有与之相关联的寻址信息;将寻址信息与指令预拾取缓冲器中的条目进行比较以确定预拾取缓冲器中是否存在可执行指令循环;其中如果作为比较的结果,检测到指令循环,则使指令拾取单元和/或其组件掉电;以及从预拾取缓冲器直接流送指令直至检测到清除条件。
Description
背景
发明领域
本发明一般涉及计算机处理器领域。本发明尤其涉及用于检测缓冲器内的指令循环和其他指令编组以及响应性地使拾取单元掉电的装置和方法。
相关技术描述
许多现代微处理器具有便于高速操作的大指令流水线。“被拾取的”程序指令进入流水线,在流水线的中间级中进行诸如解码和执行之类的操作,并在流水线的末端被“退隐(retire)”。当流水线在每个时钟周期接收有效指令时,流水线保持充满并且性能是良好的。当在每个周期未接收到有效指令时,流水线不保持完整,并且性能会受损。例如,性能问题可源自程序代码中的分支指令。如果在程序中遇到分支指令且处理分支至目标地址,则指令流水线的一部分可能必须被冲刷(flush),从而导致性能惩罚。
已设计分支目标缓冲器(BTB)来减轻分支指令对流水线效率的影响。可在David A.Patterson和John L.Hennessy的Computer Architecture AQuantitative Approach(计算机架构定量办法)271-275(1990年第二版)中找到关于BTB的讨论。典型BTB应用也在图1中示出,图1例示了耦合至指令指针(IP)118和处理器流水线120的BTB110。图1中还包括高速缓存130和拾取缓冲器132。将被拾取的下一指令的位置由IP118来指定。随着程序中执行顺序地行进,IP118在每个周期递增。IP118的输出驱动高速缓存130的端口134,并指定将从其拾取下一指令的地址。高速缓存130将指令提供给拾取缓冲器132,该拾取缓冲器132进而将指令提供给处理器流水线120。
当由流水线120接收到指令时,它们在若干个级中行进,这若干个级被示为拾取级122、解码级124、中间级126(例如,指令执行级)、以及退隐级128。关于分支指令是否导致所选取分支的信息有时在诸如退隐级128之类的后一流水线级之前不可用。当BTB110不存在且选取了分支时,拾取缓冲器132以及指令流水线120中跟随在分支指令之后的那部分使指令与错误执行路径分隔开。处理器流水线120和拾取缓冲器132中的无效指令被冲刷,且用分支目标地址来写入IP118。部分因为在用始于分支目标地址的指令来填充拾取缓冲器132和指令流水线120的同时处理器进行等待的原因,导致性能惩罚。
分支目标缓冲器(BTB)减轻所选取分支的性能影响。BTB110包括记录111,各个记录具有分支地址(BA)字段112和目标地址(TA)字段114。TA字段114保持位于由相应的BA字段112指定的地址处的分支指令的分支目标地址。当处理器流水线120遇到分支指令时,对记录111的BA字段112进行搜索以得到与分支指令的地址相匹配的记录。如果找到,则IP118被改成与所找到的BA字段112相对应的TA字段114的值。结果,接下来拾取始于分支目标地址处的指令。
节省处理器流水线中的功率是重要的,尤其对于依靠电池功率运行的膝上型计算机和其他移动设备而言。由此,在重复指令组(例如,嵌套循环)位于拾取缓冲器内时使处理器流水线中的诸如指令拾取电路和指令高速缓存之类的特定部分掉电将是有益的。相应地,用于检测可使拾取电路或其部分掉电的情形的新技术将是有益的。
附图简述
可结合附图从以下详细描述中获得对本发明的更好理解,其中:
图1例示了采用分支目标缓冲器来执行分支目标预拾取的现有技术处理器流水线。
图2例示了包括用于从预拾取缓冲器流送指令并响应性地使处理器流水线的部分掉电的循环流检测器的处理器架构的一个实施例。
图3例示了用于检测重复指令组并响应性地使处理器流水线的部分掉电的方法的一个实施例。
图4例示了循环流检测器开始操作的一个实施例的流水线示图;
图5例示了在预拾取缓冲器的一个实施例中采用的用于使循环流检测器进行操作的字段。
图6例示了在预拾取缓冲器的另一实施例中采用的用于使循环流检测器进行操作的字段。
图7例示了包括嵌套指令序列的示例性程序代码。
具体实施方式
在下面的描述中,出于说明目的,阐述了众多具体细节以便提供对以下描述的本发明的实施例的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的一些也可实施本发明的诸实施例。在其他实例中,众所周知的结构和设备以框图形式示出,以避免淡化本发明的实施例的底层原理。
本发明的一个实施例在执行诸如嵌套循环和/或嵌套分支之类的重复指令组时降低CPU核的动态功率。例如,当在预拾取缓冲器中检测到由分支预测器预测的指令组时,本发明的一个实施例使拾取单元和相关联的指令拾取电路(或其部分)掉电以节省功率。随后从预拾取缓冲器直接流送指令,直至需要附加指令,此时将指令拾取单元上电。本发明的实施例可在单线程或多线程环境两者中操作。在一个实施例,在单线程环境中,所有预拾取缓冲器条目被分配给单个线程,而在多线程环境中,预拾取缓冲器条目在多个线程之间被均等地划分。
一个特定实施例包括循环流检测器(LSD),其具有用于检测重复指令组的预拾取缓冲器。循环流检测器预拾取缓冲器在多线程模式中可以是6条目深的(3个用于线程0,且3个用于线程1),而在单线程模式中可以是3条目深的。替换地,所有6个条目可被用于单线程模式中的单线程。在一个实施例中,在单线程模式中,在预拾取缓冲器中,条目的数目可被配置成3或6。
在一个实施例中,循环流检测器预拾取缓冲器存储分支信息,诸如关于被写入预拾取缓冲器中的每个分支目标缓冲器(BTB)预测分支的预拾取缓冲器的当前线性指令指针(CLIP)、偏移量、以及分支目标地址读取指针。当BTB预测分支时,可对照预拾取缓冲器中的条目来比较分支的CLIP和偏移量,以确定此分支是否已驻留在预拾取缓冲器中。如果存在匹配,则拾取单元或其部分(诸如指令高速缓存)被关闭,从预拾取缓冲器流送指令,直至遇到清除条件(例如错误预测分支)。如果预拾取缓冲器中的指令循环内存在BTB预测分支,则这些也是从预拾取缓冲器流送的。在一个实施例中,针对直接且条件分支激活——但是针对插入流不激活——循环流检测器,并且返回/调用指令。
在图2中例示了用于在预拾取缓冲器内检测到嵌套循环、分支、以及其他重复指令编组时使拾取单元(和/或其他电路)掉电的处理器架构的一个实施例。如图所示,此实施例包括用于执行本文中描述的各种功能的循环流检测器单元200。具体地,循环流检测器200包括比较电路202,其用于将由分支目标缓冲器(BTB)预测的分支与预拾取缓冲器201中的条目进行比较。如先前所提及的,在本发明的一个实施例中,如果在预拾取缓冲器中检测到匹配,则循环流检测器200响应性地使指令拾取单元210(或其部分)掉电(如图2中的ON/OFF(开/关)线所指示的)。
可响应于来自循环流检测器(该循环流检测器包括分支预测单元211、下一指令指针212、指令转换后备缓冲器(ITLB)、指令高速缓存214和/或预解码高速缓存215)的信号来使指令拾取单元210的各种众所周知的组件掉电,由此如果在预拾取缓冲器内检测到重复指令组,则节省相当大量的功率。随后将指令从预拾取缓冲器直接流送到指令流水线的其他级,作为示例而非限制,包括解码级220和执行级230。
图3例示了用于响应于在指令缓冲器内检测到指令组(诸如嵌套循环)使拾取单元(或其部分)掉电的方法的一个实施例。该方法可通过使用图2中所示的处理器架构来实现,或者在不同的处理器架构上实现。
在301,预测分支指令,并且确定分支指令的当前线性指令指针(CLIP)、分支偏移量和/或分支目标地址。在302,对照预拾取缓冲器中的条目来比较CLIP、分支偏移量和/或分支目标地址。在一个实施例中,比较的目的是确定嵌套循环是否被存储在预拾取缓冲器内。如果在303确定找到匹配,则在304处,使指令拾取单元(和/或其各个组件)掉电,并且在305处,从预拾取缓冲器直接流送指令。继续从预拾取缓冲器流送指令,直至在306处发生清除条件(例如,错误预测分支)。
图4例示了根据本发明的一个实施例的循环流检测器如何开始进行操作。具体地,在图4中,分支由指令流水线内的IF2_L级(BT清除)中的预测器来预测,而下一指令指针(IP)mux(多路复用器)级是通过气泡(bubble)而被重定向至预测分支目标地址的。在级ID1,CLIP、分支偏移量和目标读取指针(标识分支目标的指针)被记录在预拾取缓冲器内。响应于检测到CLIP、分支偏移量和/或目标读取指针的匹配,循环流检测器进行操作,并且在一个实施例中,拾取单元被禁用。这在图4的底部例示出,图4示出了比较CLIP和分支偏移量,以及循环流检测器锁闭被设置(由此使拾取单元和/或其部分掉电)。
图5例示了具有用于使循环流检测器进行操作的不同字段的循环流检测器预拾取缓冲器的一个实施例的结构,而图7例示了用于图5的循环流检测器示例的示例性指令序列。处于方便起见,以下还提供了示例性指令序列。LSD预拾取缓冲器内使用的字段包括预拾取缓冲器条目号501(在此特定示例中,有6个PFB条目,编号为0-5)、当前线性指令指针(CLIP)502、分支偏移量字段503、目标读取指针字段504、以及条目有效字段505。
如图所示,当具有当前线性指令指针(CLIP)0xl20h处的分支的循环被拾取单元展开并被写入到预拾取缓冲器中时,对照PFB条目中的每一个的有效CLIP和分支偏移量字段来比较传入CLIP和分支偏移量。响应于比较,在PFB条目3处置位有效比特,如图所示。另外,PFB条目3记录重定向PFB读取指针,以实现从PFB流送指令。在一个实施例中,执行以下操作:
(1)预测分支。
(2)将CLIP和偏移量与PFB中的现有条目进行比较。
(3)如果对照PFB的LSD结构中的条目中的一个(在所例示示例中,为条目0)存在匹配,则条目0的PFB目标读取指针字段被拷贝到LSD结构的条目3,并且在写入PFB条目时,条目有效比特被置位。在一个实施例中,PFB条目包括16字节高速缓存数据线,并且每字节一个指示宏指令的末端的预解码比特。
(4)当PFB读取指针抵达条目3时,其被用来从条目3读取所有信息,包括PFB条目读取指针和有效比特。
(5)基于有效比特,并非是读取下一顺序的PFB条目4,而是使用目标读取指针将其重定向至条目1。
(6)现在从条目1、条目2、条目3顺序地读取PFB条目。
(7)在条目3,读取PFB有效比特,并且PFB使用目标读取指针来读取下一PFB条目。
(8)重复步骤6和7。
在一个实施例中,每个PFB条目包括完整16字节高速缓存线,其包含将从PFB被流送的指令。连同高速缓存线原始数据一起,预解码比特以及指示分支指令的最后字节的BTB标志符也被存储在PFB中。预解码比特被存储在预解码高速缓存215中。在预解码高速缓存中,高速缓存线的每个字节有一个比特。此比特指示宏指令的末端。BTB标志器也是每字节一个指示分支指令的最后字节的比特。被写入PFB条目中的16字节高速缓存线中可以有多达16个指令。对于BTB预测分支指令,具有分支目标的指令的高速缓存线总是被写入PFB中的下一顺序条目中。在一个实施例中,有4:1MUX,其输出被用来读取PFB条目。MUX的输入是:(1)PFB读取指针,其通常从PFB条目流送指令,并且在已从条目流送所有指令时前进;(2)当从PFB条目流送分支指令时的分支目标PFB读取指针;(3)在像错误预测分支之类的清除条件之后的PFB读取指针,并且这总是指向第一PFB条目;以及(4)归因于LSD的操作的PFB目标读取指针。
在图6中示出了PFB LSD的另一实施例,其中LSD字段的条目的数目小于PFB条目的数目,以降低功率/面积。具体地,在此示例中,对于LSD字段而言,有四个条目(具有LSD条目号03),而对于PFB字段而言,有6个条目(编号为0-5)。每个PFB条目中的头指针值被用来指向与拾取单元中的预测器所预测的分支指令相关联的LSD条目。例如,头指针0001指向LSD条目号0;头指针0010指向LSD条目号1;头指针0100指向LSD条目号2;而头指针1000指向LSD条目号3。头指针值0000指示PFB条目不具有指向LSD条目的BTB预测分支。因而,如果(1)检测到匹配的CLIP和分支偏移量,并且(2)匹配的LSD条目具有从PFB条目中的任一个指向其的相对应的有效头指针。在一个实施例中,来自PFB条目的头指针的比特[0]是进行了或(OR)操作的,并且因匹配而是合格的。(3)在一个实施例中,如果对照PFB的LSD结构中的条目中的一个存在匹配,则匹配的条目的PFB目标读取指针字段被拷贝至PFB中具有BTB预测的相对应的高速缓存线正被写入到其中的条目。另外,对于当前正被写入的具有BTB预测分支指令的PFB条目,LSD有效比特被置位。(4)当PFB读取指针抵达LSD有效比特已被置位的条目时,其被用来从条目读取所有信息,包括PFB条目读取指针和LSD有效比特。(5)基于LSD有效比特,并非是读取下一顺序的PFB条目,而是使用目标读取指针将其重定向至条目。(6)随后顺序地读取PFB条目,直至读取具有PFB有效比特的条目,并且PFB使用目标读取指针来读取下一PFB条目。(7)随后重复以上操作5和6。
在本发明的一个实施例中,其中实现本发明的实施例的处理器包括低功率处理器,诸如由IntelTM公司设计的AtomTM处理器。然而,本发明的底层原理不限于任何具体的处理器架构。例如,可在包括由Intel设计的核i3、i5、和/或i7处理器的各种不同处理器架构上或者在智能电话和/或其他便携式计算设备中所使用的各个低功率片上系统(SoC)架构上实现本发明的底层原理。
图8例示了其上可实现本发明的实施例的示例性计算机系统800。计算机系统800包括用于传送信息的系统总线820,以及耦合至总线820的用于处理信息的处理器810。计算机系统800还包括耦合至总线820的随机存取存储器(RAM)或其它动态存储装置825(在本文中被称为主存储器),用于存储要由处理器810执行的信息和指令。主存储器825还可用于存储处理器810执行指令期间的临时变量或其它中间信息。计算机系统800还可包括耦合至总线820的只读存储器(ROM)和/或其它静态存储装置826,用于存储由处理器810使用的静态信息和指令。
诸如磁盘或光盘等数据存储装置827及其相应的驱动器也可耦合至计算机系统800以存储信息和指令。计算机系统800还可经由I/O接口830耦合至第二I/O总线850。多个I/O设备可耦合至I/O总线850,包括显示设备843、输入设备(例如,字母数字输入设备842和/或光标控制装置841)。
通信设备240用于经由网络访问其他计算机(服务器或客户机),以及上传/下载各种类型的数据。通信装置240可包括调制解调器、网络接口卡或其它公知的接口设备,诸如用于耦合至以太网、令牌环或其它类型网络的设备。
图9是示出可用在本发明的一些实施例中的另一示例性数据处理系统的框图。例如,数据处理器系统900可以是手持式计算机、个人数字助理(PDA)、移动电话、便携式游戏系统、便携式媒体播放器、平板计算机、或可包括移动电话、媒体播放器和/或游戏系统的手持式计算设备。作为另一示例,数据处理系统900可以是网络计算机或另一设备内的嵌入式处理设备。
根据本发明的一个实施例,数据处理系统900的示例性架构可用于以上所描述的移动设备。数据处理系统900包括处理系统920,该处理系统920可包括一个或多个微处理器和/或集成电路上的系统。处理系统920与处理器910、电源925(其包括一个或多个电池)、音频输入/输出940、显示控制器和显示设备960、任选输入/输出950、输入设备970、和无线收发机930耦合。应当理解,在本发明的某些实施例中,未在图9中示出的附加组件也可以是数据处理系统900的一部分,而在本发明的某些实施例中,可使用比图9中所示的更少的组件。另外,应当理解,未在图9中所示的一条或多条总线可用于互连各个组件,如本领域中众所周知的。
存储器910可存储供数据处理系统900来执行的数据和/或程序。音频输入/输出940可包括麦克风和/或扬声器,以便例如通过扬声器和麦克风播放和/或提供电话功能。显示控制器和显示设备960可包括图形用户界面(GUI)。无线(例如,RF)收发机930(例如,WiFi收发机、红外收发机、蓝牙收发机、无线蜂窝电话收发机等)可用于与其他数据处理系统通信。一个或多个输入设备970允许用户向系统提供输入。这些输入设备可以是键区、键盘、触摸面板、多触摸面板等。任选其他输入/输出950可以是坞站的连接器。
本发明的其他实施例可在蜂窝电话和寻呼机(例如,其中软件被嵌入到微芯片中)、手持式计算设备(例如,个人数字助理、智能电话)和/或按键式电话上实现。然而,应当理解,本发明的底层原理不限于任何特定类型的通信设备或通信介质。
本发明的实施例可以包括以上描述的各个步骤。这些步骤可在用于导致通用或专用处理器执行步骤的机器可执行指令中实现。另选地,这些步骤可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件的任何组合来执行。
本发明的各元素也可以作为计算机程序产品来提供,该计算机程序产品可包括其上存储有指令的计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行过程。该机器可读介质可以包括,但不限于,软盘、光盘、CD-ROM、以及磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或适于存储电子指令的其它类型的介质/机器可读介质。例如,本发明可以作为计算机程序产品来下载,其中该程序可用具体化在载波或其它传播介质中的数据信号的方式经由通信链路(例如,调制解调器或网络连接)从远程计算机(例如,服务器)传输到请求计算机(例如,客户机)。
贯穿此详细描述,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实践本发明。在某些实例中,并不详细描述众所周知的结构和功能以免淡化本发明的主题。因此,本发明的范围和精神应根据所附权利要求书来判断。
Claims (21)
1.一种用于在具有指令拾取单元和预拾取缓冲器的处理器上降低功耗的方法,包括:
检测分支,所述分支具有与之相关联的寻址信息;
将所述寻址信息与指令预拾取缓冲器中的条目进行比较以确定所述预拾取缓冲器中是否存在可执行指令循环;
其中如果作为所述比较的结果,检测到指令循环,则使指令拾取单元和/或其组件掉电;以及
从所述预拾取缓冲器直接流送指令直至检测到清除条件。
2.如权利要求1所述的方法,其特征在于,所述寻址信息包括当前线性指令指针(CLIP)、分支偏移量、和/或分支目标地址。
3.如权利要求1所述的方法,其特征在于,所述清除条件包括错误预测分支。
4.如权利要求1所述的方法,其特征在于,所述指令循环包括嵌套指令循环。
5.如权利要求1所述的方法,其特征在于,使所述指令拾取单元掉电包括使指令高速缓存和/或指令解码高速缓存掉电。
6.如权利要求5所述的方法,其特征在于,使所述指令拾取单元掉电包括使分支预测单元、下一指令指针和/或指令转换后备缓冲器(ITLB)掉电。
7.如权利要求1所述的方法,其特征在于,流送指令包括从所述指令预拾取缓冲器读取所述指令以及将所述指令提供给处理器流水线的解码级。
8.一种用于降低处理器上的功耗的装置,包括:
指令拾取单元,其预测分支,所述分支具有与之相关联的寻址信息;
循环流检测器单元,其将所述寻址信息与指令预拾取缓冲器中的条目进行比较以确定所述预拾取缓冲器中是否存在可执行指令循环;
其中如果作为所述比较的结果,检测到指令循环,则使指令拾取单元和/或其组件掉电;以及
从所述预拾取缓冲器直接流送指令直至检测到清除条件。
9.如权利要求8所述的装置,其特征在于,所述寻址信息包括当前线性指令指针(CLIP)、分支偏移量和/或分支目标地址。
10.如权利要求8所述的装置,其特征在于,所述清除条件包括错误预测分支。
11.如权利要求8所述的装置,其特征在于,所述指令循环包括嵌套指令循环。
12.如权利要求8所述的装置,其特征在于,使所述指令拾取单元掉电包括使指令高速缓存和/或指令解码高速缓存掉电。
13.如权利要求12所述的装置,其特征在于,使所述指令拾取单元掉电包括使分支预测单元、下一指令指针和/或指令转换后备缓冲器(ITLB)掉电。
14.如权利要求8所述的装置,其特征在于,流送指令包括从所述指令预拾取缓冲器读取所述指令以及将所述指令提供给处理器流水线的解码级。
15.一种计算系统,包括:
显示设备;
处理器,其用于存储指令;
处理器,其用于处理所述指令,包括:
指令拾取单元,其预测分支,所述分支具有与之相关联的寻址信息;
循环流检测器单元,其将所述寻址信息与指令预拾取缓冲器中的条目进行比较以确定所述预拾取缓冲器中是否存在可执行指令循环;
其中如果作为所述比较的结果,检测到指令循环,则使指令拾取单元和/或其组件掉电;以及
从所述预拾取缓冲器直接流送指令直至检测到清除条件。
16.如权利要求15所述的系统,其特征在于,所述寻址信息包括当前线性指令指针(CLIP)、分支偏移量和/或分支目标地址。
17.如权利要求15所述的系统,其特征在于,所述清除条件包括错误预测分支。
18.如权利要求15所述的系统,其特征在于,所述指令循环包括嵌套指令循环。
19.如权利要求15所述的系统,其特征在于,使所述指令拾取单元掉电包括使指令高速缓存和/或指令解码高速缓存掉电。
20.如权利要求19所述的系统,其特征在于,使所述指令拾取单元掉电包括使分支预测单元、下一指令指针和/或指令转换后备缓冲器(ITLB)掉电。
21.如权利要求15所述的系统,其特征在于,流送指令包括从所述指令预拾取缓冲器读取所述指令以及将所述指令提供给处理器流水线的解码级。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/890,561 US20120079303A1 (en) | 2010-09-24 | 2010-09-24 | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
US12/890,561 | 2010-09-24 | ||
PCT/US2011/053152 WO2012040664A2 (en) | 2010-09-24 | 2011-09-23 | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103119537A true CN103119537A (zh) | 2013-05-22 |
CN103119537B CN103119537B (zh) | 2017-07-11 |
Family
ID=45871908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180045959.1A Active CN103119537B (zh) | 2010-09-24 | 2011-09-23 | 用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20120079303A1 (zh) |
JP (1) | JP2013541758A (zh) |
KR (1) | KR20130051999A (zh) |
CN (1) | CN103119537B (zh) |
DE (1) | DE112011103212B4 (zh) |
GB (1) | GB2497470A (zh) |
TW (1) | TWI574205B (zh) |
WO (1) | WO2012040664A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391563A (zh) * | 2014-10-23 | 2015-03-04 | 中国科学院声学研究所 | 一种寄存器堆的循环缓冲电路及其方法,处理器装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396117B2 (en) | 2012-01-09 | 2016-07-19 | Nvidia Corporation | Instruction cache power reduction |
US9176571B2 (en) * | 2012-03-02 | 2015-11-03 | Semiconductor Energy Laboratories Co., Ltd. | Microprocessor and method for driving microprocessor |
US9547358B2 (en) | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9552032B2 (en) | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9557999B2 (en) * | 2012-06-15 | 2017-01-31 | Apple Inc. | Loop buffer learning |
US9753733B2 (en) | 2012-06-15 | 2017-09-05 | Apple Inc. | Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer |
US9710276B2 (en) * | 2012-11-09 | 2017-07-18 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
US9645934B2 (en) * | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US9569220B2 (en) * | 2013-10-06 | 2017-02-14 | Synopsys, Inc. | Processor branch cache with secondary branches |
US9632791B2 (en) * | 2014-01-21 | 2017-04-25 | Apple Inc. | Cache for patterns of instructions with multiple forward control transfers |
US9471322B2 (en) | 2014-02-12 | 2016-10-18 | Apple Inc. | Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold |
US20150254078A1 (en) * | 2014-03-07 | 2015-09-10 | Analog Devices, Inc. | Pre-fetch unit for microprocessors using wide, slow memory |
US9524011B2 (en) | 2014-04-11 | 2016-12-20 | Apple Inc. | Instruction loop buffer with tiered power savings |
US10203959B1 (en) * | 2016-01-12 | 2019-02-12 | Apple Inc. | Subroutine power optimiztion |
US10223123B1 (en) * | 2016-04-20 | 2019-03-05 | Apple Inc. | Methods for partially saving a branch predictor state |
GB2580316B (en) * | 2018-12-27 | 2021-02-24 | Graphcore Ltd | Instruction cache in a multi-threaded processor |
US20220156077A1 (en) * | 2019-03-22 | 2022-05-19 | Cambricon Technologies Corporation Limited | Artificial intelligence computing device and related product |
CN111723920A (zh) * | 2019-03-22 | 2020-09-29 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
US20210200550A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | Loop exit predictor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1220089A2 (en) * | 2000-12-29 | 2002-07-03 | STMicroelectronics, Inc. | System and method for executing conditional branch instructions in a data processor |
TW494360B (en) * | 2000-02-17 | 2002-07-11 | Ibm | Instruction fetch unit in a microprocessor |
US20040003298A1 (en) * | 2002-06-27 | 2004-01-01 | International Business Machines Corporation | Icache and general array power reduction method for loops |
TW200419336A (en) * | 2003-03-11 | 2004-10-01 | Faraday Tech Corp | Low power branch predication target buffer |
US20090217017A1 (en) * | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for minimizing branch prediction latency |
CN101763249A (zh) * | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 对非控制流指令减少分支检验 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3273240A (en) * | 1964-05-11 | 1966-09-20 | Steuart R Florian | Cutting tool |
JPH05241827A (ja) * | 1992-02-27 | 1993-09-21 | Nec Ibaraki Ltd | 命令バッファ制御装置 |
JP2694799B2 (ja) * | 1993-09-07 | 1997-12-24 | 日本電気株式会社 | 情報処理装置 |
US5623615A (en) * | 1994-08-04 | 1997-04-22 | International Business Machines Corporation | Circuit and method for reducing prefetch cycles on microprocessors |
US5860106A (en) * | 1995-07-13 | 1999-01-12 | Intel Corporation | Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem |
JPH0991136A (ja) * | 1995-09-25 | 1997-04-04 | Toshiba Corp | 信号処理装置 |
US6678815B1 (en) * | 2000-06-27 | 2004-01-13 | Intel Corporation | Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end |
US7028197B2 (en) * | 2003-04-22 | 2006-04-11 | Lsi Logic Corporation | System and method for electrical power management in a data processing system using registers to reflect current operating conditions |
US7444457B2 (en) * | 2003-12-23 | 2008-10-28 | Intel Corporation | Retrieving data blocks with reduced linear addresses |
US7475231B2 (en) * | 2005-11-14 | 2009-01-06 | Texas Instruments Incorporated | Loop detection and capture in the instruction queue |
US7496771B2 (en) * | 2005-11-15 | 2009-02-24 | Mips Technologies, Inc. | Processor accessing a scratch pad on-demand to reduce power consumption |
DE102007031145A1 (de) * | 2007-06-27 | 2009-01-08 | Gardena Manufacturing Gmbh | Handbetätigbare Schere |
JP5043560B2 (ja) * | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US9772851B2 (en) * | 2007-10-25 | 2017-09-26 | International Business Machines Corporation | Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer |
JP2010066892A (ja) * | 2008-09-09 | 2010-03-25 | Renesas Technology Corp | データプロセッサ及びデータ処理システム |
US9170816B2 (en) * | 2009-01-15 | 2015-10-27 | Altair Semiconductor Ltd. | Enhancing processing efficiency in large instruction width processors |
DE102009019989A1 (de) * | 2009-05-05 | 2010-11-11 | Gardena Manufacturing Gmbh | Handbetätigte Schere |
JP5423156B2 (ja) * | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
US8370671B2 (en) * | 2009-12-02 | 2013-02-05 | International Business Machines Corporation | Saving power by powering down an instruction fetch array based on capacity history of instruction buffer |
US8578141B2 (en) * | 2010-11-16 | 2013-11-05 | Advanced Micro Devices, Inc. | Loop predictor and method for instruction fetching using a loop predictor |
-
2010
- 2010-09-24 US US12/890,561 patent/US20120079303A1/en not_active Abandoned
-
2011
- 2011-09-19 TW TW100133615A patent/TWI574205B/zh active
- 2011-09-23 DE DE112011103212.9T patent/DE112011103212B4/de active Active
- 2011-09-23 JP JP2013528400A patent/JP2013541758A/ja active Pending
- 2011-09-23 WO PCT/US2011/053152 patent/WO2012040664A2/en active Application Filing
- 2011-09-23 KR KR1020137007391A patent/KR20130051999A/ko not_active Application Discontinuation
- 2011-09-23 CN CN201180045959.1A patent/CN103119537B/zh active Active
- 2011-09-23 GB GB1305036.4A patent/GB2497470A/en not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW494360B (en) * | 2000-02-17 | 2002-07-11 | Ibm | Instruction fetch unit in a microprocessor |
EP1220089A2 (en) * | 2000-12-29 | 2002-07-03 | STMicroelectronics, Inc. | System and method for executing conditional branch instructions in a data processor |
US20040003298A1 (en) * | 2002-06-27 | 2004-01-01 | International Business Machines Corporation | Icache and general array power reduction method for loops |
TW200419336A (en) * | 2003-03-11 | 2004-10-01 | Faraday Tech Corp | Low power branch predication target buffer |
US20090217017A1 (en) * | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for minimizing branch prediction latency |
CN101763249A (zh) * | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 对非控制流指令减少分支检验 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391563A (zh) * | 2014-10-23 | 2015-03-04 | 中国科学院声学研究所 | 一种寄存器堆的循环缓冲电路及其方法,处理器装置 |
CN104391563B (zh) * | 2014-10-23 | 2017-05-31 | 中国科学院声学研究所 | 一种寄存器堆的循环缓冲电路及其方法,处理器装置 |
Also Published As
Publication number | Publication date |
---|---|
DE112011103212B4 (de) | 2020-09-10 |
WO2012040664A2 (en) | 2012-03-29 |
GB201305036D0 (en) | 2013-05-01 |
TWI574205B (zh) | 2017-03-11 |
KR20130051999A (ko) | 2013-05-21 |
TW201224920A (en) | 2012-06-16 |
GB2497470A (en) | 2013-06-12 |
CN103119537B (zh) | 2017-07-11 |
US20120079303A1 (en) | 2012-03-29 |
JP2013541758A (ja) | 2013-11-14 |
WO2012040664A3 (en) | 2012-06-07 |
DE112011103212T5 (de) | 2013-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103119537A (zh) | 用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 | |
CN101377736B (zh) | 乱序执行微处理器以及宏指令处理方法 | |
KR101302611B1 (ko) | 분기 예측에 이용하기 위한 다중-모드 레지스터 파일 | |
KR101496009B1 (ko) | 루프 버퍼 패킹 | |
CN100520712C (zh) | 用来实施具有追踪缓存的微处理器的方法及系统 | |
EP2674858B1 (en) | Loop buffer learning | |
US8392694B2 (en) | System and method for software initiated checkpoint operations | |
US20120185714A1 (en) | Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques | |
CN100485584C (zh) | 减少电能损耗的系统和方法 | |
US20070204138A1 (en) | Device, system and method of tracking data validity | |
CN103827818B (zh) | Fifo加载指令 | |
KR20130127502A (ko) | 하이브리드 명령 큐를 갖는 프로세서 | |
CN101606135A (zh) | 时钟控制装置、时钟控制方法、时钟控制程序及集成电路 | |
TW201723806A (zh) | 基於相位訓練及預測之失序電腦處理器之重組態執行管線 | |
CN104854557B (zh) | 存取高速缓存的设备和方法 | |
TW201915715A (zh) | 使用亂序指令選取器選擇按序指令選取 | |
JP2004510248A (ja) | ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ | |
US11669333B2 (en) | Method, apparatus, and system for reducing live readiness calculations in reservation stations | |
CN117348934A (zh) | 数据缓存方法及数据缓存装置、处理器 | |
CN117742805A (zh) | 芯片初始化方法和装置 | |
US20040128572A1 (en) | Apparatus and method for driving and routing source operands to execution units in layout stacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |