Switch芯片设计学习路线:从RTL基础到高端数据中心交换芯片架构


1 前言

        Switch 芯片是数据中心、云计算、园区网络和运营商网络中的核心转发芯片。它需要在极高吞吐率下完成 Ethernet packet 的接收、解析、查表、缓存、调度、修改和发送。以 Broadcom BCM56980 为例,这是一颗 12.8 Tb/s 级别的高端多层交换芯片,支持最高 32 × 400GbE64 × 200GbE128 × 100GbE 的前面板端口能力,内部包含 256 × 50G PAM4 SerDes32 个 BlackhawkCore、8 条 pipeline 和 64 MB SmartBuffer

        对 RTL 设计工程师来说,学习 Switch 芯片设计不能只从协议开始,也不能只从某个单点模块开始。更合理的方式是:

先理解网络和交换芯片的基本概念
  -> 再训练 FIFO / CRC / ECC / width conversion / handshake 等 RTL 基础模块
  -> 再进入 MAC / packet stream / packet buffer / queue / scheduler
  -> 再学习 QoS / MMU / multi-pipeline / SerDes / 管理接口
  -> 最后通过一个简化 switch demo 把知识串起来

        本文结合 Broadcom BCM56980 datasheet 中公开的高端商用交换芯片信息,以及一个面向新员工训练的 RTL design skill 表,整理一套循序渐进的 Switch 芯片设计学习路线。目标不是一开始复刻 BCM56980,而是先掌握可实现、可验证、可扩展的简化模型,再逐步理解商用 Switch ASIC 的架构取舍。


2 基础概念和术语

        Switch 芯片文章中会频繁出现网络协议、芯片架构和 RTL 实现术语。为了方便后续阅读,本节先统一解释常用概念。

2.1 Ethernet 与 Packet

术语 含义
Ethernet / 以太网 最常见的二层网络技术,Switch 芯片主要处理 Ethernet frame
Frame / Packet 在二层通常称 frame,在芯片内部或更通用语境中常称 packet
MAC Media Access Control,可以指 MAC 地址,也可以指 Ethernet MAC 模块
FCS Frame Check Sequence,Ethernet frame 尾部的 CRC 校验字段
Jumbo Frame 超过标准 1518/1522 字节的较大 Ethernet frame,例如 9 KB 级别
SOP / EOP Start of Packet / End of Packet,表示 packet 起始和结束
Beat 宽数据总线上的一次传输,例如 512b datapath 上每拍一个 beat
Empty / Keep 表示 EOP beat 中哪些 byte 无效或有效

2.2 L2 / L3 / 查表转发

术语 含义
L2 Switching 根据目的 MAC 地址和 VLAN 进行二层转发
L3 Routing 根据 IP 地址进行三层路由转发
VLAN Virtual LAN,用于二层网络隔离
LPM Longest Prefix Match,最长前缀匹配,常用于 IP 路由表
ACL Access Control List,访问控制列表,用于包过滤、重定向、统计、限速等
ECMP Equal-Cost Multi-Path,多路径等价路由,常用于数据中心负载均衡
Multicast 组播,一个 packet 复制到多个目的端口或目的组

2.3 Buffer / Queue / MMU

术语 含义
Buffer 用于临时存放 packet 或 packet cell 的存储资源
Packet Buffer 存放 packet payload 的大容量片上存储
Cell 将 packet 切成固定大小片段后的基本 buffer 分配单位
Descriptor packet 描述符,记录 packet 起始地址、长度、目的端口、QoS 等 metadata
Queue 队列,通常存 descriptor,而不是直接存 payload
MMU Memory Management Unit,在 Switch 中通常负责 buffer、queue、admission、threshold 和 flow control
SmartBuffer Broadcom datasheet 中对高性能共享 packet buffer 的称呼
HOL Blocking Head-of-Line Blocking,队头阻塞问题
VOQ Virtual Output Queue,为不同输出目的维护独立队列以缓解 HOL blocking

2.4 QoS / 调度 / 流控

术语 含义
QoS Quality of Service,服务质量,决定不同流量的优先级、带宽和丢弃策略
Scheduler 调度器,从多个 queue 中选择下一个发送的 packet
RR Round Robin,轮询调度
WRR Weighted Round Robin,带权轮询
DRR Deficit Round Robin,适合变长 packet 的调度算法
SP Strict Priority,严格优先级调度
Shaper 整形器,限制流量输出速率
Token Bucket 令牌桶,常用于 shaper 和 policer
WRED Weighted Random Early Discard,基于队列深度的随机早期丢弃
ECN Explicit Congestion Notification,显式拥塞通知,拥塞时标记而不是直接丢包
PFC Priority-based Flow Control,基于优先级的无损流控
ETS Enhanced Transmission Selection,为不同 traffic class 提供带宽保证

