目录
PCIe的全称是Peripheral Component Interconnect Express,设计用于连接计算机内部的各种硬件设备,如显卡、网卡和存储控制器等。属于系统总线= 内总线。
转载链接:(5 封私信 / 4 条消息) PCIe(一) —— PCIe基础概念与设备树 - 知乎
1. PCIe总体框图
首先,我们先从PCIe的基本概念开始。PCIe的架构主要由五个部分组成:
- Root Complex, 整个PCIe设备树的根节点
- PCIe Bus, PCIe上的设备通过PCIe总线互相连接。
- Endpoint, 连接到PCIe总线上的Type 0设备(终端设备),都可以来实现PCIe的Endpoint
- Port and Bridge,
- Switch。
其整体架构呈现一个树状结构,如下图所示:
2. Root Complex(RC)
Root Complex是整个PCIe设备树的根节点,CPU通过它与PCIe的总线相连,并最终连接到所有的PCIe设备上。
3. PCIe总线(Bus)
PCIe上的设备通过PCIe总线互相连接。虽然PCIe是从PCI发展而来的,并且甚至有很多地方是兼容的,但是它与老式的PCI和PCI-X有两点特别重要的不同:
PCIe的总线并不是我们传统意义上共享线路的总线(Bus),而是一个点对点的网络,我们如果把PCI比喻成网络中的集线器(Hub),那么PCIe对应的就是交换机了。换句话说,当Root Complex或者PCIe上的设备之间需要通信的时候,它们会与对方直接连接或者通过交换电路进行点对点的信号传输。
4. PCIe Device
PCIe上连接的设备可以分为两种类型:
- Type 0:它表示一个PCIe上最终端的设备,比如我们常见的显卡,声卡,网卡等等。
- Type 1:它表示一个PCIe Switch或者Root Port。和终端设备不同,它的主要作用是用来连接其他的PCIe设备,其中PCIe的Switch和网络中的交换机类似。
5. Port / Bridge
那么其他的需要通过插槽连接的设备呢?这些设备就需要通过PCIe Port来连接了。
在Root Complex上,有很多的Root Port,这些Port每一个都可以连接一个PCIe设备(Type 0或者Type 1)。
6. Switch
如果我们需要连接不止一个设备怎么办呢?这时候就需要用到PCIe Switch了。
PCIe Switch内部主要有三个部分:
- 一个Upstream Port和Bridge:用于连接到上游的Port,比如,Root Port或者上游Switch的Downstream Port
- 一组Downstream Port和Bridge:用于连接下游的设备,比如,显卡,网卡,或者下游Switch的Upstream Port
- 一根虚拟总线:用于将上游和下游的所有端口连接起来,这样,上游的Port就可以访问下游的设备了
PCIe(Peripheral Component Interconnect Express)与 PHY(Physical Layer,物理层)连接是为了实现高速串行通信的完整协议栈。这种连接是 PCIe 接口设计的关键部分,主要目的是将数据从链路层(MAC 层)传输到物理介质上,并确保其能够可靠地在设备之间传输。
7.PCIE为什么需要与 PHY 连接?
1.PHY 是高速接口的“最后一公里”
- PCIe 协议分为三层:事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer);
- MAC(Media Access Control) 层负责数据包的封装、排序和错误检测等;
- PHY 层则负责:
- 将数字信号转换为模拟信号(发送端);
- 将模拟信号还原为数字信号(接收端);
- 实现电气接口标准(如电压、频率、阻抗匹配等);
📌 所以,MAC(如 PCIe 控制器)必须通过 PHY 来完成与外部世界的实际通信。
2.不同的应用场景需要不同的 PHY 类型
- PCIe 支持多种物理介质和接口类型,比如:
- 板载 PCB 走线(Chip-to-Chip);
- 高速电缆(如 AOC 主动光缆);
- 光纤(用于数据中心长距离连接);
- 每种介质都需要对应的 PHY 模块来适配电气特性。
📌 例如:
- 在服务器中使用光纤进行 PCIe Switch 互联时,会用到 100Gbps 或更高速率的 SerDes PHY 或光模块 PHY;
- 在 FPGA 或 ASIC 中实现 PCIe 接口时,通常会集成一个内置的高速 SerDes PHY。
3.标准化接口简化设计
-
PCIe MAC 和 PHY 之间通常通过标准接口连接,如:
-
PIPE(PHY Interface for PCI Express)接口;
-
GMII/RGMII(用于以太网,类似概念);
-
-
这样可以让 MAC 设计独立于具体的 PHY 实现,提升灵活性。
📌 举例:
-
FPGA 厂商可以提供通用 PCIe MAC IP 核;
-
用户可以根据需求选择不同厂商的 PHY IP 或硬件模块进行连接。
4.PCIe 与 PHY 的典型连接方式
组件 | 功能 |
---|---|
PCIe MAC | 数据封装、路由、流量控制 |
PIPE 接口 | 连接 MAC 和 PHY 的标准接口 |
SerDes PHY | 将并行数据串行化并通过差分对传输 |
外部介质 | 如 PCB 走线、高速线缆、光模块 |
DUT(Device Under Test,被测器件)
DUT(Design under Test)指待测试设计,即设计好的RTL(寄存器传输级)代码,是芯片验证的重点。
验证过程包括需求收集、子系统模块划分、功能模块细化、编写RTL级别的硬件描述语言文件,然后基于这些设计文件构建测试平台(Testbench),用于模拟和控制DUT的输入和环境。
验证工程师需要运用各种验证策略,如软件仿真、硬件仿真和原型验证等,来确保芯片设计符合规格要求。
UVM
- UVM是基于System Verilog的一种验证方法学,也可以看成是一个库,提供一系列的接口,可以利用UVM搭建验证平台,用于验证数字逻辑电路的正确性。
- 注意,UVM本身并不是一个验证平台,他只是一个库,而一个验证平台引入了UVM相关库,称为基于UVM的验证平台,或者简称为UVM验证平台。
- 支持UVM的EDA厂商:Cadence、Synopsys、Mentor…
Memory Compiler(内存编译器)
Memory Compiler(内存编译器)是由芯片工艺厂商提供的专用工具,用于自动生成不同容量、类型和性能的存储器模块(如SRAM、Register file等),并输出包含行为模型、时序库、版图文件等完整设计数据。
核心功能与输出内容
Memory Compiler通过输入参数(如存储深度、位宽、工艺角等)生成以下设计文件:
- 前端设计文件:Verilog行为模型,用于仿真验证;
- 逻辑综合文件:时序库(.lib/.db),供综合工具使用;
- 后端设计文件:电路网表、LEF/GDS版图文件,用于物理实现;
- 验证文档:DFT测试相关文件和datasheet手册。
存储器类型与选择
根据设计需求,Memory Compiler可生成以下主要类型:
- SRAM:面积优势显著,适合大容量存储,分为Single Port和Dual Port结构;1
- Register File:基于SRAM架构但读写端口更灵活,常用于高速小容量场景;2
- ROM:仅支持读取,无写入功能。3
性能权衡:High Speed型侧重速度,High Density型侧重面积优化。2
与手动设计的对比
对比维度 | Memory Compiler生成模块 | 手动综合寄存器组 |
---|---|---|
实现方式 | 专用SRAM单元+优化电路 | 标准单元(如D触发器)搭建 |
面积/功耗 | 更优(深度优化) | 较差 |
适用场景 | 位数较大时更具经济性 | 小规模存储或特殊定制需求 |
典型的存储器
在SoC中,存储器是决定性能的一个重要因素。在不同的SoC设计中,根据实际需要采用不同的存储器类型和大小。常用的存储器有 SRAM、SDRAM、DDRAM、FLASH 和 ROM。
SRAM(静态随机存储器)的特点是存储速度非常快,可以达到和处理器的时钟同步,而且SRAM存储器的接口简单,比较容易设计。SRAM 在系统中常常作为处理器的缓存。
但是一个通用的SRAM的每1位需要6个晶体管,因此比相同存储空间的RAM的面积大,在SOC中只能少量使用。
SDRAM(同步动态随机存储器)的价格低、体积小、容量大,是SOC中比较理想的存储器件。与SRAM 相比,SDRAM的控制逻辑复杂,速度较慢。SDRAM 每一个内存单元由一个能短暂存储电荷的电容器构成。由于动态内存单元容易失去电荷,因此容易失去存储在其中的数据。在 SDRAM中必须包括一个刷新电路,不断地刷新其中的电荷,使其值保持不变。
DDRAM(双倍传输速度随机存取存储器)采用双倍数据技术,支持在时钟的上升沿和下降沿同时进行数据传输,从而增加数据的吞吐量,其最大带宽可以达到 SDRAM的两倍,当然它的接口设计也更加复杂。
(SRAM是实现Cache的一种关键技术,Cache位于CPU和主存储器(通常是DRAM)之间,用来存放当前活跃的程序和数据,以减少CPU访问主存的延迟。Cache的工作原理基于程序的时间局部性和空间局部性,即程序在执行过程中会频繁访问最近使用过的数据和指令 )
ROM(只读存储器)是一种只读存储器,包括掩膜式 ROM、可编程 ROM(PROM)、可擦除可编程 ROM(EPROM)和可电擦除可编程 ROM(EEPROM)等。ROM 在SOC中一般用来存储固定的代码或资料。
FLASH(闪存)是价格性能兼顾的一种新型的不挥发存储器。它是 EPROM 和 EEPROM 工艺综合的产物,兼顾了这两类存储器的优点。FLASH 可以像 EEPROM那样进行电擦除和电编程,而且它编程所需要的时间也几乎与 EEPROM 相同,但是 FLASH 本身的成本却要比 EEPROM 低。
NOR FLASH 和 NAND FLASH 是现在市场上两种主要的 FLASH 存储器。NOR FLASH的特点是在芯片内可以直接运行程序,而不必再把代码读到系统 RAM 中。NOR的传输效率很高,但是写入和擦除速度较低,这就大大影响了它的性能。NAND FLASH能提供比较高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。NOR FLASH 的接口比较简单而 NAND FLASH 的接口则要复杂得多。
NAND Flash与NOR Flash的应用场景区分
- NOR Flash的应用场景:
- NAND Flash的应用场景:
PMU
PMU 是 Power Management Unit 的缩写,中文称为电源管理单元。它是一种专门用于管理和优化设备中电力供应的硬件模块或集成电路。