一种pcie设备通信方法及系统的制作方法

文档序号:6614748阅读:352来源:国知局
专利名称:一种pcie设备通信方法及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种PC正设备通信方法及系统。
背景技术
PCIExpress是新一代高性能1/0 (Input/Output,输入/输出)互连技术,简 称PC正,作为标准的局域I/0总线广泛应用于计算机平台。PCIE具有高性能, 简化1/0,层次式架构等优点。
图1为PCIE总线的典型拓朴图。PC正是一种Point-to-Point (点对点)的共 享交换架构,每一个设备(Endpoint)拥有自己的PC正总线,直接连到switch (交"t奐i殳备),建立Point-to-Point通讯方式。
设备寻址模式保持了与PCI寻址模式的兼容性,即加载-存储体系结构且具 有单层地址空间,每个设备保留一賴JC正空间,用于CPU( Central Process Unit, 中央处理单元)和设备之间相互访问,PCIE空间和计算机系统的内存釆用统 一地址编址,支持64位地址空间,大大提高访问设备的方便性。
现有技术中,CPU为32位体系结构的计算机系统,计算机系统启动过程 中,BIOS负责根据设备的需求分配相应大小的地址空间,32位体系结构的计 算机系统只能为设备分配32位的地址空间,PCIE设备只能申请32位的地址空 间,即最大的地址空间为4G,如果考虑到计算机系统内存占用一部分地址空 间,PCIEi殳备能够得到的最大空间将会比4G小。由于PC正支持64位地址空间, 如果某些PC正设备需要申请超过4G的地址空间,该PCIE设备在32位体系结构 的计算机系统将不能正常工作。

发明内容
本发明提供一种PCIE设备通信方法及系统,使需要申请高位地址空间的 PCIE设备能够运行在低位体系结构的计算机系统中。
本发明提供了一种PC正设备通信方法,应用于包括低位CPU和两个申 请高位地址空间的PCIE设备的系统中,所述方法包括以下步骤 启动低位CPU的操作系统;
修改所述将所述两个PC正设备地址成高4主的地址空间;
<务改两个PCIE设备对应的PCIE桥地址,以使得所述申请高位地址空间
的PC正设备能够通过PCIE桥进行数据转发。
其中,所述两个PCIE设备通过PCIE桥进行^:据转发具体为 第一PC正设备发起写操作,数据包的目的地址为高位的地址空间,数据
包从第一 PC正设备转发到第一 PC正桥;
所述第一 PC正桥检测到所述数据包的目的地址属于第二 PCIE桥,所述
第二 PC正桥将所述数据包转发给所述第二 PC正桥;
所述第二桥PC正桥将所述数据包发送给所述第二 PC正设备; 第一PCIE设备发起读请求,数据包的请求读地址为高位的地址空间,数
据包从第一 PC正设备转发到第一 PC正桥;
所述第一 PC正桥检测到所迷数据包的请求读地址属于第二 PC正桥,所
述第二 PCIE桥将所述it据包转发给所迷第二 PCIE桥。
其中,所述修改所述将所述两个PCIE设备地址成高位的地址空间之后还
包括第—一 PCIE设备代理CPU操作第二 PCIE设备。
其中,具体包括所述第一PCIE设备代理CPU读所述第二 PCIE设备 CPU构造协议包,包括将要读取第二PCIE设备内容的起始地址,保存
读耳又数据的CPU内存起始地址; CPU将协议包写到交互空间;
所述第一PCIE设备定时扫描交互空间、中断或mailbox的方式,发现有 新的读请求;
所述第一 PCIE设备从所述第二 PCIE设备读出内容,并将内容写入CPU 的对应内存中;和/或
第一 PCIE设备代理CPU写所述第二 PC正设备
CPU构造协议包,包括CPU内存起始地址,内容为将要写到第二 PCIE
设备的数据和第二 PC正设备的地址; CPU写入到交互空间中;
第一PC正设备定时扫描交互空间,发现有新的写请求代理; 第一 PC正设备负责从CPU的内存读出内容,并将内容写入所述第二 PCIE 设备的地址。
其中,所述低位CPU为32位CPU;所述高位地址空间为64位地址空间。
本发明还提供了一种计算机系统,包括低位CPU和两个申请高位地址空 间PCIE i殳备,
所述低位CPU,用于启动低位CPU的操作系统,
第一和第二具有高位的地址空间的PC正设备地址;
两个与上述PCIE设备对应的具有高位地址空间的PC正桥,所述高位地 址空间PCIE i殳备通过PC正桥进行数据转发。
其中,第一PCIE设备具有数据转发功能,用于发起写操作,其中数据包 的目的地址为高位的地址空间,数据包从第一 PCIE设备转发到第一 PCIE桥, 其中所述第一 PCIE桥检测到所述数据包的目的地址属于第二 PCIE桥,所述 第二 PCIE桥将所述数据包转发给所述第二 PCIE桥;所述第二桥PCIE桥将 所述数据包发送给所述第二 PCIE设备;和/或用于发起读请求,数据包的请 求读地址为高位的地址空间,数据包从第一 PC正设备转发到第一 PC正桥, 其中所述第一 PCIE桥^f企测到所述数据包的请求读地址属于第二 PCIE桥,所 述第一 PCIE桥将所述数据包转发给所述第二 PCIE桥。
其中,所述第一PC正设备具有代理读操作功能,用于以定时扫描交互空 间、中断或mailbox的方式,发现有新的读请求时,从所述第二PCIE设备读 出内容,并将内容写入CPU的对应内存中。和/或用于以定时扫描交互空间, 发现有新的写请求代理时,从CPU的内存读出内容,并将内容写入所述第二 PCIE设备的地址。
其中,所述低位CPU为32位CPU;所述高位地址空间为64位地址空间。 本发明还提供了一种计算机系统,包括低位CPU和具有高位地址空间第 一和第二总线设备,
所述低位CPU,用于启动操作系统;所述第一和第二总线设备,用于通 过总线桥进行二者之间的数据转发,其中第一总线设备代理所述地位CPU与 所述第二总线设备之间的通信。
其中,所述总线为PCIE,而PC正桥包括第一和第二PC正桥,所述第一 和第二 PC正设备通过第一和第二 PCIE桥进行通信。
其中,所述第一PCIE设备,用于以定时扫描交互空间、中断或mailbox 的方式,发现有新的读请求时,从所述第二PC正设备读出内容,并将内容写 入CPU的对应内存中;和/或用于以定时扫描交互空间,发现有新的写请求代 理时,从CPU的内存读出内容,并将内容写入所述第二PCIE设备的地址。
本发明的实施例中,低位(例如32位)体系结构的计算机系统中,能够 让申请高位的地址空间(例如超过4G)设备相互访问;并且低位体系结构的 计算机系统中,通过读写代理,CPU能够访问高位的地址空间(超过4G)设 备。


图1是现有技术中PCIE总线的拓朴图2是本发明中一种PCIE设备通信方法流程图3是本发明中32位体系结构的计算机系统拓朴图4是本发明中为PCIE设备重新分配64位的地址空间后的示意图5是本发明中PCIE设备之间数据包的转发流程图6是本发明中PC正设备代理方案中修改的地址内容示意图。
具体实施例方式
本发明提供了 一种PCIE设备通信方法,应用于包括低位CPU和支持高 位地址空间PCIE设备的系统中,该方法如图2所示,具体包括以下步骤
步骤s201,启动低位CPU的操作系统。该操作系统以32位体系结构的 计算机系统为例,拓朴如图3所示,计算机系统拥有2G内存,地址为0x0000 0000 ~ 0x8000 0000, Root Complex(根)下挂PC正桥A和其他PCIE桥,PCIE
桥A下挂PC正设备A和PC正设备B。
系统启动过程中,BIOS根据设备的需求分配相应大小的地址空间,配置 PCIE设备A的地址空间为Ox F100 0000 ~ Ox F200 0000; PCIE设备B的地址 空间为Ox F200 0000 ~ Ox F300 0000。根据PCIE的地址路由协议,PCIE桥A 的地址范围必须覆盖PC正设备A和PCIE设备B的地址空间范围,即Ox FOOO 0000 Ox F300 0000,这样,PCIE桥A将PCIE数据包(该数据包的目的地址 属于Ox FOOO 0000 ~ Ox F300 0000的范围)向下转发给PC正设备A或PC正 设备B。
步骤s202,在操作系统启动完成后,通过软件修改的方法,将所述两个 PC正设备地址成高位的地址空间,为PC正设备重新分配一个高位的地址空 间(例如64位);并修改两个PCIE设备对应的PC正桥地址,以使得所述申 请高位地址空间的PC正设备能够通过PCIE桥进行数据转发。修改的地址内 容如图4:修改PC正设备A的地址空间为Ox 4 0000 0000 Ox 5 0000 0000, PCIE设备B的地址空间为Ox 5 0000 0000 ~ Ox 6 0000 0000, PC正设备A和 PC正设备B的地址空间各有4G。根据地址路由协议,修改PC正桥B的地址 空间为Ox 4 0000 0000 Ox 5 0000 0000, PC正桥C的地址空间为Ox 5 0000 0000 ~ Ox 6 0000 0000。
本发明一个实施例中,上述为PCIE设备重新分配一个64位的地址空间 之后,PC正设备拥有大地址空间,PC正设备之间能够相互访问。以一个例子 详细描述PCIE设备之间数据包的转发流程如图5所示,包括以下步骤
步骤s501, PCIE设备A发起写搮:作,数据包的目的地址为0x5 1000 0000, 数据包从PC正设备A转发到PCIE桥B。
步骤s502, PC正桥B发现数据包的目的地址属于PC正桥C, PCIE桥B 将数据包转发给PC正桥C。
步骤s503, PCIE桥C发给下游PCIE设备B。
上述实施例实现了 PC正设备之间的数据转发,为了实现CPU对拥有大 地址空间的PCIE设备的读写操作,可以通过PC正设备代理方案,修改的地 址内容如图6所示。修改PCIE设备B的地址空间为Ox 5 0000 0000 Ox 6 0000
0000;修改PC正桥C的地址空间为Ox 5 0000 0000 ~ Ox 6 0000 0000, PCIE 设备B的地址空间拥有4G。实施本方案需要PCIE设备A拥有64位地址的 访问能力,增强PCIE设备A的功能,让PCIE设备A充当CPU读写PCIE 设备B的代理。CPU不直接访问PCIE设备B, CPU读写PCIE设备B需要 PCIE设备A的协助。
在CPU和读写PCIE代理之间的通讯遵循特定协议,达到CPU读写PCIE 设备B的目的,CPU和读写PC正代理之间通过协议包进行通讯,协议包的 具体内容如图6所示。Src Addr和Src Upper Addr为源起始地址,Dst Addr 和Dst Upper Addr为目的起始地址,对于CPU读PC正设备B的动作来说, 源地址为PCIE设备B的地址,目的地址为CPU内存的地址;对于CPU写 PCIE设备B的动作来说,源地址为CPU内存的地址,目的地址为PCIE设备 B的地址;Count和Upper Count为本次需要读或写的字节lt; R/W为读或写 操作标志;F为完成标志;PC正B为CPU终止读写标志;R和Reserve为保 留位,日后扩展使用。
其中,对于CPU读PC正设备B的动作,读写PC正代理在自身的PCIE 地址空间中提供一部分空间,这空间保存协议包的内容,在此叫估文交互空间。 具体实现过程包括
1, CPU构造协议包,Src Addr和Src Upper Addr为将要读取PC正设备 B内容的起始地址,Dst Addr和Dst Upper Addr为保存读取数据的CPU内存 起始i也址,R/W为0; F为0; B为0。
2, CPU将协^汉包写到交互空间。
3, 读写PCIE^理定时扫描交互空间,发现R/W为0, F为0, B为0时, 表示有新的读请求。
4, 读写代理从PC正设备B读出内容,起始地址为协议报文中的Src Addr 和Src Upper Addr,并将内容写入CPU的内存中,起始地址为协议报文中的 Dst Addr和Dst Upper Addr。
5 ,完成操作后,读写PCIE代理设置F为1 。
6,在操作的过程中,读写PCIE代理定时扫描交互空间,发现B为1,
将终止操作,设置F为1。
7, CPU定时扫描交互空间发现F为1,表示读完成。
对于CPU写PCIE设备B的动作,读写PC正代理在自身的PCIE地址空 间中提供一部分空间,这空间保存协议包的内容,在此叫做交互空间。具体 实现过程包括
1, CPU构造协议包,Src Addr和Src Upper Addr为CPU内存起始地址, 内容为将要写到PC正设备B的数据,Dst Addr和Dst Upper Addr为PCIE设 备B的地址,R/W为1; F为0; B为0。
2, CPU写入到交互空间中。
3,读写PC正代理定时扫描交互空间,发现R/W为l,F为O, B为O时, 表示有新的写请求代理。
4,读写PCIE代理负责从CPU的内存读出内容,起始地址为协议l艮文中 的Src Addr和Src Upper Addr,并将内容写入PC正设备B的地址,起始地址 为协i义才艮文中的Dst Addr和Dst Upper Addr。
5,完成操作后,读写代理设置F为l。
6,在操作的过程中,读写PCIE代理定时扫描交互空间,发现B为1, 将终止4喿作,设置F为1。
7, CPU定时扫描交互空间发现F为1,表示写完成。
本发明还提供了 一种通信系统,包括低位CPU和两个申请高位地址空间 PCIE设备,所述低位CPU,用于启动低位CPU的操作系统,修改装置,用 以修改所述将所述两个PCIE设备地址成高位的地址空间,以使得所述申请高 位地址空间的PCIE设备能够相互访问,所述两个PC正设备通过PC正桥进 行数据转发。
其中,第一PC正设备具有数据转发功能,用于发起写操作,数据包的目 的地址为高位的地址空间,数据包从第一PCIE设备转发到第一PCIE桥;所述 第一PCIE桥检测到所述数据包的目的地址属于第二PCIE桥,所述第二PCIE桥 将所述数据包转发给所述第二PCIE桥;所述第二桥PCIE桥将所述数据包发送 给所述第二PCIE设备;第一PCIE设备发起读请求,数据包的请求读地址为高
位的地址空间,数据包从第一PCIE设备转发到第一PCIE桥;所述第一PCIE桥 才企测到所述数据包的请求读地址属于第二PCIE桥,所述第一PCIE桥将所述数 据包转发给所述第二PCIE桥。
所述第一PC正设备具有代理读操作功能,用于以定时扫描交互空间、中 断或mailbox的方式,发现有新的读请求时,从所述第二 PCIE设备读出内容, 并将内容写入CPU的对应内存中。所述第一 PC正设备具有代理写操作功能, 用于以定时扫描交互空间、中断或mailbox的方式,发现有新的写请求代理时, 从CPU的内存读出内容,并将内容写入所述第二PCIE设备的地址。所述低 位CPU为32位CPU;所述高位地址空间为64位地址空间。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本 发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬 件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技 术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体 现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使 得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行
本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种PCIE设备通信方法,应用于包括低位CPU和两个申请高位地址空间的PCIE设备的系统中,其特征在于,所述方法包括以下步骤启动低位CPU的操作系统;修改所述将所述两个PCIE设备地址成高位的地址空间;修改两个PCIE设备对应的PCIE桥地址,以使得所述申请高位地址空间的PCIE设备能够通过PCIE桥进行数据转发。
2、 如权利要求1所述PCIE设备通信方法,其特征在于,所述两个PCIE 设备通过PCIE桥进行数据转发具体为第一PCIE设备发起写操作,数据包的目的地址为高位的地址空间,数据 包从第一 PCIE设备转发到第一 PCIE桥;所述第一 PCIE桥检测到所述数据包的目的地址属于第二 PC正桥,所述 第二 PCIE桥将所述数据包转发给所述第二 PC正桥;所述第二桥PCIE桥将所述数据包发送给所述第二 PC正设备;第一PCIE设备发起读请求,数据包的请求读地址为高位的地址空间,数 据包从第一 PCIE设备转发到第一 PC正桥;所述第一 PCIE桥检测到所述数据包的请求读地址属于第二 PC正桥,所 述第二 PCIE桥将所述数据包转发给所述第二 PCIE桥。
3、 如权利要求1所述PCIE设备通信方法,其特征在于,所述修改所述 将所述两个PCIE设备地址成高位的地址空间之后还包括第一 PC正设备代理 CPU操作第二 PC正设备。
4、 如权利要求3所述PC正设备通信方法,其特征在于,具体包括所述 第一 PCIE设备代理CPU读所述第二 PCIE设备CPU构造协议包,包括将要读取第二PC正设备内容的起始地址,保存 读取数据的CPU内存起始地址; CPU将协议包写到交互空间;所述第一PCIE设备定时扫描交互空间、中断或mailbox的方式,发现有 新的读请求;所述第一 PC正设备从所述第二 PC正设备读出内容,并将内容写入CPU 的对应内存中;和/或第一 PCIE设备代理CPU写所述第二 PCIE设备CPU构造协议包,包括CPU内存起始地址,内容为将要写到第二 PC正 设备的数据和第二 PCIE设备的地址; CPU写入到交互空间中;第一 PCIE设备定时扫描交互空间,发现有新的写请求代理; 第一 PCIE设备负责从CPU的内存读出内容,并将内容写入所述第二PC正 i殳备的地址。
5、如权利要求1至4中任一项所述PCIE设备通信方法,其特征在于, 所述低位CPU为32位CPU;所述高位地址空间为64位地址空间。
6 、 一种计算机系统,包括低位CPU和两个申请高位地址空间PCIE设备, 其特征在于,所述低位CPU,用于启动低位CPU的操作系统,第一和第二具有高位的地址空间的PCIE设备地址;两个与上述PCIE设备对应的具有高位地址空间的PCIE桥,所述高位地 址空间PCIE设备通过PC正桥进行数据转发。
7、 如权利要求6所述计算机系统,其特征在于,第一 PCIE设备具有数据转发功能,用于发起写操作,其中数据包的目的 地址为高位的地址空间,数据包从第一PCIE设备转发到第一PC正桥,其中 所述第一 PC正桥检测到所述数据包的目的地址属于第二 PC正桥,所述第二 PCIE桥将所述数据包转发给所述第二 PCIE桥;所述第二桥PCIE桥将所述数 据包发送给所述第二 PC正设备;和/或用于发起读请求,数据包的请求读地 址为高位的地址空间,数据包从第一 PCIE设备转发到第一 PCIE桥,其中所 述第一 PCIE桥检测到所述数据包的请求读地址属于第二 PC正桥,所述第一 PC正桥将所述数据包转发给所述第二 PCIE桥。
8、 如权利要求6所述计算机系统,其特征在于,所述第一PCIE设备具有代理读操作功能,用于以定时扫描交互空间、中断或mailbox的方式,发现 有新的读请求时,从所述第二PCIE设备读出内容,并将内容写入CPU的对 应内存中;和/或用于以定时扫描交互空间、中断或mailbox的方式,发现有新的写 请求代理时,从CPU的内存读出内容,并将内容写入所述第二PC正设备的 地址。
9、 如权利要求6至8所述计算机系统,其特征在于,所述低位CPU为 32位CPU;所述高位地址空间为64位地址空间。
10、 一种计算机系统,包括低位CPU和具有高位地址空间第一和第二总 线设备,其特征在于,所述低位CPU,用于启动操作系统;所述第一和第二总线设备,用于通 过总线桥进行二者之间的数据转发,其中第一总线设备代理所述地位CPU与 所述第二总线设备之间的通信。
11、 如权利要求IO所述的计算机系统,其特征在于,所述总线为PCIE, 而PC正桥包括第一和第二 PCIE桥,所述第一和第二 PCIE设备通过第一和 第二PCIE桥进行通信。
12、 如权利要求IO所述计算机系统,其特征在于,所述第一PCIE设备, 用于以定时扫描交互空间、中断或mailbox的方式,发现有新的读请求时,从 所述第二PCIE设备读出内容,并将内容写入CPU的对应内存中;和/或用于 以定时扫描交互空间、中断或mailbox的方式,发现有新的写请求代理时,从 CPU的内存读出内容,并将内容写入所述第二 PC正设备的地址。
全文摘要
本发明公开了一种通信方法,应用于包括低位CPU和两个申请高位地址空间的PCIE设备的系统中,所述方法包括以下步骤启动低位CPU的操作系统;修改所述将所述两个PCIE设备地址成高位的地址空间;修改两个PCIE设备对应的PCIE桥地址,以使得所述申请高位地址空间的PCIE设备能够通过PCIE桥进行数据转发。发明公开了一种PCIE设备通信系统。本发明的实施例中,32位体系结构的计算机系统中,能够让申请超大地址空间(超过4G)设备相互访问;并且32位体系结构的计算机系统中,通过读写代理,CPU能够访问超大地址空间(超过4G)设备。
文档编号G06F13/38GK101178697SQ20071019570
公开日2008年5月14日 申请日期2007年12月12日 优先权日2007年12月12日
发明者陈春明 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1