他顿了顿,手指在图纸上敲了敲:“但是我觉得,这个方案不够用。”
钱兰在旁边把文件袋打开,从里面抽出一沓更厚的资料,是她昨晚写的分析报告,字迹密密麻麻,还有好几张手绘的对比图。
“我两算了一下,”她翻开其中一页,“如果只是做简单的数据共享,星型结构够了。但咱们要跑的是集成电路辅助设计,逻辑图、版图、标准单元库、仿真结果,这些东西不是只读的,是协同的。”
她指着纸上的一行数据:“一台机器改了一个单元库的版图,所有其他机器必须立刻访问到最新版本。否则,你改的是第一版,我用的还是旧版,画出来的版图全是错的。星型结构能保证单一数据源,这是它的优点,我没意见。”
诸葛彪接话:“但星型网搞不定并行计算。”
他拿过钱兰手里的笔,在图纸空白处画了一个简图,把一个大方块切成四块。
“一个大电路的仿真,拆成四块,四台机器同时算。每台机器算自己那一块,算到边界的时候,要和邻居交换数据。甲算完了边界,要把结果传给乙,乙才能接着算。星型结构里,甲要把数据先传回存储柜,乙再从存储柜读出来。一来一回,延迟翻倍。如果四台机器同时算,存储柜就成了瓶颈,大家都在等。”
这章没有结束,请点击下一页继续阅读!
他把笔放下,看着吕辰:“所以我想了一个方案。混合拓扑。”
吕辰没说话,等着他往下讲。
诸葛彪拿起笔,在图纸上画了起来。
先在中心画了一个大方块,周围画了一圈小方块,每条线都连到中心。
这是理论组的方案。
然后他在小方块之间又加了一条线,把小方块一个接一个串起来,最后连成一个闭合的圆圈。
“星型加环型。”他指着那条圆圈,“所有kj-oa直连存储柜,保证数据一致性。同时,用一根环状总线把所有kj-oa串在一起,节点间可以直接通信,不用经过存储柜。并行计算的时候,边界数据在环上走,低延迟,高带宽。”
吕辰盯着那张图看了很久。
星型负责静态数据,环型负责动态通信。
两个功能分离,互不干扰,单张网络的设计复杂度大大降低。
设计两张功能单一的专用网,远比设计一张能同时完美处理两种流量模式的复杂网络要现实得多。
他点了点头:“这个方案可行!”
钱兰翻开自己的笔记本,上面密密麻麻列着技术清单。
“我两整理了一下,昆仑工程的总线协议、接口板、存储芯片技术,都在昆仑-o机上验证过了。星型网络可以基于存储控制器和总线协议扩展。存储机柜端做一个多端口存储控制器,每台科研机插一块存储访问板,用专用线缆连到机柜。这块板卡只负责一件事:在科研机本地内存和中央存储之间做数据块传输。逻辑简单,容易实现。”
她又翻了一页:“环状网络,可以借鉴昆仑-o机内板卡间通信的总线机制,把它外部化,在机柜间搭一个低但可靠的环形总线。每台科研机上再插一块协同计算板,通过同轴电缆以菊花链方式串联起来,形成一个闭合环路。这块板卡上做一个极简的转逻辑,收到左邻来的数据包,如果是给自己的就收下,否则就转给右邻。”
诸葛彪补充道:“这个转逻辑不难,标准单元库里有现成的触器、计数器、移位寄存器,拼一拼能搭出来。”
吕辰接过钱兰画的图纸,左边是一台科研机,上面插着两块板卡。
一块写着“存储访问板”,一条线连到中央存储机柜。
另一块写着“协同计算板”,一条线连到环网。
右边是中央存储机柜,里面画了一个多端口存储控制器,每个端口连一台科研机。
底下是环网,一台接一台串起来,最后连成一个圆。
钱兰补充道:“按理论组的方案,需要三块芯片。存储机柜端的多端口存储控制器,存储阵列接口芯片,科研机端的星型网络接口芯片。”
他顿了顿:“但是加上环网,至少还要再增加两块。一块是环网接口控制芯片,这是每台科研机上环网接口板的核心,负责节点在环中的通信。另一块是环网中继再生芯片,解决节点数量多或线缆长度长时的信号衰减问题。”
诸葛彪又加了一句:“环网需要全网同步。所有节点共用一个时钟,否则数据传着传着就乱了。还得再加一块时钟分配芯片,时钟源放在中央存储机柜,分给各节点。”
吕辰点点头:“这个配置是可行的,依我看,还要加上一块负责数据缓冲和队列管理。环网接口板的数据缓存管理,如果存储芯片度跟不上环网度,需要专门的缓冲管理。再加一块数据缓冲队列管理芯片。”
他顿了顿:“地址识别也要单独做一块。判断数据包的目的地址是不是自己。如果地址匹配就收下,不匹配就转。这个逻辑虽然简单,但放在环网接口控制芯片里,会增加复杂度。不如单独做一块,专芯专用。”
钱兰和诸葛彪想了想,也同意了吕辰的提议,这样,总的芯片就从三块增加到了八块。
钱兰拿起笑:“那就这样定,咱们一条一条过!多端口存储控制器。这是中央存储机柜的核心。它要能同时处理多台科研机的读写请求,仲裁、排队、冲突解决。功能不复杂,但接口多。”
诸葛彪分析道:“昆仑-o机的存储控制器已经跑通了,那个是单端口的。多端口就是在那个基础上扩展,增加仲裁逻辑。标准单元库里有现成的优先编码器、比较器,拼一拼就能搭出来。”
钱兰点点头,在第一条后面打了个勾,又移到第二条。
“存储阵列接口芯片,负责连接存储阵列,把多端口存储控制器的读写请求转换成存储芯片的控制信号。这个也不难,地址译码、数据缓冲、时序控制,都是现成的。”