推广 热搜: 采购方式  甲带  滤芯  气动隔膜泵  减速机  履带  减速机型号  带式称重给煤机  链式给煤机  无级变速机 

PCIe系列——处理器、PCI设备、存储器之间的通信方式

   日期:2024-02-13 08:43:04     来源:网络整理    作者:本站编辑    浏览:19    评论:0    

本节目录

一、HOST处理器访问PCI设备1、X86处理器通过I/O读写事务访问PCI设备2、PowerPC处理器通过I/O读写事务访问PCI设备3、处理器通过存储器读写事务访问PCI设备二、PCI设备读写主存储器三、Delayed传送方式四、Split总线事务

本节内容

一、HOST处理器访问PCI设备

    HOST处理器访问PCI设备的数据,包括两个方面:

    一是处理器向PCI设备发起存储器和I/O读写请求;

    二是处理器对PCI设备进行配置读写。

    BAR空间——在PCI设备的配置空间中,有6个BAR寄存器。每一个BAR寄存器均与PCI设备使用一组PCI总线地址空间对应,BAR寄存器里面存放这种空间地址的基地址。与BAR寄存器相对应的PCI总线地址空间,称为BAR空间,在BAR空间中可以存放I/O地址空间,也可以存放存储器地址空间。

    需要注意的是:BAR寄存器中存放的是PCI总线域的物理地址。

1、X86处理器通过I/O读写事务访问PCI设备

    X86处理器,具有独立的I/O地址空间,与PCI设备通信:

    ①将PCI设备使用的I/O地址映射到存储器域的I/O地址空间;

    ②处理器使用IN、OUT等指令对存储器域的I/O地址进行访问;

    ③HOST主桥将存储器域的I/O地址转换为PCI总线域的I/O地址;

    ④PCI总线I/O总线事务对PCI设备的I/O地址进行读写访问操作。

    也就是说,在X86处理器中,存储器域的I/O地址与PCI总线域的I/O地址相同。

2、PowerPC处理器通过I/O读写事务访问PCI设备

    PowerPC处理器,没有独立的I/O地址空间,与PCI设备通信:

    ①在HOST主桥初始化时候,将PCI设备使用的I/O地址空间映射为存储器地址空间;

    ②处理器对映射后的存储器地址空间读写访问操作时,HOST主桥将存储器域的这段存储器地址总线映射到PCI总线域的I/O地址;

    ③通过PCI总线的I/O总线事务进行读写操作。

3、处理器通过存储器读写事务访问PCI设备

    ①HOST处理器初始化时候,将PCI设备使用的BAR空间映射到存储器域的存储器地址空间;

    ②处理器通过存储器读写指令访问存储器域的存储器地址空间;

    ③HOST主桥将存储器域的读写请求翻译成PCI总线的存储器读写总线事务,再发送给目标设备。

    注意:PCI设备所能够直接使用的地址是PCI总线域的地址,PCI总线域的地址;而处理器所能使用的地址是存储器域的地址。

二、PCI设备读写主存储器

    PCI设备与存储器直接进行数据交换的过程被称为DMA,PCI设备需要获取数据传送的目的地址和传送大小,在BAR空间设置PC设备DMA控制器的两个寄存器分别用于保存目标地址和传送大小。

    注意:PCI设备进行DMA操作,使用的目的地址是PCI总线域的物理地址,不是存储器域的物理地址。原因是PCI设备无法识别存储器域的物理地址,而仅能识别PCI总线域的物理地址。

    HOST主桥负责完成PCI总线地址到存储域地址的转换,HOST主桥需要通过合理设置,将存储器的地址空间映射到PCI总线后,PCI设备才可以对这段存储器的地址进行DMA操作。对于没有经过HOST主桥映射的存储器空间,PCI设备是不能直接访问的。

    注意:在处理器系统中,并非所有的存储器空间都可以被PCI设备访问,只有在PCI总线域有映射得存储器空间才能被PCI设备访问。经过HOST主桥映射过的存储器对应两个地址,一是在存储器域的地址,用于处理器访问这段存储器空间;二是在PCI总线域的PCI总线地址,用于PCI设备访问这段内存。

三、Delayed传送方式

    处理器使用Non-Posted总线周期对PCI设备进行读操作,或者PCI设备使用Non-Posted总线事务对存储器进行读操作时,如数据没有到达目的地,那么这个读操作逻辑上的所有PCI总线都不能被释放,将严重影响PCI总线的使用效率。

    由此引出了Delayed传送方式,PCI桥对Non-Posted总线事务进行优化处理,并使用Delayed总线事务处理在Non-Posted总线事务。PCI总线规定只有Non-Posted总线事务可以使用Delayed总线事务。PCI总线的Delay总线事务由Delay读写请求和Delay读写完成总线事务构成。

四、Split总线事务

    为了进一步提供Non-Posted总线事务的执行效率,PCI-X总线将PCI总线的Delay总线事务,升级为Split总线事务。Split总线事务的基本思想是发送端首先将Non-Posted总线请求发送给接收端,再由接收端主动地将数据传递给发送端,有效解决HOST/PCI桥的重试操作。

    目前PCIe中也是采用Split总线事务进行数据传输。一个存储器读总线事务的例子,总线事务的发起方Requester采用Split总线事务与接收端Completer进行数据交换,具体步骤:

    ①Requester向Completer发起存储器读请求总线事务;

    ②在这个转发过程中经过多级PCI类型的桥,这些桥使用Split Responese周期结束当前总线事务并释放上游总线,转发存储器读请求,直到Completer接收这个总线事务;

    ③Completer接收存储器读请求后,记录Requester的ID号,并使用Split Response周期结束存储器读请求总线事务;

    ④Completer准备好发送数据,重新申请总线,并使用存储器读完成总线事务,主动将数据传送给Requester。报文中包括Requester ID号,采用ID路由,而不是地址路由;

    ⑤完成报文根据ID路由方式,最终到达Requester。Requester从完成报文中接收数据并完成整个存储器读请求。

 
打赏
 
更多>同类资讯
0相关评论

推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  皖ICP备20008326号-18
Powered By DESTOON