首页> 中国专利> 系统控制器、同地址请求队列预防方法及其信息处理设备

系统控制器、同地址请求队列预防方法及其信息处理设备

摘要

本发明提供一种系统控制器、同地址请求队列预防方法及其信息处理设备。在包括CPU发出请求队列的该系统控制器中,由输入请求保存部保存不同于高速缓存替换请求的最新请求,其中所述CPU发出请求队列具有这样一种电路,其处理没有被输入至所述CPU发出请求队列的具有同一地址的多个请求。因此,即使用于高速缓存替换请求的发出请求的地址与CPU发出请求队列保存的请求的地址匹配,用于高速缓存替换请求的发出请求不被重发,但是在用于高速缓存替换请求的发出请求的地址与输入请求保存部保存的全部地址不匹配时,用于高速缓存替换请求的发出请求在CPU发出请求队列中排队。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-03

    未缴年费专利权终止 IPC(主分类):G06F12/12 授权公告日:20090624 终止日期:20180517 申请日:20070517

    专利权的终止

  • 2009-06-24

    授权

    授权

  • 2008-04-16

    实质审查的生效

    实质审查的生效

  • 2008-02-20

    公开

    公开

说明书

技术领域

本发明涉及在多处理器系统中使用系统控制器来控制由CPU发出请求的技术。更具体地,本发明涉及系统控制器、同地址请求队列预防方法和这样一种信息处理设备,该设备在队列中保存由CPU发出的请求时能够防止具有同一地址的请求被保存。

背景技术

近年来,随着在各领域中广泛使用信息处理设备,需要多处理器结构中的芯片组具有更强的处理功能。

图12为示出多处理器系统结构的实例的示图。图12中所示的多处理器系统包括四个系统板100a至100d和地址交叉板200。由局部总线300a至300d、全局总线301、局部通知路径302a至302d、全局通知路径303等来连接各系统板100a至100d和地址交叉板200。

系统板100a包括系统控制器110和四个CPU 120a至120d。由CPU总线130a将CPU 120a和CPU 120b连接至系统控制器110。由CPU总线130c将CPU 120c和CPU 120d连接至系统控制器110。系统板100b至100d具有与系统板100a相同的结构。

CPU 120a至120d分别包括高速缓冲存储器121a至121d和高速缓存标记122a至122d。在本发明一实施例中,假设通过4路集联系统来控制高速缓冲存储器121。

系统控制器110包括:探测标记111a至111d、CPU发出请求队列112a和112c、局部仲裁器113、请求处理部114和请求执行部115。

探测标记111a至111d分别对应于高速缓存标记122a至122d。CPU发出请求队列112保存由CPU 120发出的对CPU总线130的请求。具体地,CPU发出请求队列112a保存由CPU 120a和120b发出的请求,而CPU发出请求队列112c保存由CPU 120c和120d发出的请求。局部仲裁器113输出由CPU发出请求队列112保存的请求至局部总线300a。

请求处理部114对从全局总线301发送的请求执行处理。请求处理部114包括:资源管理部116和请求执行激活部117。资源管理部116检查用于处理请求的资源。请求执行激活部117启动请求执行部115,并更新探测标记111。

地址交叉板200包括全局仲裁器210和执行力确定电路220。全局仲裁器210经由全局总线301将从局部总线300a至300d输入的请求输出至所有系统板100a至100d。执行力确定电路220基于从局部通知路径302a至302d输入的通知确定执行力,即请求执行的适当性,并经由全局通知路径303通知系统板100a至100d确定结果和执行该请求的必要信息。

通过参照给定实例来说明图12中示出的系统的操作,在该实例中,CPU120执行读取请求。CPU 120a执行对地址1000的读取。为了高速缓存一致性而使用MESI协议。MESI协议是一种高速缓存一致性协议,并通过将多个线分成M状态(修改状态:Modified)、E状态(排它状态:Exclusive)、S状态(共享状态:Shared)和I状态(无效状态:Invalid)来控制高速缓存的每个线。

为了检查地址1000的数据是否存在于CPU 120a的高速缓冲存储器121a中,首先CPU 120a对高速缓存标记122a进行搜索。当确定结果为在高速缓冲存储器121a中不存在有效数据时,CPU 120a发出读取请求至CPU总线130a。

经由CPU发出请求队列112a、局部仲裁器113和局部总线300a将CPU120a发出的请求输入至全局仲裁器210。经由全局总线301同时向所有系统板100a至100d通知被输入至全局仲裁器210的请求。

在系统板100a中,从全局总线301向请求处理部114输入请求。请求处理部114读取各探测标记111,并使用资源管理部116检查是否存在用以处理请求的资源等。经由局部通知路径302a向执行力确定电路220发送检查结果。

执行力确定电路220基于来自所有局部通知路径302a至302d的通知确定请求的执行力(执行适当性(propriety ofexecution))。执行力确定电路220经由全局通知路径303向请求执行激活部117通知确定结果和请求执行的必要信息。请求执行激活部117基于对请求的执行适当性的确定结果和请求执行的必要信息更新探测标记111,并启动请求执行部115。

