高速缓冲存储器、存储器系统及其控制方法

xiaoxiao2020-7-22  14

专利名称:高速缓冲存储器、存储器系统及其控制方法
技术领域
本发明涉及一种高速缓冲存储器、存储器系统及其控制方法,特别是,根据来自处理器的访问而存放主存储器中存放的数据的一部分的高速缓冲存储器以及包含该高速缓冲存储器的存储器系统。
背景技术
在近年的存储器系统中,例如,将由SRAM(静态随机存取存储器,Matic Random Access Memory)等构成的小容量且高速的高速缓冲存储器配置在微处理器的内部或者其附近。在这样的存储器系统中,通过将微处理器从主存储器读出的数据的一部分以及写入主存储器的数据的一部分存储在高速缓冲存储器(高速缓存)中,而使微处理器的存储器访问高速化。图14是表示以往的存储器系统100的结构的图。图14所示的存储器系统100具有CPU101、高速缓冲存储器102、存储控制器103、作为主存储器的存储器104、DMAC (直接存储器存取控制器,Direct Memory AccessController) 105。在从CPUlOl向存储器104发生了访问的情况下,高速缓冲存储器102判定自身是否已经存放有该访问目的地的地址的数据,在存放有的情况下(以下称为命中(hit)),将该存放的数据向CPU101输出(读取时),或者,更新该数据(写入时)。另外,在没有存放该访问目的地的地址的数据的情况下(以下称为高速缓存未命中(cache miss)),高速缓冲存储器102存放从CPU101输出的该地址以及数据(写入时),或者,在从存储器104读出该地址的数据后予以存放,并且将读出的数据向CPU101输出(读取时)。另外,在高速缓存未命中的情况下,高速缓冲存储器102判断在该高速缓冲存储器102内是否有存放新的地址以及数据的空着的区域,在没有空着的区域的情况下,进行行更换(替换(i^place))以及根据需要回写(清除(purge))等的处理。在这里,在以往的存储器系统100中,在写入时临时在高速缓冲存储器102中存放写入数据。由此,产生存放在存储器104中的数据和存放在高速缓冲存储器102中的数据不同的状态。即,在该状态下,当DMAC105访问了存储器104时,产生不保持CPU101和 DMAC105中的数据的一贯性(一致性(coherency))的问题。为了保持该一致性,CPU101在向高速缓冲存储器102进行了写入后,需要指示高速缓冲存储器102进行回写(清除)。但是,CPU101在该清除处理结束之前,不能进行接下来的处理。即,存在CPU101的处理性能降低的问题。另外,在具有二级高速缓存的存储器系统中,由于需要对一级高速缓存以及二级高速缓存进行该清除处理,所以,CPU101的处理性能的降低进一步扩大。对应于该问题,已知有将高速缓冲存储器102由CPU101和DMAC105共用的方法 (例如,参照专利文献1)。以下,对共享高速缓冲存储器102的以往的存储器系统110进行说明。图15是表示共享高速缓冲存储器102的以往的存储器系统110的结构的图。
图15所示的存储器系统110除了具有图14所示的结构之外,还具有总线106。由此,在CPUlOl和DMAC105使用存放于存储器104的相同的数据的情况下,DMAC105能够经由总线106与CPUlOl同样地访问高速缓冲存储器102。图16是表示与来自DMAC105的访问相对应的高速缓冲存储器102的动作的概略的图。如图16所示,在读取时并且命中的情况下,高速缓冲存储器102将命中的数据向 DMAC105输出。另外,在写入时且命中的情况下,高速缓冲存储器102更新所命中的数据。另外,在读取时且高速缓存未命中的情况下,高速缓冲存储器102在从存储器104 读出数据后予以存放,并且,将读出的数据向DMAC105输出,或者,DMAC105从存储器104读出数据。另外,在写入时且高速缓存未命中的情况下,高速缓冲存储器102存放从DMAC105 输出的地址以及数据,或者,DMAC105向存储器104写入数据。通过以上的结构,即使CPUlOl更新了高速缓冲存储器102的数据,由于DMAC105 读出更新后的高速缓冲存储器102的数据,所以,CPUlOl不需要进行上述的清除处理。由此,存储器系统110在保持一致性的同时,能够抑制CPUlOl的处理性能的低下。现有技术文献专利文献专利文献1 日本特开2002-278834号公报发明概要发明所要解决的课题但是,图15所示的存储器系统110由于需要具有总线106,所以,与图14所示的存储器系统100相比,存在面积增加的问题。这个问题在存储器系统110内包含多个DMAC105 等主设备的情况下显得尤为突出。另外,在作为DMAC105和存储器104之间的数据传送中使用的协议而使用多个总线协议的情况下,存在DMAC105和高速缓冲存储器102的接口复杂化的问题。

发明内容
因此,本发明的目的在于提供一种存储器系统以及高速缓冲存储器,该存储器系统以及高速缓冲存储器在抑制为了保持一致性而产生的CPU等的处理器的处理性能降低的问题的同时,能够抑制面积的增加以及高速缓冲存储器的接口的复杂化。用于解决课题的手段为了达成上述目的,本发明的高速缓冲存储器根据来自处理器的访问,存放主存储器的数据的一部分,具有第1端口,来自所述处理器的指令输入到该第1端口;第2端口,来自所述处理器以外的主设备的指令输入到该第2端口 ;命中判定部,在有指令输入到所述第1端口以及所述第2端口时,该命中判定部判定该高速缓冲存储器是否存放有与该指令所指定的地址对应的数据;以及第1控制部,在所述指令输入到所述第2端口并且由所述命中判定部判定为存放有的情况下,该第1控制部进行用于保持与所述指令所指定的地址对应并由该高速缓冲存储器存放着的数据、和存放于所述主存储器的数据之间的一致性的处理,并且,将所述输入的指令作为从所述主设备输出的指令而向所述主存储器输出。根据该结构,在来自DMAC等的主设备的访问命中了的情况下,本发明的高速缓冲存储器不将该命中的数据向主设备输出或者将该命中的数据更新,而是在进行了用于保持该命中的数据和存放于主存储器的数据之间的一致性的处理之后,向主存储器输出指令。由此,即使在高速缓冲存储器的数据被CPU等处理器更新了的情况下,在从主设备向主存储器访问时,通过高速缓冲存储器进行用于保持一致性的处理。由此,在之后根据由高速缓冲存储器输出的指令而发生的向主存储器的访问中,保持高速缓冲存储器和主存储器的一致性。由此,CPU等处理器,不需要在进行写入处理后指示高速缓冲存储器进行清除处理等用于保持一致性的处理。这样,本发明的高速缓冲存储器由于能够削减清除处理, 所以,能够抑制为了保持一致性而产生的处理器的处理性能降低。另外,在本发明的高速缓冲存储器中,即使在来自主设备的访问命中了的情况下, 也不需要在该高速缓冲存储器和主设备之间进行读取数据或者写入数据的传送。由此,不需要在该高速缓冲存储器和主设备之间形成用于传送读取数据或者写入数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,由于读取数据或者写入数据不经由高速缓冲存储器,所以,不需要增加用于主设备和高速缓冲存储器之间数据传送的新的控制。即,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,还可以为,所述第1控制部具有第1读取控制部,在将读取指令作为所述指令输入到所述第2端口,且由所述命中判定部判定为存放有,并且与所述读取指令所指定的地址对应并由该高速缓冲存储器存放着的数据为脏数据的情况下,所述第1读取控制部将该数据回写到所述主存储器中,在该回写结束之后,将所述输入的读取指令作为从所述主设备输出的读取指令而向所述主存储器输出。根据该结构,在来自主设备的读取访问命中了的情况下,本发明的高速缓冲存储器不将该高速缓冲存储器存放的数据向主设备输出,而是在将该数据回写到主存储器中, 向主存储器输出读取指令。由此,高速缓冲存储器的数据通过经由处理器的更新,即使在高速缓冲存储器的数据和主存储器的数据不一致的情况下,主设备也读出正确的数据(更新后的数据)。即,处理器不需要在进行写入处理后指示高速缓冲存储器进行清除处理。这样, 本发明的高速缓冲存储器由于能够削减清除处理,所以能够抑制为了保持一致性而产生的处理器的处理性能降低。另外,在本发明的高速缓冲存储器中,即使在来自于主设备的读取访问命中了的情况下,也不需要将该高速缓冲存储器存放的数据向主设备输出。由此,不需要在该高速缓冲存储器和主设备之间形成用于传送读取数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,由于读取数据不经由高速缓冲存储器,所以不需要增加用于主设备和高速缓冲存储器之间数据传送的新的控制。即,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,也可以为,在所述读取指令输入到所述第2端口并且由所述命中判定部判定为没有存放的情况下,所述第1读取控制部将所述输入的读取指令作为从所述主设备输出的读取指令而向所述主存储器输出。根据该结构,即使在来自主设备的读取访问发生了高速缓存未命中的情况下,高速缓冲存储器也不需要将从主存储器读出的数据向主设备输出。由此,在该高速缓冲存储器和主设备之间不需要形成用于传送读取数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,由于读取数据不经由高速缓冲存储器,所以不需要增加用于主设备和高速缓冲存储器之间数据传送的新的控制。即,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,本发明的存储器系统包括所述高速缓冲存储器、所述处理器、所述主设备、 以及所述主存储器,所述主存储器将存放于由所述第1读取控制部输出的所述读取指令所指定的地址的数据,不经由所述高速缓冲存储器地向所述主设备输出。根据该结构,读取数据不经由高速缓冲存储器,而从主存储器直接向主设备输出。 由此,不需要在高速缓冲存储器和主设备之间形成用于传送读取数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,也可以为,所述高速缓冲存储器还具有第2读取控制部,在所述读取指令输入到所述第1端口并且由所述命中判定部判定为存放有的情况下,所述第2读取控制部将与所述读取指令所指定的地址对应并由该高速缓冲存储器存放着的数据向所述处理器输出;在所述读取指令输入到所述第1端口并且由所述命中判定部判定为没有存放的情况下,所述第2读取控制部从所述主存储器读出所述读取指令所指定的地址的数据,将读出的数据存放到该高速缓冲存储器,并且向所述处理器输出。根据该结构,本发明的高速缓冲存储器对于来自处理器的访问,能够作为通常的高速缓冲存储器发挥作用。 另外,也可以为,所述存储器系统还具有存储控制器,该存储控制器对从所述高速缓冲存储器向所述主存储器的访问和从所述主设备向所述主存储器的访问进行仲裁,所述存储控制器具有第3端口,由所述第1读取控制部输出的读取指令输入到该第3端口,并且该第3端口根据该读取指令将从所述主存储器输出的读取数据向所述主设备输出;以及第4端口,由所述第2读取控制部输出的读取指令输入到该第4端口,并且该第4端口根据该读取指令将从所述主存储器输出的读取数据向所述高速缓冲存储器输出,所述存储控制器对于输入到所述第3端口的读取指令和输入到所述第4端口的读取指令,根据该指令是输入到所述第3端口以及所述第4端口中的哪一方的读取指令而进行仲裁。根据该结构,高速缓冲存储器根据来自主设备的读取访问而输出的读取指令,输入到存储控制器的第3端口,高速缓冲存储器根据来自处理器的读取访问而输出的读取指令,输入到存储控制器的第4端口。由此,即使在由主设备输出的读取指令经由高速缓冲存储器而输入到存储控制器的情况下,存储控制器通过对第3端口分配与主设备相对的带宽、对第4端口分配与处理器相对的带宽这样的容易的控制,能够实现对主设备以及处理器的带宽的分配。另外,也可以为,所述存储器系统还具有选择部,该选择部选择由所述第1读取控制部输出的读取指令和由所述主设备输出的读取指令中的一方,将所选择的读取指令向所述主存储器输出,所述主存储器将存放于由所述选择部输出的所述读取指令所指定的地址的数据,不经由所述高速缓冲存储器地向所述主设备输出。根据该结构,在处理器和主设备不使用主存储器的同一数据的情况下,主设备能够直接访问主存储器。
另外,也可以为,在本发明的高速缓冲存储器中,所述第1控制部具有第1写入控制部,在将写入指令作为所述指令输入到所述第2端口并且通过所述命中判定部判定为存放有的情况下,所述第1写入控制部使与所述写入指令所指定的地址对应并由该高速缓冲存储器存放着的数据无效化,并且,将所述输入的写入指令作为从所述主设备输出的写入指令而向所述主存储器输出。根据该结构,在来自主设备的访问中发生了写入命中的情况下,本发明的高速缓冲存储器使该高速缓冲存储器存放着的命中的数据无效化,并且向主存储器输出写入指令。由此,通过基于主设备的写入,能够防止高速缓冲存储器的数据和主存储器的数据变得不一致的情况。即,为了保持高速缓冲存储器和主存储器的一致性,处理器以及主设备不需要追加特殊的处理(清除处理等)。这样,本发明能够抑制为了保持一致性而产生的处理器的处理性能降低。另外,在本发明的高速缓冲存储器中,即使在来自主设备的写入访问发生了命中的情况下,该高速缓冲存储器也不存放写入数据。由此,不需要在该高速缓冲存储器和主设备之间形成用于传送写入数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,由于写入数据不经由高速缓冲存储器,所以,不需要增加在主设备和高速缓冲存储器之间数据传送中使用的新的控制。即,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,也可以为,在所述写入指令输入到所述第2端口并且由所述命中判定部判定为没有存放的情况下,所述第1写入控制部将所述输入的写入指令作为从所述主设备输出的写入指令而向所述主存储器输出。根据该结构,即使在来自主设备的写入访问发生了高速缓存未命中的情况下,高速缓冲存储器也不存放写入数据。由此,不需要用于在该高速缓冲存储器和主设备之间传送写入数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,由于写入数据不经由高速缓冲存储器,所以不需要增加主设备和高速缓冲存储器之间数据传送中使用的新的控制。即,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,本发明的存储器系统包含所述高速缓冲存储器、所述处理器、所述主设备、 所述主存储器,所述主设备将写入数据不经由所述高速缓冲存储器地向所述主存储器输出,所述主存储器将由所述主设备输出的写入数据存放于由所述第1写入控制部输出的所述写入指令所指定的地址。根据该结构,写入数据不经由高速缓冲存储器,而从主设备直接向主存储器输出。 由此,不需要形成用于在高速缓冲存储器和主设备之间传送写入数据的总线。由此,能够削减本发明的包含高速缓冲存储器的存储器系统的面积。另外,本发明能够抑制主设备和高速缓冲存储器的接口的复杂化。另外,也可以为,所述高速缓冲存储器还具有第2写入控制部,在所述写入指令以及写入数据输入到所述第1端口并且由所述命中判定部判定为存放有的情况下,所述第2 写入控制部将与所述写入指令所指定的地址对应并由该高速缓冲存储器存放着的数据更新为所述写入数据,所述第2写入控制部还将用于将该更新后的数据回写到所述主存储器中的写入指令以及写入数据向所述主存储器输出。根据该结构,本发明的高速缓冲存储器对于来自处理器的访问,能过作为通常的高速缓冲存储器而发挥作用。另外,也可以为,所述存储器系统还具有存储控制器,该存储控制器对从所述高速缓冲存储器向所述主存储器的访问和从所述主设备向所述主存储器的访问进行仲裁,所述存储控制器具有第3端口,由所述第1写入控制部输出的写入指令和由所述主设备输出的写入数据输入到该第3端口;以及第4端口,由所述第2写入控制部输出的写入指令以及写入数据输入到该第4端口,所述存储控制器对于输入到所述第3端口的写入指令和输入到所述第4端口的写入指令,根据该指令是输入到所述第3端口以及所述第4端口中的哪一方的写入指令而进行仲裁。根据该结构,高速缓冲存储器根据来自主设备的写入访问而输出的写入指令,输入到存储控制器的第3端口,高速缓冲存储器根据来自处理器的写入访问而输出的写入指令,输入到存储控制器的第4端口。由此,即使在由主设备输出的写入指令经由高速缓冲存储器而输入到存储控制器的情况下,存储控制器通过对第3端口分配与主设备相对的带宽、对第4端口分配与处理器相对的带宽这样的容易的控制,也能够实现对主设备以及处理器的带宽的分配。另外,也可以为,所述存储器系统还具有选择部,该选择部选择由所述第1读取控制部输出的写入指令和由所述主设备输出的写入指令中的一方,将所选择的写入指令向所述主存储器输出,所述主存储器将由所述主设备输出的写入数据存放于由所述选择部输出的所述写入指令所指定的地址。根据该结构,在处理器和主设备不使用主存储器的同一数据的情况下,主设备能够直接访问主存储器。另外,也可以为,所述处理器具有一级高速缓存,所述高速缓冲存储器为二级高速缓存。根据该结构,本发明的高速缓冲存储器适用于二级高速缓存。在这里,二级高速缓存对存储器系统整体所产生的影响比一级高速缓存低。具体来说,在一级高速缓存命中的情况下的访问,对于处理器来说是最高速的访问。由此,当从主设备对一级高速缓存进行访问时,对影响最高速化的、从处理器向一级高速缓存的访问产生恶劣影响。由此,通过将本发明的高速缓冲存储器用于二级高速缓存,与将本发明的高速缓冲存储器用于一级高速缓存的情况相比,能够减小对处理器的高速化的恶劣影响。另外,也可以为,所述存储器系统包括含有所述处理器的多个处理器,所述多个处理器分别具有一级高速缓存,所述高速缓冲存储器由所述多个处理器共用。根据该结构,本发明的高速缓冲存储器适用于由多个处理器共用的二级高速缓存。在这里,在二级高速缓存由多个处理器共用的情况下,为了保持多个一级高速缓存和二级高速缓存的一致性,多个处理器需要基于窥探(snoop)方式等算法进行控制。由此,除了该控制,当加上用于保持二级高速缓存和主存储器之间的一致性的控制时,控制变得更加复杂而难以实现。与之相对,通过将本发明的高速缓冲存储器用于二级高速缓存,能够削减用于保持二级高速缓存和主存储器之间的一致性的处理,所以,能够避免上述控制的复杂化。
另外,本发明不仅能够作为这样的高速缓冲存储器以及存储器系统实现,还能够将高速缓冲存储器以及存储器系统中含有的特征单元步骤化,以高速缓冲存储器的控制方法以及存储器系统的控制方法来实现,或者作为将这样的特征步骤在计算机中执行的程序实现。而且,这样的程序能够经由⑶-ROM等的记录媒体以及因特网等传送媒体流通,这是不言而喻的。另外,本发明还可以作为具有这样的高速缓冲存储器以及存储器系统的功能的一部分或者全部的半导体集成电路实现。发明效果如上所述,本发明能够提供一种存储器系统以及高速缓冲存储器,该存储器系统以及高速缓冲存储器抑制为了保持一致性而产生的CPU的处理性能低下,并能够抑制面积的增加以及高速缓冲存储器的接口的复杂化。


