Pci设备之间进行通信的方法、设备以及计算机系统的制作方法

文档序号:6622830阅读:253来源:国知局
专利名称:Pci设备之间进行通信的方法、设备以及计算机系统的制作方法
技术领域
本发明涉及计算机系统,尤其涉及PCI(Peripheral Component Interconnect)设备之间的通信和相应的计算机系统。
背景技术
PCI总线技术在计算机、数据通讯产品等领域有着广泛和成熟的应用。目前有大量的芯片都支持PCI总线协议,它们作为PCI总线上的PCI设备在工作。在一次PCI操作中,发起PCI操作请求的PCI设备为PCI主设备,被访问的PCI设备为PCI目标设备。根据现有的PCI总线规范,每个PCI设备中最多有6个段的配置空间。该些配置空间根据PCI设备的芯片自身决定是存储器空间还是I/O空间。即,现有的PCI设备可以设有6个段的存储器空间,也可以由存储器空间和I/O空间组成6个段的配置空间。实现的物理地址是由系统在上电配置时进行分配,并通过配置读写进行设置的。
PCI设备的存储器空间需要通过存储器读/写命令访问,PCI设备的I/O空间需要通过I/O读写命令访问。有些PCI设备由于设计原因,不具备I/O读写的能力,不能发起对I/O空间的访问。事实上,PCI设备是否具备I/O读写能力是芯片制造商决定的,存在不具有I/O读写能力的PCI设备。而在一个产品中,其他的PCI设备存在I/O空间,不具备I/O读写能力的PCI设备需要访问另外一个存在I/O空间的PCI设备的I/O空间,而目前是无法实现的。比如和CPU相连的PCI桥设备,若它不具备I/O读写能力,在CPU上运行的软件就无法访问挂接在该PCI桥的PCI总线上的I/O空间。
也就是说,现有技术中由于不具备I/O读写能力的PCI不能作为主设备访问具有I/O空间的PCI设备的I/O空间,因此带来很多不方便,甚至为了访问具有I/O空间的PCI设备的I/O空间,需要更换新的PCI主设备,由此造成原PCI主设备的浪费,同时需要花费技术人员额外的工作。

