首页> 中国专利> 高速缓存控制器、控制高速缓存控制器的方法以及计算机系统

高速缓存控制器、控制高速缓存控制器的方法以及计算机系统

摘要

一种高速缓存控制器、控制高速缓存控制器的方法以及计算机系统,其中,计算机系统包含:处理器;以及高速缓存控制器,电连接到该处理器,包含:第一端口,用于自该处理器接收内容的地址,该内容的类型为指令以及数据其中之一;第二端口,用于自该处理器接收对应该内容的信息比特,该信息比特指示该内容的该类型;以及至少一高速缓存包含多个高速缓存行,该多个高速缓存行的每一者包含内容域并对应一个信息域,根据该信息比特以及该地址,该内容以及该信息比特分别存储在该多个高速缓存行其中之一的内容域与对应的该信息域中。本发明提供的高速缓存控制器、控制高速缓存控制器的方法以及计算机系统可解决现有技术中的高速缓存高失误的问题。

著录项

  • 公开/公告号CN101930408A

    专利类型发明专利

  • 公开/公告日2010-12-29

    原文格式PDF

  • 申请/专利权人 联发科技股份有限公司;

    申请/专利号CN200910261669.5

  • 发明设计人 陈柏宏;戴昌宪;

    申请日2009-12-23

  • 分类号G06F12/08;

  • 代理机构北京万慧达知识产权代理有限公司;

  • 代理人葛强

  • 地址 中国台湾新竹科学工业园区新竹市笃行一路一号

  • 入库时间 2023-12-18 01:35:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-09

    未缴年费专利权终止 IPC(主分类):G06F12/08 授权公告日:20121003 终止日期:20161223 申请日:20091223

    专利权的终止

  • 2012-10-03

    授权

    授权

  • 2011-02-16

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20091223

    实质审查的生效

  • 2010-12-29

    公开

    公开

说明书

技术领域

本发明有关于高速缓存(cache)控制器,更具体地,本发明有关于高速缓存控制器、控制高速缓存控制器的方法以及计算机系统。

背景技术

高速缓存在现代CPU设计中具有重要地位。高速缓存用于存储CPU所频繁存取以及重复使用的一小部分内容(content)。如果已存储的内容具有时间与空间的区域性(locality)的话,那么就可高效的存取高速缓存。待存储到高速缓存中的内容包含指令以及数据。大多数指令彼此之间具有区域性,大多数数据彼此之间也具有区域性;尽管如此,在指令与数据之间却没有区域性。

高速缓存一般可以分为混合式高速缓存(unified cache)和非混合式高速缓存(non-unified cache)。在非混合式高速缓存中,指令和数据分开处理,特别地,非混合式高速缓存在不同的硬件中存储指令和数据,而且,具有分别传输指令以及数据的两个不同端口(port)。既然指令与数据分开处理,所以很容易维持存储在高速缓存中的指令之间的区域性,以及存储在高速缓存中的数据的区域性。

与此相反的是,混合式高速缓存将指令以及数据存储在同样的硬件中,而且传输指令以及数据使用单一的端口。图1为使用混合式高速缓存的先前计算机系统1的示意图。计算机系统1包含处理器11、混合式高速缓存控制器13以及存储器模块15。更具体地,混合式高速缓存控制器13包含高速缓存131。

混合式高速缓存控制器13通过第一端口130、第二端口132以及第三端口134连接到处理器11,第一端口130用于自处理器接收内容的地址,其中,该内容可以是指令或者数据。第二端口132为现有技术中的混合式高速缓存控制器13中的虚拟端口(dummy port)。第三端口134用于将高速缓存控制器13的内容传输给处理器11。很明显,在高速缓存131中的指令和数据是混合的,而高速缓存控制器13没有办法管理存储在高速缓存131中的内容。具体地,当高速缓存行(cache line)已满时,高速缓存控制器13不考虑在预清除高速缓存行中存储的内容,而清除一个或者多个高速缓存行。因此,高速缓存控制器清除即将用于下一个周期(cycle)的指令或者数据将是可能的,这将增加高速缓存误失(miss)的概率。

混合式高速缓存在现在CPU设计中是很常用的,因为混合式高速缓存容易设计以及扩展。因此,迫切需要找到一种方法,以解决指令以及数据的竞争(competition)而引起的混合式高速缓存中高速缓存高误失的问题。

发明内容

