第四章:片上光互连架构:光网络拓扑与波分复用设计

各位同学,今天我们来聊聊片上光互连的核心——网络拓扑和波分复用。说实话,这部分内容是我在项目中踩坑最多的地方。光互连不像电互连,走线弯个直角可能就废了,拓扑选型直接影响芯片的功耗和延迟。

4.1 光网络拓扑:Mesh、Torus、Fat-Tree

先说说拓扑。我个人习惯把拓扑分成两类:直连拓扑间接拓扑。Mesh和Torus属于直连,每个节点直接跟邻居通信。Fat-Tree属于间接,需要经过中间交换机。

4.1.1 Mesh网络

Mesh是最直观的拓扑。想象一个二维网格,每个节点只跟上下左右四个邻居相连。我在第一个光计算芯片项目里就用的Mesh,为什么?因为布线简单,光波导可以横平竖直地走。

但Mesh有个致命问题:对角节点通信延迟高。比如左上角节点要跟右下角节点通信,得经过N跳。我曾经在8×8的Mesh上跑过数据,最坏延迟比平均延迟高了3倍多。

适用场景:节点数少(<64)、对延迟不敏感、对布线密度要求高的场景。

4.1.2 Torus网络

Torus其实就是Mesh加了个环绕连接。最左边和最右边连起来,最上边和最下边连起来。你想想看,这样任意两个节点的跳数最多只有Mesh的一半。

我记得有一次做64节点的光互连设计,用Mesh的话最坏跳数是14,换成Torus直接降到7。但代价是什么?布线复杂度翻倍。光波导要绕到芯片边缘再折回来,对版图布局是个挑战。

我的经验:如果芯片面积允许,优先考虑Torus。但要注意光波导的弯曲半径,我见过有人为了省面积把波导弯成90度直角,结果插损直接飙到3dB以上。

4.1.3 Fat-Tree网络

Fat-Tree是另一种思路。它用多层交换机把节点连起来,每层带宽逐级增加。说白了,就是让离得远的节点也能快速通信。

我曾经在32节点的光计算芯片上试过Fat-Tree。好处很明显:任意节点对之间的跳数固定(logN级)。但坏处也让人头疼:需要大量光交换单元,而且每层的光波导数量不一样,设计起来很麻烦。

拓扑类型 平均跳数(64节点) 布线复杂度 光波导总长 我的推荐
Mesh 5.3 小规模(<32节点)
Torus 3.5 中等规模(32-128节点)
Fat-Tree 2.0 大规模(>128节点)

4.2 波分复用(WDM)设计

WDM说白了就是在一根光波导里同时传多个不同波长的光信号。这玩意儿在电信领域用了很多年,但搬到芯片上,嗯,坑不少。

4.2.1 为什么需要WDM?

你想想看,如果每个通信链路都单独拉一根波导,那芯片上得有多少根线?我算过,64节点全互联需要2016根波导,芯片面积根本放不下。WDM可以把多个信号复用到一根波导上,面积直接节省一个数量级

4.2.2 波长分配策略

WDM设计最核心的问题:给每个信号分配什么波长?

我建议采用静态波长分配。就是提前规划好每个源节点到目的节点的波长。比如节点A到节点B用λ1,节点A到节点C用λ2。这样做的好处是光交换单元的控制逻辑简单,延迟低。

但静态分配有个问题:波长利用率低。如果节点A只跟节点B通信,那λ2就浪费了。我曾经在项目中试过动态波长分配,结果控制电路的面积比光器件还大,得不偿失。

避坑指南:我曾经在WDM设计中忽略了波长串扰。两个波长靠得太近,在微环谐振器里会互相干扰。建议波长间隔至少1nm,最好1.6nm(200GHz信道间隔)。

4.2.3 微环谐振器阵列设计

WDM的核心器件是微环谐振器。每个微环对应一个波长,通过热光效应或电光效应调谐。我一般用级联微环结构,每个微环只谐振一个波长,其他波长直通。

// 微环谐振器参数设计示例(Python伪代码)
# 假设工作波长范围:1530nm - 1565nm(C波段)
# 信道间隔:1.6nm(200GHz)
# 微环半径计算

import numpy as np

c = 3e8  # 光速
n_eff = 2.5  # 有效折射率(硅波导)
lambda_center = 1550e-9  # 中心波长
channel_spacing = 1.6e-9  # 1.6nm

# 计算微环半径
R = lambda_center / (2 * np.pi * n_eff)  # 约 98.7 μm

# 计算不同信道的微环半径
for i in range(8):
    lambda_i = lambda_center + i * channel_spacing
    R_i = lambda_i / (2 * np.pi * n_eff)
    print(f"信道{i}: 波长{lambda_i*1e9:.1f}nm, 半径{R_i*1e6:.2f}μm")

嗯,这里要注意:微环的Q值决定了波长选择性。Q值越高,波长选择性越好,但调谐范围也越小。我一般把Q值设在5000-10000之间,既能保证信道隔离度,又不会让调谐太难。

4.3 拓扑与WDM的协同设计

拓扑和WDM不是孤立的。我习惯把两者放在一起考虑:拓扑决定了WDM的复用度

比如在Mesh拓扑中,每个节点只有4个邻居,WDM只需要4个波长就够了。但在Fat-Tree中,一个交换机可能连接16个节点,那就需要16个波长。波长数越多,微环阵列的面积越大,插损也越大。

我的设计原则:先定拓扑,再算波长数,最后优化微环参数。如果波长数超过16,建议考虑多根波导并行,而不是一味增加波长数。

4.4 本章小结

好了,这一章的内容就这些。总结几个关键点:

  • 拓扑选型:小规模用Mesh,中等规模用Torus,大规模用Fat-Tree
  • WDM设计:静态波长分配更实用,波长间隔至少1.6nm
  • 微环设计:Q值5000-10000,注意波长串扰
  • 协同设计:拓扑决定波长数,波长数影响面积和插损

这些内容看起来简单,但真正做起来细节很多。我建议你们先拿一个8节点的Mesh练练手,把WDM的波长分配和微环参数调一遍,感受一下。

片上光互连架构知识体系 光网络拓扑 Mesh Torus Fat-Tree 波分复用(WDM) 波长分配 微环阵列 串扰控制 协同设计 拓扑→波长数 面积优化 插损预算 核心设计流程 1. 确定节点规模 → 选择拓扑(Mesh/Torus/Fat-Tree) 2. 计算最大跳数 → 确定WDM波长数 3. 设计微环阵列 → 优化Q值和信道间隔 4. 版图布局 → 考虑波导弯曲半径和插损

专注资料整理