Chapter 1: Background
Chapter 1: Background书籍: PCI Express Technology 3.0 (MindShare Press, 2012)页码: Book Pages 9-38 | PDF Pages 68-99学习日期: 2026-04-12本章概要本章回顾了 PCIe 出现之前的 PCI 和 PCI-X 总线模型旨在为理解 PCIe 架构建立基础。PCIe 相比 PCI/PCI-X 最大的变化是从并行总线转向串行总线。1.1 PCI 和 PCI-X 背景PCI 的诞生 (1990 年代初)背景: 早期PC使用IBM AT总线(ISA)已不足以支持32位机器和更高带宽需求多种竞争方案: MCA (IBM), EISA, VESA 等都因各种缺点未能统一PCI诞生: 由PCISIG (PCI Special Interest Group) 开发的开放标准三大优势: 开放设计、高性能、软件可见性和控制力PCI 版本演进总线类型时钟频率峰值带宽 (32-bit)峰值带宽 (64-bit)卡插槽数/总线PCI33 MHz133 MB/s266 MB/s4-5 个PCI66 MHz266 MB/s533 MB/s1-2 个PCI-X 1.066 MHz533 MB/s1.06 GB/s1 个PCI-X 1.0100 MHz800 MB/s1.6 GB/s1 个PCI-X 1.0133 MHz1.06 GB/s2.13 GB/s1 个关键观察: 频率越高共享总线上的设备数越少因为反射波信号的问题PCI-X 的进化PCI-X 1.0: PCI的扩展保持硬件/软件向后兼容并行总线PCI-X 2.0: 最高原始数据率 4 GB/s但高频率使总线变成点对点互连最终瓶颈: 并行总线达到实际带宽上限难以继续提速加上高引脚数促使转向串行模型1.2 PCI 系统基础PCI 总线周期 (Bus Cycle)关键信号:FRAME#: 指示事务开始和进行中IRDY#: Initiator Ready发起者就绪TRDY#: Target Ready目标就绪STOP#: 目标请求停止当前事务DEVSEL#: 目标选择确认响应地址基本读事务流程:发起者发起地址周期FRAME# 有效目标检测地址响应 DEVSEL#数据阶段IRDY# 和 TRDY# 同时有效时数据传输最后一个数据时FRAME# 释放反射波信号 (Reflected-Wave Signaling)问题: PCI 使用低压信号模型高频下信号反射导致眼图闭合解决: 限制频率、缩短走线、减少负载数量结果: 频率越高插槽越少从4-5个降到1-2个PCI 事务模型1. Programmed I/O (PIO)CPU 直接读写外设寄存器简单但效率低CPU 被阻塞等待用于 IO 读写、配置访问2. Direct Memory Access (DMA)外设直接访问内存无需 CPU 介入高效适合大数据传输外设作为总线主设备(Bus Master)3. Peer-to-Peer两个外设直接通信不经过内存PCI 实际很少使用因为共享总线架构PCI 总线仲裁集中仲裁: 每个主设备有独立的 REQ# 和 GNT# 信号仲裁在当前事务结束后进行隐藏仲裁饿死问题: 低优先级设备可能长时间得不到授权1.3 PCI 低效性问题PCI Retry Protocol场景: 目标需要超过 16 个时钟周期准备数据流程:目标断言 STOP# 而不断言 TRDY# 重试(Retry)发起者停止总线周期发起者等待至少 2 个时钟后重新仲裁重复直到数据成功传输问题: 期间总线空闲效率低PCI Disconnect Protocol场景: 目标能传输至少 1 个 DWORD 但无法完成整个传输流程:目标在数据传输中途断言 STOP#传输了部分数据与 Retry 的区别发起者在断开地址继续传输对比:Retry: 0 数据传输Disconnect: 部分数据传输PCI 中断处理4 个边带中断信号: INTA#, INTB#, INTC#, INTD#单CPU系统: 中断控制器响应 INTR 引脚多CPU系统: 使用 APIC 模型发送消息到多个 CPU效率问题: 旧模型需要多个总线周期确定中断源PCI 错误处理奇偶校验: 地址和数据总线支持奇偶校验错误报告: 通过专用引脚 PERR# (数据奇偶错) 和 SERR# (系统错误)1.4 PCI 地址空间三种地址空间地址空间用途访问方式Memory内存映射外设可缓存、字节/块访问I/O旧式外设寄存器非缓存、字节访问Configuration设备配置寄存器配置访问特殊周期PCI 配置周期生成Type 0 配置请求: 读取/写入特定设备的配置寄存器Type 1 配置请求: 发送给 PCI-to-PCI 桥由桥判断是否下放到二级总线配置访问通过特殊的配置周期实现不同于普通内存/IO访问。1.5 PCI-X 特性Split-Transaction Model (分离事务)问题: PCI 的读写事务在完成前占用总线后续设备必须等待解决: PCI-X 将读请求和读数据响应分离发起者发送读请求后立即释放总线目标准备数据后重新申请总线并返回数据其他设备可在等待期间使用总线优势: 总线利用率大幅提高Message Signaled Interrupts (MSI)传统中断问题: 需要边带信号多设备共享复杂MSI 解决方案:外设通过写事务向特定地址发送中断消息无需边带中断信号支持多向量中断相比 PCI 的单一向量效率更高扩展性更好事务属性 (Transaction Attributes)No Snoop (NS)指示事务是否需要 CPU 缓存窥探NS1: 不需要窥探CPU 缓存不受影响更快Relaxed Ordering (RO)正常情况事务必须按顺序处理RO1: 允许乱序执行提高性能需要软件确保不产生数据相关性错误1.6 并行总线模型的共同时钟问题PCI/PCI-X 1.0 的共同时钟方法特点:所有设备共享同一个时钟源信号在每个时钟边沿采样限制了时钟频率的提升信号完整性问题问题:时钟偏移 (Clock Skew): 不同设备接收时钟的时间不同信号完整性: 高频下走线长度差异造成时序问题电磁干扰 (EMI): 并行信号同步切换产生噪声插槽数量受限: 反-wave signaling 限制了负载数量PCI-X 2.0 源同步模型改进- 将时钟与数据一起传输源同步但仍然受并行总线物理限制最终认识到串行总线是更好的方向关键知识点速记PCI 是并行共享总线最高 66 MHz64-bit 带宽 533 MB/sPCI-X 是 PCI 的扩展保持向后兼容引入分离事务和 MSI反射波信号是限制 PCI 频率和插槽数的物理原因Retry/Disconnect是 PCI 处理慢设备的两种协议PCI-X 分离事务解决了 PCI 读写期间总线占用的问题MSI通过写事务代替边带中断效率更高并行总线有频率上限无法无限提升串行总线是演进方向思考题为什么 PCI 频率提高后插槽数会减少PCI Retry 和 Disconnect 协议的区别是什么各在什么场景下使用分离事务模型相比 PCI 的阻塞读写有什么优势MSI 为什么比传统边带中断更高效从并行总线到串行总线主要解决了哪些物理层面的问题笔记结束