2.5 SerDes / MAC / PCS

术语 含义
SerDes Serializer / Deserializer,高速串并转换接口
NRZ 两电平信号,每个 symbol 表示 1 bit
PAM4 四电平信号,每个 symbol 表示 2 bit,常用于 50G lane
PCS Physical Coding Sublayer,位于 MAC 和 PMA/SerDes 之间,负责编码、lane 对齐、FEC 等
FEC Forward Error Correction,前向纠错,高速链路中用于降低误码影响
Lane 高速串行通道,一个 400G 端口通常由多个 lane 聚合
Flexport 运行时改变端口速率、lane 数和逻辑端口映射的能力

2.6 RTL 与验证术语

术语 含义
Valid / Ready 数据流握手协议,valid && ready 表示传输成功
Request / Grant 仲裁类握手,request 表示申请,grant 表示被授权
Credit 信用流控,下游预先给上游可发送额度
CDC Clock Domain Crossing,跨时钟域
FIFO First In First Out,先进先出队列
Free List 空闲资源链表或队列,用于管理可分配 buffer
Banking 将 memory 拆成多个 bank,提高并行访问能力
Backpressure 反压,下游资源不足时通知上游暂停发送
Throughput 吞吐率,单位时间内可处理的数据量
Latency 延迟,从输入到输出经历的时间

3 Switch 芯片的整体数据流

        一个典型以太网 Switch ASIC 的 datapath 可以简化为:

RX SerDes
  -> PCS
  -> MAC RX
  -> Ingress Parser
  -> VLAN / L2 / L3 / ACL / QoS Classification
  -> Buffer Admission
  -> Packet Buffer / MMU / Queue
  -> Scheduler
  -> Egress Modification
  -> MAC TX
  -> PCS
  -> TX SerDes

        从 RTL 视角看,它本质上是一条围绕 packet metadata 和 payload 展开的深流水线。payload 通常进入共享 packet buffer,metadata 则沿 pipeline 传递并最终形成 descriptor。descriptor 进入 queue 后,由 egress scheduler 决定何时读出 payload 并发送到对应 TX 端口。

Switch芯片典型数据流占位图

image2 prompt:绘制一张现代数据中心 Ethernet Switch ASIC 数据流架构图,横向从左到右,包含 RX SerDes、PCS、MAC RX、Ingress Parser、L2/L3 Lookup、ACL/QoS、MMU Admission、Shared Packet Buffer、Queue、Scheduler、Egress Pipeline、MAC TX、PCS、TX SerDes。风格为清晰的技术框图,蓝灰色主题,适合博客文章,标注 ingress、MMU、egress 三个大区域。

        BCM56980 datasheet 中的总体能力可以作为学习目标的参照:

项目 BCM56980 公开资料中的特征
总带宽 12.8 Tb/s
典型端口 32 × 400G、64 × 200G、128 × 100G
SerDes 256 × 50G PAM4
SerDes Core 32 个 BlackhawkCore,每个 8 lane
Pipeline 8 条 pipe,每条 pipe 承担约 1/8 总吞吐
Buffer 64 MB SmartBuffer
Queue 每端口 12 个 queue
转发能力 L2、L3、IPv4、IPv6、ECMP、MPLS、GRE 等
QoS WRED、ECN、PFC、ETS、Shaper、Scheduler
管理接口 PCIe、MDIO、BSC/I2C、JTAG、LED、QSPI、SPI、UART
时间同步 IEEE 1588v2、802.1AS、SyncE、BroadSync

4 学习路线总览

        Switch 芯片设计可以按八个阶段学习:

Phase 0:网络与交换芯片基础
Phase 1:RTL 基础模块能力
Phase 2:MAC / Packet Stream 数据通路
Phase 3:Packet Buffer / Queue / MMU
Phase 4:调度算法与 QoS
Phase 5:Switch Pipeline 架构
Phase 6:SerDes / PCS / 高速接口理解
Phase 7:管理接口与系统集成
Phase 8:完整 Demo Switch 项目

        对应关系如下:

阶段 学习重点 目标产出
Phase 0 Ethernet、L2/L3、VLAN、QoS、Switch datapath 画出 switch 总体架构图
Phase 1 FIFO、Free List、CRC、ECC、Width Conversion、Handshake 完成基础 RTL module 和 testbench
Phase 2 512b packet stream、MAC wrapper、SOP/EOP/empty 能处理 packet 流
Phase 3 Descriptor queue、packet buffer、banked memory、MMU admission 完成 payload 和 descriptor 解耦
Phase 4 RR/WRR/DRR/SP、WRED、ECN、Shaper 完成 QoS 和调度模块
Phase 5 Multi-pipeline、crossbar、VOQ、Clos 理解高带宽可扩展架构
Phase 6 PAM4、NRZ、FEC、lane aggregation、Flexport 理解高速端口实现方式
Phase 7 PCIe、MDIO、I2C、JTAG、LED、QSPI、寄存器 理解控制面和系统集成
Phase 8 8 × 100G simplified switch demo 形成完整训练项目

Switch学习路线占位图

image2 prompt:绘制一张 Switch 芯片设计学习路线图,采用从下到上的阶梯或路线图形式,包含 Phase 0 网络基础、Phase 1 RTL基础、Phase 2 MAC/Packet Stream、Phase 3 Packet Buffer/MMU、Phase 4 Scheduler/QoS、Phase 5 Multi-Pipeline/Fabric、Phase 6 SerDes/PCS、Phase 7 Management Interfaces、Phase 8 Demo Switch Project。风格简洁、工程技术感、蓝绿色配色,适合中文技术博客。


5 Phase 0:网络与交换芯片基础

        第一阶段不急着写 RTL,而是先理解 Switch 芯片要解决什么问题。最基本的问题是:一个 packet 从某个 RX 端口进来后,芯片如何判断它应该从哪个 TX 端口出去。

5.1 必须理解的网络基础

主题 学习目标
Ethernet frame 理解 DA、SA、EtherType、payload、FCS
MAC learning 理解二层交换如何学习源 MAC 和查找目的 MAC
VLAN 理解端口隔离和 VLAN tag
L2 switching 理解基于 MAC/VLAN 的转发
L3 routing 理解基于 IP lookup 的转发
ACL 理解基于字段匹配的过滤、统计、重定向
ECMP 理解多路径负载均衡
Multicast 理解 packet replication
Cut-through / Store-and-forward 理解低延迟和完整校验之间的取舍

5.2 建议阅读 BCM56980 datasheet 的章节

Datasheet 部分 阅读重点
Overview 芯片定位和总体能力
Chapter 1 Introduction 设备族、端口和 PCIe 基础
Chapter 2 Device Overview feature list、scalability、table size
Table 1 / Table 2 不同 SKU 的 I/O bandwidth 和端口能力
Table 3 L2、L3、QoS、MMU、ACL、telemetry 等功能
Table 4 SerDes 数量、buffer size、MAC entries、VLAN、VRF、ECMP 等规模
Chapter 3 外部接口和 SerDes 组织方式

5.3 本阶段输出

        建议完成三份学习笔记:

  1. BCM56980 feature summary
  2. Switch packet datapath overview
  3. L2/L3/QoS/MMU 术语表

6 Phase 1:RTL 基础模块能力

        Switch 芯片看起来很复杂,但底层是大量基础 RTL 模块的组合。学习顺序建议从最常见、最容易复用的模块开始。

6.1 FIFO

        FIFO 是 Switch 芯片里出现频率最高的基础结构之一。它用于 pipeline 解耦、速率匹配、CDC、request buffering 和 descriptor queue。

学习目标:

建议小项目:

Async FIFO + performance test

覆盖场景:

6.2 Free List 和 Linked List

        Switch packet buffer 通常不会为每个 packet 固定分配最大长度空间,而是把 buffer 切成 cell 或 line,由 free list 管理空闲资源。

典型结构:

free_list_head
free_list_tail
next_ptr_sram[cell_id]

queue_head[qid]
queue_tail[qid]

建议小项目:

Global free pool + per-queue linked list

需要支持:

Free List与Packet Cell链表占位图

image2 prompt:绘制 packet buffer free list 和 per-queue linked list 的示意图。左侧是 global free pool,包含多个 cell_id,通过 next_ptr 串联;右侧是多个 queue,每个 queue 有 head/tail pointer,packet 由多个 cell 链接组成;底部显示 next_ptr SRAM。技术框图风格,清晰标注 alloc、free、enqueue、dequeue。

6.3 Memory Banking

        高带宽 Switch 芯片不能依赖单块大 memory,因为多端口同时读写会造成端口数和带宽不可实现。Banking 的思想是把 memory 拆成多个 bank,通过地址 interleave、hash 或仲裁提高并行访问能力。

学习重点:

建议小项目:

128 request -> 64 bank conflict simulation

