Ken Shirriff

5 篇内容

技术文章Ken Shirriff

Reverse-engineering the vintage Intel 8087's tangent algorithm: more than CORDIC

文章围绕 Intel 8087 浮点协处理器的 FPTAN 正切指令,作者通过开盖显微成像、微码 ROM 逆向和数值分析,解释其如何把 CORDIC 与 Padé 有理逼近结合起来。CORDIC 用 arctan(2^-n) 特角序列与移位加减实现旋转,但 16 步仅约 16 位精度;8087 先用 CORDIC 伪除法确定 16 个旋转决策位,再把剩余小角度交给 3x/(3-x^2) 有理逼近,最后通过伪乘法逆序应用旋转得到 X、Y。文中还给出微码级实现、隐式定点指数缩放、移位寄存器、SQUARE 子程序及 0.95 输入的分步示例,并讨论参数范围、精度异常和性能占比。结论是这种混合算法以较少硬件兼顾速度与 64 位精度,而 Pentium 后转向多项式是因为快速乘法器已普及。其边界在于历史硬件逆向,并非现代浮点库实现指南。

推荐收录。文章以开盖显微照片、微码 ROM 反汇编和逐步数值表为直接证据,完整还原 FPTAN 的 CORDIC 伪除法、有理逼近与伪乘法流程,技术细节可验证且远超一般科普。适合计算机体系结构、浮点运算、逆向工程与数值算法读者,可迁移价值在于混合算法设计、隐式定点指数管理和微码性能分析。

技术文章Ken Shirriff

Microcode in Intel's 8087 floating-point chip: the scale instruction

文章深入解析 Intel 8087 浮点协处理器 FSCALE 指令的微码实现。作者结合芯片裸片显微图像与 Opcode Collective 反汇编出的 1648 条微指令,说明 FSCALE 虽只是按 2 的幂缩放浮点数,却需要 140 多条微指令和三级子程序处理零、空栈、NaN、无穷、非规格化数等边界情况。核心流程包括把标度参数转为整数、用 0x403e 计算右移位数、更新指数,并调用子程序处理上下溢、生成 denorm 和按精度舍入。文章还解释 guard/round/sticky 舍入位、指数转换器及未公开的 CC1 条件码副作用。结论是 8087 以复杂微码换取数值正确性,但部分行为仍属设计取舍或未完全解释。

推荐收录。文章提供完整的 FSCALE 微码清单、芯片功能块定位和子程序控制流分析,证据密度高,展示了从浮点转整数、特殊值处理到 denorm 与舍入的完整硬件实现路径。对 CPU 架构、微码、浮点数值和逆向工程读者有长期参考价值;但它假设读者具备一定体系结构与浮点格式基础,部分微码命名和未文档行为仍需后续验证。

技术文章Ken Shirriff

Cores in space: The core memory module from a 1980 Spacelab computer

本文详细分析了1980年Spacelab航天飞机实验室所用Mitra 125 MS计算机的磁芯内存模块。文章先阐述磁芯存储基本原理,包括磁滞、重合电流寻址、感应/禁止线、二极管矩阵等,并回顾其发展历史。随后重点拆解该机的四层磁芯板,说明其采用2½D架构,通过每位独立X驱动省去禁止线,实现128 KB容量。作者以大量微距照片追踪各类信号线的实际布线,并分析防噪的交叉设计。最后指出磁芯因非易失和抗辐射而在航天领域沿用至1980年代,终被半导体存储取代。文章兼具原理讲解、系统逆向分析与历史脉络,极具参考价值。

文章来自资深逆向工程专家Ken Shirriff,基于对实物模块的详细拆解,提供了大量原始照片和具体布线的技术分析,证据充分。适合计算机体系结构、存储技术、航天计算及硬件逆向工程爱好者和研究者阅读。其可迁移价值在于理解磁芯存储的工程取舍和2½D架构的设计思路,同时为现代存储系统提供历史参照。

工程实践Ken Shirriff

Energizing a vacuum-tube flip-flop module from a 1948 IBM system

文章对IBM 604(1948)电子计算穿孔机中的TR-3触发(触发器)模块进行了逆向工程和实际演示。作者从真空管三极管的工作原理讲起,详细剖析了反相器电路和交叉耦合反相器构成的触发器,解释了电平移位和脉冲输入的实现,并展示了模块如何通过两个稳定状态存储一位信息。文中还结合历史脉络,说明该触发器如何用于十进制计数器(BCD编码)并为早期计算机的状态机提供基础。文章边界在于它聚焦于历史硬件,其高电压设计和模拟敏感性与现代数字电路有较大差异。

本文通过实际逆向工程和上电演示,阐释了真空管触发器的电路原理与历史意义,为理解早期计算机设计提供了第一手资料。适合对计算机历史、电子学基础或反向工程感兴趣的读者,其中的电平移位、交叉耦合和稳定条件分析可迁移到对时序电路基本原理的教学中。

技术文章Ken Shirriff

Examining circuit boards from the Space Shuttle's I/O Processor

这篇文章以作者实物拆解的两块 Space Shuttle I/O Processor 电路页为线索,系统梳理了航天飞机计算机的 I/O 架构。作者先说明 IOP 并非普通外设,而是连接 CPU 与 24 条数据总线的独立可编程处理器,采用 25 个虚拟处理器的 barrel processor 设计,由 BCE 和 MSC 两套完全不同的指令集分工完成网络搬运与调度。随后文章重点分析了 MIA 网络接口页的模拟前端、变压器隔离、Manchester 编码/解码、串并转换与校验逻辑,以及 PROM 页如何用熔丝 ROM 存放 72 位微指令并驱动物理处理器。文中还比较了 IBM 4 Pi 标准页与 IOP 专用页的尺寸、连接器、散热和封装密度差异,解释了为何航天级板卡会大量使用 hybrid module、flat-pack 与高可靠器件。文章结论指出,后来 AP-101S 将 CPU 与 IOP 合并以提升性能并减重,但原始 IOP 的架构与物理实现仍是理解早期航天计算机的重要样本;部分芯片编号和某些旁证板卡归属仍带有推断成分。

收录依据很明确:文章基于实物电路板、部件编号和官方文档,完整解释了航天飞机 IOP 的架构、总线协议、微码与板级实现,不是泛泛的历史回顾。适合做硬件逆向、古典计算机体系结构和高可靠系统设计的参考,尤其能迁移到“从板级结构反推系统工作方式”的分析方法。