例如,当可保证资源并且通过探测标记111进行的所有搜索结果表明I(无效)时,请求执行激活部117在探测标记111a中登记地址1000。登记的状态取决于发出请求。此时,请求执行部115对存储器的地址1000执行读取,并将通过读取所获得的数据发送至CPU 120a。CPU 120a更新高速缓存标记122a。

例如,当可保证资源并且作为通过探测标记111进行的搜索结果、地址1000在探测标记111c中登记的状态为M(修改)时,请求执行激活部117在探测标记111a中登记地址1000。登记的状态取决于发出请求。请求执行激活部117将探测标记111c的地址1000的状态改变为S(共享)或I(无效)。在这种情况下将地址1000的状态进行改变的状态取决于发出请求。此时,请求执行部115指示CPU 120c输出地址1000的M(修改)数据,并将输出的数据发送至CPU 120a。CPU 120a更新高速缓存标记122a。CPU 120c更新高速缓存标记122c。

图13A和图13B为说明对具有同一地址请求队列进行传统预防处理的实例的示图。CPU发出请求队列112对具有同一地址的请求队列执行预防处理,以防止同时保存具有同一地址的请求。以下参照图13A和图13B来说明在CPU发出请求队列112中对具有同一地址的请求队列进行传统预防处理的实例。

发出请求为CPU 120发出的并且经由CPU总线130发送至CPU发出请求队列112的请求。该发出请求包括一组信号,例如命令(CMD)、高速缓存线地址(ADR0、ADR1、ADR2)和CPUID。将高速缓存线地址分成三个块ADR0、ADR1、ADR2,并进行处理。在图13A和图13B中示出的一组发出请求的信号为在该请求中包括的所有信号中用于说明的必要信号。

保存请求为CPU发出请求队列112的每个条目所保存的请求。保存请求包括一组信号,例如有效信号(V)和高速缓存线地址(ADR0、ADR1、ADR2)。将高速缓存线地址分成三个块ADR0、ADR1、ADR2,并进行处理。在图13A和图13B中示出的一组保存请求的信号为在该请求中包括的所有信号中用于说明的必要信号。

CPU发出请求队列112的每个条目包括比较器141和AND电路142。将每个条目的AND电路142连接至OR电路143。

在图13A所示的方法中,在CPU发出请求队列112的每个条目中,比较器141将发出请求的高速缓存线地址(ADR0、ADR1、ADR2)与保存请求的高速缓存线地址(ADR0、ADR1、ADR2)进行比较。当两个高速缓存线地址彼此匹配时,比较器141发送有效信号“1”。当两个高速缓存线地址彼此不匹配时,比较器141发送无效信号“0”。当从比较器141发送的信号为有效的并且保存请求的有效信号(V)为有效时,AND电路142发送有效信号。否则,AND电路142发送无效信号。

当从CPU发出请求队列112的任一条目的AND电路142发送的信号为有效时,OR电路143确定待重发的发出请求。换句话说,当与发出请求的高速缓存线地址(ADR0、ADR1、ADR2)一致的高速缓存线地址存在于CPU发出请求队列112的保存请求中时,不执行CPU发出请求队列112中的发出请求的队列。

在图13A中所示的方法中,逻辑上能够预防完全同一地址的队列。然而,由于近年来在系统中需要扩展地址空间和增加CPU发出请求队列112条目的个数,所以需要大量硬件来检查高速缓存线地址(ADR0、ADR1、ADR2)的匹配性。此外,由于逻辑级的数量也在增加,所以难以实现系统速度的增加。因此,在近年来的系统中,如图13B所示,可采用仅检查部分高速缓存线地址(ADR0)的匹配性的方法。

在图13B中所示的方法中,在CPU发出请求队列112的每个条目中,比较器141将发出请求的部分高速缓存线地址(ADR0)与保存请求的部分高速缓存线地址(ADR0)进行比较。当这两个部分高速缓存线地址彼此匹配时,比较器141发送有效信号。当这两个部分高速缓存线地址彼此不匹配时,比较器141发送无效信号。当从比较器141发送的信号为有效的并且保存请求的有效信号(V)为有效时,AND电路142发送有效信号。否则,AND电路142发送无效信号。

当从CPU发出请求队列112的任一条目的AND电路142发送的信号为有效时,OR电路143确定待重发的发出请求。换句话说,当其部分线地址与发出请求的部分高速缓存线地址(ADR0)匹配的高速缓存线地址存在于CPU发出请求队列112的保存请求中时,不执行CPU发出请求队列112中的发送请求的队列。

作为已经记载了关于多处理器系统的技术的现有技术文献,例如有专利文献1(国际专利申请No.2002-522827的围家公开)。在现有技术文献中,描述这样一种关于多处理器计算机系统的技术,即在该系统中,各节点连接成环形。然而,使用现有技术文献中描述的技术却不能够解决随后描述的问题。

