2013年5月25日 星期六

接近極限的蘇門答臘

烘咖啡豆有許多流派。我自己偏愛入口的香氣以及之後的回甘是否長久,不喜歡苦為與澀味。但是,也許這是因為我是受到兩位朋友專家,宋培弘黃國琳,的影響。一向,我喜歡中或淺培,一來本來喜歡,二來火候即使沒抓準,也還可以喝。
但是這一天,
林敬倫要求我把蘇門答臘的豆子烘到深一點,接近二爆。我必須 蹲在烘豆機邊聽聲音,因為這麼深意味著只要時間抓不準,這鍋豆子就完了。烘得算達到預計目標,三小時後試喝,老實說,入口二十秒就是我不喜歡的苦澀,要過好一陣子,他的特殊風味才會出現,但是我就是不喜歡一開始時的苦澀。所以有一點抱怨。
敬倫說,研究一支豆子,就是要把他各種不同階段的都烘一遍來比較看看才是。不喝過不喜歡的,怎麼知道哪樣子是自己喜歡的呢?而說不定,原先以為不喜歡的會變成喜歡也說不定。大哉言。老師我受教了。
這裡有三個臭皮匠為了手沖咖啡正在研究一種新型濾杯,想來還真是不務正業,但是這也算是研究,不是嗎!
喔!最後,還是請敬倫把豆子都帶走。誰教他自己說他喜歡這樣子苦澀的蘇門答臘。

 

後續:

好是跟老闆說你要烘成怎樣,或是老闆跟你說他是怎麼烘的。我說的讓手沖穩定還是要你手沖,只是一般手沖,新手太不能穩定控制出水速度,又因為用的是一般市售濾紙,所以你也不能控制下水速度,因此,你實在很難知道與紀錄怎麼沖會產生怎麼味道,以軟工來說,就是沒做好process management,當然也就做不好prediction。身為工程師,怎麼可以容許這種事發生呢?

觀察與控制are everything. 大學假如是學控制理論的人就知道,一個系統要有用須具備兩大要件,controllability and Observability. 對專業的人手沖來說,控制味道是他本來要做到的,因為她一天要沖上幾十杯,對業餘的來說呢? 一個容易控制的工具,加上一個可以follow的流程,把這件事門檻降低。這讓我想起很多革命就從這裡開始,遠的是HDL,不太遠的是數位相機,近的是3D列印。 咖啡,雖小道,也該用這個觀念來做。

 

確幸

有時,一點點奢侈其實是需要的。


我以前泡茶,都隨便泡一泡,一次茶葉沖個四五次就不能再沖了。有一段時間,我不能喝生茶,因為喝了不舒服,胃難過外,心臟就開始不聽話了。


上個月,在溪頭買了包紅水烏龍。又剛好有人給了個日製茶壺。這壺一看就知不是隨便做出來的,薄而均勻之外,出水順暢。用這壺泡過幾次茶後,不知不覺我開始有耐心在心裡數著時間,時間一到,馬上把茶倒到另一個大壺,然後立刻再沖熱水進去。


我發現,茶變好喝了,心跳也正常,胃也沒跳出來抗議。


於是,我試著把茶多沖幾次,每一次回沖我都單獨喝看看,我發現取決於茶葉的多寡,有時可以沖個十次以上還不見難忍的澀味。

吳鳴老大前一陣子買了支燒水用的鐵壺,喜孜孜的用來泡茶給我喝,現在我終於也體會到這心情。古人說,富過三代才算知道吃穿,現代人幸福多了,資訊多了以後就不必花太多錢就可以入手一些好物,容易知足如我者,一支壺就可以讓我們開心許久。


話說回來,要能體會吃穿,也還真需要付出努力與耐心等待。人家弄好好的給你,你輕易的得到,恐怕即使真是好,也不知道到底好在哪裡。如此,雖富三代,一樣是不知吃穿,貽人笑柄而已。

2013年5月12日 星期日

DIY沒落

網路上有一篇在討論,聽音響的人是否變少了,我覺得當然是。我提一個大家都沒提的原因,DIY的人少了,因為台灣人變得懶的思考了。現在OpenSource很風行,喜歡套用API,做演算法的反正用 Matlab,但是有多少人願意去挖一下人家底層做了什麼呢?


記得當年(2006~2008)禹鴻跟塞公連手打造的aSLIM,我們去改Android底層的架構讓Component Based Programming Model可以在裡面運作,讓Android裡面變得可以像用DirectX或ObjectC一樣,這個計畫卻沒通過,而做一個Java遊戲卻可以拿70萬的自由軟體補助。2011年,M公司與H公司才驚覺他們哪裡沒做。竟然還厚顏要國家找學界幫忙。都火燒屁股了找學界幫忙不是請小鬼拿藥單嗎?


今年,我們把25顆Nvidia Tegra用光纖連起連變成一個多核心開發環境竟然沒進決賽,然後我們開發的Web B⋯⋯ased GPU Programming環境在自由軟體比賽裡也落榜。我一剛開始覺得是自己技不如人,等到學生把入圍的題目給我看,我才發現,五六年前的歷史又再重演,又是一些看起來炫的"應用",而不是講究基本功的進到決賽。


真的只有一句話。靠這些人,真的是完了。


同學啊!動手DIY才是王道啊!可是行王道者,下場好不過孔子絕糧於陳蔡。


以下是我的網路文。
DIY的沒落。
年輕時,我周圍的人都在DIY,這些人很多後來都變發燒友。DIY有其極限,除非是做到玩家級,這類人開公司都可以了,但多數人往高科技走,那裡賺的錢多,錢賺多了,用買的就好,不必自己做。


時至今日,我觀察美國,歐洲,香港,大陸,DIY風氣仍然很盛,這些人有的一輩子DIY下去,有的改買廠機去了,跟過去台灣的情況沒多大不同。可是,目前台灣DIY的人還有多少呢?沒有這群人,後繼在哪裡?


目前多數DIY者就是拿人家的公版,改改電源,加發燒零件,完全照抄還沾沾自喜自己省了多少錢,對岸像是Pass, FM, Goldmund等公版何其多,抄起來不臉紅,一開始抄沒關係,但是有要想辦法改進嗎?又抄了人家的多少百分比呢?有多少人去鑽研基本原理呢? 雖說 Audio好像是古老技術了,可是就我看來 Audio的論文還是每年都在出,幾年前的Wavefield Synthesis很紅啊! 即使沒辦法創新,至少一些基本功可以練練吧!所以我佩服像是小郭與Stein這種實做派,只是不知道這種火種能持續多久不滅。


這讓我想起最近的,不管學界還是業界,只會套用人家的API,一點也不想去dig底層,專搞些看起來炫的,假如我的觀點是對的,那麼對照音響,也不遠了。

2013年5月9日 星期四

十年一覺ESL夢

  很多事不寫下來就隨時間洪流消失了。我是憑記憶寫的,有錯誤的話麻煩巴菲特與AAA,Water與所有尖叫實驗室成員更正我一下。


ESL從今日看來已經是老掉牙,要變成書裡的東東了,一旦變成教材,我對他的興趣就開始缺缺了。最早1998-1999時,但是實際上的起點可能更早,老外開始思考要用C++之類的高階語言來模擬硬體,因為傳統模擬工具太慢,而軟體開發卻老是要等硬體做出來,沒辦法平行做讓整體開發延宕,老外是從系統層面開始,既要顧到硬體系統,模擬速度又要快到可以讓軟體先上再說。他們很會取名字,引領風潮, ESL就這樣出現在世人面前。那時這東西算是大公司,要不然就是大學校在玩的,Synopsys當時除了支持自己的System Verilog外,據說也弄一點C++的東西,後來的SystemC也算,昨日的CoWare今日變成Synopsys的一部分了。假如我的記憶正確,約2001前後,ST這家半導體大廠用這個系統層設計概念所倒出的設計流程成功產出H.263(or H.263+)的HW video codec,而且一次就work。那時台灣大概沒人知道ESL是甚麼碗糕。而據本系的林英超老師說,那時IBM內部也在弄ESL,只是他們不叫做 ESL,API也是IBM內部自己定的,不公開。林老師知道這件事是因為他在IBM上班時有用過這些工具。所以到底IBM裡要是有東西是用系統層開發出了來的也就不足為奇了。


SCREAM Lab是我到成大之後好一陣子後才取的名字,一剛開始叫什麼我忘了(巴菲特提醒我說是CMS Lab,CMS是哪三個字我也忘了。)。當時我到成大來,竟然第一次在成大任職時申請國科會計畫就沒有過,連我在成大第一屆收的碩士班學升學生的電腦與桌椅都是我去幫新竹科學園區一家公司寫了一些 code與回中華大學資訊系借才算弄齊。其他就什麼都沒有,要想做其他什麼的也不可能,只好依附在當時郭老大下面的華新麗華產學計畫下面,那時我被指派的工作就是做一顆HW MPEG4 Simple Profile的video decoder。以前在中華沒膽子做這麼大的設計,所以做沒多久,我就知道要用Verilog硬刻出來不算難,但是驗證根本沒辦法做完全,我對做一顆只能正確動一半的東西沒興趣。所以我那時想個方法,把DCT/MC之類比較Regular的電路先用C來做,建立驗證資料後,再用Verilog來實做,bitstream decode與系統控制暫時先交給C來做。可想而知,整個系統是必須要混合不同程式與模擬工具來做的。這算是接近ESL的第一步,如巴菲特說的,井底之蛙的我們那時是不知道這樣做該叫什麼名稱,只知道這樣做有助於設計與驗證。


再過一陣子,我發現這樣做模擬起來還是實在太慢了,所以計畫把FPGA弄進來,計畫讓設計好的電路跑在FPGA裡面,其他的還是維持在C裡面。也因此,我們自己從PCI的FPGA介面卡開始弄起,我記得那時跟幾位學長用邏輯分析儀硬是去量PC裡的PCI的動作timning,如今想來真是土法煉鋼兼膽大妄為,沒燒掉電腦真是學長們手腳俐落,一直到狠後來才敢用人家做的USB介面的 FPGA板用來取代最早的PCI版本,最早我們自己修改過的那片14萬台幣買的FPGA卡被那時還是大學部學生的玉琳跟小K做實驗時不小心把可樂倒上去給毀了。就這樣子,我們發現我們終於可以把電路做完,而且一下子就可以把整個video Sequence跑完。我記得當時原瑞學長有一個Sequence跑到700多張時才掛掉了,可是不到兩天bug就只找到且修好了。假如我沒記錯的話,後來應該是忠和學長做出一版很reliable的純HW codec(不必用up解bitstream),而且gate count很低,速度又快。同時,sequence可以從PC端不斷傳過去,解壓再傳回來播在PC的Monitor上。


從那時起,我們的demo就一向是可以一run就是一整天都不會當。套一句巴菲特的話,demo一定要炫,以當時來說,學校能做到這樣算少的了,尤其是我們沒有專人真的投入在codec本身的設計上,因為這codec只是眾多demo cases之一。同時,我們也有許多自己用來協助模擬的API可以用。那時毛寶也幫了不少忙,而且後來還是毛寶把Eclipse工具打通,這工具事實上也是許多軟體的骨架,包含CoWare以及我們的OpenESL在內。


後來,我們的野心變大了,Demo case一次就往H.264 HW Encoder邁進,那時由巴菲特領軍(但他不負責寫code,只負責工具開發與架構設計),Water跟另兩位電機系陳中和老師的學生一起弄,半年多的時間內,我們把多數的硬體都搬到FPGA了,demo還是維持跟過去一樣一下子就跑完一個sequence與超過24Hr不當機的方式。這也就是為何巴菲特的博士論文可以把H.264裡面的ME做這麼完整分析的原因,他的論文裡面跑過的各式各樣的ME與硬體架構的種類多到我都忘了有幾種組合了,可以說是文獻上可以看到最完整的系統分析報告,重要的是,QCIF一秒鐘可以正確encode好幾張。


應該是2005或2006,有一天AAA跟我說,SystemC正式標準化了,建議我們該把以前做破銅爛鐵收一收倒進垃圾桶,全面改到SystemC上面,這件事我們還討論好一陣子才決定,想起來我就心疼啊。老實說,我們聽過ESL,但是對 ESL該是什麼還不完全清楚,也就是說,我們已經在實施ESL設計流程而不自知,請原諒我那時太忙,忙到沒時間去查論文,還以為我們是全世界第一個這樣子亂搞的。我記得有一天開會時,AAA開示說,不是用C就叫ESL,所謂的ESL是由設計的思維來決定的。大哉言,那時,尖叫實驗室終於決定轉向支持 SystemC. 之後不久,我們讀了不少論文,終於知道ESL是甚麼碗糕了,也就舉起ESL的大纛揮舞起來。想來可笑,都這樣做了四年多才知道自己在做的方式叫什麼,老外真會取名字。也佩服老外能比我們早那麼多年開始想到(ㄟ!其實也才早沒幾年啦!)。


事實上,從某個時候開始,我漸漸不再對做應用電路感到興趣,做H.264只是為了經費,能動就好,其他時間就做工具,架平台吧! 這一點AAA就很不以為然,因為 AAA一直勸我應用才是王道,現在聽來真是真理,當時要是專心做codec,雖然不敢說會比那時中正大學郭教授做得好,但是起碼也不會輸太多。不過我意已決,能可做我覺得有趣的事再說。短短時間內,不到2008年底,我們可以把SystemC,C++, Java, Matlab Simulink, FPGA,ModelSim與忘了還有其他什麼各式各樣的工具各跑在幾台電腦共同完成一個HW設計的模擬,想來還真是瘋狂。

之後玉琳學姊甚至做了一個Codegen工具,把你要看的任意一個register資料包起來傳給一支SystemC Module,真正把所謂元件式軟體開發模式(Component Based Software Development CBSD),完全搬到數位硬體設計上來。而這個電路可以上 FPGA,跟一堆其他不同工具所實做的元件連起來一起跑模擬,因為她的 Codegen太好用了,整個的動作是半自動化的,組起一個這樣子的全系統模擬模型(Full System Simulator)花不到一個小時,要是你改了什麼模組,重新再來一次,假如你Script也寫好,幾分鐘就可以再來一次。玉琳的碩士論文的口試委員之一是台大吳安宇教授,他看了後大為讚賞,然後把玉琳學姊”借到”工研院去,一借兩年。玉琳學姊到工研院去,成功把OpenMax與工研院自己開發的 DSP連起來動作,一部份算是歸功於之前的ESL研究經驗。

後來甚至宗胤學長又把QEMU打通後跟之前所有的工具連起來一起運作,然後OpenESL的雛形也在宗胤的努力下成形。那個年代,我們為了對付這麼多異質工具的連結問題,在DNA學長與宗胤學長的協助下,用Python做了一堆codegen工具,舉例來說,連Wishbone元件都可以填填表就把Module產生出來。最後是DNA, 宗胤與敬倫把OpenESL真的架起來,而且把SystemC Kernel也平行化了。


靠這一大堆工具,巴菲特給這種設計方式取了個名字,叫做Progressive System Design Flow,也就是一開始的元件實做在很高階,沒有timning的環境,如Matlab,然後一步步,一個個改成SystemC Model,之後進ModelSim或乾脆直上 FPGA跟其他為完成的一起模擬,等到所有元件依次上了FPGA,數位設計就算完成了。過程中,在系統層的設計進階過程(ESL Design Flow)裡,前一個階段的模擬資料,例如小至一個Register的值,設計者不必改一行Verilog code就可以輕易被log下來,除了除錯用途之外還可以當作進一步的測試資料,等設計更接近後段時,模擬產生的資料就可以跟前一階段(或Level)被 log下來的資料相比,假如完全符合,代表至少新的設計與前一階段在這些部分的比對是相符的,如此Progressive下去,層層驗證,嚴密,一個個元件分別被搬上FPGA,而且跑的都是完整的測資,以video來說,就是300frames or 1200 frames的編碼過程的系統裡每一個暫存器的值都可以驗證到,最後電路全上了FPGA之後,跑個幾天都沒問題喔!也就是到了這個階段,FPGA被當成是Full Function Simulator來用了。套一句育典學長說的,FPGA這麼快,誰還要跑HDL Simulator!所以好長一段時間,除非真的遇到難題,實驗室裡是沒有人會願意用HDL Simulator的。

