Try   HackMD

Ch1:Computer Abstraction and Technology

前面廢話蠻多的,要考前衝刺的直接跳到 Permormance

1-1 Introduction

  • Moore's Law
    • 每 1.5 年晶片上的電晶體密度會翻倍
    • 會有極限:因為量子穿隧效應會限制電晶體所能達到的最大密度
      image

電腦的種類

  • Personal PC:目前最廣泛使用的電腦
  • Server
    • 專門運行大型程式
    • 常用於網路傳輸
    • 允許多使用者同步使用
      image
  • Supercomputer
    • 擁有最高的性能與成本
    • 經常用於科學與工程計算
      image
  • Embedded Computer(嵌入式電腦)
    • 一種嵌入在其他裝置上的電腦
    • 能力與表現受限於硬體
      image
  • 個人移動裝置(PMD)
    • 使用電池供應電源
    • 使用無線網路
    • e.g. 手機、平板
  • Cloud computing
    • 依賴 Warehouse Scale Computer(WSCs)
    • Software as a Service(SaaS)
    • 一部分運行在 PMD;另一部分運行在雲端

1-2 Eight Great Ideas

以下是電腦架構的八大核心理念:

  1. 為 Moore's Law 設計(Design for Moore’s Law)

    • 摩爾定律預測:晶片上的電晶體數量每兩年會翻倍
    • 設計電腦時要考慮到這個成長趨勢,讓系統可以隨著硬體的進步一起升級,不會被限制住。
  2. 使用抽象來簡化設計(Use Abstraction to Simplify Design)

    • 使用抽象來將複雜的系統分層,簡化開發流程
    • e.g.作業系統不用思考硬體設計
  3. 讓常見情況執行更快(Make the Common Case Fast)

    • 優化常見的操作情境,有助於提升效率
    • e.g. 如果 90% 的時候都在讀資料,那你就應該先讓「讀」的操作更快,而不是優化用不到 10% 的「寫」操作。
  4. 透過平行處理提升效能(Performance via Parallelism)

    • 允許設備可以同時執行多個 process
    • e.g. 多核心處理器
  5. 透過 Pipelining 提升效能(Performance via Pipelining)

    • 像工廠流水線一樣,把一個任務拆成多個步驟,每個階段同時運作,提升處理速度。
    • e.g. CPU 執行一條指令時,會分成 Fetch, Decode, Execute, Store。當第一條在 execute 時,第二條可以 Decode,第三條可以 Fetch。
      image
  6. 透過預測提升效能(Performance via Prediction)

    • 猜測接下來會發生什麼,提前準備,減少等待時間。
    • 即使偶爾猜錯,只要常常猜對,效能整體就會好。
  7. 建立記憶體分層(Hierarchy of Memories)

    • 不同記憶體會有不同的容量與讀取速度
      image
  8. 靠系統冗餘提升可靠性(Dependability via Redundancy)

    • 加入備份 -> 當部分系統出問題時還能運作,避免整個系統掛掉。
    • e.g. 資料中心會用 RAID 技術,把資料寫到多顆硬碟上,即使一顆壞掉,還是可以救回資料。

1-3 Below Your Program

計算機結構分層

  • Application Software
    • 使用者能夠直接接觸的階層
    • 使用高階語言撰寫
  • System Software
    • Compiler, Assembler:將高階語言轉成 Machine code
    • 作業系統:溝通軟硬體的媒介
  • Hardware
    • CPU, Memory, I/O 裝置
      image

程式語言分層

image

1-4 Under the Cover

Liquid Crystal Display(LCD)

  • 由薄層的液晶組成
  • 使用電晶體去控制每個液晶穿透的光線
  • Frame buffer
    • 資料以 bit map 的方式儲存
    • RGB -> 24 bits
      image