输出:

6.4 CRC 和 ECC

        CRC 用于 packet 级完整性检查,ECC 用于 memory 级错误检测和纠正。

CRC 建议项目:

CRC32 512b parallel generator/checker

重点:

ECC 建议项目:

SRAM + SECDED ECC model

重点:

6.5 Data Align 和 Width Conversion

        Switch datapath 中经常需要不同数据宽度转换,例如:

64b -> 256b
256b -> 512b
512b -> 2048b
2048b -> 512b

建议小项目:

packet align module: 512b -> 2048b

需要处理:

6.6 Handshake 和 Backpressure

        Switch 内部大量使用 valid/readyrequest/grantcredit。如果握手语义不清楚,后续 queue、buffer、scheduler 都容易出错。

必须掌握:

valid && ready = transfer
request && grant = arbitration success
credit > 0 = allowed to send

建议小项目:

credit-based flow control system

7 Phase 2:MAC 和 Packet Stream 数据通路

        第二阶段的目标是建立 packet-based streaming datapath 的设计能力。建议先统一内部 packet stream 接口,再逐步从 25G、50G、100G 理解到 200G/400G。

7.1 推荐统一 Packet Stream 接口

logic          valid;
logic          ready;
logic [511:0]  data;
logic          sop;
logic          eop;
logic [5:0]    empty;  // 或使用 keep[63:0]

含义:

信号 含义
valid 当前 beat 有效
ready 下游可以接收
data packet 数据
sop 当前 beat 是 packet 起始
eop 当前 beat 是 packet 结束
empty EOP beat 中无效 byte 数量

7.2 从 25G 到 100G MAC

        对学习来说,25G MAC 更适合理解基础 Ethernet frame,100G MAC 更适合理解宽 datapath 和吞吐压力。

速率 学习重点
25G MAC RX/TX FSM、preamble、SFD、FCS、IPG
50G 位宽和时钟权衡、PAM4 lane 概念
100G 512b datapath、CRC pipeline、SOP/EOP/empty、backpressure
200G 多 lane merge、elastic buffer、pipeline 切分
400G 8 lane 聚合、FEC、lane alignment、超高吞吐架构

7.3 BCM56980 的端口模式参考

        BCM56980 的 BlackhawkCore 每个 core 有 8 条 SerDes lane,每条 lane 可支持 10.3125 Gb/s 到 53.125 Gb/s 范围的速率。不同端口速率通过 lane aggregation 实现。

端口速率 典型 lane 数 Signaling 说明
10G 1 NRZ legacy Ethernet
25G 1 NRZ 常见 server 接口
50G 1 PAM4 50G lane
100G 2 或 4 PAM4 / NRZ 2 × 50G PAM4 或 4 × 25G NRZ
200G 4 PAM4 4 × 50G
400G 8 PAM4 8 × 50G

端口速率与SerDes Lane聚合占位图

image2 prompt:绘制 Ethernet switch 中端口速率与 SerDes lane 聚合关系图。展示 50G=1 lane PAM4,100G=2 lane PAM4,200G=4 lane PAM4,400G=8 lane PAM4。右侧画一个 BlackhawkCore,内部 8 条 SerDes lane,可组成一个 400G port 或多个 100G/50G port。风格为清晰硬件架构示意图。


8 Phase 3:Packet Buffer、Queue 和 MMU

        Packet Buffer / Queue / MMU 是 Switch 芯片的核心。前端 MAC 负责收包,后端 MAC 负责发包,而中间的 MMU 决定 packet 是否能被接收、存在哪里、进入哪个 queue、何时被调度出去。

8.1 Queue 存 Descriptor,不直接存 Payload

        推荐从一开始就建立这个架构观念:

Queue stores descriptor
Memory stores payload

也就是:

packet payload -> packet memory
packet metadata -> descriptor FIFO

这样可以把 queue 管理和 payload 存储解耦。

Descriptor Queue与Payload Memory解耦占位图

image2 prompt:绘制 descriptor queue 与 payload memory 解耦架构图。Ingress packet 被拆成 metadata 和 payload,payload 写入 banked packet memory,metadata 形成 descriptor 进入 queue。Egress scheduler 从 queue 取 descriptor,再根据 start_line_id 从 packet memory 读 payload。标注 descriptor 字段:qid、src_port、dst_port、start_line_id、line_count、pkt_len。

8.2 Packet Descriptor 字段

建议 descriptor 包含:

字段 位宽建议 含义
qid 3 queue id
src_port 3 源端口
dst_port 3 目的端口
start_line_id 12 ~ 16 packet 首地址
line_count 8 ~ 12 占用多少个 memory line
pkt_len_bytes 16 packet byte length
last_line_valid_bytes 8 最后一行有效字节数
drop_pri optional 丢弃优先级
tc optional traffic class

8.3 Packet Memory Line 接口

        为了训练 512b 到 2048b 的 pack/unpack,packet memory 可以先设计成 2048b line:

logic          wr_req;
logic [1:0]    wr_bank;
logic [ADDR_W-1:0] wr_addr;
logic [2047:0] wr_data;
logic [255:0]  wr_keep;
logic          wr_last;

logic          rd_req;
logic [1:0]    rd_bank;
logic [ADDR_W-1:0] rd_addr;
logic [2047:0] rd_data;
logic          rd_valid;

8.4 MMU 中需要关注的问题

问题 说明
Admission control packet 进来时是否允许写入 buffer
Buffer allocation 从 free list 分配 line/cell
Queue threshold 根据 queue depth 决定是否反压或丢弃
Shared buffer 多端口共享 buffer,提高利用率
Static / dynamic allocation 固定保留和动态共享的折中
HOL prevention 避免一个拥塞输出阻塞其他输出
Statistics 统计 queue depth、drop count、occupancy

9 Phase 4:调度算法与 QoS

        QoS 决定了拥塞时谁先发、谁被限速、谁被丢弃。Switch 芯片中 QoS 通常横跨 ingress admission、MMU queue 和 egress scheduler。

9.1 RR / WRR / DRR / SP

算法 特点 适用场景
RR 简单公平轮询 等权 queue
WRR 按权重分配服务机会 固定权重带宽分配
DRR 使用 deficit counter,适合变长 packet packet 长度差异较大
SP 高优先级绝对优先 控制流量、低延迟业务

DRR 的核心伪代码:

for each queue q:
    deficit[q] += quantum[q]
    if queue[q].head_pkt_len <= deficit[q]:
        send packet
        deficit[q] -= head_pkt_len

9.2 WRED:Ingress Admission Control

        WRED 位于 enqueue side,本质是 admission control。它根据 queue depth 提前随机丢包,避免 buffer 完全填满后出现全局拥塞。

depth < min_th       -> no drop
min_th ~ max_th      -> random drop
depth >= max_th      -> drop

建议简化实现:

drop_prob = f(queue_depth, min_th, max_th, max_p);
drop      = random_value < drop_prob;

9.3 Shaper:Egress Service Control

        Shaper 位于 dequeue side,本质是控制服务速率。最常见实现是 token bucket。

token += rate
if token >= pkt_len:
    send packet
    token -= pkt_len
else:
    hold

9.4 WRED 和 Shaper 的位置区别

模块 位置 作用
WRED Ingress / enqueue side 决定 packet 是否进入 queue
Shaper Egress / dequeue side 决定 queue 何时被服务
Scheduler Egress side 多个 queue 中选择哪个先发
Policer 通常 ingress side 判断流量是否超约束,可能 drop/mark

WRED与Shaper位置占位图

image2 prompt:绘制 Switch QoS 中 WRED 和 Shaper 的位置示意图。左侧 Ingress packet 进入 WRED admission control,WRED 根据 queue depth 决定 admit/drop;中间是 Queue 和 Packet Buffer;右侧 Egress Scheduler 和 Token Bucket Shaper 控制 dequeue 到 TX MAC。用不同颜色标出 enqueue side 和 dequeue side。


10 Phase 5:Switch Pipeline 和 Fabric 架构

        当总带宽达到 Tb/s 级别时,单条 pipeline 无法承载所有端口。因此高端 Switch ASIC 通常拆成多个 pipe。BCM56980 就是 8-pipe 架构,每个 pipe 处理约 1.6 Tb/s I/O 带宽。

10.1 为什么需要 Multi-Pipeline

主要原因:

10.2 BCM56980 的 Pipe 与 SerDes 关系

可以用下面的方式理解:

32 BlackhawkCore
每个 BlackhawkCore = 8 × 50G SerDes lane

每 pipe 4 个 BlackhawkCore:
4 × 8 × 50G = 1.6 Tb/s

8 pipe:
8 × 1.6 Tb/s = 12.8 Tb/s

BCM56980多Pipe架构占位图

image2 prompt:绘制 BCM56980 风格的多 pipeline switch 架构概念图。显示 8 个 Pipe,从 Pipe0 到 Pipe7;每个 Pipe 连接 4 个 BlackhawkCore,每个 BlackhawkCore 内部有 8 条 50G SerDes lane;中间连接到 shared MMU/Fabric/packet buffer 概念模块。标注每 pipe 约 1.6Tb/s,总计 12.8Tb/s。风格为专业芯片架构图。

