2010年9月4日 星期六

我的第一台 - All new iMac

由於分工合作製作照片DVD的二台Mac(Mac mini G4 1.25G與iBook G4 1.2G),在數位相機的畫素愈來愈高、相片數量愈來愈多、影片愈來愈長、人愈來愈沒耐心的情況下,早已不敷使用。加上某人公司的福委會與Apple有合作,可以以市價的95折購買,還能代為訂購,想想只好重金禮聘最新版的iMac來接手這個製作DVD的業務,真是大失血了。

原本想買21.5吋的版本,但某人又煽風點火的說買27吋比較好,處理HD影片比較方便。考慮了許久,加上最近新版的硬體升級,且更便宜,最後在可負擔的最高等級原則下,訂購的規格如下:

3.20GHz Intel Core i3
4GB 1333MHz DDR3 SDRAM - 2x2GB
1TB Serial ATA Drive
ATI Radeon HD 5670 512MB GDDR3 SDRAM
8x double-layer SuperDrive
Apple Wireless Keyboard
Magic Mouse
另外加購Apple Remote、iWork '09與Parallels Desktop 5

從八月中旬下訂以後,只有Parallels Desktop先來...




先來也沒用啊!我也沒機器可以裝...

從21.5吋的機器過了EMC掛上「出貨:7 business days」之後,就天天照三餐光顧訂單查詢網頁,期盼27吋機種也很快可以出貨。直到某天下午發現訂單變成「已準備出貨」之後,在九月初貨終於送到了!因為沒有桌子可以放,所以到大賣場買了一張合意的電腦桌。


抱歉啦!iMac!我得要先組裝你未來的安置區,盒頂借我放一下傢俬喔。


先把鍵盤區的腳架組裝完成。


再與滑鼠區的腳架結合。



接下來安裝托盤架。



然後把木板鎖在托盤架上,就完成底部的組裝。
這個桌子還可以對應左撇子與右撇子,所以你可以把滑鼠區鎖在左邊,如照片所示。



當然鎖在右邊也可以。
其實是裝好木板之後才發現整個裝錯邊,原本想裝做沒看見,但又發現連托盤架都鎖反了,只好拆掉重裝了。



把大桌面鎖上就完成囉!

好了,桌子的鏡頭太多了,該輪到主角登場囉!



雖然早知道機體很大,不過看到實際的包裝還是忍不住驚歎了一下,真是又大又重!



懷著緊張的心情開箱,畢竟這是台我買過最貴的電腦!



盼了好久的iMac終於現身!(照片的筒形失真真是嚴重啊!)



費了好大的力氣才抽出來的箱子,真是簡潔的包裝!



包裝另一面的外觀,用等比形式的照片表達出內容物的巨大。



重達19.14kg的龐然大物,不用說這也是我買過最重的電腦~~



用刀片切開封條,終於看到內裝。不過可能是因為看過其他人的開箱文,擺放其實都差不多,所以沒有太多的驚艷,差別只在於親眼看見罷了。



將頂端擺放的鍵盤滑鼠包裝抽出。



映入眼簾的是鋁製藍牙無線鍵盤與快速指南。



在快速指南那區包含相關說明、系統光碟、Mac貼紙、加買的Apple Remote,以及iWork。



Apple Remote加長,握感更好,但已經不能像之前的版本,吸附在螢幕的側邊,有搞丟的可能。另外原本以為是藍牙的,可惜仍然是紅外線版的。



Apple Remote的電池室,用錢幣輕輕一轉便可開啓電池蓋。



取下鋁質鍵盤後(意外有點重),是已經算前一代產品的(最新的是Magic Trackpad)Magic mouse與螢幕清潔布。



拿開保護套之後,Magic mouse現身,後面還黏著一張操作說明。圖中的手勢是敝人覺得最難達成的,沒辦法因為手指太短!訣竅是在滑鼠中後段的位置用雙指滑動比較容易成功!



Magic mouse的電源開關在底部,在雷射鏡的旁邊。



裡面已經裝好二顆盡量...咳~~勁量的鹼性電池。



接下來主角該登場了,我們把鏡頭轉交給在現場的記者!



記者:是的!主播!記者目前所在的位置,就是這次即將很快揭開神祕面紗的龐然大物iMac前面,待會主辦單位將進行揭開神祕面紗的動作(迷之聲:冗字過多是台灣記者的通病)。
加菲貓:看到我的表情沒,真是微妙啊~~



加菲貓:恭喜你啦!即將開封運作了~~



搞了半天找不到開封點,原來要從後面揭開。
加菲貓內心的OS:你還真是愚蠢啊!(這表情看來更有Fu)



拿掉護套後,醬醬~~從這個角度看,這蘋果山還真是雄偉呀!



白蘋果變黑蘋果也還是一樣好看!



這裡就是可用的輸入端子了,有FW800,可惜我的外接盒是FW400的不能用...
加菲貓:...



為了避免入鏡,改用由下往上照的方式呈現,效果更好!
加菲貓:你確定嗎~~



喔喔,電影開演了!不過從白畫面到蘋果標誌出現,大約20秒,期間還擔心是不是壞了!



系統提示打開滑鼠的電源開關。



底部的指示燈亮起來後,滑鼠也配對完成!在Mac底下用藍牙滑鼠真是簡單。



系統提示選擇語言,結果因為拍照拖的時間有點長,iMac突然說了一句「English」(應該是提示選擇的語系是英文),害我嚇了一下~~又發現了Mac系統貼心的地方。



歡迎畫面,照例沒拍到中文的歡迎字樣。因為開機的時間已經蠻晚的,音樂又大聲,害我又嚇了一下。
加菲貓:喂~~攝影師你是在拍哪裡呀~我人在底下耶~~



選擇註冊的國家,接下來填寫資料就完成線上註冊了。



醬醬~~全家福照!



關個燈,拿起Apple Remote,準備看電影囉!我是說電影預告片啦!



無法一眼看完的廣闊桌面,字好小喔~~



原本想把i3換成i5的,但...超過預算太多了,需要另加七千多元,Apple的東西真的蠻貴的。這台系統已經先安裝好10.6.4,不過近期的一堆更新,如iTunes 10則還沒安裝。



i3是雙核心的CPU,但系統已經開啓了hyperthreading,所以在活動監視器可以看到四核心,希望將來影片編碼時可以更快啦!




1T的WD硬碟!


為了讓Mac OS X畫面更順暢顯示卡,也是選27吋機型的原因之一,但在PC界大約是中下等級的的顯示卡。

到目前為止,程式運作都相當順暢,大尺寸螢幕也可以放上更多的程式視窗!希望未來照片DVD的製作能隨著換機更順暢囉,不過...為什麼Apple還沒內建藍光燒錄器呢~~


2010年8月27日 星期五

NUC501-虛擬記憶體問題的最終回

上回出現RAM虛擬記憶體效能差勁,卻不知原因為何的謎團後,經過詳細的(?好啦!我承認是亂槍打鳥的)檢查、抽絲剝繭,測試各相關軟體元件的執行效能,造成效能瓶頸的犯人終於找到了!原來犯人就是「帕雷拖法則」!

根據維基百科記載,帕雷拖法則是:

帕雷托法則(Pareto principle),也稱為80/20法則,此法則指在眾多現象中,80%的結果取決於20%的原因...在電腦科學裡,帕雷托法則可藉由觀察80%的資源是由20%所操作使用,來最佳化資源。在軟體工程上,常有接近90%的電腦程式執行次數花費在10%的程式原始碼執行。

而在這個專案中,效能低落的發生與程式撰寫方式有很大的關係。由於專案開發的時候,常喜歡將使用到的功能,寫成群組型態的功能區塊。例如有專門處理LCD顯示的gfx系統、處理文字顯示的font系統,以及處理檔案系統的APSLib等等。而各功能區塊又會進行細分,有時會製造出許多單一功能的小函式。

之後為了避免上層程式執行功能時,都得要呼一堆小函式,所以又建立easy系列的函式,比方說EasyOpenFile之類的,這樣想要很輕鬆愉快的寫上層程式,就用easy系列,想要easy系列之外的低階控制就另外自己呼小函式。當同樣的低階控制程式碼多了起來,就又會為它增加了一個easy函式。上層程式寫好以後,它的上上層程式大多會形成任務分派形式的程式碼(dispatcher),因此完成版的程式碼很有大腸包小腸的Fu。大金每次看我的程式,都說我的主程式看起來簡單到不行(因為只是任務分派的迴圈而已),可是副程式卻呼來呼去複雜到死。

不過這種寫法是以前教科書上的建議(相信有很多程式設計師也是這麼做),這麼多年下來執行也都沒什麼大問題呀!為何這次會踢到鐵板呢?

主因是:這種程式寫法不適用在目前所設計的虛擬記憶體架構!

比方說,執行主程式時,會因為主程式本身是任務分派的形式,又因底下程式細分的關係,造成虛擬記憶體得從各個不同的區塊載入這些細分的程式,程式層數愈深,頁面切換的次數愈多,最後頁面也許就全部被這些程式碼佔據。當返回主程式時,主程式早已從頁面中消失,這時虛擬記憶體必須將主程式切換回來,如果主程式是迴圈構成的,又得繼續進行上述的處理。

發現問題的所在了嗎?問題就在於主程式(及各功能的頂層程式)本身所需的CPU時間幾乎不到1%,卻要勞師動眾將它從SpiROM複製到虛擬記憶體頁面上,然後才執行不到幾個指令,又被置換出去!所以當程式像洋蔥一樣,一層包一層,層級愈高的程式碼愈會形成任務分派形式的情況下,CPU的效能就被這些執行時間不到1%的程式碼給消耗掉了!那該怎麼辦呢?

一個方法是打掉重寫,用inline的方式執行函式,這樣會使得虛擬記憶體頁面切換有點像是循序進行,減少效能大起大落的問題,但程式碼編譯出來會非常巨大,這對大金想用小容量的SpiROM是完全不可行。

另外一個方法,則是多年前看的文章所引發的靈感。文章內容是探討PowerPC晶片的cache lock指令,對於多媒體處理的影響。由於多媒體資料大多為一次性且大量,如果沒有執行cache lock,將多媒體處理用的程式碼鎖定在快取內,很快的,CPU的快取便會充斥這些一次性的多媒體資料,而造成多媒體處理的效能低落!除此之外,Apple的麥金塔電腦,從68K系列的CPU轉換到PowerPC時,也是透過cache lock的方法來提昇68K模擬器的執行效率。之前研究NDS時,許多遊戲程式要播放即時影片前,都會透過NDS CPU的cache lock功能把處理程式鎖在快取內,以提昇播放的順暢度。這讓我想到,應該把這個虛擬記憶體系統當成快取系統來看待,才能在寶貴的RAM中放需要提昇速度的程式碼,而不是那些任務分派用的程式!

原先想在虛擬記憶體系統放個旗標,代表lock,這樣虛擬記憶體切換頁面時,就忽略這個頁面,頁面的鎖定就由想要留在頁面的程式碼主動進行lock好了。但一想到必須在各個系統放CacheLock及CacheUnlock之類的函式就有點暈了,再加上大腸包小腸形式的程式碼,還得要小心不能把所有頁面都lock(其它程式就不能執行了),其複雜度光想就腦袋打結了。

在反覆思考實作的方法卡了好久,只好試著反向思考,以結果來說,我們希望這些執行時間1%以下的程式碼,不要進入虛擬記憶體頁面執行,那NUC501有什麼硬體能達成呢?突然想到答案就是之前虛擬記憶體亟欲取代的SpiROM!雖然SpiROM速度不快,但能夠執行程式呀,跑這些任務分派的程式碼應該夠了!

趕忙修改ld的設定檔,增加一個NONCACHE的程式節區,而區段就在SpiROM所在的0x40000000位址上,緊鄰可被載入虛擬記憶體的程式碼之後(因為這些程式碼本身仍需要SpiROM當載體),這樣連虛擬記憶體系統都不用增加旗標什麼的,直接就能自由呼叫分散在虛擬記憶體與SpiROM上的副函式!