Abstraction

  • 目標:隱藏 low-level
  • Instruction set architecture(ISA, 指令集)
    • 硬體與低階軟體的 interface
    • 封裝於作業系統
    • 控制一些基礎操作(如 I/O 控制
  • Application binary interface:ISA + 作業系統

記憶體揮發性(Volatility)

揮發性記憶體(Volatile) 非揮發性記憶體(Nonvolatile)
描述 只有在電源開啟時才儲存資料,電源關閉後資料會消失 可以永遠儲存資料,不受電源供應影響
讀取速度
成本
容量
例子 RAM(DRAM、SRAM) 硬碟、SSD、ROM、Flash

1-5 Technology of Processor and Memory

  • 電腦組成科技的演變
    image

半導體(Semiconductor)

這邊有點超綱,可以不讀。詳情可以參考 VLSI 筆記。

  • 簡介:
    • 半導體使用作為原料
    • 矽本身不導電,但可以透過加入材料讓他倒電
      • p-type 半導體
        • 加入 3A 族元素(硼)
        • 形成電洞(hole)
      • n-type 半導體
        • 加入 5A 族元素(鉍)
        • 形成自由電子
          image
  • 製程
    image
  • 成本計算

    公式可以看一下

    • code of per die=cost per waferdie per wafer×yield
    • die per wafer=wafer areadie area
    • Yield=11+(defect per area×die area2)2

1-6 Performance

  • Response time:做完任務需要耗時多久
  • Throughput:每段時間做完多少任務
  • Relative performance
    performance=1execution time

Response time 計算方式比較

本章節大多數計算皆使用 CPU time

  • Elapsed time
    • 任務全部的 responce time
    • 需要參考許多因素(I/O 處理、閒置時間等)
    • 決定於系統表現
  • CPU time:只參考 CPU 的執行時間

CPU clocking

  • 所有數位硬體操作都受到固定速率的 CPU clock 控制
  • Clock period:clock cycle 的週期
  • Clock rate(時脈):clock 的頻率
    image
    • CPU Time=CPU Clock Cycle×Clock Cycle Time=CPU Clock CycleClock rate

Instruction Performance

  • Instruction count
    • 一個程式所需要的指令數量
    • 取決於 program, ISA, compiler
  • Cycles per instruction (CPI)
    • CPU 硬體決定
    • 不同 instruction 會有不同的 CPI
    • CPI=Clock CyclesInstruction Count
    • 平均 CPI
      • 使用加權值來計算
      • Average CPI=i=1n(CPIi×Instruction CountiInstruction Count)
  • Clock Cycles=Instruction Count×Cycles per Instruction
  • 實際計算:
    image

1-7 The Power Wall(功率牆)

  • Power wall
    • CPU clock rate 提升到某個程度後,就無法再繼續提升,因為晶片產生的熱量太高,無法有效冷卻,導致系統無法穩定運作。
      image
  • 動態功耗公式:
    Power=C×V2×f
    • C
      = Capacitive load,電容負載
    • V
      = 電壓
    • f
      = CPU clock rate
      image
  • 因為 power wall 的存在,我們不能依賴提升 clock rate 來提升效能
    • 我們使用多核心處理來提升效能

1-8 The Switch from Uniprocessors to Multiprocessors

  • Uniprocessors 的演變
    • 瓶頸:Power wall, 平行化指令, 記憶體延遲
      image
  • Multiprocessor
    • Multicore microprocessors:一個 chip 有多個 processor
    • 真正的平行化編程
      • 硬體同時處裡多個 instructions
      • 對使用者隱藏

Amdahl's Law

結論:改善性能不代表整體變快

  • 概述
    • 用來衡量改善系統的後的效率
    • 改善性能不會改善整體表現
  • 公式
    Timproved=Taffectedn+Tunaffected
    • Timproved
      :系統整體改善後耗時
    • Taffected
      :改善部分的「改善前耗時」
    • Tunaffected
      :未改善部分的耗時
    • n
      :系統效率提升倍率