計算機系統結構--複習(Part 2)
這是計算機系統結構複習內容的第二部分,第一部分請轉連結:https://blog.csdn.net/zongza/article/details/83780572
往期回顧:
Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83780572
Part 2(chapter 5 - chapter 10):https://blog.csdn.net/zongza/article/details/83933327
Part 3(概念專輯):https://blog.csdn.net/zongza/article/details/84100133
Part 4(習題專輯):https://blog.csdn.net/zongza/article/details/84111578
資料下載:
計算機體系結構-量化研究方法-Hennessy&Patterson著(英文版):https://download.csdn.net/download/zongza/10787837
計算機體系結構-量化研究方法-Hennessy&Patterson著(中文版):https://download.csdn.net/download/zongza/10787840
計算機系統結構教程-第二版-張晨曦著:https://download.csdn.net/download/zongza/10787843
計算機體系結構教程-學習指導與題解:https://download.csdn.net/download/zongza/10793886
Chapter 5 ILP - 2
nBranch Target Buffers 分支目標緩衝 *
nConcept and Advantages of Dynamic Scheduling * 動態排程
- qScoreboard 記分牌
- qTomasulo
- qSpeculation 前瞻執行
- qTomasulo with ReOrder Buffer 再定序緩衝
nSuperscalar and VLIW * 超標量與超長指令字
什麼是動態排程?動態排程的好處?
動態是相對靜態而言的,靜態是指通過編譯器(軟體)進行排程,也就是在執行前進行排程,不可更改,動態排程是通過硬體實現在指令執行過程中的排程,同時還能保證data flow和exception behavior。
優點:
- 可以handle 靜態排程時編譯器檢測不出來的相關(dependence),比如cache miss(軟體方法檢測不出來),在等調進cache的時候硬體排程可以使得處理器去執行別的指令。
- 一條指令的不同階段可以在不同流水線中完成(儘管編譯的時候他們是在同一條流水線中的)
關鍵思想:允許被stall的指令停頓期間執行後面的指令(順序發射,亂序執行,亂序完成)
DIVD F0,F2,F4
ADDD F10,F0,F8
SUBD F12,F8,F14
比如:DIVD和ADDD之間有RAW,因此ADDD被stall,此時SUBD和兩者不存在任何相關和衝突,因此硬體可以在ADDD的stall期間執行SUBD
具體實現:將ID段拆成兩個:Issure 和 Read operands,前者檢測結構衝突,只要沒有SH,該指令就能發射;後者檢測資料衝突,等到沒有DH就可以讀運算元
但是,這種方式可能會帶來WAR和WAW衝突:
DIVD F10,F0,F2
ADDD F10,F4,F6
SUBD F6,F8,F14
如果不對ADDD和SUBD使用暫存器重新命名,那麼因為SUBD和ADDD存在反相關(F6)如果流水線在ADDD讀出F6之前就能完成SUBD,就回出現錯誤。類似的,DIVD和SDDD存在輸出相關,流水線必須能檢測出該相關,並避免WAW衝突。(可以用暫存器重新命名解決)
記分牌演算法(scoreboard)
記分牌通過記錄指令執行過程中指令的狀態,運算部件的狀態,暫存器的狀態實現集中控制(centralized control),其中記分牌只記錄四種指令狀態:
記錄的三種狀態各自有一個表:如下所示
- 指令狀態表特點:四個段 :發射 讀取 執行 寫回
- 功能部件狀態表特點: 1+2+2+2
- 暫存器狀態表特點:對應功能部件(一對一?)
下圖顯示了第二條LD指令準備寫結果之前的三表狀態:
指令狀態表:
- 此時LD2 處於EX階段,由於MUL SUB 與LD2有資料相關(F2,RAW)所以兩者都只能過issue(無結構衝突)不能進入Read。
- 由於MUL和DIV有資料相關(F0,RAW)所以DIV同理也只能在Issue階段。
- ADD與SUB有結構衝突(爭用加法器)所以連發射都不行。
功能單元狀態表:
Fi 目的暫存器 Fj Fk 源暫存器 Qj Qk 源暫存器的來源(來自哪個功能部件) Rj Rk (yes表示就緒待取,no表示取完或者未就緒)
- Integer的Rj表示取完。
- Mult1的Rj表示沒就緒,Rk表示就緒待取
暫存器狀態表:
- 表示存到F0暫存器的結果來自功能部件Mult1
下圖顯示了MULT指令準備寫結果之前的狀態:
- 由於SUB和MUL不存在任何衝突和相關,且SUB 2cycles,MUL 10cycles 因此當MUL到了EX段,SUB一定執行完了
- MUL和DIV有RAW(F0),所以MUL沒吧結果寫到F0之前DIV只能處於Issue
- DIV和ADD有WAR(F6),所以DIV沒讀F6之前ADD必須阻塞在EX段
下圖顯示了DIV指令準備寫結果之前的狀態:
- DIV寫結果前,前面的指令一定都完成了
- DIV要40個週期,ADD只要兩個,因此當DIV取走F6後ADD立刻執行完全有足夠的時間趕在DIV前面完成。
總結:
Tomasulo演算法
主要思想:
- 將保留站作為虛擬暫存器儲存 指令和運算元,實現分散式控制和快取
- 記錄和檢測指令相關,功能單元直接從保留站獲得運算元(不再從暫存器讀),運算元一旦就緒就立即執行,減少RAW(因為讀操作的源已被定向(預約)到寫的指令,只有運算元就緒時讀才執行);
- 通過暫存器換名來消除WAR衝突和WAW衝突。暫存器換名是通過保留站和流出邏輯來共同完成的。(之後的寫操作對保留站中的指令不再有影響,因為已換名,也就是指令中暫存器號換成了產生這個運算元的保留站標識,運算元可從CDB得到,不用再從暫存器讀)
記分牌和tomasulo比較:
可見:
- tomasulo的控制和快取分佈在各保留站中 而 記分牌中控制和快取集中在記分牌
- 使用功能單元對運算元進行計算不再是從暫存器取數(記分牌),而是從保留站的運算元快取中取數(因此減少RAW,從暫存器讀可能遇到重名的暫存器導致RAW)
- 暫存器換名
優點:
- 衝突檢測邏輯是分佈的(通過保留站和CDB實現)
- 消除了WAR和WAW衝突
缺點:
- 實現複雜
- 需要大量的高速相聯儲存
- 效能受CDB影響大(解決:多CDB)
例題:
下面是採用DLX浮點部件的Tomasulo演算法執行過程中用到的狀態表,試填寫狀態表中的相關空白。 假定:浮點流水線的延遲如下:加法2個時鐘週期,乘法10個時鐘週期,除法40個時鐘週期。給出SUBD 將要寫結果時狀態表的資訊。只填寫相關部分空格。
指令 |
指令狀態表 |
||
IS |
EX |
WR |
|
LD F6,34(R2) |
√ |
√ |
√ |
LD F2,45(R3) |
√ |
√ |
√ |
MULTD FO,F2,F4 |
√ |
|
|
SUBD F8,F6,F2 |
√ |
√ |
|
DIVD F10,F0,F6 |
√ |
|
|
ADDD F6,F8,F2 |
√ |
√ |
|
部件 名稱 |
保留站 |
||||||
Busy |
Op |
Vj |
Vk |
Qj |
Qk |
A |
|
Load1 |
no |
|
|
|
|
|
|
Load2 |
no |
|
|
|
|
|
|
Add1 |
yes |
SUBD |
Mem[45+Regs[R3]] |
Mem[34+Regs[R2]] |
|
|
|
Add2 |
yes |
ADDD |
|
Mem[45+Regs[R3]] |
Add1 |
|
|
Add3 |
no |
|
|
|
|
|
|
Mult1 |
yes |
MULTD |
Mem[45+Regs[R3]] |
Regs[4] |
|
|
|
Mult2 |
yes |
DIVD |
|
Mem[34+Regs[R2]] |
Mult1 |
|
|
|
結果暫存器狀態表 |
|||||||
F0 |
F2 |
F4 |
F6 |
F8 |
F10 |
…… |
F30 |
|
部件名稱 |
Mult1 |
|
|
Add2 |
Add1 |
Mult2 |
…… |
|
前瞻技術(speculation)
前瞻:循序處理器還未判斷指令是否能執行之前就提前執行,以克服控制相關。他的實質是資料流執行:只要運算元就緒,指令就執行。
與流水線中的靜態分支預測區別:前瞻技術是依靠硬體+動態分支預測技術+動態排程實現的。
帶有前瞻的tomasulo
前瞻是為了讓動態排程演算法更好地處理分支指令(有控制相關)。tomasulo的指令完成和寫結果都在WR段,而在前瞻執行中加以區分,分成兩個不同的段:寫結果,指令確認,特點是:允許指令亂序執行,但是必須順序確認(注意不是順序完成,確認是順序的,但是完成可以亂序)。
寫結果段:前瞻執行的結果寫到ROB,並通過CDB傳遞ROB中的結果到需要他們的指令保留站。
指令確認段:在分支結果出來後,對相應的前瞻執行結果予以確認,如果前瞻是對的,就把ROB中的結果寫到暫存器或者儲存器,如果是錯的,就不予以確認並從那條分支指令的另一條路徑重新開始執行。
ROB的每一項:
指令型別(指出該指令是分支指令、store指令或暫存器操作指令)+目標地址( 給出指令執行結果應寫入的目標暫存器號(如果是 load和ALU指令)或儲存器單元的地址(如果是store指令))+ 資料值欄位(用來儲存指令前瞻執行的結果,直到指令得到確認)+就緒欄位( 指出指令是否已經完成執行並且資料已就緒)+控制欄位(設定ROB的某一項是否被佔用)
普通tomasulo和帶有前瞻的tomasulo對比:
超標量和超長指令字
前面的方法可以提高並行度,但是CPI不可能低於1(最多就是1),想要在一個週期流出(發射)多條指令就得用多指令流出技術,包括超標量和超長指令字兩種方法.
超標量和超長指令字都是指具有每個週期多指令流出能力的計算機。他們的區別在於排程方式(動態or靜態)。.
靜態排程超標量(順序執行)
通過編譯器進行排程+流出指令時用單獨硬體檢測衝突 == 靜態排程+動態流出(所謂動態流出是指流出包中的指令可能不會全部流出,比如某指令與其他存在衝突,就只流出該指令之前的指令)
MIPS中的靜態超標量例項:
這裡是2-流出超標量,每個時鐘週期流出1條整型指令和1條浮點指令(load store 分支看做整型)
- 優點:和任意2-流出相比,對硬體要求低(比如1整+1整,就需要兩套整型的硬體)
- 缺點1:把load歸為整型,如果load是浮點load,可能會和浮點操作並行流出導致浮點暫存器訪問衝突
- 缺點2:load有一個時鐘延遲,這使得使用load的結果的指令必須和load相隔至少一個週期(在有定向的情況下),因此load之後的三條指令都不能用其結果
超標量中的迴圈展開:
需要考慮的問題:LD和ADD之間要有一個時鐘的延遲,ADD和SD之間要有兩個時鐘的延遲
那麼如果只展開四次ADD和SD的延遲不可避免,解決方法是進行更多的展開(5次)
動態排程超標量(亂序執行)
通過硬體進行排程+兩個tomasulo控制器(整型和浮點,確保不會亂序流出)== 動態排程+動態流出
超長指令字
完全靠編譯器進行排程 == 靜態排程+靜態流出(所謂靜態流出是指每個時鐘週期流出的指令數是固定的,這些指令構成一個長指令或指令包)
- 優點:對硬體依賴低,並行性完全由編譯器挖掘。
- 缺點1:同一個指令包中的指令必須保證是不相關的。
- 缺點2:需要優秀的編譯技術實現跨分支排程。
- 缺點3:沒有衝突檢測硬體,而是採用鎖步機制(lockstep),某部件停頓整個處理機就停頓。
- 缺點4:操作槽不應定能被填滿+為了提高並行性進行了過多迴圈展開,造成指令長度增加。
- 缺點5:機器程式碼不相容。
VLIW中的迴圈展開(指令包長度=2+2+1,注意其中某個指令槽不一定會被填滿):
9 clocks/ 7 iterations = 1.3clock_per_interation
超標量和VILW比較(硬體和軟體比較)
總結:
硬體的分支預測能力好,所需的程式碼少,但是需要大量的硬體
軟體的推斷設計簡單,所需硬體少,但是程式碼量大
Chapter 6 Limits to ILP and SMT
nWhat are Limits to ILP
nWhat is instruction window? 指令視窗
nWhat is Thread Level Parallelism (TLP) or MultiThreading * 執行緒級並行,多執行緒
nWhat is Data Level Parallelism? 資料級並行
How to switch Multi Threads *
- qfine grain 細粒度切換
- qcoarse grain 粗粒度切換
nWhat is Simultaneous multithreading * 同時多執行緒
nKnow something about Power5
ILP的limit
- 功耗太高(提升ILP的方法會帶來更多的功耗增加)
- 編譯器的複雜度太高
- 硬體的複雜度太高
- 適合計算密集型任務,不適合資料密集型任務
硬體完善度只要體現在以下四個方面:
指令視窗
指等待被檢測是否能同時發射的指令總數,大小和檢測衝突所需的代價有關(50個指令就需要2500次檢測),也和cpu儲存大小有關(視窗中的指令都是在處理器中)
什麼是TLP?
執行緒:一個小型的程序,有自己的指令和資料,可以獨立執行。執行緒可以是獨立的部分也可以是並行程式中的一小段。
執行緒級並行是比指令級並行更高的層次,他可以顯式地將幾個執行緒並行執行(他們之間共享執行單元)。
什麼是DLP?
資料級並行是比指令級並行更低的層次,他允許單一指令對多個運算元進行計算(SIMD)
我們考慮下面這個計算式子:(a+b)*(c+d)
該計算過程被分解為三步:
1. e = a +b
2. f = c +d
3. m = e * f
早期的計算機一次只能處理一條指令,它要先算步驟1(加法操作),再算步驟2(加法操作),最後算3(乘法操作)。需要三步(花費三個指令)得到答案。
但是我們觀察到:
3的結果依賴於1和2,而1和2都單純的加法操作,所以開始想辦法讓1和2同時計算,那麼CPU只要兩步得到答案,步驟1和2一次算出來的結果,直接進行乘法運算。
它運用了SIMD
(Single -Instruction ,Multple -Data)單指令多資料流
技術。一個指令執行了(a,b,c,d) 4個運算元。SIMD指令集可以提供更快的影象,聲音,視訊資料等執行速度。
三種並行的比較:
指令級並行是一種隱式並行,也就是寫程式的人不需要關注,通過流水線和超標量,使得一個程式的指令序列中有多條同時亂序執行,順序提交。這依賴暫存器重新命名,多個執行單元,重排序緩衝和指令預測技術。
執行緒級並行時一種顯式並行,也就是程式設計師要寫多執行緒程式。執行緒級並行主要指同時多執行緒(SMT)/超執行緒(HT)以及多核和多處理器。SMT是在指令級並行的基礎上的擴充套件,可以在一個核上執行多個執行緒,多個執行緒共享執行單元,以便提高部件的利用率,提高吞吐量。SMT需要為每個執行緒單獨保持狀態,如程式計數器(PC),暫存器堆,重排序緩衝等。
資料級並行是一種顯式並行,主要指單指令多資料(SIMD),比如a,b和c都是相同大小的陣列,要進行的計算是a的每一個元素與b的響應元素進行運算,結果放入c的對應元素中。如果沒有SIMD,就需要寫一個迴圈執行多遍來完成,而SIMD中 一條指令就可以並行地執行運算。 執行緒的概念就是程式的執行序,每個執行序有執行上下文需要儲存。
執行緒切換方式:
- 細粒度切換(every clock cycle):每條指令之間都可進行執行緒交換,因此執行緒之間是交替執行(常採用時間片輪轉方法)
- 粗粒度切換(only on big stall):只在某個執行緒發生長stall(比如L2 cache不命中)時才進行執行緒交換
- 細粒度優點:1-CPU中可以同時執行多個執行緒的指令。2-能降低stall的發生概率(輪轉時跳過處於停頓的執行緒)從而有效增加吞吐率
- 細粒度缺點:1-由於採用輪轉(每週期切換另一個執行緒的指令),因此每個獨立執行緒的執行就被減慢 2-每個週期都要切換,所以對執行緒切換速度要求高(一個週期內)
- 粗粒度優點:1-不會減慢獨立執行緒的執行,因為只有獨立執行緒發生大的stall才會切換執行緒。2-對切換執行緒的速度要求不高
- 粗粒度缺點:1-不能有效減少吞吐率,因為新執行緒的流水線建立需要時間開銷(為啥細粒度不需要?因為細粒度的cpu可以執行多個執行緒的指令,也就是對他們一視同仁,粗粒度只能執行一個執行緒的指令,因此發生阻塞時必須排空或者暫停,阻塞後切換的新的執行緒在指令執行產生結果之前必須先填滿整個流水線。所以粗粒度僅僅在pipeline refill << stall time的時候(也就是停頓時間遠大於流水線建立時間)有效)
ILP和TLP的結合:SMT同時多執行緒
ILP的過程中很多功能單元處於閒置狀態(由於stall或者相關)這時候就可以在閒置期開發TLP,具體來說就是把其他執行緒的指令看做不相關指令,並在stall期間執行。
硬體支援:
- 動態排程中由大量虛擬暫存器,可以用來儲存執行緒的暫存器狀態
- 動態排程中暫存器換名可以保證執行緒的資料通路互不干擾
- 額外硬體用來儲存執行緒的狀態(PC,重命名錶)
SMT的缺點:
- 同時多執行緒中的TLP實現方式是細粒度切換,因此會影響單個執行緒的執行時間【解決:設定有限執行緒,減少對指定執行緒的效能影響】
- 需要很多的暫存器來儲存多個執行緒的上下文狀態
- 併發執行的多個執行緒可能會引起cache衝突,導致效能下降
- 如果ILP的多流出中每個時鐘週期流出的指令過多,會使得時鐘週期的開銷變大(在issue那個時鐘週期需要考慮發射那些指令,在completion段需要考慮提交那些指令,這些都要花時間)
Chapter 7 Memory Hierarchy - 1
nLevels of the Memory Hierarchy * 儲存系統的層次結構
nThe Principle of Locality: Temporal Locality and Spatial Locality * 區域性性原理
nWhere can a block be placed: Fully associative, direct mapped, n-way set associative * 映像規則
nHow is a block found in the upper level? 查詢演算法
nWhich block should be replaced on a miss? 替換演算法:Random、LRU、FIFO
nWrite Policy: Write-Through and Write-Back; Write allocate and No-write allocate * 寫策略:寫直達與寫回,按寫分配與不按寫分配
nWhat and Why a write buffer 寫快取
儲存器系統層次結構:
80年代CPU速度提升很快而DRAM的速度相對發展緩慢,因此處理器和儲存器之間的速度gap越來越大。
為了解決這個問題就有了cache,他作為儲存器的一個縮放,工作在CPU和儲存器之間,使得程式可以像訪問暫存器一樣快速訪問cache,緩解CPU和DRAM速度差異。
常見的五級儲存結構:
暫存器-> cache -> memory(主存) -> disk(輔存) -> tape
區域性性原理:
區域性性原理是程式能進行隨機性訪問的基礎
時間區域性性:當前某項被訪問,那麼近期他可能還會被訪問
空間區域性性:當前某項被訪問,那麼他附近的項也可能被訪問
映像規則:組固定,組內不固定
- 全相聯對映(組數:1):主存中的塊可以對映到cache中任意位置,空間利用率高,衝突概率低,實現複雜
- 直接對映(組數:m):對映到固定位置(k mod 組數),空間利用率低,衝突概率高,實現簡單
- n塊組相連對映(組數:m/n):對映到固定的組(k mod 組數),組內位置任意(n表示組內塊數是n),折中
查詢演算法:
如何確定Cache中是否有所要訪問的塊?
答案:查詢目錄表!
替換演算法:
- 對於直接對映:不需要替換演算法(位置唯一,缺失必須替換對應位置的頁)
- 對於全相連和n塊組相連:隨機,LRU,先入先出
寫策略:
CPU和cache的互動如下所示:
可知寫操作必須在確認是命中後才可進行,因此將寫策略分成兩部分討論:
當write miss時(要寫的部分不再data cache裡):
- write allocate :先把缺失單元調入cache,再寫入(read miss 的處理和他一樣)
- no-write allocate :直接在memory中寫入,不調入cache了
當write hit時:
- write-through:cache和mem都寫
- write-back:只寫cache,等該單元被替換回mem的時候再寫mem
常用組合:
- write-through + no-write allocate
- write-back + write allocate
寫快取:
寫直達中因為要同時寫cache和主存因此有了寫快取,減少CPU停頓
Chapter 7 Memory Hierarchy - 2
nCache Measures: Average memory-access time ** Cache效能:平均訪問時間,命中與失效
- q= Hit time + Miss rate x Miss penalty *
- q= Hit timeL1+ Miss rateL1x (Hit timeL2+ Miss rateL2x Miss penaltyL2)
nBasic Cache Optimizations
nThree Major Categories of Cache Misses: Compulsory, Capacity and Conflict * 強制、容量與衝突不命中
nWhat is virtual address space 虛存空間
nHow page table works 頁表
nTranslation Look-Aside Buffer (TLB)地址變換後備快取
cache 效能:
- 平均訪問時間= Hit time + Miss rate x Miss penalty *
- 平均訪問時間= Hit timeL1+ Miss rateL1x (Hit timeL2+ Miss rateL2x Miss penaltyL2)
cache優化策略:
cache優化從平均訪問時間公式中的的三個要素入手
- 降低缺失率(提高block size)
- 降低缺失開銷
- 降低命中時間
造成cache缺失的原因:
- 強制:首次訪問失效(某塊的第一次訪問時cache一定miss)
- 容量:cache容量不夠
- 衝突不命中:組相連和直接對映中的cache組滿了,造成碰撞失效(這裡也屬於容量不足,組內容量,上一個是整體容量)
輔存對應的虛存和主存中的頁表:
虛存定義:由主存和輔存構成,通過必須的軟體(頁表)和硬體(地址轉換)支援,使得cpu訪問的儲存器可以有主存的速度和輔存的容量。
虛存的三個優點:
- 通過訪問許可權管理來保護資料
- 虛擬地址連續,方便程式設計
- 使用者共享實體地址(但是有不同的虛擬地址),使得多執行緒成為可能
其中sharing指 :每個使用者有一個頁表 ,每一個使用者頁在頁表中有一行,作業系統確保不同的頁表不交疊(如下所示)
有關頁表計算:
32位虛地址空間(按照位元組定址),每頁4KB,頁表每項4位元組(32bit),頁表大小是?
Given a 32-bit virtual address,4 KB pages, and 4 bytes per Page Table Entry (PTE), the size of the page table would be ?
首先頁表有 2^32B / 2^12B 個項,每項大小是4B(4B的PTE),所以頁表總大小為兩者積=4MB。
每個程序都要有自己的頁表,每個頁表要4MB,頁表可能太多無法裝入記憶體(頁表存在記憶體中 ),所以有了二級頁表:
一級頁表索引了1K(1024)個二級頁表,他們都在主存中,後面白的對應輔存中的實際塊。
cache和虛存的區別:
- cache缺失靠硬體彌補 , 虛存缺失靠軟體(作業系統)
- 指令中的地址長度決定了虛存大小,cache大小與之沒有關係
- cache是為了緩解CPU和主存之間的速度問題,虛存是為了緩解主存容量不足問題
TLB地址變換快取
目的:減少地址變換的時間(頁表在主存,每次data/instruction都要兩次訪問記憶體,一次查頁表一次取d/i,時間長)
TLB相當於一個全相連的cache,CPU直接查TLB,比查頁錶快得多
為什麼主存可以有虛地址,cache不能用虛地址?
會有同義字問題:如果兩個虛地址指向同一個實地址,那麼cache中會有兩個相同的塊,浪費資源的同時也很難維持資料一致性
cache例題
以Bs=16為例:64k的cache 缺失率為2.04%,所以命中率為1-2.04%
平均存取時間 = hit_time + miss_rate*(miss_pernalty) = 1+ 2.04%*(62)
如果Bs = 32:
平均存取時間 = hit_time + miss_rate*(miss_pernalty) = 1+ 1.35%*(64)
Chapter 8 I/O Systems
nWhat is a bus? Types of Buses
nDisk Drive Performance
nReliability, Availability and Dependability of the Storage Device * 可靠性、可用性與可信性
- qMTTF, MTTR and MTBF
nRedundant Arrays of Inexpensive Disks (RAID): Type, Characteristics and Read/Write Algorithm ** 廉價磁碟冗餘陣列
nI/O Benchmarks: Metrics and TPC
匯流排
匯流排就是共享的通訊鏈路,連線多個子系統
儲存器的效能
- 平均失效時間MTTF---可靠性 mean time to failure
- 平均恢復時間MTTR---可用性 mean time to repair
- 平均故障間隔時間MTBF---可用性 = MTTR+MTTF mean time between failure
硬碟驅動器的效能
相關推薦
計算機系統結構--複習(Part 2)
這是計算機系統結構複習內容的第二部分,第一部分請轉連結:https://blog.csdn.net/zongza/article/details/83780572 往期回顧: Part 1(chapter 1 - chapter 5):https://blog.c
計算機系統結構--複習(Part 4)
本篇是習題專輯 往期回顧: Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83780572 Part 2(chapter 5 - chapter 10):https:/
計算機系統結構--複習(Part 3)
陸續補充ing 往期回顧: Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83780572 Part 2(chapter 5 - chapter 10):https:/
計算機系統結構--複習(Part 1)
適用於期末考試之前的知識點複習. 往期回顧: Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83780572 Part 2(chapter 5 - chapter 10
JSP復習(part 2 )
war setattr current ren 客戶端 代碼 body 練習 params 3.4.2 訪問(獲取)請求參數 1.方法 String 字符串變量 =request.getParamete
用PyTorch建立一個影象分類器?So easy!(Part 2)
在第一部分中,我們知道了為什麼以及如何載入預先訓練好的神經網路,我們可以用自己的分類器代替已有神經網路的分類器。那麼,在這篇文章中,我們將學習如何訓練分類器。 訓練分類器 首先,我們需要為分類器提供待分類的影象。本文使用ImageFolder載入影象,預訓練神經網路的輸入有特定的格
Unity應用架構設計(10)——繞不開的協程和多執行緒(Part 2)
在上一回合談到,客戶端應用程式的所有操作都在主執行緒上進行,所以一些比較耗時的操作可以在非同步執行緒上去進行,充分利用CPU的效能來達到程式的最佳效能。對於Unity而言,又提供了另外一種『非同步』的概念,就是協程(Coroutine),通過反編譯,它本質上還是在主執行緒上的優化手段,並不屬於真正的多執行緒
資料結構複習(十二)之平衡二叉樹及哈夫曼樹
平衡二叉樹需要保證在插入和刪除二叉樹結點時,任意結點的左、右子樹的高度差絕對值不超過1,所以平衡二叉樹或者為一棵空樹,或者為具有左子樹和右子樹都為平衡二叉樹的性質。插入和刪除時出現不滿足條件時可進行一定的調整,分為LL平衡旋轉、RR平衡旋轉、LR平衡旋轉、RL平衡杆旋轉。
VFS檔案系統結構分析(容易理解)
VFS是Linux非常核心的一個概念,linux下的大部分操作都要用到VFS的相關功能。這裡從使用者的角度,對VFS進行了簡單說明。使用者不但需要知道Linux下有哪些檔案操作的函式,還需要對VFS的結構有一個比較清晰的瞭解,才能更好的使用它。例如hard link 與
.NET Core微服務之基於MassTransit實現資料最終一致性(Part 2)
一、案例結構與說明 在上一篇中,我們瞭解了MassTransit這個開源元件的基本用法,這一篇我們結合一個小案例來了解在ASP.NET Core中如何藉助MassTransit+Quartz.Net來實現資料的最終一致性。當然,實現資料的最終一致性有很多方案,這裡只是舉一種我所學到的比較簡單易於學習
組合數學——特殊計數序列(Part 2)
格路徑與Schroder數 參考資料:《組合數學》- Richard A.Brualdi 一.格路徑 首先我們將格路徑的概念形式化。 考慮只有整點的平面上的兩個點(r,s),(p,q),並且有p≥r,q≥sp≥r,q≥s。然後我們再來考慮從(r,s)
磨染的初心——計算機視覺的現狀(3.2):紋理與材質
磨染的初心——計算機視覺的現狀(3.2):紋理與材質 在前文中提到的分割演算法中,基於區域的方法和基於圖割的方法都利用了基於紋理的相似性度量方法。另外,除了基於卷積神經網路的演算法之外,目前所有的分割演算法都存在嚴重的過分割,區域合併將是不得不採納的選擇。對於區域合併來說,紋理相似性是一種非常重要的相似性度量
深入理解計算機系統(1.2)------存儲設備
高速 計算 想法 知識 1-1 運用 文件 字符 設備 上一章我們講解了hello world 程序在計算機系統中是如何運行的。 hello 程序的機器指令最初是存放在磁盤上的,當程序加載時,他們被復制到主存;當處理器運行程序的時候,指令又從主存復制到處理器。相似的,數
3.2《深入理解計算機系統》筆記(二)內存和高速緩存的原理【插圖】
img sram 本質 text ddr rate too 是我 很大的 《深入計算機系統》筆記(一)主要是講解程序的構成、執行和控制。接下來就是運行了。我跳過了“處理器體系結構”和“優化程序性能”,這兩章的筆記繼續往後延遲! 《深入計算機系統》的一個很大的用處
計算機系統結構(二)
第二章 指令系統結構的分類 2.1.1 指令系統的主要分類 區別不同指令系統結構的主要因素 CPU中用來儲存運算元的儲存單元的型別 CPU中用來儲存運算元的儲存單元 堆疊 累加器
深入理解計算機系統(4.2)---硬體的魅力
引言 這個系列已經很久沒更新了,記得上一篇博文已經是三月份了,實在是抱歉。最近業餘時間沒有以前充裕了,因此更新一篇博文已經變成了一種奢侈。記得以前剛開始寫的時候,最多的時候LZ一天寫過3篇博文,現
Linux系統Oracle 12cR2 RAC集群安裝與維護管理(12.2)專題
oracle教程 oracle培訓 oracle數據庫教程 oracle工程師培訓 oracle數據庫培訓 風哥Linux系統Oracle 12cR2 RAC集群安裝與維護管理(12.2)專題包括內容:Oracle數據庫12cR2(項目實戰之一):在Windows上安裝Oracle12.2
數據庫系統工程師教程(第2版)目錄
體系結構 多媒體 觸發 評估 實現 決策 可靠性 邏輯結構設計 視頻 北漂不易,為了所謂的“綠卡”,也為了以後能夠讓為孩子創造更好的條件;同時也為了充實下自己,終於下定決心,努力吧。 先從軟考開始《數據庫系統工程師教程》中級,以下純手碼,共勉 第
自己主動升級系統的設計與實現(續2) -- 添加斷點續傳功能 (附最新源代碼)
blog down 決定 top lin dom itl com 關於 一.緣起 之前已經寫了兩篇關於自己主動升級系統OAUS的設計與實現的文章(第一篇、第二篇)。在為OAUS服務端添加自己主動檢測文件變更的功能(這樣每次部署版本號升級時,能夠節省非常多時間。
Python基礎知識進階(五---2)----程序基本結構、簡單分支、異常處理、三大實例分析、基本循環結構、通用循環構造方法、死循環嵌套循環、布爾表達式
方法 算法 嵌套 構造方法 決策樹 輸入 繼續 實例 控制 上一篇隨筆寫的內容有點多了,決定分成兩節,不然自己看的時候也頭疼。 三者最大實例: 分支結構可以改變程序的控制流,算法不再是單調的一步步順序執行。 假設:以找出三個數字中最大者的程序設計為例。