一种芯片访问方法、装置、存储介质及电子设备转让专利

申请号 : CN202211633577.7

文献号 : CN115658591B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

本公开提供了一种芯片访问方法、装置、存储介质及电子设备。在本公开提供的芯片访问方法中,确定第一访问请求,第一访问请求包括源芯片标识和访问地址,访问地址对应于目标芯片;响应于目标芯片与第一芯片为不同芯片,根据源芯片标识、访问地址以及第一芯片的预设的路由信息表,从目标芯片对应的候选路径中确定目标路径,以及确定访问地址对应的路径地址;确定目标路径指向的与第一芯片相连接的第二芯片;根据路径地址以及路由信息表,从目标路径对应的候选通路中确定目标通路,以及确定路径地址对应的交织地址;利用第一访问请求和交织地址生成第二访问请求,并通过目标通路,将第二访问请求发送给第二芯片。

权利要求 :

1.一种芯片访问方法,其特征在于,所述方法应用于多芯片系统中的第一芯片,所述方法包括:确定第一访问请求,所述第一访问请求包括源芯片标识和访问地址,所述访问地址对应于目标芯片;

响应于所述目标芯片与所述第一芯片为不同芯片,根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址;

确定所述目标路径指向的与所述第一芯片相连接的第二芯片;

根据所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址;

利用所述第一访问请求和所述交织地址生成第二访问请求,并通过所述目标通路,将所述第二访问请求发送给所述第二芯片;

其中,所述访问地址中至少包括目标芯片标识;

根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址,具体包括:根据所述源芯片标识和所述目标芯片标识,在所述第一芯片的预设的路由信息表中查询候选路径;

根据所述访问地址在所述候选路径中选择目标路径,并确定路径地址;

其中,根据所述访问地址在所述候选路径中选择目标路径,并确定路径地址,具体包括:确定所述访问地址中包含的所述目标芯片标识,并根据预设的交织粒度确定所述访问地址中的静态数据;

根据所述目标芯片标识以及访问地址的静态数据确定所述访问地址的动态数据;

根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据;

根据所述静态数据、所述路径地址的动态数据以及所述目标芯片标识,确定所述路径地址。

2.如权利要求1所述的方法,其特征在于,根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据,具体包括:采用所述候选路径的数量,对所述访问地址的动态数据进行取模,并在所述候选路径中选择标识与取模结果匹配的候选路径,作为目标路径;

根据所述访问地址的动态数据与所述候选路径的数量的商确定所述路径地址的动态数据。

3.如权利要求1所述的方法,其特征在于,根据所述源芯片标识、所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址,具体包括:在所述路由信息表中查询与所述目标路径对应的候选通路;

根据所述路径地址在所述候选通路中选择目标通路,并确定交织地址。

4.如权利要求3所述的方法,其特征在于,根据所述路径地址在所述候选通路中选择目标通路,并确定交织地址,具体包括:确定所述路径地址中包含的目标芯片标识,并根据预设的交织粒度确定所述路径地址中的静态数据;

根据所述目标芯片标识以及所述路径地址的静态数据确定所述路径地址的动态数据;

根据所述路径地址的动态数据以及所述候选通路的数量,确定目标通路以及所述交织地址的动态数据;

根据所述静态数据、所述交织地址的动态数据以及所述目标芯片标识,确定所述交织地址。

5.如权利要求4所述的方法,其特征在于,根据所述路径地址的动态数据以及所述候选通路的数量,确定目标通路以及所述交织地址的动态数据,具体包括:采用所述候选通路的数量,对所述路径地址的动态数据进行取模,并在所述候选通路中选择标识与取模结果匹配的候选通路,作为目标通路;

根据所述路径地址的动态数据与所述候选通路的数量的商确定所述交织地址的动态数据。

6.如权利要求1所述的方法,其特征在于,所述路由信息表的生成过程,具体包括:根据所述多芯片系统的物理连接数据,确定所述第一芯片在访问其它芯片时的候选路径;

基于目标候选路径,根据所述目标候选路径对应的候选芯片与所述第一芯片之间的路径选择数据确定所述第一芯片在所述目标候选路径下的候选通路;其中,所述目标候选路径为任一候选路径;

基于所述候选路径和所述候选通路,生成所述路由信息表。

7.如权利要求1所述的方法,其特征在于,所述方法还包括:响应于所述目标芯片与所述第一芯片为同一芯片,利用所述第一访问请求执行访问操作。

8.一种芯片访问装置,其特征在于,所述装置应用于多芯片系统中的第一芯片,包括:请求确定模块,用于确定第一访问请求,所述第一访问请求包括源芯片标识和访问地址,所述访问地址对应于目标芯片;

