基本硬體架構及指令集
硬體包括
1. Register
2. Memory
3. Instruction format
4. Addressing mode
1. Control Unit
2. Datapath
3. Memory
4. Input
5. Output
堆疊的某個區段,其中包含程序的區域變數及儲存暫存器
1.基本區塊
2.最佳化
硬體沒有實作但組譯器可以接受的指令
1. Immediate Addressing
2. Register Addressing
3. Base or Displacement Addressing
4. PC-Relative Addressing
5. Pseudodirect Addressing
1. Simplicity favors regularity
2. Smaller is faster
3. Make the common case fast
4. Good design demands good compromises
RISC | CISC |
---|---|
指令長度相同 | 指令長度不一 |
少數定址模式 | 多種定址模式 |
少數指令格式 | 多種指令格式 |
運算原只能來自暫存器 | 可來自記憶體 |
記憶體資料須先載入暫存器 | 記憶體資料可直接處理 |
達不到理想加速的原因
三種實作方式Cycle time皆取決於Critical path
即下一個指令無法在下一個Cycle正確地被執行
1. Structual Hazard
2. Data Hazard
3. Control Hazard
1. Static Branch Prediction
2. Dynamic Branch Prediction
3. More Complex Prediction
一種解決Control hazard的方法
Compiler將不論分支是否發生都會執行到的指令(安全指令)放至Delayed slot,延遲後面執行的指令
即可避免Control hazard所帶來的Cycle浪費
Deeper pipeline 使更多指令能同時進到Pipeline執行
複製電腦內部功能單元,使得每個stage可以執行多個指令
分析指令性質,決定與此指令相關之後續指令能否提早被執行
靜態多重分發的一種,允許多個指令同時在某個Stage被執行
將迴圈展開使得Compiler能更有彈性的重新排程指令
用來消除Antidependency的一種方法
指令間因為使用相同的暫存器,導致Compiler無法彈性地將指令重新排程或有潛在的Hazard出現,但指令之間其實並沒有資料的流通稱之
靜態多重分發的一種
順序如下:
1. 與MIPS差異
2. 比VLIW更加彈性
3. 含Instruction Group及Bundle(無法形成前者的指令)
含2個HW分別執行以上兩個
4. Prediciotn
使用條件指令取代分支指令以消除分支跳躍
使用Dynamic Pipleline Scheduling在Run-time時重排指令順序,解決Hazard避免Pipeline暫停
若處理器可以清楚知道是哪個Stage的指令造成Exception,此處理器擁有非精準中斷
提供使用者能用最便宜的技術來擁有足夠的記憶體,並利用最快的記憶體來提供最快的存取速度
主要利用到Locality
程式在執行時,一個時間點只會存取一小部分的位置空間
1.Temporal Locality
2.Spatial Locality
前者為Cache之間的資料不一致
後者為上下層Mem資料不一致
1. Write Through
2. Write Back
3.Write Buffer
1.Write Allocate
2.Write Around
將Cache切分成數個集合,記憶體的每個區塊可以對應至某個集合內任何block
CPU平均存取一次Mem的時間稱之
使用Mem當作Disk的快取,採取Demand Paging,即程式不只需部分載入記憶體即可執行。
一種Virtual Mem與Physical Mem對應的技術
動機
保存近期常被存取的位置轉換資訊,用來加速虛擬與實體位置的轉換
注意
使用虛擬位置存取快取,可以使得Hit Time較低
不同的Virtual Page對應到相同的Physical Page稱之
當Aliasing發生,若某個程式寫入資料,另一個程式可能不知道資料已被改變
Virtually Addressed | Physically Addressed | Virtually indexed, Physically tagged | |
---|---|---|---|
優點 | 存取速度快 | 架構簡單 | 架構簡單,存取效率佳 |
缺點 | Aliasing Problem | 存取效率低 | 總是要轉換虛擬位置至實體位置 |
硬體須提供
1. 支援至少兩種模式以區分使用者與OS
2. 區分有些資料結構User只能讀不能寫
3. User Mode與Kernel Mode之間的切換
三種Cache Miss的原因
當發生Miss時允許處理器繼續執行會存取資料的指令,通常用在Out-of order execution處理器中
1. Reducing miss penalty
Technique | Hit time | Bandwidth | Miss penalty | Miss rate |
---|---|---|---|---|
Banked cache | + | |||
Compiler | + | |||
Prefetching | + | + | ||
Critical word first | + | |||
Early restart | + | |||
Merging write buffer | + | |||
Non-blocking cache | + | + | ||
Way prediction | + | |||
Trace cache | + | |||
Small and simple cache | + | - | ||
Pipeline cache access | - | + |
1. 用Software Simulation技術模擬出與硬體元件一模一樣的功能介面,此一抽象化機器稱之。
2. 最近又受到關注原因有四
3. Virtual machine software run in kernel mode since it is operating system
Nor Flash
Nand Flash
Dependability用來衡量一個系統提供服務的品質
用Reliability和Availability來量化一個系統的Dependability
使用多個容量較小,比較便宜的硬碟來獲得比單一較大且貴的硬碟更好的性能
7.RAID6(P+Q Redundancy)
更新硬碟資料
4.5.6兩讀兩寫
部分記憶體空間被用來指定I/O設備。對這些位置做讀取或寫入,被解讀對I/O下指令
Resoonse time小
這些I/O指令能夠明確指出裝置號碼和命令在記憶體中的位置。有額外的I/O bus與設備溝通
含有兩個以上處理器之電腦稱之
若Process不能分解=>Job level parallelism
若Process可以分解=>Thread level parallelism
Computer 有很多處理器受控於單一個Control,同一時間不同處理器執行同一指令,處理不同資料
一個IC有多顆處理器
電腦硬體支援有效率的執行多個Thread
一個程式可以分配給多個處理器同時執行
電腦裡有多個處理器可以同時執行一個程式或多個Thread
電腦有多個處理器可以同時執行多個程式
一個程式平均有多少指令可以同時被執行
允許多筆獨立資料同時被運算
允許多個Memory的存取同時進行
電腦允許多個Thread同時或交錯的被執行
提供給所有處理器單一"邏輯"的記憶體空間,彼此之間可以透過共用變數來溝通。所有處理器都可以存取記憶體中任何位置的資料
此架構下所有處理器有自己的私有空間,彼此透過explictly sending and receiving來溝通
不須擔心Cache coherency => 架構簡單
在Multiprocessor架構中不同快取中可能會保存相同筆的資料,當有處理器對其快取進行存取,就有可能導致不同快取之間的資料不一致性稱之
Write-invalidate與Write back皆可降低匯流排頻寬的好處
=> 商業中使用以上兩種方法來使用單一匯流排連接更多處理器
一種硬體技術,允許多個thread交錯在單一處理器上執行來增加單一處理器上功能單元使用率
Hardware multithreading的一種變化,使用superscalar的硬體資源來獲得較好的ILP及TLP
Pipeline ALU來獲得performance的提升
有許多vector registers保存運算原及結果
結合SIMP的簡單與MIMD的高彈性
特色
與CPU差別
把GPU拿來執行一般的應用程式以此利用GPU的優點獲得高效能
Single Stage
Multiple Stage
評估
Power = Capacitive-load X Voltage^2 X Frequency