当在CPU发出请求队列112中存在多个同一地址时,对高速缓存替换请求的处理比较复杂。例如,当由同一CPU 120按顺序发出读取请求A、高速缓存替换请求B和读取请求B,并且高速缓存替换请求B和读取请求B同时存在于队列中时,有必要控制高速缓存替换请求B和读取请求B,以防止发生重复。在对读取请求执行没有按照顺序的处理时,有必要进行复杂的逻辑处理,以执行这种控制。

当如图13A所示使用对所有地址进行比较的比较器,以防止在CPU发出请求队列112中插入同一地址时,硬件数量增加。硬件数量的增加使得难以在高频时钟启动硬件。

在如图13B所示的方法中,通常,高速缓存索引用于部分高速缓存线地址(ADR0)。然而,在如图13B所示的方法中,由于高速缓存替换请求与作为高速缓存替换请求的父请求的读取请求(即,需要执行高速缓存代替的读取请求)具有同一索引,所以高速缓存替换请求被重发。

发明内容

本发明的目的在于提供一种技术,其能够防止高速缓存替换请求被错误地重发,同时在系统控制器中对具有同一地址的请求队列的预防处理中减少硬件数量。

本发明的特征在于通过比较地址的预定部分来防止在系统控制器中具有同一地址的请求队列,当由CPU发出的请求为高速缓存替换请求时,确定该高速缓存替换请求是否为从属于读取请求的高速缓存替换请求,其中该读取请求被发出并且在紧邻该高速缓存替换请求之前被排队。如果该高速缓存替换请求是这种高速缓存替换请求,则不重发该高速缓存替换请求。

具体地,本发明提供一种在多处理器系统中用以控制由CPU发出的请求的系统控制器。该系统控制器包括:CPU发出请求队列,具有用以保存由CPU发出的请求的多个条目;输入请求保存部,用以保存由CPU发出的、并且由所述CPU发出请求队列保存的、不同于高速缓存替换请求的最新请求;和重发确定部,用以确定由CPU发出的新请求是否被重发。所述CPU发出请求队列在任一条目保存有这样的地址时输出用以表示有必要重发的信号,其中该地址的预定部分与由CPU发出的新请求地址的预定部分匹配。在所述新请求为高速缓存替换请求,并且所述新请求地址的预定部分与由所述输入请求保存部保存的请求地址的预定部分匹配,而所述新请求地址的其它部分与由所述输入请求保存部保存的请求地址的预定部分不匹配时,所述输入请求保存部输出用以控制重发的信号。在所述CPU发出请求队列输出用以表示有必要重发的信号并且所述输入请求保存部没有输出用以控制重发的信号时,所述重发确定部确定所述新请求被重发。否则所述重发确定部在确定所述新请求不被重发的情况下使得所述CPU发出请求队列保存所述新请求。

这使得能够防止高速缓存替换请求被错误地重发,同时在系统控制器中对具有同一地址的请求队列进行预防处理中减少硬件数量。

在该系统控制器中,对每个CPU配置一个输入请求保存部,输入请求保存部保存由与其对应的CPU发出的并且由所述CPU发出请求队列保存的不同于高速缓存替换请求的最新请求。在所述CPU发出请求队列输出用以表示有必要重发的信号并且与发出所述新请求的CPU对应的所述输入请求保存部没有输出用以控制重发的信号时,所述重发确定部确定所述新请求被重发。否则所述重发确定部在确定所述新请求不被重发的情况下使得所述CPU发出请求队列保存所述新请求。

这使得能够防止高速缓存替换请求被错误地重发,同时即使在该系统控制器中对具有同一地址的请求队列进行预防处理中混和了来自多个CPU的请求时也能够减少硬件数量。

在该系统控制器中,在由所述CPU发出请求队列保存的与所述输入请求保存部保存的请求相对应的请求被释放时,所述输入请求保存部释放由所述输入请求保存部保存的请求。这使得能够防止由于初始应被重发的而没有被重发的请求导致的故障。

在该系统控制器中,所述输入请求保存部具有定时器功能,并且当所述输入请求保存部重新保存所述请求之后经过指定时间时,所述输入请求保存部释放由所述输入请求保存部保存的请求。这使得能够使用更少数量的硬件实现防止由于初始应被重发而没有被重发的请求导致的故障。

根据本发明,在对具有同一地址的请求队列的预防处理中,通过在CPU发出请求队列的所有条目中提供一种仅对地址的预定部分进行比较的电路而非用以比较所有地址的电路,能够简单地控制重发并防止硬件数量的增加。此外,能够防止高速缓存替换请求被错误地重发。因此,提高了系统性能。

附图说明

图1为示出根据本发明实施例的原理结构的实例的示图;

图2为说明根据本实施例对具有同一地址的请求队列进行预防处理的实例的示图;