因此,本发明提供一种高速缓存控制器、控制高速缓存控制器的方法。

本发明提供一种高速缓存控制器,包含:第一端口,用于自处理器接收内容的地址,该内容的类型为指令与数据其中之一;第二端口,用于自该处理接收对应该内容的信息比特,该信息比特指示出该内容的类型;以及至少一高速缓存,包含多个高速缓存行,该多个高速缓存行的每一者包含内容域,该多个高速缓存行的每一者对应一个信息域,根据该信息比特以及该地址,该内容以及该信息比特分别存储在该多个高速缓存行其中之一的该内容域与对应的该信息域中。

本发明再提供一种控制高速缓存控制器的方法,该高速缓存控制器包含至少一高速缓存,该至少一高速缓存的每一者包含多个高速缓存行,该多个高速缓存行的每一者包含内容域,该多个高速缓存行的每一者对应一个信息域,该方法包含:自处理器接收内容的地址,该内容的类型为指令以及数据其中之一;自该处理器接收对应该内容的信息比特,该信息比特指示出该内容的类型;以及根据该信息比特以及该地址,将该内容以及该信息比特分别存储在该多个高速缓存行其中之一的该内容域与对应的该信息域中。

本发明另提供一种计算机系统,包含:处理器;以及高速缓存控制器,电连接到该处理器,包含:第一端口,该第一端口用于自该处理器接收内容的地址,该内容的类型为指令以及数据其中之一;第二端口,该第二端口用于自该处理器接收对应该内容的信息比特,该信息比特指示该内容的该类型;以及至少一高速缓存包含多个高速缓存行,该多个高速缓存行的每一者包含内容域,该多个高速缓存行的每一者对应一个信息域,根据该信息比特以及该地址,该内容以及该信息比特分别存储在该多个高速缓存行其中之一的内容域与对应的该信息域中。

本发明提供的一种高速缓存控制器、控制高速缓存控制器的方法以及计算机系统可以解决现有技术中存在的高速缓存高误失的问题。

附图说明

图1为使用混合式高速缓存的先前计算机系统的示意图;

图2为本发明第一实施例计算机系统的示意图;

图3A为本发明第一实施例中的高速缓存的示意图;

图3B为本发明第一实施例中的地址的示意图;

图4为根据本发明的实施例的用于控制高速缓存控制器的方法的流程图。

具体实施方式

在说明书及权利要求当中使用了某些词汇来指称特定组件。所属领域中具有通常知识者应可理解,制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求当中所提及的“包括”和“包含”为一开放式的用语,故应解释成“包含但不限定于”。以外,“耦接”一词在此包含任何直接及间接的电气连接手段。间接的电气连接手段包括通过其它装置进行连接。

图2为本发明第一实施例计算机系统2的示意图。计算机系统2包含处理器21、高速缓存控制器23以及存储器模块25。

处理器21为具有单一端口的处理器,例如,处理器21为ARM7EJS处理器,其中,单一端口用于自高速缓存控制器23接收内容。存储器模块25可以为DRAM、SRAM或者任何存储媒体。在此实施例中,内容的类型可以为指令或者数据。高速缓存控制器23包含高速缓存231、数据计数器233以及指令计数器235。请注意,在其它实施例中,高速缓存控制器可具有多个高速缓存。高速缓存控制器的高速缓存的数量不以本发明实施例为限。高速缓存控制器23进一步包含第一端口230、第二端口232、第三端口234以及第四端口236,其中,第一端口230、第二端口232以及第四端口236电连接到处理器21,而第三端口234电连接到存储器模块25。

请参考图3A,图3A为本发明第一实施例中的高速缓存231的示意图。高速缓存231包含多个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h,多个信息域(information field)32b、32c、32d、32e、32f、32g以及32h,多个标签域(tag field)33b、33c、33d、33e、33f、33g以及33h。多个信息域32b、32c、32d、32e、32f、32g以及32h中的每一者都可以由一比特寄存器(register)实现,多个标签域33b、33c、33d、33e、33f、33g以及33h中的每一者都可以由多比特寄存器实现。可以注意到,高速缓存行、信息域以及标签域的数量不以本发明实施例为限。多个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h分别对应多个信息域32a、32b、32c、32d、32e、32f、32g以及32h与多个标签域33a、33b、33c、33d、33e、33f、33g以及33h。