路径选择模块,用于响应于所述目标芯片与所述第一芯片为不同芯片,根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址;

芯片确定模块,用于确定所述目标路径指向的与所述第一芯片相连接的第二芯片;

通路选择模块,用于根据所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址;

发送模块,用于利用所述第一访问请求和所述交织地址生成第二访问请求,并通过所述目标通路,将所述第二访问请求发送给所述第二芯片;

所述路径选择模块,具体用于根据所述源芯片标识和所述目标芯片标识,在所述第一芯片的预设的路由信息表中查询候选路径;确定所述访问地址中包含的所述目标芯片标识,并根据预设的交织粒度确定所述访问地址中的静态数据;根据所述目标芯片标识以及访问地址的静态数据确定所述访问地址的动态数据;根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据;根据所述静态数据、所述路径地址的动态数据以及所述目标芯片标识,确定所述路径地址。

9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1 7任一项所述的方法。

~

10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器为多芯片处理器,所述处理器执行所述程序时实现上述权利要求1 7任一项所述的方法。

~

说明书 :

一种芯片访问方法、装置、存储介质及电子设备

技术领域

[0001] 本公开涉及芯片技术领域,尤其涉及一种芯片访问方法、装置、存储介质及电子设备。

背景技术

[0002] 如今,多芯片互联的应用已经十分普遍,在芯片中安装地址传输单元(Address Transfer Unit,AMT),将多个芯片通过物理上的通路(link)进行连接,以提高芯片所在系统的总算力。在多芯片互联的场景下,跨芯片访问是必然存在的。
[0003] 现有的方法在实现跨芯片访问时,芯片根据预先设置好的路由信息中规定的路径以及需要使用到的link,来访问其他芯片。但现有技术在实现芯片之间的访问时,存在link负载不均衡的问题。
[0004] 由此,本公开提供一种解决link负载不均衡问题的芯片访问方法。

发明内容