图3为说明更新输入请求的实例的图表;

图4A和图4B为说明通过配置输入请求保存部所获得的效果的示图;

图5为说明根据本实施例对具有同一地址的请求队列进行预防处理的实例的示图;

图6为说明更新输入请求的实例的图表;

图7A和图7B为说明通过为每个CPU配置输入请求保存部所获得的效果的示图;

图8为说明配置一具有释放输入请求功能的输入请求保存部的实例的示图;

图9A和图9B为说明通过配置输入请求保存部获得的效果的示图,其中所述输入请求保存部具有释放输入请求的功能;

图10为说明配置输入请求保存部的实例的示图,其中该输入请求保存部具有使用定时器来释放输入请求的功能;

图11为说明通过配置输入请求保存部获得的效果的示图,其中所述输入请求保存部具有释放输入请求的功能;

图12为示出多处理器系统结构的实例的示图;和

图13A和图13B为说明传统的对具有同一地址请求队列进行预防处理的实例的示图。

具体实施方式

以下,基于在上述图12中的多处理器系统的结构来说明本发明实施例。

图1为示出根据本发明实施例的原理结构的实例的示图。在下面的说明中,发出请求为CPU 120发出的、并经由CPU总线130发送至CPU发出请求队列112的请求。保存请求为由CPU发出请求队列112的每个条目保存的请求。输入请求为由输入请求保存部150保存的请求。

CPU发出请求队列112包括用于每个条目的同一地址确定部140。在每个条目中的同一地址确定部140将发出请求地址的预定部分和条目的保存请求地址的预定部分进行比较,并确定这两个预定部分是否彼此匹配。

输入请求保存部150包括请求/地址确定部151。输入请求保存部150保存由CPU发出请求队列112保存的、不同于高速缓存替换请求的最新请求作为输入请求。请求/地址确定部151确定例如发出请求是否为高速缓存替换请求、确定发出请求地址的预定部分和输入请求地址的预定部分是否彼此匹配、以及确定与发出请求地址的预定部分不同的部分和与输入请求地址的预定部分不同的部分是否彼此匹配。

基于CPU发出请求队列112的每个条目的同一地址确定部140的确定结果和输入请求保存部150的请求/地址确定部151的确定结果,重发确定部170确定发出请求是否被重发。

图2为说明根据本实施例对具有同一地址的请求队列进行预防处理的实例(1)的示图。在图2中,发出请求包括一组信号,例如命令(CMD)、地址(ADR0、ADR1、ADR2)和CPUID。保存请求包括一组信号,例如有效信号(V)和地址(ADR0、ADR1、ADR2)。输入请求包括一组信号,例如有效信号(V)和地址(ADR0、ADR1)。在图2中示出的各请求的一组信号为在请求中包括的所有信号中用于说明的必要信号。

在图2的实例中,由16位表示地址。ADR2为从地址位15至地址位12,ADR1为从地址位11至地址位8,ADR0为从地址位7至地址位4。ADR0为高速缓存索引地址。

CPU发出请求队列112的每个条目包括比较器141和AND电路142。将每个条目的AND电路142连接至OR电路143。将OR电路143连接至AND电路171。

在CPU发出请求队列112的每个条目中,比较器141将发出请求地址的预定部分(ADR0)和保存请求地址的预定部分(ADR0)进行比较。被比较的地址的预定部分为索引地址(ADR0)。当两个预定部分彼此匹配时,比较器141发送有效信号“1”。当两个预定部分彼此不匹配时,比较器141发送无效信号“0”。

当从比较器141发送的信号为有效的并且保存请求的有效信号(V)为有效时,AND电路142发送有效信号。否则,AND电路142发送无效信号。

当从CPU发出请求队列112的任一条目的AND电路142发送的信号为有效时,OR电路143发送有效信号至AND电路171。

输入请求保存部150包括:比较器152、比较器153、高速缓存替换请求确定电路154和NAND电路155。将NAND电路155连接至AND电路171。

比较器152将发出请求地址的预定部分(ADR0)和输入请求地址的预定部分(ADR0)进行比较。当两个预定部分彼此匹配时,比较器152发送有效信号。当两个预定部分彼此不匹配时,比较器152发送无效信号。

比较器153将与发出请求地址的预定部分(ADR0)不同的部分(ADR1)和与输入请求地址的预定部分(ADR0)不同的部分(ADR1)进行比较。ADR1为从地址位11至地址位8的4位。然而,ADR1不限于该4位,可以为地址中其它的位组。当上述两个部分彼此不匹配时,比较器153发送有效信号。当上述两个部分彼此匹配时,比较器153发送无效信号。

高速缓存替换请求确定电路154根据发出请求的命令(CMD)确定该发出请求是否为高速缓存替换请求。当该发出请求是高速缓存替换请求时,高速缓存替换请求确定电路154发送有效信号。当该发出请求不是高速缓存替换请求时,高速缓存替换请求确定电路154发送无效信号。