处理器21必须自高速缓存231获取内容以进行运作。特别地,处理器21将内容的地址202以及对应该内容的信息比特204传输给高速缓存控制器23。然后,高速缓存控制器23的第一端口230以及第二端口232分别接收内容的地址202以及对应该内容的信息比特204。信息比特204指示出该内容的类型,例如,“0”表示指令,而“1”表示数据。请注意,使用“0”或者“1”代表指令(或者数据)不以本发明实施例为限。当该内容为指令,则该地址为指令的地址,而且信息比特为0。相似地,当该内容为数据,则该地址为数据的地址,而且信息比特为1。

接收地址202以及信息比特204后,高速缓存控制器23根据地址202查找高速缓存231,以找到正确的内容,而此操作会导致高速缓存命中(hit)或者高速缓存误失。图3B为本发明第一实施例中的地址202的示意图,其中,地址202包含标签域202a、内容域202b以及偏移202c。高速缓存控制器23将地址202的标签域202a与高速缓存231的标签域33a、33b、33c、33d、33e、33f、33g以及33h进行比较。如果高速缓存231的标签域33a 33b、33c、33d、33e、33f、33g以及33h的其中之一可以与地址202的标签域202a匹配的话,那么就高速缓存命中,否则就会发生高速缓存误失。

下面描述“高速缓存误失”的情况。高速缓存控制器23请求后自存储器模块25接收存储在地址202的内容。然后,根据信息比特204以及地址202,高速缓存控制器23将该内容存储在多个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h的其中之一,然后将信息比特204存储在高速缓存行的对应信息域中,其中,该高速缓存行中存储该内容。接下来,高速缓存控制器23通过第四端口236,将该内容传输给处理器21。下面将描述存储该内容以及信息比特204的细节。

根据指示出指令与数据的比例的已调整比例,高速缓存控制器23设定数据计数器233与指令计数器235中存储的数值。已调整比例可以是内建的数值,或者由使用者使用计算机系统2来设定的数值。假设指令与数据的已调整比例为1∶3。基于上述假设,8个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h中的两者可以用来存储类型为指令的内容,而另外6个高速缓存行可以用来存储类型为数据的内容。请注意,1∶3的比例仅用于说明本发明,然本发明不以此为限。

已调整比例可以用来设定用于指令计数器235存储的数值的范围,以及用于数据计数器233存储的数值的范围。指令计数器235用于存储与类型为指令的高速缓存行有关的一个数值,该类型为指令的高速缓存行由对应信息域中存储的一比特指示,而数据计数器233用于存储与类型为数据的高速缓存行有关的一数值,该类型为数据的高速缓存行由对应信息域中存储的一个比特指示,例如,该数值可以为高速缓存行的个数,而该高速缓存行每一者对应的信息域存储了指示出数据类型的一个比特。既然8个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h中的两者可以用来存储类型为指令的内容,那么指令计数器235存储的数值的范围就可以为从0到2。相似地,8个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h中的六者可以用来存储类型为数据的内容,那么数据计数器233存储的数值的范围就可以为从0到6。举例说明,开始,所有8个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h都为空,所以指令计数器235以及数据计数器233存储的数值就设定为0。

如果信息比特204指示出内容的类型为指令(例如,信息比特204为0),那么高速缓存控制器23就可以确定指令计数器235存储的数值是否为最大(即,2)。如果指令计数器235存储的数值没有达到最大值,那么高速缓存控制器23就可以自8个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h中选择一个空的高速缓存行,以存储该内容。假设选定高速缓存行31a。然后,高速缓存控制器23将该内容存储在高速缓存行31a,将信息比特204存储在对应信息域32a,以及将地址202的标签域202a存储在对应标签域33a。在存储该内容之后,根据该内容之存储而更新存储在指令计数器235中的数值,特别地,指令计数器235的数值可以从0增长到1。

指令计数器235存储的数值已经到达最大值也是可能的,然后高速缓存控制器23必须选择对应的信息域为0的多个高速缓存行中的至少一者(即,指示高速缓存行存储类型为指令的内容),以实施清除。指令计数器235存储的数值在清除之后可以更新。特别地,如果高速缓存控制器23清除对应的信息域为0的两个高速缓存行,那么指令计数器235存储的数值就可以减少2。如果高速缓存控制器23清除对应信息域为0的一个高速缓存行,那么指令计数器235的数值就可以减少1。需要强调的是,当信息比特204为0时,高速缓存控制器23不选择对应信息域为1的高速缓存行来实施清除。

