2009年2月26日 星期四

(續) Braid computing

Braid的概念在於「在basic block的scope內,事先將dependence規納分析好」,這些互相之間具有相依性(dependence)的指令串便稱為braid。一個basic block內可以包含的braid數目,也就是計算結果互有因果關係的指令串,平均約為3條(braid的原意是「辮子」,單位應該是「條」吧?)。在SPEC 2000的整數型程式中,平均每個basic block可以找到2.8條braid,浮點數程式則有3.8條。這個數據是作者以gcc 4.0.1把SPEC程式compile成Alpha EV6架構指令集,同時加上-O2最佳化得到的結論,作者同時強調gcc 4.01並未在編譯過程中引入braid的概念,因而有大量的braid是「單指令」構成的。

2009年2月24日 星期二

Braid computing: achieving OOO performance with in-order complexity


這張照片是今天下午四點左右在樓頂照的,晴空萬里的藍天讓人心情舒暢,但是和接下來的本文內容完全無關,放上來只是讓充滿文字的版面不要那麼無聊罷了XD

ISCAS 2008的論文,由德州大學(UT at Austin)的Francis Tseng和Yale N. Patt發表。這篇論文的賣點在標題就很聳動的寫出來:以循序處理器的硬體複雜度得到亂序處理器的效能。亂序執行(out-of-order execution, OOOE)技術有機會大幅提高運算效能(請注意,是有機會,不是一定,大部份case裡提高的是耗電量...),但是硬體複雜度太高,耗電量更是驚人,以至於4向以上的亂序處理器從來沒有被商品化,只在學術論文上出現。

本篇論文的賣點在於作者們強調,用他們的braid概念來實現硬體的話,有機會用很低的硬體複雜度,也就是跟循序處理器一樣的複雜度實現亂序處理器的效能。當然天下沒有白吃的午餐,代價是軟體也要跟著修改,這裡的修改不需要你重新編譯程式(原作者有指出, 如果可以重編的話效果會更好),但是需要讓原本的程式碼被拿來作分析,找出內部braid的分佈,同時把一些braid相關的註記加進程式碼,所以修改後的指令格式會和原來有點小差異,造成整個執行檔的內容都不一樣了。聽起來很嚴重,其實還好,嗯,好吧,其實蠻嚴重的…雖然不用重新編譯程式,但是這意味著哪天這顆cpu商品化的話,你升級了cpu之後還要連代更新硬碟裡包括os在內的所有程式,網路上抓下來的軟體也沒辦法馬上執行,要經過一次「翻譯」才能用。

為什麼這麼嚴重,我還說他「還好」? 因為他作的修改是以基本區塊(basic block)為界限,只會更動基本區塊內部的指令順序,對於不同的區塊之間的前後排列順序以及區塊大小(區塊大小意謂著區塊內指令的多寡)都沒有變動,所以並沒有更動程式內部指令的邏輯順序,只是會根據分析的結論,重新安排指令在區塊內的排列順序。這樣的重排不會影響到跳躍指令(有人翻作「分支指令」,branch)的行為,因為總指令個數,和所有的進入點(entry point,跳躍指令的目標位址)的相對位址並沒有改變,對記憶體存取的load/store指令的先後次序也被小心的保留下來,整個「修改」程式的動作就是類似把 ABCDE的指令順序改成 BDCAE(當然這樣的修改順序以不影響程式邏輯為原則),然後把分析得到的一些結果也記入指令格式,變成bdcae的最終型態。

2009年2月21日 星期六

最近最流行的單字 recession !

最近半年來在美國財經新聞最夯的字大概就是這個recession,
要知道這個字的意思順便記住他的拼法很簡單,
只要知道字根 cess = 走,前進的意思;而re字首是「回頭」
那 re(回頭)+cess(走)+ion(名詞字尾)=recession 當然就是「走回頭路」、「退步」
或是新聞媒體最愛炒作的那三個字,不景氣!
很高興我不是記者,不用為了趕流行成天上網路找一些不景氣的不幸新聞
但是cess這個字根相當有趣,在這邊把書上寫的抄下來學習一下:
有三個字根 cess = ceed = ced 都是「走,踏出」的意涵

con(共同)+cess(走)+ion(名詞字尾)=concession
the act of granting or yielding (不可數名詞),路只有一條,為了『一起走』,就有人要『讓步、承認』
con(共同)+cede(走)=concede,(不情願的)承認[動詞]

pro(向前)+cess(走)=process,(向前走的)過程[名詞];處理[動詞];加工[動詞]
pro(向前)+cess(走)+ion(名詞字尾)=procession,(向前走的)隊伍[名詞]
pro(向前)+ced(走)+ure(名詞字尾)=procedure,(向前走的方法、手段),手續、步驟[名詞]
pro(向前)+ceed(走)=proceed,(向前走),繼續進行、作下一步[動詞]
suc(隨後)+cess(走)=success,(跟上來的人事物,後起新秀),成功的(人事物)
suc(隨後)+cess(走)+ion(名詞字尾)=succession,(跟上來的人事物),繼承、延續
suc(隨後)+cess(走)+or(人)=successor,繼承人
suc(隨後)+cess(走)+ive(形容詞)=successive,連續的

ex(出)+cess(走)=excess,(走出界限的行為),超量的(事物)[名詞],額外的[形容詞]
ex(出)+ceed(走)=exceed,(走出界限),超過[動詞]

re(回頭)+cede(走)=recede,(往回走),退步[動詞]
pre(先、前)+cede(走)=precede,(走在前頭),領先[動],在(作什麼事)…之前
pre(先、前)+ced(走)+ent(名詞字尾)=precedent,(先走的東西),前例[名詞]
un(不)+precedent(先例)+ed(過去分詞)=unprecedented,史無前例的,空前的[形容詞]

ac(向)+cede(走)=accede,(向別人走去,靠近),同意[動詞]
cede(走開)=割讓(領土),放棄事物的所有權[動詞]
inter(之間)+cede(走)=intercede,(遊走於兩者之間),調解、調停[動詞]
se(分離)+cede(走)=secede,(分道揚鏢),脫離、退出(組織或政黨)[動詞]

參考資料:
[1] 陳明華、張明勤、李恆敏,"核心字彙記憶捷徑",台灣培生教育出版股份有限公司,頁151~152。
[2] 英業達Dr.eye,"譯典通8.0專業版"

2009年2月19日 星期四

Fujifilm s5pro + NIKON 17-55mm 金線鏡,赤道上的島國回憶。

半年前剛買單眼沒多久,因為要去一趟巴里島,
盧老大二話不說的就大方的出借了DX鏡皇17-55mm。
雖然神兵利器被我這個新手給拿來胡搞有點委曲,
但亂槍打鳥之間也意外留下不少精彩的回憶~

巴里島 195_1

巴里島 124

巴里島 168_1

巴里島 194

巴里島 201_1

巴里島 221_1

巴里島 259

巴里島 238

巴里島 252_1

巴里島 264

巴里島 255

巴里島 231

巴里島 237

巴里島 220_1

DSCF3385

DSCF3398

DSCF3401

DSCF3465_1

DSCF3424

DSCF2669_1

DSCF2661_crp

DSCF2667

DSCF2679

巴里島 007_crp

巴里島 013_1

巴里島 011_crp

巴里島 028

巴里島 015_1

巴里島 075_1

巴里島 079_1

巴里島 097_1

巴里島 106_1

巴里島 118_1

巴里島 120_1

巴里島 144

巴里島 149

巴里島 150

DSCF2646_1

DSCF3515_1

DSCF3506

DSCF3527_f2

DSCF3538_f2

DSCF3526_f2

DSCF3530

DSCF3404

巴里島 261_crp

巴里島 083_crp

DSCF3304_f2_rot

DSCF2636_crp

巴里島 240_crp

DSCF3321_+ev_crp

DSCF3418_f2_rot_crp