智慧應用 影音
Microchip Technology Hong Kong
ARUBA

資通訊的左右互搏之技

林一平手繪之John McCarthy。

我設計物聯網應用系統IoTtalk,其運算方式是「多執行緒」 (multi-threading),基本原理是金庸小說提到的左右互搏之技。

金庸說,左右互搏的關鍵在於「分心二用」。但他又很矛盾的說,要習此門功夫,須做到心無雜念。要分心二用,又要心無雜念,是互相牴觸的。根據《射鵰英雄傳》中周伯通的說法,若能左手畫方,右手畫圓,方能修習此法。金庸說,周伯通,郭靖與小龍女皆是心思純樸之人,心無雜念,學習雙手互搏並非難事。凡是聰明智慧的人,心思繁複,一件事沒想完,第二件事又湧上心頭。三國時曹子建七步成詩,五代間劉鄩用兵,一步百計,這等人,便是殺他的頭也學不會左右互搏的功夫。

金庸的說法可能不全部正確。多執行緒技術表面上似乎分心二用,實際上在任何時刻都是專心致志,心無雜念,只是「內容轉換」(Context-Switching)速度很快,就呈現出左右互搏的效果。以此角度而言,左右互搏必須是曹子建及劉鄩這種聰明人才辦得到。周伯通與小龍女都絕頂聰明,因此也學得會。郭靖的腦筋轉不快,絕對做不到「內容轉換」的腦筋急轉彎,應該學不會左右互搏的功夫。

「多執行緒」是由「多工處理」(Multitasking)演進而來。懂得左右互搏的人採用「多執行緒」,那麼哪種人的行為像電腦的「多工處理」?我的答案是,這種人患有「多重人格症」(Multiple Personality Disorder),是解離症(Dissociative Disorder)的一種特殊類型。「多執行緒」中所有「執行緒」都共享同一個記憶體(因此是單一人格,腦筋可馬上急轉彎)。而「多工處理」則每一任務有個別分開的記憶體(因此是一個人有多重人格,人格轉換時要花點時間)。

分時系統(Time-sharing)最初利用多工處理,讓多個使用者可以同時使用一台電腦。早期電腦系統的方法論都基於批次處理(Batch Processing)的思維,因此批次處理單一用戶的程式較為實際且容易,而要同時支援多個用戶則是相對困難。由於單核心計算機在任一時刻只能讓單一使用者執行單一程式,批次處理的程式是執行完一個,再執行下一個,簡易明確。而同時支援多個用戶的分時系統則是完全不同的概念。

分時系統將每個使用者及其程式的「狀態」保留在機器中,然後快速切換。這將佔用電腦的計算資源。早期的機器速度慢,難以分食。隨著電腦速度的迅速提高,大大擴充保留用戶狀態的核心記憶體空間,「分時」的成本持續下降。

第一個「使用者程式時間共用」的專案由麻省理工學院的麥卡錫(John McCarthy)於1959年提出,修改了批次處理的IBM 704電腦,後來又改版進化為IBM 709,這是第一代能夠進行時間共用的電腦之一。該專案的重要成果,是相容的分時系統(Compatible Time-Sharing System;CTSS),於1961年11月進行了成功的展示。CTSS是全世界第一個分時系統,一直使用到1973年。

1961年初,比策(Donald Bitzer)在伊利諾伊大學附近的阿勒頓公園公開示展示第一個特殊用途的時間共享系統,名為普拉托二世(PLATO II)。比策一直碎碎念的埋怨,若非伊利諾伊大學的繁文縟節延遲了兩年,普拉托專案就會在分時技術上獲得第一個專利。

這套系統於1964年1月開始進行分時服務。依此基礎,IBM在1968年檢視「多執行緒」的實用性。現代的程式語言如C++,Java及Python都支援多執行緒。在前人的努力下,電腦系統技術不斷突破,因此我的團隊有機會發展出左右互搏之IoTtalk物聯網平台,能同時讓多核心電腦執行多執行緒。

現為交通大學資工系終身講座教授暨華邦電子講座,曾任科技部次長,為ACM Fellow、IEEE Fellow、AAAS Fellow及IET Fellow。研究興趣為物聯網、行動計算及系統模擬,發展出一套物聯網系統IoTtalk,廣泛應用於智慧農業、智慧教育、智慧校園等領域/場域。興趣多元,喜好藝術、繪畫、寫作,遨遊於科技與人文間自得其樂,著有<閃文集>、<大橋驟雨>。