发明内容
本发明的目的在于提供一种PCI设备之间进行通信的方法及设备,以解决现有技术中由于不具备I/O读写能力的PCI不能作为主设备访问具有I/O空间的PCI设备的I/O空间,因此带来不方便,甚至为了访问具有I/O空间的PCI设备的I/O空间,需要更换新的PCI主设备,由此造成原PCI主设备的浪费,同时需要花费技术人员额外的工作的技术问题。
本发明的目的在于提供一种计算机系统,以解决现有技术中计算机系统的主设备和目标设备不能直接通信的技术问题。
为解决上述问题,本发明公开了一种PCI设备之间进行通信的方法,用于不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问,包括(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备I/O空间的起始物理地址;(2)PCI主设备访问PCI目标设备的I/O空间时,第三PCI设备完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。
第三PCI设备包括两块存储器空间,第一块存储空间用于保存PCI目标设备的I/O空间的起始物理地址和保存PCI目标设备的I/O空间大小,第二块存储空间用于实现PCI目标设备的I/O地址空间和本PCI设备的存储器空间的映射。
步骤(2)从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备具体为(11)当PCI主设备访问PCI目标设备的I/O空间时,计算访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量=待访问的I/O空间物理地址-PCI目标设备的I/O空间地址起始地址;(12)第三PCI设备向PCI主设备发起重试终止命令,终止数据的传输,并且向总线仲裁器发出总线申请;(13)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(11)计算的偏移量加上PCI目标设备的I/O空间的起始物理地址得到的访问地址访问PCI目标设备的I/O地址,读取数据;(14)第三PCI设备将读取的数据存入第二块存储器空间;(15)PCI主设备向总线仲裁器发出总线申请,当总线仲裁器允许PCI主设备占用总线时,第三PCI设备回送数据至PCI主设备。
步骤(2)从PCI目标设备中获得预写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址具体为(21)当PCI主设备访问PCI目标设备的I/O空间时,直接向第三PCI设备的访问物理地址写入数据,访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量=待访问的I/O空间物理地址-PCI目标设备的I/O空间地址起始地址;(22)第三PCI设备保存物理地址和写入的数据,向总线仲裁器发出总线申请;(23)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(21)计算的偏移量加上PCI目标设备的I/O空间的起始物理地址得到的访问地址访问PCI目标设备的I/O地址,写入数据。
本发明公开了第二种PCI设备之间进行通信的方法,用于不具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问,(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有I/O空间且具备存储器访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备存储器空间的起始物理地址;(2)PCI主设备访问PCI目标设备的存储器空间时,第三PCI设备完成PCI目标设备的存储器空间和本系统I/O空间的映射从PCI目标设备中读取待访问的存储器空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的存储器空间物理地址。
第三PCI设备至少包括两块I/O空间,第一块I/O空间至少用于保存PCI目标设备的存储器空间的起始物理地址和保存PCI目标设备的存储器空间大小,第二块I/O空间用于实现PCI目标设备的存储器地址空间和本PCI设备的I/O空间的映射。
步骤(2)从PCI目标设备中读取待访问的存储器空间物理地址中对应的数据,并将所述数据回送至PCI主设备具体为(11)当PCI主设备访问PCI目标设备的存储器空间时,计算访问的物理地址=偏移量+第二块I/O空间的地址起始地址,所述偏移量=待访问的存储器空间物理地址-PCI目标设备的存储器空间地址的起始地址;(12)第三PCI设备向PCI主设备发起重试终止命令,终止数据的传输,并且向总线仲裁器发出总线申请;(13)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(11)计算的偏移量加上PCI目标设备的存储器空间的起始物理地址得到的访问地址访问PCI目标设备的存储器地址,读取数据;(14)第三PCI设备将读取的数据存入第二块I/O空间;(15)PCI主设备向总线仲裁器发出总线申请,当总线仲裁器允许PCI主设备占用总线时,第三PCI设备回送数据至PCI主设备。
步骤(2)从PCI目标设备中获得预写入的数据,再将所述数据写入PCI目标设备待访问的存储器空间物理地址具体为(21)当PCI主设备访问PCI目标设备的存储器空间时,直接向第三PCI设备的访问物理地址写入数据,访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量=待访问的存储器空间物理地址-PCI目标设备的存储器空间地址起始地址;(22)第三PCI设备保存物理地址和写入的数据,向总线仲裁器发出总线申请;(23)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(21)计算的偏移量加上PCI目标设备的存储器空间的起始物理地址得到的访问地址访问PCI目标设备的存储器地址,写入数据。
本发明公开了第三种PCI设备之间进行通信的方法,PCI主设备和PCI目标设备通过总线桥进行连接,将主桥一侧的某段或某几段存储器地址空间的访问,转换到从桥的I/O地址空间的访问,使得不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问或者具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问。
一种计算机系统,包括主设备,可通过总线向至少一个目标设备发起读写操作;目标设备,其具有主设备无法通过总线直接访问的地址空间;其特征在于,还包括第三设备,其具有主设备可通过总线直接访问的地址空间,并具有通过总线访问目标设备的地址空间的读写能力;第三设备将所述目标设备的地址空间映射到自身的地址空间上供所述主设备访问。
所述主设备为不具有I/O读写能力的PCI主设备,所述目标设备为具有I/O空间的PCI目标设备,所述第三设备为带有存储器空间且具备I/O访问能力的PCI设备,或者所述主设备为不具有存储器读写能力的PCI主设备,所述目标设备为具有存储器空间的PCI目标设备,所述第三设备为带有I/O空间且具备存储器访问能力的PCI设备。
所述第三设备挂接在主设备和目标设备的总线上。
所述第三设备为连接主设备和目标设备的总线桥。
与现有技术相比,本发明具有以下优点本发明通过在PCI主设备和PCI目标设备的PCI总线上挂接一第三PCI设备或者设置一总线桥,PCI主设备完成任何一次对PCI目标设备的访问时都需要通过第三PCI设备/总线桥建立中转将PCI设备的I/O空间映射到系统的Memory空间,或PCI设备的Memory空间映射到系统的I/O空间的方法,来解决不具备I/O读写能力的PCI主设备对其他PCI目标设备I/O空间访问的问题,和不具备Memory读写能力的PCI主设备对PCI目标设备的Memory空间访问的技术问题。
本发明还公开一种能够使主设备和目标设备之间进行通信的计算机系统。


图1是PCI设备之间进行通信的设备的一原理图;图2是图1的PCI设备之间进行通信的实施示例流程图;图3是PCI设备之间进行通信的方法的另一原理图;图4是PCI设备之间进行通信的第二原理图;图5是PCI设备之间进行通信的第二实施原理图;图6是本发明的计算机系统示意图。
具体实施例方式
以下结合附图,具体说明本发明。
请参阅图1,其为PCI设备之间进行通信的设备的一原理图。一种PCI设备之间进行通信的设备,用于不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问,在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,当PCI主设备访问PCI目标设备的I/O空间时,完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。
在主设备和目标设备挂接第三PCI设备。第三PCI设备用来完成PCI目标设备的I/O空间到系统Memory空间的映射。第三PCI设备为带有Memory空间PCI目标设备,即PCI总线上的PCI主设备可以发起对其Memory空间的读写操作;同时第三PCI设备应具备发起I/O访问能力的主设备,能够访问PCI目标设备,所述PCI目标设备为附图1中带有I/O空间的PCI设备。简而言之,具备Memory(存储器)访问能力的PCI主设备访问带有I/O空间的PCI设备,通过第三PCI设备的“中转”完成其访问。
建立不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问需要包括以下步骤(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备I/O空间的起始物理地址;(2)PCI主设备访问PCI目标设备的I/O空间时,第三PCI设备完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。
下面具体介绍各个步骤。
第三个PCI设备至少存储PCI目标设备I/O空间的起始物理地址。当PCI主设备(具备Memory访问能力的PCI设备)访问PCI目标设备(带有I/O空间的PCI设备),PCI设备可以根据存储的PCI目标设备I/O空间的起始物理地址将数据写入待访问的I/O空间中,将数据从待访问的I/O空间中读出。
比如第三PCI设备包括两块存储器空间,第一块存储器空间用于保存PCI目标设备的I/O空间的起始物理地址和保存PCI目标设备的I/O空间大小,第二块存储空间用于实现PCI目标设备的I/O地址空间和本PCI设备的存储器空间的映射。第三PCI设备也可以包括两块存储器空间,这一块存储器空间用于保存PCI目标设备的I/O空间的起始物理地址和保存PCI目标设备的I/O空间大小,以及实现PCI目标设备的I/O地址空间和本PCI设备的存储器空间的映射。存储器空间的块数并不影响后续的通信过程,以下以第三PCI设备包括两块存储器空间为例,说明具体的通信过程。
步骤(2)从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备具体为(11)当PCI主设备访问PCI目标设备的I/O空间时,计算访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量为待访问的I/O空间物理地址一PCI目标设备的I/O空间地址起始地址;(12)第三PCI设备向PCI主设备发起重试终止命令,终止数据的传输,并且向总线仲裁器发出总线申请;(13)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(11)计算的偏移量加上PCI目标设备的I/O空间的起始物理地址得到的访问地址访问PCI目标设备的I/O地址,读取数据;(14)第三PCI设备将读取的数据存入第二块存储器空间;(15)PCI主设备向总线仲裁器发出总线申请,当总线仲裁器允许PCI主设备占用总线时,第三PCI设备回送数据至PCI主设备。
步骤(2)从PCI目标设备中获得预写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址具体为(21)当PCI主设备访问PCI目标设备的I/O空间时,直接向第三PCI设备的访问物理地址写入数据,访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量=待访问的I/O空间物理地址-PCI目标设备的I/O空间地址起始地址;(22)第三PCI设备保存物理地址和写入的数据,向总线仲裁器发出总线申请;(23)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(21)计算的偏移量加上PCI目标设备的I/O空间的起始物理地址得到的访问地址访问PCI目标设备的I/O地址,写入数据。
以下结合PCI系统上电后系统软件的动作,具体说明上述方案的一具体实施例。下述提及的系统软件为能命令第一PCI设备(第一PCI设备为具备Memory访问能力的PCI主设备,第二PCI设备为带有I/O空间的PCI目标设备)发起符合PCI规范操作的程序。例如,第一PCI设备为一个具备PCI总线的微处理器,系统软件为运行于此CPU的程序。
第三PCI设备应至少实现两块Memory空间,例如Bar0和Bar1。在Bar0中设有两个32/64位的寄存器,一个用于保存PCI第二PCI设备的I/O空间的起始物理地址,本文中记为IOBaseAddres_Reg;另一个用于保存系统分配给第二PCI设备的I/O空间的大小,本文中记为Long_Reg。对于32位的PCI系统,IOBaseAddres_Reg、Long_Reg应该是32位的,对于64位的PCI系统IOBaseAddres_Reg、Long_Reg应该是64位的。Bar1用于实现第二PCI设备的I/O地址空间向系统的Memory空间的映射,所以Bar1的大小应不小于第二PCI设备的I/O空间大小之和。
第一PCI设备和第二PCI设备之间进行通信之初,首先需要进行初始化工作以及将数据写入对应空间中。比如系统软件通过供应商ID和设备ID识别到第二PCI设备和第三PCI设备后,分别利用“配置写操作”分别给第二PCI设备、第三PCI设备分配I/O空间物理地址和Memory空间物理地址,并对该些地址进行初始化。例如对于第三PCI设备,应完成Bar0基地址指针寄存器、Bar1基地址指针寄存器的初始化。
系统软件通过“Memory写”命令向第三PCI设备的Bar0中IOBaseAddres_Reg、Long_Reg中分别写入第二PCI设备的I/O空间起始地址和分配给第二PCI设备的I/O空间总大小。
当第一PCI设备需要发出读命令读取第二PCI设备的对应I/O空间的数据时,则具体的通信步骤如下所示(请参阅图2)S11第一PCI设备向PCI总线仲裁器发出占用总线命令;S12得到PCI总线仲裁器允许时,读Bar1偏移地址,进行物理地址的计算待访问的I/O空间物理地址相对于第二PCI设备的I/O空间地址基地址(即IOBaseAddres_Reg的值)的偏移地址,加上第三PCI设备的Bar1的地址基地址,即为实际的物理地址。
比如例如第三PCI设备的Bar1的Memory地址基地址为0X80010000,第二PCI设备的I/O地址基地址为0X00001000,则要访问第二PCI设备上I/O地址为0X0000100C的单元,其要访问的Memory地址为0x8001000C。
S13第三PCI设备在第一PCI设备发起此次读访问时,向第一PCI设备发出“重试终止”,终止数据的传输,同时在操作的地址期保存地址(如0x8001000C),并立即向总线仲裁器发出总线申请(S14)。
S15第三PCI设备根据保存的地址0x8001000C计算得到相应的偏移量为“0x000C”,并加上“IOBASEADDRESS_Reg”得到待读取的I/O地址空间地址0x0000100C,在总线仲裁器允许第三PCI设备占用总线时,第三PCI设备立即发出“I/O读操作”,操作地址为0x00001000C,从第二PCI设备中读取数据。
S16由于在步骤a2时第三PCI设备发出的是“重试终止”,第一PCI设备在经历至少2个周期的REQ无效后,可以再次向仲裁器发起总线申请;
S17若仲裁器允许第一PCI设备占用总线,则第一PCI设备可以再次发起对第三PCI设备的0x8001000C地址的读操作。对于本次读操作,第三PCI设备判断到从0x00001000C地址读出的数据有效,所以可以向第一PCI设备回送该数据,第一PCI设备在完成一个周期的读操作后正常终止。至此,完成了第一PCI设备对第二PCI设备的I/O地址空间的读操作。
当第一PCI设备需要发出写命令写入数据至第二PCI设备的对应I/O空间时,则具体的通信步骤如下所示(请参阅图3),则S21第一PCI设备向PCI总线仲裁器发出占用总线命令;S22得到PCI总线仲裁器允许时,写数据至Bar1偏移地址,进行物理地址的计算待访问的I/O空间物理地址相对于第二PCI设备的I/O空间地址基地址(即IOBaseAddres_Reg的值)的偏移地址,加上第三PCI设备的Bar1的地址基地址,即为实际的物理地址。
S23第三PCI设备在第一PCI设备发起此次写访问时,在地址期保存写入的地址,在数据期保存写入的数据,并立即向总线仲裁器发出总线申请S24在总线仲裁器允许第三PCI设备占用总线时,第三PCI设备立即发出“I/O写操作”,操作地址为b1步骤保存的地址,待写入的数据为步骤b1保存的数据。完成向第二PCI设备的I/O空间写入的动作。
除了上述公开的具备Memory访问能力的PCI主设备能够访问带有I/O空间的PCI设备,本发明还公开了一种实现不具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问的方法。
请参阅图4,其为本发明的另一种PCI设备之间进行通信的设备原理图。一种PCI设备之间进行通信的设备,用于不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问,在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,当PCI主设备访问PCI目标设备的I/O空间时,完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。
本发明还提供了一种PCI设备之间进行通信的方法,用于不具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问,包括(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有I/O空间且具备存储器访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备存储器空间的起始物理地址;(2)PCI主设备访问PCI目标设备的存储器空间时,第三PCI设备完成PCI目标设备的存储器空间和本系统I/O空间的映射从PCI目标设备中读取待访问的存储器空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的存储器空间物理地址。
第三PCI设备包括两块I/O空间,第一块I/O空间至少用于保存PCI目标设备的存储器空间的起始物理地址和保存PCI目标设备的存储器空间大小,第二块I/O空间用于实现PCI目标设备的存储器地址空间和本PCI设备的I/O空间的映射。
步骤(2)从PCI目标设备中读取待访问的存储器空间物理地址中对应的数据,并将所述数据回送至PCI主设备具体为(11)当PCI主设备访问PCI目标设备的存储器空间时,计算访问的物理地址=偏移量+第二块I/O空间的地址起始地址,所述偏移量=待访问的存储器空间物理地址-PCI目标设备的存储器空间地址的起始地址;(12)第三PCI设备向PCI主设备发起重试终止命令,终止数据的传输,并且向总线仲裁器发出总线申请;
(13)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(11)计算的偏移量加上PCI目标设备的存储器空间的起始物理地址得到的访问地址访问PCI目标设备的存储器地址,读取数据;(14)第三PCI设备将读取的数据存入第二块I/O空间;(15)PCI主设备向总线仲裁器发出总线申请,当总线仲裁器允许PCI主设备占用总线时,第三PCI设备回送数据至PCI主设备。
步骤(2)从PCI目标设备中获得预写入的数据,再将所述数据写入PCI目标设备待访问的存储器空间物理地址具体为(21)当PCI主设备访问PCI目标设备的存储器空间时,直接向第三PCI设备的访问物理地址写入数据,访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量=待访问的存储器空间物理地址-PCI目标设备的存储器空间地址起始地址;(22)第三PCI设备保存物理地址和写入的数据,向总线仲裁器发出总线申请;(23)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(21)计算的偏移量加上PCI目标设备的存储器空间的起始物理地址得到的访问地址访问PCI目标设备的存储器地址,写入数据。
本发明还公开了利用PCI-To-PCI的总线桥来替换上述的第三PCI设备,完成PCI设备之间相互通信的方法(请参阅图5)。PCI主设备和PCI目标设备通过总线桥进行连接,将主桥一侧的某段或某几段存储器地址空间的访问,转换到从桥的I/O地址空间的访问,使得不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问若者具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问。
从广泛意义上来看,总线桥也是一种PCI设备,因此本方案提供的PCI设备之间进行通信的方法与前述两个方案公开的原理相同,不再赘述。
在计算机系统中,业界有许多种总线规范,本发明的使用情况不止上述两种,例如PCI-X规范也适用于本发明。基于本发明的构思,采用其他总线的方式以实现更多的实施方式对业界普通技术人员来说是容易想到的。因而将本发明归结起来的一种实施方式,请参阅图6,其为本发明的一种计算机系统的结构示意图,包括主设备21,可通过总线向至少一个目标设备23发起读写操作;目标设备23,其具有主设备21无法通过总线直接访问的地址空间;第三设备22,其具有主设备21可通过总线直接访问的地址空间,并具有通过总线访问目标设备23的地址空间的读写能力;第三设备22将所述目标设备23的地址空间映射到自身的地址空间上供所述主设备21访问。
所述主设备21为不具有I/O读写能力的PCI主设备,所述目标设备23为具有I/O空间的PCI目标设备,所述第三设备22为带有存储器空间且具备I/O访问能力的PCI设备,或者所述主设备21为不具有存储器读写能力的PCI主设备,所述目标设备23为具有存储器空间的PCI目标设备,所述第三设备22为带有I/O空间且具备存储器访问能力的PCI设备。
所述第三设备22挂接在主设备和目标设备的总线上。所述第三设备22可以为连接主设备和目标设备的总线桥。
以上公开了仅为本发明的几个具体实施例,但本发明并非局限于此,任何本领域的技术人员能思之的变化都应落在本发明的保护范围内。
权利要求
1.一种PCI设备之间进行通信的方法,用于不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问,其特征在于,包括(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备I/O空间的起始物理地址;(2)PCI主设备访问PCI目标设备的I/O空间时,第三PCI设备完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。
2.如权利要求1所述的PCI设备之间进行通信的方法,其特征在于,第三PCI设备包括两块存储器空间,第一块存储空间用于保存PCI目标设备的I/O空间的起始物理地址和保存PCI目标设备的I/O空间大小,第二块存储空间用于实现PCI目标设备的I/O地址空间和本PCI设备的存储器空间的映射。
3.如权利要求2所述的PCI设备之间进行通信的方法,其特征在于,步骤(2)从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备具体为(11)当PCI主设备访问PCI目标设备的I/O空间时,计算访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量为待访问的I/O空间物理地址-PCI目标设备的I/O空间地址起始地址;(12)第三PCI设备向PCI主设备发起重试终止命令,终止数据的传输,并且向总线仲裁器发出总线申请;(13)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(11)计算的偏移量加上PCI目标设备的I/O空间的起始物理地址得到的访问地址访问PCI目标设备的I/O地址,读取数据;(14)第三PCI设备将读取的数据存入第二块存储器空间;(15)PCI主设备向总线仲裁器发出总线申请,当总线仲裁器允许PCI主设备占用总线时,第三PCI设备回送数据至PCI主设备。
4.如权利要求2所述的PCI设备之间进行通信的方法,其特征在于,步骤(2)从PCI目标设备中获得预写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址具体为(21)当PCI主设备访问PCI目标设备的I/O空间时,直接向第三PCI设备的访问物理地址写入数据,访问的物理地址=偏移量+第二块存储空间的地址起始地址,所述偏移量=待访问的I/O空间物理地址-PCI目标设备的I/O空间地址起始地址;(22)第三PCI设备保存物理地址和写入的数据,向总线仲裁器发出总线申请;(23)当接收到总线仲裁器允许第三PCI设备占用总线时,第三PCI设备根据步骤(21)计算的偏移量加上PCI目标设备的I/O空间的起始物理地址得到的访问地址访问PCI目标设备的I/O地址,写入数据。
5.一种PCI设备之间进行通信的设备,用于不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问,其特征在于,在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,当PCI主设备访问PCI目标设备的I/O空间时,完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。
6.一种PCI设备之间进行通信的方法,其特征在于,用于不具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问,其特征在于,(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有I/O空间且具备存储器访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备存储器空间的起始物理地址;(2)PCI主设备访问PCI目标设备的存储器空间时,第三PCI设备完成PCI目标设备的存储器空间和本系统I/O空间的映射从PCI目标设备中读取待访问的存储器空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的存储器空间物理地址。
7.如权利要求6所述的PCI设备之间进行通信的方法,其特征在于,第三PCI设备至少包括两块I/O空间,第一块I/O空间至少用于保存PCI目标设备的存储器空间的起始物理地址和保存PCI目标设备的存储器空间大小,第二块I/O空间用于实现PCI目标设备的存储器地址空间和本PCI设备的I/O空间的映射。
8.一种PCI设备之间进行通信的设备,用于不具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问,其特征在于,在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有I/O空间且具备存储器访问能力的第三PCI设备,当PCI主设备访问PCI目标设备的存储器空间时,第三PCI设备用以完成PCI目标设备的存储器空间和本系统I/O空间的映射从PCI目标设备中读取待访问的存储器空间物理地址中对应的数据,并将所述数据回送至PCI主设备,以及/或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的存储器空间物理地址。
9.一种PCI设备之间进行通信的方法,其特征在于,PCI主设备和PCI目标设备通过总线桥进行连接,将主桥一侧的某段或某几段存储器地址空间的访问,转换到从桥的I/O地址空间的访问,使得不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问或者具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问。
10.一种计算机系统,包括主设备,可通过总线向至少一个目标设备发起读写操作;目标设备,其具有主设备无法通过总线直接访问的地址空间;其特征在于,还包括第三设备,其具有主设备可通过总线直接访问的地址空间,并具有通过总线访问目标设备的地址空间的读写能力;第三设备将所述目标设备的地址空间映射到自身的地址空间上供所述主设备访问。
11.如权利要求10所述的计算机系统,其特征在于,所述主设备为不具有I/O读写能力的PCI主设备,所述目标设备为具有I/O空间的PCI目标设备,所述第三设备为带有存储器空间且具备I/O访问能力的PCI设备,或者所述主设备为不具有存储器读写能力的PCI主设备,所述目标设备为具有存储器空间的PCI目标设备,所述第三设备为带有I/O空间且具备存储器访问能力的PCI设备。
12.如权利要求10所述的计算机系统,其特征在于,所述第三设备挂接在主设备和目标设备的总线上。
13.如权利要求10所述的计算机系统,其特征在于,所述第三设备为连接主设备和目标设备的总线桥。
全文摘要
一种PCI设备之间进行通信的方法,用于不具有I/O读写能力的PCI主设备对PCI目标设备的I/O空间的访问,该方法包括(1)在连接PCI主设备和PCI目标设备的PCI总线上挂接一个带有存储器空间且具备I/O访问能力的第三PCI设备,所述第三个PCI设备至少存储PCI目标设备I/O空间的起始物理地址;(2)PCI主设备访问PCI目标设备的I/O空间时,第三PCI设备完成PCI目标设备的I/O空间和本设备的存储器空间的映射从PCI目标设备中读取待访问的I/O空间物理地址中对应的数据,并将所述数据回送至PCI主设备,或者从PCI主设备中获得待写入的数据,再将所述数据写入PCI目标设备待访问的I/O空间物理地址。本发明可以用于不具有存储器读写能力的PCI主设备对PCI目标设备的存储器空间的访问。
文档编号G06F13/20GK1725203SQ20051007708
公开日2006年1月25日 申请日期2005年6月15日 优先权日2005年6月15日
发明者慕长林 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1