相似地,如果信息比特204指示出内容的类型为数据(即,信息比特204为1),那么高速缓存控制器23就可以确定数据计数器233存储的数值是否为最大值(即6)。如果数据计数器233存储的数值没有到达最大值,那么高速缓存控制器23以相似的处理方式,存储地址202的内容、信息比特以及标签域202a,然后数据计数器233相应地更新存储的数值。相似地,如果数据计数器233已经达到最大值,那么高速缓存控制器23必须选择对应信息域为1的多个高速缓存行中的至少一个(即,指示出高速缓存行存储类型为数据的内容),以实施清除。在清除之后,数据计数器233相应地更新。请注意,对于数据以及指令使用计数器,仅用于说明本发明,然本发明不以此为限。举例说明,数据计数器或者指令计数器可以由软件方法,通过使用如数据计数器233以及指令计数器235所实施的类似的步骤而实现。

在其它实施例中,高速缓存控制器23可以减法的方式,使用指令计数器235以及数据计数器233。也就是说,数据计数器233可以用于存储一个数值,该数值为指示出仍可用于存储类型为数据的内容的高速缓存行的个数。在此情况下,指令计数器235以及数据计数器233开始分别设定为最大值。当高速缓存控制器23将类型为指令的内容存储在多个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h的其中之一时,高速缓存控制器23将指令计数器235存储的数值减一。相似地,当高速缓存控制器23将类型为数据的内容存储在多个高速缓存行31a、31b、31c、31d、31e、31f、31g以及31h的其中之一时,高速缓存控制器23将数据计数器233存储的数值减一。

根据前面描述,任何所属领域普通技术人员可以将本发明的思想实现在包含多个高速缓存行的高速缓存控制器中。

在来自处理器21的信息比特、数据计数器233以及指令计数器235的帮助下,本发明可以将指令与数据分开存储在高速缓存231中。需要强调的是,高速缓存231为混合式高速缓存。当用于存储指令的高速缓存行已满时,高速缓存控制器23仅仅清除用于指令的高速缓存行,而不清除用于数据的高速缓存行。相似地,当用于存储数据的高速缓存行已满时,高速缓存控制器23仅仅清除用于数据的高速缓存行,而不清除用于指令的高速缓存行。如此实现的原因是,数据本身具有区域性,指令本身具有区域性;尽管如此,在指令和数据之间却没有区域性。经过前面的描述,混合式高速缓存的命中的比率就会增大。

图4为根据本发明的实施例的用于控制高速缓存控制器的方法的流程图。该方法可以由混合式高速缓存(例如,本发明第一实施例的高速缓存控制器23)而使用。该方法的解释可以参考高速缓存控制器23而进行。此外,数据计数器233以及指令计数器235开始时可以分别设定为最大值。例如,数据计数器233存储的数值设定为6,而指令计数器存储的数值设定为2。那就意味着,仍然有6个高速缓存行可用于存储类型为数据的内容,而且仍然有2个高速缓存行可以用于存储类型为指令的内容。

首先,该方法执行步骤S701,这样高速缓存控制器23就可以自处理器接收内容的地址,其中,该内容的类型可以为指令或者数据。在步骤S703,高速缓存控制器23自处理器接收对应内容的信息比特,其中,该信息比特指示出该内容的类型。需要注意的是,高速缓存控制器23可以同时执行步骤S701以及步骤S703,或者在执行步骤S701之前执行步骤S703。

然后执行步骤S705,以使能高速缓存控制器23,用于确定由该地址指示出的内容是否在高速缓存中。如果该内容在高速缓存中,那么高速缓存控制器23执行步骤S707以将该内容传输给处理器。如果该内容不在高速缓存中,那么高速缓存控制器23执行步骤S709,以根据该地址,自存储器接收内容。例如,由第三端口自存储器接收内容。

在步骤S709后,高速缓存控制器23执行步骤S711,以确定该信息比特指示出该内容的类型是否为数据。如果该内容的类型为数据,那么执行步骤S721、S723、S725、S727、S729以及步骤S707。如果该内容的类型不是数据(即,类型为指令),那么执行步骤S731、S733、S735、S737、S739以及步骤S707。

