图解PCIE原理(从软件角度)

1  PCIE基本概念

1.1   PCIE拓扑架构图

1.2 PCIE Switch内部结构图

1.3  PCIE协议结构图

2 PCIE枚举原理

2.1 Type0&Type1配置头空间

2.2 拓扑示例

连接Device0的端口设为Port0,连接Device1的端口设为Port1 (Port可以看作PCI Bridge)

2.3 枚举过程

Port0、Port1的相关Bus Register变化过程如下图

2.4 资源分配

2.4.1 非桥设备资源分配

以Device0的资源分配为例:需要64KB IO Memory  以及 256 Byte IOPort

(IOPort Base = 0x10000000,  IOMem Base = 0x20000000)

2.4.2 桥设备资源分配

Port0为支持Devic0  IO & Memory Routing相关的Register设定 

3  PCIE事务交互

3.1 配置空间读写

Read Conf Space:  Device0 offset 4

3.2 内存空间读写

MMIO Read:  addr = 0x20000004

3.3 中断发起、取消

转载:http://blog.csdn.net/hulidong971/article/details/41412199

时间: 2024-10-02 12:22:07

图解PCIE原理(从软件角度)的相关文章

(转) 一张图解AlphaGo原理及弱点

一张图解AlphaGo原理及弱点 2016-03-23 郑宇,张钧波 CKDD 作者简介: 郑宇,博士, Editor-in-Chief of ACM Transactions on Intelligent Systems and Technology, ACM数据挖掘中国分会秘书长. 张钧波,博士,ACM数据挖掘中国分会会员,从事深度神经网络相关研究. -------------------------------------- 近期AlphaGo在人机围棋比赛中连胜李世石3局,体现了人工智能

图解LinkedHashMap原理

1 前言 LinkedHashMap继承于HashMap,如果对HashMap原理还不清楚的同学,请先看上一篇:图解HashMap原理 2 LinkedHashMap使用与实现 先来一张LinkedHashMap的结构图,不要虚,看完文章再来看这个图,就秒懂了,先混个面熟: LinkedHashMap结构.png 2.1 应用场景 HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了. Map<String, String> hashMa

二八原理:软件开发中的二八原理

前面聊了“什么是二八原理”,接下来得说说如何运用了.由于本博客主要谈IT技术,显然要先来说说和程序员有关的那些事.为了不至于太抽象,我们以开发文本编辑器为例(这玩意大伙儿都熟悉,省得费口水解释),来说说不同职责的开发人员在开发过程中该如何具体运用二八原理. 需求分析 需求分析在整个开发过程中占的工作量不大,但是产生的影响巨大(这又是一个二八原理的例子).既然需求分析如此重要,照理说应该安排最强的人来搞.但实际情况往往不是如此:很多公司负责需求分析的人并不胜任这项工作.我经历过几个不太成功的项目,

Linux网络原理及软件的安装等命令

CentOS7文件系统是xfs. mtu,最大传输单元(Maximum Transmission Unit ifconfig,英语全称network interfaces configuring,显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址.interface,接口. netmask,子网掩码,subnet mask. ifup 启动指定网卡 ifdown  暂停指定网卡 网卡的配置文件存放 /etc/sysconfig/network-scripts/ifcfg-ens33. 网

30分钟全面解析-图解AJAX原理

背景: 1.传统的Web网站,提交表单,需要重新加载整个页面. 2.如果服务器长时间未能返回Response,则客户端将会无响应,用户体验很差. 3.服务端返回Response后,浏览器需要加载整个页面,对浏览器的负担也是很大的. 4.浏览器提交表单后,发送的数据量大,造成网络的性能问题. 问题: 1.如何改进? 2.AJAX是什么? 3.有什么优势? 4.有什么缺点? 先上原理图: 高清无码图在这里:点我查看大图!!! 一.什么是 AJAX 1.为什么需要AJAX 当需要从服务器获取数据,并刷

图解SynchronousQueue原理-公平模式

SynchronousQueue原理详解-公平模式 一.介绍 SynchronousQueue是一个双栈双队列算法,无空间的队列或栈,任何一个对SynchronousQueue写需要等到一个对SynchronousQueue的读操作,反之亦然.一个读操作需要等待一个写操作,相当于是交换通道,提供者和消费者是需要组队完成工作,缺少一个将会阻塞线程,知道等到配对为止. SynchronousQueue是一个队列和栈算法实现,在SynchronousQueue中双队列FIFO提供公平模式,而双栈LIF

图解MongoDB原理

MongoDB是一款非常常用的面向文档型非关系数据库,主要应用在微博.博客.IM等的消息存储业务中,由于存储的数据与金融等行业比起来并不是那么重要,而且对事务也没什么要求,所以在这种场景下,MongoDB要比关系型数据库更适合,因为传统的关系型数据库的每次操作都会有ACK,而MongoDB的设计去掉了这个步骤,大大提高了存储的性能,而且MongoDB的设计考虑了设备故障经常出现的场景,所以在设计时就做了容灾和故障转移方面方案. MongoDB复(副)本集与分片: 每个复(副)本集中存储的数据是相

java环境变量配置图解和原理

我们需要配置三个环境变量: 1.JAVA_HOME   该环境变量表示JDK安装的根目录.比如我们上面的安装过程JAVA_HOME的值应该是:C:\Java\jdk1.7.0_72    此路径必须配置,后面的path路径,和将来要用的eclipse集成开发都会用去读该变量的值,来确定jdk所在路径. 注意:配置变量的时候,尽量复制粘贴,不用手动去写,很容易写错. 2.Path   在path路径中添加JDK的bin目录所在路径.需要引用到我们前面配置的JAVA_HOME变量.写法: %JAVA

《编译系统透视:图解编译原理》

[Wed Jun 01 2016 16:32:21] C 程序运行的核心是函数的执行和调用,它构成了整个C 程序运行时结构的基础框架.这一运行过程主要是在程序指令的驱动以及数据压栈.清栈的支持下实现的.为了介绍这一过程,我们设计了一个简单C 程序,如下所示: 1 int fun(int a,int b); 2 int m = 10; 3 4 int main() 5 { 6 int i=4; 7 int j=5; 8 m = fun(i,j); 9 printf("%d\n", m);