CN101908036A - 一种高密度多处理器系统及其节点控制器 - Google Patents

一种高密度多处理器系统及其节点控制器 Download PDF

Info

Publication number
CN101908036A
CN101908036A CN 201010236543 CN201010236543A CN101908036A CN 101908036 A CN101908036 A CN 101908036A CN 201010236543 CN201010236543 CN 201010236543 CN 201010236543 A CN201010236543 A CN 201010236543A CN 101908036 A CN101908036 A CN 101908036A
Authority
CN
China
Prior art keywords
processor
port
write
read
module
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.)
Granted
Application number
CN 201010236543
Other languages
English (en)
Other versions
CN101908036B (zh
Inventor
曹政
王凯
陈飞
刘锐
胡涛
安学军
孙凝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2010102365435A priority Critical patent/CN101908036B/zh
Publication of CN101908036A publication Critical patent/CN101908036A/zh
Application granted granted Critical
Publication of CN101908036B publication Critical patent/CN101908036B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本发明公开了一种高密度多处理器系统及其节点控制器。所述节点控制器,包括:主处理器端口和从处理器端口,用于分别与主处理器和从处理器连接,主处理器负责具体计算任务的运行,以及对外围设备的发现和初始化过程,从处理器只负责具体计算任务的运行;I/O端口,通过I/O总线与外围设备连接;读/写模块与读/写交叉开关模块连接;直接内存访问交叉开关模块,用于实现各处理器端口间直接内存访问数据的交换;读/写交叉开关模块,用于实现各处理器端口之间,以及处理器端口和I/O端口之间读/写数据的交换。

Description

一种高密度多处理器系统及其节点控制器
技术领域
本发明涉及并行多处理器系统领域,特别是涉及一种高密度多处理器系统及其节点控制器。
背景技术
并行多处理器系统的节点控制器是节点内各种部件(处理器、主存和设备等)互连的通道,其结构随着体系结构的不同而不同。当前主流的体系结构包括对称多处理系统(Symmetrical Multi-Processing,SMP)、非对称存储访问系统(Non Uniform Memory Access,NUMA)、大规模并行处理系统(Massively Parallel Processing,MPP)和机群系统(Cluster)。
Cluster中节点采用主流商用计算机,多为SMP和NUMA结构,因此SMP、NUMA和Cluster中采用的节点控制器可以归为一类,此类节点的节点控制器采用北桥加南桥的方式。北桥负责实现处理器与主存及南桥间的数据交互,目前的系统中北桥多被集成在处理器中;南桥负责外围设备与北桥的数据交互,连接所有的外围设备。然而使用此类节点控制器,处理器间的数据交互以Load和Store方式,一次传输数据量很小,通信带宽利用率低。节点控制器需要维护Cache一致性,导致扩展性差。
MPP系统则采用定制的节点,其节点控制器称为路由器(Router),多个处理器直接挂载到Router上,构成直接网络,对外围设备的访问则通过独立的服务节点实现。此类Router实现的外部接口采用自定义协议,无法使用商用化硬件,导致较高的系统成本。受限于直接网络拓扑,一个Router能够互连的处理器数目受到限制。
随着并行多处理机系统的性能不断提高,由于空间占用和散热效率的限制,使其对节点密度的需求越来越高,即一个节点要容纳越来越多的处理器。同时由于成本的限制,使其对节点商品化的要求越来越迫切,即一方面节点能够尽可能使用商用部件,另一方面节点能够独立运行,成为主流商用服务器。这就要求节点控制器的设计在提供高带宽、低延迟互连的基础上,还需要具有较好的扩展性,支持更多的处理器互连,同时兼容商品化设备。而现有的Cluster节点和MPP节点的节点控制器设计无法满足所有需求。
发明内容
本发明的目的在于提供一种高密度多处理器系统及其节点控制器。其实现了多个处理器的高速互连,提高多处理器系统的密度,并实现多个处理器对商品化外设的共享访问。
为实现本发明的目的而提供的一种高密度多处理器系统的节点控制器,包括:多个处理器端口,一个I/O端口,一个直接内存访问交叉开关模块和一个读/写交叉开关模块,其中:
所述处理器端口,分为主处理器端口和从处理器端口,用于分别与主处理器和从处理器连接,主处理器负责具体计算任务的运行,以及对外围设备的发现和初始化过程,从处理器只负责具体计算任务的运行;
所述I/O端口,通过I/O总线与外围设备连接,其包括:读/写模块和I/O接口模块,所述I/O接口模块用于负责实现I/O总线根设备逻辑,所述I/O接口模块通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线包格式与I/O总线包格式间的互相转换;所述读/写模块与所述读/写交叉开关模块连接;
所述直接内存访问交叉开关模块,用于实现各所述处理器端口间直接内存访问数据的交换;
所述读/写交叉开关模块,用于实现各所述处理器端口之间,以及所述处理器端口和I/O端口之间读/写数据的交换。
所述处理器端口,包括:处理器接口模块、分发模块、仲裁模块、直接内存访问模块、读/写模块和I/O高级可编程中断控制器模块其中:
所述处理器接口模块,根据其所属的处理器端口连接的处理器的类型的不同,分为主处理器接口模块和从处理器接口模块,其中:所述主处理器接口模块,负责与主处理器系统总线的挂接,包括所有总线链路层功能,主处理器接口模块通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线终端设备的配置空间和桥设备的配置空间;所述从处理器接口模块,负责与从处理器系统总线的挂接,包括所有总线链路层功能,从处理器接口模块通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线终端设备的配置空间;
所述分发模块,用于将来自所述处理器接口模块的数据按照所属功能分发给直接内存访问模块或读/写模块,或I/O高级中断控制器模块;
所述仲裁模块,用于将来自直接内存访问模块、读/写模块和I/O高级中断控制器模块的数据进行公平仲裁后,分时传递给所述处理器接口模块,实现多种数据在处理器接口总线上的共享传输;
所述直接内存访问模块,用于实现数据以直接内存访问方式在处理器间的传输,所述直接内存访问模块与所述直接内存访问交叉开关模块连接;
所述读/写模块,用于实现数据以读/写方式在处理器间的传输,所述读/写模块与所述读/写交叉开关模块连接;
所述I/O高级中断控制器模块,用于实现对应所述处理器端口的I/O高级中断控制器中断控制。
所述分发模块中对数据所属功能的区分通过两个途径,一方面通过设备配置空间的基址寄存器地址窗口,另一方面为不同功能模块向系统总线申请不同的设备号,然后根据数据所属设备号实现功能区分。
所述直接内存访问模块包括下传和上传两个子模块,其中下传子模块负责接收直接内存访问描述符,读取直接内存访问负载数据,并将数据发送至所述直接内存访问交叉开关模块;上传子模块负责从所述直接内存访问交叉开关模块接收直接内存访问数据,并将数据写入目标地址区域。
所述读/写模块包括下传和上传两个子模块,其中下传子模块负责从所述分发模块接收读/写请求以及读响应数据,并发送至所述读/写交叉开关模块;上传模块负责从所述读/写交叉开关模块接收数据并发送至目的地址。
所述直接内存访问交叉开关模块为每个所述处理器端口设置两个虚通道缓冲区,一个发送缓冲区,核心使用一个2N×N的交叉开关,N为交叉开关互连的处理器端口数目;数据对虚通道缓冲区的选择符合如下规则:目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。
所述读/写交叉开关模块为每个处理器及I/O端口设置两个虚通道缓冲区,一个发送缓冲区,核心使用一个2(N+1)×(N+1)的交叉开关,N为交叉开关互连的处理器端口数目;数据对虚通道缓冲区的选择符合如下规则:目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。
为实现本发明的目的还提供一种所述节点控制器实现读数据传输的方法,所述方法,包括下列步骤:
步骤110.源处理器端口的处理器接口模块接收源处理器发出Load指令,传递给源处理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为读指令后,将该读指令发送给源处理器端口的读/写模块;
步骤120.所述读/写模块获取Load指令中的全局地址,然后查询节点控制器内各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器或I/O端口,同时响应包中的状态域的错误位置位为1;若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换Load请求中全局地址的高
Figure BSA00000205449900041
位,使用源窗口号替换Load请求中的携带的设备号,将Load请求发送至读/写交叉开关模块;
步骤130.所述读/写交叉开关模块以读请求的目的端口号作为路由信息,将读请求转发至目的处理器端口或目的I/O端口;
步骤140.所述目的处理器端口或目的I/O端口的读/写模块为该读请求生成目的总线请求序号目的Tag,并以该目的Tag为地址,将读请求携带的源Tag和源端口号存储;
步骤150.所述目的处理器端口或目的I/O端口的读/写模块使用目的Tag替换读请求的源Tag后,经过目的处理器接口模块或目的I/O接口模块,最终将读请求发送至目的处理器或目的I/O端口相连的I/O设备;
步骤160.所述目的处理器或I/O端口相连的I/O设备返回响应包;
步骤170.所述目的处理器端口或目的I/O端口的读/写模块使用响应包中的Tag读取之前存储的源Tag和源端口号,并使用该源Tag替换响应包的Tag,使用该源端口号替换响应包的设备号,发送至读/写交叉开关模块;
步骤180.源处理器端口的读/写模块接收到读/写交叉开关模块转发的响应包后,清除响应包的目的端口号,发送至源处理器或I/O端口,完成整个读数据过程。
为实现本发明的目的还提供一种所述节点控制器实现写数据传输的方法,所述方法,包括下列步骤:
步骤210.源处理器端口的处理器接口模块接收源处理器发出的写指令,传递给源处理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为写指令后,将该写指令发送给源处理器端口的读/写模块;
步骤220.所述源处理器端口的读/写模块获取写指令中的全局地址,然后查询节点控制器内各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器端口或I/O端口,同时响应包中的状态域的错误位置位为1;若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换写请求中全局地址的高位,使用源窗口号替换写请求中的设备号,将写请求发送至读/写交叉开关;
步骤230.读/写交叉开关模块根据写请求的目的端口号,将写请求转发至目的处理器或目的I/O端口;
步骤240.所述目的处理器或I/O端口的读/写模块清除写请求中的地址高位,并将修改后的写请求经过目的处理器接口模块或目的I/O接口模块,最终发送至目的处理器或I/O端口相连的I/O设备,完成整个写数据过程。
为实现本发明的目的还提供一种所述节点控制器实现直接内存访问数据传输的方法,所述方法,包括下列步骤:
步骤310.源处理器端口的直接内存访问模块接收直接内存访问描述符,并将该描述符转换为一系列读请求的过程;
步骤320.所述源处理器端口的直接内存访问模块接收一系列读请求返回的响应包,并将响应包转换为一系列写请求的过程;
步骤330.一系列写请求被直接内存访问交叉开关转发至目的处理器端口的直接内存访问模块,并写入目的处理器内存的过程。
所述步骤310,包括下列步骤:
步骤311.上电复位后,直接内存访问模块将用于记录当前直接内存访问序号的直接内存访问序号计数器DMASeq复位置0,然后等待接收直接内存访问描述符;
步骤312.接收到直接内存访问描述符后,便根据直接内存访问目的起始地址查询各个处理器端口的窗口寄存器,若未命中任何窗口寄存器,则直接发送错误通知到源处理器;若命中窗口,则初始化三个计数器,分别是长度计数器LengthCnt,使用DMALen作为初值,源地址计数器SrcAddrCnt,使用SrcAddr作为初值和目的地址计数器DstAddrCnt,使用DstAddr作为初值;
步骤313.构造一个读请求,产生读请求所需的请求序号srctag,以SrcAddrCnt填充读请求所需的地址,以包长len填充读请求所需的长度,然后将该读请求发送至源处理器;
步骤314.以所述读请求所需的请求序号为地址,将DstAddrCnt,DMALen和DMASeq存入目标地址RAM中;
步骤315.置DstAddrCnt=DstAddrCnt+len;SrcAddrCnt=SrcAddrCnt+len;LengthCnt=LengthCnt-len。
步骤316.如果LengthCnt大于0,则跳转至步骤313;否则DMASeq加一,跳转至步骤312。
所述步骤320,包括下列步骤:
步骤321.源处理器端口的直接内存访问模块接收来自源处理器系统总线的读响应包;
步骤322.以响应包中的序号srctag为地址,读取所述目标地址RAM,获取其对应的直接内存访问序号DMASeq,直接内存访问目的地址DstAddr_i和直接内存访问总长度DMALen;
步骤323.以DMASeq为索引,获取接收计数器堆中的接收计数器RecvLengthCnt;
步骤324.构造一个写请求,该请求的地址域高
Figure BSA00000205449900061
位由DstAddr_i对应的窗口号填充,地址其他位由DstAddr_i的相应位填充;该请求携带的数据负载为读响应包携带的数据负载;该请求携带的长度域由读响应包携带的长度域len填充,将该写请求发送至直接内存访问交叉开关模块;
步骤325.置RecvLengthCnt=RecvLengthCnt+len,并回写至DMASeq对应的接收计数器堆中;
步骤326.若RecvLengthCnt==DMALen,则跳转至步骤327;否则,跳转至步骤321;
步骤327.构造一个写请求,该请求的含义是通知目的处理器的直接内存访问模块,当前直接内存访问请求完成;该请求的地址域只填充高
Figure BSA00000205449900062
位,由DstAddr_i对应的窗口号填充;该请求携带的长度域置为1;该请求携带的数据域为空;该请求的设备号被填充为最大窗口号加一,将该写请求发送至直接内存访问交叉开关。
所述步骤330,包括下列步骤:
步骤331.直接内存访问交叉开关模块根据其地址高位携带的目的窗口号,转发至目的处理器端口的直接内存访问模块;
步骤332.目的处理器端口的直接内存访问模块将写请求的高
Figure BSA00000205449900071
位清除;
步骤333.若写请求的设备号为最大窗口号加一,则该请求为直接内存访问完成事件包,跳转至步骤334;否则跳转至步骤335;
步骤334.获取目的端口提供的完成事件队列地址,将该地址填入到写请求的地址域;
步骤335.将写请求发送至目的处理器。
为实现本发明的目的还提供一种所述节点控制器的高密度多处理器系统,所述系统,包括:多个节点,其中:
所述节点,包括:多个处理器和一个所述节点控制器。
所述节点控制器,通过支持全局地址空间来实现节点内资源的共享,其包括全局地址空间专用寄存器,其中:
所述全局地址空间专用寄存器设置在每个处理器端口中,节点控制器使用静态分配的方式隔离各个端口的地址空间,每个地址窗口最大为:
Figure BSA00000205449900072
其中MAXBIT是系统地址位宽。
本发明的有益效果是:
1.实现多个处理器间松散耦合互连,相比于传统的SMP或ccNUMA系统,不仅增强了节点的可扩展性,提高节点密度,而且单一从处理器的故障不会导致系统停顿,提高了系统可靠性;
2.支持全局统一地址空间,对节点内的内存和I/O设备进行统一编址,内存和I/O设备都对应一系列的全局地址,节点内每个处理器都可以通过使用携带全局地址的Load/Store指令实现对节点内存和I/O设备的访问,即实现节点内处理器对节点内存和I/O设备的共享;
3.控制器为每个处理器端口设置DMA引擎,实现处理器间高效的数据传输,且DMA引擎的设计可以容忍系统总线的乱序响应特性;
4.通过在控制器内部分别为Load/Store和DMA设置两个交叉开关,减少大块数据和短数据传输的互扰,提高通信效率;
5.控制器内部的交叉开关采用双虚通道设计,数据对虚通道的使用,与目的端口号的奇偶进行绑定,实现了同源同目的数据的保序,并大大降低队头阻塞,提高了传输效率;
6.控制器对外接口采用标准工业总线,且内部实现完整的PCI拓扑,为使用商用设备提供保证;
7.由于系统的外设发现配置由主处理器完成,因此只要保证主处理器是主流处理器,就可以最大程度兼容商用设备。即使从处理器是新型处理器,也可以实现从处理器对外设的访问,进而降低了系统升级成本,并在一定程度上兼容异构处理器。
附图说明
图1是本发明的节点控制器的内部结构示意图;
图2A是本发明的节点控制器内部交叉开关结构框图;
图2B是本发明的节点控制器内部交叉开关结构框图;
图3是本发明的节点控制器实现Load操作的步骤流程图;
图4是本发明的节点控制器实现Store操作的步骤流程图;
图5是本发明中DMA操作第一个阶段的执行步骤流程图;
图6是本发明中DMA操作第二阶段的执行步骤流程图;
图7是本发明中DMA操作第三阶段的执行步骤流程图;
图8是本发明的高密度多处理器系统的结构示意图;
图9是本发明的节点控制器所在节点的总线拓扑图;
图10是本发明的节点控制器各个端口全局地址分配及窗口寄存器的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种高密度多处理器系统及其节点控制器进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种高密度多处理器系统及其节点控制器,实现了多个处理器的高速互连,提高多处理器系统的密度,并实现多个处理器对商品化外设的共享访问。
下面结合上述目的详细说明的本发明的节点控制器,图1是本发明的节点控制器的内部结构示意图,如图1所示,所述节点控制器,包括:
多个处理器端口1,分别与多个处理器连接。
处理器端口在逻辑功能上分为两类,一类称为主处理器端口,主处理器除负责具体计算任务的运行外,更重要的是负责对外围设备的发现和初始化过程,该类端口在节点控制器中只有一个;一类称为从处理器端口,从处理器只负责具体计算任务的运行,该类端口在节点控制器中可以有多个。
所述处理器端口1,包括:
处理器接口模块11,分为主处理器接口模块111和从处理器接口模块112;
所述主处理器接口模块111,负责与主处理器系统总线的挂接,包括所有总线链路层功能,通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线终端(Endpoint)设备的配置空间和桥(Bridge)设备的配置空间。如使用AMD处理器,则主处理器接口模块为Hyper Transport控制器,该端口在AMD处理器看来是一个HT终端设备和一个HT桥接设备。
所述从处理器接口模块112,负责与从处理器系统总线的挂接,包括所有总线链路层功能,通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线终端(Endpoint)设备的配置空间。如使用AMD处理器,则主处理器接口模块为Hyper Transport控制器,该端口在AMD处理器看来是一个HT终端设备。
分发模块12,负责将来自处理器接口模块的数据按照所属功能分发给相应的处理模块,如与直接内存访问相关的数据分发至直接内存访问模块,与读/写相关的数据分发至读/写模块,与中断相关的数据分发给IOAPIC模块。数据所属功能的区分通过两个途径,一方面通过设备配置空间的基址寄存器(Base Address Register,BAR)地址窗口,另一方面为不同功能模块向系统总线申请不同的设备号(Unit ID),然后根据数据所属设备号(Unit ID)实现功能区分;
仲裁模块13,负责将来自各处理模块(即直接内存访问模块、读/写模块和I/O高级中断控制器模块)的数据(如直接内存访问数据,中断数据,读/写数据等)仲裁传递给处理器接口模块,实现多种数据在处理器接口总线上的共享传输;
DMA模块14,每个处理器端口均包含该模块,它负责实现数据以直接内存访问(DMA)方式在处理器间的传输,DMA引擎包括下传和上传两个子模块。其中下传子模块负责接收DMA描述符,读取DMA负载数据,并将数据发送至DMA交叉开关模块;上传子模块负责从DMA交叉开关模块接收DMA数据,并将数据写入目标地址区域。
Load/Store模块15,每个处理器端口都包含该模块,它负责实现数据以Load/Store方式在处理器间的传输,Load/Store模块包括下传和上传两个子模块。其中下传子模块负责从分发模块接收Load/Store请求以及Load响应数据,并发送至Load/Store交叉开关;上传模块负责从Load/Store交叉开关接收数据,并发送至目的地址。该模块实现所属节点内的内存及设备资源的共享。
I/O高级可编程中断控制器(I/O Advanced Programmable Interrupt Controller,IOAPIC)模块16,每个处理器端口均包含该模块,它负责实现对应端口的IOAPIC中断控制。
一个I/O端口2,是I/O总线的根设备,例如I/O总线为PCI-Express时,该I/O端口就是PCI-Express Root Complex。
所述I/O端口2包括Load/Store模块22和I/O接口模块21。其中I/O端口中的Load/Store模块与处理器端口中的Load/Store模块功能结构相同;I/O接口模块负责实现I/O总线根设备逻辑,通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线包格式与I/O总线包格式间的互相转换。例如,使用PCI-Express总线,则该模块实现PCI-Express Root Complex的物理层、链路层和事务层协议,如果选择HT作为系统总线,则该模块实现HT到PCI-Express之间的包格式转换。
图2A是本发明的节点控制器内部交叉开关结构框图,如图2A所示,所述直接内存访问(Direct Memory Access,DMA)交叉开关模块3,负责实现各处理器端口间DMA数据的交换,交叉开关结构为端口间互连提供了较好的扩展性。DMA交叉开关模块为每个处理器端口设置两个虚通道缓冲区,一个发送缓冲区,核心使用一个2N×N的交叉开关(N为交叉开关互连的处理器端口数目)。数据对虚通道缓冲区的选择符合如下规则:目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。这样的优势是一方面可以实现同源同目的DMA数据间保序,另一方面减少队头阻塞,提高交叉开关的数据注入率。
图2B是本发明的节点控制器内部交叉开关结构框图,如图2B所示,所述读/写(Load/Store)交叉开关模块4,负责实现各处理器端口间,以及处理器端口和I/O端口间Load/Store数据的交换,交叉开关结构为端口间互连提供了较好的扩展性。Load/Store交叉开关模块为每个处理器及I/O端口设置两个虚通道接收虚通道缓冲区,一个发送缓冲区,核心使用一个2(N+1)×(N+1)的交叉开关(N为交叉开关互连的处理器端口数目)。数据对虚通道缓冲区的选择符合如下规则:目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。这样的优势是一方面可以实现同源同目的Load/Store操作间保序,另一方面减少队头阻塞,提高交叉开关的数据注入率。
较佳地,由于对于Load/Store数据的交换,数据长度短,因此Load/Store交叉开关的接收发送缓冲区较小,而直接内存访问数据长度较长,因此DMA交叉开关的接收发送缓冲区较大,将Load/Store数据和直接内存访问数据分开进行交换,可以很好的避免长数据造成的队头阻塞,减少两类数据的互相干扰。
相应于本发明的一种高密度多处理器系统的节点控制器,还提供所述节点控制器实现读/写(Load/Store)数据传输的方法。
本发明的节点控制器对所属节点内的内存和I/O设备进行统一编址,内存和I/O设备都对应一系列的全局地址,节点内每个处理器都可以通过使用携带全局地址的Load/Store指令实现对节点内存和I/O设备的访问,即Load/Store操作实现了节点内处理器对节点内存和I/O设备的共享。Load是指源处理器端口或源I/O端口,从目的处理器的内存或I/O设备中读取数据的过程。图3是本发明的节点控制器实现Load操作的步骤流程图,如图3所示:
1.源处理器发出Load指令,该指令首先被源处理器端口的处理器接口模块接收,传递给源处理器端口的分发模块,然后该分发模块通过查询BAR判定该指令为Load指令,然后将该Load指令发送给源处理器端口的Load/Store模块;
所述Load指令,包括发起Load请求的设备号、请求序号、读取数据长度及数据所在全局地址,具体格式为:
  设备号UnitID  请求序号Tag   长度   全局地址
2.Load/Store模块获取Load指令中的全局地址,然后查询节点控制器内各端口的窗口寄存器(存在于处理器和I/O接口模块中),若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器或I/O端口,同时响应包中的状态域的错误位置位为1。若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换Load请求中全局地址的高
Figure BSA00000205449900121
位,使用源窗口号替换Load请求中的携带的设备号(Unit ID:系统总线中用以区分不同设备的ID号,Load请求中携带该ID,用以标识该Load请求的来源),将Load请求发送至Load/Store交叉开关模块;其中,窗口号i到端口号j的映射关系为:
j = 0 i = 0,1 i - 1 i > 1
3.Load/Store交叉开关模块以Load请求的目的端口号作为路由信息,将Load请求转发至目的处理器端口或目的I/O端口;
4.目的处理器端口或目的I/O端口的Load/Store模块为该Load请求生成目的总线请求序号目的Tag,并以该目的Tag为地址,将Load请求携带的源Tag和源端口号存储;
其中,步骤3是为了描述数据在控制器内部被交换的过程,步骤4是一个保护现场的过程,由于Load请求会被发送到目的总线,从源总线携带来的Tag就不能使用了,而要使用目的总线的Tag,Tag的管理是与单条总线绑定的。
5.目的处理器端口或目的I/O端口的Load/Store模块使用目的Tag替换Load请求的源Tag后,经过目的处理器接口模块或目的I/O接口模块,最终将Load请求发送至目的处理器或目的I/O端口相连的I/O设备;
6.目的处理器或I/O端口相连的I/O设备返回响应包,包括对应Load请求的设备号和请求序号,返回的数据状态及返回的数据负载,所述响应包的格式为:
  设备号UnitID  请求序号Tag   数据状态   数据负载
7.目的处理器端口或目的I/O端口的Load/Store模块使用响应包中的Tag读取之前存储的源Tag和源端口号,并使用该源Tag替换响应包的Tag,使用该源端口号替换响应包的设备号(作为响应包的目的端口号),发送至Load/Store交叉开关模块;
8.源处理器端口的Load/Store模块接收到Load/Store交叉开关模块转发的响应包后,只需清除响应包的目的端口号(响应包的设备号),即可发送至源处理器或I/O端口,完成整个Load流程。
Store,是指源处理器端口或源I/O端口,向目的处理器的内存或I/O设备写入数据的过程。图4是本发明的节点控制器实现Store操作的步骤流程图,如图4所示:
1.源处理器发出Store指令,该指令首先被源处理器端口的处理器接口模块接收,传递给源处理器端口的分发模块,然后该分发模块通过查询BAR(基址寄存器)判定该指令为Store指令,然后将该Store指令发送给源处理器端口的Load/Store模块;
所述Store指令,包括发起Store请求的设备号、请求序号、写入数据长度及存储数据的全局地址,所述Store指令的格式为:
  设备号UnitID  请求序号Tag   长度   全局地址
2.源处理器端口的Load/Store模块获取Store指令中的全局地址,然后查询节点控制器内各端口的窗口寄存器(存在于处理器和I/O接口模块中),若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器端口或I/O端口,同时响应包中的状态域的错误位置位为1。若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换Store请求中全局地址的高
Figure BSA00000205449900131
位,使用源窗口号替换Store请求中的设备号,将Store请求发送至Load/Store交叉开关。
3.Load/Store交叉开关模块根据Store请求的目的端口号,将Store请求转发至目的处理器或目的I/O端口。
4.目的处理器或I/O端口的Load/Store模块清除Store请求中的地址高
Figure BSA00000205449900141
位,并将修改后的Store请求,经过目的处理器接口模块或目的I/O接口模块,最终发送至目的处理器或I/O端口相连的I/O设备,完成整个Store过程。
相应于本发明的一种高密度多处理器系统的节点控制器,还提供所述节点控制器实现直接内存访问(DMA)数据传输的方法。
本发明的DMA数据传输过程是处理器间的直接内存访问(DMA)过程,具体说是一个处理器将大块本地数据直接传输到另一个处理器内存中的过程。该过程在源处理器端是一系列的Load请求,在目的处理器端是一系列的Store请求。DMA描述符包括三个域,分别是源数据所在起始地址SrcAddr,所要传输的数据长度DMALen,以及数据所要写入的目的起始地址DstAddr,其中SrcAddr为本地地址,DstAddr为全局地址。源处理器必须使用单一的Store请求将DMA描述符写入DMA模块中,以保证DMA操作的原子性。所述DMA描述符的具体结构为:
Figure BSA00000205449900142
DMA的操作流程分为三个阶段,第一个阶段是源处理器端口的DMA模块接收DMA描述符,并将该描述符转换为一系列Load请求的过程;第二个阶段是源处理器端口的DMA模块接收一系列Load请求返回的响应包,并将响应包转换为一系列Store请求的过程;第三个阶段是一系列Store包被DMA交叉开关转发至目的处理器端口的DMA模块,并写入目的处理器内存的过程。这三个阶段构成DMA操作的三个流水级(Pipeline Stage),并行流水执行。本发明所述的DMA流程可以容忍第一阶段中多个Load请求被乱序响应的情况(如HT总线会乱序响应Load请求)。
图5是本发明中DMA操作第一个阶段的执行步骤流程图,如图5所示,其过程为:
1.上电复位后,DMA模块将用于记录当前DMA序号的DMA序号计数器DMASeq复位置0,然后等待接收DMA描述符;
2.接收到DMA描述符后,便根据DMA目的起始地址DstAddr查询各个处理器端口的窗口寄存器。若未命中任何窗口寄存器,则直接发送错误通知到源处理器;若命中窗口,则初始化三个计数器,分别是长度计数器LengthCnt,使用DMALen作为初值;源地址计数器SrcAddrCnt,使用SrcAddr作为初值;目的地址计数器DstAddrCnt,使用DstAddr作为初值;
3.构造一个Load请求,首先产生Load请求所需的请求序号srctag,以SrcAddrCnt填充Load请求所需的地址,以包长len填充Load请求所需的长度,然后将该Load请求发送至源处理器;
4.以srctag为地址,将DstAddrCnt,DMALen和DMASeq存入目标地址RAM中,目标地址RAM的结构为:
Figure BSA00000205449900151
5.置DstAddrCnt=DstAddrCnt+len;SrcAddrCnt=SrcAddrCnt+len;LengthCnt=LengthCnt-len。
6.如果LengthCnt大于0,则跳转至步骤3;否则DMASeq加一,跳转至步骤2。
图6是本发明中DMA操作第二阶段的执行步骤流程图,如图6所示,其过程为:
1.源处理器端口的DMA模块接收来自源处理器系统总线的Load响应包。
2.以响应包中的序号srctag为地址,读取目标地址RAM,获取其对应的DMA序号DMASeq,DMA目的地址DstAddr_i和DMA总长度DMALen。
3.以DMASeq为索引,获取接收计数器堆中的接收计数器RecvLengthCnt,接收机数据器堆的格式为:
Figure BSA00000205449900161
4.构造一个Store请求,该请求的地址域高
Figure BSA00000205449900162
位由DstAddr_i对应的窗口号填充,地址其他位由DstAddr_i的相应位填充;该请求携带的数据负载为Load响应包携带的数据负载;该请求携带的长度域由Load响应包携带的长度域len填充,将该Store请求发送至DMA交叉开关模块;
5.置RecvLengthCnt=RecvLengthCnt+len,并回写至DMASeq对应的接收计数器堆中。
6.若RecvLengthCnt=DMALen,则跳转至步骤7;否则,跳转至步骤1。
7.构造一个Store请求,该请求的含义是通知目的处理器的DMA模块,当前DMA请求完成。该请求的地址域只填充高
Figure BSA00000205449900163
位,由DstAddr_i对应的窗口号填充;该请求携带的长度域置为1;该请求携带的数据域为空;该请求的设备号被填充为最大窗口号加一,将该Store请求发送至DMA交叉开关。
图7是本发明中DMA操作第三阶段的执行步骤流程图,如图7所示,其过程为:
1.DMA交叉开关模块根据其地址高位携带的目的窗口号,转发至目的处理器端口的DMA模块;
2.目的处理器端口的DMA模块将Store请求的高位清除;
3.若Store请求的设备号为最大窗口号加一,则该请求为DMA完成事件包,跳转至步骤4;否则跳转至步骤5。
4.获取目的端口提供的完成事件队列地址,将该地址填入到Store请求的地址域。
5.将Store请求发送至目的处理器。
在本发明中,只对于纯粹的数据传输的两种类型的传输方法进行了描述,但用于控制目的的还有中断相关数据,中断相关数据的产生属于标准流程,所以本发明没有进行详细的描述。
相应于本发明的一种高密度多处理器系统的节点控制器,还提供一种高密度多处理器系统,所述系统包括多个节点,每个节点包括多台处理器和一个节点控制器,所述节点控制器的结构和数据传输方法在上面已经说明,在此不再一一赘述。
本发明所述节点控制器所在的节点中,所有处理器均为主设备,均会独立发起对节点控制器的设备发现过程。由于主处理器负责所有节点外设的配置,因此主处理器与从处理器的设备发现过程不同。
从处理器的设备发现及配置过程:
1.BIOS启动后,便探查从处理器端口的系统总线终端设备,读取其配置空间,配置BAR寄存器。
2.从处理器端口的系统总线终端设备返回设备搜索、及功能搜索完成通知,完成BIOS的设备发现过程。
3.BIOS读取从处理器端口的端口号i。
4.根据从处理器本地内存的大小配置窗口i+1的GAS_START和GAS_END寄存器,完成整个从处理器对节点控制器的配置过程。
主处理器的设备发现及配置过程:
1.BIOS启动后,便探查主处理器端口的系统总线终端设备(主处理器系统总线0的设备0),读取其配置空间,配置BAR寄存器。
2.探查主处理器端口的系统总线桥设备(主处理器系统总线0的设备1),读取其配置空间。
3.通过系统总线桥设备继续向下搜索,发现节点控制器I/O端口内的I/O总线根设备(Root Complex)。
4.最后通过I/O总线根设备进行标准PCI设备发现过程,配置各级设备的BAR寄存器,完成整个设备发现过程。
5.完成设备发现后,BIOS根据主处理器本地内存大小,配置窗口0的MEM_START和MEM_END寄存器,配置窗口1的GAS_START和GAS_END寄存器值得注意的是,窗口1的GAS_START和GAS_END相对于窗口1上边界的偏移分别等于MEM_START和MEM_END。
根据外设申请空间的大小,配置窗口0的DEV_START和DEV_END寄存器和窗口(N+2)的GAS_START和GAS_END寄存器,值得注意的是,窗口(N+2)的GAS_START和GAS_END相对于窗口N+2上边界的偏移分别等于DEV_START和DEV_END。
图8是本发明的高密度多处理器系统的结构示意图,如图8所示,该节点包含N个处理器单元,包括唯一的主处理器和N-1个从处理器,但从处理器不局限于单个处理器,也可以是使用SMP/NUMA结构互连的多个处理器,节点控制器使用处理器的系统总线(如AMD处理器的HT总线,Intel的QPI总线)与各类处理器相连。该节点包含若干外围设备,外围设备通过I/O总线(如PCI-Express总线)与节点控制器相连。这里所述的从处理器并不等同于一般意义上的协处理器概念,从处理器的计算任务并不依靠主处理器分配,而是可以独立部署,因此从处理器和主处理器逻辑功能上的差别只存在于设备发现上,在具体任务执行和资源共享方面并无管理者与被管理者关系。
本发明的节点控制器在处理器的角度看来是设备,图9是本发明的节点控制器所在节点的总线拓扑图,如图9所示,在从处理器的角度,节点控制器是系统总线的终端设备(Endpoint),该设备的配置空间具有三个基地址寄存器(BAR),分别对应节点控制器从处理器端口的DMA模块、IOAPIC模块和远程Load/Store模块。在主处理器的角度,节点控制器是挂接在总线0(Bus0)上的两个设备,一个是系统总线终端设备(Endpoint),另一个是系统总线的桥设备。其中作为系统总线终端设备的配置空间具有三个基地址寄存器(BAR),分别对应节点控制器主处理器端口的DMA模块、IOAPIC模块和远程Load/Store模块。其中作为系统总线桥设备之后的总线1(Bus1)上挂接一个I/O总线根设备(Root Complex),I/O总线根设备之后的总线2(Bus2)挂接I/O总线的终端设备或桥设备。
本发明的节点控制器通过支持全局地址空间来实现节点内资源(包括内存和I/O设备等)的共享。因此,在每个处理器端口中,除实现标准的设备配置空间外,还需设置全局地址空间专用寄存器17。图10是本发明的节点控制器各个端口全局地址分配及窗口寄存器的示意图,如图10所示,本发明的节点控制器使用静态分配的方式隔离各个端口的地址空间,每个地址窗口最大为:
其中MAXBIT是系统地址位宽,例如使用HT系统总线,若HT最大支持40位地址宽度,则MAXBIT等于40,若HT最大支持64位地址宽度,则MAXBIT等于64。
各端口窗口信息全局共享,相当于一个路由表,供数据传递时查询。主处理器端口拥有两个窗口,窗口0对应了其本地内存和外设空间,窗口1对应了其全局地址空间。从处理器端口和I/O端口分别只拥有一个标识其全局地址空间的窗口,窗口的起始和终止范围由每个窗口中的配置寄存器存储。
主处理器端口窗口0的MEM_START和MEM_END对应了其本地内存的地址范围,DEV_STARAT和DEV_END对应其设备空间,窗口1的GAS_START和GAS_END对应了该端口在全局地址中的地址范围,值得注意的是,窗口1的GAS_START和GAS_END相对于窗口1上边界的偏移分别等于MEM_START和MEM_END。从处理器端口的GAS_START和GAS_END对应了该端口在全局地址中的地址范围,这个范围的大小等同于从处理器1#的本地内存大小。I/O端口的GAS_START和GAS_END对应了该端口在全局地址中的地址范围,值得注意的是I/O端口的GAS_START和GAS_END相对于窗口1上边界的偏移分别等于DEV_START和DEV_END。
本发明的有益效果在于:
1.实现多个处理器间松散耦合互连,相比于传统的SMP或ccNUMA系统,不仅增强了节点的可扩展性,提高节点密度,而且单一从处理器的故障不会导致系统停顿,提高了系统可靠性;
2.支持全局统一地址空间,对节点内的内存和I/O设备进行统一编址,内存和I/O设备都对应一系列的全局地址,节点内每个处理器都可以通过使用携带全局地址的Load/Store指令实现对节点内存和I/O设备的访问,即实现节点内处理器对节点内存和I/O设备的共享;
3.控制器为每个处理器端口设置DMA引擎,实现处理器间高效的数据传输,且DMA引擎的设计可以容忍系统总线的乱序响应特性;
4.通过在控制器内部分别为Load/Store和DMA设置两个交叉开关,减少大块数据和短数据传输的互扰,提高通信效率;
5.控制器内部的交叉开关采用双虚通道设计,数据对虚通道的使用,与目的端口号的奇偶进行绑定,实现了同源同目的数据的保序,并大大降低队头阻塞,提高了传输效率;
6.控制器对外接口采用标准工业总线,且内部实现完整的PCI拓扑,为使用商用设备提供保证;
7.由于系统的外设发现配置由主处理器完成,因此只要保证主处理器是主流处理器,就可以最大程度兼容商用设备。即使从处理器是新型处理器,也可以实现从处理器对外设的访问,进而降低了系统升级成本,并在一定程度上兼容异构处理器。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (15)

1.一种高密度多处理器系统的节点控制器,其特征在于,所述节点控制器,包括:多个处理器端口,一个I/O端口,一个直接内存访问交叉开关模块和一个读/写交叉开关模块,其中:
所述处理器端口,分为主处理器端口和从处理器端口,用于分别与主处理器和从处理器连接,主处理器负责具体计算任务的运行,以及对外围设备的发现和初始化过程,从处理器只负责具体计算任务的运行;
所述I/O端口,通过I/O总线与外围设备连接,其包括:读/写模块和I/O接口模块,所述I/O接口模块用于负责实现I/O总线根设备逻辑,所述I/O接口模块通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线包格式与I/O总线包格式间的互相转换;所述读/写模块与所述读/写交叉开关模块连接;
所述直接内存访问交叉开关模块,用于实现各所述处理器端口间直接内存访问数据的交换;
所述读/写交叉开关模块,用于实现各所述处理器端口之间,以及所述处理器端口和I/O端口之间读/写数据的交换。
2.根据权利要求1所述的高密度多处理器系统的节点控制器,其特征在于,所述处理器端口,包括:处理器接口模块、分发模块、仲裁模块、直接内存访问模块、读/写模块和I/O高级可编程中断控制器模块其中:
所述处理器接口模块,根据其所属的处理器端口连接的处理器的类型的不同,分为主处理器接口模块和从处理器接口模块,其中:所述主处理器接口模块,负责与主处理器系统总线的挂接,包括所有总线链路层功能,主处理器接口模块通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线终端设备的配置空间和桥设备的配置空间;所述从处理器接口模块,负责与从处理器系统总线的挂接,包括所有总线链路层功能,从处理器接口模块通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线终端设备的配置空间;
所述分发模块,用于将来自所述处理器接口模块的数据按照所属功能分发给直接内存访问模块或读/写模块,或I/O高级中断控制器模块;
所述仲裁模块,用于将来自直接内存访问模块、读/写模块和I/O高级中断控制器模块的数据进行公平仲裁后,分时传递给所述处理器接口模块,实现多种数据在处理器接口总线上的共享传输;
所述直接内存访问模块,用于实现数据以直接内存访问方式在处理器间的传输,所述直接内存访问模块与所述直接内存访问交叉开关模块连接;
所述读/写模块,用于实现数据以读/写方式在处理器间的传输,所述读/写模块与所述读/写交叉开关模块连接;
所述I/O高级中断控制器模块,用于实现对应所述处理器端口的I/O高级中断控制器中断控制。
3.根据权利要求2所述的高密度多处理器系统的节点控制器,其特征在于,所述分发模块中对数据所属功能的区分通过两个途径,一方面通过设备配置空间的基址寄存器地址窗口,另一方面为不同功能模块向系统总线申请不同的设备号,然后根据数据所属设备号实现功能区分。
4.根据权利要求2所述的高密度多处理器系统的节点控制器,其特征在于,所述直接内存访问模块包括下传和上传两个子模块,其中下传子模块负责接收直接内存访问描述符,读取直接内存访问负载数据,并将数据发送至所述直接内存访问交叉开关模块;上传子模块负责从所述直接内存访问交叉开关模块接收直接内存访问数据,并将数据写入目标地址区域。
5.根据权利要求2所述的高密度多处理器系统的节点控制器,其特征在于,所述读/写模块包括下传和上传两个子模块,其中下传子模块负责从所述分发模块接收读/写请求以及读响应数据,并发送至所述读/写交叉开关模块;上传模块负责从所述读/写交叉开关模块接收数据并发送至目的地址。
6.根据权利要求1所述的高密度多处理器系统的节点控制器,其特征在于,所述直接内存访问交叉开关模块为每个所述处理器端口设置两个虚通道缓冲区,一个发送缓冲区,核心使用一个2N×N的交叉开关,N为交叉开关互连的处理器端口数目;数据对虚通道缓冲区的选择符合如下规则:目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。
7.根据权利要求1所述的高密度多处理器系统的节点控制器,其特征在于,所述读/写交叉开关模块为每个处理器及I/O端口设置两个虚通道缓冲区,一个发送缓冲区,核心使用一个2((N+1)×(N+1)的交叉开关,N为交叉开关互连的处理器端口数目;数据对虚通道缓冲区的选择符合如下规则:目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。
8.一种根据权利要求1所述的节点控制器实现读数据传输的方法,所述方法,包括下列步骤:
步骤110.源处理器端口的处理器接口模块接收源处理器发出Load指令,传递给源处理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为读指令后,将该读指令发送给源处理器端口的读/写模块;
步骤120.所述读/写模块获取Load指令中的全局地址,然后查询节点控制器内各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器或I/O端口,同时响应包中的状态域的错误位置位为1;若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换Load请求中全局地址的高
Figure FSA00000205449800031
位,使用源窗口号替换Load请求中的携带的设备号,将Load请求发送至读/写交叉开关模块;
步骤130.所述读/写交叉开关模块以读请求的目的端口号作为路由信息,将读请求转发至目的处理器端口或目的I/O端口;
步骤140.所述目的处理器端口或目的I/O端口的读/写模块为该读请求生成目的总线请求序号目的Tag,并以该目的Tag为地址,将读请求携带的源Tag和源端口号存储;
步骤150.所述目的处理器端口或目的I/O端口的读/写模块使用目的Tag替换读请求的源Tag后,经过目的处理器接口模块或目的I/O接口模块,最终将读请求发送至目的处理器或目的I/O端口相连的I/O设备;
步骤160.所述目的处理器或I/O端口相连的I/O设备返回响应包;
步骤170.所述目的处理器端口或目的I/O端口的读/写模块使用响应包中的Tag读取之前存储的源Tag和源端口号,并使用该源Tag替换响应包的Tag,使用该源端口号替换响应包的设备号,发送至读/写交叉开关模块;
步骤180.源处理器端口的读/写模块接收到读/写交叉开关模块转发的响应包后,清除响应包的目的端口号,发送至源处理器或I/O端口,完成整个读数据过程。
9.一种根据权利要求1所述的节点控制器实现写数据传输的方法,所述方法,包括下列步骤:
步骤210.源处理器端口的处理器接口模块接收源处理器发出的写指令,传递给源处理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为写指令后,将该写指令发送给源处理器端口的读/写模块;
步骤220.所述源处理器端口的读/写模块获取写指令中的全局地址,然后查询节点控制器内各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器端口或I/O端口,同时响应包中的状态域的错误位置位为1;若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换写请求中全局地址的高
Figure FSA00000205449800041
位,使用源窗口号替换写请求中的设备号,将写请求发送至读/写交叉开关;
步骤230.读/写交叉开关模块根据写请求的目的端口号,将写请求转发至目的处理器或目的I/O端口;
步骤240.所述目的处理器或I/O端口的读/写模块清除写请求中的地址高位,并将修改后的写请求经过目的处理器接口模块或目的I/O接口模块,最终发送至目的处理器或I/O端口相连的I/O设备,完成整个写数据过程。
10.一种根据权利要求1所述的节点控制器实现直接内存访问数据传输的方法,所述方法,包括下列步骤:
步骤310.源处理器端口的直接内存访问模块接收直接内存访问描述符,并将该描述符转换为一系列读请求的过程;
步骤320.所述源处理器端口的直接内存访问模块接收一系列读请求返回的响应包,并将响应包转换为一系列写请求的过程;
步骤330.一系列写请求被直接内存访问交叉开关转发至目的处理器端口的直接内存访问模块,并写入目的处理器内存的过程。
11.根据权利要求10所述的根据权利要求1所述的节点控制器实现直接内存访问数据传输的方法,所述步骤310,包括下列步骤:
步骤311.上电复位后,直接内存访问模块将用于记录当前直接内存访问序号的直接内存访问序号计数器DMASeq复位置0,然后等待接收直接内存访问描述符;
步骤312.接收到直接内存访问描述符后,便根据直接内存访问目的起始地址查询各个处理器端口的窗口寄存器,若未命中任何窗口寄存器,则直接发送错误通知到源处理器;若命中窗口,则初始化三个计数器,分别是长度计数器LengthCnt,使用DMALen作为初值,源地址计数器SrcAddrCnt,使用SrcAddr作为初值和目的地址计数器DstAddrCnt,使用DstAddr作为初值;
步骤313.构造一个读请求,产生读请求所需的请求序号srctag,以SrcAddrCnt填充读请求所需的地址,以包长len填充读请求所需的长度,然后将该读请求发送至源处理器;
步骤314.以所述读请求所需的请求序号为地址,将DstAddrCnt,DMALen和DMASeq存入目标地址RAM中;
步骤315.置DstAddrCnt=DstAddrCnt+len;SrcAddrCnt=SrcAddrCnt+len;LengthCnt=LengthCnt-len;
步骤316.如果LengthCnt大于0,则跳转至步骤313;否则DMASeq加一,跳转至步骤312。
12.根据权利要求11所述的根据权利要求1所述的节点控制器实现直接内存访问数据传输的方法,所述步骤320,包括下列步骤:
步骤321.源处理器端口的直接内存访问模块接收来自源处理器系统总线的读响应包;
步骤322.以响应包中的序号srctag为地址,读取所述目标地址RAM,获取其对应的直接内存访问序号DMASeq,直接内存访问目的地址DstAddr_i和直接内存访问总长度DMALen;
步骤323.以DMASeq为索引,获取接收计数器堆中的接收计数器RecvLengthCnt;
步骤324.构造一个写请求,该请求的地址域高
Figure FSA00000205449800051
位由DstAddr_i对应的窗口号填充,地址其他位由DstAddr_i的相应位填充;该请求携带的数据负载为读响应包携带的数据负载;该请求携带的长度域由读响应包携带的长度域len填充,将该写请求发送至直接内存访问交叉开关模块;
步骤325.置RecvLengthCnt=RecvLengthCnt+len,并回写至DMASeq对应的接收计数器堆中;
步骤326.若RecvLengthCnt==DMALen,则跳转至步骤327;否则,跳转至步骤321;
步骤327.构造一个写请求,该请求的含义是通知目的处理器的直接内存访问模块,当前直接内存访问请求完成;该请求的地址域只填充高位,由DstAddr_i对应的窗口号填充;该请求携带的长度域置为1;该请求携带的数据域为空;该请求的设备号被填充为最大窗口号加一,将该写请求发送至直接内存访问交叉开关。
13.根据权利要求12所述的根据权利要求1所述的节点控制器实现直接内存访问数据传输的方法,所述步骤330,包括下列步骤:
步骤331.直接内存访问交叉开关模块根据其地址高位携带的目的窗口号,转发至目的处理器端口的直接内存访问模块;
步骤332.目的处理器端口的直接内存访问模块将写请求的高
Figure FSA00000205449800062
位清除;
步骤333.若写请求的设备号为最大窗口号加一,则该请求为直接内存访问完成事件包,跳转至步骤334;否则跳转至步骤335;
步骤334.获取目的端口提供的完成事件队列地址,将该地址填入到写请求的地址域;
步骤335.将写请求发送至目的处理器。
14.一种采用权利要求1所述的节点控制器的高密度多处理器系统,所述系统,包括:多个节点,其中:
所述节点,包括:多个处理器和一个所述节点控制器。
15.根据权利要求1所述的高密度多处理器系统的节点控制器,其特征在于,所述节点控制器,通过支持全局地址空间来实现节点内资源的共享,其包括全局地址空间专用寄存器,其中:
所述全局地址空间专用寄存器设置在每个处理器端口中,节点控制器使用静态分配的方式隔离各个端口的地址空间,每个地址窗口最大为:
Figure FSA00000205449800063
其中MAXBIT是系统地址位宽。
CN2010102365435A 2010-07-22 2010-07-22 一种高密度多处理器系统及其节点控制器 Active CN101908036B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102365435A CN101908036B (zh) 2010-07-22 2010-07-22 一种高密度多处理器系统及其节点控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102365435A CN101908036B (zh) 2010-07-22 2010-07-22 一种高密度多处理器系统及其节点控制器

Publications (2)

Publication Number Publication Date
CN101908036A true CN101908036A (zh) 2010-12-08
CN101908036B CN101908036B (zh) 2011-08-31

Family

ID=43263499

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102365435A Active CN101908036B (zh) 2010-07-22 2010-07-22 一种高密度多处理器系统及其节点控制器

Country Status (1)

Country Link
CN (1) CN101908036B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102446156A (zh) * 2011-09-14 2012-05-09 中国科学院计算技术研究所 用于并行多处理器系统的通信行为获取装置
CN103116559A (zh) * 2013-02-22 2013-05-22 浪潮电子信息产业股份有限公司 一种高速互联服务器系统的设计方法
CN103136141A (zh) * 2013-02-06 2013-06-05 浪潮电子信息产业股份有限公司 一种多控制器间的高速互联方法
CN103870435A (zh) * 2014-03-12 2014-06-18 华为技术有限公司 服务器及数据访问方法
US8909979B2 (en) 2011-06-27 2014-12-09 Huawei Technologies Co., Ltd. Method and system for implementing interconnection fault tolerance between CPU
US8990460B2 (en) 2011-06-27 2015-03-24 Huawei Technologies Co., Ltd. CPU interconnect device
CN105138473A (zh) * 2014-05-26 2015-12-09 德克萨斯仪器股份有限公司 管理高速缓冲存储器的系统和方法
CN105391590A (zh) * 2015-12-26 2016-03-09 深圳职业技术学院 一种自动获取numa架构下系统路由表的方法及系统
CN106648878A (zh) * 2015-10-29 2017-05-10 华为技术有限公司 一种系统及其动态分配mmio资源的方法
CN107291653A (zh) * 2016-03-31 2017-10-24 华为技术有限公司 一种多处理器系统及配置多处理器系统的方法
CN108228088A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
CN108833309A (zh) * 2018-07-25 2018-11-16 清华大学 集线服务器
CN109597654A (zh) * 2018-12-07 2019-04-09 湖南国科微电子股份有限公司 寄存器初始化方法、基础配置表的生成方法及嵌入式系统
CN106708551B (zh) * 2015-11-17 2020-01-17 华为技术有限公司 一种热添加中央处理器cpu的配置方法及系统
CN111124953A (zh) * 2019-12-18 2020-05-08 海光信息技术有限公司 数据交换方法、装置、处理器及计算机系统
CN111917656A (zh) * 2017-07-27 2020-11-10 华为技术有限公司 传输数据的方法和设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1274123A (zh) * 1999-03-31 2000-11-22 国际商业机器公司 分区系统的带有动态配置的外围元件互联槽控制装置
JP2004508635A (ja) * 2000-09-06 2004-03-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プロセッサ間通信システム
US7500035B2 (en) * 2006-09-19 2009-03-03 International Business Machines Corporation Livelock resolution method
CN100535885C (zh) * 2006-08-17 2009-09-02 富士通株式会社 多处理器系统
CN101697149A (zh) * 2009-10-27 2010-04-21 深圳华为通信技术有限公司 多处理器设备、多处理器设备对外通信的方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1274123A (zh) * 1999-03-31 2000-11-22 国际商业机器公司 分区系统的带有动态配置的外围元件互联槽控制装置
JP2004508635A (ja) * 2000-09-06 2004-03-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プロセッサ間通信システム
CN100535885C (zh) * 2006-08-17 2009-09-02 富士通株式会社 多处理器系统
US7500035B2 (en) * 2006-09-19 2009-03-03 International Business Machines Corporation Livelock resolution method
CN101697149A (zh) * 2009-10-27 2010-04-21 深圳华为通信技术有限公司 多处理器设备、多处理器设备对外通信的方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《福建电脑》 20041231 周南德 多处理器系统可扩展性的研究 第12-13页 1-15 , 第3期 2 *
《计算机工程》 20080131 方志斌等 多处理器芯片组中PCI桥控制器的设计与实现 第241-243页 1-15 第34卷, 第1期 2 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909979B2 (en) 2011-06-27 2014-12-09 Huawei Technologies Co., Ltd. Method and system for implementing interconnection fault tolerance between CPU
US8990460B2 (en) 2011-06-27 2015-03-24 Huawei Technologies Co., Ltd. CPU interconnect device
CN102446156A (zh) * 2011-09-14 2012-05-09 中国科学院计算技术研究所 用于并行多处理器系统的通信行为获取装置
CN103136141A (zh) * 2013-02-06 2013-06-05 浪潮电子信息产业股份有限公司 一种多控制器间的高速互联方法
CN103116559B (zh) * 2013-02-22 2016-12-28 浪潮电子信息产业股份有限公司 一种高速互联服务器系统的设计方法
CN103116559A (zh) * 2013-02-22 2013-05-22 浪潮电子信息产业股份有限公司 一种高速互联服务器系统的设计方法
CN103870435B (zh) * 2014-03-12 2017-01-18 华为技术有限公司 服务器及数据访问方法
CN103870435A (zh) * 2014-03-12 2014-06-18 华为技术有限公司 服务器及数据访问方法
CN105138473A (zh) * 2014-05-26 2015-12-09 德克萨斯仪器股份有限公司 管理高速缓冲存储器的系统和方法
CN105138473B (zh) * 2014-05-26 2019-07-09 德克萨斯仪器股份有限公司 管理高速缓冲存储器的系统和方法
CN106648878B (zh) * 2015-10-29 2021-08-20 华为技术有限公司 一种系统及其动态分配mmio资源的方法
CN106648878A (zh) * 2015-10-29 2017-05-10 华为技术有限公司 一种系统及其动态分配mmio资源的方法
CN106708551B (zh) * 2015-11-17 2020-01-17 华为技术有限公司 一种热添加中央处理器cpu的配置方法及系统
CN105391590B (zh) * 2015-12-26 2018-06-19 深圳职业技术学院 一种自动获取numa架构下系统路由表的方法及系统
CN105391590A (zh) * 2015-12-26 2016-03-09 深圳职业技术学院 一种自动获取numa架构下系统路由表的方法及系统
CN107291653B (zh) * 2016-03-31 2020-06-16 华为技术有限公司 一种多处理器系统及配置多处理器系统的方法
CN107291653A (zh) * 2016-03-31 2017-10-24 华为技术有限公司 一种多处理器系统及配置多处理器系统的方法
CN108228088A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
CN108228088B (zh) * 2016-12-21 2020-10-23 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
CN111917656A (zh) * 2017-07-27 2020-11-10 华为技术有限公司 传输数据的方法和设备
CN111917656B (zh) * 2017-07-27 2023-11-07 超聚变数字技术有限公司 传输数据的方法和设备
CN108833309B (zh) * 2018-07-25 2020-04-07 清华大学 集线服务器
CN108833309A (zh) * 2018-07-25 2018-11-16 清华大学 集线服务器
CN109597654A (zh) * 2018-12-07 2019-04-09 湖南国科微电子股份有限公司 寄存器初始化方法、基础配置表的生成方法及嵌入式系统
CN109597654B (zh) * 2018-12-07 2022-01-11 湖南国科微电子股份有限公司 寄存器初始化方法、基础配置表的生成方法及嵌入式系统
CN111124953A (zh) * 2019-12-18 2020-05-08 海光信息技术有限公司 数据交换方法、装置、处理器及计算机系统
CN111124953B (zh) * 2019-12-18 2021-04-27 海光信息技术股份有限公司 数据交换方法、装置、处理器及计算机系统

Also Published As

Publication number Publication date
CN101908036B (zh) 2011-08-31

Similar Documents

Publication Publication Date Title
CN101908036B (zh) 一种高密度多处理器系统及其节点控制器
EP0733237B1 (en) Multidimensional interconnection and routing network for an mpp computer
US5940870A (en) Address translation for shared-memory multiprocessor clustering
US8898254B2 (en) Transaction processing using multiple protocol engines
CN100573497C (zh) 一种多核多操作系统之间的通信方法及系统
US7047372B2 (en) Managing I/O accesses in multiprocessor systems
CN1243308C (zh) 使用处理器互连进行微处理器通信的方法和数据处理系统
CN109240832B (zh) 一种硬件重构系统及方法
US10394747B1 (en) Implementing hierarchical PCI express switch topology over coherent mesh interconnect
US20090006808A1 (en) Ultrascalable petaflop parallel supercomputer
CN102521201A (zh) 多核数字信号处理器片上系统及数据传输方法
CN101765838B (zh) 用于改善可路由架构的性能的系统和方法
US20080162872A1 (en) Data processing system, method and interconnect fabric supporting high bandwidth communication between nodes
WO1990007154A1 (en) Memory address mechanism in a distributed memory architecture
CN103401846B (zh) 数据处理方法、协议转换设备和互联网络
CN103188157B (zh) 一种路由器设备
CN101477512B (zh) 一种处理器系统及其访存方法
CN103744644A (zh) 采用四核结构搭建的四核处理器系统及数据交换方法
CN102541803A (zh) 数据发送方法和计算机
US20090138640A1 (en) Data Processing System, Method and Interconnect Fabric Supporting Concurrent Operations of Varying Broadcast Scope
CN112052100B (zh) 基于共享内存的虚拟机通信方法及设备
CN102446159A (zh) 多核处理器的数据管理方法及装置
WO2012015430A1 (en) Computer system and method for sharing computer memory
US8370508B2 (en) Method, system and apparatus for main memory access subsystem usage to different partitions in a socket with sub-socket partitioning
CN103186501A (zh) 一种多处理器共享存储方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HUAWEI TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: INSTITUTE OF COMPUTING TECHNOLOGY, CHINESE ACADEMY OF SCIENCES

Effective date: 20130528

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 HAIDIAN, BEIJING TO: 518129 SHENZHEN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130528

Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee after: Huawei Technologies Co., Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences