[{"data":1,"prerenderedAt":1708},["ShallowReactive",2],{"content-query-7Y8hvvPIzS":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":5,"body":12,"_type":1702,"_id":1703,"_source":1704,"_file":1705,"_stem":1706,"_extension":1707},"\u002Fzh\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology","news",false,"","UB核心优势之内存池化｜大规模AI集群内存访问机制技术深度解读","AI模型规模、上下文长度和推理链路持续增长，内存系统正在从单卡容量问题转变为跨卡、跨节点协同问题。仅增加单卡HBM容量，难以解决集群中内存分布不均、远端访问开销高和权限隔离复杂等问题。","2026\u002F05\u002F28 18:00","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Fcover.png",{"type":13,"children":14,"toc":1686},"root",[15,37,43,47,52,57,64,69,82,94,106,111,116,200,206,211,216,226,236,246,258,264,269,275,280,304,309,314,319,325,330,349,355,360,370,380,390,395,400,419,425,430,442,447,466,472,477,489,494,499,544,549,554,560,565,570,575,583,588,593,598,603,622,628,633,638,648,658,663,668,769,775,780,785,804,810,815,820,826,831,836,841,846,851,857,862,935,940,945,950,956,961,966,971,980,985,991,996,1001,1013,1018,1024,1029,1034,1105,1110,1129,1134,1172,1177,1221,1226,1239,1244,1250,1255,1260,1266,1278,1283,1288,1293,1298,1303,1309,1314,1319,1324,1329,1334,1353,1358,1565,1571,1576,1586,1596,1606,1616,1621,1627,1632,1637,1642,1647,1652,1657,1680],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":16,"tag":21,"props":22,"children":23},"i",{},[24,27,35],{"type":25,"value":26},"text","编者按：文章转载自FreedomChips自由芯，原文链接接 ",{"type":16,"tag":28,"props":29,"children":33},"a",{"href":30,"rel":31},"https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FJo2ftTk3Ncea9IsnlVpFpA",[32],"nofollow",[34],{"type":25,"value":30},{"type":25,"value":36}," 。",{"type":16,"tag":38,"props":39,"children":41},"h2",{"id":40},"引言",[42],{"type":25,"value":40},{"type":16,"tag":17,"props":44,"children":45},{},[46],{"type":25,"value":9},{"type":16,"tag":17,"props":48,"children":49},{},[50],{"type":25,"value":51},"UB（UnifiedBus，灵衢）协议从硬件栈底层定义跨节点内存访问机制。它把地址翻译、权限校验和Load\u002FStore访问语义扩展到跨节点范围，使远端HBM能够以受控、可验证、低CPU介入的方式参与计算。",{"type":16,"tag":17,"props":53,"children":54},{},[55],{"type":25,"value":56},"本文聚焦UB协议中的关键能力：跨节点内存池化。文章先提炼AI集群内存系统的主要约束，再梳理UB的设计思路、协议架构和硬件模块，随后通过一个两卡共享内存案例串联核心机制，最后回到AI负载场景分析其价值。",{"type":16,"tag":58,"props":59,"children":61},"h1",{"id":60},"一ai集群内存系统的三重困境",[62],{"type":25,"value":63},"一、AI集群内存系统的三重困境",{"type":16,"tag":17,"props":65,"children":66},{},[67],{"type":25,"value":68},"要理解UB的价值，需要先看清内存池化要解决的三个核心约束：容量、资源利用率和访问开销。",{"type":16,"tag":17,"props":70,"children":71},{},[72,74,80],{"type":25,"value":73},"第一是",{"type":16,"tag":75,"props":76,"children":77},"strong",{},[78],{"type":25,"value":79},"容量墙",{"type":25,"value":81},"。大模型权重、KV Cache、激活值和优化器状态会共同占用大量显存。单卡容量增长有限，模型部署越来越依赖多卡和多节点协同。",{"type":16,"tag":17,"props":83,"children":84},{},[85,87,92],{"type":25,"value":86},"第二是",{"type":16,"tag":75,"props":88,"children":89},{},[90],{"type":25,"value":91},"资源孤岛",{"type":25,"value":93},"。不同加速卡或节点上的HBM通常归属各自设备，空闲显存难以被其他计算任务直接使用。即使集群总显存充足，单个任务仍可能因本地显存不足而受限。",{"type":16,"tag":17,"props":95,"children":96},{},[97,99,104],{"type":25,"value":98},"第三是",{"type":16,"tag":75,"props":100,"children":101},{},[102],{"type":25,"value":103},"通信墙",{"type":25,"value":105},"。远端数据访问如果停留在显式搬运模式，应用需要处理注册、同步、鉴权、重试和调试等复杂流程。对于高频小粒度访问，软件提交与轮询路径还会引入额外CPU开销。",{"type":16,"tag":17,"props":107,"children":108},{},[109],{"type":25,"value":110},"这三个约束叠加后形成一个明确的工程矛盾：AI集群规模在增长，但跨卡、跨节点的有效内存协作能力没有同步提升。UB内存池化要解决的正是这种规模与协作能力之间的落差。",{"type":16,"tag":17,"props":112,"children":113},{},[114],{"type":25,"value":115},"表1汇总了三类约束及其根本原因。",{"type":16,"tag":117,"props":118,"children":119},"table",{},[120,144],{"type":16,"tag":121,"props":122,"children":123},"thead",{},[124],{"type":16,"tag":125,"props":126,"children":127},"tr",{},[128,134,139],{"type":16,"tag":129,"props":130,"children":131},"th",{},[132],{"type":25,"value":133},"困境",{"type":16,"tag":129,"props":135,"children":136},{},[137],{"type":25,"value":138},"表现",{"type":16,"tag":129,"props":140,"children":141},{},[142],{"type":25,"value":143},"根本原因",{"type":16,"tag":145,"props":146,"children":147},"tbody",{},[148,166,183],{"type":16,"tag":125,"props":149,"children":150},{},[151,156,161],{"type":16,"tag":152,"props":153,"children":154},"td",{},[155],{"type":25,"value":79},{"type":16,"tag":152,"props":157,"children":158},{},[159],{"type":25,"value":160},"单卡HBM难以承载持续增长的模型状态",{"type":16,"tag":152,"props":162,"children":163},{},[164],{"type":25,"value":165},"模型权重、KV Cache和训练状态增长快于单卡容量",{"type":16,"tag":125,"props":167,"children":168},{},[169,173,178],{"type":16,"tag":152,"props":170,"children":171},{},[172],{"type":25,"value":91},{"type":16,"tag":152,"props":174,"children":175},{},[176],{"type":25,"value":177},"集群总显存充足但局部设备显存紧张",{"type":16,"tag":152,"props":179,"children":180},{},[181],{"type":25,"value":182},"远端内存难以直接进入本地地址空间",{"type":16,"tag":125,"props":184,"children":185},{},[186,190,195],{"type":16,"tag":152,"props":187,"children":188},{},[189],{"type":25,"value":103},{"type":16,"tag":152,"props":191,"children":192},{},[193],{"type":25,"value":194},"高频小粒度远端访问开销高",{"type":16,"tag":152,"props":196,"children":197},{},[198],{"type":25,"value":199},"缺少统一的硬件级访问、翻译和权限校验语义",{"type":16,"tag":58,"props":201,"children":203},{"id":202},"二ub的架构哲学",[204],{"type":25,"value":205},"二、UB的架构哲学",{"type":16,"tag":17,"props":207,"children":208},{},[209],{"type":25,"value":210},"面对这三重困境，UB从硬件栈底层重新思考远端内存如何以接近本地内存的方式被访问，并围绕地址翻译、访问语义和权限校验建立完整机制。",{"type":16,"tag":17,"props":212,"children":213},{},[214],{"type":25,"value":215},"三个关键设计选择决定了UB的构造定位。",{"type":16,"tag":17,"props":217,"children":218},{},[219,224],{"type":16,"tag":75,"props":220,"children":221},{},[222],{"type":25,"value":223},"第一，把远端内存纳入硬件级地址翻译体系。",{"type":25,"value":225}," 在UB中，远端内存不仅是可传输的数据区域，也可以通过受控地址语义被访问。这要求接收方在每次访问时完成地址翻译与权限校验。执行该工作的模块是UMMU（UB Memory Management Unit），可以理解为CPU MMU跨节点语义的延伸。",{"type":16,"tag":17,"props":227,"children":228},{},[229,234],{"type":16,"tag":75,"props":230,"children":231},{},[232],{"type":25,"value":233},"第二，同时支持同步和异步两种访问语义。",{"type":25,"value":235}," UB提供URMA异步接口，也提供Load\u002FStore同步语义：CPU的一条mov指令可以触发远端HBM读写，访问方式与本地内存访问保持一致。这依赖发起侧的UBDecoder硬件，它把本地物理地址反向翻译为远端地址和描述符。",{"type":16,"tag":17,"props":237,"children":238},{},[239,244],{"type":16,"tag":75,"props":240,"children":241},{},[242],{"type":25,"value":243},"第三，把身份管理从数据面剥离。",{"type":25,"value":245}," UB引入分层标识符体系：CNA（Compact Network Address）表示路由到节点，EID（Entity identifier）定位到实体，TokenID指向内存段，UBA精确到字节，TokenValue验证权限。这些标识符各司其职，分别由UBFM（UB Fabric Manager）固件、UMMU硬件和应用软件等角色分配和使用。应用侧重点从网络路径管理转向凭据持有与访问语义。",{"type":16,"tag":17,"props":247,"children":248},{},[249,251,256],{"type":25,"value":250},"这三个设计选择共同构建了UB内存池化的基础：",{"type":16,"tag":75,"props":252,"children":253},{},[254],{"type":25,"value":255},"全局统一地址空间 + 双模态访问语义 + 硬件权限校验",{"type":25,"value":257},"。下一节我们从协议整体架构出发，看这三个设计如何落地到具体的硬件和协议层次上。",{"type":16,"tag":58,"props":259,"children":261},{"id":260},"三从协议架构看跨节点内存池化",[262],{"type":25,"value":263},"三、从协议架构看跨节点内存池化",{"type":16,"tag":17,"props":265,"children":266},{},[267],{"type":25,"value":268},"UB是一套完整的协议栈，规范将其定义为六层结构加上两个横向协作的独立模块。要理解内存池化，必须先建立对整体架构的直观认识，再从中识别出直接参与池化的功能单元。",{"type":16,"tag":38,"props":270,"children":272},{"id":271},"_31-ub协议整体架构",[273],{"type":25,"value":274},"3.1 UB协议整体架构",{"type":16,"tag":17,"props":276,"children":277},{},[278],{"type":25,"value":279},"规范第2.2章节描绘的UB协议栈从下往上依次是物理层、数据链路层、网络层、传输层、事务层和功能层，另有UMMU作为内存访问的旁路验证模块，UBFM作为全局资源管理的控制面实体。其抽象表达如下：",{"type":16,"tag":281,"props":282,"children":284},"div",{"style":283},"text-align: center;margin:24px 0;",[285,294],{"type":16,"tag":17,"props":286,"children":287},{},[288],{"type":16,"tag":289,"props":290,"children":293},"img",{"alt":291,"src":292},"图1","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig1-ub-protocol-stack.png",[],{"type":16,"tag":17,"props":295,"children":296},{},[297],{"type":16,"tag":298,"props":299,"children":301},"span",{"style":300},"opacity: 0.8",[302],{"type":25,"value":303},"图1 UB协议栈与内存池化相关模块",{"type":16,"tag":17,"props":305,"children":306},{},[307],{"type":25,"value":308},"功能层把Load\u002FStore同步访问和URMA异步访问并列为两种合法的编程模型。应用既可以通过异步队列提交批量传输，也可以通过本地指针语义触发远端HBM细粒度访问。",{"type":16,"tag":17,"props":310,"children":311},{},[312],{"type":25,"value":313},"事务层把内存访问单列为一类事务，与消息传递、维护操作、管理消息并列。规范定义的Write（TAOpcode=0x03）、Read（0x06）、Atomic（0x07-0x0F）等事务类型都属于此类，它们是内存池化的直接协议承载。",{"type":16,"tag":17,"props":315,"children":316},{},[317],{"type":25,"value":318},"UMMU与UBFM作为协议栈旁路的独立模块存在。UMMU参与事务层的接收处理，承担地址翻译与权限校验；UBFM不参与任何单次事务处理，但负责全局身份分配和路由建立。它们不是协议栈的层，却是内存池化不可或缺的协作方。",{"type":16,"tag":38,"props":320,"children":322},{"id":321},"_32-ub系统的硬件组成",[323],{"type":25,"value":324},"3.2 UB系统的硬件组成",{"type":16,"tag":17,"props":326,"children":327},{},[328],{"type":25,"value":329},"再看规范第2.1章节图2-1描绘的UB Domain系统组成。一个UB Domain由若干UBPU（UB Processing Unit，UB协议处理单元）通过UB Link互联构成UB Fabric。每颗UBPU内部是计算核（CPU\u002FNPU\u002FGPU\u002F存储等不同类型）加上UB协议处理硬件的组合：",{"type":16,"tag":281,"props":331,"children":332},{"style":283},[333,341],{"type":16,"tag":17,"props":334,"children":335},{},[336],{"type":16,"tag":289,"props":337,"children":340},{"alt":338,"src":339},"图2","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig2-ub-domain-hardware.png",[],{"type":16,"tag":17,"props":342,"children":343},{},[344],{"type":16,"tag":298,"props":345,"children":346},{"style":300},[347],{"type":25,"value":348},"图2 UB Domain硬件组成",{"type":16,"tag":38,"props":350,"children":352},{"id":351},"_33-从架构到池化相关模块的角色定位",[353],{"type":25,"value":354},"3.3 从架构到池化：相关模块的角色定位",{"type":16,"tag":17,"props":356,"children":357},{},[358],{"type":25,"value":359},"把协议栈视图和硬件视图叠加起来，与内存池化直接相关的功能模块可以梳理为三组。",{"type":16,"tag":17,"props":361,"children":362},{},[363,368],{"type":16,"tag":75,"props":364,"children":365},{},[366],{"type":25,"value":367},"协议栈上的池化承载层。",{"type":25,"value":369}," 功能层暴露Load\u002FStore和URMA两种编程入口；事务层通过MAETAH（Memory Access Extended Transaction Header）扩展头承载UBA与TokenID，通过TVETAH（Token Value Extended Transaction Header）承载32-bit权限凭证，TVETAH的携带与否由BTAH中的TV_EN位控制，只有启用权限校验的事务才会附带它；传输层为内存访问提供可靠（RTP）、轻量（CTP）或直通（TP Bypass）三种传输语义；网络层负责跨节点路由并通过FECN实现拥塞感知；数据链路层与物理层则是向远程显存发出和接收字节流的基础承载。",{"type":16,"tag":17,"props":371,"children":372},{},[373,378],{"type":16,"tag":75,"props":374,"children":375},{},[376],{"type":25,"value":377},"UBPU内的池化专用硬件。",{"type":25,"value":379}," UB Controller是协议栈的主执行者，负责封包\u002F解包与Jetty管理；UMMU是接收方的地址翻译与权限校验引擎，是整个池化机制的守门员；UB Decoder位于发起方，在Load\u002FStore场景下把本地物理地址反向翻译为UBMD，让CPU的mov指令可以直达远端HBM；UB Switch是多端口的转发单元，负责ECMP路由与FECN标记。",{"type":16,"tag":17,"props":381,"children":382},{},[383,388],{"type":16,"tag":75,"props":384,"children":385},{},[386],{"type":25,"value":387},"控制平面的协调者。",{"type":25,"value":389}," UBFM作为运行在某颗UBPU上的固件，承担拓扑枚举、CNA\u002FEID分配、路由表下发等全局任务；OS驱动负责Jetty创建、内存段注册、UB Decoder页表维护等节点级管理。",{"type":16,"tag":17,"props":391,"children":392},{},[393],{"type":25,"value":394},"这三组模块不是孤立存在的，它们在内存池化的每个环节都有精确分工。接下来的章节将深入最核心的几个抽象。",{"type":16,"tag":17,"props":396,"children":397},{},[398],{"type":25,"value":399},"在展开细节之前，把后面反复出现的五个标识符先放在一张图上。内存池化的很多混淆都源于这套标识符体系。它们粒度由粗到细，分别回答访问谁的五个子问题：",{"type":16,"tag":281,"props":401,"children":402},{"style":283},[403,411],{"type":16,"tag":17,"props":404,"children":405},{},[406],{"type":16,"tag":289,"props":407,"children":410},{"alt":408,"src":409},"图3","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig3-ub-identifier-layers.png",[],{"type":16,"tag":17,"props":412,"children":413},{},[414],{"type":16,"tag":298,"props":415,"children":416},{"style":300},[417],{"type":25,"value":418},"图3 UB内存访问标识符分层",{"type":16,"tag":58,"props":420,"children":422},{"id":421},"四内存池化的核心抽象",[423],{"type":25,"value":424},"四、内存池化的核心抽象",{"type":16,"tag":17,"props":426,"children":427},{},[428],{"type":25,"value":429},"从协议细节回到概念层面，UB内存池化的运行可以归结为一个简洁模型加上三层协作机制。",{"type":16,"tag":17,"props":431,"children":432},{},[433,435,440],{"type":25,"value":434},"UB规范第九章首先建立了",{"type":16,"tag":75,"props":436,"children":437},{},[438],{"type":25,"value":439},"Home-User访问模型",{"type":25,"value":441},"：注册并提供内存资源的一方称为Home；访问远端内存的一方称为User。模型本身很直白，但意义深远：它把跨节点共享内存定义为两个分布式系统中常被误解的概念，还原为谁拥有、谁使用的清晰主客体关系。任何一次跨节点内存访问，在规范术语中都可以简化为User持凭据访问Home的过程。后面的所有讨论都在这一模型之上展开：Home通过内存注册生产凭据，User通过凭据发起访问，硬件在两侧分别完成各自的翻译与校验工作。",{"type":16,"tag":17,"props":443,"children":444},{},[445],{"type":25,"value":446},"围绕这个模型，三层机制层层递进：凭据系统让User能够精确表达我要访问哪块内存；翻译引擎在Home侧和User侧分别完成地址的正反翻译与权限校验；全局管理为前两者准备好网络身份与路由基础。三者环环相扣，缺一不可。",{"type":16,"tag":281,"props":448,"children":449},{"style":283},[450,458],{"type":16,"tag":17,"props":451,"children":452},{},[453],{"type":16,"tag":289,"props":454,"children":457},{"alt":455,"src":456},"图4","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig4-home-user-model.png",[],{"type":16,"tag":17,"props":459,"children":460},{},[461],{"type":16,"tag":298,"props":462,"children":463},{"style":300},[464],{"type":25,"value":465},"图4 Home-User访问模型",{"type":16,"tag":38,"props":467,"children":469},{"id":468},"_41-ubmd跨节点访问的凭据系统",[470],{"type":25,"value":471},"4.1 UBMD：跨节点访问的凭据系统",{"type":16,"tag":17,"props":473,"children":474},{},[475],{"type":25,"value":476},"UBMD（UB Memory Descriptor，UB内存描述符）是UB规范定义的三元组：",{"type":16,"tag":478,"props":479,"children":483},"pre",{"className":480,"code":482,"language":25,"meta":7},[481],"language-text","UBMD = { EID, TokenID, UBA }\n",[484],{"type":16,"tag":485,"props":486,"children":487},"code",{"__ignoreMap":7},[488],{"type":25,"value":482},{"type":16,"tag":17,"props":490,"children":491},{},[492],{"type":25,"value":493},"再配上一个独立传递的TokenValue，就构成了一次跨节点内存访问的完整凭据。",{"type":16,"tag":17,"props":495,"children":496},{},[497],{"type":25,"value":498},"这四个字段可以按访问定位与权限校验的层次来理解：",{"type":16,"tag":500,"props":501,"children":502},"ul",{},[503,514,524,534],{"type":16,"tag":504,"props":505,"children":506},"li",{},[507,512],{"type":16,"tag":75,"props":508,"children":509},{},[510],{"type":25,"value":511},"EID",{"type":25,"value":513},"标识目标内存归属的Entity。一颗UBPU可以承载多个Entity，每个Entity拥有独立资源配额，可服务不同租户或业务。",{"type":16,"tag":504,"props":515,"children":516},{},[517,522],{"type":16,"tag":75,"props":518,"children":519},{},[520],{"type":25,"value":521},"TokenID",{"type":25,"value":523},"标识Entity内的共享内存段。一个Entity可以注册多块内存段，TokenID用于选择对应的翻译与权限上下文。",{"type":16,"tag":504,"props":525,"children":526},{},[527,532],{"type":16,"tag":75,"props":528,"children":529},{},[530],{"type":25,"value":531},"UBA",{"type":25,"value":533},"（UB Address）表示段内逻辑地址。它由Home侧规划，不是物理地址，也不是User本地虚拟地址，而是Home Entity维护的地址空间，由UMMU翻译为真实物理地址。",{"type":16,"tag":504,"props":535,"children":536},{},[537,542],{"type":16,"tag":75,"props":538,"children":539},{},[540],{"type":25,"value":541},"TokenValue",{"type":25,"value":543},"是运行时权限凭据。它不属于UBMD本身，可独立轮换，用于细粒度权限管理。",{"type":16,"tag":17,"props":545,"children":546},{},[547],{"type":25,"value":548},"这四者缺一不可：EID定位实体，TokenID定位内存段，UBA定位段内字节，TokenValue负责权限验证。任一字段不匹配都会导致访问失败，这是多租户场景下硬件级隔离的基础。",{"type":16,"tag":17,"props":550,"children":551},{},[552],{"type":25,"value":553},"一个值得注意的细节：规范允许MAPTE（MAPT Entry）同时存储主和备两个TokenValue。初始注册时两者可以相同也可以不同。这个设计为权限管理保留了更灵活的操作空间。若不同User或租户被分配了不同的TokenValue，需要撤销某个用户但保留其他用户的访问时，只需替换对应TokenValue即可，无需销毁整个内存段。这使权限回收可以在不销毁内存段的情况下完成，在大规模多租户环境下具有实际价值。",{"type":16,"tag":38,"props":555,"children":557},{"id":556},"_42-ummu与ub-decoder地址翻译的两端",[558],{"type":25,"value":559},"4.2 UMMU与UB Decoder：地址翻译的两端",{"type":16,"tag":17,"props":561,"children":562},{},[563],{"type":25,"value":564},"UMMU（UB Memory Management Unit）位于每个Home侧UBPU内部，是内存池化的核心硬件执行者。它和CPU的MMU在功能上高度相似，都负责虚拟地址到物理地址的翻译和权限校验，区别在于CPU MMU服务于本机进程的虚拟地址空间，UMMU服务于跨节点访问产生的虚拟地址请求。",{"type":16,"tag":17,"props":566,"children":567},{},[568],{"type":25,"value":569},"每当一个远端访问请求到达UMMU，它会在硬件流水线中完成四步验证，避免让CPU介入单次权限判断。首先按DEID查TECT（Target Entity Configuration Table），获得该Entity对应的TCT基址；然后按TokenID查TCT（Target Context Table），获得该内存段对应的MATT基址与MAPT基址；接着按UBA走MATT（Memory Address Translation Table）的多级页表，翻译出真实物理地址；最后按UBA查MAPT（Memory Address Permission Table），比对请求携带的TokenValue是否匹配MAPTE中的主\u002F备锁，并校验Permission是否包含请求的访问类型。四步全部通过后，DMA引擎才会实际访问物理内存。",{"type":16,"tag":17,"props":571,"children":572},{},[573],{"type":25,"value":574},"UMMU的设计中还有一个特别值得一提的细节：它支持两阶段地址翻译。Stage 1把UBA翻译为IPA（中间物理地址），Stage 2把IPA翻译为PA（真实物理地址）。这不仅完整对齐了ARM SMMU在虚拟化场景下的地址转换语义，一个Entity被直通给虚拟机时，Stage 1由Guest OS控制，Stage 2由Hypervisor控制，多租户的虚拟化隔离由硬件直接保证。这让UB Entity的虚拟化直通成为一种自然的硬件能力，而不是软件模拟出来的效果。",{"type":16,"tag":17,"props":576,"children":577},{},[578],{"type":16,"tag":75,"props":579,"children":580},{},[581],{"type":25,"value":582},"User侧：UB Decoder的反向翻译。",{"type":16,"tag":17,"props":584,"children":585},{},[586],{"type":25,"value":587},"单靠UMMU只能解决Home如何验证外来请求的问题。要让Load\u002FStore同步访问成立，还需要在User侧有一个反向的翻译机制，这就是UB Decoder的角色。",{"type":16,"tag":17,"props":589,"children":590},{},[591],{"type":25,"value":592},"UB Decoder管理一套两级本地页表（L0\u002FL1 PTE），把本地物理地址范围映射到远端UBMD。当CPU发出一条mov指令访问某个内存地址时，UB Decoder拦截这次访问，查本地页表得到{EID, TokenID, UBA_BASE, TokenValue}，把本地物理地址的低位拼到UBA_BASE上形成完整的UBA。这组信息交给UB Controller封包发送，对CPU而言整个过程完全透明，从CPU视角看，这仍然是一次Load\u002FStore访问；跨芯片细节由UB Decoder和UB Controller处理。",{"type":16,"tag":17,"props":594,"children":595},{},[596],{"type":25,"value":597},"UMMU和UB Decoder的关系可以这样概括：User侧UB Decoder把物理地址反向翻译为UBMD（PA到UBMD），Home侧UMMU把UBMD正向翻译为物理地址（UBMD到PA）。两端各自管理各自的页表，互不干扰。URMA异步访问则只走Home侧UMMU这一半，因为应用已经直接在WQE里提供了UBMD，不需要UB Decoder做反向翻译。",{"type":16,"tag":17,"props":599,"children":600},{},[601],{"type":25,"value":602},"这里有一个根本的工程哲学：内存池化的权限控制必须在硬件完成，不能依赖软件。AI训练场景下单秒可能有数百万次远端内存访问，如果每次都需要CPU介入校验，软件根本扛不住。UMMU与UB Decoder的硬件化设计把单次翻译与校验从CPU调用路径中移出，让低CPU开销的池化访问从愿望变成现实。",{"type":16,"tag":281,"props":604,"children":605},{"style":283},[606,614],{"type":16,"tag":17,"props":607,"children":608},{},[609],{"type":16,"tag":289,"props":610,"children":613},{"alt":611,"src":612},"图5","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig5-ummu-verification-flow.png",[],{"type":16,"tag":17,"props":615,"children":616},{},[617],{"type":16,"tag":298,"props":618,"children":619},{"style":300},[620],{"type":25,"value":621},"图5 UMMU四步验证流水",{"type":16,"tag":38,"props":623,"children":625},{"id":624},"_43-ubfm全局资源的调度中枢",[626],{"type":25,"value":627},"4.3 UBFM：全局资源的调度中枢",{"type":16,"tag":17,"props":629,"children":630},{},[631],{"type":25,"value":632},"凭据系统和翻译引擎解决的是单次访问怎么做，但任何一次跨节点访问成立的前提是：两颗芯片都已经拥有网络身份，路由表已经配好，Entity上下文已经建立。这些全局性的准备工作落在UBFM（UB Fabric Manager）身上。",{"type":16,"tag":17,"props":634,"children":635},{},[636],{"type":25,"value":637},"UBFM是运行在某颗UBPU上的固件，负责超节点级的全局管理。它不参与任何单次数据访问，但没有它的前期工作，内存池化根本无从建立。UBFM的工作可以概括为三件事。",{"type":16,"tag":17,"props":639,"children":640},{},[641,646],{"type":16,"tag":75,"props":642,"children":643},{},[644],{"type":25,"value":645},"枚举与身份分配：",{"type":25,"value":647}," 系统上电后UBFM通过拓扑查询命令发现每颗UBPU，按规划分配Primary CNA与EID，并通过Configure CNA与Entity Registration命令写入各UBPU的配置空间。CNA决定网络中这个UBPU被如何寻址；EID决定这个软件实体被如何标识。",{"type":16,"tag":17,"props":649,"children":650},{},[651,656],{"type":16,"tag":75,"props":652,"children":653},{},[654],{"type":25,"value":655},"路由表与分区：",{"type":25,"value":657}," UBFM基于拓扑生成路由与多路径信息，生成路由表并下发到各UB Switch的1GB路由表区。协同与维护、Entity注册、UPI分区、热插拔、故障恢复等事件都由UBFM协调处理。",{"type":16,"tag":17,"props":659,"children":660},{},[661],{"type":25,"value":662},"一个不常被注意到的事实是：UBFM本身跑在UB内部，它使用的网络正是它自己在管理的网络。这种自举设计需要UBFM通过一些特殊的Bootstrap机制，如保留的UPI=0x7FFF管理分区，在网络完全就绪之前也能工作。控制面和数据面共享物理链路，但通过保留特权身份避开了鸡生蛋的循环依赖。",{"type":16,"tag":17,"props":664,"children":665},{},[666],{"type":25,"value":667},"表2总结了凭据系统、翻译引擎和全局管理之间的分工。",{"type":16,"tag":117,"props":669,"children":670},{},[671,697],{"type":16,"tag":121,"props":672,"children":673},{},[674],{"type":16,"tag":125,"props":675,"children":676},{},[677,682,687,692],{"type":16,"tag":129,"props":678,"children":679},{},[680],{"type":25,"value":681},"机制",{"type":16,"tag":129,"props":683,"children":684},{},[685],{"type":25,"value":686},"承载组件",{"type":16,"tag":129,"props":688,"children":689},{},[690],{"type":25,"value":691},"职责",{"type":16,"tag":129,"props":693,"children":694},{},[695],{"type":25,"value":696},"典型触发时机",{"type":16,"tag":145,"props":698,"children":699},{},[700,723,746],{"type":16,"tag":125,"props":701,"children":702},{},[703,708,713,718],{"type":16,"tag":152,"props":704,"children":705},{},[706],{"type":25,"value":707},"凭据系统",{"type":16,"tag":152,"props":709,"children":710},{},[711],{"type":25,"value":712},"UBMD + TokenValue",{"type":16,"tag":152,"props":714,"children":715},{},[716],{"type":25,"value":717},"表达访问哪块内存+有无权限",{"type":16,"tag":152,"props":719,"children":720},{},[721],{"type":25,"value":722},"Home注册内存时生成，访问时携带",{"type":16,"tag":125,"props":724,"children":725},{},[726,731,736,741],{"type":16,"tag":152,"props":727,"children":728},{},[729],{"type":25,"value":730},"翻译引擎",{"type":16,"tag":152,"props":732,"children":733},{},[734],{"type":25,"value":735},"UMMU（Home侧）+ UB Decoder（User侧）",{"type":16,"tag":152,"props":737,"children":738},{},[739],{"type":25,"value":740},"地址正反翻译 + 权限校验",{"type":16,"tag":152,"props":742,"children":743},{},[744],{"type":25,"value":745},"每次访问都执行",{"type":16,"tag":125,"props":747,"children":748},{},[749,754,759,764],{"type":16,"tag":152,"props":750,"children":751},{},[752],{"type":25,"value":753},"全局管理",{"type":16,"tag":152,"props":755,"children":756},{},[757],{"type":25,"value":758},"UBFM",{"type":16,"tag":152,"props":760,"children":761},{},[762],{"type":25,"value":763},"网络身份分配、路由下发、资源协调",{"type":16,"tag":152,"props":765,"children":766},{},[767],{"type":25,"value":768},"系统上电 + 拓扑变化时",{"type":16,"tag":58,"props":770,"children":772},{"id":771},"五完整剖析一次跨节点内存共享是如何发生的",[773],{"type":25,"value":774},"五、完整剖析：一次跨节点内存共享是如何发生的",{"type":16,"tag":17,"props":776,"children":777},{},[778],{"type":25,"value":779},"抽象概念需要具体场景来落地。下面用一个完整案例串起所有机制：GPU A借用NPU B的64MB HBM存放训练中的激活值。这个场景刻意选得简单，以便专注于流程本身；更复杂的多节点、多租户场景只是规模上的叠加。",{"type":16,"tag":17,"props":781,"children":782},{},[783],{"type":25,"value":784},"整个建链与访问过程可以划分为七个阶段，时间轴与关键动作如下：",{"type":16,"tag":281,"props":786,"children":787},{"style":283},[788,796],{"type":16,"tag":17,"props":789,"children":790},{},[791],{"type":16,"tag":289,"props":792,"children":795},{"alt":793,"src":794},"图6","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig6-cross-node-memory-sharing.png",[],{"type":16,"tag":17,"props":797,"children":798},{},[799],{"type":16,"tag":298,"props":800,"children":801},{"style":300},[802],{"type":25,"value":803},"图6 跨节点内存共享阶段",{"type":16,"tag":38,"props":805,"children":807},{"id":806},"_51-上电物理基础的建立",[808],{"type":25,"value":809},"5.1 上电：物理基础的建立",{"type":16,"tag":17,"props":811,"children":812},{},[813],{"type":25,"value":814},"故事从系统上电开始。两颗UBPU通过UB Link连接。物理层LMSM状态机完成Lane训练、速率协商、FEC配置，进入Link_Active状态。数据链路层初始化信用流控，双方交换Init Block协商链路参数。",{"type":16,"tag":17,"props":816,"children":817},{},[818],{"type":25,"value":819},"这个阶段两颗芯片完成了物理意义上的握手，线已经通了，但上层一片空白：没有网络地址，没有通信端点，没有任何应用可以跨芯片交流。它们只是两颗知道对方存在的芯片，还不构成一个超节点。",{"type":16,"tag":38,"props":821,"children":823},{"id":822},"_52-ubfm登场从芯片到超节点",[824],{"type":25,"value":825},"5.2 UBFM登场：从芯片到超节点",{"type":16,"tag":17,"props":827,"children":828},{},[829],{"type":25,"value":830},"超节点的成形始于UBFM的登台。系统某个UBPU在启动的时候被确定为UBFM角色，它开始在整个Fabric内部扫描、编目、分配。",{"type":16,"tag":17,"props":832,"children":833},{},[834],{"type":25,"value":835},"首先是拓扑枚举。UBFM从自己出发，向每个直连邻居发送拓扑查询命令（Configure CNA命令CMD=0），邻居返回本节点信息后，UBFM继续向它们的邻居查询，按广度优先遍历扫遍整个超节点。这个过程类似传统网络中的邻居发现协议，但通信基础是UB自己的报文格式。",{"type":16,"tag":17,"props":837,"children":838},{},[839],{"type":25,"value":840},"然后是身份分配。UBFM为每颗UBPU分配Primary CNA（24-bit节点地址），为每个Entity分配EID（128-bit实体标识）。这些值通过Configure CNA与Entity Registration命令下发，写入对应UBPU的CFGO_BASIC寄存器。假设GPU A得到CNA=0x1001，NPU B得到CNA=0x2002（例子使用16-bit CNA模式，对应后续CFG=9的9场景）；两颗芯片各自的业务Entity分别得到EID_A与EID_B。",{"type":16,"tag":17,"props":842,"children":843},{},[844],{"type":25,"value":845},"最后是路由下发。UBFM基于拓扑运行最短路径算法（包含ECMP支持和环路避免约束），计算出每个UB Switch应如何转发到任意目标CNA，把这些路由条目写入各UB Switch的CFG0_ROUTE_TABLE。",{"type":16,"tag":17,"props":847,"children":848},{},[849],{"type":25,"value":850},"这一阶段结束时，整个超节点具备了最基础的网络可达性。GPU A发一个DCNA=0x2002的包，UB Switch能准确送达NPU B。但应用还不能互通，缺少传输层和事务层的通信上下文。",{"type":16,"tag":38,"props":852,"children":854},{"id":853},"_53-npu-b注册内存把本地hbm变成可共享资源",[855],{"type":25,"value":856},"5.3 NPU B注册内存：把本地HBM变成可共享资源",{"type":16,"tag":17,"props":858,"children":859},{},[860],{"type":25,"value":861},"现在轮到NPU B的应用主动出场。它调用一个注册接口：",{"type":16,"tag":478,"props":863,"children":867},{"className":864,"code":865,"language":866,"meta":7,"style":7},"language-c shiki shiki-themes github-light github-dark monokai","urma_register_seg(\nctx,\n.addr = shared_buf,\n.size = 64 * 1024 * 1024,\n.perm = URMA_ACCESS_READ | URMA_ACCESS_WRITE,\n&token_id, &uba_base, &token_value\n);\n","c",[868],{"type":16,"tag":485,"props":869,"children":870},{"__ignoreMap":7},[871,881,890,899,908,917,926],{"type":16,"tag":298,"props":872,"children":875},{"class":873,"line":874},"line",1,[876],{"type":16,"tag":298,"props":877,"children":878},{},[879],{"type":25,"value":880},"urma_register_seg(\n",{"type":16,"tag":298,"props":882,"children":884},{"class":873,"line":883},2,[885],{"type":16,"tag":298,"props":886,"children":887},{},[888],{"type":25,"value":889},"ctx,\n",{"type":16,"tag":298,"props":891,"children":893},{"class":873,"line":892},3,[894],{"type":16,"tag":298,"props":895,"children":896},{},[897],{"type":25,"value":898},".addr = shared_buf,\n",{"type":16,"tag":298,"props":900,"children":902},{"class":873,"line":901},4,[903],{"type":16,"tag":298,"props":904,"children":905},{},[906],{"type":25,"value":907},".size = 64 * 1024 * 1024,\n",{"type":16,"tag":298,"props":909,"children":911},{"class":873,"line":910},5,[912],{"type":16,"tag":298,"props":913,"children":914},{},[915],{"type":25,"value":916},".perm = URMA_ACCESS_READ | URMA_ACCESS_WRITE,\n",{"type":16,"tag":298,"props":918,"children":920},{"class":873,"line":919},6,[921],{"type":16,"tag":298,"props":922,"children":923},{},[924],{"type":25,"value":925},"&token_id, &uba_base, &token_value\n",{"type":16,"tag":298,"props":927,"children":929},{"class":873,"line":928},7,[930],{"type":16,"tag":298,"props":931,"children":932},{},[933],{"type":25,"value":934},");\n",{"type":16,"tag":17,"props":936,"children":937},{},[938],{"type":25,"value":939},"这行代码背后发生了相当多的事情。OS驱动首先锁定64 MB物理页（Pin住，防止被操作系统换出），然后向UMMU申请一个空闲的TCT条目，UMMU分配TokenID=0x00042。驱动规划一段UBA虚拟地址区间，比如从0x10_0000_0000到0x10_0400_0000，正好64MB。接着生成TokenValue（用硬件RNG或软件随机数，比如0xCAFE_BABE）。",{"type":16,"tag":17,"props":941,"children":942},{},[943],{"type":25,"value":944},"然后驱动要填四张UMMU硬件表：TECTE告诉UMMU这个Entity的TCT基址在哪；新分配的TCTE指向该段的MATT与MAPT；MATT建立UBA到物理地址的多级映射；MAPTE填入Permission=RW和主\u002F备TokenValue。",{"type":16,"tag":17,"props":946,"children":947},{},[948],{"type":25,"value":949},"至此，NPU B的UMMU硬件已经知道这段64 MB内存的存在，并且拥有完整的访问控制策略。但这些映射和权限上下文仍位于NPU B本地，GPU A需要后续凭据分发才能访问。",{"type":16,"tag":38,"props":951,"children":953},{"id":952},"_54-凭据分发带外通道的角色",[954],{"type":25,"value":955},"5.4 凭据分发：带外通道的角色",{"type":16,"tag":17,"props":957,"children":958},{},[959],{"type":25,"value":960},"UBMD与TokenValue组成的四元组，必须从NPU B传递到GPU A，两者才能建立数据面通信。UB规范没有强制规定分发方式，这实际上属于带外通道的职责。",{"type":16,"tag":17,"props":962,"children":963},{},[964],{"type":25,"value":965},"典型的选择是走TCP\u002FIP管理网络：两侧应用守护进程通过集群协调服务（如etcd\u002FZooKeeper）交换元数据。更高安全性的场景会经UBFM中转，由UBFM基于全局权限策略控制凭据流向。少数实现也会通过UB的公知Jetty 1（事务层信息交换端点）做分发，但这要求基础通信已经建立。",{"type":16,"tag":17,"props":967,"children":968},{},[969],{"type":25,"value":970},"不论走哪条路，分发的都是同一个四元组：",{"type":16,"tag":478,"props":972,"children":975},{"className":973,"code":974,"language":25,"meta":7},[481],"{ home_eid, token_id, uba_base, size, token_value, permissions }\n",[976],{"type":16,"tag":485,"props":977,"children":978},{"__ignoreMap":7},[979],{"type":25,"value":974},{"type":16,"tag":17,"props":981,"children":982},{},[983],{"type":25,"value":984},"值得一提的是，TokenValue相当于访问密码，明文传输有泄露风险。UB规范的CIP机制（AES-GCM \u002F SM4-GCM）可以为数据面加密，但带外通道自身的安全性需要管理面另行保障。在可信网络内部可以简化处理，跨安全域传输时必须加密。",{"type":16,"tag":38,"props":986,"children":988},{"id":987},"_55-建链从还不能发到可以发",[989],{"type":25,"value":990},"5.5 建链：从还不能发到可以发",{"type":16,"tag":17,"props":992,"children":993},{},[994],{"type":25,"value":995},"GPU A现在手握凭据，但不同访问路径还需要不同的本地准备工作：URMA路径需要传输层TP Channel和应用层Jetty；LD-ST路径则需要UB Decoder映射和对应的一致性\u002F访问属性配置。",{"type":16,"tag":17,"props":997,"children":998},{},[999],{"type":25,"value":1000},"URMA路径的TP Channel建立由UB Controller硬件与固件协同完成。规范第6.3.1章节明确TP Channel的具体建立流程不在本规范定义范围内，这是UB规范目前的一个留白。但可以将它合理抽象为：两端由系统软件，典型做法是通过公知Jetty 0（传输层信息交换端点）完成协商；双方协商TPN分配、PSN初值、BitMapSize、拥塞算法类型、MTU等关键参数。协商完成后各自建立TP Channel上下文。多条TP Channel通常组成一个TPG（Transport Channel Group），用于后续的多路径负载均衡和带宽聚合。",{"type":16,"tag":17,"props":1002,"children":1003},{},[1004,1006,1011],{"type":25,"value":1005},"Jetty创建也是URMA路径的应用层准备。GPU A调用urma_create_jetty创建一个通信端点，驱动从",{"type":16,"tag":298,"props":1007,"children":1008},{},[1009],{"type":25,"value":1010},"32, 1023",{"type":25,"value":1012},"范围分配Jetty ID，配置Jetty Context Table（JETC）、权限与JFC，为配套的SQ与RQ缓冲区分配内存页。Jetty在UB协议中是URMA编程模型的基本通信单元，可以理解为自带硬件队列的socket。LD-ST路径不依赖Jetty队列，而是依赖UB Decoder页表把本地地址窗口映射到远端UBMD。",{"type":16,"tag":17,"props":1014,"children":1015},{},[1016],{"type":25,"value":1017},"这里需要特别澄清一个容易混淆的点：由于GPU A执行的是Write\u002FRead（内存语义）而非Send（消息语义），NPU B侧不需要创建专门的接收Jetty。UMMU会直接按UBMD定位内存并完成访问，不经过NPU B的任何Jetty。这是内存语义最典型的单边特征：发起方需要完整的访问凭据，接收方只需暴露UMMU表项。相比之下，如果GPU A要发Send消息给NPU B，则NPU B必须有接收Jetty且已经在RQ挂好接收缓冲，发送方还需显式携带目标Jetty标识（MTETAH.TGT_TC_ID），那是另一套路径。",{"type":16,"tag":38,"props":1019,"children":1021},{"id":1020},"_56-真正的访问urma和ld-st两条路径",[1022],{"type":25,"value":1023},"5.6 真正的访问：URMA和LD-ST两条路径",{"type":16,"tag":17,"props":1025,"children":1026},{},[1027],{"type":25,"value":1028},"一切就绪后，GPU A终于可以访问NPU B的内存了。UB提供两条访问路径，覆盖不同的性能需求。",{"type":16,"tag":17,"props":1030,"children":1031},{},[1032],{"type":25,"value":1033},"URMA路径让应用通过API显式发起：",{"type":16,"tag":478,"props":1035,"children":1037},{"className":864,"code":1036,"language":866,"meta":7,"style":7},"urma_post_jetty_send_wr(\njetty_a,\n.opc = URMA_WRITE,\n.local_buf = activation_data,\n.length = 40 * 1024 * 1024,\n.remote = { EID_B, 0x00042, 0x10_0000_0000, 0xCAFE_BABE },\n.wr_id = step_id\n);\n",[1038],{"type":16,"tag":485,"props":1039,"children":1040},{"__ignoreMap":7},[1041,1049,1057,1065,1073,1081,1089,1097],{"type":16,"tag":298,"props":1042,"children":1043},{"class":873,"line":874},[1044],{"type":16,"tag":298,"props":1045,"children":1046},{},[1047],{"type":25,"value":1048},"urma_post_jetty_send_wr(\n",{"type":16,"tag":298,"props":1050,"children":1051},{"class":873,"line":883},[1052],{"type":16,"tag":298,"props":1053,"children":1054},{},[1055],{"type":25,"value":1056},"jetty_a,\n",{"type":16,"tag":298,"props":1058,"children":1059},{"class":873,"line":892},[1060],{"type":16,"tag":298,"props":1061,"children":1062},{},[1063],{"type":25,"value":1064},".opc = URMA_WRITE,\n",{"type":16,"tag":298,"props":1066,"children":1067},{"class":873,"line":901},[1068],{"type":16,"tag":298,"props":1069,"children":1070},{},[1071],{"type":25,"value":1072},".local_buf = activation_data,\n",{"type":16,"tag":298,"props":1074,"children":1075},{"class":873,"line":910},[1076],{"type":16,"tag":298,"props":1077,"children":1078},{},[1079],{"type":25,"value":1080},".length = 40 * 1024 * 1024,\n",{"type":16,"tag":298,"props":1082,"children":1083},{"class":873,"line":919},[1084],{"type":16,"tag":298,"props":1085,"children":1086},{},[1087],{"type":25,"value":1088},".remote = { EID_B, 0x00042, 0x10_0000_0000, 0xCAFE_BABE },\n",{"type":16,"tag":298,"props":1090,"children":1091},{"class":873,"line":928},[1092],{"type":16,"tag":298,"props":1093,"children":1094},{},[1095],{"type":25,"value":1096},".wr_id = step_id\n",{"type":16,"tag":298,"props":1098,"children":1100},{"class":873,"line":1099},8,[1101],{"type":16,"tag":298,"props":1102,"children":1103},{},[1104],{"type":25,"value":934},{"type":16,"tag":17,"props":1106,"children":1107},{},[1108],{"type":25,"value":1109},"UB Controller读取这条WQE，查Jetty Context找到绑定的TPG，TPG调度选择一条TP Channel，得到SrcTPN和DstTPN，分配一个INI_RC_ID记录SQ Context（用于后续响应匹配），查EID-CNA获得DCNA。40 MB数据按MTU切成若干TP Packet，每个包自动加PSN、计算ICRC。包头里的MAETAH携带UB Address与TokenID，TVETAH携带TokenValue，CFG字段根据访问类型派生为9（16-bit CNA）。这些工作几乎全部由硬件自主完成，应用只提供了WQE里的几个核心字段。",{"type":16,"tag":281,"props":1111,"children":1112},{"style":283},[1113,1121],{"type":16,"tag":17,"props":1114,"children":1115},{},[1116],{"type":16,"tag":289,"props":1117,"children":1120},{"alt":1118,"src":1119},"图7","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig7-urma-write-path.png",[],{"type":16,"tag":17,"props":1122,"children":1123},{},[1124],{"type":16,"tag":298,"props":1125,"children":1126},{"style":300},[1127],{"type":25,"value":1128},"图7 URMA Write包处理路径",{"type":16,"tag":17,"props":1130,"children":1131},{},[1132],{"type":25,"value":1133},"LD-ST路径面向同步细粒度访问，将远端访问映射到本地内存地址范围。配置阶段驱动把UBMD写入UB Decoder的两级页表，建立本地物理地址范围到远端UBMD的映射：",{"type":16,"tag":478,"props":1135,"children":1137},{"className":864,"code":1136,"language":866,"meta":7,"style":7},"ub_decoder_map(\n.local_pa_range = { 0x7F_E000_0000, 0x7F_E400_0000 },\n.remote_ubmd = { EID_B, 0x00042, 0x10_0000_0000, 0xCAFE_BABE }\n);\n",[1138],{"type":16,"tag":485,"props":1139,"children":1140},{"__ignoreMap":7},[1141,1149,1157,1165],{"type":16,"tag":298,"props":1142,"children":1143},{"class":873,"line":874},[1144],{"type":16,"tag":298,"props":1145,"children":1146},{},[1147],{"type":25,"value":1148},"ub_decoder_map(\n",{"type":16,"tag":298,"props":1150,"children":1151},{"class":873,"line":883},[1152],{"type":16,"tag":298,"props":1153,"children":1154},{},[1155],{"type":25,"value":1156},".local_pa_range = { 0x7F_E000_0000, 0x7F_E400_0000 },\n",{"type":16,"tag":298,"props":1158,"children":1159},{"class":873,"line":892},[1160],{"type":16,"tag":298,"props":1161,"children":1162},{},[1163],{"type":25,"value":1164},".remote_ubmd = { EID_B, 0x00042, 0x10_0000_0000, 0xCAFE_BABE }\n",{"type":16,"tag":298,"props":1166,"children":1167},{"class":873,"line":901},[1168],{"type":16,"tag":298,"props":1169,"children":1170},{},[1171],{"type":25,"value":934},{"type":16,"tag":17,"props":1173,"children":1174},{},[1175],{"type":25,"value":1176},"运行时CPU\u002FNPU直接用本地指针访问（注：如果NPU具备通信卸载能力，LD-ST访问可由NPU自己发起）：",{"type":16,"tag":478,"props":1178,"children":1180},{"className":864,"code":1179,"language":866,"meta":7,"style":7},"int *remote_ptr = (int*)0x7F_E000_1000;\nint value = *remote_ptr;                    \u002F\u002F 读远端HBM\n*remote_ptr = 42;                           \u002F\u002F 写远端HBM\n__sync_fetch_and_add(remote_ptr, 1);         \u002F\u002F 远端原子加\n",[1181],{"type":16,"tag":485,"props":1182,"children":1183},{"__ignoreMap":7},[1184,1192,1200,1213],{"type":16,"tag":298,"props":1185,"children":1186},{"class":873,"line":874},[1187],{"type":16,"tag":298,"props":1188,"children":1189},{},[1190],{"type":25,"value":1191},"int *remote_ptr = (int*)0x7F_E000_1000;\n",{"type":16,"tag":298,"props":1193,"children":1194},{"class":873,"line":883},[1195],{"type":16,"tag":298,"props":1196,"children":1197},{},[1198],{"type":25,"value":1199},"int value = *remote_ptr;                    \u002F\u002F 读远端HBM\n",{"type":16,"tag":298,"props":1201,"children":1202},{"class":873,"line":892},[1203,1208],{"type":16,"tag":298,"props":1204,"children":1205},{},[1206],{"type":25,"value":1207},"*remote_ptr = 42;",{"type":16,"tag":298,"props":1209,"children":1210},{},[1211],{"type":25,"value":1212},"                           \u002F\u002F 写远端HBM\n",{"type":16,"tag":298,"props":1214,"children":1215},{"class":873,"line":901},[1216],{"type":16,"tag":298,"props":1217,"children":1218},{},[1219],{"type":25,"value":1220},"__sync_fetch_and_add(remote_ptr, 1);         \u002F\u002F 远端原子加\n",{"type":16,"tag":17,"props":1222,"children":1223},{},[1224],{"type":25,"value":1225},"CPU\u002FNPU发出mov指令后，本地MMU识别该地址为Memory，请求送到UB Decoder。UB Decoder查本地两级页表，得到{EID, TokenID, UBA_BASE, TokenValue}，把本地物理地址的低位拼到UBA_BASE上形成完整的UBA。随后UB Controller按当前一致性域、地址属性和传输配置封包；在典型LD-ST配置中，可使用一致性访问语义和TP Bypass等低开销路径。CPU\u002FNPU流水线阻塞等待响应，响应到达后数据写入寄存器，流水线解除阻塞。",{"type":16,"tag":17,"props":1227,"children":1228},{},[1229,1231,1237],{"type":25,"value":1230},"对应用而言，",{"type":16,"tag":485,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":25,"value":1236},"int value = remote_ptr;",{"type":25,"value":1238},"这条C语句即可触发一次跨节点内存读。访问粒度可以细到单个Cache Line；实际延迟取决于拓扑距离、拥塞状态、表项命中率、一致性域配置以及具体芯片实现。",{"type":16,"tag":17,"props":1240,"children":1241},{},[1242],{"type":25,"value":1243},"两条路径共享同一套UMMU校验逻辑，但在发起侧走了不同的硬件路径。URMA依赖Jetty的SQ\u002FCQ管理，适合批量和异步场景；LD-ST依赖UB Decoder的地址反向翻译，适合细粒度和同步场景。它们不是替代关系，而是互补关系。AI训练中大多数场景是用URMA传梯度，用LD-ST读远端状态标志这样的混合使用。",{"type":16,"tag":38,"props":1245,"children":1247},{"id":1246},"_57-持续使用与权限回收",[1248],{"type":25,"value":1249},"5.7 持续使用与权限回收",{"type":16,"tag":17,"props":1251,"children":1252},{},[1253],{"type":25,"value":1254},"建立之后的持续访问成本极低。同一条UBMD可以被反复使用，每次访问无需重新建链。URMA只需重复post_send，LD-ST只需继续使用本地指针访问，硬件自动完成所有翻译、封包、校验。",{"type":16,"tag":17,"props":1256,"children":1257},{},[1258],{"type":25,"value":1259},"当协作结束，NPU B可以选择两种方式回收权限：完全撤销（urma_unregister_seg注销Segment，后续所有访问被拒绝）或者精细撤销（修改MAPTE的主\u002F备TokenValue，让特定用户的旧凭据失效而保留其他用户的访问）。精细撤销中主\u002F备TokenValue机制的价值充分显现：换锁芯而不销毁保险柜，无需通知其他用户，无需销毁内存段，完全在UMMU内部完成。",{"type":16,"tag":58,"props":1261,"children":1263},{"id":1262},"六软硬件协作的分工原则",[1264],{"type":25,"value":1265},"六、软硬件协作的分工原则",{"type":16,"tag":17,"props":1267,"children":1268},{},[1269,1271,1276],{"type":25,"value":1270},"回看整个流程，一个规律清晰浮现：",{"type":16,"tag":75,"props":1272,"children":1273},{},[1274],{"type":25,"value":1275},"控制平面软件主导，数据平面硬件主导",{"type":25,"value":1277},"。",{"type":16,"tag":17,"props":1279,"children":1280},{},[1281],{"type":25,"value":1282},"上电、UBFM枚举、CNA\u002FEID分配、路由下发、内存注册、TP Channel建立、Jetty创建、UB Decoder页表配置，这些建链相关动作大部分由软件（UBFM固件、OS驱动、应用库）主导，硬件被动响应（写寄存器、更新上下文表）。建链完成后，数据面的每次访问几乎完全由硬件自主完成：UB Controller封包，UMMU翻译和校验，DMA读写内存，CEG生成CQE。软件只负责提交请求和查询完成。",{"type":16,"tag":17,"props":1284,"children":1285},{},[1286],{"type":25,"value":1287},"这种分工不是偶然，而是基于一个根本的工程考量：建链次数少但逻辑复杂，交给软件更灵活；数据访问次数多但逻辑固定，交给硬件更高效。建链每个会话只做一次，涉及策略决策、资源协调、配置下发，用软件实现成本低、可迭代性强。数据访问每秒可能发生数百万次，延迟和吞吐都是关键指标，必须硬件化才能达到us级响应和TB级带宽。",{"type":16,"tag":17,"props":1289,"children":1290},{},[1291],{"type":25,"value":1292},"以一次典型的URMA Write为例，软件提供的仅仅是WQE里的几个字段：对端EID、TokenID、UBA、TokenValue、数据长度、操作码。其余所有包头字段都由硬件自主填入：SCNA来自寄存器读取，DCNA来自EID-CNA路由查询，SrcTPN\u002FDstTPN来自TPG调度器的选择，PSN来自TP Channel上下文的递增，CFG根据目标地址类型自动派生，LBF由硬件按负载均衡策略生成，ICRC由硬件流水计算。粗略估算，大约70%的包头字段由硬件自主产生，这正是UB能做到零CPU开销的根本原因。",{"type":16,"tag":17,"props":1294,"children":1295},{},[1296],{"type":25,"value":1297},"对LD-ST路径而言，CPU\u002FNPU的参与度更低。发出一条指令后就进入流水线阻塞，其余所有工作（本地物理地址到UBMD的翻译、封包、发送、接收响应、解除阻塞）都在硬件流水中完成。CPU\u002FNPU甚至不知道这是一块远端访问，它以为自己在等一次本地内存访问完成。",{"type":16,"tag":17,"props":1299,"children":1300},{},[1301],{"type":25,"value":1302},"这种分工模式让UB内存池化在应用层呈现两种接口形态：URMA面向异步批量传输，LD-ST面向同步细粒度访问。但底层是同一套硬件、同一套协议栈、同一套权限校验。",{"type":16,"tag":58,"props":1304,"children":1306},{"id":1305},"七两种访问模式的取舍",[1307],{"type":25,"value":1308},"七、两种访问模式的取舍",{"type":16,"tag":17,"props":1310,"children":1311},{},[1312],{"type":25,"value":1313},"URMA和LD-ST并非并列的两套协议，而是同一协议栈的两种使用方式。它们共享TAOpcode编码（Write都是0x03，Read都是0x06），共享UMMU的翻译与校验流程，但在发起侧的触发方式和完成管理上完全不同。",{"type":16,"tag":17,"props":1315,"children":1316},{},[1317],{"type":25,"value":1318},"URMA是异步编程模型，适合批量、大块、吞吐优先的场景。一次post_send可以提交一个GB级的传输请求，内部被切成大量TP Packet并发发送，硬件在后台完成所有传输，应用在合适的时机poll_cq查询结果。它的端到端延迟包含CPU提交、队列处理、网络传输和完成轮询开销，但吞吐更容易贴近链路上限。AI训练中的参数同步、Checkpoint保存、权重拉取、Pipeline激活值传递，都是URMA的典型舞台。",{"type":16,"tag":17,"props":1320,"children":1321},{},[1322],{"type":25,"value":1323},"LD-ST是同步编程模型，适合细粒度、低延迟、控制流场景，尤其适用融合算子这种极致性能优化场景（计算和通信细粒度pipeline）。一条mov或cmpxchg指令可以完成一次Cache Line级别的访问，语义更接近本地内存访问。原子操作可由硬件映射到对应Atomic事务，但具体ISA支持和一致性保证取决于处理器、UB Decoder配置和一致性域。此类访问通常不需要Jetty队列，可使用TP Bypass等低开销路径。分布式锁、远端状态查询、小控制字段更新、跨节点一致性维护，都是LD-ST适用的应用场景。",{"type":16,"tag":17,"props":1325,"children":1326},{},[1327],{"type":25,"value":1328},"在真实系统中两者往往混用。AI训练框架用URMA传梯度，用LD-ST读远端的同步标志位；MoE推理用LD-ST访问远端专家的路由表，用URMA批量回传中间激活值；分布式KV Cache用LD-ST查询元信息，用URMA搬运数据主体。这种混合使用体现了UB的接口分层价值：同一套底层协议和标识符体系，可以按场景选择不同访问路径。",{"type":16,"tag":17,"props":1330,"children":1331},{},[1332],{"type":25,"value":1333},"LD-ST适合细粒度同步访问，URMA则保留了异步模型在大块传输场景下的吞吐优势。LD-ST每次访问都让CPU\u002FNPU流水线阻塞等待RTT，对于传输1 GB数据这样的任务，阻塞上百万个RTT时间并不经济。URMA允许应用一次提交后让CPU\u002FNPU继续处理其他工作，DMA引擎在后台并发传输。两种模式各自覆盖不同访问需求，共同构成完整的访问能力谱系。",{"type":16,"tag":281,"props":1335,"children":1336},{"style":283},[1337,1345],{"type":16,"tag":17,"props":1338,"children":1339},{},[1340],{"type":16,"tag":289,"props":1341,"children":1344},{"alt":1342,"src":1343},"图8","\u002Fcategory\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology\u002Ffig8-urma-ld-st-matrix.png",[],{"type":16,"tag":17,"props":1346,"children":1347},{},[1348],{"type":16,"tag":298,"props":1349,"children":1350},{"style":300},[1351],{"type":25,"value":1352},"图8 URMA与LD-ST选择矩阵",{"type":16,"tag":17,"props":1354,"children":1355},{},[1356],{"type":25,"value":1357},"表3对比了URMA与LD-ST在触发方式、粒度、延迟和场景上的差异。",{"type":16,"tag":117,"props":1359,"children":1360},{},[1361,1382],{"type":16,"tag":121,"props":1362,"children":1363},{},[1364],{"type":16,"tag":125,"props":1365,"children":1366},{},[1367,1372,1377],{"type":16,"tag":129,"props":1368,"children":1369},{},[1370],{"type":25,"value":1371},"维度",{"type":16,"tag":129,"props":1373,"children":1374},{},[1375],{"type":25,"value":1376},"URMA异步模式",{"type":16,"tag":129,"props":1378,"children":1379},{},[1380],{"type":25,"value":1381},"LD-ST同步模式",{"type":16,"tag":145,"props":1383,"children":1384},{},[1385,1403,1421,1439,1457,1475,1493,1511,1529,1547],{"type":16,"tag":125,"props":1386,"children":1387},{},[1388,1393,1398],{"type":16,"tag":152,"props":1389,"children":1390},{},[1391],{"type":25,"value":1392},"触发方式",{"type":16,"tag":152,"props":1394,"children":1395},{},[1396],{"type":25,"value":1397},"API（post_send \u002F poll_cq）",{"type":16,"tag":152,"props":1399,"children":1400},{},[1401],{"type":25,"value":1402},"CPU指令（mov \u002F cmpxchg）",{"type":16,"tag":125,"props":1404,"children":1405},{},[1406,1411,1416],{"type":16,"tag":152,"props":1407,"children":1408},{},[1409],{"type":25,"value":1410},"访问粒度",{"type":16,"tag":152,"props":1412,"children":1413},{},[1414],{"type":25,"value":1415},"KB-GB批量",{"type":16,"tag":152,"props":1417,"children":1418},{},[1419],{"type":25,"value":1420},"Cache Line（64B）级",{"type":16,"tag":125,"props":1422,"children":1423},{},[1424,1429,1434],{"type":16,"tag":152,"props":1425,"children":1426},{},[1427],{"type":25,"value":1428},"访问延迟",{"type":16,"tag":152,"props":1430,"children":1431},{},[1432],{"type":25,"value":1433},"包含提交\u002F轮询开销，通常高于单次同步访问",{"type":16,"tag":152,"props":1435,"children":1436},{},[1437],{"type":25,"value":1438},"取决于拓扑、拥塞、表项命中和一致性域配置",{"type":16,"tag":125,"props":1440,"children":1441},{},[1442,1447,1452],{"type":16,"tag":152,"props":1443,"children":1444},{},[1445],{"type":25,"value":1446},"吞吐能力",{"type":16,"tag":152,"props":1448,"children":1449},{},[1450],{"type":25,"value":1451},"可打满链路带宽",{"type":16,"tag":152,"props":1453,"children":1454},{},[1455],{"type":25,"value":1456},"受单颗RTT限制",{"type":16,"tag":125,"props":1458,"children":1459},{},[1460,1465,1470],{"type":16,"tag":152,"props":1461,"children":1462},{},[1463],{"type":25,"value":1464},"CPU参与度",{"type":16,"tag":152,"props":1466,"children":1467},{},[1468],{"type":25,"value":1469},"post\u002Fpoll需要参与",{"type":16,"tag":152,"props":1471,"children":1472},{},[1473],{"type":25,"value":1474},"仅发指令，硬件阻塞\u002F硬件响应",{"type":16,"tag":125,"props":1476,"children":1477},{},[1478,1483,1488],{"type":16,"tag":152,"props":1479,"children":1480},{},[1481],{"type":25,"value":1482},"缓存一致性",{"type":16,"tag":152,"props":1484,"children":1485},{},[1486],{"type":25,"value":1487},"通常不参与",{"type":16,"tag":152,"props":1489,"children":1490},{},[1491],{"type":25,"value":1492},"可参与，取决于一致性域与地址属性配置",{"type":16,"tag":125,"props":1494,"children":1495},{},[1496,1501,1506],{"type":16,"tag":152,"props":1497,"children":1498},{},[1499],{"type":25,"value":1500},"原子操作",{"type":16,"tag":152,"props":1502,"children":1503},{},[1504],{"type":25,"value":1505},"协议级Atomic事务",{"type":16,"tag":152,"props":1507,"children":1508},{},[1509],{"type":25,"value":1510},"可映射到处理器支持的原子语义",{"type":16,"tag":125,"props":1512,"children":1513},{},[1514,1519,1524],{"type":16,"tag":152,"props":1515,"children":1516},{},[1517],{"type":25,"value":1518},"是否用Jetty",{"type":16,"tag":152,"props":1520,"children":1521},{},[1522],{"type":25,"value":1523},"是",{"type":16,"tag":152,"props":1525,"children":1526},{},[1527],{"type":25,"value":1528},"否",{"type":16,"tag":125,"props":1530,"children":1531},{},[1532,1537,1542],{"type":16,"tag":152,"props":1533,"children":1534},{},[1535],{"type":25,"value":1536},"传输层模式",{"type":16,"tag":152,"props":1538,"children":1539},{},[1540],{"type":25,"value":1541},"RTP \u002F CTP（含PSN重传）",{"type":16,"tag":152,"props":1543,"children":1544},{},[1545],{"type":25,"value":1546},"常用TP Bypass等低开销路径",{"type":16,"tag":125,"props":1548,"children":1549},{},[1550,1555,1560],{"type":16,"tag":152,"props":1551,"children":1552},{},[1553],{"type":25,"value":1554},"适用场景",{"type":16,"tag":152,"props":1556,"children":1557},{},[1558],{"type":25,"value":1559},"梯度同步、Checkpoint、权重拉取",{"type":16,"tag":152,"props":1561,"children":1562},{},[1563],{"type":25,"value":1564},"分布式锁、状态查询、小字段更新",{"type":16,"tag":58,"props":1566,"children":1568},{"id":1567},"八ai负载中的价值显现",[1569],{"type":25,"value":1570},"八、AI负载中的价值显现",{"type":16,"tag":17,"props":1572,"children":1573},{},[1574],{"type":25,"value":1575},"内存池化不是展板上的技术名词，而是解决具体工程问题的手段。几个典型的受益场景可以说明它的实战价值。",{"type":16,"tag":17,"props":1577,"children":1578},{},[1579,1584],{"type":16,"tag":75,"props":1580,"children":1581},{},[1582],{"type":25,"value":1583},"MoE大模型推理中的专家访问。",{"type":25,"value":1585}," DeepSeek V4这类模型有数百个专家，一次token路由可能激活其中若干个。传统方案下专家权重分散在不同节点，每次路由往往需要显式的Dispatch\u002FCombine通信。UB内存池化下，专家权重可以暴露为全局内存段，计算节点有机会通过LD-ST直接读取所需专家权重，从而减少显式通信和调度开销。具体延迟收益取决于专家放置、拓扑距离、访问粒度和缓存命中情况。",{"type":16,"tag":17,"props":1587,"children":1588},{},[1589,1594],{"type":16,"tag":75,"props":1590,"children":1591},{},[1592],{"type":25,"value":1593},"KV Cache的动态池化。",{"type":25,"value":1595}," 百万token上下文下的KV Cache可能占几十GB。不同请求之间的负载极不均衡。传统方案中，单请求超出本卡HBM上限只能拒绝或截断；UB内存池化允许KV Cache分散在整个集群内存池中，让内存紧张的节点按需使用其他节点的空闲HBM。它的价值在于提高可调度空间和削峰能力，实际利用率提升幅度需要结合负载分布、调度策略和远端访问比例评估。",{"type":16,"tag":17,"props":1597,"children":1598},{},[1599,1604],{"type":16,"tag":75,"props":1600,"children":1601},{},[1602],{"type":25,"value":1603},"参数服务器架构的重新评估。",{"type":25,"value":1605}," 经典PS架构在大模型训练场景中因为CPU处理瓶颈逐渐被AllReduce替代（推荐系统等场景仍在使用）。UB内存池化让PS在大模型训练中重新具备讨论空间：PS节点把权重暴露为全局内存段，Worker直接用LD-ST或URMA拉取权重，PS的CPU完全不介入数据面。PS的灵活性（异构Worker、动态调度）和AllReduce的性能（零CPU介入）第一次可以兼得。",{"type":16,"tag":17,"props":1607,"children":1608},{},[1609,1614],{"type":16,"tag":75,"props":1610,"children":1611},{},[1612],{"type":25,"value":1613},"训练中的低干扰Checkpoint。",{"type":25,"value":1615}," Checkpoint曾是训练中CPU与IO的共同瓶颈，每次保存可能占用数秒到数十秒的计算时间。UB内存池化下，Checkpoint可以通过URMA异步写入专用存储节点的共享内存，使计算与存储更充分并行。最终吞吐损失取决于Checkpoint频率、写入带宽、存储节点能力和后台传输调度。",{"type":16,"tag":17,"props":1617,"children":1618},{},[1619],{"type":25,"value":1620},"这些场景的共同点是：它们都不是UB发明的需求，而是AI工程师一直面对的痛点。UB通过提供统一的内存访问基础设施，让这些痛点有了系统性的解决方案，而不是让每个团队各自打补丁。基础设施的价值，往往体现在它把复杂的跨节点协作转化为可复用的系统能力。",{"type":16,"tag":58,"props":1622,"children":1624},{"id":1623},"结语从远程搬运到统一内存访问",[1625],{"type":25,"value":1626},"结语：从远程搬运到统一内存访问",{"type":16,"tag":17,"props":1628,"children":1629},{},[1630],{"type":25,"value":1631},"过去二十年，分布式计算的演进方向一直是让多台机器更好地协作。局部高速互联、跨卡内存扩展和跨机数据传输分别解决了不同层面的问题。面向8192卡尺度的AI集群，内存系统还需要同时具备全局地址组织、硬件级权限校验、低开销访问路径和可扩展管理能力。",{"type":16,"tag":17,"props":1633,"children":1634},{},[1635],{"type":25,"value":1636},"UB内存池化走到了这个交叉点上。它通过UB Controller、UMMU、UB Decoder、UB Switch、UBFM的端到端协同，让超节点规模的所有HBM第一次以统一的地址空间、统一的访问语义呈现给软件。对AI应用开发者而言，这意味着数据在哪里从架构设计一等公民变成运行时绑定部署细节。",{"type":16,"tag":17,"props":1638,"children":1639},{},[1640],{"type":25,"value":1641},"这不只是性能优化，更是编程模型的变化。当一个8192卡集群能够以统一地址和统一访问语义暴露给软件，分布式协作就可以从应用显式编排，逐步转移为基础设施默认提供的能力。",{"type":16,"tag":17,"props":1643,"children":1644},{},[1645],{"type":25,"value":1646},"推理模型把计算从秒级拉到分钟级，Agent把单次任务的状态从MB拉到GB，多模态把显存消耗推向另一个数量级。DeepSeek V4这一代模型对内存系统的要求，早已超出了单卡更大HBM能解决的范围。整个行业需要的是一次从远程数据访问到统一内存访问的范式变化。",{"type":16,"tag":17,"props":1648,"children":1649},{},[1650],{"type":25,"value":1651},"UB内存池化的意义，在于把跨节点内存访问从应用显式搬运转向基础设施级访问语义。这是一种从局部优化到机制重构的变化，也是UB作为下一代互联协议的重要技术价值。",{"type":16,"tag":58,"props":1653,"children":1655},{"id":1654},"参考资料",[1656],{"type":25,"value":1654},{"type":16,"tag":500,"props":1658,"children":1659},{},[1660,1665,1670,1675],{"type":16,"tag":504,"props":1661,"children":1662},{},[1663],{"type":25,"value":1664},"UB Base Specification 2.0.1",{"type":16,"tag":504,"props":1666,"children":1667},{},[1668],{"type":25,"value":1669},"UB Firmware Specification 2.0",{"type":16,"tag":504,"props":1671,"children":1672},{},[1673],{"type":25,"value":1674},"UB Software Reference Design for OS 2.0",{"type":16,"tag":504,"props":1676,"children":1677},{},[1678],{"type":25,"value":1679},"UB SuperPOD Architecture White Paper",{"type":16,"tag":1681,"props":1682,"children":1683},"style",{},[1684],{"type":25,"value":1685},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":7,"searchDepth":901,"depth":901,"links":1687},[1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701],{"id":40,"depth":883,"text":40},{"id":271,"depth":883,"text":274},{"id":321,"depth":883,"text":324},{"id":351,"depth":883,"text":354},{"id":468,"depth":883,"text":471},{"id":556,"depth":883,"text":559},{"id":624,"depth":883,"text":627},{"id":806,"depth":883,"text":809},{"id":822,"depth":883,"text":825},{"id":853,"depth":883,"text":856},{"id":952,"depth":883,"text":955},{"id":987,"depth":883,"text":990},{"id":1020,"depth":883,"text":1023},{"id":1246,"depth":883,"text":1249},"markdown","content:zh:news:large-scale-ai-cluster-memory-access-mechanism-technology.md","content","zh\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology.md","zh\u002Fnews\u002Flarge-scale-ai-cluster-memory-access-mechanism-technology","md",1785413945413]