第1004章 算法模块切换机制设计(1 / 1)
卷首语
1964 年 11 月,19 组算法模块划分定稿后,研发团队面临新的技术瓶颈:19 组模块虽功能独立、边界清晰,但加密流程需按 “输入 - 分组 - 矩阵 - 密钥 - 输出” 顺序连续执行,若模块间切换存在延迟、数据丢失或冲突,将导致整体加密中断。此时,设计适配磁芯存储器的模块切换机制,成为连接 “独立模块” 与 “连续流程” 的关键。这场为期 1 个月的设计工作,通过流程触发、双缓存续传、异常降级等技术,实现了模块切换时加密流程的 “零中断、零丢失”,为后续代码固化后算法的顺畅运行筑牢了衔接根基,也成为早期模块化算法 “流程协同” 的典型设计范式。
一、切换机制设计的背景与核心目标
模块划分完成后,李工团队在模拟测试中发现:19 组模块需通过磁芯存储器数据区(0x4000-0x7FFF)交互数据,若直接按流程调用,易出现 “数据未写完就切换”(如分组模块未输出完整向量,矩阵模块已开始读取)或 “切换延迟过长”(如密钥模块等待矩阵数据耗时超 0.5μs),导致加密流程卡顿,甚至数据错乱。
基于 “73 式” 19 项核心指标与流程需求,团队明确切换机制三大目标:一是切换延迟≤0.1μs(匹配模块运算速度,如矩阵变换单次 0.7μs,切换延迟需可忽略);二是数据连续性,切换过程中数据丢失率 = 0(确保明文 - 密文完整映射);三是兼容性,适配磁芯存储器的地址访问逻辑(如地址指针跳转、数据读写时序)与 19 组模块的接口规范。
设计工作由郑工牵头(熟悉模块交互逻辑),组建 4 人专项小组:郑工(整体机制设计,把控流程衔接)、马工(数据缓存设计,负责续传保障)、吴工(触发逻辑设计,适配矩阵等运算模块)、王工(硬件适配,衔接磁芯存储器与运算单元),确保机制覆盖 “软件逻辑 - 硬件接口” 全环节。
设计周期规划为 1 个月(1964.11.16-1964.12.15),分三阶段:第一阶段(11.16-11.25)梳理模块交互路径,确定切换核心需求;第二阶段(11.26-12.10)设计切换逻辑、缓存方案与异常处理;第三阶段(12.11-12.15)开展模拟测试,优化机制并形成设计报告,衔接代码固化。
设计启动前,团队梳理 19 组模块的交互图谱:明确 “输入处理→分组补零→矩阵运算→密钥管理→加密输出” 的正向流程,以及 “密文输入→解密处理→分组补零→矩阵逆运算→明文输出” 的反向流程,标注 28 个关键切换节点(如 “分组模块→矩阵模块”“矩阵模块→密钥模块”),为机制设计提供路径依据。
二、切换机制的核心逻辑设计
郑工团队基于模块交互图谱,确定 “流程触发 + 状态同步 + 双缓存续传” 的核心设计逻辑,确保切换时流程连续、数据不丢失,三大逻辑环环相扣。
流程触发逻辑:采用 “模块完成信号” 触发切换,每个模块执行完功能后,向 “切换控制单元” 发送 “完成信号”(如分组模块输出 37 字节向量后,置位状态寄存器的 “分组完成” 位),控制单元接收信号后,触发下一个关联模块启动(如触发矩阵模块读取分组数据),避免 “提前切换” 或 “延迟切换”。
状态同步逻辑:在磁芯存储器中开辟 128 字节 “状态寄存器区”(地址 0x8000-0x807F),记录 19 组模块的实时状态(空闲 / 运行 / 完成 / 故障)与数据地址(如分组模块输出数据的存储地址 0x4000-0x4024),切换控制单元通过读取该寄存器,同步掌握模块状态与数据位置,避免切换时数据地址错乱。
双缓存续传逻辑:针对数据交互频繁的节点(如 “矩阵模块→密钥模块”),在磁芯存储器数据区设置双缓存区(A 区 0x4000-0x4024、B 区 0x4025-0x4049),前一模块(如矩阵)先向 A 区写数据,写完后触发切换,密钥模块读取 A 区数据;同时矩阵模块可向 B 区写下一帧数据,实现 “写 - 读” 并行,避免数据覆盖或等待,保障流程连续。
11 月 25 日,团队完成核心逻辑框架设计,绘制《模块切换核心逻辑图》,标注触发信号路径(如 “分组完成信号→0x8001 地址”)、状态寄存器定义(如 “0x8000:系统总状态”)、双缓存地址范围,为后续细节设计提供框架支撑。
三、历史补充与证据:切换逻辑设计档案