一种高密度多处理器系统及其节点控制器的制作方法

文档序号:6606551阅读:99来源:国知局
专利名称:一种高密度多处理器系统及其节点控制器的制作方法
技术领域
本发明涉及并行多处理器系统领域,特别是涉及一种高密度多处理器系统及其节 点控制器。
背景技术
并行多处理器系统的节点控制器是节点内各种部件(处理器、主存和设备等)互 连的通道,其结构随着体系结构的不同而不同。当前主流的体系结构包括对称多处理系 ^t (Symmetrical Multi-Processing, SMP) > #X^t^#fi|ijj fn] %^t (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节点的节点控制器设计无法满足所有需求。

发明内容
本发明的目的在于提供一种高密度多处理器系统及其节点控制器。其实现了多个 处理器的高速互连,提高多处理器系统的密度,并实现多个处理器对商品化外设的共享访 问。为实现本发明的目的而提供的一种高密度多处理器系统的节点控制器,包括多 个处理器端口,一个1/0端口,一个直接内存访问交叉开关模块和一个读/写交叉开关模 块,其中所述处理器端口,分为主处理器端口和从处理器端口,用于分别与主处理器和从 处理器连接,主处理器负责具体计算任务的运行,以及对外围设备的发现和初始化过程,从处理器只负责具体计算任务的运行;所述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高级中断控 制器中断控制。所述分发模块中对数据所属功能的区分通过两个途径,一方面通过设备配置空间 的基址寄存器地址窗口,另一方面为不同功能模块向系统总线申请不同的设备号,然后根 据数据所属设备号实现功能区分。所述直接内存访问模块包括下传和上传两个子模块,其中下传子模块负责接收直 接内存访问描述符,读取直接内存访问负载数据,并将数据发送至所述直接内存访问交叉 开关模块;上传子模块负责从所述直接内存访问交叉开关模块接收直接内存访问数据,并 将数据写入目标地址区域。所述读/写模块包括下传和上传两个子模块,其中下传子模块负责从所述分发模 块接收读/写请求以及读响应数据,并发送至所述读/写交叉开关模块;上传模块负责从所 述读/写交叉开关模块接收数据并发送至目的地址。
8
所述直接内存访问交叉开关模块为每个所述处理器端口设置两个虚通道缓冲区, 一个发送缓冲区,核心使用一个2NXN的交叉开关,N为交叉开关互连的处理器端口数目; 数据对虚通道缓冲区的选择符合如下规则目标处理器端口号为奇数的进入1号接收虚通 道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。所述读/写交叉开关模块为每个处理器及I/O端口设置两个虚通道缓冲区,一个 发送缓冲区,核心使用一个2(N+1)X(N+1)的交叉开关,N为交叉开关互连的处理器端口数 目;数据对虚通道缓冲区的选择符合如下规则目标处理器端口号为奇数的进入1号接收 虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。为实现本发明的目的还提供一种所述节点控制器实现读数据传输的方法,所述方 法,包括下列步骤步骤110.源处理器端口的处理器接口模块接收源处理器发出Load指令,传递给 源处理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为读指令后,将该 读指令发送给源处理器端口的读/写模块;步骤120.所述读/写模块获取Load指令中的全局地址,然后查询节点控制器内 各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器或 I/O端口,同时响应包中的状态域的错误位置位为1 ;若全局地址在窗口表中命中,则根据 窗口号生成目的端口号,并使用目的端口号替换Load请求中全局地址的高[―丨“位,使用 源窗口号替换Load请求中的携带的设备号,将Load请求发送至读/写交叉开关模块;步骤130.所述读/写交叉开关模块以读请求的目的端口号作为路由信息,将读请 求转发至目的处理器端口或目的1/0端口 ;步骤140.所述目的处理器端口或目的1/0端口的读/写模块为该读请求生成目 的总线请求序号目的Tag,并以该目的Tag为地址,将读请求携带的源Tag和源端口号存 储;步骤150.所述目的处理器端口或目的1/0端口的读/写模块使用目的Tag替换 读请求的源Tag后,经过目的处理器接口模块或目的1/0接口模块,最终将读请求发送至目 的处理器或目的1/0端口相连的1/0设备;步骤160.所述目的处理器或1/0端口相连的1/0设备返回响应包; 步骤170.所述目的处理器端口或目的1/0端口的读/写模块使用响应包中的Tag 读取之前存储的源Tag和源端口号,并使用该源Tag替换响应包的Tag,使用该源端口号替 换响应包的设备号,发送至读/写交叉开关模块;步骤180.源处理器端口的读/写模块接收到读/写交叉开关模块转发的响应包 后,清除响应包的目的端口号,发送至源处理器或1/0端口,完成整个读数据过程。为实现本发明的目的还提供一种所述节点控制器实现写数据传输的方法,所述方 法,包括下列步骤步骤210.源处理器端口的处理器接口模块接收源处理器发出的写指令,传递给 源处理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为写指令后,将该 写指令发送给源处理器端口的读/写模块;步骤220.所述源处理器端口的读/写模块获取写指令中的全局地址,然后查询 节点控制器内各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器端口或I/O端口,同时响应包中的状态域的错误位置位为1 ;若全局地址在窗口 表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换写请求中全局地址的高 卜r+1)l位,使用源窗口号替换写请求中的设备号,将写请求发送至读/写交叉开关;步骤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填 充读请求所需的地址,以包长Ien填充读请求所需的长度,然后将该读请求发送至源处理 器;步骤314.以所述读请求所需的请求序号为地址,将DstAddrCnt,DMALen和DMASeq 存入目标地址RAM中;步骤 315.置 DstAddrCnt = DstAddrCnt+len ;SrcAddrCnt = SrcAddrCnt+len ; LengthCnt = LengthCnt-Ien0步骤316.如果LengthCnt大于0,则跳转至步骤313 ;否则DMASeq加一,跳转至步 马聚312ο所述步骤320,包括下列步骤步骤321.源处理器端口的直接内存访问模块接收来自源处理器系统总线的读响 应包;步骤322.以响应包中的序号srctag为地址,读取所述目标地址RAM,获取其对应 的直接内存访问序号DMASeq,直接内存访问目的地址DstAddrj和直接内存访问总长度 DMALen ;
10
步骤323.以DMASeq为索引,获取接收计数器堆中的接收计数器RecvLengthCnt ;步骤324.构造一个写请求,该请求的地址域高位由DstAddrj对应的窗口 号填充,地址其他位由DstAddr_i的相应位填充;该请求携带的数据负载为读响应包携带 的数据负载;该请求携带的长度域由读响应包携带的长度域Ien填充,将该写请求发送至 直接内存访问交叉开关模块;步骤325.置 RecvLengthCnt = RecvLengthCnt+len,并回写至 DMASeq 对应的接收 计数器堆中;步骤326.若RecvLengthCnt = = DMALen,则跳转至步骤327 ;否则,跳转至步骤 321 ;步骤327.构造一个写请求,该请求的含义是通知目的处理器的直接内存访问模 块,当前直接内存访问请求完成;该请求的地址域只填充高位,由DstAddr_i对应的 窗口号填充;该请求携带的长度域置为1 ;该请求携带的数据域为空;该请求的设备号被填 充为最大窗口号加一,将该写请求发送至直接内存访问交叉开关。所述步骤330,包括下列步骤步骤331.直接内存访问交叉开关模块根据其地址高位携带的目的窗口号,转发 至目的处理器端口的直接内存访问模块;步骤332.目的处理器端口的直接内存访问模块将写请求的高位清除;步骤333.若写请求的设备号为最大窗口号加一,则该请求为直接内存访问完成 事件包,跳转至步骤334 ;否则跳转至步骤335 ;步骤334.获取目的端口提供的完成事件队列地址,将该地址填入到写请求的地 址域;步骤335.将写请求发送至目的处理器。为实现本发明的目的还提供一种所述节点控制器的高密度多处理器系统,所述系 统,包括多个节点,其中所述节点,包括多个处理器和一个所述节点控制器。所述节点控制器,通过支持全局地址空间来实现节点内资源的共享,其包括全局 地址空间专用寄存器,其中所述全局地址空间专用寄存器设置在每个处理器端口中,节点控制器使用静态分 配的方式隔离各个端口的地址空间,每个地址窗口最大为 其中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,分别与多个处理器连接。处理器端口在逻辑功能上分为两类,一类称为主处理器端口,主处理器除负责具 体计算任务的运行外,更重要的是负责对外围设备的发现和初始化过程,该类端口在节点
12控制器中只有一个;一类称为从处理器端口,从处理器只负责具体计算任务的运行,该类端 口在节点控制器中可以有多个。所述处理器端口 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交叉开关接收数据,并发送至目的地址。该模块实现所 属节点内的内存及设备资源的共享。1/0 高级可编程中断控制器(1/0 Advanced Programmable Interrupt Controller, I0APIC)模块16,每个处理器端口均包含该模块,它负责实现对应端口的 IOAPIC中断控制。一个1/0端口 2,是1/0总线的根设备,例如1/0总线为PCI-Express时,该1/0端 口就是 PCI-Express Root Complex。所述1/0端口 2包括Load/Store模块22和1/0接口模块21。其中1/0端口中 的Load/Store模块与处理器端口中的Load/Store模块功能结构相同;1/0接口模块负责 实现1/0总线根设备逻辑,通过一窗口寄存器记录该端口的全局地址分配,并实现系统总线包格式与I/O总线包格式间的互相转换。例如,使用PCI-Express总线,则该模块实现 PCI-Express Root Complex的物理层、链路层和事务层协议,如果选择HT作为系统总线,则 该模块实现HT到PCI-Express之间的包格式转换。图2A是本发明的节点控制器内部交叉开关结构框图,如图2A所示,所述直接内存 访问(Direct Memory Access,DMA)交叉开关模块3,负责实现各处理器端口间DMA数据的 交换,交叉开关结构为端口间互连提供了较好的扩展性。DMA交叉开关模块为每个处理器端 口设置两个虚通道缓冲区,一个发送缓冲区,核心使用一个2NX N的交叉开关(N为交叉开 关互连的处理器端口数目)。数据对虚通道缓冲区的选择符合如下规则目标处理器端口 号为奇数的进入1号接收虚通道缓冲区,目标处理器端口号为偶数的进入0号接收虚通道 缓冲区。这样的优势是一方面可以实现同源同目的DMA数据间保序,另一方面减少队头阻 塞,提高交叉开关的数据注入率。图2B是本发明的节点控制器内部交叉开关结构框图,如图2B所示,所述读/写 (Load/Store)交叉开关模块4,负责实现各处理器端口间,以及处理器端口和1/0端口间 Load/Store数据的交换,交叉开关结构为端口间互连提供了较好的扩展性。Load/Store 交叉开关模块为每个处理器及1/0端口设置两个虚通道接收虚通道缓冲区,一个发送缓冲 区,核心使用一个2(N+1)X(N+1)的交叉开关(N为交叉开关互连的处理器端口数目)。数 据对虚通道缓冲区的选择符合如下规则目标处理器端口号为奇数的进入1号接收虚通道 缓冲区,目标处理器端口号为偶数的进入0号接收虚通道缓冲区。这样的优势是一方面可 以实现同源同目的Load/Store操作间保序,另一方面减少队头阻塞,提高交叉开关的数据 注入率。较佳地,由于对于Load/Store数据的交换,数据长度短,因此Load/Store交叉开 关的接收发送缓冲区较小,而直接内存访问数据长度较长,因此DMA交叉开关的接收发送 缓冲区较大,将Load/Store数据和直接内存访问数据分开进行交换,可以很好的避免长数 据造成的队头阻塞,减少两类数据的互相干扰。相应于本发明的一种高密度多处理器系统的节点控制器,还提供所述节点控制器 实现读/写(Load/Store)数据传输的方法。本发明的节点控制器对所属节点内的内存和1/0设备进行统一编址,内存和1/0 设备都对应一系列的全局地址,节点内每个处理器都可以通过使用携带全局地址的Load/ Store指令实现对节点内存和1/0设备的访问,即Load/Store操作实现了节点内处理器对 节点内存和1/0设备的共享。Load是指源处理器端口或源1/0端口,从目的处理器的内存 或1/0设备中读取数据的过程。图3是本发明的节点控制器实现Load操作的步骤流程图, 如图3所示1.源处理器发出Load指令,该指令首先被源处理器端口的处理器接口模块接收, 传递给源处理器端口的分发模块,然后该分发模块通过查询BAR判定该指令为Load指令, 然后将该Load指令发送给源处理器端口的Load/Store模块;所述Load指令,包括发起Load请求的设备号、请求序号、读取数据长度及数据所 在全局地址,具体格式为
14 2. Load/Store模块获取Load指令中的全局地址,然后查询节点控制器内各端口 的窗口寄存器(存在于处理器和I/O接口模块中),若没有在任何一个窗口寄存器中命中, 则发送响应包至源处理器或I/O端口,同时响应包中的状态域的错误位置位为1。若全局地 址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口号替换Load请求中全 局地址的高卜位,使用源窗口号替换Load请求中的携带的设备号(Unit ID 系统总 线中用以区分不同设备 3. Load/Store交叉开关模块以Load请求的目的端口号作为路由信息,将Load请 求转发至目的处理器端口或目的1/0端口 ;4.目的处理器端口或目的1/0端口的Load/Store模块为该Load请求生成目的总 线请求序号目的Tag,并以该目的Tag为地址,将Load请求携带的源Tag和源端口号存储;其中,步骤3是为了描述数据在控制器内部被交换的过程,步骤4是一个保护现场 的过程,由于Load请求会被发送到目的总线,从源总线携带来的Tag就不能使用了,而要使 用目的总线的Tag,Tag的管理是与单条总线绑定的。5.目的处理器端口或目的1/0端口的Load/Store模块使用目的Tag替换Load请 求的源Tag后,经过目的处理器接口模块或目的1/0接口模块,最终将Load请求发送至目 的处理器或目的1/0端口相连的1/0设备;6.目的处理器或1/0端口相连的1/0设备返回响应包,包括对应Load请求的设备 号和请求序号,返回的数据状态及返回的数据负载,所述响应包的格式为 7.目的处理器端口或目的1/0端口的Load/Store模块使用响应包中的Tag读取 之前存储的源Tag和源端口号,并使用该源Tag替换响应包的Tag,使用该源端口号替换响 应包的设备号(作为响应包的目的端口号),发送至Load/Store交叉开关模块;8.源处理器端口的Load/Store模块接收到Load/Store交叉开关模块转发的响 应包后,只需清除响应包的目的端口号(响应包的设备号),即可发送至源处理器或1/0端 口,完成整个Load流程。Store,是指源处理器端口或源1/0端口,向目的处理器的内存或1/0设备写入数 据的过程。图4是本发明的节点控制器实现Store操作的步骤流程图,如图4所示1.源处理器发出Store指令,该指令首先被源处理器端口的处理器接口模块接 收,传递给源处理器端口的分发模块,然后该分发模块通过查询BAR (基址寄存器)判定该 指令为Store指令,然后将该Store指令发送给源处理器端口的Load/Store模块;所述Store指令,包括发起Store请求的设备号、请求序号、写入数据长度及存储 数据的全局地址,所述Store指令的格式为
2.源处理器端口的Load/Store模块获取Store指令中的全局地址,然后查询节点 控制器内各端口的窗口寄存器(存在于处理器和I/O接口模块中),若没有在任何一个窗口 寄存器中命中,则发送响应包至源处理器端口或I/O端口,同时响应包中的状态域的错误 位置位为1。若全局地址在窗口表中命中,则根据窗口号生成目的端口号,并使用目的端口 号替换Store请求中全局地址的高p。4"+1)l位,使用源窗口号替换Store请求中的设备号,将 Store请求发送至Load/Store交叉开关。3. Load/Store交叉开关模块根据Store请求的目的端口号,将Store请求转发至 目的处理器或目的1/0端口。4.目的处理器或1/0端口的Load/Store模块清除Store请求中的地址高
位,并将修改后的Store请求,经过目的处理器接口模块或目的1/0接口模块,最终发送至 目的处理器或1/0端口相连的1/0设备,完成整个Store过程。相应于本发明的一种高密度多处理器系统的节点控制器,还提供所述节点控制器 实现直接内存访问(DMA)数据传输的方法。本发明的DMA数据传输过程是处理器间的直接内存访问(DMA)过程,具体说是一 个处理器将大块本地数据直接传输到另一个处理器内存中的过程。该过程在源处理器端是 一系列的Load请求,在目的处理器端是一系列的Store请求。DMA描述符包括三个域,分别 是源数据所在起始地址SrcAddr,所要传输的数据长度DMALen,以及数据所要写入的目的 起始地址DstAddr,其中SrcAddr为本地地址,DstAddr为全局地址。源处理器必须使用单 一的Store请求将DMA描述符写入DMA模块中,以保证DMA操作的原子性。所述DMA描述 符的具体结构为 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作为初值;源地址计数器
16SrcAddrCnt,使用SrcAddr作为初值;目的地址计数器DstAddrCnt,使用DstAddr作为初 值;3.构造一个Load请求,首先产生Load请求所需的请求序号srctag,以 SrcAddrCnt填充Load请求所需的地址,以包长Ien填充Load请求所需的长度,然后将该 Load请求发送至源处理器;4.以srctag为地址,将DstAddrCnt,DMALen和DMASeq存入目标地址RAM中,目 标地址RAM的结构为 5.置 DstAddrCnt = DstAddrCnt+len ;SrcAddrCnt = SrcAddrCnt+len ;LengthCnt =LengthCnt-Ien06.如果LengthCnt大于0,则跳转至步骤3 ;否则DMASeq加一,跳转至步骤2。图6是本发明中DMA操作第二阶段的执行步骤流程图,如图6所示,其过程为1.源处理器端口的DMA模块接收来自源处理器系统总线的Load响应包。2.以响应包中的序号srctag为地址,读取目标地址RAM,获取其对应的DMA序号 DMASeq, DMA 目的地址 DstAddr_i 和 DMA 总长度 DMALen。3.以DMASeq为索引,获取接收计数器堆中的接收计数器RecvLengthCnt,接收机 数据器堆的格式为
r接收计数器0 4.构造一个Store请求,该请求的地址域高位由DstAddrj对应的窗口号 填充,地址其他位由DstAddr_i的相应位填充;该请求携带的数据负载为Load响应包携带 的数据负载;该请求携带的长度域由Load响应包携带的长度域Ien填充,将该Store请求 发送至DMA交叉开关模块;5.置 RecvLengthCnt = RecvLengthCnt+len,并回写至 DMASeq 对应的接收计数器 堆中。6.若RecvLengthCnt = DMALen,则跳转至步骤7 ;否则,跳转至步骤1。7.构造一个Store请求,该请求的含义是通知目的处理器的DMA模块,当前DMA请 求完成。该请求的地址域只填充高hr1”位,由DstAddr_i对应的窗口号填充;该请求携带的长度域置为1 ;该请求携带的数据域为空;该请求的设备号被填充为最大窗口号加一,将 该Store请求发送至DMA交叉开关。图7是本发明中DMA操作第三阶段的执行步骤流程图,如图7所示,其过程为1. DMA交叉开关模块根据其地址高位携带的目的窗口号,转发至目的处理器端口 的DMA模块;2.目的处理器端口的DMA模块将Store请求的高卜4"+1>1位清除;3.若Store请求的设备号为最大窗口号加一,则该请求为DMA完成事件包,跳转至 步骤4;否则跳转至步骤5。4.获取目的端口提供的完成事件队列地址,将该地址填入到Store请求的地址 域。5.将Store请求发送至目的处理器。在本发明中,只对于纯粹的数据传输的两种类型的传输方法进行了描述,但用于 控制目的的还有中断相关数据,中断相关数据的产生属于标准流程,所以本发明没有进行 详细的描述。相应于本发明的一种高密度多处理器系统的节点控制器,还提供一种高密度多处 理器系统,所述系统包括多个节点,每个节点包括多台处理器和一个节点控制器,所述节点 控制器的结构和数据传输方法在上面已经说明,在此不再一一赘述。本发明所述节点控制器所在的节点中,所有处理器均为主设备,均会独立发起对 节点控制器的设备发现过程。由于主处理器负责所有节点外设的配置,因此主处理器与从 处理器的设备发现过程不同。从处理器的设备发现及配置过程1. BIOS启动后,便探查从处理器端口的系统总线终端设备,读取其配置空间,配置 BAR寄存器。2.从处理器端口的系统总线终端设备返回设备搜索、及功能搜索完成通知,完成 BIOS的设备发现过程。3. BIOS读取从处理器端口的端口号i。4.根据从处理器本地内存的大小配置窗口 i+Ι的GAS_START和GAS_END寄存器, 完成整个从处理器对节点控制器的配置过程。主处理器的设备发现及配置过程1. BIOS启动后,便探查主处理器端口的系统总线终端设备(主处理器系统总线0 的设备0),读取其配置空间,配置BAR寄存器。2.探查主处理器端口的系统总线桥设备(主处理器系统总线0的设备1),读取其 配置空间。3.通过系统总线桥设备继续向下搜索,发现节点控制器1/0端口内的1/0总线根 设备(Root Complex)。4.最后通过1/0总线根设备进行标准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-I个从处理器,但从处理器不局限于单个处理器,也 可以是使用SMP/NUMA结构互连的多个处理器,节点控制器使用处理器的系统总线(如AMD 处理器的HT总线,Intel的QPI总线)与各类处理器相连。该节点包含若干外围设备,外 围设备通过I/O总线(如PCI-Express总线)与节点控制器相连。这里所述的从处理器并 不等同于一般意义上的协处理器概念,从处理器的计算任务并不依靠主处理器分配,而是 可以独立部署,因此从处理器和主处理器逻辑功能上的差别只存在于设备发现上,在具体 任务执行和资源共享方面并无管理者与被管理者关系。本发明的节点控制器在处理器的角度看来是设备,图9是本发明的节点控制器所 在节点的总线拓扑图,如图9所示,在从处理器的角度,节点控制器是系统总线的终端设备 (Endpoint),该设备的配置空间具有三个基地址寄存器(BAR),分别对应节点控制器从处理 器端口的DMA模块、IOAPIC模块和远程Load/Store模块。在主处理器的角度,节点控制器 是挂接在总线O(BusO)上的两个设备,一个是系统总线终端设备(Endpoint),另一个是系 统总线的桥设备。其中作为系统总线终端设备的配置空间具有三个基地址寄存器(BAR),分 别对应节点控制器主处理器端口的DMA模块、IOAPIC模块和远程Load/Store模块。其中 作为系统总线桥设备之后的总线I(Busl)上挂接一个I/O总线根设备(Root Complex), I/ 0总线根设备之后的总线2(Bus2)挂接1/0总线的终端设备或桥设备。本发明的节点控制器通过支持全局地址空间来实现节点内资源(包括内存和1/0 设备等)的共享。因此,在每个处理器端口中,除实现标准的设备配置空间外,还需设置全 局地址空间专用寄存器17。图10是本发明的节点控制器各个端口全局地址分配及窗口寄 存器的示意图,如图10所示,本发明的节点控制器使用静态分配的方式隔离各个端口的地 址空间,每个地址窗口最大为 其中MAXBIT是系统地址位宽,例如使用HT系统总线,若HT最大支持40位地址宽 度,则MAXBIT等于40,若HT最大支持64位地址宽度,则MAXBIT等于64。各端口窗口信息全局共享,相当于一个路由表,供数据传递时查询。主处理器端口 拥有两个窗口,窗口 0对应了其本地内存和外设空间,窗口 1对应了其全局地址空间。从处 理器端口和1/0端口分别只拥有一个标识其全局地址空间的窗口,窗口的起始和终止范围 由每个窗口中的配置寄存器存储。主处理器端口窗口 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/ 0端口的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.由于系统的外设发现配置由主处理器完成,因此只要保证主处理器是主流处理 器,就可以最大程度兼容商用设备。即使从处理器是新型处理器,也可以实现从处理器对外 设的访问,进而降低了系统升级成本,并在一定程度上兼容异构处理器。通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的 技术人员而言是显而易见的。以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例 性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
权利要求
一种高密度多处理器系统的节点控制器,其特征在于,所述节点控制器,包括多个处理器端口,一个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所述的高密度多处理器系统的节点控制器,其特征在于,所述直接 内存访问交叉开关模块为每个所述处理器端口设置两个虚通道缓冲区,一个发送缓冲区, 核心使用一个2NXN的交叉开关,N为交叉开关互连的处理器端口数目;数据对虚通道缓冲 区的选择符合如下规则目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目标处 理器端口号为偶数的进入0号接收虚通道缓冲区。
7.根据权利要求1所述的高密度多处理器系统的节点控制器,其特征在于,所述读/写 交叉开关模块为每个处理器及I/O端口设置两个虚通道缓冲区,一个发送缓冲区,核心使 用一个2((N+1)X(N+1)的交叉开关,N为交叉开关互连的处理器端口数目;数据对虚通道 缓冲区的选择符合如下规则目标处理器端口号为奇数的进入1号接收虚通道缓冲区,目 标处理器端口号为偶数的进入0号接收虚通道缓冲区。
8.一种根据权利要求1所述的节点控制器实现读数据传输的方法,所述方法,包括下 列步骤步骤110.源处理器端口的处理器接口模块接收源处理器发出Load指令,传递给源处 理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为读指令后,将该读指 令发送给源处理器端口的读/写模块;步骤120.所述读/写模块获取Load指令中的全局地址,然后查询节点控制器内各端 口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源处理器或I/O 端口,同时响应包中的状态域的错误位置位为1 ;若全局地址在窗口表中命中,则根据窗口 号生成目的端口号,并使用目的端口号替换Load请求中全局地址的高卜位,使用源窗 口号替换Load请求中的携带的设备号,将Load请求发送至读/写交叉开关模块;步骤130.所述读/写交叉开关模块以读请求的目的端口号作为路由信息,将读请求转 发至目的处理器端口或目的1/0端口 ;步骤140.所述目的处理器端口或目的1/0端口的读/写模块为该读请求生成目的总 线请求序号目的Tag,并以该目的Tag为地址,将读请求携带的源Tag和源端口号存储;步骤150.所述目的处理器端口或目的1/0端口的读/写模块使用目的Tag替换读请 求的源Tag后,经过目的处理器接口模块或目的1/0接口模块,最终将读请求发送至目的处 理器或目的1/0端口相连的1/0设备;步骤160.所述目的处理器或1/0端口相连的1/0设备返回响应包; 步骤170.所述目的处理器端口或目的1/0端口的读/写模块使用响应包中的Tag读 取之前存储的源Tag和源端口号,并使用该源Tag替换响应包的Tag,使用该源端口号替换 响应包的设备号,发送至读/写交叉开关模块;步骤180.源处理器端口的读/写模块接收到读/写交叉开关模块转发的响应包后,清 除响应包的目的端口号,发送至源处理器或I/O端口,完成整个读数据过程。
9.一种根据权利要求1所述的节点控制器实现写数据传输的方法,所述方法,包括下 列步骤步骤210.源处理器端口的处理器接口模块接收源处理器发出的写指令,传递给源处 理器端口的分发模块,该分发模块通过查询基址寄存器判定该指令为写指令后,将该写指 令发送给源处理器端口的读/写模块;步骤220.所述源处理器端口的读/写模块获取写指令中的全局地址,然后查询节点 控制器内各端口的窗口寄存器,若没有在任何一个窗口寄存器中命中,则发送响应包至源 处理器端口或I/O端口,同时响应包中的状态域的错误位置位为1 ;若全局地址在窗口表中 命中,则根据窗口号生成目的端口号,并使用目的端口号替换写请求中全局地址的高h『+1)l 位,使用源窗口号替换写请求中的设备号,将写请求发送至读/写交叉开关;步骤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填充读 请求所需的地址,以包长Ien填充读请求所需的长度,然后将该读请求发送至源处理器;步骤314.以所述读请求所需的请求序号为地址,将DstAddrCnt,DMALen和DMASeq存 入目标地址RAM中;步骤 315.置 DstAddrCnt = DstAddrCnt+len ;SrcAddrCnt = SrcAddrCnt+len ;LengthCnt = LengthCnt-Ien ;步骤316.如果LengthCnt大于0,则跳转至步骤313 ;否则DMASeq加一,跳转至步骤312。
12.根据权利要求11所述的根据权利要求1所述的节点控制器实现直接内存访问数据 传输的方法,所述步骤320,包括下列步骤步骤321.源处理器端口的直接内存访问模块接收来自源处理器系统总线的读响应包;步骤322.以响应包中的序号srctag为地址,读取所述目标地址RAM,获取其对应 的直接内存访问序号DMASeq,直接内存访问目的地址DstAddrj和直接内存访问总长度 DMALen ;步骤323.以DMASeq为索引,获取接收计数器堆中的接收计数器RecvLengthCnt ; 步骤324.构造一个写请求,该请求的地址域高卜4"+1)1位由DstAddrj对应的窗口号填 充,地址其他位由DstAddrj的相应位填充;该请求携带的数据负载为读响应包携带的数 据负载;该请求携带的长度域由读响应包携带的长度域Ien填充,将该写请求发送至直接 内存访问交叉开关模块;步骤325.置RecvLengthCnt = RecvLengthCnt+len,并回写至DMASeq对应的接收计数 器堆中;步骤326.若RecvLengthCnt == DMALen,则跳转至步骤327 ;否则,跳转至步骤321 ; 步骤327.构造一个写请求,该请求的含义是通知目的处理器的直接内存访问模块,当 前直接内存访问请求完成;该请求的地址域只填充高卩。4"+1)]位,由DstAddr_i对应的窗口号 填充;该请求携带的长度域置为1 ;该请求携带的数据域为空;该请求的设备号被填充为最 大窗口号加一,将该写请求发送至直接内存访问交叉开关。
13.根据权利要求12所述的根据权利要求1所述的节点控制器实现直接内存访问数据 传输的方法,所述步骤330,包括下列步骤步骤331.直接内存访问交叉开关模块根据其地址高位携带的目的窗口号,转发至目 的处理器端口的直接内存访问模块;步骤332.目的处理器端口的直接内存访问模块将写请求的高hf+1>l位清除; 步骤333.若写请求的设备号为最大窗口号加一,则该请求为直接内存访问完成事件 包,跳转至步骤334 ;否则跳转至步骤335 ;步骤334.获取目的端口提供的完成事件队列地址,将该地址填入到写请求的地址域; 步骤335.将写请求发送至目的处理器。
14.一种采用权利要求1所述的节点控制器的高密度多处理器系统,所述系统,包括 多个节点,其中所述节点,包括多个处理器和一个所述节点控制器。
15.根据权利要求1所述的高密度多处理器系统的节点控制器,其特征在于,所述节点 控制器,通过支持全局地址空间来实现节点内资源的共享,其包括全局地址空间专用寄存 器,其中所述全局地址空间专用寄存器设置在每个处理器端口中,节点控制器使用静态分配的
全文摘要
本发明公开了一种高密度多处理器系统及其节点控制器。所述节点控制器,包括主处理器端口和从处理器端口,用于分别与主处理器和从处理器连接,主处理器负责具体计算任务的运行,以及对外围设备的发现和初始化过程,从处理器只负责具体计算任务的运行;I/O端口,通过I/O总线与外围设备连接;读/写模块与读/写交叉开关模块连接;直接内存访问交叉开关模块,用于实现各处理器端口间直接内存访问数据的交换;读/写交叉开关模块,用于实现各处理器端口之间,以及处理器端口和I/O端口之间读/写数据的交换。
文档编号G06F15/80GK101908036SQ20101023654
公开日2010年12月8日 申请日期2010年7月22日 优先权日2010年7月22日
发明者刘锐, 孙凝晖, 安学军, 曹政, 王凯, 胡涛, 陈飞 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1