2025年5月2日 星期五

時基

時基


曾慶潭 Ching-Tang Tseng
ilikeforth@gmail.com
Hamilton, New Zealand
2 May 2025


取得時基(time base)訊息是一個很古老的電腦技術,卻是一個恆有需要的功能。

使用電腦實測事件發生的時距,在許多場合都有實用價值。它的硬體根據,就是在 CPU 旁邊必須具有能自動運行的系統時脈計數器(system timer)。

我在 40 年前接觸單板電腦時就開始用過這種技術,那時的電腦,沒有現成的時脈計數器,時脈訊號只供 CPU 直接運行使用,沒有計數器來留存時脈的數量。

在 6502 CPU 盛行的時代,我們採用專屬的 6522 晶片解決問題,其中就有一個 32 位元的計時器,如果嫌其留存的計數量不足,還能串接兩個 6522 晶片來使用。我曾用它來測量原子爐停爐棒的跌降時間,精確度可以達到微秒,實際需求只須百分之一秒。有一篇討論 Forth 指令精確執行時間的文章在 FORTH 期刊第 2 期中刊出,標題為: FORTH 程式執行速度之定量評鑑,也用這套技術。我還曾為一家地磅公司提供電腦內的自動時鐘,也用這套功能,那個年代的個人電腦不附帶這種功能,需要自己設計程式。

衛星定位系統能夠提供精確的定位、速度、時間等訊息,其工作原理也離不開這套技術,系統的時基越精確,訊息就跟著精確。

今日的電腦,內附現成的時鐘是基本配備,使用者已經不需要另外加裝硬體就能取得標準時基。我在使用 Lina64 Forth 時,為系統添加了一個低階設計的指令 getticks ,以備不時之需。
getticks 的整個添加內容,與一個簡單的 main 程式,及 main 被執行出來的視窗畫面,展示如下 :


#  **************
#  * GETTICKS   *  ( -- n )
#  **************
#
        .balign    8,0x00
N_CLOCKFET:
        .quad      8
        .ASCII      "GETTICKS"
        .balign    8,0x00
CLOCKFET:
        .quad    CLOCKFET+HEADSIZE
        .quad    CLOCKFET+HEADSIZE
        .quad    0x0
        .quad    INVERT
        .quad    N_CLOCKFET
        .quad    0
        .quad    0

	rdtsc
	shl	%rdx, 32
	or	%rdx, %rax
	push	%rdx

	LODSQ                  # NEXT
        JMP     QWORD PTR[%RAX]   

\ display Time-Stamp Counter

: main
  !xy
     begin
           0 40 gotoxy 
           getticks 
           0 20 D.R
     key?
     until
  @xy 
;




透過幾千年的時基,認識北京、周公與召公。

時基尺度以千年計量時,考古證據顯示,北京建城已有三千多年的歷史。當時老是被孔子尊稱的周公又是何等人物?他很能代表中國很古的名人。

引用的照片取材自中國新華社供圖,展示北京房山縣琉璃河遺址出土的五件青銅禮器 : 尊、卣(音永)、爵(音決)、觶(音至)、鼎。

五個禮器上都各刻有七處的四字銘文「太保墉燕」實證了北京已有三千多年的建城歷史。這是重要的事情,所以說了七遍!

「太保」是西周成王時期的召公 奭(音是),「燕」指琉璃河遺址所在的燕地,「墉」意為「築城」。
「太保墉燕」,意為「太保召公來到燕地建設都城」。

北京在民國時期被平民老百姓稱為北平,文人墨客寫作時喜稱燕京,解放後被稱為北京。

召公是太保,周公是太師。比照現在,太保召公,他相當於國防部長,另有太師周公,他相當於行政院長。這兩人是輔佐周朝各個帝王,直至西周成王的重臣。

孔子說周公制禮作樂,我們都能朗朗上口,那麼,召公就應該是克商(朝)平亂了。後來,周公管陝東,召公管陝西。

後人恭維文官周公時,似乎也不該忘了武官召公,要尊敬軍人才有國本。


時基另有妙用

我在設計亂數產生函數時,特別喜歡取用硬體計時器的內容來當作產生亂數的起始種子數字, abcLina64 Forth 系統就這樣使用時基。

三月份,我從台灣回到紐西蘭後,便打算在 ARM 系統上再度發展出 ciForth 的等效版本。我有 Raspberry Pi3 及 pi4 的單板電腦,試用一段時間後發現,在 pi3 上安裝 Ubuntu 20.04 mate OS ,用起來性能還算可以,只是 1.2 GHz 的速度太慢,滑鼠在視窗作業環境響應太慢容易當機。 pi4 則安裝了 Debian OS ,1.8 GHz 的運行速度,讓滑鼠的響應勉強跟得上需要,編寫程式時比較方便。我已在兩套單板上試跑過 ciForth ,只在文字視窗中運行,沒有問題。我的目標是設計出與 Lina64 性能相當的 abc Forth 數學計算系統。很不幸,在設計與 getticks 功能相同的指令時遭遇到困難。

