《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(16)

news/2024/2/24 8:39:42/文章来源:https://blog.csdn.net/phmatthaus/article/details/135490900

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(15)

2.3.2 PCI Agent设备的配置空间

在PCI Agent设备的配置空间中包含了许多寄存器,这些寄存器决定了该设备在PCI总线中的使用方法,本节不会全部介绍这些寄存器,因为系统软件只对部分配置寄存器感兴趣。PCI Agent设备使用的配置空间如图2-9所示:

本回继续讲解在PCI Agent设备的配置空间中包含的其余寄存器:

(11)Command寄存器

该寄存器为PCI设备的命令寄存器在初始化时,其值为0。此时,这个PCI设备除了能够接收配置请求总线事务之外,不能接收任何存储器或者I/O请求。系统软件需要合理设置该寄存器之后,才能访问该设备的存储器或者I/O空间。在Linux系统中,设备驱动程序调用pci_enable_device函数,使能该寄存器的I/O和Memory Space位之后,才能访问该设备的存储器或者I/O地址空间

Command寄存器各个位的含义如表2-4所示:

表2-4 Command寄存器

描述
0I/O Space位。该位表示PCI设备是否响应i/O请求,为1时响应,为0时不响应。如果PCI设备支持I/O地址空间,系统软件会将该位置1。复位值为0
1Memory Space位。该位表示PCI设备是否响应存储器请求,为1时响应,为0时不响应。如果PCI设备支持存储区地址空间,系统软件会将该位置1。复位值为0
2Bus Master位。该位表示PCI设备是否可以作为主设备,为1时PCI设备可以作为主设备,为0时不能作为主设备。复位值为0
3Special Cycle位。该位表示PCI设备是否响应Special总线事务,为1时响应,为0时不响应。PCI设备可以使用Special总线事务,将一些信息广播发送到多个目标设备,Special总线事务不能穿越PCI桥。如果一个PCI设备需要将Special总线事务发送到PCI桥之下的总线时,必须使用Type 01h配置周期。PCI桥可以将Type 01h配置周期转换为Special周期。该位的复位值为0
4Memory Write and Invalidate位。该位表示PCI设备是否支持Memory Write and Invalidate总线事务,为1时支持,为0时不支持。许多低端的PCI设备不支持这种总线事务。该位对PCIe设备无意义
5VGA Palette Snoop位。该位为1时支持Palette Snoop功能,为0时不支持
6Parity Error Reponse位,复位值为0。该位为1、并且PCI设备在传送给过程中出现奇偶校验错误时,PCI设备将PERR#信号设置为1;该位为0时,即便出现奇偶校验错误,PCI设备也仅会将Status寄存器的“Detected Parity Error”位置1
7-
8SERR# Enable位。复位值位0。该位为1,并且PCI设备出现错误时,将使用SERR#信号,将这个错误信息发送给HOST主桥;为0时,不能使用SERR#信号
9Fast Back-to-Back位。该位为1时,PCI设备使用Fast Back-to-Back(快速背靠背)总线周期。这种周期是一种提高传送效率的方法。但并不是所有的PCI设备都支持Fast Back-to-Back传送周期。该位的复位值为0
10Interrupt Disabable位,复位值为0。该位为1时,PCI设备不能通过INTx信号向HOST主桥提交中断请求;为0时可以使用INTx信号提交中断请求。当PCI设备使用MSI中断方式提交中断请求时,该位将被置为1

(12)Status寄存器

该寄存器的绝大多数位都是只读,保存PCI设备的状态,其含义如表2-5所示:

表2-5 Status寄存器

描述
3Interrupt Status位,该位只读。该位为1且Command寄存器的Interrupt Disable位为0时,表示PCI设备已经使用INTx信号向处理器提交了中断请求。在多数PCI设备中的BAR空间,存在自定义的中断状态寄存器,因此设备驱动程序很少使用该位判断PCI设备是否提交了中断请求
4Capabilities List位,该位只读。该位为1时,Capability Pointer寄存器的值有效
566MHz Capability位,该位为只读。为1时表示此设备支持66MHz的PCI域
7Fast Back-to-Back Capable位。该位只读,该位为1,表示此设备支持快速背靠背总线周期
8Master Data Parity Error位。PCI总线的PERR#信号有效时将置该位为1;当PCI总线出现数据传送错误时置此位为1;当Command寄存器的Parity Error Response位为1时,置此位为1
9~10

DEVSEL timing字段。该字段为0b00时表示PCI设备为快速设备;为0b01时表示PCI设备为中速设备;为0b10时表示PCI设备为慢速设备。快速设备要求PCI总线字段主设备置FRAME#信号有效的一个时钟周期后,置DEVSEL#信号有效;中速设备要求PCI总线主设备置FRAME#信号有效的两个时钟周期后,置DEVSEL#信号有效;慢速设备要求PCI总线主设备置FRAME#信号有效的两个时钟周期后,置DEVSEL#信号有效。