10.3 Crossbar、VOQ 和 Clos

        如果 packet 从 pipe0 进入,但目的端口在 pipe5,就需要内部 fabric 或 crossbar 完成跨 pipe 转发。

需要逐步学习:

架构 学习重点
Crossbar input/output arbitration、grant matrix
iSLIP 高效 input queued switch matching
VOQ 为每个输出维护虚拟队列,缓解 HOL blocking
Clos Network 多级交换结构,提高扩展性
Multi-stage Fabric 分阶段传输,平衡 latency 和 wiring

建议小项目:

4-pipe mini switch + central crossbar

11 Phase 6:SerDes、PCS、FEC 和 Flexport

        对 RTL 工程师来说,SerDes 模拟细节不一定要完全掌握,但必须理解高速端口如何从 lane 组合出来,以及 PCS/FEC 对 datapath 的影响。

11.1 NRZ 和 PAM4

项目 NRZ PAM4
电平数 2 4
每 symbol bit 数 1 2
信噪比要求 较低 较高
电路复杂度 较低 较高
常见速率 10G / 25G 50G / 100G / 200G / 400G

11.2 FEC

        PAM4 链路误码率相对更高,因此高速 Ethernet 端口通常需要 FEC。BCM56980 datasheet 中提到支持 RS528、RS544、RS272、BASE-R 等 FEC 相关模式。

学习重点:

11.3 Flexport

        Flexport 指运行时改变端口速率和 lane 配置的能力。例如同一个 8-lane SerDes core,可以配置成:

1 × 400G
2 × 200G
4 × 100G
8 × 50G

但实际商用芯片中还会受到 PLL、VCO、FEC、lane grouping、SDK logical port mapping 等限制。


12 Phase 7:管理接口与系统集成

        Switch ASIC 不只有 datapath,还需要控制面和管理面。Host CPU 需要通过寄存器配置端口、读取状态、设置表项、收发 CPU packet。

12.1 BCM56980 中常见管理接口

接口 作用
PCIe Gen3 x4 Host CPU 访问寄存器、表项和 DMA packet
MDIO / MIIM 管理外部 PHY
BSC / I2C 访问板级器件、VRM、电源管理
JTAG 边界扫描和 debug
LED 端口状态灯控制
QSPI boot firmware
SPI 外设控制
UART 内部 mHost 或 1588 相关调试
BroadSync 时间同步
SyncE 频率同步

12.2 建议学习顺序

  1. APB / AXI-lite register file;
  2. counter 和 sticky status;
  3. interrupt;
  4. MDIO Clause 22 / Clause 45;
  5. I2C/BSC master;
  6. packet DMA 概念;
  7. PCIe register access 架构;
  8. JTAG boundary scan 概念。

12.3 Switch Register Block 示例

switch_reg_block
├── port_enable[port]
├── port_speed[port]
├── queue_threshold[qid]
├── wred_min_th[qid]
├── wred_max_th[qid]
├── shaper_rate[qid]
├── shaper_bucket_size[qid]
├── drop_counter[qid]
├── tx_packet_counter[port]
└── rx_packet_counter[port]

13 Phase 8:8 × 100G Simplified Switch Demo

        最推荐的训练项目是一个简化但完整的 8 × 100G Switch。它不实现完整 L2/L3 lookup,而使用固定转发规则,但保留 Switch datapath 中最核心的 buffer、queue、QoS 和 scheduler 机制。

13.1 Demo 目标

8 个 100G RX
8 个 100G TX
512b datapath
4-bank packet memory
8 个 queue
descriptor queue
WRED
Shaper
固定转发规则

固定转发关系:

RX0 -> Queue1 -> TX1
RX1 -> Queue2 -> TX2
RX2 -> Queue3 -> TX3
RX3 -> Queue4 -> TX4
RX4 -> Queue5 -> TX5
RX5 -> Queue6 -> TX6
RX6 -> Queue7 -> TX7
RX7 -> Queue0 -> TX0

也就是:

dst_qid = (src_port + 1) % 8;
tx_port = dst_qid;

13.2 推荐 Module Hierarchy