如果该内容的类型为数据,那么高速缓存控制器23执行步骤S721以确定高速缓存是否具有存储内容的类型为数据的可用空高速缓存行。特别地,步骤S721可以通过确定存储在数据计数器中的数值是否为0来实现。如果高速缓存仍然有可以用于存储类型为数据(即,数据计数器不为0)的内容的空高速缓存行,那么高速缓存控制器23执行步骤S727以将该内容存储在多个空高速缓存行的其中之一。然后,高速缓存控制器23执行步骤S729以更新数据计数器。特别地,高速缓存控制器23通过将数据计数器中存储的数值减一而更新数据计数器。然后,高速缓存控制器23执行步骤S707以将该内容传输给处理器。另一方面,如果步骤S721确定该高速缓存没有用于存储类型为数据的内容的空的高速缓存行,那么高速缓存控制器必须在执行步骤S727之前执行步骤S723到步骤S725。在步骤S723,高速缓存控制器23清除至少一个存储了类型为数据的内容的高速缓存行。也就是说,高速缓存控制器23清除了多个高速缓存行之一者的内容域,其中,该已清除的内容域的高速缓存行对应的信息域存储了指示类型为数据的一比特,然后也清除对应信息域。在清除之后,高速缓存控制器23执行步骤S725以更新数据计数器。特别地,高速缓存控制器23通过将数据计数器存储的数值加一而更新数据计数器。

如果步骤S711确定,内容的类型为指令(即,不是数据),那么高速缓存控制器23就执行步骤S731以确定高速缓存是否还具有存储内容的类型为指令的可用空高速缓存行。特别地,步骤S731中,高速缓存控制器23可以确定存储在指令计数器中的数值是否为零。如果高速缓存仍然具有可以用于存储内容的类型为指令的空高速缓存行(即,指令计数器不为0),那么高速缓存控制器23执行步骤S737以将内容存储在多个空高速缓存行的其中之一。然后高速缓存控制器23执行步骤S739,以更新指令计数器。特别地,在步骤S739中,高速缓存控制器通过将指令计数器存储的数值减一而更新指令计数器。之后,高速缓存控制器23执行步骤S707以将内容传输给处理器。如果步骤S731确定了高速缓存没有可用于存储内容的类型为指令的空高速缓存行,那么高速缓存控制器23必须在执行步骤S737之前执行步骤S733以及步骤S735。在步骤S733中,高速缓存控制器23清除至少一个存储了类型为指令的内容的高速缓存行。也就是说,高速缓存控制器23清除多个高速缓存行中其中之一的内容域,,其中,该已清除的内容域的高速缓存行对应的信息域存储了指示类型为指令的一比特,然后也清除对应信息域。在清除之后,高速缓存控制器23执行步骤S735以更新数据计数器。特别地,在步骤S735,高速缓存控制器23通过将存储在指令计数器中存储的数值加一而更新数据计数器。

请注意,步骤S723以及步骤S733中,高速缓存控制器23可以清除多于一个高速缓存行。例如,步骤S725以及步骤S735可以根据已清除的高速缓存行的数量而更新。

更具体地,在其它实施例中,上述方法可以选择其它方式以实现步骤S721、S725、S729、S731、S735以及S739。例如,数据计数器以及指令计数器开始时可以设定为零。在此情况下,步骤S721中,高速缓存控制器23确定数据计数器存储的数值是否已经到达最大值,然后在步骤S731确定指令计数器存储的数值是否已经到达最大值,在步骤S725中,将数据计数器存储的数值减一,在步骤S735中将指令计数器存储的数值减一,然后在步骤S729中,将数据计数器存储的数值加一,在步骤S739中,将指令计数器存储的数值加一。

除了上述步骤,基于对上述实施例的描述,所属领域普通技术人员可以理解上述方法的流程图的执行的运作以及功能,因此此处不再赘述。

根据上述步骤,本发明的方法中,指令和数据分开存储在混合式高速缓存中。当用于存储指令的高速缓存行已满时,高速缓存控制器23仅仅清除用于存储指令的高速缓存行,而不清除用于存储数据的高速缓存行。相似地,当用于存储数据的高速缓存行已满时,高速缓存控制器23仅仅清除用于存储数据的高速缓存行,而不清除用于存储指令的高速缓存行。经由此操作,混合式高速缓存的命中比率就可以增大,而处理时间也可以减少。

任何本领域技术人员,在不脱离本发明之精神和范围内,当可做些许的更动与润饰,因此本发明之保护范围当视所附之权利要求所界定者为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号