[0005] 本公开提供一种芯片访问方法、装置、存储介质及电子设备,以至少部分地解决现有技术存在的上述问题。
[0006] 本公开采用下述技术方案:
[0007] 确定第一访问请求,所述第一访问请求包括源芯片标识和访问地址,所述访问地址对应于目标芯片;
[0008] 响应于所述目标芯片与所述第一芯片为不同芯片,根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址;
[0009] 确定所述目标路径指向的与所述第一芯片相连接的第二芯片;
[0010] 根据所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址;
[0011] 利用所述第一访问请求和所述交织地址生成第二访问请求,并通过所述目标通路,将所述第二访问请求发送给所述第二芯片。
[0012] 可选的,所述访问地址中至少包括目标芯片标识;
[0013] 根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址,具体包括:
[0014] 根据所述源芯片标识和所述目标芯片标识,在所述第一芯片的预设的路由信息表中查询候选路径;
[0015] 根据所述访问地址在所述候选路径中选择目标路径,并确定路径地址。
[0016] 可选的,根据所述访问地址在所述候选路径中选择目标路径,并确定路径地址,具体包括:
[0017] 确定所述访问地址中包含的所述目标芯片标识,并根据预设的交织粒度确定所述访问地址中的静态数据;
[0018] 根据所述目标芯片标识以及访问地址的静态数据确定所述访问地址的动态数据;
[0019] 根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据;
[0020] 根据所述静态数据、所述路径地址的动态数据以及所述目标芯片标识,确定所述路径地址。
[0021] 可选的,根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据,具体包括:
[0022] 采用所述候选路径的数量,对所述访问地址的动态数据进行取模,并在所述候选路径中选择标识与取模结果匹配的候选路径,作为目标路径;
[0023] 根据所述访问地址的动态数据与所述候选路径的数量的商确定所述路径地址的动态数据。
[0024] 可选的,根据所述源芯片标识、所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址,具体包括:
[0025] 在所述路由信息表中查询与所述目标路径对应的候选通路;
[0026] 根据所述路径地址在所述候选通路中选择目标通路,并确定交织地址。
[0027] 可选的,根据所述路径地址在所述候选通路中选择目标通路,并确定交织地址,具体包括:
[0028] 确定所述路径地址中包含的目标芯片标识,并根据预设的交织粒度确定所述路径地址中的静态数据;
[0029] 根据所述目标芯片标识以及所述路径地址的静态数据确定所述路径地址的动态数据;
[0030] 根据所述路径地址的动态数据以及所述候选通路的数量,确定目标通路以及所述交织地址的动态数据;
[0031] 根据所述静态数据、所述交织地址的动态数据以及所述目标芯片标识,确定所述交织地址。
[0032] 可选的,根据所述路径地址的动态数据以及所述候选通路的数量,确定目标通路以及所述交织地址的动态数据,具体包括:
[0033] 采用所述候选通路的数量,对所述路径地址的动态数据进行取模,并在所述候选通路中选择标识与取模结果匹配的候选通路,作为目标通路;
[0034] 根据所述路径地址的动态数据与所述候选通路的数量的商确定所述交织地址的动态数据。
[0035] 可选的,所述路由信息表的生成过程,具体包括:
[0036] 根据所述多芯片系统的物理连接数据,确定所述第一芯片在访问其它芯片时的候选路径;
[0037] 基于目标候选路径,根据所述目标候选路径对应的候选芯片与所述第一芯片之间的路径选择数据确定所述第一芯片在所述目标候选路径下的候选通路;其中,所述目标候选路径为任一候选路径;
[0038] 基于所述候选路径和所述候选通路,生成所述路由信息表。
[0039] 可选的,所述方法还包括:
[0040] 响应于所述目标芯片与所述第一芯片为同一芯片,利用所述第一访问请求执行访问操作。
[0041] 本公开提供的一种芯片访问的装置,所述装置包括:
[0042] 请求确定模块,用于确定第一访问请求,所述第一访问请求包括源芯片标识和访问地址,所述访问地址对应于目标芯片;
[0043] 路径选择模块,用于响应于所述目标芯片与所述第一芯片为不同芯片,根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址;
[0044] 芯片确定模块,用于确定所述目标路径指向的与所述第一芯片相连接的第二芯片;
[0045] 通路选择模块,用于根据所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址;
[0046] 发送模块,用于利用所述第一访问请求和所述交织地址生成第二访问请求,并通过所述目标通路,将所述第二访问请求发送给所述第二芯片。
[0047] 本公开提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述芯片访问方法。
[0048] 本公开提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器为多芯片处理器,所述处理器执行所述程序时实现上述芯片访问方法。
[0049] 本公开采用的上述至少一个技术方案能够达到以下有益效果:
[0050] 在本公开提供的芯片访问方法中,确定第一访问请求,第一访问请求包括源芯片标识和访问地址,访问地址对应于目标芯片;响应于目标芯片与第一芯片为不同芯片,根据源芯片标识、访问地址以及第一芯片的预设的路由信息表,从目标芯片对应的候选路径中确定目标路径,以及确定访问地址对应的路径地址;确定目标路径指向的与第一芯片相连接的第二芯片;根据路径地址以及路由信息表,从目标路径对应的候选通路中确定目标通路,以及确定路径地址对应的交织地址;利用第一访问请求和交织地址生成第二访问请求,并通过目标通路,将第二访问请求发送给第二芯片。
[0051] 在采用本公开提供的芯片访问方法执行多芯片系统中的访问时,无论确定访问请求的芯片是否为源芯片,都仅会根据自身的路由信息表确定自身将要如何传输访问请求,而不会对其它芯片的传输方式产生任何影响;同时,每个芯片在每种情况下都可存在多种不同的传输的路径与通路的选择,有效平衡了各通路之间的负载,提高了多芯片系统整体的访问效率。

附图说明

[0052] 此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
[0053] 图1为本公开中一种芯片访问方法的流程示意图;
[0054] 图2为本公开中一种多芯片互联系统的结构示意图;
[0055] 图3为本公开提供的一种芯片访问装置的示意图;
[0056] 图4为本公开提供的对应于图1的电子设备示意图。

具体实施方式

