灵犀核心模块目录¶
本页是中文摘要;完整规范来源为
rtl/LinxCore/docs/architecture/module-catalog.md。
本章定义了现场直播下 灵犀Core 的规范模块结构
v0.58.1 超标量合约。
它冻结了哪些模块系列拥有架构行为,哪些文件是 这些行为的规范所有者,以及这些模块如何组成 全核心。这里的模块所有权是规范的;辅助实用程序不会替换 舞台所有者。
结构规则¶
- 每个架构上可见的阶段、队列、块控制所有者和引擎 边界必须有一个命名的模块所有者。
- 顶级包装器可以组成这些所有者、导出探针或适应 测试平台集成,但他们不得重新定义架构所有权。
- 仅连接顶壳是
src/linxcore_top.py的目标结构,src/top/top.py和src/top/modules/export_core.py;阶段本地状态和 所有权逻辑属于专用子模块。 src/common/中的共享实用程序文件可以定义类型、解码器、元数据、 或帮手;它们不能替代舞台模块。- 跟踪可见性必须来自真实所有者模块或专用探针 模块,而不是父级重建。
顶级组合模块¶
src/linxcore_top.py¶
- 定义规范导出的顶级模块名称
linxcore_top。 - 附加提交、块和管道视图使用的顶级探针模块 可观察性。
- 拥有顶级配置参数,例如内存大小和获取包 宽度别名。
src/top/modules/export_core.py- 定义 LinxCoreTopExport,启动/导出集成 shell。¶
- 组成后端、内存、探针导出、块控制、LSU 和引擎 适配器。
- 拥有由锁步和跟踪通道使用的主机馈送指令缓冲区路径。
- 当 IFU 源在启动时被旁路时,它仍然保留相同的内容 解码和跟踪工具看到的下游阶段所有权模型。
src/top/top.py¶
- 定义
LinxCoreTop,组合解耦 I-SIDE 与 B-SIDE。 - 实例化 I-SIDE
I-F0 -> I-F1 -> I-F2 -> I-F3 -> I-F4 -> Instruction Buffer -> D1、 B-SIDEB-F0 -> ... -> B-F4、 后端、块控制 路径、LSU、内存和引擎适配器。 - 用作级与级接线名称的参考组合。
- 必须收敛到仅连接的组合外壳作为阶段本地跟踪 并且教养逻辑被强加给专心致志的孩子。
src/mem/mem2r1w.py 和 src/mem/byte_mem_2r1w.py¶
- 拥有指令和数据路径使用的规范内存宏包装器。
- 保留启动和使用的分割指令/数据访问模型 跟踪验证流程。
共享规范和元数据模块¶
配置和结构元数据¶
src/common/config.pysrc/common/params.pysrc/common/module_specs.pysrc/common/meta_specs.py
这些文件定义结构参数、类型化接口元数据以及 规范的构建时配置规则。
ISA 和解码所有权¶
src/common/isa.pysrc/common/decode.pysrc/common/decode16.pysrc/common/decode32.pysrc/common/decode48.pysrc/common/decode64.pysrc/common/decode_f4.py
这些文件定义了操作码的身份和解码行为 前端/解码阶段。
架构元数据和跟踪元数据- src/common/stage_tokens.py¶
src/common/types.pysrc/common/interfaces.pysrc/common/exec_uop.pysrc/common/uid_allocator.py
这些文件定义了阶段令牌目录、通用信号包、uop 阶段、区块和跟踪合约所需的元数据和 UID 分配。
IFU 模块¶
完整规范见 ifu.md。
I-SIDE¶
i_f0:接受/选择 PC,分配 request/STID/epoch 身份;i_f1:并行启动 ITLB 与 L1I;i_f2:汇合翻译/cache 状态,ITLB miss 产生 I-SIDE inner flush;i_f3:拥有 cacheline、ECC/refill、byte cursor 和跨 line carry;i_f4:判断 2/4/6/8-byte 长度,只识别BSTART/BSTOP,零扩展为 64-bit 并写 Instruction Buffer;instruction_buffer:位于 I-F4 与 D1 之间,按 STID 保存指令并向 D1 提供四条连续insn64;itlb和l1i:只属于 I-SIDE。任何 BHC/fetch-cache 实现都是 L1I 的实现细节,不属于 B-SIDE。
B-SIDE¶
b_f0:L0/NLP、checkpoint、GHR/GHRQ 快照;b_f1:uBTB 和投机 RAS;b_f2:PBTB/BTB 和 BIM;b_f3:short/medium TAGE 并启动 IBTB;b_f4:基于匹配 I-F4 boundary metadata 的 static prediction、 long TAGE、IBTB/loop 和 final arbitration;- arbiter 使用
B-F4 > B-F3 > B-F2 > B-F1 > B-F0 > sequential,B-F4 内使用 exact RAS/high-confidence IBTB target、loop > long-TAGE > short-TAGE > BIM > staticdirection 和 BTB direct target。
I/B 两侧独立反压、不锁步。backend restart 作为 typed recovery source 优先级最高;后级 B-stage 纠正已使用预测时 inner-flush I-SIDE 并重启 I-F0,B-F4 是最后一个此类点。final record 逐 lane 进入 D1;post-B-F4 mismatch 使用 Dispatch/BRU flush/recover。
src/top/modules/xchk.py¶
- 拥有明确的
XCHK验证/导出边界。 - 将交叉检查相关性保留为命名模块边界而不是 用匿名顶级胶水合成它。
src/top/modules/export_store_drain.py¶
- 拥有导出 shell 使用的 SCB/D-cache-stub store-drain 助手。
- 将本地存储耗尽状态和辅助实例拉出
export_core.py因此顶壳仍然更接近纯粹的成分。
解码、重命名和重命名后调度模块¶
src/bcc/ooo/dec1.py¶
- 拥有
D1。 - 从 Instruction Buffer 读取四条
insn64并做完整译码;资源身份由 后续 admission owner 原子分配。
src/bcc/ooo/dec2.py¶
- 拥有
D2。 - 执行重命名请求/翻译准备并解析 ROB 可见
BSTART和BSTOP的边界元数据。
src/bcc/ooo/ren.py- 拥有 D3。¶
- 将架构操作数映射为重命名/标记的操作数形式并用作 重命名的 uop 锁存器边界。
src/bcc/ooo/s1.py¶
- 拥有
S1。 - 执行重命名后调度准备、执行类路由和准备 针对非规范就绪表进行查询。
src/bcc/ooo/s2.py¶
- 拥有
S2。 - 将实际 IQ 条目写入选定的物理 IQ。
src/bcc/ooo/renu.py¶
- 拥有重命名的调度路径使用的重命名状态支持结构。
- 供应重命名簿记必须与
D3保持一致 合同。
src/bcc/ooo/pc_buffer.py¶
- 拥有分支恢复和合法-BSTART使用的PC缓冲区元数据存储 检查。
src/bcc/ooo/flush_ctrl.py¶
- 拥有显式刷新和重定向控制边界。
- 提供架构刷新所有者而不是隐藏重定向策略 在不相关的模块内。
src/bcc/ooo/rob.py¶
- 拥有面向阶段映射路径的 Janus/BCC ROB 阶段边界。
- 在阶段分解中提供 ROB 可见状态,无需替换 规范后端 ROB 所有者。
后端编排模块¶
src/bcc/backend/backend.py¶
- 定义
LinxCoreBackend,规范的后端包装器。 - 将实时后端组合委托给跟踪导出支持的核心构建。
src/bcc/backend/decode.py¶
- 定义
LinxCoreDecodeStage。 - 拥有功能管道的后端本地解码打包。
src/bcc/backend/rename.py¶
- 定义
LinxCoreRenameStage和LinxCoreCommitRenameStage。 - 拥有重命名分配和提交端重命名发布。
src/bcc/backend/dispatch.py- 定义LinxCoreDispatchStage。¶
- 拥有从解码/重命名到后端的 ROB、IQ 和 LSU 分配切换 执行机。
src/bcc/backend/issue.py¶
- 定义
LinxCoreIssuePicker、LinxCoreIssueStage和LinxCoreIqUpdateStage。 - 拥有 IQ 就绪、最早优先选择、
inflight保留和发布 合法性。
src/bcc/backend/prf.py¶
- 定义
LinxCorePrf。 - 拥有物理寄存器文件状态和问题使用的读/写可见性 写回。
src/bcc/backend/lsu.py¶
- 定义
LinxCoreLsuStage。 - 拥有后端 LSU 阶段行为及其与问题/提交的集成。
src/bcc/backend/rob.py¶
- 定义ROB阶段模块,例如
LinxCoreRobCommitReadStage,LinxCoreRobCtrlStage和LinxCoreRobEntryUpdateStage。 - 拥有精确的退休簿记和ROB端查询/更新边界。
src/bcc/backend/commit.py¶
- 定义
LinxCoreCommitHeadStage和LinxCoreCommitCtrlStage。 - 拥有架构提交选择和有序退出端控制。
src/bcc/backend/wakeup.py¶
- 定义
LinxCoreHeadWaitStage。 - 拥有唤醒、头部等待和重放端可见性约束。
src/bcc/backend/engine.py¶
- 定义
LinxCoreCommitSelectStage和规范的后端组成 帮手。 - 拥有提交端选择、块状态更新和执行系列 组成胶水。
src/bcc/backend/code_template_unit.py¶
- 定义
CodeTemplateUnit。 - 拥有模板微指令生成和模板端跟踪标识。
src/bcc/backend/modules/- 包含重点后端模块系列,例如块结构桥接、¶
提交跟踪导出、ROB 银行、PC 缓冲区阶段、恢复验证、 内存读取仲裁、执行管道集群和存储缓冲区阶段。 - 这些是后端行为的规范子模块所有者,而不是可选的调试 包装纸。
整数和 标量 执行模块¶
src/bcc/iex/iex.py¶
- 拥有顶级整数执行组合边界。
src/bcc/iex/iex_alu.py¶
- 拥有 ALU 执行行为。
src/bcc/iex/iex_bru.py¶
- 拥有分支条件和分支恢复执行行为。
src/bcc/iex/iex_agu.py¶
- 拥有 LSU 绑定操作的地址生成执行行为。
src/bcc/iex/iex_std.py¶
- 拥有存储数据准备行为。
src/bcc/iex/iex_fsu.py¶
- 拥有其他未涵盖的 标量 功能/系统执行行为 整数执行单元。
LSU 和内存排序模块¶
src/bcc/lsu/lsu.py¶
- 拥有 LSU 组成边界。
- 集成队列、缓存端、存储消耗和内存数据流所有者。
src/bcc/lsu/liq.py¶
- 拥有
LIQ,加载发出队列。
src/bcc/lsu/lhq.py¶
- 拥有
LHQ,加载命中/加载返回队列状态。
src/bcc/lsu/stq.py¶
- 拥有
STQ,推测存储队列。
src/bcc/lsu/scb.py¶
- 拥有
SCB,提交存储合并缓冲区。
src/bcc/lsu/mdb.py¶
- 拥有
MDB,未命中/数据缓冲区跟踪边界。
src/bcc/lsu/l1d.py¶
- 拥有
L1D,数据缓存端接口边界。
src/bcc/lsu/store_pack.py¶
- 拥有用于承诺存储路径的存储有效负载行打包。
src/bcc/lsu/lsu_store_drain.py- 拥有为 D 缓存端路径提供数据的提交存储排出管道。¶
src/bcc/lsu/dcache_stub.py¶
- 拥有当前启动流使用的功能 D 缓存存根。
块控制模块¶
src/bcc/bctrl/bisq.py¶
- 拥有
BISQ,块发布队列。
src/bcc/bctrl/bctrl.py¶
- 拥有
BCTRL,块命令/控制路由边界。
src/bcc/bctrl/brenu.py¶
- 拥有块端重命名和资源元数据处理。
src/bcc/bctrl/brob.py¶
- 拥有
BROB,包括BID分配、区块完成、区块异常 捕获和最旧的块退休门控。
src/bcc/block_struct/¶
- 包含针对 ROB/BROB 行为的重点块结构模型和测试。
- 该包支持块结构验证并且必须保持一致 与实时区块控制合约。
发动机和加速器模块¶
src/csu/subsystem.py¶
- 拥有统一的CSU父子系统,吸收IFU充值流量并 CSU 内部 TLSU 传输所有权。
src/csu/{tma_cmd_frontend,tma_ctx_tracker,tma_l2_client,client_arb}.py¶
- 拥有 CSU 内部 TLSU 命令入口、上下文跟踪、L2 客户端 转换和再填充与 TLSU 仲裁边界。
src/vec/vec.py¶
- 拥有
VEC发动机边界。
src/tma/tma.py(TLSU 的历史实现文件名)¶
- 保留独立 TLSU 单元测试的兼容外观;
tma文件名不是架构术语。 - Janus顶层整合不再将其视为规范的南向 运输业主。
src/cube/cube.py¶
- 拥有
CUBE发动机边界。
src/tau/tau.py (历史兼容名)¶
- 保留历史
TAU文件名的兼容边界。当前 ISA 中TEPL仅为 Mode/Function 编码载体,操作按 catalog 路由到VEC或SFU;TAU不是规范语义引擎。
src/tmu/noc/node.py 和 src/tmu/noc/pipe.py¶
- 拥有 TMU NoC 传输边界。
src/tmu/sram/tilereg.py- 拥有面向瓦片的引擎使用的瓦片寄存器 SRAM 状态。¶
可观察性和导出模块¶
src/probes/pipeview_probe.py¶
- 拥有管道阶段可观测性导出。
src/probes/block_probe.py¶
- 拥有区块生命周期可观察性导出。
src/probes/commit_probe.py¶
- 拥有提交流可观察性导出。
可观察性模块必须消耗真实所有者状态。他们绝不能发明一种 并行架构管道。