当从比较器152发送的信号有效,从比较器153发送的信号有效,从高速缓存替换请求确定电路154发送的信号有效,并且输入请求的有效信号(V)为有效时,NAND电路155发送无效信号。否则,NAND电路155发送有效信号。

当从OR电路143发送的信号有效,并且从NAND电路155发送的信号有效时,AND电路171确定该发出请求被重发。换句话说,对于不同于高速缓存替换请求的请求与过去一样,对于同一索引,在CPU发出请求队列112中仅对不同于高速缓存替换请求的一个请求进行排队。即使高速缓存替换请求的索引地址(ADR0)与CPU发出请求队列112中排队的最新请求的索引地址(ADR0)匹配,在高速缓存替换请求地址的另一预定部分(ADR1)与该最新请求地址的另一预定部分(ADR1)不匹配时也允许在CPU发出请求队列112中对高速缓存替换请求进行排队。

图3为说明更新输入请求的实例的图表。由输入请求保存部150保存的输入请求的更新取决于发出请求的命令(CMD)的类型和是否对发出请求进行重发。

如图3所示,当发出请求不是高速缓存替换请求,并且不发生重发(否)时,使用该发出请求对输入请求保存部150保存的输入请求进行更新。当发生重发(是)时,即使发出请求不是高速缓存替换请求,或者当发出请求是高速缓存替换请求时,输入请求保存部150保存的输入请求的有效信号(V)为无效状态(无效)。

如图3所示,由于将有效信号(V)更新为无效,所以即使在没有使用发出请求对有效信号(V)进行更新时,输入请求仅对输入请求保存部150保存的下一个发出请求是有效的。换句话说,仅允许在这样的高速缓存替换请求的CPU发出请求队列112中进行排队,其中该高速缓存替换请求与紧邻在CPU发出请求队列112中排队的不同于该高速缓存替换请求的请求之后的请求具有相同的索引。

图4A和图4B为说明通过配置输入请求保存部所获得的效果的示图。参照图4A和图4B来说明如图2中所示的对具有同一地址的请求队列进行预防处理的效果。在图4A和图4B中,时间从左向右流逝。“读取”表示读取请求,“代替”表示高速缓存替换请求。“CPUa”表示CPU 120a。地址由16位表示。该16位的地址位7至地址位4表示索引地址。

图4A示出当没有配置输入请求保存部150时对具有同一地址的请求队列进行预防处理的实例。首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。

随后,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,由CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(对地址1000的读取请求)。所述发出的高速缓存替换请求被重发,并且没有在CPU发出请求队列112中排队。

这样,当没有配置输入请求保存部150时,在父读取请求之后的高速缓存替换请求被重发。

图4B示出当配置输入请求保存部150时对具有同一地址的请求队列进行预防处理的实例。首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。由输入请求保存部150保存所述发出的读取请求。

随后,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,CPU发出请求队列112已经保存了具有同一索引的请求(对地址1000的读取请求)。然而,所述发出的请求与输入请求保存部150保存的读取请求具有相同的索引并且在不同于该索引的部分中具有不同的地址,并且为高速缓存替换请求。因此,在CPU发出请求队列112中对该请求进行排队。由于所述发出的请求为高速缓存替换请求,所以由输入请求保存部150保存的请求(对地址1000的读取请求)是无效的。

这样,当存在输入请求保存部150时,在父读取请求之后的高速缓存替换请求不被重发,而是在CPU发出请求队列112中排队。

图5为说明根据这个实施例的对具有同一地址的请求队列进行预防处理的实例的示图。图2中所示的实例是对每个CPU总线130准备一个输入请求保存部150的情况。图5中所示的实例是对每个CPU 120准备一个输入请求保存部150的情况。

在图5中,输入请求保存部150a对应于CPU 120a,输入请求保存部150b对应于CPU 120b。换句话说,由输入请求保存部150a保存的输入请求为由CPU 120a发出的请求,由输入请求保存部150b保存的输入请求为由CPU120b发出的请求。如图12所示,将CPU 120a和CPU 120b连接至同一CPU总线130a。

图5中所示的输入请求保存部150a和150b的内部结构均与图2中所示的输入请求保存部150的内部结构相同。图5中所示的输入请求保存部150a和150b中每一个的操作也与图2中所示的输入请求保存部150的操作相同。因此,省略对它们的结构和操作的说明。此外,图5中所示的CPU发出请求队列112和OR电路143的操作与图2中所示的CPU发出请求队列112和OR电路143的操作相同。因此,省略对它们的操作的说明。

当发出请求的CPUID为CPU 120a的CPUID时,选择器156将从输入请求保存部150a的NAND电路155发送的信号发送至AND电路171。当发出请求的CPUID为CPU 120b的CPUID时,选择器156将从输入请求保存部150b的NAND电路155发送的信号发送至AND电路171。

当从OR电路143发送的信号有效,并且从选择器156发送的信号有效时,AND电路171确定该发出请求被重发。即使该高速缓存替换请求的索引地址(ADR0)与由同一CPU 120发出的、并在CPU发出请求队列112中排队的最新请求的索引地址(ADR0)匹配,在高速缓存替换请求地址的另一预定部分(ADR1)与该最新请求地址的另一预定部分(ADR1)不匹配时也允许在CPU发出请求队列112中对高速缓存替换请求进行排队。

图6为说明输入请求更新的实例的图表。由输入请求保存部150a和150b中的每一个保存的输入请求的更新取决于由与各输入请求保存部对应的CPU 120a和120b发出的请求的命令(CMD)类型和是否对发出请求进行重发。

如图6所示,当发出请求不是高速缓存替换请求,并且不发生重发(否)时,使用该发出请求来更新与CPU 120(其为发出请求源)对应的输入请求保存部150保存的输入请求。当发生重发(是)时,即使发出请求不是高速缓存替换请求,或者当发出请求是高速缓存替换请求时,与发出请求源的CPU 120对应的输入请求保存部150保存的输入请求的有效信号(V)均为无效状态(无效)。

如图6所示,仅在输入请求源的CPU 120与发出请求源的CPU 120相同时,才更新输入请求。换句话说,仅允许对这样的高速缓存替换请求在CPU发出请求队列112中进行排队,其中该高速缓存替换请求与紧邻该高速缓存替换请求之前的、由同一CPU 120发出的不同于该高速缓存替换请求的、并在CPU发出请求队列112中排队的请求具有相同的索引。

图7A和图7B为说明通过为每个CPU配置输入请求保存部所获得的效果的示图。参照图7A和图7B来说明如图5中所示的对具有同一地址的请求队列进行预防处理的效果。在图7A和图7B中,时间从左向右流逝。“读取”表示读取请求,“代替”表示高速缓存替换请求。“CPUa”表示CPU 120a,“CPUb”表示CPU 120b。“输入请求保存部‘a’”表示输入请求保存部150a,“输入请求保存部‘b’”表示输入请求保存部150b。地址由16位表示。该16位的地址位7至地址位4表示索引地址。

图7A示出当为每个CPU总线130配置输入请求保存部150时对具有同一地址的请求队列进行预防处理的实例。首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与发出的读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。由输入请求保存部150a保存由CPU 120a发出的对地址1000的读取请求。

随后,由CPU 120b发出对地址2010的读取请求。由于CPU发出请求队列112还没有保存与所发出的读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。将输入请求保存部150保存的由CPU 120a发出的对地址1000的读取请求更新为由CPU 120b发出的对地址2010的读取请求。

随后,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(对地址1000的读取请求)。所述发出的请求不具有与输入请求保存部150保存的读取请求的索引相同的索引。因此,所述发出的高速缓存替换请求被重发,并且没有在CPU发出请求队列112中排队。由于所述发出的请求为高速缓存替换请求,所以由输入请求保存部150保存的请求(由CPU 120b发出的对地址2010的读取请求)为无效的。

接下来,由CPU 120b发出从属于对地址2010的读取请求的对地址2110的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(对地址2010的读取请求)。输入请求保存部150没有保存有效请求。因此,所述发出的高速缓存替换请求被重发,并且没有在CPU发出请求队列112中排队。

这样,当为每个CPU总线130配置输入请求保存部150时,在某一CPU120a发出的父读取请求与在该父读取请求之后的高速缓存替换请求之间插入由同一CPU总线130的另一CPU 120b发出的请求。然后,在由CPU 120a发出的父读取请求之后的高速缓存替换请求被重发。

图7B示出当为每个CPU 120配置输入请求保存部150时对具有同一地址的请求队列进行预防处理的实例。首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与发出的读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。由与CPU 120a对应的输入请求保存部150a保存由CPU 120a发出的对地址1000的读取请求。

随后,由CPU 120b发出对地址2010的读取请求。由于CPU发出请求队列112还没有保存与所发出的读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。由与CPU 120b对应的输入请求保存部150b保存由CPU 120b发出的对地址2010的读取请求。

接下来,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(对地址1000的读取请求)。然而,所述发出的请求与对应于CPU120a的输入请求保存部150a保存的读取请求具有相同的索引,并且在不同于该索引的部分中具有不同的地址,并且为高速缓存替换请求。因此,在CPU发出请求队列112中对该请求进行排队。由于所述发出的请求为高速缓存替换请求,所以由输入请求保存部150a保存的请求(对地址1000的读取请求)是无效的。

随后,由CPU 120b发出从属于对地址2010的读取请求的对地址2110的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(对地址2010的读取请求)。然而,所述发出的请求与对应于CPU120b的输入请求保存部150a保存的读取请求具有相同的索引,并且在不同于该索引的部分中具有不同的地址,并且为高速缓存替换请求。因此,在CPU发出请求队列112中对该请求进行排队。由于所述发出的请求为高速缓存替换请求,所以由输入请求保存部150b保存的请求(对地址2010的读取请求)是无效的。

以这种方式,当为每个CPU 120配置输入请求保存部150时,在某一CPU 120a发出的父读取请求与在该父读取请求之后的高速缓存替换请求之间插入由同一CPU总线130的另一CPU 120b发出的请求。即使在这种情况下,在由CPU 120a发出的父读取请求之后的高速缓存替换请求不被重发,而是在CPU发出请求队列112中对其进行排队。

图8为说明配置一具有释放输入请求功能的输入请求保存部的实例的示图。具有参照图8说明的功能,当CPU发出请求队列112的保存请求被释放,并且所述释放的保存请求作为输入请求由输入请求保存部150保存时,输入请求保存部150释放该输入请求。在图8中,发出请求、保存请求和输入请求均包括一组信号,例如有效信号(V)和地址(ADR)。

CPU发出请求队列112的每个条目保存条目号(条目No)。CPU发出请求队列112的每个条目包括比较器144和AND电路145。

在CPU发出请求队列112的每个条目中,比较器144将用以指定释放保存请求的条目的请求队列释放条目号与由本身条目保存的条目号(条目No)进行比较。当两个条目号彼此匹配时,比较器144发送有效信号。当两个条目号彼此不匹配时,比较器144发送无效信号。

当从比较器144发送的信号有效,并且通知释放保存请求的信号的请求队列释放通知有效时,AND电路145使保存请求的有效信号(V)变得无效(无效)。

输入请求保存部150保存CPU发出请求队列112的条目的条目号(条目No),在所述CPU发出请求队列112中保存与输入请求保存部150保存的输入请求对应的保存请求。输入请求保存部150包括比较器157和AND电路158。

比较器157将请求队列释放条目号与由输入请求保存部150保存的条目号(条目No)进行比较,其中请求队列释放条目号用于指定释放保存请求的CPU发出请求队列112的条目。当两个条目号彼此匹配时,比较器157发送有效信号。当两个条目号彼此不匹配时,比较器157发送无效信号。

当从比较器157发送的信号有效,并且通知释放保存请求的信号的请求队列释放通知有效时,AND电路158使保存请求的有效信号(V)变得无效(无效)。

图9A和图9B为说明通过配置输入请求保存部获得的效果的示图,其中所述输入请求保存部具有释放输入请求的功能。在图9A和图9B中,时间从左向右流逝。“读取”表示读取请求,“代替”表示高速缓存替换请求。“CPUa”表示CPU 120a,“CPUb”表示CPU 120b。“输入请求保存部‘a’”表示输入请求保存部150a,“输入请求保存部‘b’”表示输入请求保存部150b。地址由16位表示。该16位的地址位7至地址位4表示索引地址。

图9A示出没有配置具有释放输入请求功能的输入请求保存部的实例。首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。由输入请求保存部150a保存由CPU 120a发出的对地址1000的读取请求。

在发出下一个请求之前,由CPU发出请求队列112保存的对地址1000的读取请求被处理,并从CPU发出请求队列112释放。此时,由于CPU 120a还没有发出新请求,所以没有释放输入请求保存部150a的对地址1000的读取请求。

随后,由CPU 120b发出对地址1100的读取请求。由于CPU 120a发出的对地址1000的读取请求已经被释放,并且CPU发出请求队列112没有保存与所述读取请求具有相同索引的请求,所以在CPU发出请求队列112中对所发出的读取请求进行排队。由与CPU 120b对应的输入请求保存部150b保存由CPU 120b发出的对地址1100的读取请求。

接下来,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(由CPU 120b发出的对地址1100的读取请求)。然而,所述发出的请求与对应于CPU120a的输入请求保存部150a保存的读取请求具有相同的索引,并且在不同于该索引的部分中具有不同的地址,并且为高速缓存替换请求。因此,在CPU发出请求队列112中对该请求进行排队。由于所述发出的请求为高速缓存替换请求,所以由输入请求保存部150a保存的请求(对地址1000的读取请求)是无效的。

然而,由CPU 120a发出的对地址1100的高速缓存替换请求与CPU 120b发出的对地址1100的读取请求具有完全相同的地址,其中所述读取请求已经由CPU发出请求队列112保存。最初,与CPU发出请求队列112保存的请求具有完全相同地址的请求应被重发,而没有在CPU发出请求队列112中排队。

这样,当没有配置具有释放输入请求功能的输入请求保存部时,在这样的系统中,在CPU发出请求队列112中对应该在开始被重发的请求进行排队,其中在所述系统中从发出父读取请求到发出高速缓存替换请求的时间间隔可能长于处理读取请求的最短时间。

图9B示出配置具有释放输入请求功能的输入请求保存部的实例。首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。由输入请求保存部150a保存由CPU 120a发出的对地址1000的读取请求。