[0057] 在传统的多芯片互联系统中,有着存储了系统中所有芯片的路由信息的路由信息表,在路由信息表中预先设置了在每个芯片作为源芯片去访问其它芯片时,访问请求需要经过的路线以及路线上的通路。其中,对于任意一个芯片作为源芯片时,该芯片在访问其它芯片时的路线和通路在路由信息表中都是唯一固定的。换句话说,当源芯片与需要访问的目标芯片都已确定后,访问请求的行进路线与要经过的通路就已经确定且不再发生改变了。
[0058] 不难看出,在采用传统芯片访问方法时,当源芯片和目标芯片固定时,从源芯片访问目标芯片的路线就永远只有一条。可以想到的,当源芯片对目标芯片进行访问的数据量较大时,采用的路线上的通路会承受较大的负载,而其他通路却完全没有被使用到,是空载的。显然,传统的芯片访问方法极不灵活,导致了多芯片系统中严重的负载不均衡的问题。
[0059] 为解决上述问题,本公开提供一种在多芯片系统中能够灵活选择访问路径与访问通路的芯片访问方法。
[0060] 为使本公开的目的、技术方案和优点更加清楚,下面将结合本公开具体实施例及相应的附图对本公开技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0061] 以下结合附图,详细说明本公开各实施例提供的技术方案。
[0062] 图1为本公开中一种芯片访问方法的流程示意图,具体包括以下步骤:
[0063] S100:确定第一访问请求,所述第一访问请求包括源芯片标识和访问地址,所述访问地址对应于目标芯片。
[0064] 本公开所提供的芯片访问方法中的所有步骤均可由处于多芯片互联系统中任何具有计算功能的芯片实现。
[0065] 在本公开提供的芯片访问方法中,源芯片为生成原始访问请求的芯片,目标芯片为访问请求所要访问的芯片;第一芯片为当前正在执行本芯片访问方法的芯片,第一访问请求为第一芯片接收到的访问请求,或者为第一芯片生成的访问请求。其中,第一芯片可以与源芯片或目标芯片为同一芯片,针对不同的情况,本公开提供的芯片访问方法也会给出不同的处理方式。
[0066] 通常情况下,第一访问请求中可至少包括源芯片标识和访问地址。其中,源芯片标识用于唯一确定源芯片的身份,访问地址用于表征访问请求最终需要访问的目标芯片的地址。除源芯片标识与访问地址外,第一访问请求中还可额外包括其它数据,例如请求目标芯片执行指定功能的功能信息等,本公开对此不做具体限制。
[0067] S102:响应于所述目标芯片与所述第一芯片为不同芯片,根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址。
[0068] 当第一芯片和目标芯片是不同芯片时,则表明第一芯片接收到的访问请求并非是要访问第一芯片的请求。此时,第一芯片类似于源芯片与目标芯片之间的“中转站”,在接收访问请求后需要再转发出去。当然,第一芯片也有可能是源芯片本身;而在第一芯片并非目标芯片的情况下,无论第一芯片是否为源芯片,第一芯片后续需要执行的步骤都是相同的。
[0069] 图2为本公开中提供的一种多芯片系统的结构示意图。如图2所示,多芯片系统中存在CHIP 0 CHIP 5共六个芯片,相邻的芯片之间通过通路link连接,共存在link0 link17~ ~这十八个通路。
[0070] 在本公开提供的芯片访问方法中,针对每个芯片,均存在一个预设的路由信息表,该芯片的路由信息表记录了在该芯片生成或接收到访问请求时,针对访问请求对应的不同的源芯片与目标芯片,该芯片应通过哪个通路将访问请求发送出去。以图2所示的多芯片系统中的芯片CHIP 2为例,表1给出了芯片CHIP 2可能的路由信息表。
[0071]
[0072] 表1为图2中CHIP 2可能的路由信息表的一种。在表1中,源芯片与目标芯片栏中的数字对应于芯片CHIP 0 CHIP 5;route表示路径,用于表征路由信息表所属的芯片向外传~输访问请求时采用的通路的分组的序号;link表示通路,用于表征路由信息表所属的芯片向外传输访问请求可以使用的通路。
[0073] 在如图2所示的多芯片系统中,每个芯片上最多可设置6个link。因此,在每个芯片的路由信息表的link栏中,每行中的内容由6位的数据构成,且每位数据均为0或1。其中,6位数据按link序号从小到大的顺序对应了芯片上连接的6个link。在本实施例,也就是图2所示的CHIP 2中,link一栏中的6位数据按顺序分别代表了link4、link5、link8、link9、link10、link11的使用情况。对于每一位数据,1代表该link可以被使用,0代表该link无法被使用。对应于本实施例,110000表示可以使用link4和link5,001100表示可以使用link8和link9,000011表示可以使用link10和link11。
[0074] 从图2中可以看出,按照CHIP 2与相邻的芯片的连接情况,可将与CHIP 2相连的link分为三组:与CHIP 0相连的link4、link5为一组,与CHIP 3相连的link8、link9为一组,与CHIP 4相连的link10、link11为一组。简单来说,就是保证同一组link所连接的芯片相同。而不同的分组则可采用路径route来表示。对于任一芯片,该芯片每次传输访问请求时可以选择的route的数量即为该芯片的link所分成的组的数量。不难想象,在CHIP 2的link分组共存在三组的情况下,route可取的数值为0、1、2三个数值。
[0075] 但实际上,在一个点对点的定向传输的过程中,考虑到传输过程中总路线的长度,通常在路由信息表中并不会将芯片所有的route都设为可用的。仍以CHIP 2为例,在CHIP 2的路由信息表中可以看出,如果CHIP 2当前接收到的访问请求对应的源芯片为CHIP 0,目标芯片为CHIP 3,那么此时能够选择的route就只有一个,route0,对应的link为001100。将上述配置具象化到图2所示的多芯片系统中,可以看作为源芯片CHIP 0生成了针对目标芯片CHIP 3的访问请求,CHIP 0根据自身的路由信息表选择将访问请求发送到CHIP 2,而CHIP 2根据表1所示的路由信息表选择route0对应的link001100将访问请求发送到CHIP 3。
[0076] 而假如此时源芯片同样为CHIP 0,目标芯片变为CHIP 5,那么此时能够选择的route就存在route0与route1,对应的link分别为001100和000011。具象化到图2所示的多芯片系统中,可以看作为源芯片CHIP 0生成了针对目标芯片CHIP 5的访问请求,CHIP 0根据自身的路由信息表选择将访问请求发送到CHIP 2,而CHIP 2根据表1所示的路由信息表中的配置信息,能够选择的路径有route0和route1两个路径,对应的link分别为001100和000011,也就是CHIP 2可以选择将访问请求转发给CHIP 3或CHIP 4。此时可先从route0与route1中选择一个路径,再从选择路径下对应的link中选择一个通路,发送访问请求。
[0077] 需要注意的是,虽然在link栏中,同样的数据表示的意义也相同,也就是能够选择的link相同。但在route栏中,在源芯片与目标芯片不同的情况下,同一数值所对应的route可能是不同的route。换句话说,route的数值是仅针对在单组源芯片与目标芯片之间的传输下可选的route的序号。
[0078] 承接上例,同样是route0,当源芯片为CHIP 0,目标芯片为CHIP 3时,route0所对应的link为001100;而当源芯片为CHIP 0,目标芯片为CHIP 4时,route 0对应的link为000011。可以看出,route的序号仅代表了在当前的源芯片与目标芯片下,可以选择的link的组号。同样,不难想到,在源芯片与目标芯片中的任一芯片改变时,link的组号也同样会发生改变。
[0079] 值得一提的是,route与源芯片到达目标芯片的总路线无关,只与路由信息表对应的芯片自身如何向外传输访问请求相关。举例来说,在表1中,当源芯片为CHIP 0,目标芯片为CHIP 3时,对应的可选的route只有一个。这表示当CHIP 0向CHIP 3发送访问请求,并且经过CHIP 2时,CHIP 2可选的route只有一个;而并不代表CHIP 0只有一种路线向CHIP 3发送访问请求。可以想到的,CHIP 0同样可通过CHIP 1向CHIP 3发送访问请求,只是这种路线不经过CHIP 2,CHIP 2无需执行任何操作,因此也就不包含在CHIP 2的路由信息表中。
[0080] 需要说明的是,上述与表1所示的路由信息表相关的实施例仅针对当前接收到或生成第一访问请求的芯片,也就是第一芯片,为CHIP 2的情况下,应如何向外发送访问请求。当第一芯片不为CHIP 2时,表1所示的路由信息表便不再适用,而需要参考作为第一芯片的其它芯片的路由信息表决定如何处理访问请求。
[0081] 还需说明的是,在本公开提供的应用于多芯片系统的芯片访问方法中,多芯片系统的芯片数量、连接关系以及相邻芯片之间的通路数量都可根据具体需求进行设置。但值得注意的是,通常情况下,多芯片互联系统中的每个芯片上能够设置的通路是存在上限的,根据芯片型号以及AMT模块的不同,通路上限也会发生改变。
[0082] 当第一芯片并不是目标芯片时,第一芯片可根据自身的预设的路由信息表中的配置信息,在候选路径中确定目标路径,并确定出路径交织过程中产生的路径地址。具体的,在所述访问地址中可至少包括目标芯片标识;可根据所述源芯片标识和所述目标芯片标识,在所述第一芯片的预设的路由信息表中查询候选路径;根据所述访问地址在所述候选路径中选择目标路径,并确定路径地址。
[0083] 根据源芯片标识和目标芯片标识可确定出唯一的源芯片与唯一的目标芯片。根据确定的源芯片与目标芯片,可在路由信息表中查询对应于源芯片与目标芯片的候选路径。仍以CHIP 2为第一芯片为例,如表1所示,假设源芯片为CHIP 2,也就是自身,目标芯片为CHIP 1,此时路由信息表中候选路径有route0和route1两个候选路径;而假设源芯片为CHIP 3,目标芯片为CHIP 4时,CHIP 2的路由信息表中就只存在route0一个候选路径。
[0084] 另一方面,当第一芯片与目标芯片就是同一芯片时,可认为访问请求已经到达了需要访问的芯片,便无需再执行上述操作以及后续步骤,可直接实现访问操作。即,响应于所述目标芯片与所述第一芯片为同一芯片,利用所述第一访问请求执行访问操作。
[0085] S104:确定所述目标路径指向的与所述第一芯片相连接的第二芯片。
[0086] 在源芯片、目标芯片均已确定的情况下,根据第一芯片的路由信息表确定出目标路径后,发送访问请求所选用的link的组就也随之确定了。正如步骤S102中提到的,同一组中各link连接的芯片为同一芯片,因此便能够进一步确定出目标路径指向的与第一芯片相连接的第二芯片。
[0087] 举例来说,当第一芯片为CHIP 2,源芯片为CHIP 0,目标芯片为CHIP 5时,路由信息表中存在route0与route1两个候选路径。当选择目标路径为route0时,目标路径对应的link为link8、link9,连接的芯片为CHIP 3,那么第二芯片即为CHIP 3;当选择目标路径为route1时,目标路径对应的link为link10、link11,连接的芯片为CHIP 4,那么第二芯片即为CHIP 4。
[0088] 在此步骤中确定出的第二芯片,即为第一芯片将要发送访问请求的芯片。
[0089] S106:根据所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址。
[0090] 在确定出目标路径后,与目标路径对应的候选通路也就随之确定。在此步骤中,可根据步骤S102中确定出的目标路径确定出候选通路,并从候选通路中选择目标通路,并确定在交织过程中生成的交织地址。具体的,可在所述路由信息表中查询与所述目标路径对应的候选通路;根据所述路径地址在所述候选通路中选择目标通路,并确定交织地址。
[0091] 举例来说,假设第一芯片为CHIP 2,当源芯片为CHIP 0,目标芯片为CHIP 3,目标路径为route0时,对应的link为001100,也就是存在link8与link9两个候选通路,此时,可从link8与link9中选择一个通路,作为目标通路使用。
[0092] S108:利用所述第一访问请求和所述交织地址生成第二访问请求,并通过所述目标通路,将所述第二访问请求发送给所述第二芯片。
[0093] 在确定要选用的目标通路后,便可以通过目标通路向第二芯片发送访问请求。此时,第一访问请求中的访问地址经过交织后已变为交织地址,因此,可采用交织地址替换第一访问请求中的访问地址,生成第二访问请求,通过目标通路发送给第二芯片。
[0094] 可以想到的,当第二芯片接收到第二访问请求时,第二芯片可作为第一芯片,将第二访问请求作为第一访问请求,重新执行本公开提供的芯片访问方法中的所有步骤,直到访问请求被发送到目标芯片为止。值得一提的是,每个芯片在向外发送传送请求时,均需要根据自身的路由信息表决定传输的路径与通路,而在访问请求传输的整个过程中,源芯片与目标芯片是始终不会发生改变的。
[0095] 在采用本公开提供的芯片访问方法执行多芯片系统中的访问时,与传统的采用固定路线访问的方式不同,本方法中的每个芯片,无论是否为源芯片,都会根据自身的路由信息表确定自身将要如何传输访问请求,不会对其它芯片的传输方式产生任何影响;同时,每个芯片在每种情况下都可存在多种不同的传输的路径与通路的选择,有效平衡了各通路之间的负载,提高了多芯片系统整体的访问效率。
[0096] 额外的,在生成路由信息表时,可根据所述多芯片系统的物理连接数据,确定所述第一芯片在访问其它芯片时的候选路径;基于目标候选路径,根据所述目标候选路径对应的候选芯片与所述第一芯片之间的路径选择数据确定所述第一芯片在所述目标候选路径下的候选通路;其中,所述目标候选路径为任一候选路径;基于所述候选路径和所述候选通路,生成所述路由信息表。
[0097] 候选路径的确定主要与多芯片系统的物理连接结构相关。可以想到的,在任意两个存在通路的芯片之间均可配置候选路径。但考虑到各路径的实用性,通常不会将整体路线过长或过于复杂的路线中包含的路径配置到路由信息表中。而在确保了候选路径的情况下,候选通路的设置可主要由芯片之间的业务执行情况决定。根据历史中的业务执行信息可确定出任意两个芯片之间的业务执行情况,当源芯片与目标芯片之间的业务执行次数较少,或执行的业务较简单时,可设置较少的数量的候选通路;反之,当源芯片与目标芯片之间的业务执行次数较多,或执行的业务较复杂时,可设置较多的数量的候选通路。
[0098] 额外的,在确定目标路径的过程中,存在着地址的交织。根据访问地址以及确定出的目标路径,便能够确定出经过初步交织的路径地址。具体的,可确定所述访问地址中包含的所述目标芯片标识,并根据预设的交织粒度确定所述访问地址中的静态数据;根据所述目标芯片标识以及访问地址的静态数据确定所述访问地址的动态数据;根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据;根据所述静态数据、所述路径地址的动态数据以及所述目标芯片标识,确定所述路径地址。
[0099] 在根据访问地址确定目标路径与路径地址时,可存在多种实现方法,本公开在此提供一种实施例以供参考。具体的,可确定所述访问地址中包含的所述目标芯片标识,并根据预设的交织粒度确定所述访问地址中的静态数据;根据所述目标芯片标识以及访问地址的静态数据确定所述访问地址的动态数据;根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据;根据所述静态数据、所述路径地址的动态数据以及所述目标芯片标识,确定所述路径地址。
[0100] 通常情况下,一个地址可由三部分数据组成:静态数据、动态数据、目标芯片标识。其中,静态数据部分由预设的交织粒度决定,在交织过程中不会发生改变;目标芯片标识为唯一的标识,在交织过程中同样不发生改变;在交织过程中,主要发生改变的部分为动态数据。而地址数据的长度主要由芯片的内存空间的大小决定。
[0101] 以图2所示的多芯片系统为例,假设每个芯片的内存空间为4吉字节(Gigabyte,GB),那么六个芯片的总内存空间大小为24GB。本领域人员应当明白,24GB的内存空间所对应的地址应由35位数据构成。在交织过程中,静态数据与目标芯片标识均不发生改变的情况下,动态数据可采用多种不同的方式进行确定,本公开在此提供一种实施例以供参考。具体的,可采用所述候选路径的数量,对所述访问地址的动态数据进行取模,并在所述候选路径中选择标识与取模结果匹配的候选路径,作为目标路径;根据所述访问地址的动态数据与所述候选路径的数量的商确定所述路径地址的动态数据。基于此,可按照下述公式确定目标路径与路径地址。
[0102]
[0103]
[0104]
[0105]
[0106] 其中,addr为访问地址,addr_route为路径地址,route_num为候选路径的数量,route_select为确定出的目标路径的序号。
[0107] 在根据访问地址确定路径地址时,地址中的静态数据可不发生变化,因此路径地址的前10位(第0位 第9位)与访问地址的前10位相同。其中,静态数据的大小是根据交织粒~度决定的,交织粒度越大,静态数据就越大,在地址中所占的位数就越多。在上例中,交织粒度为1 千字节(Kilobyte,KB),也就是2^10字节(Byte,B),因此静态数据在地址中所占的位数为前10位。
[0108] 地址中的后3位(第32 34位)为目标芯片标识,由于图2所示的多芯片互联结构中~共存在6个芯片,在二进制下最少需要3位数据来表达,因此将地址中的后3位作为芯片标识。在芯片访问的场景下,由于需要访问的目标芯片并不会发生改变,因此目标芯标识不会发生改变。
[0109] 目标路径的选择以及路径地址主要由动态数据确定。在本公开提供的示例中,地址的动态数据为中间22位(第10位 第31位)。其中,路径地址的动态数据为访问地址的动态~数据除以候选路径的数量,得到的商。而目标路径可由访问地址的动态数据除以候选路径的数量得到的余数来确定。举例来说,以图2中CHIP 2为第一芯片,CHIP0为源芯片,CHIP 5为目标芯片为例,此时CHIP 2的路由信息表中共包含2个候选路径,即候选路径的数量为2。
对应的,候选路径的序号分别为0和1。在确定目标路径时,根据访问地址的动态数据除以候选路径的数量得到的余数,确定对应序号的候选路径为目标路径。
[0110] 由此,即可确定出目标路径与路径地址。
[0111] 同样的,可采用相似的方式根据路径地址确定出目标通路和交织地址。
[0112] 具体的,可确定所述路径地址中包含的目标芯片标识,并根据预设的交织粒度确定所述路径地址中的静态数据;根据所述目标芯片标识以及所述路径地址的静态数据确定所述路径地址的动态数据;根据所述路径地址的动态数据以及所述候选通路的数量,确定目标通路以及所述交织地址的动态数据;根据所述静态数据、所述交织地址的动态数据以及所述目标芯片标识,确定所述交织地址。确定动态数据并根据动态数据确定目标通路,可采用所述候选通路的数量,对所述路径地址的动态数据进行取模,并在所述候选通路中选择标识与取模结果匹配的候选通路,作为目标通路;根据所述路径地址的动态数据与所述候选通路的数量的商确定所述交织地址的动态数据。
[0113] 相似的,确定目标通路与交织地址的公式可如下所示:
[0114]
[0115]
[0116]
[0117]
[0118] 其中,addr_route为路径地址,addr_link为交织地址,link_num为候选通路的数量,link_select为确定出的目标通路的序号。
[0119] 上述用于确定目标通路以及交织地址的公式的思路,与确定目标路径以及路径地址时的思路相同,本公开在此不再进行赘述。值得一提的是,此处目标通路的序号同样是根据候选通路的数量决定的,与候选通路本身在图2中的序号无关。例如,当根据表1中确定的候选通路为110000时,那么此时候选通路为link4、link5,候选通路的数量为2,其中,link4的序号为0,link5的序号为1。根据候选路径的数量对路径地址的动态数据的取模结果,便能够选择出对应的目标通路。
[0120] 以上是本公开提供的芯片访问方法,基于同样的思路,本公开还提供了相应的芯片访问装置,如图3所示。
[0121] 图3为本公开提供的一种芯片访问装置示意图,具体包括:
[0122] 请求确定模块200,用于确定第一访问请求,所述第一访问请求包括源芯片标识和访问地址,所述访问地址对应于目标芯片;
[0123] 路径选择模块202,用于响应于所述目标芯片与所述第一芯片为不同芯片,根据所述源芯片标识、所述访问地址以及所述第一芯片的预设的路由信息表,从所述目标芯片对应的候选路径中确定目标路径,以及确定所述访问地址对应的路径地址;
[0124] 芯片确定模块204,用于确定所述目标路径指向的与所述第一芯片相连接的第二芯片;
[0125] 通路选择模块206,用于根据所述路径地址以及所述路由信息表,从所述目标路径对应的候选通路中确定目标通路,以及确定所述路径地址对应的交织地址;
[0126] 发送模块208,用于利用所述第一访问请求和所述交织地址生成第二访问请求,并通过所述目标通路,将所述第二访问请求发送给所述第二芯片。
[0127] 可选的,所述访问地址中至少包括目标芯片标识;
[0128] 所述路径选择模块202,具体用于根据所述源芯片标识和所述目标芯片标识,在所述第一芯片的预设的路由信息表中查询候选路径;根据所述访问地址在所述候选路径中选择目标路径,并确定路径地址。
[0129] 可选的,所述路径选择模块202,具体用于确定所述访问地址中包含的所述目标芯片标识,并根据预设的交织粒度确定所述访问地址中的静态数据;根据所述目标芯片标识以及访问地址的静态数据确定所述访问地址的动态数据;根据所述访问地址的动态数据以及所述候选路径的数量,确定目标路径以及所述路径地址的动态数据;根据所述静态数据、所述路径地址的动态数据以及所述目标芯片标识,确定所述路径地址。
[0130] 可选的,所述路径选择模块202,具体用于采用所述候选路径的数量,对所述访问地址的动态数据进行取模,并在所述候选路径中选择标识与取模结果匹配的候选路径,作为目标路径;根据所述访问地址的动态数据与所述候选路径的数量的商确定所述路径地址的动态数据。
[0131] 可选的,所述通路选择模块206,具体用于在所述路由信息表中查询与所述目标路径对应的候选通路;根据所述路径地址在所述候选通路中选择目标通路,并确定交织地址。
[0132] 可选的,所述通路选择模块206,具体用于确定所述路径地址中包含的目标芯片标识,并根据预设的交织粒度确定所述路径地址中的静态数据;根据所述目标芯片标识以及所述路径地址的静态数据确定所述路径地址的动态数据;根据所述路径地址的动态数据以及所述候选通路的数量,确定目标通路以及所述交织地址的动态数据;根据所述静态数据、所述交织地址的动态数据以及所述目标芯片标识,确定所述交织地址。
[0133] 可选的,所述通路选择模块206,具体用于采用所述候选通路的数量,对所述路径地址的动态数据进行取模,并在所述候选通路中选择标识与取模结果匹配的候选通路,作为目标通路;根据所述路径地址的动态数据与所述候选通路的数量的商确定所述交织地址的动态数据。
[0134] 可选的,所述装置还包括,生成模块210,具体用于根据所述多芯片系统的物理连接数据,确定所述第一芯片在访问其它芯片时的候选路径;基于目标候选路径,根据所述目标候选路径对应的候选芯片与所述第一芯片之间的路径选择数据确定所述第一芯片在所述目标候选路径下的候选通路;其中,所述目标候选路径为任一候选路径;基于所述候选路径和所述候选通路,生成所述路由信息表。
[0135] 可选的,所述装置还包括,访问模块212,具体用于响应于所述目标芯片与所述第一芯片为同一芯片,利用所述第一访问请求执行访问操作。
[0136] 本公开还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的芯片访问方法。
[0137] 本公开还提供了图4所示的电子设备的示意结构图。如图4所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的芯片访问方法。其中,处理器为多芯片处理器,处理器中的任一芯片均可用于实现本公开提供的芯片处理方法。当然,除了软件实现方式之外,本公开并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0138] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very‑High‑Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0139] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0140] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0141] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本公开时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0142] 本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0143] 本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0144] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0145] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0146] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0147] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0148] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0149] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0150] 本领域技术人员应明白,本公开的实施例可提供为方法、系统或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0151] 本公开可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本公开,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0152] 本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0153] 以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。