因為下週要考試了,所以溫習了一些基本概念,準備考試囉。事實上,在計算機的領域中有許多東西,我常常忘了又看,看了又忘,150個專有名詞中有許多不常用的概念幾乎沒有什麼映像,還好翻一翻書,我總算恢復了一點點記憶,下面只列了部份資料,這些資料是我看完教課書之後所濃縮的一些概念,可以說是我自己做的心得筆記,有些概念可能只是很簡單的陳述,若想知道詳細內容,還是得自己去翻一翻教課書。因為專有名詞實在太多,目前暫時只先研究關於硬體方面的一些基本概念。
 
  • Addressing mode:定址模式,這個東西是根據計算機設計硬體架構不同,爲了讓我們使用機器語言去存取記憶體的資料,所以定義的許多種模式去存取記憶體中的資料。換句話說只要是有使用到存取記憶體或暫存器的機器指令(運算元,如MOV,jump..),其運算子的部份依定址模式決定要去哪裡取得資料。定址模式的使用通常和組合語言有關。在組合語言的課程中,我們學會一些定址模式,如直接定址和間接定址,直接定址就是直接將記憶體的位置接在指令的後面,長度可能為28bits或26bits,根據設計的指令不同而有所變化(這方面的知識請參考計結或計組的書籍)。間接定址模式就是經過一些運算之後才能得到記憶體位置,可能是暫存器之間的運算,由一個基底(base)加上index來決定記憶體位置,base+index+offset。
  • Amdahl's law:評估應用pipeline或平行處理技術之後電腦速度改善了多少的方法。舉例來說,假設一個pipeline分成5部分其中兩個部分和記憶體存取速度有關,剩下沒關,而那兩個部分佔整個pileline執行時間的30%,剩下70%執行其他的pipeline,如果此時將memory的速度加快兩倍,則所花的時間會減為原來的0.7/1+0.3/2=0.85所以速度增加了1/0.85倍。這方面的知識應該可以在計組或計結的課程中學會。
    Atomic operation:基本的運算,由一組的運算元來完成,在資料完成前無法取到記憶體中取值,而再處理的過程中如果有一個運算出錯,整個運算就出錯了。例如四則運算、資料的比較等。舉例來說加法運算,必須另用指令去記憶體取得兩個數字並存放在暫存器中,並且下達加這個運算元,讓占存器的數值相加,最後將資料寫回記憶體中,這一串的環節,如果有一個地方出錯,整個加法指令就失敗了,像加法這樣的運算是屬於基本的運算,通常會有機器指令ADD來支援。
  • Big Endian:這個和硬體的特性有關,指的是記憶體中資料的排列順序,Big Endian是將資料的最高位擺在資料的最前面,intel x86是屬於little-endian format
  • Branch prediction:在作pipeline時可以作branch prediction,這樣可以加快執行速度。因為在pileline的cycle中,在目前這個指令被執行的時候,可以猜測下一個fetch指令的位址。利用方法猜測conditional branch是否會發生,然後計算要去哪裡抓下一個指令。
  • Booth's algorithm:一個做有號數的乘法運算的演算法,將兩個binary數值相乘
  • Carry lookahead adder:增加加法的運算速度,ripple carry adder必須等待上一級將資料計算完之後,將進位的資訊fordword給下一級作運算。Carry lookahead adder將進位資訊先計算好,然後在加法,不用等上一級告知是否要進位
  • CISC and RISC:CISC一個硬體指令可以做許多事情,例如從記憶體取值並做數學運算然後再將資料寫回記憶體中,這些動作只要在一個指令中就可以完成。相對於RISC一個指令只做簡單的操作或運算。目前的Intel x86使屬於CISC的硬體架構。
  • Clock skew:這個現象發生在同步電路中,因為clock絕對時間不相同所引發的狀況,我們知道電路中都會有flip-flop都會有delay現象,所以會造成時間的不一致,本來同一個clock要到不同的兩個元件,因為路徑過常造成時間延遲,造成抵達的時間不一樣。造成的影響可能造資取到錯誤的資料,因為資料保存的不夠久被新的資料蓋掉了。
  • Control and data hazard:hazard分成三種structural hazard, control hazard, and data hazard。data hazard發生在資料之間彼此有相關的地方,因為資料的讀取和寫入的先後順序而造成資料的讀取錯誤。發生的時間RAW, WAR, WAW。當將資料寫入之後又要再去讀取該資料時會發生資料錯誤,因為第一個指令可能還沒有將資料寫進去。讀資料之後馬上把資料再寫進去也會造成問題,因為資料可能還沒有讀到新的資料就已經被寫進去,所以讀到的資料是新的資料而不是舊的資料。當兩個值要寫入時,原本要先寫進去的值變成後來才寫進去,造成資料錯誤。Structural hazards的問題是由於硬體資源不足時所造成的為害,因為要平行處理某些動作,如讀寫記憶體,但是該資源已經正在使用,所以造成衝突。Control hazards 發生在處理器被要求作branch時,要等到條件是否滿足才知道要取得的下一個指令在哪裡,而在pipeline的處理過程中可以先預測要取得的下一個指令,如果判斷錯誤造成的暫存器資料的改變,需要還原回來。
  • CPI:平均一個clock cycle可以執行多少個指令數。
  • Daisy chain arbitration:對於每一個device給定一個priority,而bus grant該給誰就是由最高的priority往最低的priority巡視一遍,擁有最高priority且提出bus request的device將會獲得bus grant,其他的device都看不到。
  • Delayed branch:解決Control hazard的一個方法,延後取得下一個指令,避免取錯指令。
  • Direct-mapped cache:一個catche的架構,直接將記憶體的位置放在cache中。
  • Dynamic and static scheduling:在即時作業系統中有提到靜態排程和動態排程的一些演算法。可以使用robin scheduler來實現,Dynamic scheduling依據deadline來決定排程的優先權,當有新的工作進來可以搶先處理,static scheduling編譯完成之後執行的順序(優先權)被決定了。
  • Fully associative cache:任何位址的資料可以被存放在cache的任一個位址,一個set的大小等於cache大小

    全站熱搜

    CJY0503 發表在 痞客邦 留言(1) 人氣()