這樣子做有什麼好處呢?我舉一件巴菲特與很多人都聽到臭掉的往事,應該是2006年,我跟巴菲特應邀去大陸上海與西安交大,有一天晚上,Water在台灣實驗室用MSN跟我們說(奇怪,那時大陸可以用MSN?),H.264電路有一點問題,而那部分是巴菲特做的,她當時"直覺"是學長錯了,我們隔海在MSN上討論了一下,請Water加一點電路, Log某幾個值出來比對。然後我就去洗澡了,等巴菲特也洗完澡時, Water很不好意思的說她Bug找到了,不是巴菲特的錯,那時大約是晚上10點了,我們隔天還有演講,所以決定就先去睡覺再說。也不知道Water是熬夜改bug,還是隔天才改的,第二天下午,我們就收到 Water的好消息了。


回顧從2005年起,我開始在有些公司給talks,宣傳 ESL以及我們獨特的progressive設計方式的好處,聽過的表面都說讚,但是雨都沒真的下下來過,M公司的人說公司不給人力,F公司臨到頭打退堂鼓,H公司的主管抗拒上司想要嚐試的念頭,就這樣孤孤單單的過了幾年,但是奇怪的是也每年被找去演講,真不知道這些人想幹什麼。等了好久,直到2011年華為與海思不曉得從哪裡聽到尖叫實驗室的名字而給了個案子,案子都快簽約了才知道這是大陸公司,當時我真是灰心,氣餒與沮喪都有之。事實上,2010年以前,包含台交清中山中正也開始做ESL了,業界就A公司最積極在推,而到2010/2011後, 慢慢的ESL 已經到處都是,不希罕了。我自己在想,也該是到一段落的時候了。雖然SystemC Kernel平行還可以做,但是我想除非有一大筆經費給敬倫,還是Move On到其他議題吧!畢竟世界上有趣的事還很多。偏偏我又是個這麼愛三心二意的人。


多年來,我只是好奇,為什麼我這麼努力還是沒能讓台灣業界早一點用這個方式設計呢?威佐說我三心二意,這點我承認,因為這期間實驗室老實說做了許多跟電路與系統設計無關的其他研究。但是在ESL方面,我們可是有十年以上的時間都沒斷過。然後國內學界的SLD聯盟與AP聯盟在編ESL教材了。我還是必須慚愧的跟威佐說,要我改掉三心二意毛病大概要等我再老一點,身體再差一點。努力想有趣的研究議題已經變成我生命的一部分。至於現階段我還能做什麼,我已經開始考慮人生的極限了,會更Focus了,期待到想不動那天,還能完成什麼有意義的東西。至於以後對業界再能有甚麼貢獻的機會,我想不到了,花了十年努力,真的夠對得起這個國家了。


在此,我必須感謝巴菲特,沒有他,很多事都不可能。我也必須感謝AAA,AAA幾年來幫實驗室賺了不少經費,也在ESL上面引領我們走上對的路,在他的西雅圖華大之旅,著實給他們見識到什麼就做功力,我記得華大孫明廷教授(Prof. M.T. Sun)還跟我道謝,他說AAA一個人抵過大陸到華大念博班的三個學生加起來,我真是與有榮焉。也因為AAA,多核心平台有了起頭(BBB從Cell-BE/PS3開始玩起),哲榮學長把Multi-ARM給boot起來,不僅可以跑SPCP,連測MPI用的Netpipe都可以把速度ㄍ一ㄥ到業界水準,這兩年on-chip記憶體管理的研究正方興未艾,眼看我們要開始收割了。而最近,我們順利把OpenRISC 在FPGA架起來,Embedded的Tegra跟PC的 X86都可以跟FPGA上的好幾顆OpenRISC跑起來共同完成一個Computing job,不久,敬倫跟幾個夥伴要把OpenCL跟OpenRISC連起來了,而且連敬群學長(jserv)都願意進來幫忙。新的時代要開始了,但是同一個時間我所想到的是,江山代有才人出,套句歐陽修的話,我該避避鋒頭了。


講到這裡,已經不知所云,我想我要說的也許不是我們花了多少精神在ESL上面,回憶了這麼多事,我的心充滿溫暖與感謝。碰巧,前兩天有位老師問我,我是怎麼看待我自己的學術生涯(career),當時我不假思索的回答,學生(包含已畢業的)才是我的career。想來當然不會是 ESL,甚至連正夯的音樂研究與癲癇/ADHD等等都不能算是。

我笑看自己,原來,這才是我打了快5000個字所真正要說的。原諒我,你們知道的,我就是這麼囉嗦的一個人。