高速缓存存储器系统 本发明涉及的是一个高速缓存存储器系统。
当微处理器加速的时候,分级结构的高速缓存存储器常常加快内存的存储速度。当被存取的数据不在一高速缓存存储器系统的高速缓存存储器中时,从高速缓存存储器获得取数据的尝试就会得到没有命中的结果,数据被从主存储器转移到高速缓存存储器。因此,当所需数据不在高速缓存存储器中时,处理器就必须暂时中断数据处理直到数据完成从高速缓存存储器到主存储器的转移,这样就降低了处理能力。
为增加高速缓存存储器的命中率,人们提出了许多种解决方法。比如,日本专利Kokai特开平4-190434中公布了一个方法,它是通过在把数据载入高速缓存存储器前读取一个程序执行流完成,这个执行流将会被不同的分支地址使用。
图3是一个方框图,它说明了常用的高速缓存存储器系统的结构,如图3所示,一个中央处理单元CPU301通过一条地址总线311和一条数据总线321与高速缓存存储器CM303和一个高速缓存存储器控制器CMC304相连。一个子处理单元SPU302通过一条地址总线312和数据总线321与高速缓存存储器控制器CMC304相连,且通过数据总线321与高速缓存存储器CM303相连。子处理单元302监控着通过数据总线321送往中央处理单元CPU301的指令。当子处理单元302发现了编译器自动插入在转移指令前的一个高速缓存存储器更新指令时,它就会指示高速缓存存储器控制器CMC304更新高速缓存存储器。高速缓存存储器控制器CMC304本身并不更新高速缓存存储器;相反,高速缓存存储器控制器CMC304把更新地址信息传至一个DMA控制器305并使之按地址信息指定的地址把数据从主存储器306转移至高速缓存存储器303中的一个位置。由于这个高速缓存存储器更新指令对中央处理单元CPU301没有含义,故被它忽略。在此之后,由控制传至转移指令时,就不会有未命中发生,因为此时数据已经由主存306传至高速缓存存储器CM303了。
另一个解决方法是使子处理单元SPU302从当前指令前的多个指令提取一个指令以便能够提前发现未命中情况,并使高速缓存存储器控制器CMC304更新高速缓存存储器。
此外,还描述了高速缓存存储器的一般机制。如在“计算机结构与设计”一文中(Nikkei BP)。
但是,上述现有技术均有如下问题。
第一个问题是现有技术中的系统需要特别为监控制程序设计的硬件,这就会增大电路的尺寸。
第二问题是在距当前指令前的多个指令处读取一条指令需要存储器有两个或更多的端口。通常,有两个或多个端口的存储器的尺寸会比较大。
第三个问题是由于更新指令被一个编译器自动地插入到距当前指令前多个指令的位置,这样,就不能自由地设定高速缓存存储器更新起始时间。因此,即使当发现由于高速缓存存储器块的增大或主存储器存取时间增长而需要长时间来更新高速缓存存储器时,高速缓存存储器的更新也不可能更早一些开始。这样有时就会使得高速缓存存储器地更新没有在一段指定时间内完成。
第四个问题是通过一编译器自动将一个转移指令插入到当前指令的多条指令之前的一个位置的方法需要编译器拥有这个内置功能,这样就增加了开发工具如编译器的开发成本。
本发明试图解决以上描述的现有技术中的各种问题。本发明的一个目标是提供一个基于现有主存储器或高速缓存存储器的结构的高速缓存存储器系统,该系统能够有效地更新高速缓存存储器而不需另外的编译功能,也不需要监控指令的特殊装置。
为实现上述目的,本发明提供一个高速缓存存储器系统,它包括一个由多个存储单元组成的存储器,一个根据中央处理单元指令向一个直接内存获取DMA控制器发送一个高速缓存存储器更新指令的高速缓存存储器控制器,以及根据从所述高速缓存存储器控制器接收到的指令把数据从主存储器转移到高速缓存存储器的DMA控制器。
图1是一个说明本发明的一个实施例的结构的简图。
图2说明了在本发明的一个实施例中使用的一个命令寄存器的结构的例子。
图3说明了根据现有技术设计的一个高速缓存存储器系统。
以下将对本发明的一个实施例进行详细说明。在实施例中,根据本发明的一个高速缓存存储器系统包括高速缓存存储器器(图1中的标记3),它由多个存储器单元和一个高速缓存存储器控制器(图1中的标记2)组成。高速缓存存储器控制器根据一个中央处理单元1个指令向一个直接存储器存取(DMA)控制器发送一个高速缓存存储器更新指令(图1中的标记4)。DAM控制器4以DMA方式在一个主存储器(图1中的标记5)和高速缓存存储器(图1中的标记3)之间传送数据。
在最佳实施例中,根据本发明的高速缓存存储器系统由多个存储单元组成。这些存储单元的数据可以同时由不同资源所访问。
在最佳实施例中,只要中央处理单元1不在使用要被更新的存储单元,根据本发明提出的高速缓存存储器系统就能使在存储单元和主存储器之间的数据传送与中央处理单元1的处理同时进行而不停止中央处理单元的处理。
在最佳实施例中,当中央处理单元CPU1正在使用一个被更新的存储单元时,根据本发明提出的高速缓存存储器系统就协调对高速缓存存储器的存取,也就是,协调对存储单元的存取以使能对另一个存储单元(或任何其余的存储单元)进行存取。
下面将辅以图例对本实施例进行详细描述。
图1表示的是本发明的一个实施例的结构,参见图1,在本发明的这一实施例中所采用的一个微处理器包括一个中央处理单元(CPU)1,高速缓存存储器3,它通过一条地址总线11和一条数据总线12与中央处理单元1相连,一个高速缓存存储器控制器2,一个DMA控制器4以及主存储器5。
高速缓存存储器3通过一条DMA地址总线21和一条DMA数据总线22与DMA控制器4相连。除此之外,激活DMA控制器4的信号线4的信号线24被由高速缓存存储器控制器2送至DMA控制器4。
DMA控制器4通过一条外部地址总线41和一条数据总线42与主存储器5相连。一条处理中止信号线7从高速缓存存储器控制器2联至中央处理单元1。
高速缓存存储器控制器2把高速缓存存储器3分为许多块,每一个块都由被一次更新的几个字节组成。本发明提供了标识存储器(未示出)来管理这些块。
标识存储器包括每一个块中存储器的高速缓存存储器3中的内容的地址的一预定的位数。当一个地址从中央处理单元1送出时,标识存储器便存储器下地址的标识部分这样来辨认存储了高速缓存存储器3中的内容的相应的块。
高速缓存存储器控制器2同样也有一个命令寄存器,它存储从中央处理单元1发出的高速缓存存储器更新指令。当发现有一个高速缓存存储器未命中情况发生时或这个数据被写入命令寄存器时,一个DMA转移指令就被发至DMA控制器4。
由多个存储单元组成的高速缓存存储器3在速度上比主存储器5快。多路复用器61、61、63和64与主存储器3相连以使每一个存储单元都能选择一个发送或接收数据的设备,尽管图1中只标出了两个存储单元,但存储单元的数量并没有限制。
DMA控制器4在收到高速缓存存储器控制器2的一个指令后开始操作。这时,DMA控制器4接收到源数据信息(主存储器5中的源数据的起始地址和源数据的字节数)和目标地址信息(被送往高速缓存存储器3的数据在高速缓存存储器3中的目标地址的起始地址)。
DMA控制器4把数据直接送至高速缓存存储器3,并不经过中央处理单元,或高速缓存存储器控制器2。
图2表示的是高速缓存存储器控制器2中的命令存储器的一个实例,如图2所示,命令存储器由一个高速缓存存储器更新起始地址字段和块数字段组成。
这一实例的运行见以下描述。
参见图1,当中央处理单元读取数据时,它把一个地址送到高速缓存存储器控制器2和高速缓存存储器3,并通过地址总线11发送。
高速缓存存储器控制器2从中央处理单元1获取地址的一部分并参照标识存储器来决定所需数据在高速缓存存储器3之中。
当所需数据被发现后,中央处理单元1把它从高速缓存存储器3读入。另一方面,当所需数据不在高速缓存存储器3时,高速缓存存储器控制器2停止中央处理单元1的处理,更新标识存储器,把高速缓存存储器更新信息(含所需数据的块的起始地址以及在高速缓存存储器送出数据的该高速缓存存储器的起始地址)送至DMA控制器4并通知它更新高速缓存存储器3。
当从高速缓存存储器控制器2接收到指令后DMA控制器4把数据从主存储器5转移至高速缓存存储器3。
当含有所需数据的块的转移完成后,高速缓存存储器控制器2继续中央处理单元1的运行。
为了提前更新高速缓存存储器3,中央处单元1执行一个命令中的用户编码指令,它把命令数据送入到命令寄存器中,命令寄存器被从高速缓存存储器控制器2映射入内存。
高速缓存存储器控制器2从命令寄存器中的起始地址数据中产生块起始地址;它还从命令寄存器中的块数据的数目中产生转移字节数目。然后,如通常的高速缓存存储器填充操作一样,高速缓存存储器控制器2把将被装载的块的起始地址送至DMA控制器4。同时也把被传送的字节数以及在接收数据的高速缓存存储器中的对应块的起始地址送至DMA控制器4。当DMA控制器4传送数据时,高速缓存存储器3被更新。这时,多路复用器63和64(与中央处理单元1相连)转向与DMA控制器4相接从而为高速缓存存储器3中的存储单元接收数据并将之送至高速缓存存储器3。
另外,基于以上更新指令,高速缓存存储器控制器2把内部标识存储器的内容转变为与被更新块相应的标识。这种在高速缓存存储器控制器2和DMA控制器之间实现的转换就不影响到中央处理单元1。
如果高速缓存存储器3中的存储单元(数据被送往此处)不被中央处理单元1使用的话,数据传送就能与中央处理单元1的处理同时完成,这就不需中止中央处理单元1的操作。但是如果被更新的高速缓存存储器3中的存储单元1被中央处理单元1所使用,就必须协调从中央处理单元1和DMA控制器4发出的存取要求。
存取协调的完成可以通过多种方法完成。例如,可以使对中央处理单元1发出的处理中止信号保持插入状态,直到高速缓存存储器被更新。这种方法能确使程序的完成而没有操作失误,尽管中央处理单元1可能更长时间地处于中止状态。其中止状态时间取决于发出更新指令的时间。
另一种协调方法能防止DMA控制器4对高速缓存存储器的存取,直到中央处理单元1中止处理。
依据本发明设计的高速缓存存储器系统有如下优点。
本发明的第一个优点是本高速缓存存储器系统不需要监控程序的特殊装置,这样就减小了电路的规模。
本发明的第二个优点是高速缓存存储器系统使硬件规模不扩大。这是因为,高速缓存存储器系统不使用有两个或更多端口的存储器。
本发明的第三个优点是高速缓存存储器的更新时间可以自由设定。
这是因为,使用者为了更新缓存可以随时在命令寄存器中指明一数据转移指令。因此,当高速缓存存储器存储单元尺寸增大或当主存储器存取时间改变时,命令数据传送指令可以被及早指定,以使高速缓存存储器的更新完成。
本发有的第四个优点是高速缓存存储器系统不需要另外的编译器。因此,不需要增加另外的开发成本。
需要指出的是,对于本领域的专业技术人员来说,还可以在不脱离如上文所公开以及所附权利要求所限定的本发明宗旨和范围,作出各种显而易见的改动。