CN101082882A - 高速缓冲存储器装置和高速缓冲存储方法 - Google Patents
高速缓冲存储器装置和高速缓冲存储方法 Download PDFInfo
- Publication number
- CN101082882A CN101082882A CNA2007100923685A CN200710092368A CN101082882A CN 101082882 A CN101082882 A CN 101082882A CN A2007100923685 A CNA2007100923685 A CN A2007100923685A CN 200710092368 A CN200710092368 A CN 200710092368A CN 101082882 A CN101082882 A CN 101082882A
- Authority
- CN
- China
- Prior art keywords
- order
- state machine
- machine
- state
- cache
- 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.)
- Pending
Links
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种高速缓冲存储器装置,包括命令接收单元,从多个处理器的每一个中接收多个命令;处理单元,根据每一个所述命令执行处理;以及存储单元,当所述命令接收单元接收第一命令而处理单元正在处理第二命令时,将所述第一命令存储在队列中,与所述第一命令相对应的高速缓冲存储器行地址与正在由所述处理单元处理的第二命令相对应的高速缓冲存储器的行地址相同。
Description
技术领域
本发明涉及一种高速缓冲存储器装置和使用所述高速缓冲存储器从多个处理器中接收命令的处理方法。
背景技术
借助于在半导体微电子学技术中最新的进展,可以将多个处理器集成在单个半导体衬底上。另一方面,用于隐藏存储器等待时间的高速缓冲存储器技术已经被广泛利用,同时改善高速缓冲存储器的处理能力是提高系统性能的关键。此外,在多个处理器之中进行独占访问的机制对描述并行程序是绝对不可缺少的。作为独占访问的机制,例如,美国专利5276847公开了一种向总线提供锁定信号以使处理器不能访问锁定信号有效的地址的技术。
然而,在其中多个处理器共享一个公用的高速缓存器的装置中,当发出多个请求到某一高速缓存器行并且在第一访问对高速缓存器进行重写前就进行第二访问,第二访问执行相同的过程,这是不利的。
此外,如果请求的数据在高速缓存器中没有查找到,处理器通常访问位于下一分级结构上的主存储器。但是,对主存储器的访问速度慢并且消耗大量的电力。此外,同时执行多个访问的性能就不能对高速缓存器进行独占访问。
发明内容
根据本发明的一个方面,连接到多个处理器的高速缓冲存储器包括命令接收单元,从所述多个处理器的每一个中接收多个命令;处理单元,根据每一个所述命令执行处理;以及存储单元,当所述命令接收单元接收第一命令而所述处理单元正在处理第二命令时,所述存储单元将所述第一命令存储在队列中,与所述第一命令相对应的高速缓存器行地址与对应于正在由所述处理单元处理的所述第二命令的高速缓存器行地址相同。
根据本发明的另一方面,连接到多个处理器的高速缓冲存储器包括命令接收单元,从所述多个处理器的每一个中接收多个命令;处理单元,根据每一个所述接收到的命令执行处理;多个第一状态机,其对应于所述命令的类型而被提供,并且监视每一个所述命令的处理状态;以及存储单元,当所述命令接收单元接收命令而针对所述命令的类型的所有的第一状态机被占用时,所述存储单元将所述命令接收单元接收到的命令存储在队列中。
根据本发明的又一方面,在连接到多个处理器的高速缓冲存储器中的处理方法包括从所述多个处理器的每一个中接收多个命令;根据每一个所述命令执行处理;以及当接收第一命令而在处理第二命令时,将所述第一命令存储在队列中,与所述第一命令相对应的高速缓存器行地址与正在被处理的所述第二命令相对应的高速缓存器行地址相同。
根据本发明的再一方面,在连接到多个处理器的高速缓冲存储器中的处理方法包括从所述多个处理器的每一个中接收多个命令;根据每一个所述接收到的命令执行处理;以及当接收到所述命令而在相应于命令类型提供的多个所述第一状态机之中所述命令的类型的所有的第一状态机被占用时,将所述命令存储在队列中,并监视每一个所述命令的处理状态。
附图说明
图1是根据本发明实施例的总线系统的方框图;
图2是在2级(L2)高速缓冲存储器中地址路径的示意图;
图3是再循环队列的方框图;
图4是在移位寄存器中用于选择在最右位中指示1的条目的解码逻辑的示意图;
图5是在L2高速缓冲存储器中数据路径的示意图;
图6是用于解释由锁定逻辑执行的处理的示意图;
图7是用于解释RC机器的状态转换的泡式图;
图8是用于解释CPBK机器的状态转换的泡式图;
图9是用于解释MRLD机器的状态转换的泡式图;
图10是用于解释MCPBK机器的状态转换的泡式图;
图11是用于解释锁定机器的状态转换的泡式图;
图12是用于运行由多个状态机请求的单个状态机的仲裁机构的示意图;以及
图13是用于状态机以获得数据存储器的机构的示意图。
具体实施方式
下面参照附图详细地解释本发明示例性的实施例。本发明不局限于下面解释的实施例。
图1是根据一个实施例的总线系统的方框图。总线系统1包括八个处理器10A到10H、输入/输出(I/O)装置50、2级(L2)高速缓冲存储器30、存储控制器40、内部的嵌入式动态随机存取存储器(EDRAM)43、以及外部的同步动态随机存取存储器(SDRAM)44。处理器10A到10H连接到L2高速缓冲存储器30。I/O装置50也连接到L2高速缓冲存储器30。L2高速缓冲存储器30进一步的连接到存储控制器40。
从10A到10H的每一个处理器传送地址信息到L2高速缓冲存储器30。L2高速缓存器30检验由处理器10A到10H请求的信息是否被高速缓存到L2高速缓存器30中,并且根据所述检验结果执行预定的操作。当被请求的信息没有被高速缓存到L2高速缓存器中,存储控制器40根据地址访问内部的EDRAM 43和外部的SDRAM 44。
地址信息包括命令类型(读、写等)和数据传送单元(高速缓冲存储器行大小、字节等)以及由处理器请求的存储器的地址,并且整个信息一次被传输。
L2高速缓存器30被处理器10A到10H共享。每个处理器10A到10H发出命令,而L2高速缓存器30需要处理所有的命令。处理器10A到10H各自包括1级(L1)高速缓存器11A到11H,并且错过对应的L1高速缓存器时的请求作为命令被传输到L2高速缓存器30。
图2是在L2高速缓存器30中的地址路径的示意图。将来自于每一个处理器10A到10H的命令经由总线中的仲裁机构输入到L2高速缓存器30的命令接收器301中。所希望的是设置限制使得命令在两个周期内仅被输入到L2控制器一次。更具体地说,总线的频率可以被设置为例如L2控制器频率的一半。这简化了硬件配置。
在输入到L2高速缓存器30的地址之中,较低级别的地址被用作L2高速缓存器30的标记的索引,并且被传输到标记随机存取存储器(标记-RAM)302。较高级别的地址与从标记-RAM 302中输出的结果进行比较。本实施例实现了4路高速缓存器。
调度单元304基于拖拉标记的结果来调度L2控制器中的状态机。根据本实施例,有四个RC机306,两个CPBK机308,以及两个加锁机310作为状态机。每一个RC机306处理对L2高速缓存器30的读请求。每一个CPBK机308处理从L1高速缓存器11A至11H到L2高速缓存器30的拷贝-回存操作。每一个加锁机310处理对L2高速缓存器的锁定请求。
每一个状态机与单命令结合着操作。因为L2高速缓存器30一次处理多个命令,所以多个状态机可以同时操作。
对应于四个RC机306,两个CPBK机308,以及两个加锁(lock)机310的寄存器被提供作为未确认(outstanding)地址缓冲器320。状态机一被调用,就在未确认地址缓冲器320中相应的寄存器在其中存储正在被每一个状态机处理的地址。当状态机完成所述处理时,对应的寄存器清除地址。
提供比较器322,其与影子寄存器324以及未确认地址缓冲器320中的每一个寄存器关联。比较器322用来检测对例如正在由L2控制器处理的相同地址的新的请求,即将被RC机306,CPBK机308,和加锁机310中的任何一个正在处理的地址输入到L2控制器。
当命令发自处理器10A到10H的其中之一时,命令中的高速缓冲存储器行地址被传输到比较器322。比较器322把它与存储在对应的寄存器中的高速缓冲存储器行地址中的每一个相比较。如果比较器的其中之一指示一致,命令和地址被存储在再循环队列330中(在这里再循环队列有4个条目)。
当在前的命令即正在被处理的命令被终止时,命令和地址从再循环队列330中被弹出。L2控制器开始执行,并且从再循环队列330中弹出的高速缓冲存储器行地址再一次地被传输到比较器322。如果不一致,调度单元304根据拖拉标记的结果执行对应于命令的调度。
不仅仅当比较器322指示一致时命令等会进入再循环队列330中。例如,当RC机、CPBK机、和加锁机的任何一个类型被占用并且对占用的机器类型的命令被输入时,命令和地址也进入再循环队列330中。如上所述,在两个周期中把命令输入到L2控制器中仅仅一次。结果,当对应的状态机确定为已满时,下一命令已经被输入到影子寄存器324中并且存储在再循环队列330中。当再循环队列330被占用时,从处理器到L2控制器的传递途径被阻塞,因此命令无法进入到L2控制器中。
图3是再循环队列330的方框图。再循环队列330包括四个条目332。每一个条目332包括有效区、地址/命令区和RC数字区。地址/命令区在其中存储地址和命令。当地址和命令被存储在地址/命令区中时,有效区存储1。RC数字区包括指示输入命令的原因的信息,即该信息用于区分相应的状态机。
根据本实施例,八个状态机被调度,因此将八个位分配给RC数字区。更具体地说,位7对应于RC机RC3;位6对应于RC机RC2;位5对应于RC机RC1;位4对应于RC机RC0;位3对应于CPBK机CPBK1;位2对应于CPBK机CPBK0;位1对应于加锁机LOCK1;以及位0对应于加锁机LOCK0。
例如,当命令匹配RC机RC2的地址并且被输入到再循环队列330时,在地址/命令区中设置命令和地址,并且对应的RC数字区指示位6。
否则,当RC机、CPBK机和加锁机的任何一个类型被占用,例如所有的四个RC机均被使用,以及再循环队列可用,在对应条目332的RC数字区中所有的位指示1。
自由表331是用四位对应于四个条目332分配的寄存器。当一个条目是空的时,对应的位指示零。当条目在使用中时,对应的位指示为1。
当地址被输入到再循环队列330中时,1被设置到当前指示零的并且在自由表331中是最不重要位的位。条目管理器333在条目332的其中一个中设置信息,该条目332对应于当前指示为1并且在自由表331中是最不重要位的位。此外,条目管理器333在对应于设置了信息的条目332的四个移位寄存器334的其中一个中给最重要的位设置为1。然后条目管理器333向右移位剩下的三个移位寄存器334。
因为移位寄存器334每当向条目332设置信息时右移,对应于包括离右边更远的位的移位寄存器334的条目是旧的。用这样的方式,解码器335能够在移位寄存器334中根据位的位置识别旧的条目。
在下面解释确定再循环队列330是否包括可执行命令的过程。当RC机、CPBK机、以及加锁机中的任何一个终止操作时,在再循环队列330中选择出一个命令。特别地,在再循环队列330中的所有的条目332中以及对应于终止的状态机的位中检查RC数字区。当位以及终止的状态机两者都是1时,对应于同意条目的就绪寄存器336被设置为1。换句话说,对应于RC数字区的命令被选择。
指示1的就绪寄存器336表示可重新执行的候选者被设置为对应的条目。因而,在就绪寄存器336中的信息能够决定再循环队列330是否包括可执行的命令。
条目332有时用多个完全相同的状态机来设置。换句话说,有多个在就绪寄存器336中指示1的条目332。在这种情况下,解码器335选择多个命令中的任何一个作为由L2控制器重新执行的命令。
特别地,根据移位寄存器334的位选择命令。如上所述,当信息被设置为每一个条目332时,对应的移位寄存器334指示1,以及每当新条目被设置时位右移。这指的是对应于四个移位寄存器334之中的最右位包含1的移位寄存器334的条目包括最旧的信息。根据本实施例,最旧的条目被选择以防止条目很长时间保持未执行的状态。
当从再循环队列330的条目332中输出命令时,与选定的条目332相对应的就绪寄存器336中所有的位、对应的自由表331中的位、和对应的移位寄存器334中的位都被重置。此外,对选择的条目332的有效区从1修订为0,并且通过L2控制器再一次执行选定的条目332的命令和地址的信息。
L2控制器需要确定来自于处理器的命令或再循环队列330中的哪一个命令先被执行。此处可以认为当再循环队列330中存在可执行的命令时始终选择再循环队列330中的命令。通过命令接收器301执行这个处理。命令接收器301还可以读取该命令。
依据本实施例,当再循环队列330已满时或者当再循环队列330包括可执行的命令时,从处理器10A至10H到L2控制器的传递途径被阻止接受新的命令。
图4是用于选择最右位中指示1的条目的解码逻辑的示意图。当移位信号指示1时所有的位向右移。因为根据本实施例再循环队列330可以包括四个条目,提供移位寄存器334的四个设置。
在与再循环队列330中的条目相对应的就绪寄存器336中的位分别与READY0到READY3连接。IN0到IN3被输入到移位寄存器334中。当新的条目被设置为再循环队列330时,1被输入到对应的输入中。当对应的条目被选定时OUT0到OUT3指示1。更具体地说,在其中READY指示1的移位寄存器334中选择在最右位中指示为1的条目。
再循环队列330的配置不局限于本实施例。例如,在再循环队列330中的条目的数目可以根据所需要的性能确定,并且不受到本实施例的限制。如果在再循环队列330中可以接受的条目的数目太少,从处理器到L2控制器的传递途径很容易阻滞,并且因而性能恶化。如果条目的数目太大,尽管阻滞的风险减少,但再循环队列330的使用效率变得非常低并且区的大小会浪费。最好考虑到这些确定适当的数目。
根据本实施例虽然拖动标记并且仅仅可靠地可执行的操作从再循环队列330中弹出,可以使用简单的先进先出(FIFO)配置代替移位寄存器334以简化该硬件配置。再循环队列330可以以任何方式配置,只要条目332的其中之一可以从再循环队列330中选择。然而,对于先进先出配置,风险是从先进先出配置中弹出的条目命中未确认地址缓冲器320中的将被再一次输入到再循环队列330中的地址。
此外,根据本实施例,为了防止旧的条目保留在再循环队列330中很长时间造成资源缺乏,在最早时间被输入到再循环队列330中的条目首先被弹出。然而,可以配置再循环队列330,例如,以便在预定时间之后弹出每一个条目。再循环队列330可以采用任何配置除非存在永远不会被弹出的任何条目。
如上所述,本实施例确保L2控制器在相同的地址不执行一个以上的处理因为对与正在为第一请求进行的处理的地址相同的地址的第二请求被存储在再循环队列330中,在第一请求被终止之后将被执行。
此外,根据本实施例,当第二请求访问和第一请求相同的地址时,不用访问主存储器就将第二请求存储在再循环队列330中。这改善了高速缓冲存储器装置的性能并且减少了功率损耗。
接下来解释加锁机构。如上所述,保证根据本实施例的L2控制器在相同的地址处理至多一个的请求。因此,如果来自于处理器10A到10H的预定命令可以独占地读和写L2高速缓存器30中的数据则可以实现加锁机构。
在本实施例中,来自于处理器10A到10H的其中之一的加锁命令直接被传输到L2高速缓存器30而不通过对应的L1高速缓存器11A到11H中的一个。加锁机开始在L2高速缓存器30中作为用于该加锁命令的状态机。当加锁命令命中L2高速缓存器30时,加锁机读取并且更新L2高速缓存器30中的数据。同时,加锁机将从L2高速缓存器30中读出的数据传输到处理器10A到10H对应的一个中。当加锁命令错过L2高速缓存器30时,加锁机从内部的EDRAM 43或外部的SDRAM 44中读取数据并且把数据传输到处理器10A到10H对应的一个中。加锁机还用从内部的EDRAM 43或外部的SDRAM 44中读取的数据修改L2高速缓存器30。
更具体地说,处理器10A到10H包括测试-设置命令作为加锁命令。一旦检测测试-设置命令,假定测试-设置命令未命中L1高速缓存器11A到11H,处理器10A到10H把地址和命令传输到L2高速缓存器30中。
为了简化硬件,假定测试-设置命令仅仅在高速缓冲存储器行的一个位置上执行。例如,测试-设置命令在高速缓冲存储器行中的最小的地址字节上执行以便字节的最低位被设置为1。对高速缓冲存储器行中除最低位之外的数据执行测试-设置命令是无意义的。
在L2高速缓存器30中,相对于测试-设置命令执行以下操作。校验L2高速缓存器30中的标记。在这一点上因为再循环队列330的作用可以保证在相同的地址处没有别的状态机在工作。当测试-设置命令命中L2高速缓存器30时,在L2高速缓存器30中命中的数据被传输到处理器10A到10H中。在最低位指示一的数据被写入到高速缓冲存储器行中。处理器10A到10H可以在写入之前读取数据。当测试-设置命令错过L2高速缓存器30时,测试-设置命令将数据从内部的EDRAM 43或外部的SDRAM44传输到L2高速缓存器30中。然后将L2高速缓存器30中的数据传输到处理器10A到10H对应的一个中。高速缓冲存储器行的最低位被设置为1。处理器10A到10H可以在设置为1之前读取数据。
图5是L2高速缓存器30中的数据路径的示意图。采用以下七种情况来解释数据路径。
1.读请求命中L2高速缓存器30。
2.读请求错过L2高速缓存器30。
3.写请求命中L2高速缓存器30。
4.写请求错过L2高速缓存器30。
5.从L2数据存储器350回拷贝。
6.测试-设置命令命中L2高速缓存器30。
7.测试-设置命令错过L2高速缓存器30。
当读请求命中L2高速缓存器30时,从地址系统(图2中所示)中提供L2数据存储器350的地址到L2数据存储器350。由对应的RC机指示地址。把从L2数据存储器350中读出的数据传输到处理器10A到10H中。
当读请求未命中L2高速缓存器30时,来自于存储控制器40的数据通过MRLD缓冲器352,多路复用器(MUX)354,和加锁逻辑356,并且被写入到L2数据存储器350中。由对应的RC机指示L2数据存储器350的地址。L2数据存储器350中的数据被读取并且传输到处理器10A到10H中。
当写请求命中L2高速缓存器30时,来自于处理器10A到10H的数据通过MUX 354和加锁逻辑356,并且被写入到L2数据存储器350中。MUX354选择来自于处理器10A到10H的路径和来自于存储控制器40的路径中的任一个。由对应的CPBK机指示L2数据存储器350的地址。
当写请求未命中L2高速缓存器30时,来自于处理器10A到10H的数据通过旁路缓冲器360和MUX 362,并且被传输到存储控制器40中。数据没有被写入到L2数据存储器350中。
当读请求未命中L2高速缓存器30时或当加锁命令未命中L2高速缓存器30时可以执行从L2数据存储器350进行回拷贝。当需要回拷贝用于获取新的高速缓冲存储器行时,L2数据存储器350中的数据被读取并且经由MCPBK缓冲器364和MUX362传输到存储控制器40中。由MCPBK机指示L2数据存储器350的地址。
当测试-设置命令命中L2高速缓存器30时,从L2数据存储器350中读取的数据被传输到处理器10A到10H中。然后加锁逻辑356准备在最低位指示1的数据,并且把它写入到L2数据存储器350中。由对应的加锁机指示L2数据存储器350的地址。
当测试-设置命令未命中L2高速缓存器30时,来自于存储控制器40的数据通过MRLD缓冲器352、MUX354、和加锁逻辑356,并且被写入到L2数据存储器350中。然后数据从L2数据存储器350中读出并且传输到处理器10A到10H中。然后加锁逻辑356准备在最低位指示1的数据,并且把它写入到L2数据存储器350中。加锁逻辑356生成在最低位指示1的数据。
图6是用于解释由加锁逻辑356执行的处理的示意图。虽然加锁逻辑356通常按照输入原样输出值,加锁逻辑356输出1以写入锁定数据。无论地址是否将被加锁,根据本实施例的加锁逻辑356修改1,可以代替使用另一加锁操作,例如比较交换操作。
接下来,将解释每一状态机的操作。图7是用于解释RC机的状态转移的泡式图。RC机的默认状态是空闲的,然后执行与拖拉标记的结果相对应的操作。拖拉标记可以产生三种情况:命中,在没有对高速缓冲存储器行替换的情况下未命中,和对高速缓冲存储器行替换的未命中。在命中的情况中,从RC机器中传输地址到L2数据存储器350中并且在L2数据存储器没有被访问的时候从L2数据存储器中读取数据。然后把数据传输到处理器10A到10H中,并且RC机被终止。
在没有替换的未命中的情况中,MRLD机器工作。MRLD机被用于从存储控制器40中写入数据到L2数据存储器350中。当MRLD机与另一状态机共享时,RC机等待直到MRLD机准备工作。当MRLD机准备工作时,RC机启动MRLD机并且等待直到MRLD机停止。在数据被写入到L2数据存储器350中之后,MRLD机被终止。在终止MRLD机之后,从L2数据存储器350中读取的数据被传输到处理器10A到10H中。
在用替换未命中的情况中,需要使用MCPBK机把将被替换的高速缓冲存储器行写入到存储控制器40中。MCPBK机被用于从高速缓冲存储器行写入数据到内部的EDRAM43和外部的SDRAM44中。当MCPBK机与另一状态机共享时,RC机等待直到MCPBK机准备工作。当MCPBK机准备工作时,RC机启动MCPBK机并且等待直到MCPBK机停止。在MCPBK机终止之后,RC机遵循没有替换的未命中的情况相同的路径。
图8是用于说明CPBK机的状态转换的泡式图。CPBK机的默认状态是空闲的,然后执行与拖拉标记的结果相对应的操作。由拖拉标记可以产生两种情况:命中和未命中。
在命中的情况中,CPBK机确定L2数据存储器350是否正在由另一个状态机使用。如果它没有正被使用,CPBK机从请求处理器中传输数据并且在图8中所示的操作过程中更新标记。
在未命中的情况中,CPBK机不写入数据到L2数据存储器350中而经由旁路缓冲器360写入数据到内部的EDRAM43或外部的SDRAM44中。首先,CPBK机等待旁路缓冲器360变得可用,因为当另一个CPBK机正在使用旁路缓冲器360时数据不能从处理器10A到10H中写入到旁路缓冲器360中。在旁路缓冲器360变为可用的并且从处理器中的写入完成之后,CPBK机将数据写入到内部的EDRAM43或外部的SDRAM44中。
在对写入到内部EDRAM43和外部SDRAM44的请求之后的操作每次只能由CPBK机和MCPBK机中的一个来执行。因为这个原因,仲裁器用于在联锁时进行仲裁。
图9是用于解释MRLD机的状态转移的泡式图。如上所述,通过RC机或加锁机调用MRLD机。因为存在多个RC机和多个加锁机,有时需要仲裁来调用MRLD机。仲裁通常使用队列,并且MRLD机由队列中最旧的请求调用。当另一个RC机或加锁机正在使用MRLD机时,请求的状态机等待直到MRLD机终止操作。
被调用的MRLD机将读取请求发送到存储控制器40中,并且等待要被写入到MRLD缓冲器352中的数据。然后MRLD机等待L2数据存储器350成为可用的。当L2数据存储器350可用时,MRLD机将MRLD缓冲器352的数据写入到L2数据存储器350中并且更新所述标记。
图10是用于解释MCPBK机的状态转换的泡式图。MCPBK机由RC机或加锁机调用。因为存在多个RC机和多个加锁机,有时需要仲裁来调用MCPBK机。仲裁通常使用队列,并且MCPBK机由队列中最早的请求调用。当另一个RC机或加锁机正在使用MCPBK机时,请求的状态机等待直到MCPBK机终止操作。
当L2数据存储器350可用时,被调用的MCPBK机从L2数据存储器350中读取数据并且把数据写入到MCPBK缓冲器364中。MCPBK机发送读取请求到存储控制器40。需要仲裁是因为CPBK机也发送写入请求到存储控制器40。更具体地说,仲裁器执行所述仲裁。当发送到存储控制器40的写入请求被授权时,数据从MCPBK缓冲器364中传输到存储控制器40中。这时标记没有被更新因为更新由RC机执行。
图11是用于解释加锁机的状态转换的泡式图。在把数据发送到处理器10A到10H中之后除写入1到最低位的附加处理之外加锁机如同RC机一样运行。加锁(测试-设置)机构可以由如上所述的每一个机构利用存储在L2高速缓存器30中的高速缓冲存储器行来实现。
在这里给出假定多个处理器竞争加锁的解释。例如,当三个处理器10A到10C设法锁定地址号1000时,将0预写入到地址号1,000中。处理器10A到10C使用测试-设置命令访问地址号1,000。在这里假定第一处理器10A首先到达L2高速缓存器30。当第一处理器10A未命中L2高速缓存器30时,L2高速缓存器30从主存储器中读取地址号1,000的零值,并且把它存储在L2数据存储器350中。在L2高速缓存器30中地址号1,000的值被更新为1。第一处理器10A通过从L2高速缓存器30中接收0确认加锁成功。第一处理器10A开始预定的处理。
到达L2高速缓存器30的来自于第二处理器10B和第三处理器10C的命令被存储到再循环队列330中按顺序进行处理。在完成第一处理器10A发出的命令的处理之后,第二处理器10B发出的命令从再循环队列330中被弹出并且拖拉标记,其这次命中。然而,因为在L2高速缓存器30中地址号1,000被第一处理器10A锁定并且指示1,第二处理器10B从L2高速缓存器30的地址号1,000中接收值1。
L2高速缓存器30用1修改地址号1,000中的值。第二处理器10B通过接收值1确认加锁的失败。由第三处理器10C发出的命令以同样方式从再循环队列330中弹出,并且通过接收值1确认加锁失败。
一旦完成所述处理,已经成功加锁的第一处理器10A写入0到地址号1,000中。第一处理器10A写入0到与锁定L2高速缓存器30有关的地址号1,000中。由于这个,在地址号1,000中的值再一次归零。然后,第一处理器10A把L1高速缓存器(11A)中的数据刷新到L2高速缓存器30中。因此,第一处理器10A的锁定被释放。
根据本实施例加锁机构通过写入1到L2数据存储器350中来锁定L2数据存储器350,加锁可以通过,例如,从L2数据存储器350中读取数据并且添加1到所述数据中来执行。增加了1的值需要被写入到L2数据存储器350中,并且这样进行的处理不局限于本实施例。
接下来,将解释用于运行由多个状态机请求的单个状态机的仲裁机构。根据本实施例,例如,当它们未命中L2高速缓存器30时RC机和加锁机调用MRLD机。然而,因为仅仅存在一个MRLD机,所以需要在多个状态机之间的仲裁。
图12是用于运行由多个状态机请求的单个状态机的仲裁机构的示意图。仅仅发出一个周期的脉冲以从空闲状态转变到请求MRLD机的状态。有六个状态机使用MRLD机,其可以由三位编码。因为单个状态机可以每周期被调度,所以到编码器370的输入是1-热代码。
由编码器370编码的值被写入到双端口存储器372中,并且写入指针374被增加。双端口存储器372在其中在先进先出基础上按照旧的顺序存储请求的值。双端口存储器372只要在适当的时间输出写入的值,移位寄存器等等就可以被使用。
从双端口存储器372中的输出再一次由解码器376解码成为1-热代码。准备信号被返回到请求的状态机。然而,当写入指针374匹配读取指针378时,或当包括双端口存储器372的先进先出配置在其中没有存储值时,准备信号不被输出。当MRLD机被终止时,读取指针378被增加,并且由下一个状态机对MRLD机的请求被处理。
接下来,将解释当多个状态机共享一个设备时的仲裁机构。根据本实施例,状态机常常等待L2数据存储器350成为可用的。每一状态机确定L2数据存储器350是否正在被另一个状态机使用,即检测L2数据存储器350的可用性,并且等待的状态机以由仲裁确定的顺序获取L2数据存储器350。
图13是用于状态机以获取L2数据存储器350的机构的示意图。根据本实施例在总线系统1中,四个RC机、两个CPBK机、两个加锁机、单个MRLD机和单个MCPBK机的每一个发送请求到L2数据存储器350。
一旦从每一状态机中接收请求,与每一个状态机相对应的置位复位触发器(SRFF)380被设置。选择电路382仅仅选择多个请求中的一个。选择电路382选择最左位。即使两个机同时发送请求选择电路也仅仅选择一个请求。
与选择电路382选定的请求相对应的SRFF380由复位信号重置。选择电路382每周期输出一位。编码器384将来自于选择电路382的输出输入到双端口存储器386中。
双端口存储器386包括写入指针388和读取指针390以配置先进先出。然而,移位寄存器可以被代替使用。
将值从编码器384中输入到双端口存储器386时,写入指针388增长了1。先进先出配置的内容按照使用L2数据存储器350的顺序排列。换句话说,在先进先出中的第一元件首先使用L2数据存储器350。解码器392将来自于双端口存储器386中的输出转换成与每一个状态机相对应的L2数据存储器350中的准备信号。当准备信号被输出时,与状态机类型相对应的机器计时器394开始运行。机器计时器394可以是RC机计时器、加锁机计时器、CPBK机计时器、MRLD机计时器或MCPB机计时器。
在机器计时器394的运行期间,先进先出中的第一元件不被处理,这阻止了准备信号从L2数据存储器350传输到另一个状态机中。机器计时器394用与状态机类型相对应的值设置。在准备信号被输出之后仅仅在预定数目的周期期间输出值是1。
当机器计时器394的操作被终止时,下降沿检测器396检测输出从1转换到0,并且读取指针390被增加。这使得先进先出中的下一元件作出准备。当先进先出是空的时,在读取指针390和写入指针388之间比较值,并且它们匹配以便准备信号不被输出。
本领域的技术人员很容易想到附加的优点和修改。因此,本发明在其更宽泛的方面不局限于在此示出并描述的具体细节和代表性实施例。因此,在没有脱离所附权利要求及其等同概念内所定义的总的发明构思的精神或范围的情况下可以作出各种修改。
Claims (18)
1、一种连接到多个处理器的高速缓冲存储器,包括:
命令接收单元,从所述多个处理器的每一个接收多个命令;
处理单元,根据每一个所述命令执行处理;和
存储单元,当所述命令接收单元接收第一命令而所述处理单元正在处理第二命令时,将所述第一命令存储在队列中,与所述第一命令相对应的高速缓冲存储器行地址与正在由所述处理单元处理的第二命令相对应的高速缓冲存储器的行地址相同。
2、根据权利要求1的装置,进一步包括:读取单元,当所述处理单元完成所述第二命令的处理时读取所述第一命令,其中
所述处理单元根据所述读取单元读取的所述第一命令执行处理。
3、根据权利要求2的装置,其中当多个命令存储在所述队列中时,所述读取单元按照存储的顺序从最早的开始读取所述命令。
4、根据权利要求2的装置,其中所述处理单元对所述命令执行加锁处理
5、根据权利要求2的装置,进一步包括:
多个第一状态机,其对应于命令类型被提供,并且监视每一所述命令的处理状态,其中
所述处理单元运行一个对应于所述第二命令的第一状态机,以及
当所述第一状态机完成操作时所述读取单元从所述队列中读取所述第一命令。
6、根据权利要求5的装置,其中当所述命令接收单元接收所述第一命令而所述第一命令类型的所有第一状态机被占用时,所述存储单元将所述第一命令存储所述队列中。
7、根据权利要求5的装置,进一步包括:
多个由所述第一状态机调用的第二状态机,所述第二状态机的数目小于所述第一状态机的数目;以及
仲裁单元,生成多个所述第一状态机的等待队列,并且允许所述第一状态机按照在所述等待队列中存储的顺序从最早的开始调用所述第二状态机。
8、根据权利要求5的装置,进一步包括:
多个由所述第一状态机使用的设备,所述设备的数目小于所述第一状态机的数目;
仲裁单元,生成多个所述第一状态机的等待队列,并且允许所述第一状态机按照在所述等待队列中存储的顺序从最早的开始使用所述设备;以及
计时器,管理使用对应于所述第一状态机类型的所述设备的时间,其中
所述仲裁单元确定当所述计时器计数所述时间时被请求的设备是可用的,并且允许在所述等待队列中最早的第一状态机使用所述被请求的设备。
9、一种连接到多个处理器的高速缓冲存储器包括:
命令接收单元,从所述多个处理器的每一个中接收多个命令;
处理单元,根据每一个所述接收的命令执行处理;
多个第一状态机,其对应于所述命令的类型被提供,并且监视每一所述命令的处理状态;以及
存储单元,当所述命令接收单元接收所述命令而所述命令的类型的所有第一状态机被占用时,所述存储单元将所述命令接收单元接收的命令存储在队列中。
10、一种在连接到多个处理器的高速缓冲存储器中的处理方法,包括:
从所述多个处理器的每一个中接收多个命令;
根据每一个所述命令执行处理;以及
当第一命令被接收而第二命令被处理时,将所述第一命令存储在队列中,对应于所述第一命令的高速缓冲存储器行地址与对应于正在被处理的所述第二命令的高速缓冲存储器行地址是相同的。
11、根据权利要求10的方法,其中当所述第二命令的处理完成时读出存储在所述队列中的所述第一命令,并且根据所述读取的第一命令执行处理。
12、根据权利要求11的方法,其中当多个命令被存储在所述队列中时,按照存储的顺序从最早的开始读取所述命令。
13、根据权利要求11的方法,其中对所述命令执行加锁处理。
14、根据权利要求11的方法,进一步包括:
运行在多个第一状态机中的所述第二命令所对应的第一状态机,所述多个第一状态机对应于所述命令的类型而提供并且监视每一个所述命令的处理状态;以及
当所述第一状态机完成操作时从所述队列中读取所述第一命令。
15、根据权利要求14的方法,其中当所述第一命令被接收而所述第一命令的类型的所有第一状态机被占用时,将所述第一命令存储在所述队列中。
16、根据权利要求14的方法,进一步包括:
生成用于调用多个第二状态机中的一个的多个所述第一状态机的等待队列,
所述第二状态机的数目小于第一状态机的数目;以及
允许所述第一状态机按照在所述等待队列中存储的顺序从最早的开始调用所述第二状态机。
17、根据权利要求14的方法,进一步包括:
生成用于使用多个设备中的一个的多个所述第一状态机的等待队列,所述设备的数目小于所述第一状态机的数目;
允许所述第一状态机按照在所述等待队列中存储的顺序从最早的开始使用所述设备;
管理使用对应于所述第一状态机的类型对应的设备的时间;
当由计时器计数所述时间时确定被请求的设备是可用的;以及
允许所述等待队列中的最早的第一状态机使用所述被请求的设备。
18、一种在连接到多个处理器的高速缓冲存储器中的处理方法,包括:
从所述多个处理器的每一个中接收多个命令;
根据每一个所述接收的命令执行处理;以及
当所述命令被接收而在多个所述第一状态机中所述命令的类型的所有的第一状态机被占用时,将所述命令存储在队列中,所述多个第一状态机对应于所述命令的类型而提供,并且监视每一所述命令的处理状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006150445A JP4208895B2 (ja) | 2006-05-30 | 2006-05-30 | キャッシュメモリ装置および処理方法 |
JP150445/2006 | 2006-05-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101082882A true CN101082882A (zh) | 2007-12-05 |
Family
ID=38477345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100923685A Pending CN101082882A (zh) | 2006-05-30 | 2007-02-28 | 高速缓冲存储器装置和高速缓冲存储方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070283100A1 (zh) |
EP (1) | EP1862907A3 (zh) |
JP (1) | JP4208895B2 (zh) |
CN (1) | CN101082882A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129411A (zh) * | 2010-01-18 | 2011-07-20 | 厄塞勒拉特公司 | 存取缓冲器 |
WO2013118010A1 (en) * | 2012-02-08 | 2013-08-15 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
CN104778013A (zh) * | 2014-01-15 | 2015-07-15 | 三星电子株式会社 | 追踪对存储器的行的激活的方法和设备 |
CN105765547A (zh) * | 2013-10-25 | 2016-07-13 | 超威半导体公司 | 用于执行总线锁定和转译后备缓冲器失效的方法和装置 |
CN106874210A (zh) * | 2015-12-11 | 2017-06-20 | 爱思开海力士有限公司 | 用于半导体存储装置的控制器及其操作方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7616470B2 (en) * | 2006-06-16 | 2009-11-10 | International Business Machines Corporation | Method for achieving very high bandwidth between the levels of a cache hierarchy in 3-dimensional structures, and a 3-dimensional structure resulting therefrom |
US9021240B2 (en) * | 2008-02-22 | 2015-04-28 | International Business Machines Corporation | System and method for Controlling restarting of instruction fetching using speculative address computations |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US8521982B2 (en) * | 2009-04-15 | 2013-08-27 | International Business Machines Corporation | Load request scheduling in a cache hierarchy |
JP2011008731A (ja) | 2009-06-29 | 2011-01-13 | Fujitsu Ltd | キャッシュメモリ装置、半導体集積回路および演算処理装置 |
US8775153B2 (en) * | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
KR101904203B1 (ko) | 2012-06-20 | 2018-10-05 | 삼성전자주식회사 | 시프트 알고리즘을 이용하여 대용량 소스 이미지의 특징점 정보를 추출하는 장치 및 방법 |
US9373182B2 (en) * | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US9405551B2 (en) | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US9934154B2 (en) * | 2015-12-03 | 2018-04-03 | Samsung Electronics Co., Ltd. | Electronic system with memory management mechanism and method of operation thereof |
US10769068B2 (en) * | 2017-11-10 | 2020-09-08 | International Business Machines Corporation | Concurrent modification of shared cache line by multiple processors |
US20220382578A1 (en) * | 2021-05-28 | 2022-12-01 | Microsoft Technology Licensing, Llc | Asynchronous processing of transaction log requests in a database transaction log service |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
EP0407087B1 (en) * | 1989-07-06 | 1997-08-20 | Digital Equipment Corporation | Memory subsystem input queue |
US5276847A (en) * | 1990-02-14 | 1994-01-04 | Intel Corporation | Method for locking and unlocking a computer address |
JP3451103B2 (ja) * | 1992-11-27 | 2003-09-29 | 富士通株式会社 | データ通信装置及び方法 |
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5893160A (en) * | 1996-04-08 | 1999-04-06 | Sun Microsystems, Inc. | Deterministic distributed multi-cache coherence method and system |
US6408345B1 (en) * | 1999-07-15 | 2002-06-18 | Texas Instruments Incorporated | Superscalar memory transfer controller in multilevel memory organization |
US6484240B1 (en) * | 1999-07-30 | 2002-11-19 | Sun Microsystems, Inc. | Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols |
US6801203B1 (en) * | 1999-12-22 | 2004-10-05 | Microsoft Corporation | Efficient graphics pipeline with a pixel cache and data pre-fetching |
US6694417B1 (en) * | 2000-04-10 | 2004-02-17 | International Business Machines Corporation | Write pipeline and method of data transfer that sequentially accumulate a plurality of data granules for transfer in association with a single address |
US6895472B2 (en) * | 2002-06-21 | 2005-05-17 | Jp Morgan & Chase | System and method for caching results |
US7047374B2 (en) * | 2002-02-25 | 2006-05-16 | Intel Corporation | Memory read/write reordering |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7047322B1 (en) * | 2003-09-30 | 2006-05-16 | Unisys Corporation | System and method for performing conflict resolution and flow control in a multiprocessor system |
-
2006
- 2006-05-30 JP JP2006150445A patent/JP4208895B2/ja not_active Expired - Fee Related
- 2006-12-08 US US11/635,518 patent/US20070283100A1/en not_active Abandoned
-
2007
- 2007-02-26 EP EP07250797A patent/EP1862907A3/en not_active Withdrawn
- 2007-02-28 CN CNA2007100923685A patent/CN101082882A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8838853B2 (en) | 2010-01-18 | 2014-09-16 | Marvell International Ltd. | Access buffer |
CN102129411B (zh) * | 2010-01-18 | 2015-09-09 | 马维尔国际有限公司 | 存取缓冲器 |
CN102129411A (zh) * | 2010-01-18 | 2011-07-20 | 厄塞勒拉特公司 | 存取缓冲器 |
GB2512804B (en) * | 2012-02-08 | 2015-03-04 | Ibm | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
US8799589B2 (en) | 2012-02-08 | 2014-08-05 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
GB2512804A (en) * | 2012-02-08 | 2014-10-08 | Ibm | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
US8793442B2 (en) | 2012-02-08 | 2014-07-29 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
WO2013118010A1 (en) * | 2012-02-08 | 2013-08-15 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
CN105765547A (zh) * | 2013-10-25 | 2016-07-13 | 超威半导体公司 | 用于执行总线锁定和转译后备缓冲器失效的方法和装置 |
CN104778013A (zh) * | 2014-01-15 | 2015-07-15 | 三星电子株式会社 | 追踪对存储器的行的激活的方法和设备 |
CN104778013B (zh) * | 2014-01-15 | 2019-06-25 | 三星电子株式会社 | 追踪对存储器的行的激活的方法和设备 |
CN106874210A (zh) * | 2015-12-11 | 2017-06-20 | 爱思开海力士有限公司 | 用于半导体存储装置的控制器及其操作方法 |
CN106874210B (zh) * | 2015-12-11 | 2020-11-27 | 爱思开海力士有限公司 | 用于半导体存储装置的控制器及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2007323192A (ja) | 2007-12-13 |
EP1862907A2 (en) | 2007-12-05 |
US20070283100A1 (en) | 2007-12-06 |
JP4208895B2 (ja) | 2009-01-14 |
EP1862907A3 (en) | 2009-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101082882A (zh) | 高速缓冲存储器装置和高速缓冲存储方法 | |
CN101772759B (zh) | 高速缓存锁定设备及其方法 | |
JP3589394B2 (ja) | リモート資源管理システム | |
US7082601B2 (en) | Multi-thread execution method and parallel processor system | |
US8621478B2 (en) | Multiprocessor system with multiple concurrent modes of execution | |
CN101183338B (zh) | 本地片载系统和在本地片载系统中维持存储一致性的方法 | |
EP0351955B1 (en) | Multiprocessor systems with cross-interrogated store-in-caches | |
CN101354682B (zh) | 一种用于解决多处理器访问目录冲突的装置和方法 | |
TW591384B (en) | Method and system for speculatively invalidating lines in a cache | |
US10423528B2 (en) | Operation processing device, information processing apparatus, and control method for operation processing device | |
US10416925B2 (en) | Distributing computing system implementing a non-speculative hardware transactional memory and a method for using same for distributed computing | |
JP3871305B2 (ja) | マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 | |
CN100394407C (zh) | 低等待时间存储器系统访问 | |
CN110209601A (zh) | 存储器接口 | |
US7653788B2 (en) | Cache coherency in a shared-memory multiprocessor system | |
US9223717B2 (en) | Computer cache system providing multi-line invalidation messages | |
US11445020B2 (en) | Circuitry and method | |
KR960012423B1 (ko) | 비동기식 디지탈 프로세서 사이에 정보를 교환하기 위한 방법 및 장치 | |
JP2022015514A (ja) | 半導体装置 | |
EP0531003A1 (en) | Data processing with bidirectional data bus reservation priority controls | |
EP0165823B1 (en) | Tag control circuit for buffer storage | |
WO1999032955A2 (en) | Private cache miss and access management in a multiprocessor system with shared memory | |
CN101013399A (zh) | 用于将数据线写入l2高速缓存的方法 | |
Simoni | Implementing a directory-based cache consistency protocol | |
JP2023011449A (ja) | 演算処理装置及び演算処理装置の動作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |