分享到plurk 分享到twitter 分享到facebook

版本 5b4d44a820c59260f1897e2fe24745cb5d00ec7d

李育丞(atumama)

簡介

  • 成功大學電機104級

作業

Github

  • arm-lecture<https://github.com/atumama/arm-lecture>_
  • visualizer<https://github.com/atumama/visualizer>_
  • mini-arm-os<https://github.com/atumama/mini-arm-os>_
  • freertos-basic<https://github.com/atumama/freertos-basic>_

NOTE

  • lab38<https://embedded2015.hackpad.com/Week-2-ctu3SnJ5zB6>_:實作遞迴以及非遞迴版本的fibonacci以及使用Thumb2 instruction改善效能
  • lab39<https://embedded2015.hackpad.com/2015q3-X2ljN3BAif1>_:’new’指令新增task,’test showfib’指令顯示前20個fibonacci數列結果
  • lab40<https://mycpp.hackpad.com/2015q4-in3pou3fgHO>_:新增兩個task,計算context switch時間
  • lab41<https://embedded2015.hackpad.com/Week-5-Lab41-beU5Qb7IYhr>_
  • lab42_

學期報告

  • Armv8</embedded/ARMv8>_
  • Xvisor</embedded/xvisor>_

心得

  • 修了去年電機系的單晶片課程期末展的時候就有看到老師來宣傳這門課程,當時就覺得有機會應該要來修這門課程,看到強者同學組員沈宗穎同學因為修了這門課而使得自己有很大進步時,自己也想要挑戰看看,我覺得修了這學期的課最大收穫是更加了解自己所缺乏的許多專業知識,就像老師說的要誠實面對自己,之前在電機系有許多基礎科目:資料結構、演算法、計算機組織等許多課程因為有了考古題的幫助或許最後拿到了不錯的成績,但是期初的資格考才發現原來自己的基礎知識是如此薄弱,其實自己根本很多東西都不懂,老師常說學工程是要來解決問題的,因此這門課有大量的實作課程但在基礎背景不足情況下根本無法解決問題,甚至連問題都沒辦法發現.因此為了能夠寫作業也開始去複習之前不足的部份像是計算機組織、OS(其實是預習)等課程,修正了自己的學習態度.

  • 這學期的作業方面,讓我學到了應該如何去面對大量的閱十頁讀資料,以前的科目一周讀個三四十張投影片就已經很吃力了,但這門課動不動都是百頁起跳,除了同時訓練英文閱讀能力也漸漸加強自己抓重點的能力,有許多作業都必須要參考別人共筆才有辦法動手開始做,常常看到很多厲害的同學很快就已經把程式碼push到Github自己卻還在閱讀資料,花了很多時間再複習之前的東西卻沒辦法寫出神麼有用的code,當下其實挫折感還蠻大的,也知道自己還有很大的進步空間,但也因為做作業我也有很多機會跟強者組員宗穎跟小鄧跟Henry多問問題做交流讓自己獲得蠻大的收穫也要感謝他們讓我問許多很基本的問題.

  • 經過這學期了解到了效能分析工具以及統計的重要性,很多東西都必須眼見為憑,像有一次lab是要我們使用visualizer去分析context switch的時間,之前在恐龍書上看到都只是輕描淡寫,而實際做作業將task之間的context swiitch時間輸出並視覺化會讓自己對於這些專有名詞印象更深刻,也了解到如果要去增強效能,就必須要能夠善用工具以及統計學去分析比較數據,才能夠了解程式效能以及了解到哪些程式碼需要被改善來增加效能.

  • 這學期的ARMv8、Xvisor報告對我來說也是很大的挑戰,之前重來沒接觸過ARM、更別說是虛擬化,但是有了這個機會可以參與這次Xvisor的報告,讓我懂得如何去trace大型的程式(以前寫code沒寫超過兩千行)而Xvisor裡光是vgic就已經接近兩千行,不只如此也讓我學習到coding style,你寫的code不能只讓自己看懂,以及Xvisor使用許多對我來說很神奇的程式寫法(可能是自己見識淺薄),觀摩神人寫的程式,也能讓自己進步。而ARMv8更是一個未知的領域,而想去網路上找一些參考資料,幾乎沒有中文的資料可以參考,就算是英文有許多東西重複性也是很高,所以只好從官方手冊下手,了解到讀手冊的重要,像是GDB的使用也必須得靠自己去閱讀官方手冊。還有虛擬化的部分,由於是在一個作業系統去運行其他多個作業系統再加上現在的CPU都是多核心架構,中間的行為就變得更加複雜EX.tick distortion的問題,Xvisor的程式也會用到許多作業系統的概念也讓我必須去加強這一部分的知識,由於這學期才修作業系統,因為做了這份報告讓我對於同步、排程、記憶體管理都比較能夠瞭解實作的部分。

  • 以及這學期老師提供了許多開放式課程的學習資料,雖然數量實在很多根本來不及看完,但對於我專業知識的提升有很大的幫助,以及觀摩世界數一數二的大學EX.CMU的課程資訊,讓我看到別的學校和我相同年紀的人都在做甚麼事,才了解到原來我還離世界頂尖大學的學生非常遙遠,自己應該要加快腳步。

自我評量分數 (1 到 10 級分)

  • 總結:由於我目前做的研究是類比IC設計,以前Linux作業系統對我來說好像是工作站上安裝的Mint OS,以及要下command line來開程式,之前對於作業系統的了解幾乎是0,更別說是ARMv8、虛擬化等技術,經過整個學期的訓練雖然有了初步認識但是知道自己還有很大的進步空間,但從我覺得這門課給我最多的是重新學到做研究的態度以及方法,知道如何從無到有對一個主題做有系統的研究,而不是靠人家整理好的懶人包到處複製貼上,這是我這學期得到最大的收穫,以及跟很多很厲害的同學互相學習交流。

更多資訊