CN104516829A - 微处理器及使用指令循环高速缓存的方法 - Google Patents
微处理器及使用指令循环高速缓存的方法 Download PDFInfo
- Publication number
- CN104516829A CN104516829A CN201410080470.3A CN201410080470A CN104516829A CN 104516829 A CN104516829 A CN 104516829A CN 201410080470 A CN201410080470 A CN 201410080470A CN 104516829 A CN104516829 A CN 104516829A
- Authority
- CN
- China
- Prior art keywords
- cache
- instruction
- processor core
- speed cache
- label
- 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 40
- 238000000605 extraction Methods 0.000 claims description 47
- 238000003491 array Methods 0.000 claims description 43
- 239000000284 extract Substances 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 27
- 230000000875 corresponding effect Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 14
- 210000000481 breast Anatomy 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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
-
- 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
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
本发明提供一种微处理器及使用指令循环高速缓存的方法,其包括处理器核心以及指令循环高速缓存。处理器核心提供指令流的提取地址,提取地址包括标签及索引。指令循环高速缓存自处理器核心接收提取地址。指令循环高速缓存包括高速缓存阵列以及标签存储器。高速缓存阵列存储多个高速缓存条目。各高速缓存条目包括标签识别码。高速缓存阵列输出提取地址中索引所对应的高速缓存条目的标签识别码。标签存储器存储多个标签值并输出高速缓存阵列输出的标签识别码所对应的标签值。指令循环高速缓存基于提取地址的标签与标签存储器输出的标签值之间的按比特比较,而决定高速缓存命中或高速缓存未中是否发生。
Description
技术领域
本发明是有关于一种指令高速缓存(instruction caching),且特别是有关于微处理器及使用指令循环高速缓存的方法。
背景技术
指令高速缓存(instruction cache)是微处理器中不可或缺的元件。当微处理器需要提取指令时,其处理器核心会传送指令的提取地址(fetch address)至指令高速缓存。提取地址对应于指令流(instruction stream),且指令流包括一或多个指令。当指令已存在指令高速缓存内时,指令高速缓存可直接对处理器核心提供指令。否则,指令高速缓存会从指令所在的存储器中提取指令、存储指令以及将指令提供给处理器核心。由于从外部存储器提取指令比从指令高速缓存提取指令花费更多的时间并耗费更多功率,指令高速缓存可减低功率消耗并促进微处理器的处理速度。
发明内容
嵌入式系统(embedded system)的应用程序通常在最深层循环(innermostloop)花费很多执行时间。因此,本发明提供一种微处理器及使用指令循环高速缓存的方法,藉以降低功率损耗并改善指令提取的效率。
依据本发明一实施例,本发明提供一种微处理器。微处理器包括处理器核心以及指令循环高速缓存。处理器核心提供指令流的提取地址。指令流包括一或多个指令。提取地址包括标签(tag)以及索引(index)。指令循环高速缓存自处理器核心接收提取地址。指令循环高速缓存包括高速缓存阵列以及标签存储器。高速缓存阵列耦接至处理器核心。高速缓存阵列存储第一预定数量个高速缓存条目。各高速缓存条目包括标签识别码(tag identification;tag ID)。高速缓存阵列输出提取地址中索引所对应的高速缓存条目的标签识别码。标签存储器耦接至处理器核心以及高速缓存阵列。标签存储器经配置用以存储第二预定数量个标签值,并输出高速缓存阵列输出的标签识别码所对应的标签值。指令循环高速缓存基于提取地址的标签与标签存储器输出的标签值之间的按比特比较,而决定高速缓存命中(cache hit)或高速缓存未中(cache miss)是否发生。
依据本发明另一实施例,本发明提供一种使用前述指令循环高速缓存的方法。此方法包括下列步骤。初始时进入正常状态,其中指令循环高速缓存与包括正常状态及内部状态的有限状态机(finite state machine)相关。当目前状态为正常状态且处理器核心发送至指令循环高速缓存的标签值与之前存储在指令循环高速缓存中的每一标签值不同时,以该标签值更新指令循环高速缓存。当目前状态为内部状态,且处理器核心发送至指令循环高速缓存的标签值与之前存储在指令循环高速缓存中的每一标签值不同时,进入正常状态。当目前状态为正常状态时,对应于接收内部信号而进入内部状态。基于由处理器核心发送至该指令循环高速缓存的提取地址的标签以及存储在指令循环高速缓存中的标签值其中之一之间的比较,判断指令循环高速缓存内是否发生高速缓存命中或高速缓存未中。
依据本发明另一实施例,本发明提供一种使用前述指令循环高速缓存的方法。此方法包括下列步骤。每当提示指令被提取并识别时,发送与提示指令相关的标签值至指令循环高速缓存。提示指令通过标签值而与提示指令被执行之后将被执行的指令循环相关。基于指令的提取地址的标签与存储在指令循环高速缓存中的标签值其中之一之间的比较,指令循环高速缓存判断高速缓存命中或高速缓存未中是否发生。
为让本案的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依照本发明一实施例所示出的一种微处理器的示意图;
图2是依照本发明一实施例所示出的存储器内的一种高速缓存线(cacheline)的示意图;
图3是依照本发明一实施例所示出的微处理器的一种指令循环高速缓存的示意图;
图4是依照本发明一实施例所示出的一种指令循环的示意图;
图5是依照本发明一实施例所示出的一种使用指令循环高速缓存的方法的流程图;
图6是依照本发明一实施例所示出的一种指令循环的示意图;
图7是依照本发明一实施例所示出的另一种指令循环的示意图;
图8是依照本发明一实施例所示出的一种使用指令循环高速缓存的方法的流程图;
图9是依照本发明一实施例所示出的相关于指令循环高速缓存的一种有限状态机的示意图;
图10是依照本发明一实施例所示出的一种指令循环的示意图;
图11是依照本发明一实施例所示出的微处理器的一种指令循环高速缓存的示意图;
图12是依照本发明一实施例所示出的一种指令循环的示意图。
附图标记说明:
100:微处理器;
120:处理器核心;
125:循环标签信号;
140:指令循环高速缓存;
160:存储器;
320、1120:高速缓存阵列;
322、1122:标签识别码(ID);
324:有效比特;
326、1126:指令/指令类别;
340、1140:标签存储器;
360、1160:比较器;
365:命中信号;
380、1180:控制器;
I0~I7、Hint A、Hint B、Call F、F、RET、A、B、JA、JB:指令;
505~545、805、812~818、832:方法步骤。
具体实施方式
图1是依照本发明一实施例所示出的一种微处理器的示意图。微处理器100包括处理器核心120以及指令循环高速缓存140。指令循环高速缓存140耦接在处理器核心120以及外部存储器160。处理器核心120可提供指令流中的一或多个提取地址至指令循环高速缓存140。指令流可包括一或多个指令。各提取地址包括一个标签以及索引。在此,指令的提取地址是代表指令存储在存储器160中的地址。提取地址并非指令其运算元(operand)中所包括的地址。
指令循环高速缓存140接收处理器核心120所提供的提取地址,并对应于此提取地址以确认高速缓存命中或高速缓存未中是否发生。当高速缓存命中发生时,指令循环高速缓存140可对应于提取地址,而直接从指令循环高速缓存140本身提供指令至处理器核心120。当高速缓存未中发生时,指令循环高速缓存140则对应于提取地址,而从存储器160中的提取并存储指令,且将上述指令提供给处理器核心120。
处理器核心120可通过循环标签(loop-tag)信号125而提供一或多个标签值(tag value)至指令循环高速缓存140,藉以对应反向分支(backwardbranch)指令或提示指令(hint instruction)。循环标签信号125中所传送的标签值可以和处理器核心120传送至指令循环高速缓存140的提取地址的标签相异。循环标签信号125中所传送的标签值也可以和处理器核心120传送至指令循环高速缓存140的提取地址相关。在此情况下,循环标签信号可以用控制信号来实现,藉以表示提取地址与标签值有关。以下将详细说明。
图2是依照本发明一实施例所示出的存储器内的一种高速缓存线(cacheline)的示意图。存储器160的地址可分为标签以及索引。在本实施例中,一个地址有32比特,而标签有30比特且索引有2比特。在另一实施例中,地址、标签以及索引可以是不同的比特数。在相同高速缓存线中的地址具有相同的标签。举例而言,指令I0至I3位于地址0至3,且属于相同的高速缓存线并具有相同标签0。指令I4至I7位于地址4至7,且属于相同的高速缓存线并具有相同标签1。
图3是依照本发明一实施例所示出的微处理器的一种指令循环高速缓存的示意图。指令循环高速缓存140包括高速缓存阵列(cache array)320、标签存储器(tag storage)340、比较器360以及控制器380。高速缓存阵列320耦接至处理器核心120与存储器160。标签存储器340耦接至处理器核心120与高速缓存阵列320。比较器360耦接至高速缓存阵列320与标签存储器340。控制器380耦接至处理器核心120、存储器160、高速缓存阵列320、标签存储器340以及比较器360。为求简化,标签存储器340与控制器380的耦接关系未示出在图3中。
高速缓存阵列320可以存储2N个高速缓存条目(cache entry),其中N为处理器核心120所提供的提取地址其索引的比特数。因此,在本实施例中,高速缓存阵列320的大小即是一个高速缓存线。当高速缓存线为小时,指令循环高速缓存140也将相对为小。
图3以列(row)的形式描绘出高速缓存阵列320中的每一个高速缓存条目。各个高速缓存条目包括3个类别,也即,标签识别码(tag identification;tag ID,以下简称为标签ID)322、有效比特(valid bit)324以及指令326。标签识别码322用以从存储在标签存储器340的标签值中选择其中之一。有效比特324表示包括有效比特324的高速缓存条目为有效或无效。当高速缓存条目的有效比特324被设定时,此高速缓存条目为有效。指令326为之前从存储器160中提取,并在此时被存储在高速缓存条目中的指令。高速缓存阵列320输出高速缓存条目的标签ID322,且此高速缓存条目的为处理器核心120所提供的提取地址的索引所对应。换言之,高速缓存条目可以由0编号至2N-1,且高速缓存阵列320可输出编号与提取地址的索引相符的高速缓存条目的标签ID322。
标签存储器340存储2M个标签值,其中M为各高速缓存条目的标签ID322的比特数。标签存储器340中的标签值由0编号至2M-1。在本实施例中,M为1。处理器核心120通过循环标签信号125而提供标签值,而不是通过前述的提取地址。标签存储器340输出高速缓存阵列320所输出的标签ID322对应的标签值。换句话说,标签存储器340输出标签值,且此标签值其数值与高速缓存阵列320输出的标签ID相符。
比较器360对处理器核心120提供的提取地址的标签以及标签存储器340输出的标签值进行按比特比较(bitwise comparison)。高速缓存阵列320将提取地址的索引所对应的高速缓存条目的有效比特324输出至比较器360。当提取地址的标签与标签存储器340所输出的标签值相同,且高速缓存阵列320输出的有效比特324被设定时,比较器360设立(assert)命中信号365以表示高速缓存命中。否则,比较器360重置(de-assert)命中信号365,藉以表示高速缓存未中。
控制器380依据命中信号365,而将对应于提取地址的指令提供至处理器核心120。尽管在图3中是以多路复用器来描述控制器380,但控制器380实际上并不仅限于多路复用器。以下更详加说明。
图4是依照本发明一实施例所示出的一种指令循环的示意图。在存储器160中有5个指令I0-I4。指令I0-I3的地址具有相同的标签A。指令I4的地址的标签为A+1。指令I4为反向分支指令,且其分支目标为指令I2。因此,指令循环包括3个指令I2-I4。
每当处理器核心120执行反向分支指令而且此反向分支指令被取用(taken)时,处理器核心120会将与反向分支指令相关的至少一个标签值发送至指令循环高速缓存140。上述与反向分支指令相关的至少一个标签值可以是一或多个连续的标签值,并是由反向分支指令的目标地址的标签开始。在本实施例中,处理器核心120发送2个连续的标签值,且指令I4的目标地址为I2的提取地址。因此,处理器核心120通过循环标签信号125,而将A和A+1的标签值发送至指令循环高速缓存140。
图5是依照本发明一实施例所示出的一种使用指令循环高速缓存的方法的流程图。图5的方法可由指令循环高速缓存140的控制器380来执行。当微处理器100重置时,在步骤505中,控制器380通过清除每一个高速缓存条目的有效比特324,而使所有的高速缓存条目无效。在步骤510中,控制器380接收由处理器核心120所发送的一或多个标签值,并确认处理器核心120所发送的标签值是否与存储在标签存储器340中的标签值不同。当控制器380从处理器核心120所接收的任何一个标签值与之前存储在标签存储器340中的标签值不同时,此流程会进入步骤515。否则,此流程将进入步骤520。
在步骤515中,控制器380以从处理器核心120接收到的至少一个标签来更新标签存储器340。当标签存储器340有空位可容纳从处理器核心120接收到的至少一个标签值时,控制器380可简单地通过将从处理器核心120接收到的至少一个标签值加入至标签存储器340以更新标签存储器340。否则,控制器380以从处理器核心120接收到的至少一个标签值来取代之前存储在标签存储器340的标签值,并通过清除每一个高速缓存条目的有效比特324而使所有的高速缓存条目无效,藉以更新标签存储器340。之后,流程回到步骤510。
在步骤520中,控制器380确认是否从处理器核心120接收到指令的提取地址。当未收到提取地址时,流程回到步骤510。而当收到所述的提取地址时,流程进入步骤525。在步骤525中,控制器380确认比较器360是否设立命中信号365。当命中信号365未设立时,流程进入步骤535。当命中信号365被设立时,则在步骤530中,控制器380将提取地址的索引所对应的高速缓存条目的指令326提供至处理器核心120。之后,流程回到步骤510。
在步骤535中,控制器380从存储器160中提取位于提取地址的指令,并将指令提供至处理器核心120。在步骤540中,控制器380确认提取地址的标签是否与存储在标签存储器340中的任何一个标签值相同,且提取地址的索引所对应的高速缓存条目为无效。当步骤540中的确认结果为否时,流程回到步骤510。而当步骤540中的确认结果为是时,则在步骤545中,控制器380将位于提取地址的存储器160中的指令填入至提取地址的索引所对应的高速缓存条目。此外,控制器380设定标签ID322与所述高速缓存条目的有效比特324。之后,流程回到步骤510。
下表一示出微处理器100如何以图4中的循环指令进行高速缓存。以下讨论请参照图3、图4以及图5。
表一
表一中的“周期”栏位代表微处理器100的时脉周期。在周期4中,处理器核心120执行反向分支指令I4而且I4被取用。因此,处理器核心120将标签值A以及A+1发送至指令循环高速缓存140,且控制器380将标签值A以及A+1存储在标签存储器340中。处理器核心120在周期7、10、13中重复发送标签值A以及A+1,而由于相同的标签值已存储在标签存储器340中,故控制器380可将其忽略。
在周期5至7中,也即指令循环的第2次迭代,仍为高速缓存未中的情况。然而,因为提取地址的标签与标签存储器340中的标签值相符,控制器380开始以从存储器160中提取的指令填入高速缓存阵列320。从周期8开始,也即指令循环的第3次迭代,因指令I2至I4已存储在高速缓存阵列320,故高速缓存命中发生。指令循环的第3次以及之后迭代的指令是由指令循环高速缓存140提供,而不是由存储器160提供。
如表一所示,指令循环高速缓存140的高速缓存功能从指令循环的第3次迭代开始。在此状况中,若指令循环仅执行2次迭代,则指令循环高速缓存140将会无用。在本发明的一些其他实施例中,提示指令可提供以实现低迭代次数的指令循环的较佳实施例。
图6是依照本发明一实施例所示出的一种指令循环的示意图。提示指令‘Hint A’被设置在包括2个指令(I0及I1)的指令循环之前,其中I1为反向分支指令。在本实施例中,提示指令为条件式分支指令(conditional branchinstruction),并具有目标地址与分支条件。提示指令的分支条件总是不成立。举例来说,提示指令可能是“若暂存器0的值大于暂存器0的值,分支至某一目标地址”的形式。这是基于相容性的考量,不支援本发明的循环指令高速缓存的微处理器仍然可执行此提示指令,而不会产生任何结果,从而让微处理器仍能正常运作。
提示指令可由编译器(compiler)自动加入包括指令循环的指令流,或是通过程序设计师(programmer)手动加入。处理器核心120应在其执行提示指令所对应的指令循环之前,先执行提示指令。提示指令的目标地址指向对应的指令循环。只要相对应的指令循环在其目标地址可指向的范围内,提示指令可被弹性地设置。因此,提示指令可被设置在离指令循环较远处,藉以消除管线延迟(pipeline latency)。
每当处理器核心120提取并识别提示指令时,处理器核心120将与提示指令相关的标签值发送至指令循环高速缓存140。在本实施例中,与提示指令相关的标签值为提示指令其目标地址的标签。下表二示出微处理器100如何以图6中的指令循环进行高速缓存。
表二
在周期0中,处理器核心120提取并识别提示指令。因此,处理器核心120将标签值A发送至指令循环高速缓存140,且控制器380将标签值A存储至标签存储器340中。在周期1和2中,也即指令循环的第1次迭代,为高速缓存未中的情况。然而,因为提取地址的标签与标签存储器340中的标签值A相符,控制器380开始将从存储器160中提取的指令填入高速缓存阵列320。在周期2中,处理器核心120执行反向分支指令I1而且I1被取用。因此,处理器核心120将标签值A以及A+1发送至指令循环高速缓存140。从第3周期开始,也即指令循环的第2次迭代,因指令I0、I1已存储在高速缓存阵列320,故高速缓存命中发生。如表二所示,指令循环高速缓存140的高速缓存功能从指令循环的第2次迭代开始,且可较表一所示的范例提早一次迭代开始。
在本发明的一些其他实施例中,提示指令并不需要包括目标地址。在这些实施例中,提示指令可以是无操作指令(no-operation instruction)。这是基于相容性的考量,藉以在微处理器无法支援或识别前述提示指令的情况下,微处理器可不使用循环指令高速缓存来执行此提示指令,且不进行任何动作或产生结果,从而让微处理器仍能正常运作。不具有目标地址的提示指令应被紧接地设置在其相对应的指令循环之前。每当处理器核心120提取并识别不具有目标地址的提示指令时,处理器核心120仍将与不具有目标地址的提示指令相关的标签值发送至指令循环高速缓存140。然而,与此提示指令相关的标签值为对应的指令循环的第一个指令的提取地址的标签,也即所述提示指令的提取地址的下一个提取地址的标签。
图7是依照本发明一实施例所示出的另一种指令循环的示意图。本实施例提供可实现具有函数呼叫(function call)的指令循环的较佳实施例。图7所示的指令流包括提示指令、指令循环以及函数。循环的指令的地址具有相同的标签A,而函数的指令的地址具有相同的标签B。此循环具有两个指令,第一个指令为呼叫函数,第二个指令则为反向分支指令。
本实施例通过与指令循环相关的提示指令‘Hint B’,以使处理器核心120可提前将标签值发送至指令循环高速缓存140。本实施例中的提示指令为条件式分支指令,并具有分支条件以及目标地址。提示指令的分支条件总是不成立。提示指令的目标地址指向对应的指令循环中被呼叫的函数。处理器核心120应在执行指令循环之前先执行提示指令。每当处理器核心120提取并识别提示指令时,处理器核心120将与提示指令相关的标签值发送至指令循环高速缓存140。在本实施例中,与提示指令相关的标签值为在对应的指令循环中被呼叫的函数的第一个指令的提取地址的标签。
当处理器核心120提取并识别此提示指令时,处理器核心120将标签值B发送至指令循环高速缓存140。控制器380将标签值B存储在标签存储器340中。当处理器核心120在第1次迭代中执行指令循环时,控制器380从存储器160中提取循环的指令,并将这些指令提供至处理器核心120。由于标签值A尚未存在标签存储器340中,故在第1次迭代中,控制器380不会将循环的指令存储至高速缓存阵列320中。然而,由于标签值B已存在标签存储器340中,故控制器380会将在第1次迭代中被呼叫的函数的指令存储至高速缓存阵列320中。当处理器核心120在第1次迭代中执行反向分支指令时,处理器核心120将标签值A发送至指令循环高速缓存140,且控制器380将标签值A存储在标签存储器340中。因此,控制器380在第2次迭代中将循环的指令存储至高速缓存阵列320中。从此时开始,控制器380直接从高速缓存阵列320将函数与循环的指令提供至处理器核心120。
本实施例中的标签存储器340存储两个标签值,也即指令循环的标签值A与函数的标签值B。因此,高速缓存阵列320可存储循环的指令与函数的指令。
图8是依照本发明一实施例所示出的一种使用指令循环高速缓存的方法的流程图。本实施例提供可实现嵌套循环(nested loop)的较佳实施例,也即循环在另一个循环内的情况。图8中所示出的方法可由控制器380来执行。本实施例的控制器380与有限状态机相关,并包括正常状态(normal state)与内部状态(inner state)。内部状态对应于嵌套循环。图8中流程图的部分步骤与图5中的流程图相同。上述的相同步骤在图5与图8中有相同的标号,而其讨论在此将被省略。以下针对与图5流程图不同之处进行描述。
在步骤805中,控制器380进入正常状态,并通过清除所有高速缓存条目的有效比特324而使每一个高速缓存条目变为无效。在步骤812中,控制器380确认目前状态是正常状态或是内部状态。当控制器380处于内部状态时,控制器380在步骤818中进入正常状态,并回到流程的步骤510。当控制器380处于正常状态时,控制器380在步骤815中进入内部状态。此外,在步骤815中,控制器380用与步骤515相同的方式更新标签存储器340,并在之后回到流程的步骤510。在步骤530之后,控制器380在步骤832中进入内部状态,并回到流程的步骤510。
图9是依照本发明一实施例所示出的相关于指令循环高速缓存的一种有限状态机的示意图。如图8与图9所示,最初,在步骤805中,控制器380进入正常状态。当控制器380接收到内部信号(inner signal)时,控制器380从正常状态进入内部状态。内部信号用来表示内部循环(inner loop)被执行。在本实施例中,当控制器380从处理器核心120接收到的至少一个标签值与之前存储在标签存储器340中的每一个标签值都不同时,在步骤815中,控制器380会设立内部信号。当比较器360设立命中信号365时,控制器380也会设立内部信号。换句话说,当控制器380接收到的标签值与存储在标签存储器340中的任何一个标签值相同时,控制器380可设立内部信号。尽管以上仅列出两个范例,然应用本实施例者只要可产生如上述的内部信号,皆可属于本发明的范畴。
当控制器380从处理器核心120接收到的至少一个标签值与之前存储在标签存储器340中的每一个标签值都不同时,在步骤818中,控制器380从内部状态进入到正常状态。步骤812和步骤818避免存储内部指令循环的指令的高速缓存条目无效。由于步骤812和步骤818,控制器380为内部状态时不更新存储在标签存储器340内的标签值。控制器380只在为正常状态时更新存储在标签存储器340内的标签值。
图10是依照本发明一实施例所示出的一种指令循环的示意图。图10中的指令循环包括一个嵌套内部循环(nested inner loop)并横跨四个高速缓存线,且这些高速缓存线的标签分别为A、A+1、A+2以及A+3。指令JB是内部指令循环的反向分支指令,而指令JA是外部指令循环的反向分支指令。下表三示出微处理器100如何以图10中的循环指令进行高速缓存。
表三
在周期C22中,处理器核心120执行反向分支指令JB而且JB被取用。因此,处理器核心120将标签值A+2与A+3发送至指令循环高速缓存140,且控制器380将标签值A+2与A+3存储至标签存储器340中。此外,控制器380从正常状态进入内部状态。在周期C23与C24中,也即内部指令循环的第2次迭代,因为提取地址的标签与标签存储器340中的标签值相符,控制器380以从存储器160中提取的指令填入高速缓存阵列320。
在周期C31中,处理器核心120提取反向分支指令JA,且为高速缓存未中的情况。因为高速缓存条目已填入指令B,故高速缓存条目控制器380不以从存储器160中提取的指令JA填入高速缓存阵列320。当处理器核心120执行反向分支指令JA而且JA被取用,处理器核心120将标签值A和A+1发送至指令循环高速缓存140。由于控制器380处于内部状态,控制器380会忽略所述标签值并进入正常状态。因为提取地址的标签A与标签存储器340中的标签值不同,故周期C32为高速缓存未中的情况。
在周期C41至C44中,内部指令循环在第3、4次迭代时被执行。因为提取地址的标签已存储在标签存储器340中,故此为高速缓存命中的情况。在周期C42中,因为高速缓存命中,控制器从正常状态进入内部状态。
在周期C51中,因为指令JA并未存储在高速缓存阵列320中,故为高速缓存未中的情况。当处理器核心120执行反向分支指令JA而且JA被取用,处理器核心120将标签值A和A+1发送至指令循环高速缓存140。由于控制器380处于内部状态,故控制器380会忽略所述的标签值,并进入正常状态。因为提取地址的标签A与存储在标签存储器340的标签值不同,故在周期C52时为高速缓存未中的情形。
在本实施例中,最深处循环的指令皆被存储在指令循环高速缓存140中,且因为最深处循环最常被执行,故此为最有效率的方式。
图11是依照本发明一实施例所示出的微处理器的一种指令循环高速缓存的示意图。本实施例提供可实现横跨多个高速缓存线边界的循环的较佳实施例。本实施例中的指令循环高速缓存140包括高速缓存阵列1120、标签存储器1140、比较器1160以及控制器1180。
标签存储器1140具有较大的容量,并用以存储较长的指令循环的较多个标签值。因此,当反向分支指令被执行而且被取用时,处理器核心120可将较多的标签值发送至指令循环高速缓存140。进一步地,每一个高速缓存条目中的有效比特被合并为相同高速缓存条目的标签ID。如图11所示,高速缓存阵列1120中的每一个高速缓存条目包括2个类别,即标签ID1122以及指令1126。指令类别1126与图3中的指令类别326相同。每一个高速缓存条目的标签ID1122具有M个比特,而标签存储器1140则具有可存储的2M-1的标签值的容量。在本实施例中,M等于2。标签存储器1140中的标签值可从1编号至2M-1。高速缓存条目的标签ID1122用来选择与其相同编号的标签值。高速缓存阵列1120将高速缓存条目的标签ID1122输出至标签存储器1140,其中高速缓存条目是由处理器核心120提供的提取地址的索引所对应。标签存储器1140输出高速缓存阵列1120输出的标签ID1122所对应的标签值。
当高速缓存阵列1120输出的标签ID1122与预定值(在本实施例为0)相同时,标签存储器1140输出预定的无效标签值。此无效标签值是与任何提取地址的标签皆不同的一个唯一值,使得当标签存储器1140输出无效标签值时,无高速缓存命中发生。当高速缓存条目的标签ID1122的值为对应于无效标签值的预定值时,代表高速缓存条目无效。因此,当控制器1180需要使一个高速缓存条目无效时,控制器1180可将此高速缓存条目的标签ID1122清除为无效标签值所对应的预定值。
比较器1160对标签存储器1140输出的标签值以及处理器核心120提供的提取地址的标签进行按比特比较。当提取地址的标签与标签存储器1140所输出的标签值相同时,比较器1160设立命中信号365以表示高速缓存命中。否则,比较器1160重置命中信号365,藉以表示高速缓存未中。
图11中关于循环高速缓存140的其他细节与图3中的循环高速缓存140相同。
图12是依照本发明一实施例所示出的一种指令循环的示意图。图12中的指令循环包括分支目标为指令I2的正向分支(forward branch)指令,以及分支目标为指令I0的反向分支指令。本实施例与图4中的实施例类似,但有一些不同之处。第一点差异在于标签存储器1140可存储至3个标签值而非2个标签值。第二点差异则在于,当处理器核心120执行反向分支指令而且反向分支指令被取用时,处理器核心120将3个连续的标签值发送至指令循环高速缓存140,而不是2个连续的标签值。因此,当处理器核心120执行图12中的反向分支指令而且该反向分支指令被取用时,处理器核心将3个连续的标签值A、A+1以及A+2发送至循环高速缓存140。藉此,在第2次迭代时,指令循环高速缓存140存储指令I0、I2、正向分支指令以及反向分支指令。接着,在第3次迭代时,循环高速缓存140可从高速缓存阵列1120而直接提供指令。
综上所述,本发明实施例的指令循环高速缓存可有效地对指令循环的指令进行高速缓存。本发明实施例的指令循环高速缓存可制造成极小尺寸以节省能源和晶片面积。本发明实施例的指令循环高速缓存可应用在具有函数呼叫的指令循环、横跨多个高速缓存线边界的指令循环以及嵌套指令循环。此外,本发明实施例的指令循环高速缓存可从指令循环的第2次迭代就开始提供指令,所以能快速回应循环的执行。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种微处理器,其特征在于,包括:
处理器核心,提供指令流的提取地址,其中该指令流包括一或多个指令,且其中该提取地址包括标签及索引;以及
指令循环高速缓存,自该处理器核心接收该提取地址,包括:
高速缓存阵列,耦接至该处理器核心,存储第一预定数量个高速缓存条目,其中每一上述高速缓存条目包括标签识别码,且其中该高速缓存阵列输出该提取地址中该索引所对应的该高速缓存条目的该标签识别码;以及
标签存储器,耦接至该处理器核心以及该高速缓存阵列,经配置用以存储第二预定数量个标签值并输出该高速缓存阵列输出的该标签识别码所对应的该标签值,其中该指令循环高速缓存基于该提取地址的该标签与该标签存储器输出的该标签值之间的按比特比较,而决定高速缓存命中或高速缓存未中是否发生。
2.根据权利要求1所述的微处理器,其特征在于,每当反向分支指令被取用时,该处理器核心发送与该反向分支指令相关的至少一标签值至该指令循环高速缓存。
3.根据权利要求1所述的微处理器,其特征在于,每当该处理器核心提取并识别提示指令时,该处理器核心发送与该提示指令相关的标签值至该指令循环高速缓存。
4.根据权利要求1所述的微处理器,其特征在于,每一上述高速缓存条目还包括有效比特,且该指令循环高速缓存还包括:
比较器,耦接至该处理器核心、该标签存储器以及该高速缓存阵列,当该提取地址的该标签与该标签存储器输出的该标签值相同,且该提取地址中该索引所对应的该高速缓存条目的该有效比特被设定时,设立命中信号以表示该高速缓存命中,否则重置该命中信号以表示该高速缓存未中。
5.根据权利要求1所述的微处理器,其特征在于,当该高速缓存阵列输出的该标签识别码与预定值相同时,该标签存储器输出无效标签值,该无效标签值为与任何提取地址的该标签皆不同的唯一值,且该指令循环高速缓存还包括:
比较器,耦接至该处理器核心以及该标签存储器,当该提取地址的该标签与该标签存储器输出的该标签值相同时,设立命中信号以表示该高速缓存命中,否则重置该命中信号以表示该高速缓存未中。
6.根据权利要求1所述的微处理器,其特征在于,每一上述高速缓存条目还包括指令,且该指令循环高速缓存还包括:
控制器,耦接至该处理器核心、该高速缓存阵列、该标签存储器以及存储器,当该高速缓存命中发生时,提供该提取地址中该索引所对应的该高速缓存条目的该指令至该处理器核心,当该高速缓存未中发生时,提供位于该提取地址的该存储器中的指令至该处理器核心,当该高速缓存未中发生、该提取地址的该标签与存储在该标签存储器的标签值其中之一相同、且该提取地址中该索引所对应的该高速缓存条目为无效时,将位于该提取地址的该存储器中的该指令填入至该提取地址中该索引所对应的该高速缓存条目。
7.根据权利要求6所述的微处理器,其特征在于,当接收自该处理器核心的该标签值与之前存储在该标签存储器中的每一标签值不同时,该控制器以接收自该处理器核心的标签值更新该标签存储器。
8.根据权利要求7所述的微处理器,其特征在于,该控制器与包括正常状态及内部状态的有限状态机相关,该控制器在初始时进入该正常状态,当该控制器为该正常状态且接收自该处理器核心的该标签值与之前存储在该标签存储器中的每一标签值不同时,该控制器以接收自该处理器核心的该标签值来更新该标签存储器,当该控制器为该内部状态且接收自该处理器核心的该标签值与先前存储在该标签存储器中的每一标签值不同时,该控制器进入该正常状态,当该控制器为该正常状态并接收内部信号时,该控制器进入该内部状态。
9.一种使用指令循环高速缓存的方法,其特征在于,包括:
初始时进入正常状态,其中该指令循环高速缓存与包括该正常状态及内部状态的有限状态机相关;
当目前状态为该正常状态且处理器核心发送至该指令循环高速缓存的标签值与之前存储在该指令循环高速缓存中的每一标签值不同时,以该标签值更新该指令循环高速缓存;
当该目前状态为该内部状态,且该处理器核心发送至该指令循环高速缓存的该标签值与之前存储在该指令循环高速缓存中的每一标签值不同时,进入该正常状态;
当该目前状态为该正常状态时,对应于接收内部信号而进入该内部状态;以及
基于由该处理器核心发送至该指令循环高速缓存的提取地址的标签以及存储在该指令循环高速缓存中的标签值其中之一之间的比较,判断该指令循环高速缓存内是否发生高速缓存命中或高速缓存未中。
10.根据权利要求9所述的方法,其特征在于,所述更新该指令循环高速缓存的步骤包括:
将发送自该处理器核心的该标签值加入至该指令循环高速缓存,或以发送自该处理器核心的该标签值取代之前存储在该指令循环高速缓存中的标签值。
11.一种使用指令循环高速缓存的方法,其特征在于,包括:
每当提示指令被提取并识别时,发送与该提示指令相关的标签值至该指令循环高速缓存,其中该提示指令通过该标签值而与该提示指令被执行之后将被执行的指令循环相关,且其中基于指令的提取地址的标签与存储在该指令循环高速缓存中的标签值其中之一之间的比较,该指令循环高速缓存判断高速缓存命中或高速缓存未中是否发生。
12.根据权利要求11所述的方法,其特征在于,该提示指令为条件式分支指令,该条件式分支指令的分支条件总是不成立,且与该提示指令相关的该标签值为该条件式分支指令的目标地址的标签。
13.根据权利要求12所述的方法,其特征在于,该目标地址指向该指令循环或该指令循环中将被呼叫的函数。
14.根据权利要求11所述的方法,其特征在于,该提示指令为无操作指令,该提示指令被紧接地设置在该指令循环之前,且与该提示指令相关的该标签值为该指令循环的第一个指令的提取地址的标签。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/037,395 | 2013-09-26 | ||
US14/037,395 US9183155B2 (en) | 2013-09-26 | 2013-09-26 | Microprocessor and method for using an instruction loop cache thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104516829A true CN104516829A (zh) | 2015-04-15 |
CN104516829B CN104516829B (zh) | 2017-07-21 |
Family
ID=52692055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410080470.3A Active CN104516829B (zh) | 2013-09-26 | 2014-03-06 | 微处理器及使用指令循环高速缓存的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9183155B2 (zh) |
JP (1) | JP5944458B2 (zh) |
CN (1) | CN104516829B (zh) |
TW (1) | TWI483186B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109426650A (zh) * | 2017-08-28 | 2019-03-05 | 华为技术有限公司 | 处理器和处理标签的方法 |
CN113900966A (zh) * | 2021-11-16 | 2022-01-07 | 北京微核芯科技有限公司 | 一种基于Cache的访存方法及装置 |
CN114072776A (zh) * | 2020-03-13 | 2022-02-18 | 深圳市汇顶科技股份有限公司 | 小面积高速缓冲存储器 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632791B2 (en) * | 2014-01-21 | 2017-04-25 | Apple Inc. | Cache for patterns of instructions with multiple forward control transfers |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511178A (en) * | 1993-02-12 | 1996-04-23 | Hitachi, Ltd. | Cache control system equipped with a loop lock indicator for indicating the presence and/or absence of an instruction in a feedback loop section |
US5893142A (en) * | 1996-11-14 | 1999-04-06 | Motorola Inc. | Data processing system having a cache and method therefor |
US5920890A (en) * | 1996-11-14 | 1999-07-06 | Motorola, Inc. | Distributed tag cache memory system and method for storing data in the same |
EP1107110A2 (en) * | 1999-11-30 | 2001-06-13 | Texas Instruments Incorporated | Instruction loop buffer |
CN102541510A (zh) * | 2011-12-27 | 2012-07-04 | 中山大学 | 一种指令缓存系统及其取指方法 |
CN103019959A (zh) * | 2012-11-21 | 2013-04-03 | 中国科学院声学研究所 | 一种指令高速缓冲存储器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3499252B2 (ja) * | 1993-03-19 | 2004-02-23 | 株式会社ルネサステクノロジ | コンパイル装置及びデータ処理装置 |
US6963965B1 (en) | 1999-11-30 | 2005-11-08 | Texas Instruments Incorporated | Instruction-programmable processor with instruction loop cache |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6757784B2 (en) * | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
EP1302775A1 (en) * | 2001-10-16 | 2003-04-16 | Italtel s.p.a. | A clock generation system for a prototyping apparatus |
JP3982353B2 (ja) * | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
US7191349B2 (en) * | 2002-12-26 | 2007-03-13 | Intel Corporation | Mechanism for processor power state aware distribution of lowest priority interrupt |
US7159103B2 (en) * | 2003-03-24 | 2007-01-02 | Infineon Technologies Ag | Zero-overhead loop operation in microprocessor having instruction buffer |
US7130963B2 (en) * | 2003-07-16 | 2006-10-31 | International Business Machines Corp. | System and method for instruction memory storage and processing based on backwards branch control information |
US7209405B2 (en) * | 2005-02-23 | 2007-04-24 | Micron Technology, Inc. | Memory device and method having multiple internal data buses and memory bank interleaving |
-
2013
- 2013-09-26 US US14/037,395 patent/US9183155B2/en active Active
- 2013-12-19 TW TW102147204A patent/TWI483186B/zh active
-
2014
- 2014-03-06 CN CN201410080470.3A patent/CN104516829B/zh active Active
- 2014-09-18 JP JP2014190244A patent/JP5944458B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511178A (en) * | 1993-02-12 | 1996-04-23 | Hitachi, Ltd. | Cache control system equipped with a loop lock indicator for indicating the presence and/or absence of an instruction in a feedback loop section |
US5893142A (en) * | 1996-11-14 | 1999-04-06 | Motorola Inc. | Data processing system having a cache and method therefor |
US5920890A (en) * | 1996-11-14 | 1999-07-06 | Motorola, Inc. | Distributed tag cache memory system and method for storing data in the same |
EP1107110A2 (en) * | 1999-11-30 | 2001-06-13 | Texas Instruments Incorporated | Instruction loop buffer |
CN102541510A (zh) * | 2011-12-27 | 2012-07-04 | 中山大学 | 一种指令缓存系统及其取指方法 |
CN103019959A (zh) * | 2012-11-21 | 2013-04-03 | 中国科学院声学研究所 | 一种指令高速缓冲存储器 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109426650A (zh) * | 2017-08-28 | 2019-03-05 | 华为技术有限公司 | 处理器和处理标签的方法 |
CN114072776A (zh) * | 2020-03-13 | 2022-02-18 | 深圳市汇顶科技股份有限公司 | 小面积高速缓冲存储器 |
CN114072776B (zh) * | 2020-03-13 | 2024-02-20 | 深圳市汇顶科技股份有限公司 | 小面积高速缓冲存储器 |
CN113900966A (zh) * | 2021-11-16 | 2022-01-07 | 北京微核芯科技有限公司 | 一种基于Cache的访存方法及装置 |
CN113900966B (zh) * | 2021-11-16 | 2022-03-25 | 北京微核芯科技有限公司 | 一种基于Cache的访存方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US9183155B2 (en) | 2015-11-10 |
US20150089141A1 (en) | 2015-03-26 |
JP2015069649A (ja) | 2015-04-13 |
TW201512986A (zh) | 2015-04-01 |
TWI483186B (zh) | 2015-05-01 |
CN104516829B (zh) | 2017-07-21 |
JP5944458B2 (ja) | 2016-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9904625B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
US20150106598A1 (en) | Computer Processor Employing Efficient Bypass Network For Result Operand Routing | |
US11372646B2 (en) | Exit history based branch prediction | |
CN102855121B (zh) | 分支处理方法与系统 | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
CN103154883B (zh) | 对来自多个指令集的指令进行译码 | |
CN102650947A (zh) | 一种Android手持设备连续增量的空中升级方法 | |
CN102214085B (zh) | 微型计算机和中断控制方法 | |
CN104516829A (zh) | 微处理器及使用指令循环高速缓存的方法 | |
CN105446773A (zh) | 高速缓存行的非对齐加载指令的推测并行执行系统和方法 | |
CN103365628A (zh) | 用于执行预解码时优化的指令的方法和系统 | |
CN101189574B (zh) | 指令存储器单元和操作方法 | |
CN103412829B (zh) | 扩大mcu程序地址空间的方法及装置 | |
KR20110084915A (ko) | 데이터 처리 장치 | |
CN101714076B (zh) | 对指令束进行解压缩的处理器和方法 | |
US8117425B2 (en) | Multithread processor and method of synchronization operations among threads to be used in same | |
CN107426138A (zh) | 一种加速数据远程访问的方法,服务器设备 | |
US9372723B2 (en) | System and method for conditional task switching during ordering scope transitions | |
US10366049B2 (en) | Processor and method of controlling the same | |
US20080244240A1 (en) | Semiconductor device | |
CN103955376A (zh) | 一种dsp自启动二次按需加载方法 | |
CN105183668A (zh) | 缓存刷新方法及装置 | |
CN109714756A (zh) | Profile数据包处理方法及装置、嵌入式SIM卡 | |
CN106933538B (zh) | 侦测自修正程序码的处理器与方法 | |
CN106933539B (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 | ||
GR01 | Patent grant |