首页 > 其他分享 >PCIE背景知识学习(2)

PCIE背景知识学习(2)

时间:2022-09-26 16:57:06浏览次数:58  
标签:Function 配置 背景 知识 PCIE 地址 PCI 空间 CPU

PCIE背景知识学习(2)

PCI中断处理(PCI Interrupt Handling)

PCI设备使用4个边带信号(sideband)作为中断信号,分别为INTA#、INTB#、INTC#、INTD#,并从中选取一个来向系统发送中断请求,即使用4个中断信号中的1个来发送中断请求。当其中一个中断引脚被置为有效时,单CPU系统的中断控制器将会对中断作出响应,相应的方式为将INTR(interrupt request)信号置为有效,将中断请求发送给CPU。

后来出现的多CPU系统不再适用这种单信号线输入作为中断的方式,因此进行了改进,将中断改为了APIC(Advanced Programmable Interrupt Controller)模型,在这种模型中中断控制器将会向多CPU发送报文(message)而不是向其中一个CPU发送INTR信号。不过无论中断传输模型是什么,接收到中断的CPU都必须确认中断来源,然后为中断提供服务。

PCI错误处理(PCI Error Handling)

PCI自身并不包含任何的自动的或是基于硬件的错误恢复机制,因此软件将完全负责去进行错误处理。

PCI地址空间映射(PCI Address Map)

PCI体系结构支持3种地址空间,包含:Memory(内存)、I/O、Configuration Address Space(配置地址空间)。

x86处理器可以直接访问Memory和I/O空间。一个PCI设备映射到处理器内存地址空间,可以支持32或64位寻址。

在I/O地址空间,PCI设备可以支持32位寻址,但是因为x86 CPU仅使用16位的I/O地址空间,所以许多平台都会将I/O空间限制在64KB(对应16bit)。

PCI还引进了第三种地址空间,称为配置空间,CPU只能对它进行间接访问而非直接访问

PCI设备中的每个Function(功能)都包含专为配置空间所准备的内部寄存器,这些寄存器对于软件来说是可见的,并且软件可以通过一个标准化的方式来控制它们的地址与资源,这为PC提供了一个真正的即插即用(plug and play)的环境。

每个PCI Function最多可以有256 Bytes的配置地址空间。考虑到PCI最多可支持单个设备含有8个Function、每路总线含有32个设备、单个系统包含256路总线,那么可以得到一个系统的配置空间总量为:

256B/Function *8Function/device * 32devices/bus *256buses/system =16MB,

即一个系统的配置空间总大小为16MB。

 

 

因为x86 CPU无法直接访问配置空间,所以它必须通过IO寄存器进行索引(然而在PCI Express中引入了一种新方法来访问配置空间,这种新方法是通过将配置空间映射入内存地址空间来完成的)。

使用了一种被称为配置地址端口(Configuration Address Port)的IO端口,它位于地址CF8h-CFBh;还使用了一种被称为配置数据端口(Configuration Data Port)的IO端口,它位于地址CFCh-CFFh。

第一步:CPU产生一个IO写,写入的位置为北桥中IO地址为CF8h的地址端口(Address Port),这样就给出了需要被配置的寄存器的地址,即“用一个寄存器来指向一个内部位置”。这个地址主要由三部分组成,通过这三部分就可以定位一个PCI Function在拓扑结构中的位置,它们为:在256条总线中我们想访问哪一条总线、在该总线上的32个设备中访问哪一个、在该设备的8个Function中访问哪一个。除了这些以外,唯一还需要提供的信息是要确认访问这个Function的64dw(256Bytes)中的哪个dw。

第二步:CPU产生一个IO读或者IO写,操作的位置为北桥中的地址为CFCh的数据端口(Data Port),即“用另一个寄存器来进行数据的读取或写入”。在此基础上,北桥向PCI总线发起一个配置读事务(configuration read)或配置写事务(configuration write),事务要操作的地址即为步骤一中地址端口中所指定的地址。

 

 

 每个PCI Function可以包含最多256Bytes的配置空间。这个配置空间起始的64Bytes包含一个被称为Header(配置空间头)的结构,剩余的192Bytes用来支持一些其他可选功能。系统配置首先由Boot ROM固件来执行,在操作系统被加载完成后,它将重新对系统进行配置,重新进行资源分配。这也就是说系统配置的过程可能会被执行两次。