在发出下一个请求之前,由CPU发出请求队列112保存的对地址1000的读取请求被处理,并从CPU发出请求队列112释放。此时,根据请求队列释放通知,在CPU发出请求队列112中被释放的对地址1000的读取请求在输入请求保存部150a中也被释放。

随后,由CPU 120b发出对地址1100的读取请求。由于CPU 120a发出的对地址1000的读取请求已经被释放,并且CPU发出请求队列112没有保存与所述读取请求具有相同索引的请求,所以在CPU发出请求队列112中对所发出的读取请求进行排队。由与CPU 120b对应的输入请求保存部150b保存由CPU 120b发出的对地址1100的读取请求。

接下来,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(由CPU 120b发出的对于地址1100的读取请求)。与CPU 120a对应的输入请求保存部150没有保存有效请求。因此,所述发出的高速缓存替换请求被重发,并且没有在CPU发出请求队列112中排队。

这样,当配置具有释放输入请求功能的输入请求保存部时,当输入请求保存部150保存有在CPU发出请求队列112中释放的请求时,由输入请求保存部150保存的该请求也被释放。因此,开始应被重发的请求被重发,并且没有在CPU发出请求队列112中排队。

图10为说明配置输入请求保存部的实例的示图,其中该输入请求保存部具有通过使用定时器来释放输入请求的功能。参照图10说明使用定时器来释放输入请求保存部150的输入请求的功能。在图10中,发出请求、保存请求和输入请求均包括一组信号,例如有效信号(V)和地址(ADR)。

由于CPU发出请求队列112中的保存请求的释放与图8所示的情况相同,所以省略对保存请求的释放的说明。图10中所示的使用定时器对输入请求的释放不同于图8所示的根据CPU发出请求队列112的保存请求的释放对输入请求的释放。使用在CPU发出请求队列112中对保存请求的释放作为时机,在输入请求保存部150中不释放输入请求。

输入请求保存部150包括计数器159和指定值确定电路160。在图10的实例中,由计数器159和指定值确定电路160实现定时器功能。

计数器159在输入请求保存部150中登记新请求的同时开始计数。尽管输入请求的有效信号(V)有效,例如计数器159也在每一时钟增加计数值。当计数器159的计数值到达预先指定的值N时,指定值确定电路160根据释放通知使输入请求的有效信号(V)变得无效(无效)。将所述值N设置为小于读取请求的最短处理时间。

图11为说明通过配置输入请求保存部获得的效果的示图,其中所述输入请求保存部具有释放输入请求的功能。在图11中,时间从左向右流逝。“读取”表示读取请求,“代替”表示高速缓存替换请求。“CPUa”表示CPU 120a,“CPUb”表示CPU 120b。“输入请求保存部‘a’”表示输入请求保存部150a,“输入请求保存部‘b’”表示输入请求保存部150b。地址由16位表示。该16位的地址位7至地址位4表示索引地址。

首先,由CPU 120a发出对地址1000的读取请求。由于CPU发出请求队列112还没有保存与发出的读取请求具有相同索引的请求,所以在CPU发出请求队列112中对发出的读取请求进行排队。输入请求保存部150a保存由CPU 120a发出的对地址1000的读取请求。此时,在输入请求保存部150a中启动定时器。

当定时器经过指定时间时,即当在输入请求保存部150a中,计数器159的计数值达到N时,释放由输入请求保存部150a保存的对地址1000的读取请求。之后,在发出下一个请求之前,由CPU发出请求队列112保存的对地址1000的读取请求被处理,并从CPU发出请求队列112释放。

随后,由CPU 120b发出对地址1100的读取请求。由于CPU 120a发出的对地址1000的读取请求已经被释放,并且CPU发出请求队列112没有保存与所述读取请求具有相同索引的请求,所以在CPU发出请求队列112中对读取请求进行排队。由与CPU 120b对应的输入请求保存部150b保存由CPU 120b发出的对地址1100的读取请求。

接下来,由CPU 120a发出从属于对地址1000的读取请求的对地址1100的高速缓存替换请求。此时,CPU发出请求队列112已经保存了与发出的高速缓存替换请求具有相同索引的请求(由CPU 120b发出的对地址1100的读取请求)。与CPU 120a对应的输入请求保存部150a没有保存有效请求。因此,所述发出的高速缓存替换请求被重发,而不在CPU发出请求队列112中排队。

这样,当配置具有使用定时器来释放输入请求功能的输入请求保存部时,在CPU发出请求队列112中对请求进行处理之前,能够释放由输入请求保存部150保存的请求。因此,与参照图9A和图9B说明的情况相同,在使用CPU发出请求队列112的保存请求的释放作为时机来释放输入请求的情况下,初始应该被重发的请求被重发,而不在CPU发出请求队列112中排队。如果将计数器159的间隔设置得更大,则能够实现防止在系统控制器中具有同一地址的请求队列,同时与使用CPU发出请求队列112的保存请求的释放作为时机来释放输入请求的情况相比,具有更少的硬件数量。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号