demo_switch_top
├── mac_rx_port[8]
├── mac_tx_port[8]
├── ingress_pipe[8]
│   ├── rx_route
│   ├── ing_wred
│   ├── pkt_assemble_512_to_2048
│   └── ingress_enq
├── queue_mgr
│   ├── q_desc_fifo[8]
│   └── q_depth_counter[8]
├── buffer_mgr
│   ├── free_list_mgr
│   └── bank_alloc_arb
├── pkt_mem_subsys
│   ├── pkt_mem_bank[4]
│   ├── pkt_mem_wr_arb
│   ├── pkt_mem_rd_arb
│   └── pkt_disassemble_2048_to_512
└── egress_pipe[8]
    ├── eg_shaper
    ├── egress_sched
    ├── egress_deq
    └── tx_formatter

8x100G Demo Switch模块层次占位图

image2 prompt:绘制 8x100G simplified switch demo 的模块层次图。顶层 demo_switch_top,包含 mac_rx_port[8]、mac_tx_port[8]、ingress_pipe[8]、queue_mgr、buffer_mgr、pkt_mem_subsys、egress_pipe[8]。ingress_pipe 内含 rx_route、ing_wred、pkt_assemble_512_to_2048、ingress_enq;queue_mgr 内含 q_desc_fifo[8] 和 q_depth_counter[8];pkt_mem_subsys 内含 4 个 packet memory bank、read/write arbiter 和 disassemble。清晰的树状结构技术图。

13.3 Ingress 数据流

MAC RXi
  -> rx_route[i]
  -> ing_wred[q=(i+1)%8]
  -> pkt_assemble_512_to_2048[i]
  -> ingress_enq[i]
  -> buffer_mgr alloc line
  -> pkt_mem_bank[bank_id] write
  -> generate packet descriptor
  -> push descriptor into Queue[(i+1)%8]

13.4 Egress 数据流

Queue[i]
  -> eg_shaper[i]
  -> egress_sched[i]
  -> egress_deq[i]
  -> pkt_mem_bank[bank_id] read
  -> pkt_disassemble_2048_to_512
  -> tx_formatter[i]
  -> MAC TXi
  -> buffer_mgr free line

13.5 分阶段实现

Demo Phase 1:先跑通 packet path

暂时不做 WRED、Shaper 和复杂 bank conflict,只要求 packet 从 RX 到 TX 内容正确。

验收标准:

Demo Phase 2:加入 Buffer Manager

实现:

Demo Phase 3:加入 WRED

支持参数:

min_th
max_th
max_p

验收标准:

Demo Phase 4:加入 Shaper

支持参数:

token_rate
bucket_size

验收标准:

Demo Phase 5:性能和 Corner Case

测试内容:


14 与 BCM56980 架构的对应关系

        Demo 不是 BCM56980 的实现,但可以作为理解商用 Switch ASIC 的抽象模型。

Demo 模块 BCM56980 对应概念
mac_rx_port / mac_tx_port 10G/50G/100G/200G/400G MAC
pkt_assemble / pkt_disassemble 高速 datapath width conversion
buffer_mgr SmartBuffer resource allocation
free_list_mgr cell / line free pool
q_desc_fifo MMU queue
q_depth_counter queue occupancy / MMU statistics
ing_wred WRED admission control
eg_shaper egress shaping
egress_sched SP / RR / WRR / WDRR scheduler
pkt_mem_bank banked packet buffer
rx_route L2/L3 lookup 的简化替代
descriptor internal packet metadata
backpressure PFC / HOL / MMU threshold 的基础机制

15 推荐学习时间表

        如果每周投入 8 ~ 12 小时,可以按 20 周左右规划。

第 1 ~ 2 周:Switch 基础和 Datasheet 阅读

学习内容:

输出:

第 3 ~ 5 周:RTL 基础模块

实现:

第 6 ~ 8 周:Packet Buffer / Queue

实现:

第 9 ~ 11 周:QoS / Scheduler

实现:

第 12 ~ 16 周:8 × 100G Demo Switch

实现完整 demo:

8 RX
8 TX
512b stream
2048b packet memory
4 bank memory
8 queue
WRED
Shaper

第 17 ~ 20 周:高级架构

学习:

小项目:

4-pipe mini switch + crossbar

16 优先级建议

        如果时间有限,可以按 P0 / P1 / P2 分层。

16.1 P0:必须掌握

FIFO
valid/ready
packet stream
SOP/EOP/empty
CRC
descriptor queue
packet buffer
free list
memory banking
RR/WRR scheduler
WRED
token bucket shaper

16.2 P1:进阶掌握

DRR
VOQ
crossbar
ECN
PFC
linked-list cell buffer
multi-pipeline
L2 lookup
L3 lookup
ACL TCAM

16.3 P2:架构理解即可