根据Header的类型,PCI Function被分为两个基本的类别。第一种Header称为Type 1 Header(类型1),它用于标识这个Function是一个Bridge,Bridge将会在拓扑结构上创建另一条总线。

而Type 0 Header(类型0)就是用来指示这个Function不是一个Bridge. 关于Header类型的信息包含在dword3的字节2的同名字段中(Class Code字段),当软件在系统中发现某个Function时,第一件事就是要检查其Header的这个字段(软件发现系统中Function的过程称为枚举enumeration)。

 

 

 PCI配置Header Type 1(Bridge)

 

 

 PCI配置Header Type 0(非Bridge)

 

PCI-X系统示例(PCI-X System Example)

一个基于Intel 7500服务器芯片组的系统平台。

 

 

 需要注意的是,PCI-X并不允许在第一个数据阶段(first data phase)后插入等待态。之所以这样做是因为PCI-X中会在事务的属性阶段(Attribute Phase),将需要传输的数据总量告诉Target设备。因此与PCI不同,Target是知道自己需要传输多少数据的。此外,多数PCI-X总线时序周期是连续的,因为使用的是突发模式,并且数据通常以128Bytes作为一个数据块(block)来进行传输。这些特性使得总线利用率提高,同时也提高了设备buffer管理的效率。

标签:Function,配置,背景,知识,PCIE,地址,PCI,空间,CPU
From: https://www.cnblogs.com/chensimin1990/p/16731511.html

相关文章

  • PCIE背景知识学习(3)
    PCIE背景知识学习(3)PCI-X特性(PCI-XFeatures)拆分事务模型(Split-TransactionModel)在传统的PCI读事务中,总线Master向总线上某个设备发起读取。如前面的内容所述,若Target......
  • IT工具知识-14:如何通过adb操作安卓剪切板?
    1.安装apk下载地址2.运行服务(每次重启系统都需要运行一次)adbshellamstartserviceca.zgrs.clipper/.ClipboardService3.设置剪切板内容adbshellambroadcast-a......
  • R语言学习丨散点图怎么画?绘图基本知识与常用函数
    今天笔记的内容是R语言中散点图绘制方法,用到了plot(普通散点图)、pairs(散点图矩阵)函数。散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变......
  • pandas基础知识(未完成)
    pandas基础知识pandas的数据结构SeriesPandasSeries类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型Series由索引(index)和列组成,函数如下:Series只能......
  • 直播系统搭建,el-table更改某行背景及文字样式
    直播系统搭建,el-table更改某行背景及文字样式1、el-table标签添加属性:row-class-name="tableRowClassName"2、定义属性方法 //row是获取到某一行的数据orderTimeF......
  • 知识点2-1 B+树(5)myISAM简介
    myISAM简介MyISAM的B+Tree的叶子节点上的data,并不是数据本身,而是数据存放的地址。主索引和辅助索引没啥区别,只是主索引中的key一定得是唯一的。这里的索引都是非聚簇索引......
  • 今日部分知识点总结———SQL注入,hooks的优缺点,cookies,xxxStorage的区别,BFC,合并二叉
    SQL注入在浏览器页面用户提交数据处,输入特定的字符实现sql语句的篡改,从而对数据库进行操作。比如在一个登录界面,要求输入用户名和密码,可以这样输入实现免帐号登录;用户名......
  • 全球新闻发布系统:chrome浏览器login页input自动填充蓝色背景的解决方案
    问题描述当浏览器自动填充用户名时,input会自动一个背景色,密码框是没有的,重写ant-input背景色也无法解决 解决方案方案一:去掉自动填充,输入时不再提示<Inputtype="te......
  • 知识点 1: MySQL的回表
    1:聚簇索引和非聚簇索引是什么?MySQL的索引有不同的角度的分类方式,例如:按数据结构分、按逻辑角度分、按物理存储分其中,按物理存储分有两种索引:聚簇索引和非聚簇索引。 ......
  • 博客园背景css代码
    #google_ad_c1, #google_ad_c2 {display:none;}.syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter table, .synta......