《PCI Express体系结构导读》随记 —— 前言

PCI与PCI Express(PCIe)总线在处理器系统中得到了大规模应用。PCISIG(Peripheral Component Interconnect Special Interest Group,外围部件互连专业组)也制定了一系列PCI与PCI Express总线相关的规范,这些规范所涉及的内容广泛且庞杂。对于已经理解了PCI与PCI Express总线的工程师,这些规范便于其进一步获得必要的细节知识;而对于刚刚接触PCI和PCI Express总线的工程师,这些规范性的文档并不适合阅读。在阅读这些规范时,工程师还需要具备一定的与体系结构相关的基础知识,这恰恰是规范并不涉及的内容。对于多数工程师,规范文档适合于查阅,而不便于学习

本书将以处理器体系结构为主线介绍PCI Express总线的组成,以便读者进一步理解PCI Express总线协议。本书并不是关于PCI和PCI Express总线的百科全书,因为读者完全可以通过阅读PCI和PCI Express总线规范获得细节信息。本书侧重的是PCI和PCI Express总线中与处理器体系结构相关的内容

本书不会对PCI总线的相关规范进行简单重复,部分内容并不在PCI总线规范定义的范围内,例如HOST主桥和RC。PCI总线规范并未规定处理器产商如何实现HOST主桥和RC,不同的处理器厂商实现的HOST主桥和RC有较大差异,而这些内容正是本书所讨论的重点。此外,本书还讲述了一些在PCI总线规范中提及、但却容易被忽略的一些重要概念。

本书由三篇组成:第I篇(第1~3章)、第II篇(第4~13章)、第III篇(第14~15章)。

(1)第I篇

第I篇(第1~3章)介绍了PCI总线的基础知识

  • 第1章

主要说明了PCI总线涉及的一些基本知识。有些知识稍显过时,但是在PCI总线中出现的一些数据传送方式,如Posted、Non-Posted和Split数据传送方式,依然非常重要,仍是读者需要掌握的。

  • 第2章

重点介绍了PCI桥。PCI桥是PCI及PCI Express体系结构的精华所在。本章还使用一定篇幅介绍了非透明桥。非透明桥不是PCI总线定义的标准桥片,但是在处理器系统之间的互联中得到了广泛的应用。

  • 第3章

阐述了PCI总线的数据传送方式。与Cache相关的内容和预读取机制是本章的重点。目前PCI与PCI Express对预读取机制的支持并不理想。但在可以预见的将来,PCI Express总线将充分使用智能预读取机制进一步提高总线的利用率。

(2)第II篇

第II篇(第4~13章)介绍了PCI Express总线的相关概念。第II篇的内容以第I篇为基础。从系统软件的角度来看,PCI Express总线向前兼容PCI总线,理解PCI Express总线必须建立在深刻理解PCI总线的基础之上。因此,读者需要按照顺序阅读这两篇。

  • 第4章

本章是PCI Express篇的综述。

  • 第5章

以Intel笔记本平台Montevina为例,说明了RC的各个组成模块。实际上,RC这一概念只有在x86处理器平台中才真正存在。在其它处理器系统中,并不存在严格意义上的RC。

  • 第6、7章

分别介绍了PCI Express总线的事务层、数据链路层和物理层。物理层是PCI Express总线的真正核心,也是中国工程师最没有机会接触的内容。这是我们这一代工程师的遗憾与无奈。

  • 第8章

简要说明了PCI Express总线的链路训练与电源管理。

  • 第9章

主要讨论的是通用流量控制的管理方法与策略。PCI Express总线的流量控制机制仍需完善,其中不等长的报文长度也是限制PCI Express总线流量控制进一步提高的重要因素。

  • 第10章

重点介绍了MSI和MSI-X中断机制。MSI中断机制在PCI总线中率先提出,但是在PCI Express总线中才得到大规模普及。目前x86架构多使用MSI-X中断机制,而在许多嵌入式处理器中,仍然使用MSI中断机制。

  • 第11章

本章篇幅较短,重点介绍了PCI和PCI Express总线中的序。有志于学习处理器体系结构的工程师务必掌握这部分内容。在处理器体系结构中,有关Cache和数据传送序的内容非常复杂,掌握这些内容也是系统工程师进阶所必须的。

  • 第12章

讲述了笔者(书的作者)的一个实际设计 —— Capric卡。简单介绍了Linux设备驱动程序的实现过程,并对PCI Express总线的延时与带宽进行了简要分析。

  • 第13章

介绍了PCI总线与虚拟化相关的一些内容。虚拟化技术已崭露头角,与虚拟化相关的一系列内容将对处理器体系结构产生深远的影响。目前虚拟化技术已经在x86处理器中得到了广泛的应用。

(3)第III篇

第III篇(第14~15章)以Linux系统为实例,说明了PCI总线在处理器系统中的使用方法。可能会有许多读者对这一篇有浓厚的兴趣。Linux无疑是一个非常优秀的操作系统,但是需要提醒系统工程师(们),Linux系统只是一个完全开源的操作系统,对于有志于学习处理器体系结构的工程师,学习Linux系统是必要的,但是仅靠学习Linux系统远远不够。

通常来说,理解处理器体系结构至少需要了解两三种处理器,并了解它们在不同操作系统上的实现。尺有所短寸有所长,不同的处理器和操作系统所应用的领域并不完全相同。也正是这个原因,本书以PowerPC和x86处理器为基础,对PCI和PCI Express总线进行说明。

致谢

本书在写作过程中得到了我的同事和在处理器及操作系统行业奋战多年的朋友们的帮助。在Linux系统中许多与处理器和PCI总线相关的模块,都有着他们的辛勤付出。刘建国和郭超宏先生审阅了本书的第I篇;马明辉先生审阅了本书的第II篇;张巍、余珂与刘劲松先生审阅了第13章。吴晓川、王勇、丁建峰、李力与吴强先生共同审阅了全书。

本书第12章中出现的Capric和Cornus卡由郭冠军和高健协助完成。看着他们通过对PCI Express总线理解的逐渐深入,最终设计出一款具有较高性能的Cornus卡,倍感欣慰。此外,杨强浩先生也参与了Capric和Cornus卡的原始设计与方案制定,在此对他以及他的团队在这一过程中给予的帮助表示感谢,我们也一道通过这两块卡的制作,进一步领略了PCI Express总线的技术之美。

一个优秀的协议,从制定到广大技术人员理解其精妙之处、再到协议应用到一个个优秀的产品中,需要更多地人参与、投入、实践,这也是编写此书最大的动力源泉。本书的完成与我的妻子范淑琴的激励直接相关,Capricornus(摩羯座)也是她的星座。

还要感谢本书的编辑车忱与策划时静,正是他们的努力使得本书提前面世。

对本书尚留疑问的读者,可通过我的邮箱sailing.w@gmail.com与我联系。最后,希望这本书对您有所帮助。

                                                                                                                                     作者:  王齐

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

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

相关文章

探索C语言标准库中的qsort函数

引言 在C语言中,标准库提供了丰富的函数来支持各种操作,其中之一是qsort函数。这个函数是用于排序数组的利器,能够轻松地对一维数组、二维数组和结构体数组等不同类型的数据进行排序。本文将深入探讨qsort函数的使用,包括一维数组…

STL 优先队列priority_queue练习

目录 STL之优先队列priority_queue 绝对值排序问题(题目描述) (一)使用优先队列prioroty_queue实现绝对值降序排序 (二)使用vector实现绝对值降序排序(使用库中的全局sort()函数)…

P5740最厉害的学生

一&#xff1a;题目 二&#xff1a;思路分析 这道题就是会使用C语言的结构体&#xff0c;然后知道结构体数组 三&#xff1a;代码 #include <stdio.h> struct Stu {char name[10];int c;int m;int e; }s[1005];//结构体数组 int main() {int n 0;scanf("%d"…

商品列表无限加载

实现商品列表无限加载功能 需求&#xff1a;例如在商品列表页鼠标向下滑动自动监听去掉接口老数据新数据拼接展示&#xff0c;加载完毕结束监听 第一步 使用elementui中InfiniteScroll 无限滚动组件 第二步 如果数据加载完成了则停止监听 // 核心代码添加 v-infinite-scroll属…

GEE:基于MCD64A1的GlobFire的火灾时间

作者:CSDN @ _养乐多_ 本文将介绍如何可视化 JRC/GWIS/GlobFire/v2/FinalPerimeters 数据集中每个火灾斑块,以及火灾斑块发生火灾的时间。因为原始数据的时间是年月日格式,可视化只能是将其转换成 Day Of Year (DOY,一年中的天数,0-366),这样才能了解火灾发生的具体时…

数据从A集群,使用logstash迁移到B集群,如何保持_Id一致

有时候&#xff0c;我们在跨集群数据同步的时候&#xff0c;需要保持_id一致。这里给出一个案例。 这里直接给出一个配置文件 input {elasticsearch {hosts > "es.production.mysite.org"index > "mydata-2018.09.*"query > { "query":…

4.9【共享源】流的多生产者和消费者

当一个系统中存在多个生产者和消费者时&#xff0c;情况可能会变得复杂。 了解生产者和消费者流之间支持的基数非常重要。 本质上&#xff0c;一个生产者流可以与多个消费者流连接&#xff0c;但一个消费者流只能连接到一个生产者流。请注意&#xff0c;基数关系仅限于单个流&…

Fusion360 服务器验证警告 解决方案

