第1004章 算法模块切换机制设计(1 / 2)
卷首语
1964 年 11 月,19 组算法模块划分定稿后,研发团队面临新的技术瓶颈:19 组模块虽功能独立、边界清晰,但加密流程需按 “输入 - 分组 - 矩阵 - 密钥 - 输出” 顺序连续执行,若模块间切换存在延迟、数据丢失或冲突,将导致整体加密中断。此时,设计适配磁芯存储器的模块切换机制,成为连接 “独立模块” 与 “连续流程” 的关键。这场为期 1 个月的设计工作,通过流程触发、双缓存续传、异常降级等技术,实现了模块切换时加密流程的 “零中断、零丢失”,为后续代码固化后算法的顺畅运行筑牢了衔接根基,也成为早期模块化算法 “流程协同” 的典型设计范式。
一、切换机制设计的背景与核心目标
模块划分完成后,李工团队在模拟测试中发现:19 组模块需通过磁芯存储器数据区(0x4 地址”)、状态寄存器定义(如 “0x8),现存于研发团队档案库,包含核心逻辑图、状态寄存器定义表、双缓存地址规划,共 22 页,由郑工、马工共同绘制,是核心逻辑设计的直接凭证。
档案中 “核心逻辑图” 采用时序图绘制:横轴为时间(单位 μs),纵轴为模块状态(空闲 \/ 运行 \/ 完成),标注 “分组模块在 0.7μs 时输出完成信号→切换控制单元在 0.75μs 时触发矩阵模块→矩阵模块在 0.75μs-1.45μs 运行→1.45μs 输出完成信号”,切换延迟仅 0.05μs,满足≤0.1μs 的目标。
状态寄存器定义表详细记录:“0x8:输入处理类状态(0 = 空闲,1 = 运行,2 = 完成);0x8005:矩阵运算类状态(0 = 空闲,1 = 运行,2 = 完成,3 = 故障);0x8010:密钥管理类数据地址(存储当前密钥数据的起始地址,如 0x5 的第 2 位(完成标志),切换控制单元检测到该标志后,立即触发 “明文长度统计模块”(输入 - 02)启动,读取校验后的明文数据,触发延迟≤0.05μs。
时序触发机制:适用于需定时同步的节点(如 “密钥同步模块→其他节点”),切换控制单元按固定周期(如 1μs)触发模块交互 —— 例如密钥同步模块每 1μs 向状态寄存器写入最新密钥种子地址,其他模块按周期读取该地址,确保多节点密钥同步,时序误差≤0.02μs。
优先级设计:针对多模块同时请求切换的场景(如 “异常处理模块” 与 “矩阵模块” 同时发信号),按 “流程关键度” 划分优先级:核心流程模块(如矩阵、密钥)优先级为 1 级(最高),辅助模块(如日志记录)为 3 级,异常处理模块为 2 级 —— 例如异常信号与日志请求同时触发时,优先处理异常切换,确保核心流程不中断。
12 月 2 日,团队完成《切换触发与优先级设计报告》,包含触发方式定义、优先级表、冲突处理流程,通过模拟测试验证:100 次多模块并发请求中,优先级判断准确率 100%,无核心流程延迟,触发机制稳定可靠。
五、数据连续性保障的双缓存与校验设计
马工团队聚焦数据连续性,细化双缓存方案与数据校验机制,确保切换时数据无丢失、无错误,两大措施形成 “续传 + 校验” 的双重保障。
双缓存读写时序设计:采用 “乒乓读写” 模式,前一模块(如分组)写完 A 区后,向控制单元发送 “A 区就绪” 信号,控制单元触发后一模块(如矩阵)读 A 区;同时分组模块开始写 b 区,b 区写完后发 “b 区就绪” 信号,矩阵读完 A 区后立即读 b 区,实现 “写 - 读 - 写” 无缝衔接,数据等待时间 = 0。
数据长度与格式校验:每个模块写缓存区时,在数据末尾附加 “校验头”(2 字节,包含数据长度、校验和),后一模块读取时先校验:若长度与预期一致(如 37 字节分组)且校验和正确(如字节和模 256 等于校验头记录值),则正常处理;若校验失败,立即请求前一模块重发,重发成功率≥99.9%,避免错误数据进入下一模块。
缓存区满溢处理:当模块写数据速度超过后一模块读取速度(如矩阵模块运算快,密钥模块处理慢),控制单元检测到缓存区满(如 b 区写满且 A 区未读完)时,暂停前一模块写操作,发送 “等待信号”,待 A 区读完后恢复写操作,避免数据溢出丢失,满溢处理响应时间≤0.03μs。
12 月 5 日,团队开展双缓存续传测试:用 1000 字符明文(28 组)测试 “分组→矩阵→密钥” 全流程,双缓存并行读写无等待,数据校验成功率 100%,无满溢情况,数据连续性完全达标,形成《数据连续性测试报告》。
六、历史补充与证据:数据连续性测试档案
1964 年 12 月的《“73 式” 模块切换数据连续性测试档案》(档案号:Sq-1964-002),现存于军事通信技术档案馆,包含测试方案、原始数据、波形图,共 36 页,由马工、郑工共同记录,是数据保障设计的核心证据。
档案中 “测试方案” 明确:测试数据为 1000 字符军事指令明文(AScII 码,分 28 组 37 字节向量),测试节点为 “分组→矩阵”“矩阵→密钥”“密钥→输出”,监测指标为切换延迟、数据丢失率、校验失败率,测试环境为磁芯存储器模拟环境(地址 0x4000-0x807F)。
原始数据页(12 月 5 日)记录:“第 1 组分组数据(0x41-0x6F,对应 AScII 码 A-o 等)写入 A 区 0x4000-0x4024,耗时 0.08μs;矩阵模块 0.05μs 后开始读取,耗时 0.7μs;同时分组模块写入第 2 组数据至 b 区 0x4025-0x4049,耗时 0.08μs;矩阵读完 A 区后立即读 b 区,无等待,切换延迟 0.05μs \/ 次”,时序数据精准。
数据校验记录显示:“28 组数据均附加 2 字节校验头,如第 5 组校验头为 0x25(长度 37)、0x8c(校验和),矩阵模块读取后计算校验和为 0x8c,与校验头一致,校验成功率 100%;模拟 10 次校验错误(手动修改 1 字节),模块均成功请求重发,重发后校验通过,重发成功率 100%”,校验机制有效。
波形图页附示波器记录:“分组模块写 A 区的信号波形(地址 0x4000-0x4024,数据有效电平高)与矩阵模块读 A 区的波形(读使能信号高)无重叠,并行读写时序正确;无满溢时缓存区状态波形(A\/b 区就绪信号交替高),验证乒乓读写模式可行。
七、异常切换处理与降级机制
团队预判模块故障(如矩阵模块运算溢出、密钥模块求解失败)可能导致切换中断,设计 “异常检测 - 故障定位 - 降级切换” 的三级处理机制,确保流程不中断。
↑返回顶部↑