在一条PCI总线上,如果快速设备、中速设备和慢速设备都没有使用DEVSEL#信号响应当前总线事务,这条总线上的负向译码设备将被动地接收这个总线事务。如果在这条总线上没有负向译码设备,主设备在FRAME#信号有效后的第4个时钟周期,使用主设备夭折时许,结束当前总线事务。

值得注意的是,在PCI-X总线中,该字段的含义与PCI总线有所不同

11Signaled Target Abort位。该位由PCI目标设备设置,当目标设备使用目标设备夭折(Target Abort)时序结束当前总线周期时,PCI设备将置该位为1
12Received Target Abort位。该位由PCI主设备设置,当发生目标设备夭折时序时,该位被置1
13Receved Master Abort位。该位由PCI主设备设置,当发生主设备夭折时序时,该位被置1。当以上几个Abort位有效时,表示PCI总线的数据传送通路出现了较为严重的问题
14Signaled System Error位。当设备置SERR#信号有效时,该位被置1
15Detected Parity Error位。当设备发现奇偶校验时,该位被置1

(13)Latency Timer寄存器

在PCI总线中,多个设备共享同一条总线带宽。该寄存器用来控制PCI设备占用PCI总线的时间。当PCI设备获得总线使用权,并使能Frame#信号后,Latency Timer寄存器将递减。当该寄存器归零后,该设备将使用超时机制停止对当前总线的使用(此时GNT#信号为无效,为提高仲裁效率,PCI设备在进行数据传送时,GNT#信号可能已经无效)。

如果当前总线事务为Memory Write and Invalidate时,需要保证一个完整Cache行的操作结束后,才能停止当前总线事务。对于多数PCI设备而言,该寄存器的值为32或64,以保证一次突发传送的基本单位为一个Cache行。

PCIe设备不需要使用该寄存器,该寄存器的值必须为0。因为PCIe总线的仲裁方法与PCI总线不同,使用的连接方法也与PCI总线不同。

更多内容请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_925926.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shiro漏洞

VULHUB部署环境 下载vulhub https://github.com/vulhub/vulhub/archive/master.zip?spma2c6h.12873639.article-detail.7.76036a98Plc8q5&filemaster.zip 进入漏洞文件夹直接部署 界面 漏洞 如果勾选记住账号,请求包会附带remember-me字段,服务…

MetaGPT入门(一)

本文在Win11操作系统下进行,工具pycharm 一、环境准备 1.建议使用conda虚拟环境 安装anaconda参考:Windows10下Anaconda的安装_windows anaconda 路径-CSDN博客 打开Anaconda Powershell Prompt命令窗口,输入下面命令,创建3.1…

专业课145+合肥工业大学833信号分析与处理考研经验合工大电子信息通信

今年专业课145也是考研科目中最满意的一门,其他基本相对平平,所以这里我总结一下自己的专业课合肥工业大学833信号分析与处理的复习经验。 我所用的教材是郑君里的《信号与系统》(第三版)和高西全、丁玉美的《数字信号处理》&…

Qt超简单实现贪吃蛇

文章目录 常量Snake类GameController类GUI显示游戏简图 为了能够最简单地完成程序,所以没有用类的继承等知识。感兴趣的朋友可以改写一下。 常量 const int FILE_SIZE 30; //地图方格大小 const int FPS 5000 / 33; //游戏运行帧率 enum Item{empty, wall, food…

1.环境部署

1.虚拟机安装redhat8系统 这个其实很简单,但是有一点小细节需要注意。 因为我的电脑是 16核心的,所以选择内核16,可以最大发挥虚拟机的性能 磁盘选择SATA,便于后期学习 将一些没用的设备移除 选择安装redhat 8 时间选择上海 选择…

jdbc-mysql

NotWritablePropertyException: Invalid property driverClass of beanclass (com.alibabadruid.pool.DruidDataSource] Bean property "driverClass mysql的配置有问题

web练习2

需求 1.计算用户指定的数值内的奇数和。例如用户输入的是10则计算13579的和 <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>作业1</title></head> <body> <script>//计算用…

黄金t+d与黄金期货交易的区别

在金融投资领域中&#xff0c;黄金是一种重要的避险工具和财富保值增值手段。对于投资者来说&#xff0c;了解并熟悉不同的黄金交易方式是至关重要的。其中&#xff0c;黄金TD和黄金期货交易是两种常见的黄金交易形式。那么&#xff0c;它们之间具体有哪些区别呢&#xff1f; 了…

光鉴科技的反卷思维,让科技不再难做

文 | 智能相对论 作者 | 陈壹 中国企业的全球竞争力&#xff0c;正从“拼人力、拼产能”转为“拼技术、拼创新”的新阶段。据世界知识产权组织发布的《世界知识产权指标报告》显示&#xff0c;2022年中国专利申请量约160万件&#xff0c;排名世界第一。而在最近发布的全球百强…

使用 Picocli 开发 Java 命令行,5 分钟上手

大家好&#xff0c;我是鱼皮&#xff0c;对不会前端的同学来说&#xff0c;开发 命令行工具 是一种不错的展示系统功能的方式。在 Java 中开发命令行工具也很简单&#xff0c;使用框架&#xff0c;几分钟就能学会啦~ Picocli 入门 Picocli 是 Java 中个人认为功能最完善、最简单…

1.机器学习-机器学习算法分类概述

机器学习-机器学习算法分类概述 个人简介机器学习算法分类&#xff1a;监督学习、无监督学习、强化学习一监督学习1. 监督学习分类任务举例&#xff1a;1.1 特征1.2 标签 二无监督学习1.关键特点2.应用示例3.常见的无监督学习算法 三强化学习1.定义2.示例场景 四机器学习开发流…

【搜索引擎设计:信息搜索怎么避免大海捞针?

在前面我们提到了网页爬虫设计&#xff1a;如何下载千亿级网页&#xff1f;中&#xff0c;我们讨论了大型分布式网络爬虫的架构设计&#xff0c;但是网络爬虫只是从互联网获取信息&#xff0c;海量的互联网信息如何呈现给用户&#xff0c;还需要使用搜索引擎完成。因此&#xf…

Flutter-Web从0到部署上线(实践+埋坑)

本文字数&#xff1a;7743字 预计阅读时间&#xff1a;60分钟 01 前言 首先说明一下&#xff0c;这篇文章是给具备Flutter开发经验的客户端同学看的。Flutter 的诞生虽然来自 Google 的 Chrome 团队&#xff0c;但大家都知道 Flutter 最先支持的平台是 Android 和 iOS&#xff…

c语言-数据类型(下)

目录 4.实型变量 5.字符常量 直接常量&#xff1a; 转义字符&#xff1a; 6.字符变量 7.字符串常量 五、输出格式总结 整型&#xff1a; 浮点型&#xff1a; 字符及字符串&#xff1a; 指针&#xff08;地址&#xff09;&#xff1a; 六、typedef 七、sizeof一个问…

鸿蒙开发之blank组件

一、使用 使用blank可以在row/column/flex在容器主轴方向上填充剩余部分。 可以通过设置min最小宽度/高度来控制填充的大小&#xff0c; 也可以通过backgroundColor设置背景颜色来改变默认的透明色填充。 //设置最小宽度为200&#xff0c;填充颜色灰色 Blank(200).backgrou…

项目架构之Zabbix部署

1 项目架构 1.1 项目架构的组成 业务架构&#xff1a;客户端 → 防火墙 → 负载均衡&#xff08;四层、七层&#xff09; → web缓存/应用 → 业务逻辑&#xff08;动态应用&#xff09; → 数据缓存 → 数据持久层 运维架构&#xff1a;运维客户端 → 跳板机/堡垒机&#x…

AttributeError: module ‘openai‘ has no attribute ‘error‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

RIP【新华三与华为区别】

【介绍】 rip分为rip 1 与 rip 2 &#xff0c;rip 2 是对 rip 1 的一种升级&#xff0c;rip 2 可以进行认证等功能 【命令】 新华三&#xff1a; [HC3-R1] rip #启用rip [HC3-R1-rip] version 2 #告知rip 版本号 [HC3-R1-rip] network 192.168.1.0 #宣告其网段 [HC3-R1-rip] …

【NI-DAQmx入门】LabVIEW中DAQmx同步

1.同步解释 1.1 同步基础概念 触发器&#xff1a;触发器是控制采集的命令。您可以使用触发器来启动、停止或暂停采集。触发信号可以源自软件或硬件源。 时钟&#xff1a;时钟是用于对数据采集计时的周期性数字信号。根据具体情况&#xff0c;您可以使用时钟信号直接控制数据采…

深度学习记录--正则化(regularization)

什么是正则化&#xff1f; 正则化(regularization)是一种实用的减少方差(variance)的方法&#xff0c;也即避免过度拟合 几种正则化的方法 L2正则化 又被称为权重衰减(weight dacay) 在成本函数中加上正则项&#xff1a; 其中 由于在w的更新过程中会递减&#xff0c;即权…