首页 > 其他分享 >PCIe扫盲——配置空间的读写机制

PCIe扫盲——配置空间的读写机制

时间:2024-12-27 18:09:59浏览次数:6  
标签:请求 扫盲 读写 配置 总线 PCIe PCI Root

需要特别注意的是,PCIe的Spec中明确规定只有Root有权限发起配置请求(Originate Configuration Requests),也就是说PCIe系统里面的其他设备是不允许去配置其他设备的配置空间的,即peer-to-peer的配置请求是不允许的。并且配置请求的路由(Routing)方式只能是采用BDF(Bus,Device,Function)。

处理器一般不能够直接发起配置读写请求,因为其只能产生Memory Request和IO Request。这就意味着Root必须要将处理器的相关请求转换为配置读写请求。针对传统的PCI设备(Legacy PCI),采用的是IO间接寻址访问(IO-indirect Accesses);针对PCIe设备,采用的是Memory-Mapped Accesses。

关于Legacy PCI的IO-indirect Accesses,在前面介绍PCI的文章中实际上已经讲过了。可以参考如下两篇文章:

7、PCIe扫盲——PCI总线的地址空间分配:http://blog.chinaaet.com/justlxy/p/5100053219
8、PCIe扫盲——PCI总线配置周期产生和配置寄存器:http://blog.chinaaet.com/justlxy/p/5100053220

前面的文章还介绍过,Root和Switch的每一个端口中都包含一个P2P桥,并且知道桥的配置空间头(Configuration Space Header)是Type1型的。如下图所示:

image

每个Type1型的Header中都包含最后一级总线号(Subordinate Bus Number)、下一级总线号(Secondary Bus Number)和上一级总线号(Primary Bus Number)等信息。当配置请求进行BDF路由的时候,正是依靠这些信息来确定要找的设备的。一个简单地例子如下图所示:

image

注:上面的例子是整个PCIe总线系统中只有一个Root的情况,实际上PCIe Spec还允许总线系统中存在多个Root(即Multi-Root)。关于Multi-Root,这里就不详细地介绍了,有兴趣地可以自行阅读PCIe的Spec。

标签:请求,扫盲,读写,配置,总线,PCIe,PCI,Root
From: https://www.cnblogs.com/linhaostudy/p/18636437

相关文章

  • DP1363F是一款高度集成的非接触读写芯片,高性能、多协议NFC读卡IC
    DP1363F是一款高度集成的非接触读写芯片,集强大的多协议支持、最高射频输出功率,以及突破性技术低功耗卡片检测等优势于一身,满足市场对更高集成度、更小外壳和互操作性的需求,适用于银行、电子政务、交通、移动支付等众多基础设施应用。DP1363F支持下列操作模式:•读写模式支持ISO/......
  • 如何为运行在 PICO 4 Ultra 设备上的项目设置外部文件读写权限?
    PICO4Ultra系列设备使用的安卓操作系统为Android14。当项目的WritePermission为Externa(SDCard)且AndroidAPILevel大于32时,Unity提供的外部文件读取方式在PICO4Ultra设备上将失效。此问题提供两种解决方法,按实际情况选取。解决方法一此方法更加快捷。......
  • 【Java并发】读写锁ReadWriteLock
    目录什么是读写锁什么时候使用读写锁怎么使用读写锁 使用步骤1.创建 ReentrantReadWriteLock实例2.获取读锁和写锁3.锁和解锁完整代码使用读写锁的注意事项什么是读写锁ReadWriteLock是Java并发包(java.util.concurrent.locks)中提供的一种锁机制,旨在......
  • redis中,msyql数据库读写分离搭建
    一.mysql读写分离:缓解主服务器的压力 1.概念:主服务器写数据,从服务器读数据 2.实现方法: 客户端分离:开发手动分离地址 服务端分离:数据库与应用之间加一个中间件,分离读写请求 mysql-proxy,mysql-route,maxscale amoeba,cobar,mycat2 atlas,k......
  • PCIe扫盲——BDF与配置空间
    前面的文章中介绍过,每一个PCIe设备可以只有一个功能(Function),即Fun0。也可以拥有最多8个功能,即多功能设备(Multi-Fun)。不管这个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间(ConfigurationSpace)与之对应。和PCI总线一样,PCIe总线中的每一个功能(Function)都有一个唯......
  • PCIe扫盲——一个Memory Read操作的例子
    前面的一系列文章简要地介绍了PCIe总线的结构、事务层、数据链路层和物理层。下面我们用一个简单地的例子来回顾并总结一下。Requester端如下图所示,Requester的应用层(软件层)首先向其事务层发送如下信息:32位(或者64位)的Memory地址,事务类型(TransactionType),数据量(以DW为单位),TC(Traf......
  • 【详解】MySQL主从复制配置,一次性搞定读写分离!
    本文将详细介绍MySQL主从复制的配置过程,包括主库配置、从库配置、主从同步状态监控等内容,帮助你轻松实现数据库的读写分离。一、主从复制简介MySQL主从复制是一个异步的复制过程,通过它可以让一台MySQL服务器(从库)的数据与另一台MySQL服务器(主库)的数据保持同步。1.1主从复制的......
  • qt读写ini文件
    [group1]key1=val1key2=val2sameKay=sameVal[group2]jian1=zhi1jian2=zhi2sameKay=sameZhi 比如创建插入一组ini文件,下面是文件写入的代码;Ini文件的写入ini文件不需要像xml和json一样需要使用QFile打开文件,只需将文件路径及文件格式传入即可(下方代码运行完毕,ini文件则会更新......
  • PCIe扫盲——PCIe总线物理层入门
    前面的文章简单的介绍了一些关于PCIe总线事务层(TransactionLayer)和数据链路层(DataLinkLayer)的一些基本概念。这篇文章来继续聊一聊PCIe总线的最底层——物理层(PhysicalLayer)。在PCIeSpec中,物理层是被分为两个部分单独介绍的,分别是物理层逻辑子层和物理层电气子层,其中后者一般......
  • PCIe扫盲——PCIe总线数据链路层入门
    前面的文章介绍过,数据链路层(DataLinkLayer)主要进行链路管理(LinkManagement)、TLP错误检测,FlowControl和Link功耗管理。数据链路层不仅可以转发来自事务层的包(TLP),还可以直接向另一个相邻设备的数据链路层直接发送DLLP,比如应用于FlowControl和Ack/Nak的DLLP。如下图所示:数据......