提示信息 服务器验证警告 无法验证安全证书。代理服务器、安全软件或废弃的操作系统补丁常常会触发此错误消息。 如果要更改此设置&#xff0c;请访问“网络/服务器验证"首选项页面。 解决方案 方案1:关闭你的代理软件&#xff08;方便快捷&#xff09; 方案2:观察代理软…

视频号小店需要多少资金?

我是电商珠珠 视频号团队自22年发展视频号小店以来&#xff0c;为人所知。和抖音电商一样&#xff0c;都是在发展的第二年掀起了浪花。 也就是今年&#xff0c;很多想要入驻的新手&#xff0c;对于视频号小店不太了解&#xff0c;不清楚到底需要多少资金。 今天&#xff0c;…

欧洲:数百家电商网站泄露了用户支付信息

欧洲刑警组织在12月22日发布的新闻稿中&#xff0c;称由 17 个国家联合参与的执法行动已发现数百个电商平台存在恶意脚本攻击&#xff0c;其用户的信用卡或支付卡数据已遭到泄露。 这项已进行两个月的执法行动由希腊牵头&#xff0c;欧洲刑警组织参与协调&#xff0c;并得到网络…

卷积神经网络基础与补充

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展&#xff1a; 这一点老师上课的时候也有讲到&#xff0c;BP的出现对CNN的发展至关重要 卷积的特性&#x…

深度学习中用来训练的train.py 探究学习2.1( 数据预处理)

下列为mmcls中数据预处理部分 train_pipeline是一个训练过程的配置列表&#xff0c;用于定义数据预处理的步骤。下面是train_pipeline中各个步骤的介绍&#xff1a; 1. LoadImageFromFile&#xff1a;从文件中加载图像。 2. RandomResizedCrop&#xff1a;随机缩放裁剪图像…

第十五节TypeScript 接口

1、简介 接口是一系列抽象方法的声明&#xff0c;是一些方法特征的集合&#xff0c;这些方法都应该是抽象的&#xff0c;需要有由具体的类去实现&#xff0c;然后第三方就可以通过这组抽象方法调用&#xff0c;让具体的类执行具体的方法。 2、接口的定义 interface interface_…

浮点数的转换--IEEE 754

IEEE754标准是一种浮点数表示标准&#xff0c;一般分为 单精度&#xff08;32位的二进制数&#xff09;&#xff1b;双精度&#xff08;64位的二进制数&#xff09; 根据国际标准IEEE754&#xff0c;任意一个二进制浮点数V可以表示为下面形式&#xff1a; V (-1)^s *&#…

压力测试中出现数据库死锁的情况如何解决

压力测试中数据库死锁产生的原因有很多&#xff0c;以下是一些可能的原因&#xff1a; 1. 数据库连接池不够用&#xff1a;在压力测试中&#xff0c;大量的用户请求可能导致数据库连接池被占满&#xff0c;从而产生死锁。 2. 数据库连接数占满&#xff1a;过多的连接数可能导致…

第81讲:清理MySQL Binlog二进制日志的方式

文章目录 1.清理Binlog二进制日志的依据2.临时关闭Binlog的方法3.自动清理Binlog4.手动清理Binlog日志 1.清理Binlog二进制日志的依据 Binlog日志非常重要&#xff0c;但是占用的磁盘空间也很大&#xff0c;我们也需要定期的去清理二进制日志&#xff0c;在MySQL数据库中&…

民富购:塑造数字时代下的电商革新与社会责任典范

在数字经济时代,电子商务已经成为建立市场关系、创新产业和服务业态、促进经济增长的重要途径和手段。特别是在中国,新型电子商务的迅猛发展已经改变了生产和生活的方方面面,不仅催生了众多新业态,还通过“互联网”战略让许多传统产业和服务焕发了新的生机。民富购,作为扬羊(广…

SQL进阶理论篇(二十一):基于SQLMap的自动化SQL注入

文章目录 简介获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中的所有数据表查看heros数据表中的所有字段查询heros表中的英雄信息总结参考文献 简介 从上一小节&#xff0c;可以发现&#xff0c;如果我们编写的代码存在着SQL注入的漏洞&#xff0c;后果…

FME软件安装教程及问题解决

FME软件 FME(Feature Manipulate Engine,简称FME)是加拿大Safe Software公司开发的空间数据转换处理系统,它是完整的空间ETL解决方案。该方案基于OpenGIS组织提出的新的数据转换理念“语义转换”,通过提供在转换过程中重构数据的功能,实现了超过250种不同空间数据格式(模型)之…

Scikit-Learn线性回归(一)

Scikit-Learn线性回归一 1、线性回归概述1.1、什么是回归1.2、什么是线性1.3、什么是线性回归1.4、线性回归的优缺点1.5、线性回归与逻辑回归2、线性回归的原理2.1、线性回归的定义与原理2.2、线性回归的损失函数3、Scikit-Learn线性回归3.1、Scikit-Learn线性回归API3.2、Scik…