多核处理系统与方法
相关申请的交叉引用
本申请要求于2013年1月16日提交的美国临时专利申请No.61/753,091,以及于2013年1月16日提交的美国临时专利申请No.61/753,094的优先权,上述申请的全部说明通过引入并入本文。
技术领域
本公开的各实施例涉及计算系统,更具体地,涉及多处理器系统的架构。
背景技术
除非这里另外指出,否则这部分中所描述的方法并不构成针对本公开中的权利要求书的现有技术也并不被认可通过由于包括在该部分之中而作为现有技术。
多处理器系统通常包括多个处理器。多处理器系统还可以包括多个高速缓存。在一个示例中,高速缓存可以仅由所述多个处理器中的相应的一个处理器来访问。在另一示例中,高速缓存可以被共享,即,可以由一个以上的所述多个处理器访问。
概述
在各种实施方式中,本发明公开了一种系统,包括第一多个处理内核,所述第一多个处理内核中的多个处理内核耦合到第一多个内核接口模块中的相应的内核接口模块,所述第一多个内核接口模块配置为耦合以形成处理内核的第一环形网络;第二多处理内核,所述第二多个处理内核中的多个处理内核耦合到第二多个内核接口模块中的相应的内核接口模块,所述第二多个内核接口模块配置为耦合以形成处理内核的第二环形网络;第一全局接口模块,配置为通过在所述第一环形网络和第三环形网络中发送数据以形成所述第一环形网络和第三环形网络之间的接口,所述第三环形网络将所述第一环形网络和第二环形网络互连;和第二全局接口模块,配置为通过在所述第二环形网络和第三环形网络之间传输数据以形成所述第二环形网络和第三环形网络的接口。在一个实施例中,所述系统还包括多个高速缓存,所述第一多个处理内核和第二多个处理内核耦合到所述多个高速缓存中的相应的高速缓存中。在一个实施例中,所述多个高速缓存中的第一高速缓存被耦合到所述第一多个处理器中的第一处理器,所述第一高速缓存配置为由所述第一处理器通过旁路所述第一环形网络和第二环形网络访问。在一个实施例中,所述第一高速缓存配置为由所述第一多个处理器中的第二处理器经由第一环形网络访问。在一个实施例中,所述第一高速缓存配置为由所述第二多个处理器的第三处理器通过(ⅰ)所述第二环形网络、(ii)所述第三环形网络、以及(iii)所述第一环形网络访问。在一个实施例中,所述多个高速缓存中的一些包括在或耦合到所述第一多个内核接口模块和第二多个内核接口模块中相应的一个内核接口模块。在一个实施例中,所述第一多个处理器中的第一处理器耦合到所述多个高速缓存中的第一高速缓存;所述第一多个处理器中的第二处理器耦合到所述多个高速缓存中的第二高速缓存;所述第二多个处理器的第三处理器耦合到所述多个高速缓存中的第三高速缓存;以及所述第一处理器被配置为(ⅰ)通过旁路所述第一环形网络和第二环形网络访问第一高速缓存,以从所述第一高速缓存中读取第一数据,(ⅱ)通过所述第一环形网络,连接所述第二高速缓存以从所述第二缓存中读取第二数据,以及(iii)通过所述第一环形网络、第二环形网络和第三环形网络访问第三缓存以从所述第三高速缓存中读取第三数据。在一个实施例中,所述第一多个处理器中的第一处理器耦合到所述多个高速缓存中的第一高速缓存;所述第一多个处理器中的第二处理器耦合到所述多个高速缓存中的第二高速缓存;所述第二多个处理器中的第三处理器耦合到所述多个高速缓存中的第三高速缓存;所述第一处理器被配置为(ⅰ)访问第一高速缓存,以从所述第一高速缓存中读取第一数据,(ⅱ)响应于所述第一数据没有被高速缓存在第一高速缓存中,访问第二高速缓存以从第二高速缓存中读取所述第一数据,以及(iii)响应于所述第一数据没有被高速缓存在所述第一高速缓存和第二高速缓存中,访问第三高速缓存以从第三高速缓存中读取第一数据。在一个实施例中,所述第一处理器被进一步配置为,响应于所述第一数据没有被高速缓存在所述第一高速缓存、第二高速缓存和第三高速缓存中,访问耦合到所述第一环形网络和第二环形网络中的的存储器以从所述存储器中读取所述第一数据。在一个实施例中,所述系统还包括:第三多处理内核,所述多个第三处理核耦合到第三多内核接口模块中的相应的内核接口模块,所述第三多内核接口模块配置为耦合以形成第四环形网络;和第三全局接口模块,配置为形成所述第三环形网络和第四环形网络之间的接口。
在各种实施方式中,本发明公开一种方法,包括:通过耦合到第一多内核接口模块中的相应的一个的多个第一多处理内核,与所述第一多内核接口模块的相应内核接口模块通信,所述第一多内核接口模块被布置在第一环形网络中;通过耦合到相应的多个第二多内核接口模块的多个第二多处理内核,与所述多个第二内核接口模块的相应内核接口模块通信,所述多个第二内核接口模块被布置在第二环形网网络中;通过在所述第一环形网络和所述第三环形网络中传输数据,由第一全局接口模块将所述第一环形网络和第三环形网络接口连接,所述第三环形网络互连到所述第一环形网络和所述第二环形网络;和通过在所述第二环形网络和第三环形网络之间传输数据,由第二全局接口模块将所述第二环网和第三环形网络接口连接。在一个实施例中,所述第一多处理内核和第二多处理内核中的多个被耦合到所述多个高速缓存中的相应高速缓存中,该方法还包括:由多个所述多个高速缓存与一个或多个所述第一多处理内核和第二多处理内核通信。在一个实施例中,所述多个高速缓存中的第一高速缓存被耦合到所述第一多处理器中的第一处理器,所述方法还包括:通过旁路所述第一环形网络和第二环形网络由所述第一处理器访问所述第一高速缓存。在一个实施例中,所述方法进一步包括:由所述第一多处理器中的第二处理器通过所述第一环形网络访问所述第一高速缓存。在一个实施例中,所述方法进一步包括:由所述第二多处理器中的第三处理器,通过(ⅰ)所述第二环形网络,(ii)所述第三环形网络,以及(iii)所述第一环形网络访问所述第一高速缓存。在一个实施例中,所述方法进一步包括:耦合多个所述多个高速缓存至所述第一多个内核接口模块和第二多个内核接口模块中相应的一个内核接口模块。在一个实施例中,所述第一多处理器的第一处理器耦合到所述多个高速缓存中的第一高速缓存,所述第一多处理器的第二处理器耦合到所述多个高速缓存中的第二高速缓存,所述第二多处理器的第三处理器耦合到所述多个高速缓存中的第三高速缓存,所述方法还包括:通过旁路所述第一环形网络和第二环形网络,由所述第一处理器访问第一高速缓存以从所述第一高速缓存中读取第一数据;经由所述第一环形网络由所述第一处理器访问所述第二高速缓存,以从所述第二高速缓存中读取第二数据;以及经由所述第一环形网络、第二环形网络和第三环形网络由所述第一处理器访问所述第三高速缓存,以从所述第三高速缓存中读取第三数据。在一个实施例中,所述第一多处理器中的第一处理器被耦合到所述多个高速缓存中的第一高速缓存,所述第一多处理器中的第二处理器被耦合到所述多个高速缓存中的第二高速缓存,所述第二多处理器的第三处理器被耦合到所述多个高速缓存中的第三高速缓存,该方法还包括:由所述第一处理器访问所述第一高速缓存以从所述第一高速缓存读取第一数据;响应于所述第一数据没有被缓存在所述第一高速缓存中,由所述第一处理器访问所述第二高速缓存以从所述第二高速缓存中读取第一数据;以及响应于所述第一数据没有被缓存在所述第一高速缓存和第二高速缓存中,由所述第一处理器访问所述第三高速缓存以从所述第三高速缓存中读取第一数据。在一个实施例中,响应于所述第一数据没有被缓存在所述第一高速缓存、第二高速缓存和第三高速缓存中,由所述第一处理器访问耦合到所述第一环形网络和第二环形网络上的存储器来从所述存储器中读取第一数据。在一个实施例中,所述方法还包括:由耦合到第三多内核接口模块中的相应多个的多个第三多处理内核,与所述第三多内核接口模块中的相应的内核接口模块通信,所述第三多内核接口模块布置在第四环形网络;和通过第三全局接口模块,在所述第四环形网络和第三环形网络之间接口连接。
在各种实施方式中,本发明公开了一种系统,包括:多个处理内核;多个内核接口模块,其中多个所述多个处理内核被耦合到所述多内核接口模块中的相应的内核接口模块;多个高速缓存,其中多个所述多内核接口模块包括或耦合到所述多个高速缓存中的相应的高速缓存中;存储器;以及耦合到所述存储器的存储器接口模块,所述存储器接口模块和所述多个内核接口模块被配置为第一环形网络,多个所述多内核接口模块配置为通过在所述相应的处理核和所述第一环形网络之间传输数据将所述相应的处理内核接口连接至所述第一环形网络,并且所述存储器接口模块被配置成通过在所述存储器和所述第一环形网络之间传输数据将所述存储器接口连接至所述第一环形网络。在一个实施例中,所述系统还包括:全局接口模块,配置为通过在第一环形网络和第二环形网络之间传输数据而在第一环形网络和第二环形网络之间建立连接,该第二环形网络与第一环形网络隔离。在一个实施例中,存储在所述存储器中的第一地址的数据被缓存到所述第一环形网络的多个高速缓存中的一个或多个高速缓存中。在一个实施例中,所述多个内核接口模块的第一内核接口模块是所述存储器的第一地址的本地接口模块,以使得所述第一内核接口模块保留高速缓存一致性信息,该一致性信息与维护存储在存储器第一地址中数据的一致性相关,第一内核接口模块包括:用于识别被配置为存储在所述存储器中的第一地址的高速缓存数据的多个高速缓存中的一个或多个高速缓存的表。在一个实施例中,所述多个内核接口模块的第一内核接口模块维护与存储在所述存储器中的第一地址的数据相关联的高速缓存一致性信息,所述第一内核接口模块包括:用于识别所述多个处理内核的一个或多个处理核的表,使得对应于所述一个或多个处理核的一个或多个高速缓存被配置为缓存在所述存储器的第一地址中存储的数据,该表是可以用来在多个高速缓存中维护存储在存储器第一地址中数据的一致性。在一个实施例中,所述第二环形网络被配置为在所述第一环形网络和第三环形网络之间建立连接,其中所述多个高速缓存是第一多个高速缓存,其中第一内核接口模块维护与存储在存储器第一地址中数据相关联的高速缓存一致性信息,该系统进一步包括:第二多个高速缓存,耦合到所述第三环形网络并与所述第三环形网络相关联,其中所述第一内核接口模块还包括一个数据表,该数据表用于识别所述多个第二高速缓存中的至少一个高速缓存是否被配置为缓存存储在所述存储器的第一地址中的数据。在一个实施例中,所述第一内核接口模块形成在所述第一环形网络中用于所述存储器的第一地址的本地接口模块,使得所述第一内核接口模块维持与维持存储在所述存储器的第一地址中的数据的一致性相关联的高速缓存一致性信息。在一个实施例中,所述存储器接口模块被配置成处理存储器访问请求,该请求通过处理核以访问存储器,从而通过处理核来从存储器中读取数据。在一个实施例中,选择性地多个所述多个内核接口模块直接耦合到所述多个高速缓存中的相应高速缓存中,使得多个所述多个内核接口模块通过旁路所述第一环形网络访问该多个高速缓存中的相应高速缓存。在一个实施例中,所述系统还包括:输入/输出接口模块,配置成耦合到所述第一环形网络。在一个实施例中,所述输入/输出接口模块还被配置为通过在所述第一环形网络和一个或多个输入/输出设备之间传输数据,以形成所述第一环形网络和一个或多个输入/输出设备之间的接口。
在各种实施方式中,本发明公开一种方法,包括:由耦合到多个内核接口模块中的相应的多个处理内核中的多个处理内核与所述多个内核接口模块中的相应内核接口模块通信;由耦合到多个高速缓存中相应的一个高速缓存的多个内核接口模块中的多个内核接口模块与所述多个高速缓存相应的高速缓存通信;以及,由存储器接口模块与耦合到该存储器接口模块的存储器通信,所述存储器接口模块和所述多个内核接口模块被配置为第一环形网络,所述多个内核接口模块中的多个内核接口模块配置为通过在所述相应的处理核和所述第一环形网络之间传输数据将所述相应的处理内核接口连接至所述第一环形网络,所述存储器接口模块配置为通过在所述存储器和所述第一环形网络之间传输数据将所述存储器接口连接至所述第一环形网络。在一个实施例中,所述方法进一步包括:通过全局接口模块与多个所述多内核接口模块通信,所述全局接口模块配置为通过在所述第一环形网络和第二环形网络之间传输数据将所述第一环形网络和第二环形网络之间接口连接,所述第二环形网络与所述第一环形网络分离。在一个实施例中,所述方法还包括:缓存存储在所述多个高速缓存中的一个或多个高速缓存中的所述存储器的第一地址的数据。在一个实施例中,所述多个内核接口模块的第一内核接口模块是用于所述存储器第一地址的本地接口模块,使得所述第一内核接口模块维护与存储在所述存储器中的第一地址的数据相关联的高速缓存一致性信息,所述方法还包括:在第一内核接口模块,维护一个数据表,该表被配置为缓存存储在所述存储器第一地址的数据的所述多个高速缓存的一个或多个高速缓存。在一个实施例中,所述多个内核接口模块的第一内核接口模块是用于所述存储器的第一地址的本地接口模块,使得所述第一内核接口模块维护与存储在所述存储器中的第一地址的数据相关联的高速缓存一致性信息,所述方法还包括:在所述第一内核接口模块,维护识别所述多个处理核的一个或多个处理核使得对应于所述一个或多个处理核的一个或多个高速缓存被配置为缓存存储在所述存储器的第一地址的数据的表,所述表用于在多数多个高速缓存中维护存储在所述存储器第一地址中数据的一致性。在一个实施例中,所述第二环形网络被配置为在所述第一环形网络和第三环形网络之间接口连接,其中所述多个高速缓存是第一多个高速缓存,其中第二多个高速缓存耦合到所述第三环形网络并与所述第三环形网络相关联,且其中第一内核接口模块维护与存储在所述存储器中的第一地址的数据相关联的高速缓存一致性信息,所述方法还包括:在所述第一内核接口模块,维护识别所述第二高速缓存中的至少一个是否被配置为缓存存储在所述存储器的第一地址中的数据的表。在一个实施例中,所述方法还包括:由所述存储器接口模块处理存储器访问请求以访问所述存储器,以由来自所述存储器的处理核读取数据。在一个实施例中,所述方法还包括:由多个所述多个内核接口模块,与输入/输出接口模块通信,所述输入/输出接口模块配置为耦合到所述第一环形网络。所述方法还包括:由所述输入/输出接口模块通过在所述第一环形网络和所述一个或多个输入/输出设备之间传输数据将所述第一环形网络和一个或多个输入/输出设备接口连接。
在各种实施方式中,本发明公开了一种方法,包括:由多个处理内核中的多个处理内核与多个内核接口模块的相应的内核接口模块通信,所述多个内核接口模块被配置为第一环形网络,其中所述多个内核接口模块中的多个内核接口模块被耦合到所属多个高速缓存中相应的高速缓存;由所述多个内核接口模块的第一内核接口模块从所述多个处理内核的相对应的第一处理核接收事务请求以读取数据;由所述第一内核接口模块检查,要被读出的数据是否被缓存在被耦合到所述第一内核接口模块的第一高速缓存中;并且如果检查出被读出的数据被缓存在第一高速缓存中,则由所述第一内核接口模块传输业务请求至第二内核接口模块以检查要被读出的数据是否缓存在耦合至所述第二内核接口模块的第二高速缓存中。在一个实施例中,发送该事务请求到所述第二内核接口模块进一步包括:独立于将要读取的数据是否被高速缓存在所述第一高速缓存中,由所述第一内核接口模块发送该事务请求到所述第二内核接口模块以判断将要读取的数据是否被缓存在所述第二缓存中。
在一个实施例中,发送该事务请求到所述第二内核接口模块进一步包括:确定将要读取的数据与存储器的第一存储器地址相关联;确定所述第二内核接口模块是所述存储器的第一存储器地址的本地接口模块;以及响应于确定所述第二内核接口模块是用于所述存储器的第一存储器地址的所述本地接口模块,发送所述事务请求至所述第二内核接口模块,以检查将被读取数据是否被缓存在所述第二高速缓存中。在一个实施例中,确定所述第二内核接口模块是用于所述存储器的第一存储器地址的本地接口模块进一步包括:确定所述第二内核接口模块存储了与在所述存储器的第一存储器地址的数据的相关联的信息;以及响应于确定所述第二内核接口模块存储了与存储在所述存储器的第一存储器地址的数据高速缓存一致性相关联的信息,确定所述第二内核接口模块是用于所述存储器的第一存储器地址的本地接口模块。在一个实施例中,所述方法进一步包括:响应于检查将要读取的数据是否被缓存在第一高速缓存中,由所述第一内核接口模块确定将要读取的数据被高速缓存在第一高速缓存中;由第一内核接口模块从所述第一高速缓存中读取数据;由所述第一内核接口模块从所述第二内核接口模块接收响应,所述响应指示将被读取的数据不是缓存在第二高速缓存中;并且随后,从所述第二内核接口模块接收指示,该指示用于表明要读取的数据没有被缓存在第二缓存中的响应,由所述第一内核接口模块发射从第一高速缓存中读取的数据到所述第一处理核。在一个实施例中,所述方法进一步包括:响应于检查将要读取的数据是否被缓存在第一高速缓存中,由所述第一内核接口模块确定将要读取的数据不是缓存在第一个高速缓存中,其中将要读取的数据被缓存在第二缓存中;由所述第二内核接口模块读取来自所述第二高速缓存的数据,并且由所述第二内核接口模块经由第一内核接口模块发送从第二高速缓存读出的数据至第一处理内核。该方法进一步包括:确定将要读取的数据不是缓存在第一高速缓存和第二高速缓存的任一个中;以及响应于确定要被读出的数据不是缓存在第一高速缓存和第二高速缓存的任一个中,发送所述事务请求到第三内核接口模块,以检查将要读取的数据是否被缓存在耦合到所述第三内核接口模块的第三高速缓存中。该方法进一步包括:(i)响应于确定要被读出的数据不是缓存在第一高速缓存和第二高速缓存的任一个中,和(ⅱ)当发送事务请求到第三内核接口模块时,发送所述事务请求到第四内核接口模块,以检查将要读取的数据是否被缓存在耦合到所述第四内核接口模块的第四高速缓存中。在一个实施例中,所述多个内核接口模块包括:(i)所述第一内核接口模块,(ⅱ)所述第二内核接口模块,以及(iii)一个或多个其他内核接口模块,并且其中所述方法还包括:确定要读取的数据不是缓存在第一高速缓存和第二高速缓存的任一个中;以及响应于确定要被读取的数据没有被缓存在第一高速缓存和第二高速缓存的任一个中,发送所述事务请求至所述一个或多个其他内核接口模块的每一个,以判断将要读取的数据是否被缓存在分别耦合到所述一个或多个其他内核接口模块的一个或多个其他高速缓存中。该方法进一步包括:确定将要读取的数据不是缓存在一个或多个其它高速缓存的任一个中;以及响应于确定要被读出的数据不是被缓存在以下任一个中(i)所述第一高速缓存,(ⅱ)所述第二高速缓存,以及(iii)一个或多个其他高速缓存,发送事务请求至存储器接口模块来从被耦合到所述存储器接口模块的存储器中抓取数据。该方法进一步包括:响应于发送所述事务请求至存储器接口模块,通过存储器接口模块从所述存储器中抓取数据;并且发送从存储器读出的数据到所述第一处理核。该方法进一步包括:操作启发式算法,该算法保证了将要读取的数据被缓存在所述第一高速缓存和第二高速缓存中概率高的一个或两个。
在各种实施方式中,本发明提供了一种系统,包括:多个处理内核;和多个内核接口模块,所述多个多处理内核耦合到所述多个内核接口模块中的相应的内核接口模块,其中多个内核接口模块中的多个内核接口模块与多个高速缓存中的相应高速缓存相关联,其中所述多个内核接口模块的第一内核接口模块耦合到所述多个处理内核的相对应的第一处理内核,其中所述多个内核接口模块被配置为第一环形网络,其中所述第一内核接口模块被配置为从所述第一处理内核接收读取数据的事务请求,检查以确定将要读取的数据是否被缓存在耦合到所述第一内核接口模块的第一高速缓存中,且当检查以确定将要读取的数据是被缓存在第一高速缓存中时,发送事务请求到第二内核接口模块,以检查将要读取的数据是否被缓存在耦合到所述第二内核接口模块的第二高速缓存中。在一个实施例中,所述第一内核接口模块被配置为通过下述动作传输该事务请求至所述第二内核接口模块:确定要被读出的数据与存储器中的第一存储器地址相关联;确定所述第二内核接口模块是存储器的第一个存储器地址的本地接口模块;响应于确定所述第二内核接口模块是存储的第一存储器地址的本地接口模块,发送所述事务请求至所述第二内核接口模块以检查将要读取的数据是否被缓存在所述第二高速缓存中。在一个实施例中,所述第一内核接口模块进一步被配置为:响应于检查将要读取的数据是被缓存在所述第一高速缓存中,确定将要读取的数据被缓存在所述第一高速缓存中;从所述第一高速缓存读取所述数据;从所述第二内核接口模块接收响应,所述响应指示将要读取的数据没有被缓存在所述第二高速缓存中;接下来从所述第二内核接口模块接收指示,该指示表明将要读取的数据没有被缓存在所述第二高速缓存的响应,传输从所述第一高速缓存读取的数据值所述第一处理内核。在一个实施例中,所述第一内核接口模块进一步被配置为:响应于检查如果将要读取的数据被缓存在所述第一高速缓存中,确定将要读取的数据没有被缓存在所述第一高速缓存中,其中所述第二内核接口模块被配置为从所述第二高速缓存读取数据,并且通过所述第一内核接口模块传输从所述第二高速缓存读取的数据至所述第一处理内核。在一个实施例中,所述第一内核接口模块进一步被配置为:确定将要读取的数据没有被缓存在所述第一高速缓存和所述第二高速缓存中的任一个;和响应于确定将要读取的数据没有被缓存在所述第一高速缓存和所述第二高速缓存中的任一个,传输所述事务请求至第三内核接口模块以检查将要读取的数据是否被缓存在耦合到所述第三内核接口模块的第三高速缓存中。在一个实施例中,所述第一内核接口模块进一步被配置为:(i)响应于确定将要读取的数据没有被缓存在所述第一高速缓存和所述第二高速缓存中的任一个和(ii)当传输所述事务请求至第三内核接口模块时,传输所述事务请求至第四内核接口模块以检查将要读取的数据是否被缓存在耦合到所述第四内核接口模块的第四高速缓存中。在一个实施例中,所述多个内核接口模块包括:(i)所述第一内核接口模块,(ii)第二内核接口模块,和(iii)一个或多个其他内核接口模块,其中所述第一内核接口模块进一步被配置为:确定要被读出的数据不是缓存在第一高速缓存和第二高速缓存中的任一个;响应于确定要被读出的数据不是缓存在第一高速缓存和第二高速缓存中的任一个,发送所述事务请求至所述一个或多个其他内核接口模块的每一个,以检查将要读取的数据是否被缓存在分别连接到所述一个或多个其他内核接口模块的一个或多个其他缓存中;确定要被读出的数据不是缓存在所述一个或多个其它高速缓存的任一个中;以及响应于确定要读取的数据不是缓存在以下任一个:(i)所述第一高速缓存、(ⅱ)所述第二高速缓存以及(iii)一个或多个其它高速缓存,发送所述事务请求至存储器接口模块以从耦合到所述存储器接口模块的存储器抓取所述数据。所述第一环形网络包括所述存储器接口模块。所述存储器接口模块被配置为:响应于接收所述事务请求,从所述存储器中获取所述数据;并且通过所述第一环形网络发送从所述存储器读出的数据至所述第一处理内核。
在各种实施方式中,本发明提供一种方法,包括:由耦合到第一多个内核接口模块的相应一个的多个第一多个处理内核与所述第一多个内核接口模块相应的内核接口模块通信,所述第一多个内核接口模块被布置在第一环形网络中,所述多个第一多内核接口模块被配置为通过在所述相应处理内核和所述第一环形网络中间传输将所述相应的处理内内核接口连接至第一环形网络;由耦合到第二多个内核接口模块的多个第二多个处理内核与所述第二多个内核接口模块的相应的内核接口模块通信,所述第二多个核处理模块被布置于第二环形网络,所述第二多个核处理模块被配置为通过在所述相应的处理内核和所述第二环形网络之间传输数据将所述相应的处理内内核接口连接至所述第二环形网络;由全局环形网络在所述第一环形网络和所述第二环形网络之间接口连接;由所述第一多个内核接口模块的第一内核接口模块从所述第一多个内核接口模块相应的第一处理内核接收事务请求以读取数据,第一高速缓存被耦合到所述第一内核接口模块;并且由所述第一内核接口模块传输所述事务请求至所述第一多个内核接口模块的第二内核接口模块,以检查将要读取的数据是否被缓存在耦合到所述第二内核接口模块的第二高速缓存中。传输所述事务请求至所述第二内核接口模块进一步包括:由所述第一内核接口模块通过所述第一环形网络传输所述事务请求至所述第二内核接口模块。传输所述事务请求至所述第二内核接口模块进一步包括:确定将要读取的数据与存储器的第一存储器地址相关联;确定所述第二内核接口模块是用于所述存储器的所述第一存储器地址的所述第一环形网络中的本地接口模块;和响应于确定所述第二内核接口模块是用于所述存储器的所述第一存储器地址的所述第一环形网络中的本地接口模块,传输所述事务请求至所述第二内核接口模块。确定所述第二内核接口模块是用于所述存储器的所述第一存储器地址的所述第一环形网络中的本地接口模块进一步包括:确定所述第二内核接口模块在耦合到所述第一环形网络和第二环形网络的多个高速缓存中存储与维护存储在所处存储器的第一存储器地址的数据的高速缓存一致性相关联的信息;和响应于确定所述第二内核接口模块存储与维护存储在所处存储器的第一存储器地址的数据的高速缓存一致性相关联的信息,确定所述第二内核接口模块是所述存储器的第一存储器地址的本地接口模块。在一个实施例中,所述方法还包括:确定要被读出的数据不是缓存在第二高速缓存中;以及响应于确定要被读出的数据不是缓存在第二高速缓存中,由所述第一内核接口模块传输该事务请求到所述第二多个内核接口模块的第三内核接口模块,以检查将要读取的数据是否被缓存在耦合到所述第三内核接口模块的第三高速缓存中。发送所述事务请求到所述第三内核接口模块进一步包括:由所述第一内核接口模块通过所述第一环形网络、所述全局环形网络和所述第二环形网络传输该事务请求至所述第三内核接口模块。发送所述事务请求到所述第三内核接口模块进一步包括:确定将要读取的数据与存储器的第一存储器地址相关联;确定所述第三内核接口模块是用于存储器的第一存储器的地址在所述第二环形网络中的本地接口模块,使得所述第三内核接口模块存储与维护存储在耦合到所述第二环形网络的多个高速缓存的所述存储器的第一存储器地址的数据的高速缓存一致性相关联的信息;以及响应于确定所述第三内核接口模块是所述第二环形网络中的所述存储器的第一存储器地址的本地接口模块,传输所述事务请求至所述第三内核接口模块。确定将要读取的数据不是缓存在所述第二高速缓存中还包括:响应于传输所述事务请求至所述第二内核接口模块,由所述第一内核接口模块接收来自所述第二内核接口模块的响应,所述响应指示将要读取的数据不是缓存在所述第二高速缓存中;以及基于所述响应,确定将被读出的数据不是缓存在所述第二高速缓存中。所述方法进一步包括:响应于传输所述事务请求至所述第三内核接口模块,确定将要读取的数据不是缓存在所述第三高速缓存中;和响应于确定将要读取的数据不是缓存在所述第三高速缓存中,传输所述事务请求至存储器接口模块以获取来自耦合到所述存储器接口模块的存储器的数据,所述存储器接口模块配置为在所述存储器和相应的环形网络之间传输数据。所述存储器接口模块被耦合到所述第一环形网络,且其中传输所述事务请求至所述存储器接口模块包括:通过所述第一环形网络,传输所述事务请求至所述存储器接口模块以获取来自耦合到所述存储器接口模块的存储器的数据。所述存储器接口模块被耦合到所述第二环形网络,且其中传输所述事务请求至所述存储器接口模块包括:通过(i)所述第一环形网络、(ii)所述全局环形网络和(iii)所述第二环形网络,传输所述事务请求至所述存储器接口模块以获取来自耦合到所述存储器接口模块的存储器的数据。
在各种实施方式中,本发明公开了一种系统,包括:第一多个处理内核;第一多个内核接口模块,多个所述第一多个处理内核被耦合至所述第一多个内核接口模块相应的内核接口模块,所述第一多个内核接口模块被布置于第一环形网络,多个所述第一内核接口模块配置为通过在所述相应的处理内核和所述第一环形网络之间传输数据将所述第一多个处理内核相应的处理内内核接口连接至所述第一环形网络;第二多个处理内核;第二多个内核接口模块,所述第二多个处理内核耦合到所述第二多个内核接口模块的相应的内核接口模块,所述多个第二内核接口模块被布置在第二环形网络,所述多个第二多个处理内核被配置为通过在所述相应的处理内核所述第二环形网络之间传输数据将所述第二多个处理内核的相应的处理内内核接口连接到所述第二环形网络;和全局环形网络,被配置为在所述第一环形网络和第二环形网络之间接口连接,其中所述第一多个内核接口模块的第一内核接口模块被配置为,从所述第一多个处理内核的相应的第一处理内核接收读取数据的事务请求,第一高速缓存被耦合到所述第一内核接口模块,并由所述第一内核接口模块发送所述事务请求到所述第一多个内核接口模块的第二内核接口模块,以检查要被读出的数据是否被缓存在被耦合到所述第二内核接口模块的第二高速缓存。所述第一内核接口模块被配置为经由所述第一环形网络发送所述交易请求至所述第二内核接口模块。所述第一内核接口模块被配置为发送该事务请求到所述第二内核接口模块,通过:确定要被读出的数据与存储器的第一存储器地址相关联;确定所述第二内核接口模块是在第一环形网络的存储器的第一存储器地址的本地接口模块;以及响应于确定所述第二内核接口模块是在所述第一环形网络的存储器的第一存储器地址的本地接口模块,发送所述交易请求至所述第二内核接口模块。所述第一内核接口模块被配置为确定所述第二内核接口模块是在第一环形网络的存储器的第一存储器地址的本地接口模块,通过:确定所述第二内核接口模块存储与维护存储在耦合到所述第一环形网络和第二环形网络的多个高速缓存中的所述存储器的第一存储器地址的数据高速缓存一致性相关联的信息;以及响应于确定所述第二内核接口模块存储与维护存储在所述存储器的第一存储器地址的数据高速缓存一致性相关联的信息,确定所述第二内核接口模块是用于所述存储器的第一存储器地址的本地接口模块。所述第一内核接口模块还被配置为:确定要被读出的数据不是缓存在所述第二高速缓存中;以及响应于确定要被读出的数据不是缓存在所述第二高速缓存,发送所述事务请求至所述第二多个内核接口模块的第三内核接口模块,以检查要被读取的数据是否缓存在耦合到所述第三内核接口模块的第三高速缓存中。所述第一内核接口模块被配置为经由所述第一环形网络、所述全局环形网络和所述第二环形网络发送所述事务请求至所述第三内核接口模块。所述第一内核接口模块被配置为确定要被读出的数据不是被高速缓存在所述第二高速缓存中,通过:响应于发送所述事务请求到所述第二内核接口模块,从所述第二内核接口模块接收响应,该响应表示要被读出的数据不是缓存在所述第二高速缓存,以及基于所述响应,确定将被读出的数据不是缓存在所述第二高速缓存中。
所述第一内核接口模块还被配置为:响应于发送所述事务请求至所述第三内核接口模块,确定将被读出的数据不是缓存在所述第三高速缓存中;以及响应于确定要读取的数据不是缓存在所述第三高速缓存中,发送所述事务请求至存储器接口模块以提取耦合到所述存储器接口模块的存储器中的数据。在一个实施例中,所述存储器接口模块被耦合到所述第一环形网络;所述第一内核接口模块被配置为,经由所述第一环形网络发送所述事务请求至所述存储器接口模块,以提取耦合到所述存储器接口模块的存储器的数据。
在一个实施例中,所述存储器接口模块被耦合到所述第二环形网络;所述第一内核接口模块被配置为,通过(i)所述第一环形网络、(ii)所述全局环形网络、以及(iii)所述第二环形网络发送所述事务请求至所述存储器接口模块,以提取耦合到所述存储器接口模块的存储器中的数据。
在各种实施方式中,本发明提供了一种系统,包括:存储器;以及耦合到所述存储器的存储器接口模块,所述存储器接口模块配置为控制对存储器的访问,所述存储器接口模块包括请求组合模块,其被配置为:接收第一存储器访问请求,以访问存储在所述存储器中的数据;接收第二存储器访问请求,以访问存储在所述存储器中的数据;基于所述第一存储器访问请求和第二存储器访问请求,生成第三存储器访问请求;以及基于所述第三存储器访问请求,访问所述存储器以读取来自所述存储器的数据。在一个实施例中,所述第一存储器访问请求和所述第二存储器访问请求的每一个是访问存储在所述存储器的第一存储器地址的数据。所述请求组合模块被配置为通过组合所述第一存储器访问请求和所述第二存储器访问请求而生成所述第三存储器访问请求。所述第一存储器访问请求具有第一优先级,其中所述第二存储器访问请求具有不同与所述第一优先级的第二优先级,并且其中所述存储器接口模块还包括:优先级分配模块,配置为向所述第三存储器访问请求分配所述第一优先级和第二优先级中的一个。所述第一优先级高于所述第二优先级;以及所述优先级分配模块被配置为,基于所述第一优先级高于所述第二优先级,向所述第三存储器访问请求分配所述第一优先级。在一个实施例中,所述第一优先级高于所述第二优先级,使得与所述第二存储器访问请求相比,所述第一存储器访问请求具有较高的执行优先级,其中基于所述存储器访问请求的类型向存储器访问请求分配优先级。在一个实施例中,所述第一存储器访问请求是数据预提取请求,所述第二存储器访问请求是数据读取请求。在一个实施例中,所述第一存储器访问请求和所述第二存储器访问请求的每一个是从第一处理器接收的。在一个实施例中,所述第一存储器访问请求是从所述第一处理器接收的;且所述第二存储器访问请求是从不同于所述第一处理器的第二处理器接收的。在一个实施例中,所述存储器接口模块、第一处理器和第二处理器被安排在一个环形网络。在一个实施例中,由所述存储器接口模块接收所述第二存储器访问请求:(i)在接收到所述第一存储器访问请求之后,以及(ii)在由所述存储器接口模块充分执行所述第一存储器访问请求之前,使得所述第一存储器访问请求和第二存储器访问请求在至少第一时间段内在所述存储器接口模块中对于处理是共同未决的。
在各种实施方式中,本发明提供一种方法,包括:由耦合到存储器存储器接口模块接收第一存储器访问请求以访问存储在所述存储器中的数据,所述存储器接口模块配置为控制对所述存储器的访问;由所述存储器接口模块接收第二存储器访问请求以访问存储在所述存储器中的数据;基于所述第一存储器访问请求和第二存储器访问请求,生成第三存储器访问请求;以及基于所述第三存储器访问请求,访问所述存储器,以读取所述存储器中的数据。在一个实施例中,接收所述第一存储器访问请求和所述第二存储器访问请求还包括:接收所述第一存储器访问请求和所述第二存储器访问请求,使得所述第一存储器访问请求和所述第二存储器访问请求的每一个是访问存储在所述存储器中的第一存储器地址的数据。生成所述第三存储器访问请求还包括:通过组合所述第一存储器访问请求和所述第二存储器访问请求生成所述第三存储器访问请求。在一个实施例中,所述第一存储器访问请求具有第一优先级,所述第二存储器访问请求具有不同于所述第一优先级的第二优先级,所述方法还包括:向第三存储器访问请求分配所述第一优先级和第二优先级中的一个。在一个实施例中,所述第一优先级高于所述第二优先级,并且其中向所述第三存储器访问请求分配所述第一优先级和第二优先级的一个还包括:基于所述第一优先级高于所述第二优先级,向所述第三存储器访问请求分配所述第一优先级。在一个实施例中,接收所述第一存储器访问请求和所述第二存储器访问请求还包括:接收所述第一存储器访问请求和所述第二存储器访问请求,使得所述第一存储器存取请求是数据的预提取请求,并且所述第二存储器访问请求是数据读取请求。在一个实施例中,接收所述第一存储器访问请求和所述第二存储器访问请求还包括:从第一处理器接收所述第一存储器访问请求和第二存储器访问请求的每一个。在一个实施例中,接收所述第一存储器访问请求和所述第二存储器访问请求还包括:接收来自第一处理器的所述第一存储器访问请求;和接收来自不同于所述第一处理器的第二处理器的所述第二存储器存取请求。在一个实施例中,接收所述第一存储器访问请求和所述第二存储器访问请求还包括:接收所述第二存储器访问请求,(i)在接收所述第一存储器访问请求以后、以及(ii)在充分执行所述第一存储器访问请求之前,使得第一存储器访问请求和第二存储器访问请求在至少一个第一时间段用于处理所述存储器接口模块中是共同未决的。
附图简要说明
在下面的详细描述中,附图构成参考,其形成了本发明的一部分,其中相同的标号表示相同的部件,并且其中在附图中通过实施例示出了本发明方法的原理。值得注意的是,可以利用其他实施例,可以在不脱离本发明的精神和范围内做出结构或逻辑上的改变。因此,以下详细描述不应被视为具有限制意义,并且根据本发明实施例的范围由所附权利要求及其等同物限定。
图1示意性地示出了包括布置在多个环形网络中的多个处理内核的多核处理系统。
图2示出了包括一个全局环形互连多个本地环的系统。
图3示出了一个内核接口模块的例子。
图4示出了存储在一个示例分布式探听过滤器的入口内容的例子。
图5示出了一个示例的远程线路目录。
图6A至图6D示出了示例的读取操作,其中多核处理系统工作在静态映射的高速缓存体系结构模式。
图6E是一个流程图,示出了一个用于读取操作的示例性方法,其中多核处理系统工作在静态映射的高速缓存体系结构模式。
图7A至图7D说明了示例读取操作,其中多核处理系统运行在动态映射的高速缓存架构模式。
图7E是一个流程图,示出了一个用于读取操作的示例性方法,其中多核处理系统工作在动态映射的高速缓存体系结构模式。
图8示出了一种用于组合多个存储器访问请求的系统。
图9是一个流程图,示出了用于操作图8的系统的示例方法。
详细说明
图1示意性地示出了多核处理系统100(以下称为“系统100”),其包括多个布置在多个环形网络的处理内核(“处理内核”也在本文中被称为“处理器”)。所述多个处理器包括第一多个处理器120a1,...,120a4,和第二多个处理器120b1,...,120b4。在一个实施例中,多个所述多个处理器被耦合到各自的内核接口模块。例如,每个处理器120a1,...,120a4,120b1,...,120b4被分别耦合到内核接口模块122a1,...,122a4,122b1,...,122b4中的相应的一个。在一个实施例中,每个内核接口模块包含(或耦合到)相应的高速缓存。例如,内核接口模块122a1包括一个相应的缓存124a1,内核接口模块122b1包括一个相应的高速缓存124b1,等等。
在一个实施例中,内核接口模块122a1,...,122a4被布置在第一环形网络160a中(一个环形网络此后也被称为环),内核接口模块122b1,...,122b4被布置在第二环160b。例如,内核接口模块122a1,...,122a4被使用一个或多个通信链路(与系统100的各种其它组件一起)耦合或链接以形成环160a。类似地,内核接口模块122b1,...,122b4被使用一个或多个通信链路(如图1所示的与系统100的各种其它组件一起)耦合或链接以形成环160b。每个内核接口模块形成相应的处理器和相应的环之间的接口。例如,内核接口模块122a1形成相应的处理器120a1和相应的环160a中的接口,内核接口模块120b1形成相应的处理器120b1和相应的环160b之间的接口,等等。
在一个实施例中,全局环160g(例如在图1中使用虚线示出)互连到环160a和160b。例如,全局环160g形成环160a和160b之间的接口。全局环160g包括配置为接口连接环160a和全局环160g之间的全局接口模块112a。全局环160g还包括配置为接口连接环160b和全局环160g之间的全局接口模块112b。在一个例子中,全局接口模块112a和112b被耦合或链接到使用一个或多个通信链路(如图1,与系统100的各种其它组件一起),以形成全局环160g。为了从全局环160g中区分出环160a和160b,环160a和160b的每一个也在本文中被称为本地环。因此,在一个实施例中,一个本地环包括:(i)一个或多个内核接口模块,以及(ii)至少一个全局接口模块(例如,接口连接本地环到全局环)。在一个实施例中,全局环包括一个或多个全局接口模块以与一个或多个相应的本地环接口连接。
在一个实施例中,如图1所示,系统100包括高速缓存123a1,...,123b4。例如,多个处理器120a1,...,120b4包括(或耦合到)缓存123a1,...,123b4中的相应的一个。例如,处理器120a1包含(或耦合到)高速缓存123a1,处理器120b1包含(或耦合到)缓存123b1,等等。在一个实施例中,高速缓存123a1,...,123b4例如是1级(L1)的高速缓存、2级(L2)高速缓存等。在一个实施例中,例如,高速缓存123a1可直接访问处理器120a1,而不与系统100中的任一个环接口连接(例如,通过旁路系统100的任一个环)。在一个例子中,一个或多个高速缓存123a1,...,123b4缓存系统100的一个或多个存储器的数据(例如,存储器128a、128b或类似情况)。
在一个实施例中,高速缓存124a1,...,124b4例如是1级(L1)高速缓存、2级(L2)高速缓存、末级高速缓存(LLC),和/或类似物。在一个实施例中,高速缓存124a1是可直接访问处理器120al,例如,通过旁路系统100的任一环160。如将在本文中详细讨论的,例如,高速缓存124a1也是经由环160a访问由处理器120a3;且高速缓存124a1也是经由环160a和160b、全局环160g访问处理器120b1。因此,在本文所描述的实施例中,对系统100的任一给定的高速缓存的访问是层次结构的,即无论是直接或通过与一个或多个环160通信,高速缓冲存储器是可访问系统100中的任一处理器。
在一个实施例中,每个环160a和160b包括一个或多个相应的存储器接口模块。例如,环160a上包括存储器接口模块126a,环160b包括存储器接口模块126b。存储器接口模块126a和126b分别耦合到存储器128a和128b。存储器接口模块126a形成存储器128a和环160a之间的接口,存储器接口模块126b形成存储器128b和环160b之间的接口。例如,多个存储器128a和128b是随机存取存储器(RAM)、双倍数据速率同步动态随机存取存储器(DDR SDRAM)等。在一个实施例中,高速缓存124a1,...,124b3选择性地从存储器128a和128b缓存数据,如将在本文中详细讨论如下。在一个实施例中,例如,存储器128a的第一存储器地址可被高速缓存在本地环160a和/或160b中的一个或多个高速缓存,这将在本文中详细下面进行讨论。
在一个实施例中,系统100还包括一个或多个输入/输出(I/O)接口模块。例如,全局环160g包括I/O接口模块114g1和114g2。虽然在图1中未示出,但在一个实施例中,本地环160a和160b的一个或两个还包括一个或多个对应的I/O接口模块。在一个实施例中,I/O接口模块形成了相关联的环和一个或多个I/O设备之间的接口。例如,I/O接口模块114g1形成了全局环160g和一个或多个I/O设备118(例如,一个或多个I/O外围设备)之间的接口。在另一个例子中,I/O接口模块114g2形成了全局环160g和存储器管理单元119之间的接口。例如,存储器管理单元119是虚拟内存系统架构师(VMSA)组件,其转换和展示I/O事务上的安全保护。在一个示例中,虚拟存储器系统架构师(VMSA)组件转换虚拟地址空间和物理空间之间的地址,和/或展示安全保护。在一个实施例中,如图1所示,存储器管理单元119被耦合到一个或多个I/O设备(例如,图1中标记为I/O设备119a的一个或多个I/O设备),和与I/O设备119a交换数据。
除非另有提及并且为了本发明的目的,接口模块指的是内核接口模块、全局接口模块、存储器接口模块和/或I/O接口模块中的一个。
除非另有说明,一个集群是指相应的本地环和与本地环相关联的各种组件。例如,第一集群是指本地环160a,并与本地环160a相关联的各种组件(例如,内核接口模块122a1,...,122a4、处理器120a1,...,120a4、耦合到本地环160a的存储器接口模块126a、耦合到存储器接口模块126a的存储器128a等)。类似地,第二集群是指本地环160b,以及与本地环160b相关联的各种组件(即,内核接口模块122b1,...,122b4、处理器120b1,...,120b4、耦合到本地环160b的存储器接口模块126b、耦合到存储器接口模块126b的存储器128b、等等)。
尽管图1示出了每个环160a和160b都包括四个各自的内核接口模块(和4个相关联的处理器),在另一个实施例中,环160a和160b的一个或两个包括任何不同数量的内核接口模块(和相应数目的相关联的处理器)。
在一个实施例中,并如所讨论的,多个处理器120a1,...,120b4表示相应的处理内核。然而,在另一个实施例中,图1中的系统100的处理器表示多个处理内核。作为一个例子,处理器120a1代表一组或一集群处理内核。在这个例子中,一集群处理内核(其由处理器120a1表示)经由内核接口模块122a1被耦合到本地环160a,且这集群处理内核遵守与相应的内核接口模块相关联的协议。
在一个实施例中,系统100位于集成电路芯片中。例如,系统100是系统级芯片(SoC)的一部分。在另一个实施例中,系统100的第一部分(例如,与本地环160a相关联的各种组件)位于第一集成电路芯片,并且系统100的第二部分(例如,与本地环160b相关联的各种组件)位于一个或多个其他集成电路芯片。在这个实施例中,例如,全局环160g的某些部分(例如,全局接口模块112a)位于第一集成电路芯片,而全局环160g的其他部分(例如,全局接口模块112b)位于所述一个或多个其他集成电路芯片。
尽管图1示出了接口连接两个本地环160a和160b的全局环160g,在另一个实施例中,全局环160g接口连接两个以上的环。例如,图2示出了系统200,包括全局环260g,其互连本地环260a、260d。全局环260g包括全局接口模块212a,...,212d,其分别与本地环260a,...,260d互连。虽然每个环260a,...,260d以及全局环260g包括各种其它部件(例如,类似于图1中的环160a和160b,全局环160g),为了说明的清楚这些组件未在图2中示出。例如,系统200包括多个处理器、内核接口模块、高速缓存、存储器接口模块、I/O接口模块等,尽管这些部件未在图2中示出。在图2的系统200中,全局环260g由各自的全局接口模块212a,...,212d被连接到四个本地环260a,...,260d。因此,如在图1和2中所示,系统l00和200是容易可扩展的,例如,例如通过在全局环中加入相应的全局接口模块更多的本地环可以与全局环接口连接。
再次参看图1,在一个实施例中,系统100的各种组件可以发出一个事务处理请求。例如,系统100的多个处理器120a1,...,120b3可以选择性地发出一个或多个相应的事务请求。可以在系统100中发出各种类型的事务请求。例如,读事务请求可以由一个处理器发出以从高速缓存或从存储器中读取数据,写事务请求可以由处理器发出以将数据写入到高速缓存或存储器,高速缓存事务请求可以由处理器发出以在高速缓存上执行操作(例如,从高速缓存中释放高速缓存行以更新高速缓存行),等等。
如果系统100的处理器发出一个事务请求,则相应的内核接口模块接收该事务请求并将该事务请求通过相应的环发送到合适的目的地。例如,如果处理器120a1发出事务请求,则相应的内核接口模块122a1接收该事务请求,并将所述业务请求发送到合适的目的地,例如,到环160a中的另一个内核接口模块或存储器接口模块,或环160b内。在一个实施例中,内核接口模块122a1,...,122a3执行由处理器120a1(以及任何其他处理器)发出的事务请求的一致性检查,和/或跟踪所述事务请求的一致性信息。在一个实施例中,内核接口模块122a1成为用于由相关联的处理器120a1发出的事务请求的环160a上的本地接口模块。在一个实施例中,内核接口模块122a1,...,124a3的一个成为用于由处理器120a1(或环160a中的任何其他处理器)发出的事务请求的环160a上的本地接口模块。例如,由处理器120a1发出的事务请求具有映射到内核接口模块122a1的源地址,从而使得内核接口模块122a1成为环160a中事务请求的本地接口模块。因此,初始化或在环发出事务请求的内核接口模块是事务请求的本地接口模块。
在内核接口模块初始化的事务请求也可以被映射到系统100中的另一个接口模块。例如,内核接口模块122a3可以是由处理器120a1发出的事务请求的目的地,并且相应地,内核接口模块122a3形成为事务请求的本地接口模块。为了本发明的目的,除非另有所述,形成为事务请求目的地的另一个接口模块(例如,内核接口模块122a3),形成了事务请求的主程接口模块。因此,在一个例子中,在本地接口模块发起事务请求,并且该事务请求被发送到用于处理和进行的相应的本地接口模块(例如,为了确保系统100的高速缓存的一致性和/或事务处理的一致性)。在一个例子中,对于事务请求,相应的主程接口模块和相应的本地接口模块可以是同一内核接口模块。例如,如果处理器120a1发起目标为内核接口模块122a1的高速缓存124a1的事务请求,则内核接口模块122a1是用于事务请求的主程接口模块和本地接口模块。
再次参看图1,在一个实施例中,高速缓存124a1,...,124b3选择性地从存储器128a和128b中缓存数据。来自存储器128a和128b的数据可被高速缓存在使用静态映射或动态映射的系统100的高速缓存中。例如,如图1所示,存储器128a被耦合到环160a,存储器128b被耦合到环160b。在静态映射中,存储器(例如,存储器128a)的特定存储器地址的数据可被高速缓存在特定的高速缓存中,并且所述映射是静态的性质。例如,如后面将要讨论的,一个或多个表(例如,分布式探听过滤器和/或远程线路目录)识别特定的高速缓存,其中存储器的特定存储器地址的数据可以被缓存。在一个实施例中,在静态映射中,存储在存储器128a中的第一地址的第一数据可以被高速缓存在系统100的高速缓存124a1,...,124b4的多于一个中,且一个或多个表识别高速缓存,其中第一数据是可能进行高速缓存的。在一个实施例中,存在第一地址到环160a中的高速缓存124a1,...,124a4中的一个的静态映射,以及到环160b中的高速缓存124b1,...,124b4中的一个的静态映射。
在动态映射中,存储器(例如,存储器128a)的特定存储器地址的数据也可被高速缓存在系统100的一个或多个缓存124a1,...,124b4中。然而,不同于静态映射,可能潜在地缓存数据高速缓存是变化的(例如,是动态的),以及上面所讨论的一个或多个表(例如,分布式探听过滤器和/或所述远程线路目录)不一定识别可能进行高速缓存数据的高速缓存。将在本文的下面更详细地讨论静态和动态映射。
内核接口模块
图3示出了图1的系统100的一个示例性内核接口模块(例如,内核接口模块122a1)。在一个实施例中,虽然只有内核接口模块122a1示于图3,系统100的各种其它内核接口模块可能具有至少部分类似于图3的结构。
图3的示例性内核接口模块122a1包括高速缓存124a1,虽然在另一个实施例中,高速缓存124a1是位于内核接口模块122a1的外部(例如,直接耦合到内核接口模块122a1)。内核接口模块122a1还包括一致性控制模块310a1。在一个实施例中,一致性控制模块310a1确保了高速缓存124a1是与系统100的其他高速缓存和存储器一致的(例如,同步的)。
在一个实施例中,系统100的存储器中的存储器地址被映射到系统100的一个或多个相应的内核接口模块。例如,每个存储器128a的地址被分配给至少一个相应的内核接口模块122a1,...,122a4。即,存储器128a的存储器地址的整个跨度被分配在环160a的内核接口模块122a1,...,122a4中。在一个例子中,如果存储器(例如,存储器128a)的第一地址被映射到特定的内核接口模块,则特定的内核接口模块(例如,内核接口模块122a1)形成第一存储器地址的主程接口模块。存储器的每个存储地址都有一个对应的主程接口模块。例如,如果存储器128a的第一存储器地址具有内核接口模块122a1作为主程接口模块,那么内核接口模块122a1存储与存储器128a的第一存储器地址的高速缓存一致性相关联的各种信息。
而且,存储器128a的特定地址可以被映射到一个以上的内核接口模块。作为一个例子,在一个实施例中存储器128a的第一地址被映射到内核接口模块122a1和122b1。因此,每个内核接口模块122a1和122b1形成了第一存储器地址的主程接口模块。此外,内核接口模块122a1形成了本地环160a的第一存储器地址的本地主程接口模块,而内核接口模块122b1形成了本地环160b的第一存储器地址的本地主程接口模块。当存储器128a被耦合到环160a,内核接口模块122a1也形成了存储器128a的第一存储器地址的全局主程接口模块。例如,本地主程接口模块存储与相应的本地环的第一存储器地址的高速缓存一致性相关联的各种信息,且全局主程接口模块存储与整个系统100的第一存储器地址的高速缓存一致性相关联的的各种信息。在一个实施例中,存储器128a的地址的四分之一被映射到内核接口模块122a1和122b1,存储器128a的地址的四分之一被映射到内核接口模块122a2和122b2,存储器128a的地址的四分之一被映射到内核接口模块122a2和122b2,存储器128a的地址的余下的四分之一被映射到内核接口模块122a3和122b3。
如所讨论的,在一个实施例中,存储在系统100的存储器中的一个(例如,存储器128a和128b中的一个)的第一数据可被高速缓存在一个以上的系统100的高速缓存中。例如,存储在存储器128a的第一存储器地址的第一数据可被缓存在高速缓存124a1,...,124b4中的一个或多个。假设内核接口模块122a1是存储器128a的第一存储器地址的主程接口模块(例如,全局主程接口模块)。在一个实施例中,内核接口模块122a1还包括分布式探听过滤器(DSF)314a1。在一个例子中,内核接口模块122a1作为存储器128a的第一存储器地址的主程接口模块,DSF 314a1跟踪本地环160a中的所有高速缓存,这些高速缓存可以存储的存储器128a第一存储器地址的第一数据。例如,如果第一数据可被存储(或储存)在本地环160a的高速缓存123a1和123a3,则DSF 314a1指示与存储器128a的第一存储器地址相关联的第一数据可以被高速缓存存储在处理器120a1和120a3中。例如,图4示出了存储在一个示例分布式探听过滤器的条目(例如,在图3的DSF 314a1中的条目)中的内容的例子。在图4中DSF 314a1的条目表示与存储器128a的第一存储器地址相关联的第一数据可以被存储由处理器120a1和120a3包括的高速缓存中(例如,可被存储在高速缓存123a1和123a3)。这表明该存储器128a中的第一地址的第一数据可由处理器120a1和120a3持有。换句话说,如果DSF被包括在第一内核接口模块,则该DSF条目指示,对于该第一内核接口模块是主程接口模块的存储器地址,一个或多个处理器可以高速缓存第一数据,在一个或多个处理器中一个或多个高速缓存可以被包括在一个或多个处理器中。
在一个实施例中,对于耦合到第一本地环的存储器的特定存储器地址,相应的DSF仅表示可以保持特定存储器地址的数据的第一本地环的处理器。例如,参考图4,即使存储器128a的第一地址的第一数据可以由处理器120a1、120a3和120b2的高速缓存被缓存,DSF314a1的条目也仅表示处理器120a1和120a3(如只有这两个处理器都与本地环160a相关联)。即,在这个例子中,DSF 314a1的条目不表示与处理器120b2相关联的高速缓存可存储存储器128a中的第一地址的第一数据。
再次参看图3,在一个实施例中,内核接口模块122a1还包括一个远端线路目录(RLD)318a1。在一个例子中,内核接口模块122a1作为存储器128a的第一存储器地址的主程接口模块(例如,全局主程接口模块),RLD 318a1跟踪系统100中的所有远程集群,在一个实施例中,其存储了存储器128a的第一存储器地址的第一数据。例如,假设第一数据可被存储(或储存)在高速缓存本地环160a的120a1和120a3,核本地环160b的缓存124b2。然后,RID318a1指示与存储器128a的第一存储器地址相关联的所述第一数据可以被存储在与本地环160b相关联的集群中。即,RID 318a1标识一个或多个远程集群(即,一个或多个集群是远程或不同于与本地环160a相关联的集群)可以高速缓存与存储器128a的第一存储器地址相关联的第一数据。图5示出了一个示例性的远程线路目录(例如,图3中的RLD 318a1)。在图5中的RLD 318a1表示与存储器128a的第一存储器地址相关联的第一数据可以被存储在一个集群2(例如,它是与本地环160b相关联的)中。因此,在图5中的RID 318a1标识所有远程集群(以及相关联的远程本地环),其中与存储器128a的第一存储器地址相关联的第一数据可以被存储。值得注意的是,尽管与本地环160a相关联的集群可缓存与存储器128a的第一存储器地址相关联的第一数据,但是RLD 318a1不标识与本地环160a相关联的集群,而是,RLD318a1仅识别远程集群(即与本地环160a相关联的集群远程、或不同于本地环160a相关联的集群),其可以缓存与存储器128a的第一存储器地址相关联的第一数据。
与本地环160a相关联的第一集群是存储器128a的第一存储器地址的本地集群(例如,内存128a包括在第一集群中)。与本地环160b相关联的第二集群是存储器128a的第一存储器地址的远程集群。在一个实施例中,RLD 318a1选择性地识别一个或多个远程集群,以用于高速缓存存储在存储器128a的第一存储器地址的第一数据。
高速缓存结构
如前面所讨论的,系统100的高速缓存体系结构包括一个多组高速缓存(例如,多个高速缓存切片,包括高速缓存124a1,...,124b4),其中每个高速缓存可以被多于一个的处理器接入。在系统100中,到不同高速缓存的接入时间不同,并取决于发出请求的处理器(即,请求高速缓存访问的处理器)。例如,相比与处理器120a1接入高速缓存124a2花费的时间,处理器120a1接入高速缓存124a1花费的时间相对较少。同样地,相比于处理器120a1接入缓存124b4花费的时间,处理器120a1访问高速缓存124a2花费的时间相对较少。系统100的高速缓存体系结构在本文中还被称为非统一高速缓存体系结构(NUCA),例如,因为由多个处理器访问多个高速缓存所用的时间是不均匀的。
在一个实施例中,系统100的高速缓存体系结构可以以多种方式中的一种进行操作。例如,系统100的高速缓存体系结构可以在一个静态映射的高速缓存体系结构模式和动态映射的高速缓存体系结构模式的一种进行操作。
在静态映射的高速缓存架构模式中,例如,存储器128a的特定存储器地址被静态映射到环160a的高速缓存中的一个和环160b的高速缓存中的一个。此外,在静态映射的高速缓存架构模式,内存128a的特定内存地址到高速缓存的映射是特定存储器地址的驻留在主程接口模块(例如,全局主程接口模块)的相应的DSF和RLD。例如,在静态映射的高速缓存架构模式中,如果内核接口模块122a1是存储器128a的特定存储器地址的主程接口模块,那么驻留在内核接口模块122a1的DSF和RLD标识该特定高速缓存,其中特定存储器地址的数据可以被缓存。如果高速缓存(例如,高速缓存123a1)可以缓存存储器128a的特定存储器地址的数据,则相应的处理器(例如,处理器120a1)据说可以保持存储器128A的特定存储器地址的数据。
在动态映射的高速缓存架构模式中,在一个实施例中,例如,存储器128a的特定存储器地址被动态地分配给系统100的任一高速缓存。因此,在动态映射的高速缓存架构模式中,存储器128a的特定存储器地址的数据可以被动态分配和高速缓存在系统100的任一高速缓存中(例如,到本地环160a和/或本地环160B的任一高速缓存中)。在一个实施例中,在动态映射的高速缓存架构模式中,由系统100的一个或多个高速缓存缓存存储器128a的特定存储器地址的数据可能与特定存储器地址的驻留在主程接口模块(例如,全球家庭接口模块)的DSF和RLD不一致。
以下各节更详细的讨论静态映射的缓存架构模式和动态映射的高速缓存架构模式下系统100的操作。
静态映射的高速缓存架构模式
图6A示出了当一个多核处理系统(例如,图1的系统100)工作在静态映射的高速缓存体系结构模式的一个示例性读操作。图6A是图1的简化版本。例如,在图6A中,只有一个本地环0(例如,它可以是环160a和160b中的任何一个)被示出。此外,为了简单起见,在图6A中,本地环0的处理器被标识为P0,...,P3,各自的内核接口模块被标记为CIM0,...,CIM3。此外,如图6A所示,各个内核接口模块CIM0,...,3是与高速缓存0,...,3中相应的一个相关联的。在图6A中,每个高速缓存被示为外部到相应的内核接口模块,虽然在另一个实施例中(例如,如图1所示),高速缓存可以被包括在相应的内核接口模块内。图6A还示出了本地环0的各个组件之间传输的各种事务请求。
在图6A和各个随后的附图(例如,图6B、图7D)中,事务请求(或数据)的发起、处理和/或传输是由一个数字表示一种类型的事务请求。例如,在这些图中的每个动作是使用一个相应的数字和一个或多个相应的字母表示一种类型的操作的标记。例如,图6A示出了0AR、1AR等。这些数字表示一个序列,其中相关的动作发生。例如,与数字“1”相关联的动作发生在与数字“0”相关联的动作之后。如果两个操作具有相同的编号,则两个操作可以至少同时部分地发生。
在图6A的例子中,处理器P1发起事务请求,它可以是一个读取本地环0的高速缓存中缓存的数据的地址请求。例如,最初,处理器P1发出地址请求(在图6A中标记为0AR)连接到相应的CIM 1。因此,CIM 1是事务请求的本地接口模块。在图6A的例子中,假定CIM 3是主程接口模块(即,CIM 3是地址请求的目的地,并且用于处理该地址请求)。由处理器P1发出的地址请求有主程接口模块的地址(例如,标识CIM 3作为主程接口模块)。在一个静态映射的高速缓存体系结构模式中,这意味着与CIM 3相关联的高速缓存3可以缓存处理器P1想要访问的数据。因此,CIM 1转发地址请求到CIM 2(例如,在图6A中示为1AR);随后,CIM 2转发地址请求到CIM 3(例如,在图6A中示为2AR)。一旦CIM 3接收到地址请求,CIM 3确定该地址请求导致高速缓存命中(例如,在图6A中示为高速缓存3命中)。即,所请求的数据被缓存在缓存3。CIM 3访问并读取高速缓存3(例如,在图6A中示为4RD)中的数据,且缓存3输出数据(例如,图6A中示为5DATA)到CIM 3。CIM 3接收从缓存3中读取的数据,并通过CIM 2和CIM 1(例如,在图6A示为6R、7R和8R)将数据发送到所述处理器P1(即,该请求的发起者)。
在图6A中,读取请求是在缓存3的主程接口模块的命中。然而,在另一实施例中,读取请求可能不会导致主程接口模块的高速缓存的高速缓存命中。图6B示出了另一个示例读操作,其中多核处理系统(例如,图1的系统100)工作在静态映射的高速缓存体系结构模式。在图6B中,读取请求会导致主程接口模块的高速缓存的缓存未命中。类似于图6A,在图6B的例子中,处理器P1启动一个地址请求(在图6B中标记为0AR),例如,以读取数据。要读取的数据被存储在存储器0的特定地址,它具有CIM 3作为主程接口模块。因此,CIM 1是地址请求的本地接口模块,CIM3是主程接口模块(即,CIM3是地址请求的目的地,并且处理该地址请求)。由处理器P1发出的地址请求通过CIM 1和CIM 2(例如,在图6B中被示为1AR和2AR)到达CIM 3。一旦CIM 3接收地址请求,则CIM3确定高速缓存未命中(例如,在图6B中示为3高速缓存未命中)。也就是,高速缓存3不具有所请求数据的有效副本。
响应于缓存3中的高速缓存未命中,CIM 3随后通过向存储器接口模块0(例如,在图6B中示出为4AR)转发地址请求。存储器接口模块0从存储器0(例如,在图6B示为5RD)读取数据,并经由全局接口模块0、CIM 0和CIM 1,发送读取自存储器0的数据到处理器P1中(例如,在图6B中示为7R、8R、9R和10R)。CIM 1还发送从存储器0读出的数据到CIM 3(例如,在图6B中示出为10R和11R)。一旦CIM 3接收数据,则CIM3将数据写入到高速缓存3(例如,在图6B中示为12W)。因而,在图3中,响应于与主程接口模块相关联的高速缓存3中的高速缓存未命中,从存储器0中直接取出所请求的数据。
在图6A和6B中,本地接口模块和主程接口模块在同一个本地环中。即,本地环0的处理器P1尝试读取缓存在本地环0的高速缓存3中的数据。
图6C示出了另一个示例读操作,其中多核处理系统(例如,图1的系统100)工作在静态映射的高速缓存体系结构模式中。在图6C的例子汇总,本地环0的处理器从不同的本地环(例如,本地环1)中读取数据。类似于图6A,在图6C中的系统具有本地环0、相关联的处理器P0,...,P3、相关联的CIM 0,...,3、相关联的缓存0,...,3和存储器接口模块0。此外,图6C示出了第二本地环1,包括处理器P10,...,P13、CLM 10,...,13、高速缓存10,...,13、存储器接口模块1和耦合到所述存储器接口模块1的存储器1。全局环(例如,在图6C中使用虚线示出)包括全局接口模块0和1,其互连两个本地环0和1。
在图6C中,处理器P2发出读取存储在存储器1中的特定存储器地址的数据的事务请求。即,在本地环0的处理器P2尝试读取存储在耦合到本地环1的存储器1的特定存储器地址的数据。CIM 2是本地接口模块,该事务在处理器P2发起。
还假设在存储器1的特定存储器地址的数据可以被高速缓存在高速缓存1和11。因此,缓存1是环0的存储器0的特定存储器地址的本地主程接口模块,高速缓存11是在环1的存储器1的特定存储器地址的本地主程接口模块。此外,由于存储器1被耦合到本地环1,高速缓存11也是用于存储器1的特定存储器地址的全局主程接口模块。例如,全局主程接口模块(即CIM 11)保持的DSF标识高速缓存11有可能缓存存储器1的特定存储器地址的数据。此外,全局主程接口模块(即CIM 11)维护的RLD标识存储器1的特定存储器地址的数据是潜在的缓存在本地环0和1的高速缓存中。
再次参看图6C,当处理器P2发出地址请求到CIM 2(例如,示出为0AR),与CIM 1(即,本地主程接口模块)相关联的高速缓存1首先检查以确定所请求的数据是否被存储在高速缓存1中。如图6C所示,确定所请求的数据在高速缓存1中未命中(例如,在图6C中示为2高速缓存未命中)。所请求的数据没有被存储在本地环0的本地主程接口模块CIM 1的高速缓存1中,然后检查CIM 11(即全局主程接口模块)的高速缓存11以确定请求的数据是否缓存在其中。例如,事务请求是从CIM 1通过CIM 0、全局接口模块0、全局接口模块1和CIM 10(例如,在图6C中示为3AR,...,7AR)发送到CIM 11。
在图6C的例子中,事务请求还导致全局主程接口模块CIM 11的高速缓存11的高速缓存未命中。因此,例如,交易请求被发送到存储器接口模块1以从存储器1(例如,在图6C中示为9AR,...,12RD)读取所请求的数据。一旦数据被从存储器1由存储器接口模块1读出,所请求的数据经由全局接口模块1和0和CIM 0、1和2传输给处理器P2(例如,在图6C中示为14R,...,19R)。在一个实施例中,从存储器1中读出的数据也可以被发送到高速缓存1和11(例如,与本地和全局主程接口模块相关联的高速缓存)的一个或两个以缓存数据(例如,在图6C中在高速缓存1中缓存的数据被示为18W)。
值得注意的是,在图6C中,18W表示从CIM 1发送数据到高速缓存1,18R表示从CIM1发送数据到CIM 2。这两个操作具有相同的数值“18”,表明这两个动作可以至少同时地进行部分。
图6D示出了另一个示例读操作,其中多核处理系统(例如,图1的系统100)工作在静态映射的高速缓存体系结构模式中。图6D的系统架构是类似于图6C的系统架构。例如,图6C和6D都示出了两个本地环0和1,与本地环相关的各种组件和连接两个本地环的全局环。
在图6D中,处理器P2发出事务请求以读取存储在存储器0的特定存储器地址的数据。即,本地环0的处理器P2尝试读取耦合到本地环0的存储器的特定存储器地址的数据。CIM 2是本地接口模块,其中事务在处理器P2发起。
在图6D的例子中,假设在存储器0的特定存储器地址的数据可以被高速缓存1和11高速缓存。因此,CIM 1是为存储器0的特定存储器地址的本地环0中的本地主程接口模块,CIM 11是为存储器0的特定存储器地址的本地环1的本地主程接口模块。此外,由于存储器0被耦合到本地环0中,CIM 1也是用于存储器0的特定存储器地址的全局主程接口模块。由全局主程接口模块维护的RLD(即CIM 1)识别出存储器0的特定存储器地址的数据是潜在的缓存在本地环1的高速缓存中。
在图6D中,当处理器P2发出地址请求到CIM 2(例如,示为0AR),与CIM 1(即,全局主程接口模块)相关联的高速缓存1首先检查以确定所请求的数据是否被存储在高速缓存1中。如图6D所示,确定所请求的数据在高速缓存1中未命中(例如,在图6D中示为2高速缓存未命中)。由于所请求的数据没有存储在本地环0的全局主程接口模块CIM 1的高速缓存1中,因此查找包含在CIM 1中的RID来检查所请求的数据是否被缓存在远程本地环的高速缓存中。在图6D的例子中,CIM 1的RID返回HIT(在图6D中示为2RLD),并指向本地环1。因此,CIM 11的高速缓存11(即,本地环1的本地主程接口模块)随后检查以确定所请求的数据是否在其中被高速缓存。例如,事务请求是从CIM 1通过CIM 0、全局接口模块0和1、CIM 10(例如,在图6D中示为3AR,...,7AR)发送到CIM11。在图6D的例子中,事务请求导致本地环1的本地主程接口模块(例如,在图6D中被示为8高速缓存命中)的CIM 11的高速缓存11高速缓存命中。所请求的数据是由CIM 11从高速缓存11(例如,在图6D中示为9RD和10DATA)读取。随后,如图6D所示,从高速缓存11读出的数据被从CIM 11传递给处理器P2(例如,在图6D中示为11R,...,17R在)。此外,在一个实施例中,当CIM 1接收从高速缓存11读出的数据时,CIM1也存储数据在高速缓存1(例如,在图6D中示为16W)中。但应当注意的是,在图6D,16W表示发送CIM 1中的数据到高速缓存1,16R表示发送CIM 1中的数据到CIM 2。在一个实施例中,这两个操作具有相同的数值“16”,表明这两个动作至少部分同时地执行。
图6E是一个示出了用于读出操作的示例性方法650的流程图,其中多核处理系统(例如,在图6A至图6D中所示的系统)工作在静态映射的高速缓存体系结构模式。参照图6A至图6E,在654,多个第一多个处理内核(例如,处理器P0,...,P3)耦合到第一多个内核接口模块中相应的一个(例如,CIM 0,...,3)与所述第一多个内核接口模块的各个内核接口模块进行通信,所述第一多个内核接口模块被布置在第一环形网络(例如,本地环0);耦合到第二多个内核接口模块的相应的多个(例如,CIM 10,...,13)的多个第二多个处理内核(例如,处理器P10,...,P13)与第二多个内核接口模块的相应的内核接口模块通信,所述第二多个内核接口模块被布置在第二环形网络(例如,本地环1);全局环形网络接口连接所述第一环形网络和第二环形网络。
在658,第一多个内核接口模块的第一内核接口模块(例如,图6C中的CIM 2)从所述第一多个处理内核的一个相对应的第一处理内核(例如,处理器P2)接收读取数据的事务请求,第一高速缓存(例如,高速缓存2)被耦合到第一内核接口模块。
在662,第一内核接口模块发送交易请求到第二内核接口模块的多个第一内核接口模块(例如,CIM1,这是在第一环形网络中的本地主接口模块),以检查是否在数据要读取缓存在第二高速缓存(例如,高速缓存1)耦合到所述第二内核接口模块。
在666,确定将被读出的数据不是缓存在第二高速缓存(例如,在图6C中示为2高速缓存未命中),并且可能缓存在第二环形网络的第三高速缓存(例如,基于RLD命中);以及响应于确定要被读出的数据不是缓存在第二高速缓存(并可能缓存在第二环形网络的第三高速缓存),第二内核接口模块发送所述事务请求到第二多个内核接口模块的第三内核接口模块(例如,图6C中的CIM 11,它是在第二环形网络的本地主程接口模块),以检查将要读取的数据是否被缓存在第三高速缓存(例如,高速缓存11),其被耦合到所述第三内核接口模块。
在670,确定将被读出的数据不是缓存在第三高速缓存(例如,在图6C中示为8高速缓存未命中);以及响应于确定要被读出的数据不是缓存在第三高速缓存高速中,该事务请求被发送到存储器接口模块(例如,存储器接口模块1)以从耦合到所述存储器接口模块的存储器(例如,存储器1)提取数据。
动态映射的高速缓存架构模式
如前面所讨论的,在静态映射的高速缓存体系结构模式,例如,对于系统100的存储器128a的特定存储器地址,相应的DSF跟踪包含在相应的处理器中的高速缓存(例如,图1中的高速缓存123a1,...,123a4);和相应的RLD跟踪包含在一个或多个远程环中的高速缓存(例如,CIM 0,...,CIM 3的RID跟踪本地环1的CIM,即CIM10,...,CIM13的高速缓存)。因此,在静态映射的高速缓存架构模式中,如参考图6A至图6D,检查与主程干扰模块(例如,一个或多个本地和全局主程干扰模块)相关联的高速缓存或在相应的DSF和/或RLD指示的任何其它高速缓存,以确定由处理器请求的数据是否被高速缓存。即,在静态映射的高速缓存架构模式中,事务将检查预先确定数目的高速缓存(例如,基于相应的DSF和/或RLD),以确定所请求的数据是否被缓存在这些高速缓存的任一个中。在一个实施例,如果所请求的数据未被缓存在这些高速缓存的任一个中时,从存储器中取出数据。
与此相反,在动态映射的高速缓存体系结构模式,例如,对于系统100的存储器128a的特定存储器地址,连接到CIM(例如,图1中的缓存124a1,...,124b3)的高速缓存可以保持数据,所述数据不是由同一个节点的相应的DSF和RLD跟踪的。例如,在动态映射的高速缓存体系结构模式下,一个或多个高速缓存动态地缓存存储器128a的特定存储器地址的数据,其中跟踪相同数据的RLD和DSF可以是不同的CIM。为了定位已缓存的数据,在动态映射的高速缓存架构模式中,例如,当处理器请求存储器128a的特定存储器地址的数据,首先检查与本地接口模块和主程接口模块相关联的高速缓存。如果所请求的数据未存储在这些高速缓存中,则也可以检查系统中的任何其它数量的高速缓存,以确定是否有任何这些其它高速缓存是否已缓存请求的数据。在下文对动态映射的高速缓存体系结构模式进行了详细讨论。
图7A示出了示例读操作,其中多核处理系统(例如,图1的系统100)工作在动态映射的高速缓存体系结构模式。图7A中示出的体系结构类似于图6A。例如,图7A示出了仅一个本地环0(例如,环160a与160b的任何一个),其包括处理器P0,...,P3、内核接口模块CIM0,...,CIM3、缓存0,...,3、存储器接口模块0和存储器0。
在图7A的例子中,例如,处理器P1启动一个地址请求以读取存储器0的特定存储器地址的数据,其可以被缓存在本地环0的高速缓存中的一个。例如,最初,处理器P1发出地址请求(在图7A中标记为0AR)到相应的CIM 1。因此,CIM 1是事务请求的本地接口模块。在图7A的例子中,假定CIM 3是事务请求的主程接口模块(即,即跟踪事务地址的DSF和RLD在CIM3中)。
在动态映射的高速缓存架构模式中,由所述处理器P1请求的数据可以以相对高的概率被缓存在本地接口模块和/或主程接口模块相关联的高速缓存中。例如,在一个实施例中,一种启发式算法试图确保该数据被高速缓存在耦合到该处理器的高速缓存或相关联的主程接口模块的高速缓存中,所述数据是可能由处理器请求的。例如,所述启发式算法是基于由所述处理器请求的过去的数据,关于运行在哪个处理器上的哪种应用(以及哪个处理器可以请求数据)的先验知识等。例如,由处理器P1请求的数据可以以相对高的概率被缓存在高速缓存1中;当发现数据可以由多个处理器共享时,该数据可以以有相对高的优先级被缓存在主程接口模块的高速缓存(例如,CIM 3的高速缓存3)中。例如,由处理器P1请求的数据可以以相对高的概率被缓存在高速缓存1和3中。因此,首先检查高速缓存1(与本地CIM 1相关联)和高速缓存3(与主程接口模块CIM 3相关联)以确定由处理器P1请求的数据是否被缓存在高速缓存1和3的一个中。
因此,一旦CIM 1接收到地址请求,CIM1就确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中。在图7A1的例子中,该地址请求导致高速缓存1的高速缓存命中(例如,在图7A中示为1高速缓存命中)。而当CIM 1确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中时,CIM 1还至少部分地同时发送地址请求到主程接口模块CIM3(例如,在图7A中示为1AR和2AR)。因而,在图7A中,不论地址请求是否导致高速缓存1的高速缓存命中或高速缓存未命中,CIM 1都发送地址请求到CIM 3。例如,CIM 1发送地址请求到CIM 3,其中CIM1检查以确定该地址请求是否导致高速缓存1的高速缓存命中。
此外,地址请求导致高速缓存未命中、RLD未命中和CIM 3中的DSF未命中(例如,在图7A中示为3高速缓存未命中、3DSF未命中、3RLD未命中)。CIM 3发送响应到CIM 1(例如,在图7A中示为4Resp和5Resp),表明该地址请求导致高速缓存3的高速缓存未命中。当地址请求导致高速缓存1的高速缓存命中时,CIM 1从高速缓存1中读取所请求的数据(例如,在图7A中示为2RD和3DATA)。在CIM 1从CIM3接收表示高速缓存3的高速缓存未命中的反应之前、之后或进行中时,CIM 1发送从高速缓存1中读取的所请求的数据到处理器P1。在图7的例子中,在从CIM 3接收表示高速缓存3的高速缓存未命中的响应至CIM 1后,CIM 1发送从高速缓存1中读取的所请求的数据到处理器P1(例如,在图7A示为6R)。
图7B示出了另一示例读操作,其中多核处理系统(例如,图1的系统100)工作在动态映射的高速缓存体系结构模式。在图7A中,地址请求导致本地接口模块的高速缓存的高速缓存命中,而导致主程接口模块的高速缓存未命中。与此相反,在图7B,地址请求导致本地接口模块的高速缓存的高速缓存未命中,而导致主程接口模块的高速缓存命中。
类似于图7A,在图7B的例子中,例如,处理器P1启动一个地址请求,以读出存储器0的特定存储器地址的数据。此外,类似于图7A,在图7B的例子中,CIM 1是本地接口模块而CIM 3是主程接口模块。
在图7B中,首先,处理器P1发出地址请求(在图7A中标记为0AR)到相应的CIM 1。一旦CIM 1接收到地址请求,则CIM 1确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中。在图7B的例子中,地址请求导致高速缓存1中的高速缓存未命中(例如,在图7B中示为1高速缓存未命中)。当CIM 1确定地址请求是高速缓存1的高速缓存命中或是高速缓存未命中时,CIM 1还发送地址请求到主程接口模块CIM 3(例如,在图7B中示为1AR和2AR)。因而,在图7B中,不论该地址请求导致高速缓存1的高速缓存命中或高速缓存未命中时,CIM1都发送地址请求到CIM 3。
在图7B的例子中,地址请求导致高速缓存3的高速缓存命中(例如,在图7B中示为3高速缓存命中)。CIM 3(例如,在图7B中示为4RD和5DATA),并且经由CIM 2与CIM 1发送从高速缓存3中读取的数据到处理器P1(例如,在图7B中示为6R、7R和8R)。
图7C示出了另一个示例读操作,其中多核处理系统(例如,图1的系统100)工作在动态映射的高速缓存体系结构模式。如所讨论的,在图7A中,地址请求导致本地接口模块的高速缓存的高速缓存命中,而导致主程接口模块的高速缓存未命中。而且,在图7B中,地址请求导致本地接口模块的高速缓存的高速缓存未命中,而导致主程接口模块的高速缓存命中。与此相反,在图7C中,地址请求导致本地接口模块和主程接口模块两者的高速缓存的高速缓存未命中,其结果是检查本地环0的其它高速缓存。
类似于图7A和7B,在图7C的例子中,例如,处理器P1启动一个地址请求,以读取存储器0的特定存储器地址的数据。此外,类似于图7A和7B,在图7C的例子中,CIM 1是本地接口模块而CIM 3是主程接口模块。
在图7C中,最初,处理器P1发出地址要求(在图7C中标记为0AR)到相应的CIM 1。一旦CIM 1接收到地址请求,则CIM 1确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中。在图7C的例子中,该地址请求导致高速缓存1的高速缓存未命中(例如,在图7C中示为1高速缓存未命中)。当CIM 1确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中时,CIM 1还发送地址请求到主程接口模块CIM 3(例如,在图7C中示为1AR和2AR)。因而,在图7C中,不论地址请求是否导致高速缓存1的高速缓存命中或高速缓存未命中,CIM 1都发送地址请求到CIM 3。
在图7C的例子中,该地址请求也导致高速缓存3的高速缓存未命中(例如,在图7C中示为3高速缓存命中),与DSF未命中和RLD未命中一起。CIM 3发送响应到CIM 1(例如,在图7C中示为4Resp和5Resp),表明该地址请求导致高速缓存3的高速缓存未命中。
当地址请求导致本地接口模块和主程接口模块两者的高速缓存的高速缓存未命中时,CIM 1然后发送地址请求到(i)本地环0的一个或多个其它高速缓存(例如,到本地环0的除了本地接口模块和主程接口模块的所有接口模块的高速缓存),以及(ii)到存储器接口模块0。例如,在接收到指示地址请求导致高速缓存3的高速缓存未命中之后,CIM 1发送地址请求到CIM 0和CIM 2的每一个(例如,在图7C中示为6AR和6AR),以检查所请求的数据是否被缓存在高速缓存0和2的一个或两个中。地址请求也被发送到存储器接口模块0。在一个实施例中,CIM 1至少部分同时地发起地址请求的发送到CIM 0和CIM 2的每一个。在一个实施例中,通过(i)CIM 0和(ii)全局接口模块0发送地址请求到存储器接口模块0(在图7C中示为7AR和8AR)。
在图7C的例子中,地址请求还导致高速缓存0的高速缓存未命中(例如,在图7C中示为7高速缓存未命中),而导致高速缓存2的高速缓存未命中(例如,在图7C中示为7高速缓存命中)。CIM 2从高速缓存2中读取所请求的数据(例如,在图7C中示为8RD和9DATA),并经由CIM 1发送从高速缓存2中读取的数据到处理器P1(例如,在图7C中示为10R和11R)。
如所讨论的,还通过(i)CIM 0和(ii)全局接口模块0发送地址请求到存储器接口模块0(在图7C中示为7AR和8AR)。响应于高速缓存0的高速缓存未命中,CIM 0传送响应到存储器接口模块0,表明该地址请求导致高速缓存未命中(在图7C中示为8Resp(未命中)和9Resp(未命中))。另外,响应于高速缓存2的高速缓存命中,CIM 2发送响应到存储器接口模块0,表明该地址请求导致高速缓存2的高速缓存命中(在图7C中示为8Resp(命中)和9Resp(命中))。根据接收到该地址请求导致高速缓存2的高速缓存命中的指示,存储器接口模块0避免访问存储器0以提取相应于该地址请求的数据(或避免发送从存储器0预先提取的数据到请求的处理器)。
在一个实施例中,当地址请求被发送到存储器接口模块0(例如,通过CIM 0,在图7C中示为7AR和8AR),该地址请求包含一些将遵循地址请求的响应。例如,在图7C中,基于高速缓存1和3的高速缓存未命中(即,与本地和家庭接口模块相关联的高速缓存),还有要检查的其他两个高速缓存(例如,高速缓存0和2)。因此,两种响应表明命中或未命中(例如,来自两个高速缓存0和2)是由存储器接口模块0在接收到地址请求之后接收的。因此,由存储器接口模块0接收到的所请求的地址表示两个响应将遵循地址请求。一旦存储器接口模块0接收到地址请求,则存储器接口模块0等待接收两个响应(例如,在一个实施例中,在等待期间,存储器接口模块0可以从存储器0预先提取所请求的数据)。如果由存储器接口模块0接收到的两个响应中的至少一个指示命中,则存储器接口模块0丢弃地址请求。例如,在图7C中,响应之一(例如,来自CIM2的响应)是一个命中——因此,存储器接口模块0丢弃地址请求。然而,如参考图7D在本文稍后讨论的,如果这两个反应都是未命中,则存储器接口模块0访问存储器0(例如,如果存储器接口模块0尚未预先提取请求的数据),并发送从存储器0所获取的数据到请求的处理器。
图7D示出了另一示例读操作,其中多核处理系统(例如,图1的系统100)工作在动态映射的高速缓存体系结构模式。如所讨论的,在图7A中,地址请求导致本地接口模块的高速缓存的高速缓存命中,而导致主程接口模块的高速缓存未命中。在图7B中,地址请求导致本地接口模块的高速缓存的高速缓存未命中,而导致主程接口模块的高速缓存命中。在图7C中,地址请求导致本地接口模块和主程接口模块两者的高速缓存的高速缓存未命中,而导致环0的另一个高速缓存的高速缓存命中。在图7D的例子中,地址请求导致本地环0的所有高速缓存的高速缓存未命中,因此在其上的数据被从存储器0中读出。
类似于图7A至图7C,在图7D的例子中,例如,处理器P1启动一个地址请求,以读取存储器0的特定存储器地址的数据。此外,类似于图7A至图7C,在图7D的例子中,,CIM 1是本地接口模块和CIM 3是主程接口模块。
在图7D中,最初,处理器P1发出地址请求(在图7D中标记为0AR)到相应的CIM 1。一旦CIM 1接收到地址请求,则CIM 1确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中。在图7D的例子中,地址请求导致高速缓存1的高速缓存未命中(例如,在图7D中示为1高速缓存未命中)。当CIM 1确定地址请求是否是高速缓存1的高速缓存命中或高速缓存未命中是,CIM 1还发送地址请求到主程接口模块CIM 3(例如,在图7D中示为1AR和2AR)。在图7D1的例子中,地址请求也导致高速缓存3的高速缓存未命中(例如,在图7D中示为3高速缓存命中)。CIM 3发送响应到CIM 1(例如,在图7D中示为4Resp和5Resp),表明该地址请求导致高速缓存3的高速缓存未命中。
当地址请求导致本地接口模块和主程接口模块两个的高速缓存的高速缓存未命中时,CIM 1发送地址请求到本地环0的一个或多个其他高速缓存(例如,到本地环0的除了本地接口模块和主程接口模块的所有接口模块的高速缓存)。例如,在接收到地址请求导致高速缓存3的高速缓存未命中的指示之后,CIM 1发送地址请求到CIM 0和CIM 2的每一个(例如,在图7D中示为6AR和6AR),以检查所请求的数据是否被缓存在高速缓存0和高速缓存2的一个或两个中。在一个实施例中,CIM 1至少部分同时地发送地址请求到CIM 0和CIM 2的每一个。地址请求也被发送到存储器接口模块0(例如,在图7D中示为7AR和8AR)。在图7D的例子中,地址请求也导致在这两个高速缓存0和1中的高速缓存未命中(例如,在图7D中示为7高速缓存未命中)。
当地址请求导致本地环0的所有高速缓存的高速缓存未命中时,从存储器0中取出请求的数据。例如,当CIM 0检查高速缓存命中或高速缓存未命中时,CIM 0也发送地址请求到存储器接口模块0,例如,以在高速缓存未命中的情况下预先提取数据(例如,在图7D中示为7AR和8AR)。在确定所述地址请求是高速缓存未命中之后,CIM 0还传送响应到存储器接口模块0,表明该地址请求是高速缓存0的高速缓存未命中(例如,在图7D中示为8Resp(未命中)和9Resp(未命中))。同样地,CIM 2还发送响应到存储器接口模块0,表明该地址请求是高速缓存2的高速缓存未命中(在图7D中也示为8Resp(未命中)和9Resp(未命中))。
如先前参考图7C讨论的,由图7D中的存储器接口模块0接收到的地址请求还表明两种响应(例如,来自CIM 0和CIM2)将遵循地址请求。一旦存储器接口模块0接收两个高速缓存未命中指示(例如,从CIM 0和CIM 2),则存储器接口模块0从存储器0获取所请求的数据(例如,在图7D中示为10RD和11DATA)。然后存储器接口模块0发送从存储器0提取的数据到处理器P1,例如,经由全局接口模块0、CIM 0与CIM 1(例如,在图7D中示为12R,...,15R)。
尽管图7A至图7D示出了仅检查本地环0的高速缓存来确定地址请求是否是高速缓存命中或高速缓存未命中,在一个实施例中,也可以检查另外一个本地环的高速缓存(例如,通过一个全局环互连到本地环0的本地环1),例如,假如本地环0的所有高速缓存导致高速缓存未命中。因此,在这样一个实施例中,访问本地环1的高速缓存是通过全局环进行的。在一个实施例中,在检查本地环1的其它高速缓存之前,首先检查与本地环1的本地接口模块相关联的高速缓存。
图7E是一个示出了读操作的示例性方法750流程图,其中多核处理系统(例如,在图7A至图7D中示出的系统)工作在动态映射的高速缓存体系结构模式。
在754,多个多个处理内核(例如,图7A至图7D中的处理器P0,...,P3)与多个内核接口模块的相应的内核接口模块通信(例如,CIM 0,...,3),所述多个内核接口模块被配置为第一环形网络,其中多个所述多个内核接口模块被耦合到所述多个高速缓存的相应的高速缓存(例如,高速缓存0,...,3)。
在758,由多个内核接口模块的第一内核接口模块(例如,图7D中的CIM 1)从多个处理内核的相应的第一处理内核(例如,处理器P1)接收事务请求以读取数据。
在762,第一内核接口模块检查以确定要读取的数据是否被高速缓存在耦合到所述第一内核接口模块的第一高速缓存(例如,高速缓存1);且当检查将被读取的数据是否被缓存在第一高速缓存,第一内核接口模块发送事务请求到第二内核接口模块(例如,图7D中的CIM 3,它是主程接口模块),以检查将要读取的数据是否被缓存在耦合到所述第二内核接口模块的第二高速缓存(例如,高速缓存3)。
在766,确定将被读出的数据不是缓存在第一高速缓存和第二高速缓存(例如,在图7D中示为1高速缓存未命中和3高速缓存未命中)的任一个中。因此,发送事务请求到第一环形网络的一个或多个其他内核接口模块的每一个(例如,CIM 0和CIM 2),以检查将要读取的数据是否被缓存在分别耦合到所述一个或多个其他内核接口模块的一个或多个其它高速缓存(例如,高速缓存0和高速缓存2)。
在770,确定将被读出的数据不是缓存在一个或多个其它高速缓存的任一个(例如,在图7D中示为7高速缓存未命中)。因此,发送事务请求到存储器接口模块(例如,图7D中的存储器接口模块0)以从耦合到所述存储器接口模块的存储器(例如,存储器0)提取数据。
在一个实施例中,系统工作在静态映射的高速缓存体系结构模式或者动态映射的高速缓存架构模式中的任一个。在一个示例中,比起实施动态映射的高速缓存体系结构模式,静态映射的高速缓存体系结构模式是相对较不复杂的实现。在一个例子中,比在静态映射的高速缓存架构模式中的未命中惩罚,在功耗和延迟方面,动态映射的高速缓存体系结构模式中高速缓存未命中的惩罚可以更高。然而,在一个示例中,考虑到上述讨论的启发式算法,相比于静态映射的高速缓存体系结构模式,动态映射的高速缓存体系结构模式可以提供相对较好的延迟和更高的带宽。在一个实施例中,系统100是否工作在静态映射的高速缓存体系结构模式或者动态映射的高速缓存体系结构模式是可配置的。例如,系统100的一个参数被配置成选择性地操作系统100在静态映射的高速缓存体系结构模式或动态映射的高速缓存架构模式中的一个中。在另一个例子中,系统100是否工作在静态映射的高速缓存体系结构模式或动态映射的高速缓存体系结构模式是基于系统100的各种组件的配置或属性。作为一个例子,如果系统100表现出每个处理器的相对较小的存储器足迹(因此,显示出高速缓存的高的命中率)以及存储器和处理器之间相对高的亲和力,系统100工作在动态映射的高速缓存体系结构模式。在另一个例子中,如果系统100具有一个各个处理器之间相对较大的共享的存储器,则系统100工作在动态映射的高速缓存体系结构模式。
结合存储器访问请求
图8示出了用于组合多个存储器访问请求的系统800。该系统800包括一个耦合到本地环804的存储器接口模块808。存储器接口模块808还耦合到存储器812。在一个实施例中,环804、存储器接口模块808和存储器812类似于图1的系统100的相应部件(或图6A至图6D和7A至图7D中相应的部件)。例如,环804、存储器接口模块808和/或存储器812分别类似于图1的系统100的环160a、存储接口模块126a和存储器128a。图8仅示出了环804的一部分,各种部件耦合到所述环(例如,参考图1讨论的)未在图8中示出。在一个实施例中,通过控制对存储器812的访问,存储器接口模块808充当用于存储器812的存储器控制器。
存储器接口模块808接收存储器请求的流。某些这些请求是存储器访问请求,例如,以读取来自存储器812的各个存储器地址的数据。例如,存储器接口模块808接收预先提取请求822以从存储器812的地址预先提取数据。例如,在处理器实际上需要数据之前,预先提取请求822是由一个处理器发出的。例如,处理器发出预先提取请求822,猜测所请求的数据可能很快需要一些时间。在一个实施例中,预先提取请求822是一个推测性读取请求,例如,以基于可能在不久的将来需要数据的推测从存储器812读取数据(例如,基于处理器处理第一数据,处理器猜测处理器可能在不久的将来需要第二数据)。
存储器接口模块808还接收一个读取请求826,以从存储器812的地址读取数据。例如,当处理器要从存储器812的地址读取数据时,读取请求826是由处理器发出的。
在一个实施例中,预先提取请求822和读取请求826可以由单个组件(例如,处理器)接收。在另一个实施例中,预先提取请求822和读取请求826可以由两个不同的相应部件接收(例如,预先提取请求822由第一处理器接收的,并且读取请求826由第二处理器接收)。
图8示出了通过第一通信链路由存储器接口模块808接收预先提取请求822(例如,从环804的左侧),并通过第二通信链路接收读取请求826(例如,从环804的右侧)。然而,在另一个实施例中,虽然未在图8中示出,存储器接口模块808可以通过相同的通信链路接收预先提取请求822和读取请求826(例如,从环804的相同侧)。
在一个实施例中,存储器接口模块808同时接收预先提取请求822和读取请求826。或者,在另一实施例中,存储器接口模块808在接收读取请求826之前接收预先提取请求822(例如,当存储器接口模块808接收预先提取请求822时存储器接口模块808接收读取请求826,当预先提取请求822被排队在存储器接口模块808进行处理时接收读取请求826,或者在由存储器接口模块808充分执行预先提取请求822之前接收读取请求826)。可替换地,在又一实施例中,存储器接口模块808在接收读取请求826之后接收预先提取请求822(例如,当存储器接口模块808处理读取请求826时存储器接口模块808接收预先提取请求822,当读取请求826被排队在存储器接口模块808进行处理时接收预先提取请求826,或者在由存储器接口模块808充分执行读取请求826之前)。
在一个实施例中,发出每一个读取请求826和预先提取请求822以读取存储器812的同一存储器地址的数据。作为一个例子,每一个读取请求826和预先提取请求822旨在读取存储器812的第一存储器地址的数据。
在一个实施例中,存储器接口模块808包括请求组合模块832和优先级分配模块838。在一个实施例中,该请求组合模块832确定(ⅰ)读取请求826和预先提取请求822的两者同时为存储器接口模块808的当前未决以执行,以及(ii)发出每一个读取请求826和预先提取请求822以读取存储器812的同一存储器地址的数据。在一个实施例中,基于这样的确定,请求组合模块832结合读取请求826和预先提取请求822。例如,请求组合模块832产生一个组合请求840以提取存储器812的数据,并从存储器812中读取数据。在一个实施例中,一旦从存储器812读出所请求的数据,则存储器接口模块808发送存储器812读出的数据到读取请求826和预先提取请求822的发起者,从而完成了读取请求826和预先提取请求822的处理。在一个实施例中,组合请求840包括读取请求826,并且响应于所述预先提取请求822没有被执行数据的抓取。在一个实施例中,组合请求840包括从存储器812读取数据的请求。
因此,如果分别单独执行读取请求826和预先提取请求822(即,如果请求组合模块832不组合读取请求826和预先提取请求822),则存储器接口模块808将需要访问存储器812两次,以从存储器812的同一存储器地址两次读出相同的数据(换言之,一旦用于处理读取请求826,并且一旦用于处理所述预先提取请求822)。然而,通过组合读取请求826和预先提取请求822,当处理读取请求826和预先提取请求822时,存储器接口模块808需要访问存储器812仅一次。
在一个实施例中,访问存储器812的请求有一个相应的相关联的优先级(例如,基于一种类型的请求的一个预先定义的优先级)。例如,存储器接口模块808接收的读取请求(例如,读取请求826)具有第一优先级,而存储器接口模块808接收的预先提取请求(例如,预先提取请求822)具有第二优先级。在一个实施例中,第一优先级高于所述第二优先级。即,如果具有第一优先级的读取请求是驻留在存储器接口模块808以用于与预先提取请求一起处理,则读取请求是先于预先提取请求执行的(例如,由于所述第一优先级高于所述第二优先级)。因此,第一优先级高于第二优先级意味着相比于预先提取请求该读取请求具有较高的执行优先级。
如所讨论的,在一个例子中,由存储器接口模块808接收到的读取请求826具有第一优先级,而由存储器接口模块808接收的预先提取请求822具有第二优先级。在一个实施例中,优先级分配模块838向组合请求840分配第三优先级。在一个实施例中,所述第三优先级是第一优先级和第二优先级中的较高者。在一个实施例中,第一优先级高于所述第二优先级,因此,第三优先级等于第一优先级。
在一个实施例中,向组合请求840分配较高的优先级(例如,第一优先级),例如,执行驻留在存储器接口模块808的各种其它预先提取请求之前,由存储器接口模块808执行组合请求840。
图9是一个流程图,示出了用于操作图8中的系统800的示例性方法900。在904,存储器接口模块(例如,存储器接口模块808),其耦合到存储器(例如,存储器812),接收第一存储器访问请求(例如,预先提取请求822)以访问存储在存储器的数据,存储器接口模块配置为控制对存储器的访问;以及存储器接口模块接收第二存储器访问请求(例如,读取请求826)以访问存储在存储器中的数据。
在908,基于所述第一存储器访问请求和第二存储器访问请求,存储器接口模块(例如,请求合并模块832)生成第三存储器访问请求(例如,组合请求840),例如,通过组合所述第一存储器访问请求和第二存储器访问请求。在912,基于所述第三存储器访问请求,所述存储器接口模块访问存储器以读取存储器中的数据。
描述可以使用术语“一个实施例”或“多个实施例”,其均可以指代相同或不同实施例的一个或多个。此外,在实施例中使用的术语“包括”、“包含”、“具有”等是同义的。
已经按照最有助于理解所请求保护主题的方式将各种操作又描述为多个分立动作或操作。然而,描述的顺序不应被认为是暗示这些操作必需依赖顺序。具体地,这些操作可以不按照呈现的顺序执行。可以按照与描述的实施例不同的顺序来执行描述的操作。在附加实施例中可以执行各种附加操作和/或可以省略描述的操作。
尽管这里已经图示和描述了特定实施例,但本领域普通技术人员将理解到的是,在不脱离范围的情况下,被计算用于实现相同目的的各种各样的替代和/或等同实施例或实施方案可以代替图示和描述的这些实施例。本领域技术人员将容易理解到,可以以非常广泛的各种各样的方式来实施实施例。本申请旨在于覆盖这里讨论的实施例的任意修改或变体。因此,其目的显然是实施例仅受权利要求及其等同方案的限制。