工程趣聞 2026 年 6 月 29 日

2026-06-29 — 太空梭電路板逆向、AI 讀 MRI 與診所相左、POSIX 不等於 Shell

primary=https://www.righto.com/2026/06/space-shuttle-io-processor-boards.html primary=https://antoine.fi/mri-analysis-using-claude-code-opus primary=https://alganet.github.io/blog/2026-06-28-12-POSIX-Is-Not-A-Shell.html

拆解太空梭的 I/O 處理器電路板:1970 年代的多執行緒先驅

righto.com · 2026-06-28

Ken Shirriff 近日發表了一篇對太空梭輸入輸出處理器(IOP,Input/Output Processor)兩張電路板的深度逆向分析。這批硬體來自 1970 年代,承擔太空梭主 CPU 與 24 條高速資料網路之間的橋接任務。如今放在手中把玩的 9 英吋 × 3 英吋電路板,曾在軌道上維持航太等級的可靠性。

兩張板子,兩種功能

MIA 介面頁(Multiplexer Interface Adapter)負責四組 1 Mbps 網路連線,六張同型板共同支援 IOP 的 24 條網路。板上可見客製化 Motorola 收發 IC,專門處理 Manchester 編碼轉換,以及 IBM 混合模組(hybrid module)——一種將電晶體晶粒、電阻、電容以細如蜘蛛絲的 bond wire 封裝在陶瓷基板上的元件,是現代 IC 密度概念的前身。板上還散佈著多處「bodge wire」補線,顯示飛行前經歷過多輪迭代修改。

Manchester 編碼把每個 0 位元轉為「低→高」序列、每個 1 轉為「高→低」,每個位元中間必然發生一次電位轉換,使接收端無需獨立時脈線就能同步,同時消除直流分量,適合搭配變壓器隔離與磁性儲存媒介。這項技術 1949 年由曼徹斯特大學提出,如今在 Ethernet 等場景依然可見其蹤影。

PROM 頁與 72 位元微指令

PROM 頁儲存著 IOP 的微程式。核心元件是 Intersil IM5624C,一種可熔保險絲型 PROM:完整保險絲代表 0,燒斷代表 1,燒錄需要施加 17 伏特脈衝。兩張 PROM 頁合計存放 1,536 條 72 位元微指令,共使用 56 顆芯片,每顆均以手寫標記晶片編號,代表每一顆都是獨立燒錄的。

每條 72 位元微指令可在同一個時脈週期內同時驅動兩組平行 ALU、指定資料來源與目的地、並執行條件跳轉,相當於三個並行操作——這種風格在今日稱為 VLIW(超長指令字)架構。

桶式處理器:25 個虛擬 CPU

IOP 最引人入勝之處是它的桶式處理器(barrel processor)設計:一顆實體處理器上同時輪流執行 25 個虛擬處理器。整個 16.5 微秒的時脈週期被切成 33 個執行槽,分配如下:

  • BCE(Bus Control Element):24 個實例,各佔一個時槽,每個對應一條網路埠,執行 Transmit Data、Receive Data、Load Timeout Register、Store Status、Wait 等 I/O 專屬指令,不具通用算術或條件跳轉能力。
  • MSC(Master Sequence Controller):1 個執行緒,佔 8 個時槽,相當於一顆 32 位元通用 CPU,負責配置並啟動各 BCE。
  • 剩餘 1 個時槽:保留給 BCE 自我測試。

這個概念最早由 CDC 6600 超級電腦在 1964 年實現,保證每個網路埠都能獲得固定的頻寬配額,無論其他埠的負載為何。每個虛擬處理器各自維護獨立的暫存器組(local store),切換時無需儲存與恢復上下文——這是它與現代執行緒切換最根本的差異。

設計師與後續演進

IOP 的設計者是 Peter Kogge,他後來以 Kogge-Stone 快速加法器電路廣為人知,該電路至今仍用於包含 Pentium 在內的現代處理器。整套系統使用 IBM System/4 Pi 規格——名稱取自 4π 球面度(全方位立體角),是 System/360 向軍事航太領域的延伸。1991 年推出的合體型 AP-101S 將 CPU 與 IOP 整合進單一機箱,減重約 300 磅並大幅提升速度與記憶體容量,才讓這批電路板功成身退。

原始來源:righto.com — Examining circuit boards from the Space Shuttle's I/O Processor


用 AI 幫自己看 MRI:一次與診所診斷相左的第二意見實驗

antoine.fi · 2026-06-28

Antoine 因右肩疼痛持續兩、三週而就醫,骨科診所的 MRI 報告指出肩胛下肌腱(subscapularis tendon)頂端插入處有 Grade III 部分撕裂(撕裂寬度超過 50%),並隨即安排震波治療與 Traumeel 注射。Antoine 在離診前索取了 MRI 影像的完整 DICOM 檔,回家後決定讓 Claude Code 搭配 Opus 4.8 模型做一次獨立判讀。

工作流程:266 MB 的 DICOM 檔,一小時出報告

Antoine 將診所提供的 DICOM 匯出包(約 266 MB,含數百個檔案)直接交給 Claude Code,僅給予「右肩疼痛兩至三週」這一條背景資訊,不提供任何診所結論。Claude 花費約一小時自動處理影像、產出結構化報告,結論與診所截然相反:肌腱完整,未見撕裂。

面對兩份相互矛盾的報告,Antoine 設計了第二輪「仲裁」流程:提供診所放射科報告、以及他依 AI 建議自行進行的臨床動作測試結果,要求 Claude 以多個子代理(multiple subagents)交叉驗證,避免確認偏誤。仲裁耗時同樣約一小時,最終裁定如下:

  • 支持「讀者 A」(即 Claude 自己的初始判讀),信心等級:中至高。
  • 結論:輕度插入性肌腱病變(mild insertional tendinosis),無論是部分或全層撕裂均未發現,頂端插入處亦然。

診所的治療方案也引發疑問

Antoine 指出,診所同時開立的震波治療(shockwave therapy)在影像上並無鈣化跡象,通常不符合適應症;Traumeel 注射屬順勢療法藥物,缺乏臨床療效依據。這兩項觀察讓他對整體診斷流程的信心進一步動搖。

Antoine 坦言,他目前仍處於「兩難困境」——既不確定該完全信賴 AI 的判讀,也對診所的結論存疑,只能邊進行復健、邊觀察症狀改善情況。他的結語帶有明確期待:希望未來的 AI 模型判讀醫學影像的可靠性,能達到現今 AI 校對電子郵件的水準。值得注意的是,文章本身並未聲稱 Claude 的判讀必然正確,這場實驗的意義在於展示 AI 輔助第二意見的流程可行性,而非取代放射科醫師。

原始來源:antoine.fi — I used Claude Code to get a second opinion on my MRI


POSIX 不是 Shell:一場關於可攜性假設的技術澄清

alganet.github.io · 2026-06-28

「這段 script 是 POSIX 相容的」——這句話在工程師之間流傳甚廣,卻往往意味著:「我在我的機器上跑過了。」作者 Alganet 在 2026 年 6 月 28 日發表的這篇文章中,正面拆解了這個常見的認知錯誤:POSIX 是規格書,不是任何一個 shell 的實作,而規格書本身就刻意留了大量「實作定義行為」(implementation-defined behavior)的空間。

echo 的陷阱

文章以 echo "C:\new" 作為開場示範。POSIX.1-2017 規格對 echo 的反斜線跳脫處理明確標注為「實作定義」,並建議改用 printf。在作者追蹤的 14 種 shell 實作中,大約一半會把 \n 解讀為換行符號,另一半則直接輸出字面字串——而且不會報錯,靜默地分道揚鑣。

算術展開 $(( )) 雖已納入 POSIX.1-2017 標準,但除以零的行為依然因實作而異:有些 shell 報錯並中止,有些靜默返回 0,有些則觸發未定義行為。標準化語法不等於標準化語意,這是許多開發者踩坑的根本原因。

非 POSIX 語法的隱性依賴

更危險的是那些「到處都有,但不在 POSIX 裡」的語法。作者列舉兩個典型案例:

  • local 關鍵字:POSIX 未收錄,但幾乎所有主流 shell 都支援,且各家的變數作用域語意不盡相同。
  • [[ ]] 條件語法:同樣不在 POSIX 規格內,在 dash(Ubuntu、Debian、Alpine 的預設 /bin/sh)中完全不支援,會靜默失敗或直接報語法錯誤。

/bin/sh 的背後並非同一個程式:Ubuntu 和 Debian 預設指向 dash,macOS 指向 Bash 3.2,Alpine 則是 BusyBox ash,行為差異足以讓同一份腳本在不同環境產生截然不同的結果。

驗證才是真正的可攜性

作者給出的解法直截了當:真正的可攜性需要跨實作的系統性驗證,而非理論上的規格合規性宣稱。 他介紹的 shell-docs 專案採用機械化方式,在所有主要 shell 實作上執行功能測試、捕捉輸出並與已知正確結果比對,而非僅仰賴規格文字。文章的核心句子一語中的:「POSIX 是關於 shell 應該做什麼的承諾;驗證才是找出哪些 shell 兌現了這個承諾的方法。」

原始來源:alganet.github.io — POSIX Is Not a Shell


End of article
0
Would love your thoughts, please comment.x
()
x