接下來的工作就比較麻煩,必須挑出哪個函式是屬於任務分派類型的程式碼,但排除performance senstive的函式,挑出來之後,便為它們標上NONCACHE巨集,這樣在編譯時,這些函式會自動被安排到NONCACHE節區中,屬於最大的任務分派函式main()也不例外!在編譯完成後,我緊張的把程式碼燒到開發版上測試。

結果效能提昇的數字令人驚訝,原先APSLib令人難堪的12K低速,效能一整個提昇26倍,得到312KB的讀取速度,字型顯示的處理時間也低於1秒了,雖然仍比原生讀取速度低,但已經足夠,只要專案完成時效能不是太低,我想應該不會再改進這個部份了。

那麼有關探討NUC501上虛擬記憶體實作的問題,應該就在這篇結束了。如果有在看這個網誌的朋友,也歡迎提出您的見解與問題,一起討論哦!

2010年8月16日 星期一

香港自由行之日景太平山-下

由於來到香港的第一天與第二天都沒能去太平山看夜景,但纜車與觀景台套票已經買了,也不能退,所以只好在晚上回台灣前,去太平山看一下日景囉!

原本想照第一天的方式,先坐港鐵到金鐘站然後再走路去纜車站,卻突然撇見旅行社給的城市大巴旅遊兌換券還沒用(原本想丟了),且城市大巴的港島旅遊路線有經過纜車站!雖然移動時間變長,至少不用走路,也可多一個大巴體驗,便立即改變行程,先坐港鐵到香港站,然後走到中環碼頭去換大巴票!

不過天氣不好,烏雲密佈,真希望不要下雨才好。



出了香港站之後,便遵行路線指示,經過空橋前往中環碼頭。香港真是處處高樓林立呀!



除了高樓以外,香港也處處建築工事中。



走了約10分鐘後,抵達中環碼頭,城市大巴已經在那裡等客人上門了。跟車掌換票後,就坐在大巴內吹冷氣等其他客人。



車子開動後,便登上大巴的二樓開始遊車河,欣賞香港的風光啦!







天空有些飄雨,但還好是小小地,希望不要像第一天的情況就好了。



城市叢林



欣賞著沿途的風光,不知不覺纜車站就到了,趕忙從二樓衝下去,告訴司機要下車。



突然看見第一天躲雨停車場對面的大樓,原來只差幾公尺就到纜車站了~~



排隊換完纜車票之後,跟著人群等纜車到站。



到達山頂之後,會經過一個賣許多貨品的山頂市集,吸引許多遊客駐足。











在這裡還有郵局,可以讓你買明信片寄給你的朋友與家人。



沿著路標走



搭乘手扶梯前往觀景台,沿途有許多在賣電器產品跟玩具的店家,蠻奇怪的。



由於有團員想上廁所,所以在這家店前等了一下,不知道好不好吃呢?



終於抵達山頂觀景台,觀景台的四面都可以看到不同的風景。雖然日景也蠻漂亮的,但還是想著如果是夜景該多好呢~~



















在觀景台待了半小時,愈來愈熱,便下樓去看杜莎夫人蠟像館。



瀏覽完太平山如果想去迪士尼,樓下的城堡型區域就是迪士尼的售票處了!真是方便。



來到樓下,就能看到粉貴的杜莎夫人蠟像館(其實就在山頂市集旁),一個人要160元港幣。



由於熱門的蠟像都有粉絲等著照相,所以我只好挑沒人合照的拍。不過蠟像館裡不是每個蠟像都可以拍,有些只能由內部的工作人員幫你拍,然後再到出口處付錢買相片~~



































欣賞完蠟像館之後,便趕忙坐大巴回中環碼頭,然後再坐港鐵回奧運站拿行李,準備坐接駁車到機場。



在落日餘暉中等待登機,香港機場除了有提供上網機可以使用以外,還有PS3可以玩!







這次到香港當導遊可以說是蠻失敗的,除了沒吃到正宗港式燒臘(原本買來做宵夜的廣東粥也被人吃掉,還一直跟我說好吃),行程動線也很差勁,雖然團員說還不錯玩,但本人是蠻後悔的,因為我直到要回家的第三天才開始抓到行程規劃的要訣啦~~