ARM 系統發展與應用的生態環境尚不健全,出現問題時,網上能獲得的資源相當有限,現行軟、硬體資料能夠提供的說明比較含糊,發展起來確實有點吃力。甚至於在已公佈的ciForth 源程式中,也明白的提示了有那些指令還暫時不能正常使用。想讓系統發揮作用,還得努力。

相關資料顯示,ARM CPU 從系統計數器(system counter)抓取時基的指令是 MRS ,但文件也提示,這個指令在使用者模式時不能執行, 必須在特權模式狀態下才能執行。

關於這方面的問題,我暫時抱持著觀望的態度,靜待有比較好的範例可以採用時再行引用。

把亂數產生程式中的起始種子數亂化一下的方法很簡單,可以將 getticks 取得之值直接就存進種子變數。
也可以把 getticks 隨時取得的數字當種子數來亂化一次,再回存於種子數。這樣做,就能憑硬體計時器低效部份之內容高速變化的不確定性,產生另一組亂數群。
採用硬體來亂化種子數的效果是非凡的做法,尤其在 64 位元的時代,運用起來幾乎不可能被任何使用者猜得到第一個亂數函數產生的新亂數會是多少。
亂化的方法可以如下列這麼一個簡單的程式而已:

: RANDOMIZE ( -- )
GETTICKS GETTICKS * RANDOM ( n1 -- n2 ) SEED ! ;

時基的運用還有許多例子可舉。所以,無論是誰在建造新的 cpu 時,都應該考慮到,硬體計時器,是一種在系統應用方面常常需要的設置。

超短時基的科普概念

2024年9月2日,我曾取用科學期刊帳號貼出的電子裂射的時間為10的-21次方秒(或稱為一任秒, zeptosecond)的訊息,在 Line 社群活動中介紹超短時間的科普概念。

後來,新聞公佈了炸藥贖罪獎之物理獎的三位得主,就是搞出了一種10的-18次方秒(或稱為阿秒, attosecond)等級的閃光雷射而得獎。

科學超短時間名稱的劃分,是這樣的:
10的-3次方秒稱為一毫秒
10的-6次方秒稱為一微秒
10的-9次方秒稱為一奈秒
10的-12次方秒稱為一皮秒
10的-15次方秒稱為一飛秒
10的-18次方秒稱為一阿秒
10的-21次方秒稱為一任秒

以前,科普期刊介紹飛秒雷射本已是頂尖的技術突破。沒過幾天,就又介紹人類研究電子科學有任秒概念的需求。隨後就又報導了有阿秒雷射的創新,算是先知先覺的科技報導。果真不錯,炸藥贖罪獎之物理獎公佈的得獎者,就是技術領先的三位新人,可見科技創新的敏感性有多麼先進。
許多國外報社都報導了這些事情,卻誇大的說: 阿秒雷射能對電子狀態定位而可以進行觀察。這就錯了,因為阿秒還長於任秒一千倍,這種雷射還不能用來對更超短的電子裂射現象,取得定格後被觀察的閃光照。報導的記者誇大了。

超短時間的量度,全世界現在只能量度到任秒的程度,而最短的時間單位為10的-44秒,稱為普郎克時間(Planck time),是根據理論公式推導出來的單位 : 5.39X10^-44,還沒有技術能測量得到。

一般人不接觸這些科普概念,我們搞核子科學研究者則須深入理解。
舉例來說,原子核分裂時,有一種稱之為瞬發中子者,它與延遲中子的分別,其界限就在10飛秒(10的-14次方秒)。原子彈爆炸時,主要就是瞬發中子,也就是在10飛秒內釋出的瞬發中子。原子彈有效的炸開時間則只有10奈秒(10的-8次方秒)。

但是,原子爐的控制,高度依賴10飛秒後才釋放出來的延遲中子(delay neutron),它們所佔的比例不高,大約只有0.75%。可是,考慮與瞬發中子混存後的整體作用等效時間,高達13秒左右。這麼一來,它與瞬發中子進行權重配比混合後,就可以讓整體中子的倍增時間延長到十分之一秒左右。
我們在設計原子爐的控制系統時,就是利用這種中子特性來設計控制裝置,再讓中子倍增時間增長到10秒左右,原子爐就能被安全、穩定的控制住了。

我擔任主管以前,曾經接手參與過一個被稱為水鍋式反應器的爛尾巴工程,負責全所都已放棄了的中子量度。其中的主要工作,就在測量出能夠控制原子爐的中子讀數。那座原子爐是台灣全自製的,燃料使用濃縮度為19.5%三公斤多的鈾235,全部溶解在濃硫酸內作為燃料。我很熟中子,也熟知中子該怎麼用,更是很能量測中子,領導過許多應用中子的研究計畫,都有成效。

以上的超短時間概念,可以作為大家用來認知超短時間的科普說明。

沒有留言: