MindSharePCIe3.0-2 PCIe 体系结构概述- 2.1 PCI Express 简介-2.1.1 软件的后向兼容

Chapter 2 PCIe体系结构概述 PCIe Architecture Overview

关于前一章

前一章为我们提供了 PCI 技术发展的历史,以此来建立更好地理解 PCIe 的基础。主要回顾了 PCI 与 PCI-X 1.0/2.0 的基础内容,目的是为了给接下来对 PCIe 的概述内容提供一些前因后果,以方便理解 PCIe。

关于本章

本章对PCI Express体系结构展开了全面介绍,旨在将本章作为一个"执行层"概述,囊括该体系结构在高层的所有基础知识。它阐述了PCIe协议规范所给出的分层方法,并描述了每个层级的职责与作用。在介绍各种数据包类型的同时,也一并介绍了用于数据包通信以及增强数据包传输可靠性的协议。

关于下一章

下一章节介绍了 PCI Express 环境中的配置部分,涵盖了用于实现功能的配置寄存器空间、功能在总线上的发现方式、配置事务的生成及路由至正确位置的过程、PCI 兼容空间与 PCIe 扩展空间的差异,以及软件区分端点和桥的方法。

2.1 PCI Express 简介 (Introduction to PCI express)

PCI Express的问世标志着其前身并行总线的重大变革。作为一种串行总线,它与早期的串行设计(如InfiniBand或Fibre Channel)存在诸多共性,且在软件层面完全维持了对PCI的后向兼容性。

如同众多高速串行传输方法,PCIe采用双向连接模式,可同时进行信息的收发操作。此模型被称作双单工连接,原因在于每个接口均具备一个单工发送路径和一个单工接收路径,图2 - 1展示了该模型。鉴于数据流能够同时进行双向传输,从技术层面而言,两个设备间的通信实则为全双工,但PCIe协议规范仍采用双单工这一术语,这是由于该称呼对实际通信信道也有所描述。
图2‑1 双单工链路

用于描述设备之间信号传输路径的术语是"链路(Link)",它由一个或多个接收发送对构成。这样的一组接收和发送被称作一个"通道(Lane)",协议规范允许一条链路内包含 1、2、4、8、12、16 或 32 个通道。链路内通道的数量被称为链路宽度,通常用 x1、x2、x4、x8、x16 以及 x32 来表示。

在实际设计中,权衡使用多少通道的思路其实很简单:使用更多的通道能够增加带宽,但同时也会提高成本、增加空间占用以及增大功耗。

更多关于这方面的信息,可阅读"链路与通道"这一节。
图2‑2 一个通道

2.1.1 软件的后向兼容性 (Software Backward Compatibility)

PCIe 设计目标中极为关键的一点,便是要维持对 PCI 软件的后向兼容性。倘若一个设计采用的是现有系统,并且该设计已能在这个现有系统中正常运行,那么要促使其转向使用另一种系统,需满足两件事:其一,新技术虽需做出一些改变,但要有足够吸引人的性能提升;其二,要尽可能降低技术迁移的成本、风险以及工作量。

就第二点而言,在计算机领域,通常的做法是让那些为旧模型编写的软件在新模型中依旧可用。为了在 PCIe 中达成这一目标,PCI 中使用的所有地址空间要么原封不动地照搬,要么仅进行简单扩展。内存、IO 和配置空间对于软件来说仍然可见,而且写入方式也和以往一样。所以,即便数年前为 PCI 编写的软件(如 BIOS 代码、设备驱动等),在如今的 PCIe 设备上依旧能够使用。

配置空间已得到大幅扩展,增添了许多新的寄存器以支持新功能,但老的寄存器依然存在,并且可以按照常规方式访问(这部分详细内容见"软件兼容性特性")。

相关推荐
@PHARAOH2 天前
WHAT - 替代 Express 和 Koa 的现代轻量版 Hono
前端·微服务·express·koa
品克缤3 天前
Trading-Analysis:基于“规则+LLM”的行情分析终端(兼谈 Vibe Coding 实战感)
前端·后端·node.js·vue·express·ai编程·llama
૮・ﻌ・3 天前
Nodejs - 02:模块化、npm、yarn、cnpm
前端·npm·node.js·express·yarn·cnpm·包管理工具
willow8 天前
express使用
express
下北沢美食家24 天前
Express框架入门
开发语言·javascript·express
belldeep1 个月前
nodejs:如何使用 express markdown-it 实现指定目录下 Md 文件的渲染
node.js·express·markdown
御坂10101号1 个月前
JIT 上的 JIT:Elysia JS 的优化实践与争议
开发语言·javascript·网络·性能优化·node.js·express
belldeep2 个月前
nodejs v18.20 如何使用 express markdown-it 和 mermaid.min.js 10.9
nodejs·express·markdown·mermaid
你想考研啊2 个月前
win11卸载sql server express版本
express