ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

香山 XSNoCTop:3 个机制让多核互联不卡壳

香山 XSNoCTop:3 个机制让多核互联不卡壳 香山 XSNoCTop3 个机制让多核互联不卡壳【免费下载链接】XiangShanOpen-source high-performance RISC-V processor项目地址: https://gitcode.com/GitHub_Trending/xia/XiangShan香山处理器的 XSNoCTop 位于 核心L2、L3 共享缓存与外设之间负责把一致性流量、IO 流量和低功耗管理统一收口。核心数从 4 翻到 16 时共享总线形态最先卡壳所有核的 L2 读写请求在同一条信道排队核越多延迟越高。XSNoCTop 把单一共享信道换成按目的地路由的节点网络每路流量各走各的链路互不阻塞。一张图看懂 XSNoCTop 的数据流XSNoCTop生成模块名为 XSTop用一串 trait 拼装HasXSTile 挂上核心与 L2HasXSTileCHIImp 打开核侧 CHIAMBA 5 一致性总线接口HasSeperatedBusOpt 提供 AXI 或 TileLink另一种开放总线协议的外设独立总线HasIMSIC、HasTraceIO、HasClintTimeImp、HasCoreLowPowerImp 分别接管中断、trace、时间信号与低功耗。L3 采用 OpenLLC外挂式开放 L3形态核侧全部走 CHI 接入。对外则主要暴露核侧 CHI 口 io_chi、独立总线口 io_sepbus、IMSIC AXI4 口和低功耗握手 io。数据面理清后核与 SoC 之间的信号未必同频跨时钟域的问题绕不开。跨时钟域异步桥配置项与生效条件核心与外设总线不在同一时钟频率下信号直连会产生亚稳态。XSNoCTop 的解法是在时钟域边界插一层握手异步桥配置项EnableCHIAsyncBridge开启时HasXSTileCHIImp 在核侧 CHI 外例化一级 CHIAsyncBridgeSink两侧各自跑频、独立管理复位外设独立总线则经 TLAsyncCrossingSink 做同样的异步穿越。说白了相当于在时钟域边界放一个三级同步 FIFO信号在目的时钟重新采样后才可用。配置项默认值作用EnableCHIAsyncBridgeSome(depth16, sync3)核侧 CHI 插入异步桥SeperateBusNONE / TL / AXI独立总线协议选择WFIClockGatefalseWFI 期间时钟门控UsePrivateClintfalse定时器中断来源这些配置项与 require 约束都集中在 SoC.scalaZhuJiang 封闭式 LLC 不支持异步桥UsePrivateClint 为 true 时要求 SeperateBus 不能是 NONE。时钟域跨过去之后控制面还得决定核什么时候能睡、怎么睡下去。⚡ 低功耗状态机7 个跳转与唤醒条件下电流程有严格次序先冲刷 L2 防止脏数据丢失再等核进入 WFI低功耗等待指令然后逐步与 SoC 握手任何一步未完成流程都停在原地。实现在 HasCoreLowPowerImplpStateNext 定义了 7 个状态 sIDLE → sL2FLUSH → sWAITWFI → sEXITCO → sWAITQ → sQREQ → sPOFFREQ每个跳转都有明确条件l2_flush_done、isWFI、syscoreq/syscoack、QACTIVE/QACCEPTn跨域输入统一经三级移位寄存器同步走到 sPOFFREQ 才拉高 o_cpu_no_op 告知 SoC 可以下电。WFI 一侧另有 4 状态 WfiStateNextsNORMAL→sGCLOCK→sAWAKE/sFLITWAKE开启 WFIClockGate 后msip、mtip、meip、seip、nmi、debug、msi 等 8 路中断源都能解除门控把核叫醒。跳转条件逐条列在 LowPowerState.scala。IMSIC 中断唤醒、trace 接口与时间信号穿越HasIMSIC 接入 imsic_bus_topRISC-V AIA 标准中断控制器MSI 经 msiInfo 握手直连核心不占总线流量msi_info_vld 同时列入 WFI 唤醒源低功耗核可被中断叫醒。HasTraceIO 把核心的指令 traceiaddr、iretire、trap cause 等以 traceCoreInterface 暴露给外部编码器排查互联问题不必逐段翻波形。SoC 的 64 位时间信号在开启 EnableClintAsyncBridge 时经 AsyncQueueSource 穿越时钟域机制与 CHI 异步桥同源。跟着 trait 读XSNoCTop.scala从第 473 行的 class XSNoCTop 定义进入混入的每个 trait 对应前文一个机制——HasXSTileCHIImp 是 CHI 数据面HasSeperatedBusOpt 是独立总线HasCoreLowPowerImp 是低功耗状态机。LowPowerState.scalalpStateNext 与 WfiStateNext 两个函数逐条列出跳转条件适合对照状态机验证。SoC.scalaSoCParams 各配置项的默认值与互斥约束理解为什么某些组合作为非法配置。Default.yml项目实际生效的开关如 EnableCHIAsyncBridge: true读完代码后核对落点。用分布式一致性换来了并行数据通路代价是 7 步下电握手与更多配置项当前仅支持 OpenLLCZhuJiang 需关闭异步桥。把 Default.yml 里 WFIClockGate 改为 true 跑一次仿真观察 WFI 期间 cpuClockEn 的门控窗口就能直观看到这套机制在波形上的表现。【免费下载链接】XiangShanOpen-source high-performance RISC-V processor项目地址: https://gitcode.com/GitHub_Trending/xia/XiangShan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表