CN103092773B - 高速缓存存储器装置、高速缓存控制方法和微处理器系统 - Google Patents
高速缓存存储器装置、高速缓存控制方法和微处理器系统 Download PDFInfo
- Publication number
- CN103092773B CN103092773B CN201210432095.5A CN201210432095A CN103092773B CN 103092773 B CN103092773 B CN 103092773B CN 201210432095 A CN201210432095 A CN 201210432095A CN 103092773 B CN103092773 B CN 103092773B
- Authority
- CN
- China
- Prior art keywords
- instruction code
- cache
- instruction
- memory
- cache memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000003860 storage Methods 0.000 claims description 72
- 239000000872 buffer Substances 0.000 claims description 71
- 239000003550 marker Substances 0.000 claims description 59
- 238000000605 extraction Methods 0.000 claims description 58
- 238000001514 detection method Methods 0.000 claims description 31
- 238000000151 deposition Methods 0.000 claims 3
- 238000007689 inspection Methods 0.000 claims 1
- 230000005055 memory storage Effects 0.000 claims 1
- 239000000284 extract Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000001186 cumulative effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000011536 extraction buffer Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及高速缓存存储器装置、高速缓存控制方法、和微处理器系统。根据本发明的高速缓存存储器装置包括高速缓存存储器和高速缓存控制电路,高速缓存存储器对与提取地址相对应的指令代码进行高速缓存,并且,高速缓存控制电路控制指令代码高速缓存在高速缓存存储器中。高速缓存控制电路在提取地址指示到子例程中的分支时对与子例程相对应的指令代码进行高速缓存,并且,在要高速缓存的指令代码的数量超过预先设置的最大数量时禁用要高速缓存的指令代码。
Description
相关申请的交叉引用
本申请基于2011年11月2日提交的日本专利申请No.2011-240780并要求该专利申请的优先权的权益,通过引用将该专利申请的公开内容全部并入在此。
技术领域
本发明涉及高速缓存存储器装置、高速缓存控制方法和微处理器系统,并且,尤其涉及能够有效地对指令代码进行高速缓存的高速缓存存储器装置、高速缓存控制方法和微处理器系统。
背景技术
近年来,对于以AV设备和家用器具为代表的电子设备,需要并入各种功能和更高的性能。因此,对于控制这些电子设备的微处理器系统,也需要更高的性能。一般来说,微处理器系统使用预提取缓冲器(prefetch buffer)和高速缓存存储器装置,以便防止在从低速存储器提取(fetch)指令代码时的性能降低。
预提取缓冲器可以预先把在当前执行的指令的地址之后的指令代码存储到触发器(flip-flop)等。这防止在执行通常指令时,当从存储器读取指令代码时,由于存储器的慢的读取速度而导致性能降低。高速缓存存储器装置可以预先把频繁使用的指令代码存储到RAM(随机存取存储器)。这防止主要在到子例程的分支时由于从存储器读取指令代码时存储器的慢读取速度而导致性能降低。
高速缓存存储器装置中的存储器和预提取缓冲器的大小(size)越大,它们可以预先存储的指令代码就越多。因此,为了更可靠地防 止由于存储器的慢读取速度而导致的性能降低,存储器的大小必须更大。但是,高速缓存存储器装置中的存储器和预提取缓冲器的较大的大小增加了芯片面积,从而增加了制造成本。因此,对于这些存储器大小,必须考虑性能和成本之间的折中,来选择具有能够产生最大优势的最小存储器大小的容量(capacity)。
日本未审专利申请公开No.9-305490公开了一种与微处理器系统有关的技术,其可以防止产生容量冲突和使指令高速缓存的性能无效。图9是用于说明日本未审专利申请公开No.9-305490中公开的微处理器系统的框图。图9中所示的微处理器系统包括CPU101、指令高速缓存102、地址总线103、数据总线104和计数器105。
计数器105接收从CPU101输出的高速缓存访问通知信号S1和分支生成通知信号S2,并且输出高速缓存功能停止信号S3给指令高速缓存102。对于对指令高速缓存102的每一个访问,CPU101生成高速缓存访问通知信号S1。因此,每当CPU101访问指令高速缓存102时,计数器105的值就递减。而且,针对每一个子例程调用,或者,每当建立到负方向的分支时,CPU101生成分支生成通知信号S2。在供应分支生成通知信号S2时,计数器105被初始化,并且,计数器105的值将是条目(entries)的数目。此外,当计数器105的值是零时,计数器105输出高速缓存功能停止信号S3给指令高速缓存102,以停止指令高速缓存102的功能。
接下来,对图9中所示的微处理器系统的操作进行说明。图11示出在执行图10中所示的程序时被高速缓存在指令高速缓存102中的指令的转变。在图10中所示的程序的循环中,在执行指令A、B、C和D(步骤201、202、203和204)时,CPU101从主存储器(未示出)顺序地提取指令A、B、C和D,并且把指令A、B、C和D加载在指令高速缓存102中。在步骤201、202、203和204中的每一个中,由于CPU101生成高速缓存访问通知信号S1,计数器105的值递减,比如3、2、1和0。因此,指令高速缓存102的所有条目被占用,其后,因计数器105中的高速缓存功能停止信号S3的 生成指令高速缓存102中的条目将不会而被代替。
接下来,CPU101从主存储器顺序地提取指令E、F、G和H,并且执行指令E、F、G和H(步骤205、206、207和208)。在这种情况下,由于高速缓存存储器102中的条目将不会被代替,所以指令A、B、C和D保留在指令高速缓存102中。
接下来,在执行作为分支指令的指令H之后,再次执行指令A。在这种情况下,指令A已经被加载到指令高速缓存102中。因此,将存在所谓的高速缓存命中(步骤209)。随后,同样地,在CPU101执行指令B、C和D的情况下,由于指令B、C和D被加载到指令高速缓存102中,因此将存在高速缓存命中。
如上所述,在日本未审专利申请公开No.9-305490中公开的微处理器系统中,在执行包括循环的程序时,可以通过在指令高速缓存被占用时禁用高速缓存功能来改善指令高速缓存的性能。
发明内容
但是,在日本未审专利申请公开No.9-305490中公开的微处理器系统中,在高速缓存存储器中对子例程中包含的指令代码进行高速缓存,而没有考虑子例程中包含的指令代码的数量。因此,本发明人发现,指令代码不能被有效地高速缓存的问题。
本发明的一个方面是一种高速缓存存储器装置,该高速缓存存储器装置包括高速缓存存储器和高速缓存控制电路,高速缓存存储器对与提取地址相对应的指令代码进行高速缓存,并且,高速缓存控制电路控制指令代码高速缓存在高速缓存存储器中。高速缓存控制电路在提取地址指示到子例程中的分支时对与该子例程相对应的指令代码进行高速缓存,并且,在要高速缓存的指令代码的数量超过预先设置的最大数量时禁用要高速缓存的指令代码。
在高速缓存存储器中高速缓存的指令代码的数量超过最大数时,根据本发明的高速缓存存储器装置禁用被高速缓存的指令代码。因此,由于可以优先对具有相对较小数量的指令代码的子例程中的指令 代码高速缓存在高速缓存存储器中,因此即使在具有较小容量的高速缓存存储器中,也可以有效地将指令代码高速缓存在高速缓存存储器中。
本发明的另一方面是一种微处理器系统,该微处理器系统包括:CPU;存储器,该存储器存储要在CPU中执行的指令代码;高速缓存存储器,该高速缓存存储器对与从CPU输出的提取地址相对应的指令代码进行高速缓存;以及高速缓存控制电路,该高速缓存控制电路控制要在高速缓存存储器中高速缓存的指令代码。高速缓存控制电路在提取地址指示到子例程中的分支时对与所述子例程相对应的指令代码进行高速缓存,并且,在要高速缓存的指令代码的数量超过预先设置的最大数时禁用要高速缓存的指令代码。
在根据本发明的微处理器系统中,在高速缓存存储器中被高速缓存的指令代码的数量超过预先设置的最大数时,禁用被高速缓存的指令代码。因此,由于具有相对较小数量的指令代码的子例程中的指令代码可以优先高速缓存在高速缓存存储器中,因此可以在高速缓存存储器中有效地对指令代码进行高速缓存,即使在具有较小容量的高速缓存存储器中也可以。
本发明的另一方面是一种用于高速缓存存储器的高速缓存控制方法,所述高速缓存存储器对与提取地址相对应的指令代码进行高速缓存。该高速缓存控制方法包括:在提取地址指示到子例程中的分支时,对与所述子例程相对应的指令代码进行高速缓存;以及在要高速缓存的指令代码的数量超过预先设置的最大数时,禁用要高速缓存的指令代码。
在根据本发明的高速缓存控制方法中,在高速缓存存储器中高速缓存的指令代码的数量超过预先设置的最大数时,禁用被高速缓存的指令代码。因此,由于具有相对较小数量的指令代码的子例程中的指令代码可以优先高速缓存在高速缓存存储器中,因此可以在高速缓存存储器中有效地对指令代码进行高速缓存,即使在具有较小容量的高速缓存存储器中也可以。
本发明可以提供能够有效地对指令代码进行高速缓存的高速缓存存储器装置、高速缓存控制方法和微处理器系统。
附图说明
根据下面结合附图进行的实施例的描述,上述和其它的方面、优点和特征将会更加清楚,在附图中:
图1是示出根据第一实施例的包括高速缓存存储器装置的微处理器系统的框图;
图2是说明根据第一实施例的高速缓存存储器装置的操作的流程图;
图3说明根据第一实施例的高速缓存存储器装置的操作;
图4说明根据第一实施例的高速缓存存储器装置的操作;
图5是示出根据第二实施例的包括高速缓存存储器装置的微处理器系统的框图;
图6是示出根据第三实施例的包括高速缓存存储器装置的微处理器系统的框图;
图7是示出根据第四实施例的包括高速缓存存储器装置的微处理器系统的框图;
图8是说明根据第四实施例的高速缓存存储器装置的操作的流程图;
图9说明在日本未审专利申请公开No.9-305490中公开的技术;
图10说明在日本未审专利申请公开No.9-305490中公开的技术;以及
图11说明在日本未审专利申请公开No.9-305490中公开的技术。
具体实施方式
第一实施例
在下文中,参照附图说明本发明的实施例。
图1是示出根据本实施例的包括高速缓存存储器装置的微处理器系统的框图。图1中所示的微处理器系统1包括CPU10、存储器11、高速缓存存储器12和高速缓存控制电路13。高速缓存控制电路13包括分支检测电路16、更新控制电路17和最大指令数设置电路19。高速缓存存储器12和高速缓存控制电路13构成高速缓存存储器装置。
CPU10输出提取地址51到存储器11、高速缓存存储器12和分支检测电路16。此外,CPU10接收从存储器11输出的指令代码52和从高速缓存存储器12输出的指令代码54,并且,执行接收到的指令代码52和54。这里的指令代码52是从存储器11输出的,并且是当与提取地址51相对应的指令代码未被高速缓存在高速缓存存储器12中时(在不存在高速缓存命中时)从存储器11输出到CPU10的指令代码。此外,指令代码54是从高速缓存存储器12输出的,并且是当与提取地址51相对应的指令代码被高速缓存在高速缓存存储器12中时(在存在高速缓存命中时)从高速缓存存储器12输出到CPU10的指令代码。
CPU10包括预提取缓冲器14。预提取缓冲器14可以预先把在当前执行的指令的地址之后的指令代码存储到触发器等。在供应给CPU10的指令代码52和54被临时存储到预提取缓冲器14之后,指令代码52和54由CPU10执行。此外,指令代码存储使能信号53被从存储器11供应给CPU10。指令代码存储使能信号53指示有效指令代码52被从存储器11输出。在指令代码存储使能信号53从存储器1输出时的定时,预提取缓冲器14存储指令代码52。
例如,存储器11可以由例如作为相对低速存储器的DRAM(动态随机存取存储器)构成。存储器11存储与提取地址相关联的指令代码。存储器11把与从CPU10输出的提取地址51相关联的指令代码52输出到CPU10和高速缓存存储器12。存储器11还把指示有效指令代码52被从存储器11输出的指令代码存储使能信号53输出到CPU10、高速缓存存储器12和更新控制电路17。
分支检测电路16监视从CPU10输出的提取地址51,并且,当提取地址51指示到子例程中的分支时,分支检测电路16输出分支通知信号55给更新控制电路17。具体地,当从CPU10输出的提取地址51从连续地址改变为不连续地址时,分支检测电路16估算提取地址51已经被分支到子例程中。
最大指令数设置电路19设置要存储到高速缓存存储器12的指令代码的最大数量。最大指令数设置电路19输出最大指令数信号56给更新控制电路17,所述最大指令数信号56指示所设置的最大指令数量。例如,最大指令数设置电路19可以包括用于存储与最大指令数量相对应的信息的寄存器(未示出)。用户可以在外部访问该寄存器并设置最大指令数量。
更新控制电路17指示高速缓存存储器12开始和停止高速缓存。更新控制电路17接收从分支检测电路16输出的分支通知信号55和从最大指令数设置电路19输出的最大指令数信号56,并且输出高速缓存开始通知信号57、高速缓存停止通知信号58和有效标志位(flag bit)重置信号59给高速缓存存储器12。高速缓存开始通知信号57通知高速缓存存储器12开始高速缓存指令代码52的定时。此外,高速缓存停止通知信号58通知高速缓存存储器12对指令代码52的高速缓存的结束。有效标志位重置信号59对高速缓存存储器12的有效标志位15进行重置。
另外,更新控制电路17包括计数器18。计数器18是用于对子例程中的指令的数量进行计数的电路。每当从存储器11输出指令代码存储使能信号53时,计数器18将计数器值渐增。具体地,指令代码存储使能信号53指示从存储器11输出有效指令代码52。每当输出指令代码存储使能信号53时,高速缓存存储器12把指令代码52存储到高速缓存存储器12。通过每当指令代码存储使能信号53被供应给计数器18时将计数器值渐增,可以对要存储到高速缓存存储器12的指令代码的数量进行计数。然后,更新控制电路17比较由最大指令数信号56指示的最大指令数量和计数器值,并且,当计数器值 超过最大指令数量时,更新控制电路17输出有效标志位重置信号59给高速缓存存储器12。
高速缓存存储器12包括可以比存储器11更快操作的存储器。例如,高速操作的SRAM(静态随机存取存储器)可以用于高速缓存存储器12。高速缓存存储器12接收从更新控制电路17输出的高速缓存开始通知信号57、高速缓存停止通知信号58和有效标志位重置信号59,CPU10输出的提取地址51,以及从存储器11输出的指令代码52和指令代码存储使能信号53,并且,高速缓存存储器12输出指令代码54给CPU10。
高速缓存存储器12对于与从CPU10输出的提取地址51相对应的指令代码进行高速缓存。具体地,当从更新控制电路17提供高速缓存开始通知信号56时,高速缓存存储器12将每当提供指令代码存储使能信号53时从存储器11输出的指令代码52与提取地址相关联,并且对指令代码52进行高速缓存。此外,当从更新控制电路17提供高速缓存开始通知信号57时,高速缓存存储器12停止对指令代码52进行高速缓存。
另外,高速缓存存储器12包括针对存储指令代码的每一个存储器单元设置的有效标志位(有效标志)15。有效标志位15是指示每一个高速缓存的指令代码是否有效的标志。当指令代码被高速缓存在高速缓存存储器12中时,有效标志位15被使能(例如,指示有效的有效标志位15的逻辑值被设置为“1”)。然后,当高速缓存的指令代码的数量(即,计数器18的值)超过在先设置的最大数(即,由最大指令数设置电路19设置的最大指令数量)时,禁用高速缓存的指令代码的有效标志位15(例如,指示禁用的有效标志位15的逻辑值被设置为“0”)。当有效标志位15被禁用时,更新控制电路17输出有效标志位重置信号59给高速缓存存储器12。另一方面,当高速缓存的指令代码的数量小于或等于在先设置的最大数时,高速缓存的指令代码的有效标志位15保持有效(“1”)。
换句话说,当提取地址指示到子例程中的分支时,与该子例程相 对应的指令代码要被高速缓存在高速缓存存储器12中,并且,当要高速缓存的指令代码的数量超过在先设置的最大数时,将禁用要高速缓存的指令代码。
注意,当指令代码被新高速缓存在高速缓存存储器12中时,在有效标志位15被禁用(“0”)情况下,可以将该指令代码高速缓存在存储器单元中。此外,当高速缓存存储器12的容量被填满时,被保留最长时间未使用的指令代码可以被新高速缓存的指令代码覆写。作为替换方案,指令代码可以从最不频繁使用的指令代码起依次地被覆写。注意,可以通过把有效标志位15固定为有效(“1”),来禁止对不期望被覆写的指令代码的覆写。
接下来,说明根据本实施例的包括该高速缓存存储器装置的微处理器系统1的操作。图2是说明图1所示的高速缓存存储器装置的操作的流程图。图3和4说明图1中所示的高速缓存存储器装置的操作,并且示出指令代码被高速缓存在其中的高速缓存存储器12的有效标志位和存储器单元的状态。如图3和4所示,设置有效标志位以对应于每一个存储器单元。
首先,CPU10开始输出提取地址51给存储器11,以从存储器11读取指令代码(步骤S1)。分支检测电路16监视从CPU10输出的提取地址51,并且,当提取地址51指示到子例程中的分支(步骤S2:是)时,分支检测电路16输出分支通知信号55给更新控制电路57。尤其是,当从CPU10输出的提取地址51从连续地址改变为不连续地址时,分支检测电路16估算出程序已经被分支到子例程中。注意,当提取地址51没有指示到子例程中的分支(步骤S2:否)时,分支检测电路16继续监视从CPU10输出的提取地址51。
当从分支检测电路16提供分支通知信号55时,更新控制电路17输出高速缓存开始通知信号57给高速缓存存储器12。然后,高速缓存存储器12开始对指令代码52进行高速缓存。
另一方面,当提供提取地址51时,存储器11把与该提取地址51相对应的指令代码52输出给CPU10中的预提取缓冲器14和高速 缓存存储器12。此外,存储器11输出指令代码存储使能信号53给CPU10中的预提取缓冲器14、高速缓存存储器12和更新控制电路17,该指令代码存储使能信号53指示从存储器11输出有效指令代码52。注意,图2中所示的操作例子示出这样的情况,即,其中,与提取地址51相对应的指令代码未被高速缓存在高速缓存存储器12中(即,在不存在高速缓存命中时)。
当从存储器11提供指令代码52和指令代码存储使能信号53时,CPU10中的预提取缓冲器14把指令代码52存储到预提取缓冲器14。
另外,当从存储器11提供指令代码52和指令代码存储使能信号53时,高速缓存存储器12把指令代码52高速缓存到高速缓存存储器12的存储器单元(步骤S3)。此时,高速缓存存储器12把与存储指令代码52的存储器单元相对应的有效标志位15的逻辑值更新为“1”(步骤S4)。即,存储在高速缓存存储器12中的指令代码52被使能。
例如,当有效的指令代码被存储到存储器单元时,有效标志位15被设置为“1”,而当没有存储有效的指令代码时,有效标志位15被设置为“0”。然后,当存储在下一个子例程中的指令代码时,在有效标志位15为“0”的情况下,指令代码被存储到存储器单元。
此外,当从存储器11提供指令代码存储使能信号53时,更新控制电路17的计数器18使计数器值渐增(步骤S5)。随后,更新控制电路17将通过最大指令数信号56设置的指令代码的最大数和计数器18的值(其对应于存储到高速缓存存储器12的指令代码的数量)进行比较,并估算计数器18的值是否超过指令代码的最大数(步骤S6)。
当计数器18的值未超过指令代码的最大数(即,计数器18的值小于或等于指令代码的最大数,步骤S6:否)时,高速缓存的指令代码的有效标志位保持有效(“1”)。接下来,分支检测电路16监视从CPU10输出的下一个提取地址51,并且,当该提取地址51没有 指示到新子例程中的分支(步骤S7:否)时,重复步骤S2之后的操作。另一方面,当CPU10输出的下一个提取地址51指示到新子例程中的分支(步骤S7:是)时,计数器18的值被重置(步骤S8),并重复步骤S2之后的操作。
作为替换的方案,当计数器18的值超过指令代码的最大数(步骤S6:是)时,包括最后高速缓存的指令代码的子例程中的所有指令代码的有效标志位被禁用(“0”)(步骤S9)。尤其是,当计数器18的值超过通过最大指令数信号56设置的指令代码的最大数(步骤S6:是)时,更新控制电路17输出有效标志位重置信号59给高速缓存存储器12,并且禁用(“0”)包括最后高速缓存的指令代码的子例程中的所有指令代码的有效标志位。另外,更新控制电路17输出高速缓存停止通知信号58给高速缓存存储器12,以便高速缓存存储器12停止对指令代码52进行高速缓存。然后,重复步骤S1之后的操作。
使用图3更详细地说明上述步骤S1至S8的操作。在图3中所示的例子中,由最大指令数设置电路19设置的指令代码的最大数是四。此外,图3中的定时t1至t7中的每一个对应于在从CPU10输出提取地址51以及在高速缓存存储器12中对对应于提取地址51的指令代码52进行高速缓存时的定时。也就是说,对于图3中的每一个定时t1至t7,把包括步骤S3至S6的过程执行一次。
图3中所示的例子示出这样的情况,即,其中:对应于子例程A的指令代码A1至A4以及对应于子例程B的指令代码B1至B3被存储到高速缓存存储器12的存储器单元。注意,对应于指令代码A1至A4的提取地址应该是add_A1至add_A4,而对应于指令代码B1至B3的提取地址应该是add_B1至add_B3。
首先,说明在定时t1处的操作。当CPU10输出对应于指令代码A1的提取地址add_A1时,分支检测电路16检测到分支并把分支通知信号55输出到更新控制电路17(步骤S2:是)。其后,当从更新控制电路17提供高速缓存开始通知信号57,并且从存储器11 提供指令代码存储使能信号53时,高速缓存存储器12把对应于提取地址add_A1的指令代码A1存储到存储器单元(步骤S3)。此时,指令代码A1被存储到有效标志位的逻辑值为“0”的存储器单元。当指令代码A1被存储到存储器单元时,在对应地址处的有效标志位15的逻辑值被更新为“1”(步骤S4)。其后,处理过程行进到步骤S5、S6,然后进入步骤S7。
当在定时t2处的提取地址add_A2是子例程A中的提取地址时,在步骤S7中分支检测电路16估算没有分支(步骤S7:否)。接下来,当从存储器11提供指令代码存储使能信号53时,高速缓存存储器12把对应于提取地址add_A2的指令代码A2存储到存储器单元(步骤S3)。当指令代码A2被存储到存储器单元时,在对应地址处的有效标志位15的逻辑值被更新为“1”(步骤S4)。其后,本处理行进到步骤S5、S6,然后进入步骤S7。
在定时t3和t4处执行类似的操作。注意,由于计数器18的值在定时t4处是四,并且没有超过有最大指令数设置电路19设置的指令代码的最大数(即,四)(步骤S6:否),本处理进入步骤S7。
然后,当在定时t5处从CPU10输出新子例程B的提取地址add_B1时,分支检测电路16检测到分支,并输出分支通知信号55给更新控制电路17(步骤S7:是)。当分支检测电路16检测到分支时,更新控制电路17对计数器18的值进行重置(步骤S8)。当从存储器11提供指令代码存储使能信号53时,高速缓存存储器12把对应于提取地址add_B1的指令代码B1存储到存储器单元(步骤S3)。当指令代码B1被存储到存储器单元时,在对应地址处的有效标志位15的逻辑值被更新为“1”(步骤S4)。其后,处理过程行进到步骤S5、S6,然后进入步骤S7。
在定时t6和t7处执行类似的操作。注意,由于计数器18的值在定时t7处是三,并且不超过由最大指令数设置电路19所设置的指令代码的最大数(即,四),因此处理过程行进到步骤S7。
接下来,使用图4详细地说明上述步骤S1至S7和S9的操作 (即,包括步骤S9的操作(对有效标志位进行重置))。在图4中所示的例子中,由最大指令数设置电路19所设置的指令代码的最大数是四。此外,图4中的定时t1至t12中的每一个对应于从CPU10输出提取地址51以及将对应于提取地址51的指令代码52高速缓存在高速缓存存储器12中的定时。也就是说,在图4中的每一个定时t1至t12处把包括步骤S3至S6的处理执行一次。
图4中示出的例子示出这样的情况,即,其中:当对应于子例程A的指令代码A1至A4和对应于子例程B的指令代码B1至B3被存储到高速缓存存储器12的存储器单元时,并且在对应于子例程C的指令代码C1至C5被存储到高速缓存存储器12的存储器单元一次之后,指令代码C1至C5被禁用。请注意,在图4中的定时t1至t7处的操作类似于图3中示出的操作,由此将不重复说明。
当在定时t8处从CPU10新输出子例程C的提取地址add_C1时,分支检测电路16检测到分支并输出分支通知信号55给更新控制电路17(步骤S7:是)。由于分支检测电路16检测到分支,更新控制电路17对计数器18的值进行重置(步骤S8)。当从存储器11提供指令代码存储使能信号53时,高速缓存存储器12把对应于提取地址add_C1的指令代码C1存储到存储器单元(步骤S3)。当指令代码C1被存储到存储器单元时,对应地址处的有效标志位15的逻辑值被更新为“1”(步骤S4)。其后,处理过程行进到步骤S5、S6,然后进入步骤S7。在定时t9至t11处执行类似的操作。
由于定时t12处的提取地址add_C5是子例程C中的提取地址,在步骤S7中分支检测电路16估算没有分支(步骤S7:否)。接下来,当从存储器11提供指令代码存储使能信号53时,高速缓存存储器12把对应于提取地址add_C5的指令代码C5存储到存储器单元(步骤S3)。当指令代码C5被存储到存储器单元时,对应地址处的有效标志位15的逻辑值被更新为“1”(步骤S4)。
此外,使更新控制电路17中的计数器18渐增(步骤S5),并且,计数器的值将是五。更新控制电路17比较作为通过最大指令数 信号56设置的指令代码的最大数的四和作为计数器18的值的五。在这种情况下,由于计数器18的值超过指令代码的最大数(步骤S6:是),所以,子例程C中的所有指令代码C1至C5的有效标志位被重置,即,被禁用(“0”)(步骤S9)。具体地说,如图4所示,与存储指令代码C1至C5的存储器单元相对应的有效标志位的值被从“1”更新为“0”。这禁用了存储到存储器单元的指令代码C1至C5,并且,当存储新指令代码时,该新指令代码被覆写在存储指令代码C1至C5的存储器单元中。
如背景技术部分中所说明的,在微处理器系统中使用预提取缓冲器和高速缓存存储器装置,以便防止在从低速存储器提取指令时的性能降低。预提取缓冲器可以预先把在当前执行的指令的地址之后的指令代码存储到触发器等。这防止当在执行正常指令的时候从存储器读取指令代码时由于存储器的慢读取速度导致的性能降低。此外,高速缓存存储器装置可以预先把频繁使用的指令代码存储到RAM。这防止当主要在到子例程中的分支时从存储器读取指令代码时由于存储器的慢读取速度导致的性能降低。
例如,能够在两个时钟中取指一次(提取等待时间(fetch latency)=2)的存储器被连接到具有64位总线宽度的CPU。当CPU可以在每一个时钟处执行32位指令时,在CPU执行两个时钟的指令(即,64位)的同时,下一个地址的指令(其是64位指令)被存储到提取缓冲器,从而可以掩蔽慢的提取等待时间。
但是,当程序分支时,使用提取缓冲器导致性能降低的不利。这是因为,当由于分支的发生而将不使用存储到预提取缓冲器的在先读取的指令代码时,需要丢弃这些指令代码并再次提取指令代码。此时,由于分支而导致的不利的程度根据分支子例程中的指令代码的数量而不同。
当子例程具有大量的指令代码(例如,指令代码的数量是100)时,首先导致所述分支的不利。但是,由于指令代码被存储到提取缓冲器时,可以掩蔽低的提取等待时间。因此,一定导致不利,例如, 100个时钟一次。
另一方面,当执行具有小数量的指令代码(例如,三个指令)的子例程时,首先导致分支的不利,然后,把指令代码存储到提取缓冲器。然而,在这种情况下,由于在使用提取缓冲器的优势出现之前程序分支到下一个子例程中,因此,例如,以三个时钟一次的速率(这是相当高的速率)导致不利。
尤其是,在微处理器系统中,把具有相对较小数量的指令代码的子例程中的指令代码,而不是具有相对较大数量的指令代码的子例程中的指令代码,存储到高速缓存存储器装置,减小导致不利的可能性,从而以较低成本提高微处理器系统的性能。
但是,在日本未审专利申请公开No.9-305490中公开的微处理器系统中,在高速缓存存储器中对子例程中包含的指令进行高速缓存,而没有考虑子例程中包含的指令的数量。因此,已经存在不能对指令代码进行有效的高速缓存的问题。
另一方面,在根据本实施例的高速缓存存储器装置中,当高速缓存在高速缓存存储器12中的指令代码的数量超过在先设置的最大数时,高速缓存的指令代码被禁用。换句话说,在根据本实施例的高速缓存存储器装置中,超过在先设置的最大数的子例程中的指令代码将不被高速缓存在高速缓存存储器12中。因此,具有相对较小数量的指令代码的子例程中的指令代码可以优先高速缓存在高速缓存存储器12中,由此,可以将指令代码有效地高速缓存在具有相对小容量的高速缓存存储器中。
通常,在用于控制微处理器系统的程序中存在执行各种任务的子例程。例如,在嵌入式微处理器系统中,存在很多短子例程,例如,在同一地址处循环以等待来自外围设备的中断信号的子例程,以及把预定值设置给计数器并在把该值渐减时循环且在计数器值达到0时退出循环的子例程。根据本实施例的高速缓存存储器装置可以产生优势,尤其在被并入于执行包括多个短子例程的程序的这种微处理器系统中时。
此外,由最大指令数设置电路19设置的指令代码的最大数可以被任意地设置。但是,为了提高具有小存储器容量的高速缓存存储器装置的性能,可以将能够由CPU10执行的所述数量的指令代码保持在高速缓存存储器12中,同时等待存储器11中的提取等待时间的若干时钟。这里,存储器11中的提取等待时间是从CPU10输出提取地址51直到存储器11输出指令代码52的时钟的数量。具体地说,通过(存储器11中的提取等待时间)/(执行一个指令代码所需的时钟数量)而获得的指令代码的最大数量将是最有效的设置值,以提高具有小存储器容量的微处理器系统的性能。
如上所说明的,根据本发明的该实施例可以提供能够有效地高速缓存指令代码的高速缓存存储器装置、高速缓存控制方法和微处理器系统。
第二实施例
接下来,说明本发明的第二实施例。图5是示出根据本实施例的包括高速缓存存储器装置的微处理器系统2的框图。图5中所示的微处理器系统2包括CPU20、存储器11、高速缓存存储器12和高速缓存控制电路23。高速缓存控制电路23包括更新控制电路17和最大指令数设置电路19。高速缓存存储器12和高速缓存控制电路23构成高速缓存存储器装置。
根据本实施例的包括所述高速缓存存储器装置的微处理器系统2与根据第一实施例的微处理器系统1的不同之处在于,不包括图1中所示的分支检测电路16。由于其它配置与根据第一实施例的微处理器系统1相同,因此用相同的附图标记表示相同的部件,并且,将不对其重复说明。
如图5所示,CPU20输出提取地址51到存储器11和高速缓存存储器12。此外,CPU20接收从存储器11输出的指令代码52和从高速缓存存储器12输出的指令代码54,并且执行接收到的指令代码52和54。
另外,CPU20输出分支通知信号64给更新控制电路17。当从CPU20输出的提取地址51指示到子例程中的分支时,这里,分支通知信号64向更新控制电路17通知到子例程中的该分支。由于CPU20通过其自己的指令处理而进行分支,所以,CPU20可以把分支通知信号64输出给更新控制电路17。提供给更新控制电路17的分支通知信号64对应于根据第一实施例的微处理器系统1中的被提供给更新控制电路17的分支通知信号55。
如上所述,在根据本实施例的微处理器系统2中,CPU20在图2中所示的步骤S2和S7中检测分支。由于其它配置与根据第一实施例的微处理器系统1相同,所以这里将不再重复说明。
在根据本实施例的微处理器系统2中,可以消除在第一实施例的微处理器系统1中使用的分支检测电路16,从而简化了高速缓存控制电路。
第三实施例
接下来,说明本发明的第三实施例。图6是示出根据本实施例的包括高速缓存存储器装置的微处理器系统3的框图。图6中所示的微处理器系统3包括CPU30、存储器31、高速缓存存储器12和高速缓存控制电路33。高速缓存控制电路33包括分支检测电路16、更新控制电路17和最大指令数设置电路39。高速缓存存储器12和高速缓存控制电路33构成高速缓存存储器装置。
根据本实施例的包括所述高速缓存存储器装置的微处理器系统3与图1中所示的根据第一实施例的微处理器系统1的不同之处在于,最大指令数设置电路39使用从CPU30输出的时钟数量信息71和从存储器31输出的等待时间信息来确定最大指令数量。由于其它配置与根据第一实施例的微处理器系统1相同,所以用相同的附图标记表示相同的部件,并且,将不再重复说明。
CPU30把时钟数量信息71输出到最大指令数设置电路39。时钟数量信息71是关于CPU30执行一个指令代码所需的时钟数量的 信息。该时钟数量信息71可以被预先存储到CPU30中包含的寄存器(未示出)。由于CPU30除此之外的配置和操作与根据第一实施例的微处理器1中的CPU10的配置和操作相同,所以将不再重复说明。
存储器31把等待时间信息72输出到最大指令数设置电路39。等待时间信息72是关于存储器11中的提取等待时间的信息。存储器31中的提取等待时间对应于从CPU30输出提取地址51直到存储器30输出指令代码52的时钟的数量。该等待时间信息72可以预先被存储到存储器31中包含的寄存器(未示出)。由于除此之外存储器31的配置和操作与根据第一实施例的微处理器1中的存储器11的配置和操作相同,所以将不再重复说明。
最大指令数设置电路39使用从CPU30输出的时钟数量信息71和从存储器31输出的等待时间信息来设置要存储到高速缓存存储器12的指令代码的最大数量。虽然由最大指令数设置电路39设置的指令代码的最大数量可以被任意地设置,但是,为了提高具有小存储器容量的高速缓存存储器装置的性能,由CPU30执行的所述数量的指令代码可以被保存在高速缓存存储器12中,同时等待存储器31中的提取等待时间的时钟。尤其是,通过(存储器31中的提取等待时间)/(执行一个指令代码所需的时钟数量)而获得的指令代码的最大数量将是最有效的设置值,以提高具有小存储器容量的微处理器系统的性能。
最大指令数设置电路39把指示设置的指令代码的最大数量的最大指令数信号74输出给更新控制电路17。提供给更新控制电路17的最大指令数信号74对应于根据第一实施例的微处理器系统1中的提供给更新控制电路17的最大指令数信号56。
在根据本实施例的微处理器系统2中,最大指令数设置电路39可以使用从CPU30输出的时钟数量信息71和从存储器31输出的等待时间信息来设置要存储到高速缓存存储器12的指令代码的最大数量。因此,指令代码的最大数量可以根据要使用的CPU30和存储器31被自动地设置,而不涉及用户设置指令代码的最大数量。
接下来,说明本发明的第四实施例。图7是示出根据本实施例的包括高速缓存存储器装置的微处理器系统4的框图。图7中所示的微处理器系统4包括CPU10、存储器11、高速缓存存储器42和高速缓存控制电路43。高速缓存控制电路43包括分支检测电路16、更新控制电路17、最大指令数设置电路19和缓冲器45。高速缓存存储器42和高速缓存控制电路43构成高速缓存存储器装置。
根据本实施例的包括所述高速缓存存储器装置的微处理器系统4与图1中所示的根据第一实施例的微处理器系统1的不同之处在于,在高速缓存控制电路43中包含缓冲器45,并且,从存储器11输出的指令代码52被临时存储到该缓冲器45中,并被传送到高速缓存存储器42。由于其它配置与根据第一实施例的微处理器系统1相同,所以用相同的附图标记表示相同的部件,并且,将不再重复说明。
高速缓存存储器42接收从CPU10输出的提取地址51、从更新控制电路17输出的传送使能信号81、以及从缓冲器45输出的高速缓存目标指令代码82,并且把指令代码54输出到CPU10。临时存储到缓冲器45的指令代码(高速缓存目标指令代码82)被传送到高速缓存存储器42。
缓冲器45临时存储从存储器11输出的指令代码52,然后把指令代码52传送到高速缓存存储器42。缓冲器45接收从存储器11输出的指令代码52和指令代码存储使能信号53,从更新控制电路17输出的高速缓存开始通知信号57、高速缓存停止通知信号58和有效标志位重置信号59,并且把高速缓存目标指令代码82输出到高速缓存存储器42。此外,缓冲器45包括针对存储指令代码的每一个存储器单元设置的有效标志位48。
此外,当存储到缓冲器45的指令代码的数量(即,计数器18的值)超过在先设置的最大数(即,由最大指令数设置电路19设置的最大指令数量)时,存储到缓冲器的指令代码的有效标志位48被禁用(例如,指示禁用的有效标志位的逻辑值被设置为“0”)。当有效 标志位48被禁用时,更新控制电路17把有效标志位重置信号59输出到缓冲器45。同时,当存储到缓冲器的指令代码的数量小于或等于在先设置的最大数量时,存储到缓冲器的有效标志位48保持有效(“1”)。然后,在存储到缓冲器的指令代码的数量小于或等于在先设置的最大数量的状态下,当分支检测电路16检测到到子例程中de分支时,缓冲器45把临时存储的指令代码(高速缓存目标指令代码82)传送到高速缓存存储器42。此时,传送使能信号81被激活。
接下来,说明根据本实施例的包括高速缓存存储器装置的微处理器系统4的操作。图8是用于说明图7中所示的高速缓存存储器装置的操作的流程图。除了指令代码被临时存储到缓冲器45(步骤S3')以及指令代码被从缓冲器45传送到高速缓存存储器42(步骤S10)以外,根据本实施例的包括高速缓存存储器装置的微处理器系统4的操作与根据第一实施例的微处理器系统1的操作相同。
首先,CPU10开始输出提取地址51给存储器11,以便从存储器11读取指令代码(步骤S1)。分支检测电路16监视从CPU10输出的提取地址51,并且,当提取地址51指示到子例程中的分支(步骤S2:是)时,分支检测电路16输出分支通知信号55给更新控制电路17。例如,当从CPU10输出的提取地址51从连续地址改变为不连续地址时,分支检测电路16估算出程序已经分支到子例程中。注意,当提取地址51没有指示到子例程中的分支(步骤S2:否)时,分支检测电路16继续监视从CPU10输出的提取地址51。
当从分支检测电路16提供分支通知信号55时,更新控制电路17把高速缓存开始通知信号57输出给缓冲器45。然后,缓冲器45开始存储指令代码52。
另一方面,当提供提取地址51时,存储器11把对应于该提取地址51的指令代码52输出给缓冲器45以及CPU10中的预提取缓冲器14。此外,存储器11把指示从存储器11输出有效指令代码52的指令代码存储使能信号53输出给CPU10中的预提取缓冲器14、缓冲器45和更新控制电路17。注意,图8中所示的操作例子指示这样 的情况,即,其中:对应于提取地址51的指令代码没有被高速缓存在高速缓存存储器42中(即,在不存在高速缓存命中时)。
当从存储器11提供指令代码52和指令代码存储使能信号53时,CPU10中的预提取缓冲器14把该指令代码52存储到预提取缓冲器14。
另外,当从存储器11提供指令代码52和指令代码存储使能信号53时,缓冲器45把该指令代码52存储到缓冲器45(步骤S3’)。此时,缓冲器45把与存储指令代码52的存储器单元相对应的有效标志位48的逻辑值更新为“1”(步骤S4)。也就是说,存储到缓冲器45的指令代码52被使能。
例如,当有效指令代码被存储到存储器单元时,有效标志位48被设置为“1”,并且,当未存储有效指令代码时,有效标志位48被设置为“0”。然后,当存储下一个子例程中的指令代码时,把该指令代码存储到有效标志位48为“0”的存储器单元。
此外,当从存储器11提供指令代码存储使能信号53时,更新控制电路17的计数器18把计数器值渐增(步骤S5)。然后,更新控制电路17比较通过最大指令数信号56设置的指令代码的最大数量和计数器18的值(对应于存储到缓冲器45的指令代码的数量),并估算计数器18的值是否超过指令代码的最大数量(步骤S6)。
当计数器18的值未超过指令代码的最大数量(即,计数器18的值小于或等于指令代码的最大数量,步骤S6:否)时,存储的指令代码的有效标志位48保持有效(“1”)。接下来,分支检测电路16监视从CPU10输出的下一个提取地址51,并且,当提取地址51没有指示到新的子例程中的分支(步骤S7:否)时,重复步骤S2之后的操作。另一方面,当从CPU10输出的下一个提取地址51指示到新的子例程中的分支(步骤S7:是)时,对计数器18的值进行重置(步骤S8)。然后,缓冲器45把临时存储的指令代码(高速缓存目标指令代码82)传送到高速缓存存储器42(步骤S10)。此时,传送使能信号81是激活的。其后,重复步骤S2之后的操作。
此外,当计数器18的值超过指令代码的最大数量(步骤S6:是)时,包括最后高速缓存的指令代码的子例程中的所有指令代码的有效标志位被禁用(“0”)(步骤S9)。具体地说,当计数器18的值超过通过最大指令数信号56设置的指令代码的最大数量(步骤S6:是)时,更新控制电路17把有效标志位重置信号59输出到缓冲器45,并且禁用(“0”)包括最后高速缓存的指令代码的子例程中的所有指令代码的有效标志位。此外,更新控制电路17把高速缓存停止通知信号58输出到缓冲器45,以便缓冲器45停止存储指令代码52。其后,重复步骤S2之后的操作。
如上所述,根据本实施例的微处理器系统4包括能够临时存储指令代码的缓冲器45,并且,给该缓冲器45设置有效标志位48。然后,当存储到缓冲器45的指令代码的数量小于或等于在先设置的最大数时,临时存储到缓冲器45的指令代码被传送到高速缓存存储器42。因此,不需要在高速缓存存储器42中设置有效标志位,从而简化了高速缓存存储器的配置。
本领域的普通技术人员可以根据其期望来组合第一至第四实施例。
虽然已经就若干实施例描述了本发明,但是,本领域的技术人员将认识到,在所附权利要求的精神和范围内,可以通过各种修改来实施本发明,并且,本发明不限于上述的例子。
而且,权利要求的范围并不受上述实施例限制。
此外,注意,申请人的意图在于,涵盖所有权利要求要素的等同物,即使后来在申请过程中进行了修改。
Claims (13)
1.一种高速缓存存储器装置,包括:
高速缓存存储器,该高速缓存存储器对与提取地址相对应的指令代码进行高速缓存;和
高速缓存控制电路,该高速缓存控制电路控制所述指令代码高速缓存在所述高速缓存存储器中,其中
所述高速缓存控制电路:
在提取地址指示到子例程中的分支时,对与该子例程相对应的指令代码进行高速缓存,并且,
在要高速缓存的指令代码的数量超过预先设置的最大数量时,禁用所述要高速缓存的指令代码,
其中,所述预先设置的指令代码的最大数量是通过用自从CPU输出所述提取地址到存储器直到所述存储器输出所述指令代码的时钟数量除以CPU执行一个指令代码所需的时钟数量而获得的。
2.根据权利要求1所述的高速缓存存储器装置,其中所述高速缓存控制电路:
在提取地址指示到子例程中的分支时,将与该子例程相对应的指令代码高速缓存在高速缓存存储器中,并且,
在高速缓存的指令代码的数量超过预先设置的最大数量时,禁用所述高速缓存的指令代码。
3.根据权利要求2所述的高速缓存存储器装置,其中
所述高速缓存存储器包括用于存储所述指令代码的多个存储器单元,
所述高速缓存存储器保持有效标志,该有效标志指示被高速缓存的指令代码中的每一个是否有效,
当与所述子例程相对应的指令代码被高速缓存在高速缓存存储器中时,所述有效标志被使能,并且
当被高速缓存的指令代码的数量超过预先设置的最大数量时,禁用被高速缓存的指令代码的有效标志。
4.根据权利要求3所述的高速缓存存储器装置,其中,当所述指令代码被高速缓存在所述高速缓存存储器中时,所述指令代码被高速缓存在存储器单元中,并且所述有效标志被禁用。
5.根据权利要求1所述的高速缓存存储器装置,其中
所述高速缓存控制电路包括缓冲器,该缓冲器能够临时保持所述与提取地址相对应的指令代码,以及
所述高速缓存控制电路:
在所述提取地址指示到所述子例程中的所述分支时,在所述缓冲器中保持与所述子例程相对应的指令代码,
在被高速缓存的指令代码的数量小于或等于所述预先设置的最大数量时,把被保持在所述缓冲器中的指令代码传送到所述高速缓存存储器,并且
在被高速缓存的指令代码的数量超过所述预先设置的最大数量时,禁用保持在所述缓冲器中的指令代码。
6.根据权利要求5所述的高速缓存存储器装置,其中
所述缓冲器包括用于存储指令代码的多个存储器单元,并且为每一个存储器单元保持有效标志,该有效标志指示存储的指令代码中的每一个是否有效,
当与所述子例程相对应的指令代码被保持在缓冲器中时,使能所述有效标志,并且
当保持的指令代码的数量超过所述预先设置的最大数量时,禁用被保持的指令代码的有效标志。
7.根据权利要求6所述的高速缓存存储器装置,其中,当所述指令代码被保持在所述缓冲器中时,所述指令代码被保持在存储器单元中,并且所述有效标志禁止。
8.根据权利要求1所述的高速缓存存储器装置,其中
所述高速缓存控制电路包括指示所述高速缓存存储器开始和停止高速缓存的更新控制电路,以及
所述更新控制电路包括对存储到所述高速缓存存储器的所述子例程中的指令的数量进行计数的计数器,并且
所述更新控制电路比较所述预先设置的指令代码的最大数量和所述计数器的值,并且,在所述计数器的值超过所述预先设置的指令代码的最大数量时,禁用要高速缓存的指令代码。
9.根据权利要求1所述的高速缓存存储器装置,其中,所述高速缓存控制电路包括分支检测电路,该分支检测电路检测所述提取地址已经被分支到子例程中。
10.根据权利要求1所述的高速缓存存储器装置,其中,根据从CPU输出的指示所述提取地址已经被分支到子例程中的分支通知信号,所述高速缓存控制电路估算所述提取地址已经被分支到子例程中。
11.根据权利要求1所述的高速缓存存储器装置,其中
所述高速缓存控制电路包括最大指令数设置电路,该最大指令数设置电路设置所述指令代码的最大数量,并且
根据与CPU执行一个指令代码所需的时钟数量有关的时钟数量信息、以及与自CPU输出提取地址到所述存储器直到所述存储器输出指令代码的时钟数量有关的等待时间信息,所述最大指令数设置电路设置所述指令代码的最大数量。
12.一种微处理器系统,包括:
CPU;
存储器,该存储器存储要在CPU中执行的指令代码;
高速缓存存储器,该高速缓存存储器对与从CPU输出的提取地址相对应的指令代码进行高速缓存;以及
高速缓存控制电路,该高速缓存控制电路控制指令代码高速缓存在所述高速缓存存储器中,其中
高速缓存控制电路:
在所述提取地址指示到子例程中的分支时,对与所述子例程相对应的指令代码进行高速缓存,并且,
在要高速缓存的指令代码的数量超过预先设置的最大数量时,禁用要高速缓存的指令代码,
其中,所述预先设置的指令代码的最大数量是通过用自从CPU输出所述提取地址到存储器直到所述存储器输出所述指令代码的时钟数量除以CPU执行一个指令代码所需的时钟数量而获得的。
13.一种用于高速缓存存储器的高速缓存控制方法,所述高速缓存存储器对与提取地址相对应的指令代码进行高速缓存,所述高速缓存控制方法包括:
在所述提取地址指示到子例程中的分支时,对与所述子例程相对应的指令代码进行高速缓存;以及
在要高速缓存的指令代码的数量超过预先设置的最大数量时,禁用所述要高速缓存的指令代码,
其中,所述预先设置的指令代码的最大数量是通过用自从CPU输出所述提取地址到存储器直到所述存储器输出所述指令代码的时钟数量除以CPU执行一个指令代码所需的时钟数量而获得的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-240780 | 2011-11-02 | ||
JP2011240780A JP5793061B2 (ja) | 2011-11-02 | 2011-11-02 | キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103092773A CN103092773A (zh) | 2013-05-08 |
CN103092773B true CN103092773B (zh) | 2017-10-20 |
Family
ID=47088751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210432095.5A Expired - Fee Related CN103092773B (zh) | 2011-11-02 | 2012-11-02 | 高速缓存存储器装置、高速缓存控制方法和微处理器系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9317438B2 (zh) |
EP (1) | EP2590082B1 (zh) |
JP (1) | JP5793061B2 (zh) |
CN (1) | CN103092773B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9047092B2 (en) * | 2012-12-21 | 2015-06-02 | Arm Limited | Resource management within a load store unit |
US9213491B2 (en) * | 2014-03-31 | 2015-12-15 | Intel Corporation | Disabling a command associated with a memory device |
CN104331962A (zh) * | 2014-10-27 | 2015-02-04 | 厦门博佳琴电子科技有限公司 | 一种置物柜指纹识别系统 |
US10908817B2 (en) * | 2017-12-08 | 2021-02-02 | Sandisk Technologies Llc | Signal reduction in a microcontroller architecture for non-volatile memory |
JP7089423B2 (ja) * | 2018-07-12 | 2022-06-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び制御方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1367428A (zh) * | 2000-12-22 | 2002-09-04 | 富士通株式会社 | 具有低电耗指令高速缓冲存储器的数据处理器 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5890244A (ja) * | 1981-11-24 | 1983-05-28 | Hitachi Ltd | デ−タ処理装置 |
JPS62152043A (ja) * | 1985-12-26 | 1987-07-07 | Nec Corp | 命令コ−ドアクセス制御方式 |
US4933837A (en) * | 1986-12-01 | 1990-06-12 | Advanced Micro Devices, Inc. | Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories |
DE69128741T2 (de) | 1990-05-18 | 1998-07-16 | Koninkl Philips Electronics Nv | Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür |
JPH04333929A (ja) * | 1991-05-10 | 1992-11-20 | Toshiba Corp | キャッシュメモリ制御方式 |
JPH05181746A (ja) * | 1991-12-26 | 1993-07-23 | Mitsubishi Electric Corp | データ処理システム及びメモリ制御方式 |
JPH07160585A (ja) * | 1993-12-13 | 1995-06-23 | Hitachi Ltd | 低電力データ処理装置 |
US5729713A (en) * | 1995-03-27 | 1998-03-17 | Texas Instruments Incorporated | Data processing with first level cache bypassing after a data transfer becomes excessively long |
US5606682A (en) * | 1995-04-07 | 1997-02-25 | Motorola Inc. | Data processor with branch target address cache and subroutine return address cache and method of operation |
JPH09305490A (ja) | 1996-05-17 | 1997-11-28 | Nec Corp | マイクロプロセッサシステム |
JP2004171177A (ja) * | 2002-11-19 | 2004-06-17 | Renesas Technology Corp | キャッシュシステムおよびキャッシュメモリ制御装置 |
JP4393317B2 (ja) * | 2004-09-06 | 2010-01-06 | 富士通マイクロエレクトロニクス株式会社 | メモリ制御回路 |
JP4189402B2 (ja) * | 2005-02-21 | 2008-12-03 | パナソニック株式会社 | キャッシュ回路 |
JP4903415B2 (ja) | 2005-10-18 | 2012-03-28 | 株式会社日立製作所 | 記憶制御システム及び記憶制御方法 |
JP2008090492A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | キャッシュコントローラ、マイクロプロセッサシステム、記憶装置 |
JP2010066892A (ja) * | 2008-09-09 | 2010-03-25 | Renesas Technology Corp | データプロセッサ及びデータ処理システム |
-
2011
- 2011-11-02 JP JP2011240780A patent/JP5793061B2/ja not_active Expired - Fee Related
-
2012
- 2012-10-31 EP EP12190816.4A patent/EP2590082B1/en not_active Not-in-force
- 2012-11-02 US US13/668,009 patent/US9317438B2/en not_active Expired - Fee Related
- 2012-11-02 CN CN201210432095.5A patent/CN103092773B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1367428A (zh) * | 2000-12-22 | 2002-09-04 | 富士通株式会社 | 具有低电耗指令高速缓冲存储器的数据处理器 |
Also Published As
Publication number | Publication date |
---|---|
JP5793061B2 (ja) | 2015-10-14 |
JP2013097638A (ja) | 2013-05-20 |
CN103092773A (zh) | 2013-05-08 |
EP2590082A1 (en) | 2013-05-08 |
US20130111140A1 (en) | 2013-05-02 |
US9317438B2 (en) | 2016-04-19 |
EP2590082B1 (en) | 2018-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103092773B (zh) | 高速缓存存储器装置、高速缓存控制方法和微处理器系统 | |
US8082420B2 (en) | Method and apparatus for executing instructions | |
EP1110151B1 (en) | Buffering system bus for external-memory accesses | |
US8261021B2 (en) | Cache control device and control method | |
EP2593861B1 (en) | System and method to allocate portions of a shared stack | |
CN100388185C (zh) | 预取计算机系统中的数据 | |
KR100936601B1 (ko) | 멀티 프로세서 시스템 | |
US9529594B2 (en) | Miss buffer for a multi-threaded processor | |
EP2074511B1 (en) | Efficient store queue architecture | |
US10423467B2 (en) | Data processing apparatus and method for performing lock-protected processing operations for multiple threads | |
US9052910B2 (en) | Efficiency of short loop instruction fetch | |
US20160216970A1 (en) | Efficiency of an instruction cache by retrieving instructions for completing a single branch backwards short loop from a local loop buffer | |
DE112009000117T5 (de) | Prozessor mit einer Hybridredundanz zum Schutz vor Logikfehlern | |
KR20110058410A (ko) | 능동 메모리 프로세서를 포함하는 네트워크-온-칩 시스템 | |
US20100011165A1 (en) | Cache management systems and methods | |
WO2016022680A1 (en) | Cache bypassing policy based on prefetch streams | |
US8108862B2 (en) | Out-of-order thread scheduling based on processor idle time thresholds | |
CN109426623A (zh) | 一种读取数据的方法及装置 | |
JP2005539322A5 (zh) | ||
JP2007500897A (ja) | データ処理システムにおけるプリフェッチ制御 | |
US20090198969A1 (en) | Microprocessor systems | |
EP1599803B1 (en) | Reducing cache trashing of certain pieces | |
US20030181994A1 (en) | Microprocessor performing efficient external bus access | |
KR101086457B1 (ko) | 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 | |
US20160210246A1 (en) | Instruction cache with access locking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Tokyo, Japan Applicant after: Renesas Electronics Corporation Address before: Kanagawa, Japan Applicant before: Renesas Electronics Corporation |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171020 Termination date: 20191102 |