图1是表示本发明的实施方式的存储器系统的结构的框图。图2是表示本发明的实施方式的高速缓冲存储器的结构的框图。图3是表示本发明的实施方式的高速缓存存放部以及命中判定部的结构的图。图4是表示本发明的实施方式的路的结构的图。图5是表示本发明的实施方式的存储器系统的连接关系的图。图6是表示本发明的实施方式的高速缓冲存储器的与来自DMAC的访问相对应的动作的概略的图。图7是表示本发明的实施方式的存储器系统的读取命中时的动作的流程的图。图8是表示本发明的实施方式的存储器系统的读取未命中时的动作的流程的图。图9是表示本发明的实施方式的存储器系统的写入命中时的动作的流程的图。图10是表示本发明的实施方式的存储器系统的写入未命中时的动作的流程的图。图11是表示本发明的实施方式的高速缓冲存储器的读取时的动作的流程的流程图。图12是表示本发明的实施方式的高速缓冲存储器的写入时的动作的流程的流程图。图13是表示本发明的实施方式的存储器系统的变形例的结构的框图。图14是表示以往的存储器系统的结构的框图。图15是表示以往的存储器系统的结构的框图。图16是表示以往的高速缓冲存储器的与来自DMAC的访问相对应的动作的概略的图。
具体实施例方式以下,参照附图对本发明的高速缓冲存储器的实施方式进行详细的说明。(实施方式1)本发明的实施方式的高速缓冲存储器在来自DMAC等的主设备的读取访问命中了的情况下,在将命中了的数据回写到主存储器中之后,向主存储器输出读取指令。另外,在来自主设备的写入访问命中了的情况下,使命中了的数据无效化,并且将写入指令输出到主存储器。由此,即使CPU等处理器以及主设备不进行清除处理,也能够保持高速缓冲存储器和主存储器之间的一致性。由此,本发明的实施方式的高速缓冲存储器能够抑制为了保持高速缓冲存储器和主存储器之间的一致性而产生的处理器的处理性能降低。另外,读取数据以及写入数据不经由高速缓冲存储器,而在主设备和主存储器之间直接传送。由此,没有必要形成用于在高速缓冲存储器和主设备之间传送读取数据以及写入数据的的总线,所以,能够减小存储器系统的面积,并且能够抑制主设备和高速缓冲存储器的接口的复杂化。首先,对包含本发明的实施方式的高速缓冲存储器的存储器系统的结构进行说明。图1是表示本发明的实施方式的存储器系统的结构的图。图1所示的存储器系统200含有2个CPU201、L2 ( 二级)高速缓存202、存储控制器203、存储器204,2个DMAC205、总线控制部206。另外,多个CPU201分别具有Ll ( 一级) 高速缓存207。Ll高速缓存207以及L2高速缓存202与存储器204相比,是高速且容量小的高速缓冲存储器。例如,Ll高速缓存207以及L2高速缓存202是SRAM。另外,Ll高速缓存 207与L2高速缓存202相比靠近CPU201地配置即可,也可以配置在CPU201外。该Ll高速缓存207以及L2高速缓存202存储CPU201从存储器204读出的数据的一部分以及写入存储器204的数据的一部分,如此进行所谓的高速缓存动作。在这里,高速缓存动作是指如下动作,即,在从CPU201向存储器204发生了访问的情况下,L2高速缓存202判定自身是否已经存放有该访问目的地的地址的数据,在存放有的情况下(命中), 将该存放着的数据输出到CPU201(读取时),或者,更新该数据(写入时)。另外,L2高速缓存202在没有存放该访问目的的地址的数据的情况下(高速缓存未命中),存放从CPU201 输出的该地址以及数据(写入时),或者,在从存储器204读出该地址的数据后予以存放,并且将读出的数据输出到CPU201 (读取时)。另外,在高速缓存未命中的情况下,判断在该Ll高速缓存207或者L2高速缓存 202内是否存在存放新的地址以及数据的空着的区域,在不存在空着的区域的情况下,Ll 高速缓存207以及L2高速缓存202进行行更换(替换)以及根据需要进行回写(清除)
等处理。另外,L2高速缓存202由2个CPU201通用。存储控制器203是存储器204的接口,对从L2高速缓存向存储器204的访问以及从多个DMAC205的每一个向存储器204的访问进行仲裁。存储器204是SDRAM等大容量的主存储器。DMAC205是进行外部的设备(外部装置以及外部存储器等)和存储器204之间的数据传送的主设备。总线控制部206将由DMAC205输出的指令输出到L2高速缓存202或者存储控制器203。另外,总线控制部206将由L2高速缓存202输出的指令输出到存储控制器203。另外,总线控制部206将由DMAC205输出的写入数据不经由L2高速缓存202地输出到存储控制器203,将由存储控制器203输出的读取数据不经由L2高速缓存202地输出到DMAC205。在这里,所谓指令,包含指定数据写入或者数据读出的信息和表示访问目的的地址的信息。另外,所谓写入数据是指将要写入存储器204的数据,所谓读取数据,是指从存储器204读出的数据或者存放于L2高速缓存202的数据。另外,将指示数据写入的指令称为写入指令,将指示数据读出的指令称为读取指令。另外,写入指令以及读取指令共同简单地称作“指令”。另外,图1所示的各结构要素典型地以集成电路即LSI来实现。它们可以分别单片化,也可以包含一部分或者全部地单片化。另外,各结构要素也可以以多个芯片来实现。以下,对将本发明的高速缓冲存储器用于L2高速缓存202的例子进行说明。图2是表示L2高速缓存202的功能结构的框图。如图2所示,L2高速缓存202具有控制部38、高速缓存存放部70、命中判定部71、 第1端口 211、第2端口 212、第3端口 213、第4端口 214。第1端口 211与CPU201连接,被输入从CPU201输出的指令以及写入数据,并向 CPU201输出读取数据。第2端口 212与存储控制器203连接,被输入由存储控制器203输出的读取数据, 并向存储控制器203输出指令以及写入数据。换言之,第2端口 212由存储器204被输入读取数据,并向存储器204输出指令以及写入数据。第3端口 213与总线控制部206连接,被输入由总线控制部206输出的指令。换言之,第3端口 213被输入由DMAC205输出的指令。第4端口 214与总线控制部206连接,向总线控制部206输出指令。换言之,第4 端口 214向存储器204输出指令。高速缓存存放部70存放受到CPU201的访问、并将要存放于存储器204的数据。命中判定部71在由CPU201以及DMAC205输入了指令时,判断高速缓存存放部70 是存放有该指令所指定的地址的数据(命中)还是没有存放(高速缓存未命中)。控制部38进行L2高速缓存202整体的控制。具体来说,对存储CPU201从存储器 204读出的数据的一部分以及写入存储器204的数据的一部分的、所谓的高速缓存动作进行控制。另外,控制部38根据是来自CPU201的访问还是来自DMAC205的访问,进行不同的处理。该控制部38具有CPU访问控制部60和DMAC访问控制部63,上述CPU访问控制部 60控制与来自CPU201的访问相对的L2高速缓存202的动作,上述DMAC访问控制部63控制与来自DMAC205的访问相对的L2高速缓存202的动作。CPU访问控制部60具有CPU读取控制部61和CPU写入控制部62,上述CPU读取控制部61控制与来自CPU201的读取访问相对的L2高速缓存202的动作,上述CPU写入控制部62控制与来自CPU201的写入访问相对的L2高速缓存202的动作。在向存储器204的读取指令从CPU201被输入第1端口 211、并且通过命中判定部 70判定为命中的情况下,CPU读取控制部61将命中了的数据从第1端口 211向CPU201输出。另外,在向存储器204的读取指令从CPU201被输入第1端口 211、并且通过命中判定部 70判定为高速缓存未命中的情况下,CPU读取控制部61将输入的读取指令所指定的地址的数据经由第2端口 212从存储器204读出,将该读出的数据存放到高速缓存存放部70中, 并且将该读出的数据从第1端口 211向CPU201输出。在向存储器204的写入指令从CPU201被输入第1端口 211、并且通过命中判定部 71判定为命中的情况下,CPU写入控制部62将命中了的数据更新为从CPU201输入的写入数据。另外,在向存储器204的写入指令从CPU201被输入第1端口 211、并且通过命中判定部71判定为高速缓存未命中的情况下,CPU写入控制部62在高速缓存存放部70中新存放写入数据。另外,CPU写入控制部62将如下的写入指令以及写入数据从第2端口 212向存储器204输出,上述写入指令以及写入数据用于将高速缓存存放部70存放的数据写入存储器204。S卩,CPU写入控制部62根据来自CPU201的指示或者规定的定时,将更新了的写入数据写回到存储器204中(回写)。在指令从DMAC205被输入第3端口 213、并且通过命中判定部71判定为命中的情况下,DMAC访问控制部63进行用于保持命中了的数据和存放于存储器204中的数据的一致性的处理,并且,将被输入第3端口 213的指令作为从DMAC205输出的指令,从第4端口 214向存储器204输出。另外,在指令从DMAC205被输入第3端口 213、并且通过命中判定部71判定为高速缓存未命中的情况下,DMAC访问控制部63将输入到第3端口 213的指令作为从DMAC205输出的指令,从第4端口 214向存储器204输出。该DMAC访问控制部63具有DMAC读取控制部64和DMAC写入控制部65,上述DMAC 读取控制部64控制与来自DMAC205的读取访问相对的L2高速缓存202的动作,上述DMAC 写入控制部65控制与来自DMAC205的写入访问相对的L2高速缓存202的动作。在向存储器204的读取指令从DMAC205被输入第3端口 213、并且通过命中判定部 70判定为命中的情况下,DMAC读取控制部64将命中了的数据经由第2端口 212回写到存储器204中,在该回写结束后,将输入到第3端口 213的读取指令作为从DMAC205输出的读取指令,从第4端口 214向存储器204输出。另外,在向存储器204的读取指令从DMAC205被输入第3端口 213、并且通过命中判定部71判定为高速缓存未命中的情况下,DMAC读取控制部64将输入到第3端口 213的读取指令作为从DMAC205输出的读取指令,从第4端口 214向存储器204输出。在向存储器204的写入指令从DMAC205被输入第3端口 213、并且通过命中判定部 71判定为命中的情况下,DMAC写入控制部65使命中了的数据无效化,并且将输入到第3端口 213的写入指令作为从DMAC205输出的写入指令,从第4端口 214向存储器204输出。另外,在向存储器204的写入指令从DMAC205被输入第3端口 213、并且通过命中判定部71判定为高速缓存未命中的情况下,DMAC写入控制部65将输入到第3端口 213的写入指令作为从DMAC205输出的写入指令,从第4端口 214向存储器204输出。图3是表示高速缓存存放部70以及命中判定部71的结构例的框图。另外,作为 L2高速缓存202的具体例子,对将本发明用于四路组关联方式的高速缓冲存储器的情况下的结构进行说明。如图3所示,高速缓存存放部70具有解码器30、4个路(Way)31a 31d。 另外,4个路31a 31d在没有特别区分的情况下,记作路31。另外,命中判定部71具有4个比较器32a 32d、4个“与”电路33a 33d、“或” 电路34。另外,L2高速缓存202还具有地址寄存器20、存储器I/F21、选择器35以及36、 多路分配器37。
地址寄存器20是保持向存储器204的访问地址的寄存器。该访问地址为32比特。 如图3所示,访问地址从最上位比特开始依次包含21比特的标签地址51、4比特的组索引 (SI)52、5比特的字索引(WI) 53。在这里,标签地址51是指被映射在路31上的存储器204中的区域(其大小为组数X块)。该区域的大小为通过相比标签地址51位于下位的地址比特(A10 AO)确定的大小,即业字节,也可以为1个路31的大小。组索引52是指跨过路31a 31b的多个组的1个。该组数由于组索引52为4比特所以为16组。标签地址51以及组索引52确定的高速缓存条目为替换单位,在存放于高速缓冲存储器的情况下,称作行数据或者行。行数据的大小是通过相比组索引52位于下位的地址比特(A6 AO)确定的大小,即1 字节。设1个字为4字节,则1个行数据为32个字。字索引(WI)53是指构成行数据的多个字中的1个字。另外,地址寄存器20中的最下位2比特(Al、AO)在字访问时被忽略。存储器I/F21是用于从L2高速缓存202访问存储器204的接口。具体来说,存储器I/F21进行从L2高速缓存202向存储器204的数据的回写以及从存储器204向L2高速缓存202的数据的加载等。解码器30对组索引52的4比特进行解码,选择跨过4个路31a 31d的16个组中的1个。4个路31a 31d具有相同的结构,各路31具有业字节的容量。图4是表示路31的结构的图。如图4所示,各路31具有16个高速缓存条目40。 各高速缓存条目40具有21比特的标签41、有效标志42、脏标志43、1观字节的行数据44。标签41是存储器204上的地址的一部分,是21比特的标签地址51的拷贝。行数据44是由标签地址51以及组索引52指定的块中的1 字节数据的拷贝。有效标志42表示该高速缓存条目40的数据是否有效。例如,在数据有效的情况下,有效标志42为“1”,在数据无效的情况下,有效标志42为“0”。另外,将使有效标志42 成为“0”的情况称作使数据无效化。脏标志43表示在该高速缓存条目40中是否有来自CPU201的写入,即,行数据44 是否为被更新了的状态。换言之,虽然在该高速缓存条目40中存在被超高速缓冲存储的行数据44,但是,由于来自CPU201的写入使该行数据44与存储器204中的数据不同,所以,需要将该行数据44回写到存储器204中,该脏标志43即表示是否有这种需要。例如,在行数据44被更新的情况下,脏标志43为“1”,在行数据44没有被更新的情况下,脏标志43为 “0”。另外,将使脏标志43成为“1”的情况称作设立脏标志。另外,将脏标志43为“1”的情况称作该数据为脏数据。比较器32a比较地址寄存器20中的标签地址51和由组索引52选择的组中含有的4个标签41中的路31a的标签41是否一致。对于比较器32b 32c,除了与路31b 31d对应以外都相同。“与”电路33a比较有效标志42和比较器32a的比较结果是否一致。设该比较结果为ho。在比较结果ho为“1”的情况下,意味着地址寄存器20中的标签地址51以及组索引52所对应的行数据44存在,即在路31a中命中。另外,在比较结果h0为“0”的情况下,意味着高速缓存未命中。对于“与”电路33b 33d,除了与路31b 31d对应以外,都相同。即,其比较结果hi h3意味着在路31b 31d中是命中还是未命中。“或”电路34取比较结果h0 h3的“或”。设该“或”的结果为hit。hit表示在高速缓冲存储器中是否命中。选择器35选择被选择的组的路31a 31d的行数据44中的、命中了的路31的行数据44。选择器36在由选择器35所选择的32个字的行数据44中,选择以字索引53表示的1个字。在将数据写入高速缓存条目40时,多路分配器37将写入的数据输出到路31a 31d中的1个。该写入的数据可以以字为单位。图5是表示总线控制部206的结构以及连接关系的图。另外,为了说明的简单化, 以下,以CPU201为1个的情况为例进行说明。如图5所示,总线控制部206具有2个第1端口 221、2个第2端口 222、第3端口 223、第4端口 224、仲裁部225、2个选择部226。第1端口 221、第2端口 222以及选择部2 按照每个DMAC205设置。第1端口 221连接于对应的DMAC205,被输入从对应的DMAC205输出的指令以及写入数据,向对应的 DMAC205输出读取数据。第2端口 222与存储控制器203连接,被输入由存储控制器203输出的读取数据, 向存储控制器203输出指令以及写入数据。第3端口 223与L2高速缓存202的第3端口 213连接,向L2高速缓存202输出指令。第4端口 2M与L2高速缓存202的第4端口 214连接,被输入由L2高速缓存202 输出的指令。仲裁部225,对被输入到多个第1端口 221的指令进行仲裁,将仲裁了的指令向第 3端口 223输出。即,在有指令输入到多个第1端口 221中的某一个的情况下,仲裁部225 选择该输入了的指令,将所选择的指令向第3端口 223输出。另外,在有指令同时输入多个第1端口 221的情况下,仲裁部225根据预先确定的优先度,选择任意一个指令,将选择了的指令向第3端口 223输出。选择部2 选择被输入到对应的第1端口 221的指令以及被输入到第4端口的指令中的一方,将所选择的指令向对应的第2端口 222输出。S卩,选择部2 选择由DMAC读取控制部64输出的指令和由DMAC205输出的指令中的一方,将选择了的指令向存储器204 输出。具体来说,选择部2 在通常模式时,选择被输入到第4端口 2M的指令,在旁路模式时,选择被输入到第1端口 221的指令。另外,以下,如果没有特别的记载,对通常模式进行说明。在这里,所谓通常模式,是DMAC205经由L2高速缓存202访问存储器204的模式。 另外,所谓旁路模式,是DMAC205不经由L2高速缓存202直接访问存储器204的模式。另外,CPU201和DMAC205,在使用存储器204的相同地址的数据的情况下选择通常模式,在DMAC205和CPU201不使用相同地址的数据的情况下,即 ,在不进行特别的控制也保持一致性的情况下,选择旁路模式。另外,通常模式和旁路模式的切换通过CPU201等进行。
另外,在通常模式下,在被输入到第4端口 2M的指令为L2高速缓存202根据从对应的DMAC205输出的指令而输出的指令的情况下,选择部2 将输入到第4端口 2 的指令向第2端口 222输出,在被输入到第4端口 2M的指令为L2高速缓存202根据从不对应的其他的DMAC205输出的指令而输出的指令的情况下,选择部2 不将输入到第4端口 224的指令向第2端口 222输出。具体来说,在L2高速缓存202输出的指令中,包含有表示该指令是从2个DMAC205 中的哪一个输出的指令的信息,根据该信息,选择部2 决定将输入到第4端口 2M的指令是否向第2端口 222输出。另外,被输入到第1端口 221的写入数据向对应的第2端口 222直接输出,被输入到第2端口 222的读取数据向对应的第1端口 221直接输出。另外,如图5所示,存储控制器203具有第1端口 231、2个第2端口 232。第1端口 231根据L2高速缓存202,2个第2端口 232分别与2个DMAC205 —对一地对应。第1端口 231被输入由CPU读取控制部61输出的读取指令和由CPU写入控制部 62输出的写入指令以及写入数据。另外,第1端口 231将从存储器204输出的读取数据向 L2高速缓存202输出。具体来说,第1端口 231与L2高速缓存202的第2端口 212连接。第2端口 232按照每个总线控制部206的第2端口 222设置,与对应的第2端口 222连接。该第2端口 232被输入从总线控制部206的对应的第2端口 222输出的指令以及写入数据,并向对应的第2端口 222输出从存储器204输出的读取数据。具体来说,在通常模式时,向第2端口 232输入由DMAC读取控制部64输出的读取指令和由DMAC写入控制部65输出的写入指令。另外,在旁路模式时,向第2端口 232输入由对应的DMAC205输出的读取指令以及写入指令。另外,在通常模式时以及旁路模式时的双方的情况下,第2端口 232被输入由对应的DMAC205输出的写入数据,并将根据读取指令而从存储器204输出的读取数据向对应的DMAC205输出。在这里,存储控制器203对于输入到第1端口 231以及2个第2端口 232的指令 (读取指令以及写入指令),根据该指令是输入第1端口 231以及2个第2端口 232中的哪一方的指令而进行仲裁。具体来说,对各端口事先分配频带(带宽),存储控制器203以满足该频带的方式进行仲裁。例如,在对第1端口 231以及2个第2端口 232以2 :1:1 来分配频带的情况下,存储控制器203每当将输入到第1端口的指令执行两次时,将输入到各第2端口 232的指令各执行一次。接下来,说明本发明的实施方式的存储器系统200的动作。以下,对从DMAC205向存储器204发生了访问时的动作进行说明。图6是表示从L2高速缓存202发生了访问时的、存储器系统200的动作的概略的图。如图6所示,在读取时且命中(以下称为读取命中)的情况下,L2高速缓存202对命中了的数据进行回写。之后,读出存储器204的数据,向DMAC205送出。另外,在读取时且高速缓存未命中(以下称为读取未命中)的情况下,存储器204 的数据被读出,并向DMAC205送出。另外,在写入时且命中(以下称为写入命中)的情况下,L2高速缓存202使命中了的数据无效化。并且,向存储器204写入写入数据。
另外,在写入时且高速缓存未命中(以下称为写入未命中)的情况下,向存储器 204写入写入数据。以下,对各动作分别进行说明。首先,对读取命中时的动作进行说明。图7是表示存储器系统200的读取命中时的动作的流程的图。如图7所示,首先,DMAC205将读取指令向L2高速缓存202输出(SlOl)。具体来说,DMAC205向总线控制部206的第1端口 221输出读取指令。被输入到总线控制部206 的第1端口 221的读取指令依次经由仲裁部225以及第3端口 223而被输入L2高速缓存 202的第3端口 213。L2高速缓存202的命中判定部71判定高速缓存存放部70是否存放有由输入到第 3端口 213的读取指令所指定的地址的数据。在这里,命中判定部71判定为高速缓存存放部70存放有所指定的地址的数据(命中)(S102)。接下来,L2高速缓存202的DMAC读取控制部64对命中了的数据进行回写(S103)。 即,DMAC读取控制部64将命中了的数据回写到存储器204中。在回写结束后,DMAC读取控制部64向存储器204输出读取指令(S104)。具体来说,DMAC读取控制部64向第4端口 214输出读取指令。另外,该读取指令用于指定与在步骤SlOl中由DMAC205输出的读取指令相同的地址。向第4端口 214输出的读取指令依次经由总线控制部206的第4端口 224、选择部 226以及第2端口 222,向存储控制器203的第2端口 232输入。存储控制器203将输入到第2端口 232的读取指令向存储器204输出。接收了读取指令的存储器204将存放于由该读取指令所指定的地址的读取数据, 不经由L2高速缓存202而直接向DMAC205输出(Sl(^)。具体来说,存储器204将读取数据向存储控制器203输出,存储控制器203将由存储器204输出的读取数据向被输入了读取指令的第2端口 232输出。向该第2端口 232输出的读取数据依次经由总线控制部206的第2端口 222以及第1端口 221而向DMAC205输出。如上所述,在来自DMAC205的访问中发生了读取命中的情况下,本发明的实施方式的存储器系统200在将存放于L2高速缓存202的命中了的数据回写之后,从存储器204 读出数据。由此,L2高速缓存202的数据通过CPU201而被更新,由此,即使在L2高速缓存202 的数据和存储器204的数据不一致的情况下,DMAC205也能够读出正确的数据(更新后的数据)。S卩,CPU201不需要在进行写入处理之后指示L2高速缓存202进行清除(回写)处理。这样,本发明的实施方式的存储器系统200能够通过CPU201削减清除处理,所以,能够抑制为了保持一致性而产生的CPU201的处理性能降低。另外,L2高速缓存202在回写结束之后,向第4端口 214输出读取指令。由此,在回写结束之前,能够防止从存储器204读出数据。接下来,对读取未命中时的动作进行说明。图8是表示存储器系统200的读取未命中时的动作的流程的图。如图8所示,首先,DMAC205将读取指令向L2高速缓存202输出(Slll)。另外,步骤S111、S114以及S115的动作与图7所示的S101、S104以及S105相同,省略详细的说明。L2高速缓存202的命中判定部71判定高速缓存存放部70是否存放有由输入到第3端口 213的读取指令所指定的地址的数据。在这里,命中判定部71判定为高速缓存存放部70没有存放所指定的地址的数据(高速缓存未命中)(S112)。接下来,L2高速缓存202的DMAC读取控制部64向存储器204输出读取指令 (S114)。具体来说,DMAC读取控制部64向第4端口 214输出读取指令。另外,该读取指令用于指定与在步骤SlOl中由DMAC205输出的读取指令相同的地址。向第4端口 214输出的读取指令依次经由总线控制部206的第4端口 224、选择部 226以及第2端口 222,被输入到存储控制器203的第2端口 232。存储控制器203将输入到第2端口 232的读取指令向存储器204输出。接收了读取指令的存储器204将由该读取指令所指定的地址的读取数据向 DMAC205 输出(Si 15)。如上所述,本发明的实施方式的存储器系统200在来自DMAC205的访问中发生了读取未命中的情况下,从存储器204读出数据。这样,本发明的实施方式的L2高速缓存202即使在读取命中的情况下,也不将命中了的数据向DMAC205输出。S卩,在来自DMAC205的读取访问时,在命中以及高速缓存未命中中的任意一种情况下,由存储器204输出的读取数据都不经由L2高速缓存202而直接向 DMAC205输出。由此,在L2高速缓存202和DMAC205之间,不需要形成用于传送读取数据的总线。即,如图5所示,向L2高速缓存202的第3端口 213仅输入读取指令,从第3端口 213仅输出读取指令即可。由此,本发明的存储器系统200与图15所示的存储器系统110 相比,能够削减面积。另外,由于读取数据不经由L2高速缓存,所以,不需要增加用于DMAC205和L2高速缓存202之间数据传送的新的控制。即,本发明能够抑制DMAC205与L2高速缓存202的接口的复杂化。另外,L2高速缓存202向第4端口 214输出的读取指令,被输入存储控制器203 的、与读取指令发行源的DMAC205对应的第2端口 232。由此,存储控制器203将该读取指令作为DMAC205发行的指令予以处理。另一方面,在L2高速缓存202将读取指令向存储控制器203的第1端口 231输出了的情况下,该读取指令作为由L2高速缓存202(CPU201)发行的指令而被处理,并使用分配给L2高速缓存202的频带。这样,将由DMAC读取控制部64输出的指令向DMAC205所对应的第2端口 232输入,由此,即使在从DMAC205输出的指令经由L2高速缓存202向存储器204被送出的情况下,存储控制器203也能够通过对第1端口 231分配与CPU201相对的带宽、对第2端口 232 分配与DMAC205相对的带宽这样的容易的控制,实现与CPU201以及DMAC205相对的带宽的分配。另外,本发明的实施方式的存储器系统200根据DMAC205不经由L2高速缓存202地访问存储器204的情况,能够不改变存储控制器203控制地实现其控制。接下来,对写入命中时的动作进行说明。图9是表示存储器系统200的写入命中时的动作的流程的图。如图9所示,首先,DMAC205将写入指令向L2高速缓存202输出(S121)。具体来说,DMAC205向总线控制部206的第1端口 221输出写入指令。输入到总线控制部206的第 1端口 221的写入指令依次经由仲裁部225以及第3端口 223,而输入到L2高速缓存202 的第3端口 213。
L2高速缓存202的命中判定部71判定高速缓存存放部70是否存放有由输入到第 3端口 213的读取指令所指定的地址的数据。在这里,命中判定部71判定为高速缓存存放部70存放有所指定的地址的数据(命中)(S122)。接下来,L2高速缓存202的DMAC写入控制部65使命中了的数据无效化(S123)。 具体来说,DMAC写入控制部65将命中了的数据的有效标志42设定为“0”。然后,DMAC写入控制部65向存储器204输出写入指令(S124)。具体来说,DMAC写入控制部65向第4端口 214输出写入指令。另外,该写入指令用于指定与在步骤S121中由DMAC205输出的写入指令相同的地址。输入到第4端口 214的写入指令依次经由总线控制部206的第4端口 224、选择部 226以及第2端口 222,被输入到存储控制器203的第2端口 232。另一方面,DMAC205将写入数据不经由L2高速缓存202地向存储器204输出 (S125)。具体来说,DMAC205向总线控制部206的第1端口 221输出写入数据。输入到第1 端口 221的写入数据经由第2端口 222,被输入到存储控制器203的第2端口 232。存储控制器203将输入到第2端口 232的写入指令以及写入数据向存储器204输出ο接收了写入指令以及写入数据的存储器204在该写入指令所指定的地址中存放该写入数据(S126)。如上所述,本发明的实施方式的存储器系统200在来自DMAC205的访问中发生了写入命中的情况下,使存放在L2高速缓存202中的命中了的数据无效化,并且写回到存储器204中。由此,通过基于DMAC205的写入,能够防止L2高速缓存202的数据和存储器204的数据变得不一致。即,为了保持L2高速缓存202和存储器204的一致性,CPU201以及DMAC 不需要追加特别的处理(清除处理)。这样,本发明的实施方式的存储器系统200能够抑制为了保持一致性而产生的CPU201的处理性能降低。接下来,对写入未命中时的动作进行说明。图10是表示存储器系统200的写入未命中时的动作的流程的图。如图10所示,首先,DMAC205将写入指令向L2高速缓存202输出(S131)。另夕卜, 步骤S131以及SIM S136的动作与图9所示的S121以及SlM SU6相同,省略详细的说明。L2高速缓存202的命中判定部71判定高速缓存存放部70是否存放有由输入到第 3端口 213的读取指令所指定的地址的数据。在这里,命中判定部71判定为高速缓存存放部70没有存放所指定的地址的数据(高速缓存未命中)(S132)。接下来,L2高速缓存202的DMAC写入控制部65向存储器204输出写入指令 (S134)。具体来说,DMAC写入控制部65向第4端口 214输出写入指令。另外,该写入指令用于指定与在步骤SlOl中通过DMAC205输出的读取指令相同的地址。输入到第4端口 214的写入指令依次经由总线控制部206的第4端口 224、选择部 226以及第2端口 222,被输入到存储控制器203的第2端口 232。另一方面,DMAC205将写入数据向存储器204输出(S135)。接收写入指令以及写入数据的存储器204在由该写入指令所指定的地址存放该写入数据(S136)。如上所述,本发明的实施方式的存储器系统200在来自DMAC205的访问中发生了写入未命中的情况下,向存储器204写入写入数据。这样,本发明的实施方式的L2高速缓存202即使在写入命中的情况下,也不存放写入数据。即,在来自DMAC205的写入访问时,在命中以及高速缓存未命中的任意一种情况下,由DMAC205输出的写入数据都不经由L2高速缓存202而直接向存储器204输出。由此, 在L2高速缓存202和DMAC205之间,不需要形成用于写入数据的总线。即,如图5所示,向 L2高速缓存202的第3端口 213仅输入写入指令,从第3端口 213仅输出写入指令即可。 由此,本发明的存储器系统200与图15所示的存储器系统110相比,能够削减面积。另外,由于写入数据不经由L2高速缓存,所以,不需要增加用于DMAC205和L2高速缓存202之间数据传送的新的控制。即,本发明能够抑制DMAC205与L2高速缓存202的接口的复杂化。另外,L2高速缓存202向第4端口 214输出的写入指令,被输入存储控制器203 的、与写入指令发行源的DMAC205对应的第2端口 232。由此,存储控制器203将该写入指令作为DMAC205发行的指令处理。即,与读取访问时同样地,存储控制器203通过对第1端口 231分配与CPU201相对的带宽、对第2端口 232分配与DMAC205相对的带宽这样的容易的控制,能够实现对CPU201以及DMAC205的带宽的分配。另外,本发明的实施方式的存储器系统200,根据DMAC205不经由L2高速缓存202地访问存储器204的情况,能够不改变存储控制器203控制地实现其控制。接下来,对L2高速缓存202的动作的流程进行说明。首先,对读取访问时的L2高速缓存202的动作进行说明。图11是表示被输入了读取指令时的、L2高速缓存202的动作的流程的流程图。如图11所示,在由DMAC205发行了读取指令的情况下,即,向第3端口 213输入了读取指令的情况下(S201中DMAC),命中判定部71判定高速缓存存放部70是否存放有该读取指令所指定的地址的数据(S202)。在存放有的情况下(S202中命中),接下来,DMAC读取控制部64判定命中了的数据是否是脏数据,即,命中了的数据是否由CPU20更新了(S2(X3)。具体来说,L2高速缓存 202在命中了的数据的脏标志43为“ 1,,的情况下,判定为脏数据,在该脏标志43为“0”的情况下,判定为不是脏数据。在为脏数据的情况下(S203中的是),DMAC读取控制部64对命中了的数据进行回写(S204)。在回写结束之后,DMAC读取控制部64将读取指令向第4端口 214输出(S205)。另外,在不是脏数据的情况下(S203中的否),或者,在步骤S202中高速缓存未命中的情况下(S202中未命中),DMAC读取控制部64不进行回写(S204),将读取指令向第4 端口 214 输出(S205)。另一方面,在由CPU201发行了读取指令的情况下,即,向第1端口 211输入了读取指令的情况下(S201中CPU),命中判定部71判定高速缓存存放部70是否存放有该读取指令所指定的地址的数据(S206)。在存放有的情况下(S206中命中),CPU读取控制部61将命中了的数据作为读取数据向 CPU201(H 1 端口 211)输出(S208)。另一方面,在没有存放的情况下(S206中未命中),CPU读取控制部61将读取指令所指定的地址的数据从存储器204读出(S207)。具体来说,CPU读取控制部61将指定与由 CPU201输入的读取指令相同的地址的读取指令向第2端口 212输出。输出到第2端口 212 的读取指令经由存储控制器203的第1端口 231向存储器204输出。接收了读取指令的存储器204将存放于该读取指令所指定的地址的数据作为读取数据向存储控制器203输出。 存储控制器203将由存储器204输出的读取数据从第1端口 231向L2高速缓存202的第 2端口 212输出。CPU读取控制部61将输入到第2端口 212的读取数据存放于高速缓存存放部70, 并且将该读取数据从第1端口 211向CPU201输出(S208)。接下来,对写入访问时的L2高速缓存202的动作进行说明。图12是表示输入有写入指令时的、L2高速缓存202的动作的流程的流程图。如图12所示,在由DMAC205发行了写入指令的情况下,S卩,向第3端口 213输入了写入指令的情况下(S211中DMAC),命中判定部71判定高速缓存存放部70是否存放有该读取指令所指定的地址的数据(S212)。在存放有的情况下(S212中命中),接下来,L2高速缓存202使命中了的数据无效化(S213)。具体来说,L2高速缓存202将命中了的数据的有效标志42设定为“0”。接下来,L2高速缓存202将写入指令向第4端口 214输出(S214)。另外,在步骤S212中,在高速缓存未命中的情况下(S212中未命中),L2高速缓存 202不进行无效化(S213),而将写入指令向第4端口 214输出(S214)。另一方面,在由CPU201发行了写入指令的情况下,即,向第1端口 211输入了写入指令以及写入数据的情况下(S211中CPU),命中判定部71判定高速缓存存放部70是否存放有该读取指令所指定的地址的数据(S215)。在存放有的情况下(S215中命中),CPU写入控制部62将命中了的数据更新为输入到第1端口的写入数据(S216)。具体来说,CPU写入控制部62在将命中了的数据变更为写入数据之后,设立脏标志43。另一方面,在没有存放的情况下(S215中未命中),CPU写入控制部62进行行更换。即,CPU写入控制部62选择新的高速缓存条目40,在所选择的高速缓存条目40中存放输入到第1端口的写入数据(S217)。并且,CPU写入控制部62设立该写入数据的脏标志。如上所述,在本发明的实施方式的存储器系统200中,在来自DMAC205的访问中发生了读取命中的情况下,将存放于L2高速缓存202中的命中了的数据回写,之后,从存储器 204读出数据。由此,L2高速缓存202的数据通过CPU201而被更新,由此,即使在L2高速缓存 202的数据和存储器204的数据不一致的情况下,DMAC205也能读出正确的数据(更新后的数据)。S卩,CPU201不需要在进行写入处理后指示L2高速缓存202进行清除(回写)。这样,本发明的实施方式的存储器系统200由于能够通过CPU201削减清除处理,所以能够抑制为了保持一致性而产生的CPU201的处理性能降低。另外,在来自DMAC205的访问中发生了写入命中的情况下,本发明的实施方式的存储器系统200使存放在L2高速缓存202中的命中了的数据无效化,并且向存储器204写入数据。由此,通过基于DMAC205的写入,能够防止L2高速缓存202的数据和存储器204 的数据变得不一致的情况。即,为了保持L2高速缓存202和存储器204的一致性,CPU201 以及DMAC205不需要追加特别的处理(清除处理)。这样,本发明的实施方式的存储器系统 200能够抑制为了保持一致性而产生的CPU201的处理性能降低。另外,在本发明的实施方式的存储器系统200中,L2高速缓存202即使在来自 DMAC205的读取访问命中了的情况下,也不将L2高速缓存202存放的数据向DMAC205输出。另外,L2高速缓存202即使在来自DMAC205的写入访问命中了的情况下,也不存放从 DMAC205输出的写入数据。由此,不需要在L2高速缓存202和DMAC205之间形成用于传送数据的总线。由此, 本发明的存储器系统200与图15所示的存储器系统110相比,能够削减面积。另外,由于读取数据以及写入数据不经由L2高速缓存,所以,不需要增加用于DMAC205和L2高速缓存 202之间数据传送的新的控制。即,本发明能够抑制DMAC205与L2高速缓存202的接口的复杂化。另外,在本发明的实施方式的存储器系统200中,L2高速缓存202向第4端口 214 输出的指令,被输入存储控制器203的、与指令发行源的DMAC205对应的第2端口 232。由此,存储控制器203将该指令作为DMAC205发行的指令予以处理。即,本发明的实施方式的存储器系统200,根据DMAC205不经由L2高速缓存202地访问存储器204的情况,能够不改变存储控制器203控制地实现其控制。另外,能够容易地实现与向存储器204的访问中的各主设备(CPU201以及DMAC2(^)所对应的带宽的分配控制。另外,上述接口的复杂化在DMAC205等外部主设备和存储器204之间使用多个总线协议的情况下问题尤为突出。换言之,本发明的实施方式的存储器系统200在DMAC205 等外部主设备和存储器204之间使用多个总线协议的情况下特别有效。例如,在使用环形总线的存储器系统中,由于在DMAC205等外部主设备和存储器 204之间使用多个总线协议,所以本发明特别有效。图13是本发明的实施方式的存储器系统200的变形例,是表示使用环形总线的存储器系统210的结构的图。如图13所示,存储器系统210具有环形总线Ml。另外,对于与图1相同的要素赋予相同的符号并省略说明。L2高速缓存202、总线控制部206以及存储控制器203经由环形总线241连接。以上,对本发明的实施方式的高速缓冲存储器进行了说明,但是本发明不仅限定于该实施方式。例如,在上述说明中,以具有L2高速缓存202以及Ll高速缓存的存储器系统为例进行了说明,但是,本发明也适用于仅具有Ll高速缓存的存储器系统。另外,在存储器系统具有一级高速缓存和二级高速缓存的情况下,本发明优选适合于二级高速缓存。其原因在于,二级高速缓存对存储器系统整体所产生的影响比一级高速缓存低。具体来说,在一级高速缓存命中的情况下的访问,对于处理器来说是最高速的访问。由此,当从主设备对一级高速缓存进行访问时,对影响最高速化的、从处理器向一级高速缓存的访问产生恶劣影响。由此,通过将本发明的高速缓冲存储器用于二级高速缓存,与将本发明的高速缓冲存储器用于一级高速缓存的情况相比,能够减小对处理器的高速化的恶劣影响。另外,本发明也可以适用于具有3级缓存以上的存储器系统。在该情况下,基于上述理由,优选将本发明的高速缓冲存储器用于最大级别的高速缓存。另外,在图1中,表示出2个CPU201、2个DMAC205,但是CPU201以及DMAC205的个数也可以为1个或者3个以上。另外,也可以包含DMAC205以外的主设备。另外,如图1所示,特别优选以下情况,S卩,将本发明的高速缓冲存储器用于由分别具有Ll高速缓存207的多个CPU201共用的L2高速缓存202。其原因在于,在由分别具有Ll高速缓存207的多个CPU201共用L2高速缓存202 的情况下,为了保持多个Ll高速缓存207和共用的L2高速缓存202之间的一致性,多个 CPU201进行基于窥探方式等算法的控制。由此,当在该控制之外加上用于保持L2高速缓存 202和存储器204之间的一致性的控制时,控制更加复杂而难以实现。与之相对,通过将本发明的高速缓冲存储器用于L2高速缓存202,能够削减用于保持L2高速缓存202和存储器 204之间的一致性的处理(清除处理),所以,能够避免上述控制的复杂化。这样,特别优选如下情况,即,将本发明的高速缓冲存储器用于由分别具有Ll高速缓存207的多个CPU201 共用的L2高速缓存202的情况。另外,上述说明以L2高速缓存202为四路组关联方式的高速缓冲存储器的情况为例进行了说明,但是,路31的个数还可以为4个以外。另外,本发明也可以适用于全关联(full associative)方式的高速缓冲存储器或者直接映射方式的高速缓冲存储器。工业实用性本发明能够适用于具有高速缓冲存储器以及高速缓冲存储器的存储器系统。标号说明20地址寄存器21 存储器 I/F30解码器31,31a,31b,31c,31d 路32a, 32b, 32c, 32d 比较器33a,33b,33c,33d “与”电路34 “或”电路35、36 选择器37多路分配器38控制部40高速缓存条目41 标签42有效标志43脏标志44行数据51标签地址52组索引
53字索引
60CPU访问控制部
6ICPU读取控制部
62CPU写入控制部
63DMAC访问控制部
64DMAC读取控制部
65DMAC写入控制部
70高速缓存存放部
71命中判定部
100、110、200、210存储器系统
10U201CPU
102高速缓冲存储器
103、203存储控制器
104、204存储器
105.205DMAC
106总线
202L2高速缓存
206总线控制部
207L1高速缓存
211、221、231 第 1 端口
212、222、232 第 2 端口
213、223 第 3 端口
214、2M 第 4 端口
225仲裁部
226选择部
241环形总线
权利要求
1.一种高速缓冲存储器,该高速缓冲存储器根据来自处理器的访问,存放主存储器的数据的一部分,其特征在于,具有第1端口,来自所述处理器的指令输入到该第1端口;第2端口,来自所述处理器以外的主设备的指令输入到该第2端口;命中判定部,在有指令输入到所述第1端口以及所述第2端口时,该命中判定部判定该高速缓冲存储器是否存放有与该指令所指定的地址对应的数据;以及第1控制部,在所述指令输入到所述第2端口并且由所述命中判定部判定为存放有的情况下,该第1控制部进行用于保持与所述指令所指定的地址对应并由该高速缓冲存储器存放着的数据、和存放于所述主存储器的数据之间的一致性的处理,并且,将所述输入的指令作为从所述主设备输出的指令而向所述主存储器输出。
2.如权利要求1所述的高速缓冲存储器,其特征在于,所述第1控制部具有第1读取控制部,在将读取指令作为所述指令输入到所述第2端口,且由所述命中判定部判定为存放有,并且与所述读取指令所指定的地址对应并由该高速缓冲存储器存放着的数据为脏数据的情况下,所述第1读取控制部将该数据回写到所述主存储器中,在该回写结束之后,将所述输入的读取指令作为从所述主设备输出的读取指令而向所述主存储器输出。
3.如权利要求1或2所述的高速缓冲存储器,其特征在于,在所述读取指令输入到所述第2端口并且由所述命中判定部判定为没有存放的情况下,所述第1读取控制部将所述输入的读取指令作为从所述主设备输出的读取指令而向所述主存储器输出。
4.一种存储器系统,包括权利要求2或3所述的高速缓冲存储器、所述处理器、所述主设备、以及所述主存储器,所述主存储器将存放于由所述第1读取控制部输出的所述读取指令所指定的地址的数据,不经由所述高速缓冲存储器地向所述主设备输出。
5.如权利要求4所述的存储器系统,其特征在于,所述高速缓冲存储器还具有第2读取控制部,在所述读取指令输入到所述第1端口并且由所述命中判定部判定为存放有的情况下, 所述第2读取控制部将与所述读取指令所指定的地址对应并由该高速缓冲存储器存放着的数据向所述处理器输出;在所述读取指令输入到所述第1端口并且由所述命中判定部判定为没有存放的情况下,所述第2读取控制部从所述主存储器读出所述读取指令所指定的地址的数据,将读出的数据存放到该高速缓冲存储器,并且向所述处理器输出。
6.如权利要求5所述的存储器系统,其特征在于,所述存储器系统还具有存储控制器, 该存储控制器对从所述高速缓冲存储器向所述主存储器的访问和从所述主设备向所述主存储器的访问进行仲裁,所述存储控制器具有第3端口,由所述第1读取控制部输出的读取指令输入到该第3端口,并且该第3端口根据该读取指令将从所述主存储器输出的读取数据向所述主设备输出;以及第4端口,由所述第2读取控制部输出的读取指令输入到该第4端口,并且该第4端口根据该读取指令将从所述主存储器输出的读取数据向所述高速缓冲存储器输出,所述存储控制器对于输入到所述第3端口的读取指令和输入到所述第4端口的读取指令,根据该指令是输入到所述第3端口以及所述第4端口中的哪一方的读取指令而进行仲裁。
7.如权利要求4所述的存储器系统,所述存储器系统还具有选择部,该选择部选择由所述第1读取控制部输出的读取指令和由所述主设备输出的读取指令中的一方,将所选择的读取指令向所述主存储器输出,所述主存储器将存放于由所述选择部输出的所述读取指令所指定的地址的数据,不经由所述高速缓冲存储器地向所述主设备输出。
8.如权利要求1 3中的任意一项所述的高速缓冲存储器,其特征在于,所述第1控制部具有第1写入控制部,在将写入指令作为所述指令输入到所述第2端口并且通过所述命中判定部判定为存放有的情况下,所述第1写入控制部使与所述写入指令所指定的地址对应并由该高速缓冲存储器存放着的数据无效化,并且,将所述输入的写入指令作为从所述主设备输出的写入指令而向所述主存储器输出。
9.如权利要求8所述的高速缓冲存储器,其特征在于,在所述写入指令输入到所述第2 端口并且由所述命中判定部判定为没有存放的情况下,所述第1写入控制部将所述输入的写入指令作为从所述主设备输出的写入指令而向所述主存储器输出。
10.一种存储器系统,包含权利要求8或9所述的高速缓冲存储器、所述处理器、所述主设备、所述主存储器,所述主设备将写入数据不经由所述高速缓冲存储器地向所述主存储器输出,所述主存储器将由所述主设备输出的写入数据存放于由所述第1写入控制部输出的所述写入指令所指定的地址。
11.如权利要求10所述的存储器系统,其特征在于,所述高速缓冲存储器还具有第2写入控制部,在所述写入指令以及写入数据输入到所述第1端口并且由所述命中判定部判定为存放有的情况下,所述第2写入控制部将与所述写入指令所指定的地址对应并由该高速缓冲存储器存放着的数据更新为所述写入数据,所述第2写入控制部还将用于将该更新后的数据回写到所述主存储器中的写入指令以及写入数据向所述主存储器输出。
12.如权利要求11所述的存储器系统,其特征在于,所述存储器系统还具有存储控制器,该存储控制器对从所述高速缓冲存储器向所述主存储器的访问和从所述主设备向所述主存储器的访问进行仲裁,所述存储控制器具有第3端口,由所述第1写入控制部输出的写入指令和由所述主设备输出的写入数据输入到该第3端口 ;以及第4端口,由所述第2写入控制部输出的写入指令以及写入数据输入到该第4端口,所述存储控制器对于输入到所述第3端口的写入指令和输入到所述第4端口的写入指令,根据该指令是输入到所述第3端口以及所述第4端口中的哪一方的写入指令而进行仲裁。
13.如权利要求10所述的存储器系统,其特征在于,所述存储器系统还具有选择部,该选择部选择由所述第1读取控制部输出的写入指令和由所述主设备输出的写入指令中的一方,将所选择的写入指令向所述主存储器输出,所述主存储器将由所述主设备输出的写入数据存放于由所述选择部输出的所述写入指令所指定的地址。
14.如权利要求4 7以及10 13中的任意一项所述的存储器系统,其特征在于,所述处理器具有一级高速缓存,所述高速缓冲存储器为二级高速缓存。
15.如权利要求14所述的存储器系统,其特征在于,所述存储器系统包括含有所述处理器的多个处理器,所述多个处理器分别具有一级高速缓存,所述高速缓冲存储器由所述多个处理器共用。
16.一种高速缓冲存储器的控制方法,所述高速缓冲存储器具有被输入来自处理器的指令的第1端口、和被输入来自所述处理器以外的主设备的指令的第2端口,该高速缓冲存储器根据来自所述处理器的访问,存放主存储器的数据的一部分,所述高速缓冲存储器的控制方法的特征在于,包含命中判定步骤,在有指令输入到所述第1端口以及所述第2端口时,判定该高速缓冲存储器是否存放有与该指令所指定的地址对应的数据;以及第1控制步骤,在所述指令输入到所述第2端口并且在所述命中判定步骤中判定为存放有的情况下,进行用于保持与所述指令所指定的地址对应并由该高速缓冲存储器存放着的数据、和存放在主存储器中的数据之间的一致性的处理,并且,将所述输入的指令作为从所述主设备输出的指令向所述主存储器输出。
全文摘要
本发明的L2高速缓存(202)具有第1端口(211),来自CPU(201)的指令输入到该第1端口;第3端口(213),来自DMAC(205)的指令输入到该第3端口;命中判定部(71),在有指令输入到第3端口(213)时,判定L2高速缓存(202)是否存放有该指令所指定的地址的数据;以及DMAC访问控制部(63),在有指令输入到第3端口(213)并且由命中判定部(71)判定为存放有的情况下,进行用于保持该存放的数据和存放于存储器(204)的数据之间的一致性的处理,并且,将所述输入的指令作为从DMAC(205)输出的指令向存储器(204)输出。
文档编号G06F12/08GK102165424SQ200980137449
公开日2011年8月24日 申请日期2009年9月15日 优先权日2008年9月24日
发明者礒野贵亘 申请人:松下电器产业株式会社

最新回复(0)