卷首语
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:系统总状态”)、双缓存地址范围,为后续细节设计提供框架支撑。
三、历史补充与证据:切换逻辑设计档案
1964 年 11 月的《“73 式” 算法模块切换逻辑设计档案》(档案号:Sq-1964-001),现存于研发团队档案库,包含核心逻辑图、状态寄存器定义表、双缓存地址规划,共 22 页,由郑工、马工共同绘制,是核心逻辑设计的直接凭证。
档案中 “核心逻辑图” 采用时序图绘制:横轴为时间(单位 μs),纵轴为模块状态(空闲 \/ 运行 \/ 完成),标注 “分组模块在 0.7μs 时输出完成信号→切换控制单元在 0.75μs 时触发矩阵模块→矩阵模块在 0.75μs-1.45μs 运行→1.45μs 输出完成信号”,切换延迟仅 0.05μs,满足≤0.1μs 的目标。
状态寄存器定义表详细记录:“0x8000:系统总状态(0 = 空闲,1 = 运行,2 = 异常);0x8001:输入处理类状态(0 = 空闲,1 = 运行,2 = 完成);0x8005:矩阵运算类状态(0 = 空闲,1 = 运行,2 = 完成,3 = 故障);0x8010:密钥管理类数据地址(存储当前密钥数据的起始地址,如 0x5000)”,寄存器功能与模块需求精准匹配。
双缓存地址规划页显示:“‘分组→矩阵’切换节点双缓存区:A 区 0x4000-0x4024(存储第 1 组 37 字节向量),b 区 0x4025-0x4049(存储第 2 组);‘矩阵→密钥’切换节点双缓存区:A 区 0x5000-0x5024,b 区 0x5025-0x5049”,地址不重叠,且与模块数据区(0x4000-0x7FFF)兼容,无地址冲突。
档案末尾 “逻辑验证记录” 显示:11 月 25 日,团队通过模拟环境测试 “分组→矩阵” 切换,触发延迟 0.05μs,双缓存并行读写无冲突,数据完整性 100%,验证核心逻辑可行,档案有郑工、吴工的签名,日期为 11 月 25 日。
四、切换触发机制与优先级设计
郑工团队基于核心逻辑,细化切换触发机制,分为 “事件触发” 与 “时序触发” 两类,同时设计优先级策略,解决多模块同时请求切换的冲突。
事件触发机制:适用于流程顺序明确的节点(如 “输入→分组”“分组→矩阵”),前一模块完成后主动触发 —— 例如 “明文格式校验模块”(输入 - 01)完成校验后,置位状态寄存器 0x8001 的第 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 区就绪信号交替高),验证乒乓读写模式可行。
七、异常切换处理与降级机制
团队预判模块故障(如矩阵模块运算溢出、密钥模块求解失败)可能导致切换中断,设计 “异常检测 - 故障定位 - 降级切换” 的三级处理机制,确保流程不中断。
异常检测:切换控制单元实时监测状态寄存器的 “故障位”(如矩阵模块故障时,0x8005 第 3 位置 1),同时监测数据校验结果(如校验失败次数≥3 次),若触发任一异常条件,立即进入异常处理流程,检测响应时间≤0.02μs。
故障定位:异常处理模块读取状态寄存器与模块日志(存储于 0x3c00-0x3FFF),定位故障模块与原因 —— 例如 “0x8005 故障位 = 1,日志记录‘矩阵 m3 运算溢出’”,则定位为矩阵变换执行模块(矩阵 - 01)故障,定位准确率≥99%。
降级切换:针对不同故障场景设计降级策略:若核心模块(如矩阵 - 01)故障,切换至备用模块(如矩阵 - 01 备用代码,存储于 0x1800-0x19FF),备用模块功能简化(如串行运算替代并行),虽速度降低 20%(从 0.7μs 增至 0.84μs),但可保障流程继续;若辅助模块(如日志记录)故障,直接跳过该模块,优先保障加密核心流程。
12 月 8 日,团队模拟 “矩阵模块故障” 测试:触发故障后,异常检测耗时 0.02μs,定位故障耗时 0.03μs,降级切换至备用模块耗时 0.05μs,总中断时间 0.1μs,流程继续运行,数据无丢失,验证异常机制有效。
八、与磁芯存储器及硬件的适配设计
王工团队负责切换机制与磁芯存储器、硬件运算单元的适配,确保逻辑设计可落地,重点解决地址跳转、时序同步、接口兼容三大问题。
磁芯存储器地址适配:切换控制单元通过 “地址指针寄存器”(0x8080-0x8081)管理缓存区地址跳转 —— 例如从 A 区(0x4000)切换到 b 区(0x4025)时,控制单元自动将地址指针从 0x4000 更新为 0x4025,跳转延迟≤0.01μs,适配磁芯存储器的地址访问速度(0.8μs \/ 次读写)。
硬件时序同步:切换控制单元输出 “切换时钟信号”(频率 10mhz),与硬件运算单元(如矩阵乘法单元)的时钟同步,确保模块切换时,硬件运算单元的输入使能信号与数据读取时序匹配,避免 “数据未到就运算” 或 “运算完成未读”,时序偏差≤0.005μs。
硬件接口兼容:每个模块的切换信号通过 “ttL 电平接口” 输出(高电平 1 = 触发,低电平 0 = 空闲),与磁芯存储器、运算单元的接口电平一致,无需额外电平转换模块;同时预留 “测试接口”(0x8090),可外接示波器监测切换信号波形,便于硬件调试。
12 月 10 日,团队完成《切换机制硬件适配方案》,包含地址跳转逻辑图、时序波形图、接口定义表,提交北京电子管厂(硬件生产)确认,适配性无问题,可进入模拟验证阶段。
九、切换机制的模拟验证与评审
12 月 11 日 - 12 月 14 日,团队开展切换机制全流程模拟验证,用 10 类实战明文(含超长报文、异常格式)测试 28 个切换节点,验证机制的稳定性与连续性。
全流程验证结果优异:1000 字符明文加密流程中,28 个切换节点的平均延迟 0.06μs(≤0.1μs),数据丢失率 0,校验成功率 100%;模拟 3 次模块故障(矩阵、密钥、补零模块各 1 次),降级切换均成功,流程中断时间≤0.1μs,加密结果与正常流程一致,无数据错误。
12 月 15 日,团队组织 “模块切换机制评审会”,邀请国防科工委专家(3 人)、硬件团队(王工)、代码固化团队(中科院计算所 2 人)参会,重点评审机制的 “连续性”“适配性”“鲁棒性”。
评审中,专家随机抽取 “矩阵→密钥”“密钥→输出” 切换节点复现测试,切换延迟 0.07μs,双缓存并行读写无冲突;中科院计算所代表确认切换逻辑可通过代码实现(如地址指针跳转代码约 50 字节);王工确认硬件可适配时序与接口,评审一致通过。
最终,团队形成《“73 式” 算法模块切换机制设计总报告》,共 108 页,包含逻辑设计、适配方案、测试数据、评审意见,12 月 15 日正式定稿,作为代码固化中切换逻辑编写的官方依据。
十、切换机制设计的历史意义与后续影响
从 “73 式” 研发看,切换机制是模块划分与代码固化的 “衔接纽带”—— 若未设计该机制,19 组独立模块将沦为 “孤立单元”,加密流程可能因切换故障中断,机制通过 “零延迟、零丢失” 保障,确保 1965 年代码固化后算法可顺畅运行,为原型机研制节省 2 个月调试时间。
从技术创新看,该机制首次实现军用加密算法 “模块化切换” 的系统化设计 —— 其 “双缓存乒乓读写”“优先级冲突处理”“异常降级” 等技术,突破了当时苏联、美国同类设备 “单流程无切换” 的局限,使我国模块化算法的流程协同能力达到国际先进水平。
从维护与升级看,切换机制提升了算法的可维护性 ——1972 年 “73 式” 升级密钥算法时,仅需修改密钥模块的切换触发条件(如调整状态寄存器地址),无需改动其他模块的切换逻辑,升级周期从 2 周缩短至 3 天,维护效率提升 80%。
从技术传承看,切换机制的设计理念影响深远 ——1980 年代 “84 式” 加密设备采用的 “多模块并行切换”、1990 年代 “92 式” 的 “动态缓存分配”,均借鉴了 “73 式” 的双缓存、优先级设计;1985 年《军用模块化算法设计规范》中,“切换延迟≤0.1μs”“数据丢失率 = 0” 等指标,直接源于此次设计的实战需求。
从产业协同看,切换机制推动了 “算法 - 硬件” 协同设计的成熟 —— 北京电子管厂基于该机制的硬件适配需求,改进了晶体管的开关速度(从 0.1μs 提升至 0.08μs),上海无线电二厂优化了芯片的时序控制单元,间接促进我国电子元器件产业的技术升级,形成 “需求牵引产业” 的良性循环。