PAM4 SerDes
FEC
PCIe Gen3
BroadSync
IEEE 1588
SyncE
thermal / power / AVS
package / ballout

17 如何阅读 BCM56980 Datasheet

        Datasheet 不建议从第一页逐字读到最后,而应按目标分层阅读。

17.1 第一遍:看架构和能力

重点:

问题:

  1. 芯片支持多少总带宽?
  2. 有多少 SerDes?
  3. 有多少 pipe?
  4. 每个 pipe 大约多少带宽?
  5. 支持哪些 L2/L3/QoS 功能?
  6. Buffer 多大?
  7. Queue 和 table size 到什么规模?

17.2 第二遍:看端口和 SerDes

重点:

问题:

  1. 400G 为什么是 8 lane?
  2. 200G 为什么是 4 lane?
  3. 100G 有哪些模式?
  4. PAM4 和 NRZ 如何共存?
  5. FEC 有哪些限制?
  6. Flexport 改速时有哪些约束?

17.3 第三遍:看系统接口

重点:

问题:

  1. Host CPU 如何控制 switch?
  2. PHY 如何管理?
  3. boot firmware 从哪里加载?
  4. LED 状态如何输出?
  5. PTP/1588 需要哪些接口?

17.4 第四遍:看电源、时钟、热

重点:

问题:

  1. 为什么 12.8T switch 功耗高达数百瓦?
  2. 为什么需要 AVS?
  3. 为什么需要复杂散热?
  4. 哪些 reference clock 是必须的?
  5. SerDes reference clock jitter 为什么要求很严?

18 总结

        Switch 芯片设计的学习难点在于它横跨网络协议、RTL 基础模块、高速数据通路、buffer/MMU、QoS、SerDes、系统接口和验证方法。比较有效的学习方式不是直接试图理解完整商用芯片,而是沿着下面这条主线逐步搭建能力:

FIFO
  -> valid/ready stream
  -> CRC32
  -> 512b packet parser
  -> 512b to 2048b aligner
  -> descriptor FIFO
  -> free list buffer manager
  -> banked packet memory
  -> queue manager
  -> RR/WRR scheduler
  -> WRED
  -> token bucket shaper
  -> 8-port demo switch
  -> multi-pipeline / crossbar
  -> 对照 BCM56980 datasheet 理解商用架构

        这条路线的核心思想是:先用可控规模的 RTL demo 建立 packet datapath、buffer、queue 和 QoS 的工程直觉,再回头阅读 BCM56980 这类高端 Switch ASIC datasheet,理解为什么商用芯片需要 8 pipe、256 条 50G PAM4 SerDes、SmartBuffer、复杂 QoS、Flexport、PCIe 管理面和严格的电源/热设计。


19 参考资料

  1. Broadcom BCM56980 Data Sheet: 12.8 Tb/s Multilayer Switch
    https://www.broadcom.com/products/ethernet-connectivity/switching/strataxgs/bcm56980-series

  2. IEEE 802.3 Ethernet Working Group
    https://www.ieee802.org/3/

  3. IEEE 802.1Q VLAN / Bridging Standards
    https://www.ieee802.org/1/

  4. RFC 2697: A Single Rate Three Color Marker
    https://www.rfc-editor.org/rfc/rfc2697

  5. RFC 2698: A Two Rate Three Color Marker
    https://www.rfc-editor.org/rfc/rfc2698

  6. RFC 3168: The Addition of Explicit Congestion Notification to IP
    https://www.rfc-editor.org/rfc/rfc3168

  7. RFC 3176: InMon Corporation’s sFlow
    https://www.rfc-editor.org/rfc/rfc3176

  8. McKeown, N. “The iSLIP Scheduling Algorithm for Input-Queued Switches”
    https://tiny-tera.stanford.edu/~nickm/papers/islip.pdf

  9. Shreedhar, M., Varghese, G. “Efficient Fair Queuing using Deficit Round Robin”
    https://www.cs.umd.edu/~shankar/417-F01/Slides/chapter-7b.pdf

  10. W. J. Dally, B. Towles, Principles and Practices of Interconnection Networks
    https://www.sciencedirect.com/book/9780122007514/principles-and-practices-of-interconnection-networks

  11. AXI4-Stream Protocol Specification, Arm AMBA
    https://developer.arm.com/documentation/ihi0051/latest/

  12. 本文参考的内部学习表格:basic design skill.xlsx,包括 FIFO、Free List、CRC、ECC、Width Conversion、Scheduler、QoS、Packet Buffer、MAC 和 Demo Switch Training Project 等训练主题。

Back to Archive
WeChat QR Code

Scan to connect