.運(yùn)算器與控制器之間的信息傳遞
控制器中的程序計(jì)數(shù)器(PC)需要通過(guò)ALU完成指令地址計(jì)算,它把自己的內(nèi)容送到ALU的A輸入端,圖3.4中用pc-in表示,以實(shí)現(xiàn)PC+4和PC+immed-2的加法運(yùn)算,常數(shù)4和immed-2是由ALU的B輸入端提供。PC+4的計(jì)算要在讀取指令階段完成,并在這一階段就把計(jì)算結(jié)果(圖中用pc-out表示)寫(xiě)回PC。PC+immed-2的計(jì)算要在指令譯碼階段完成,并將計(jì)算結(jié)果保存在ALU的結(jié)果寄存器C中,到下一步的執(zhí)行階段依據(jù)需要把這個(gè)結(jié)果(圖中用reg-C表示)再寫(xiě)回PC。
2.運(yùn)算器與存儲(chǔ)器器之間的信息傳遞
寫(xiě)入寄存器堆的數(shù)據(jù)可以是ALU的運(yùn)算結(jié)果,也可能是從內(nèi)存中讀出來(lái)的數(shù)據(jù),這二者需要通過(guò)一個(gè)二選一電路送到寄存器堆的DI數(shù)據(jù)輸入端。ALU的計(jì)算結(jié)果是在執(zhí)行階段通過(guò)A op B或A op immed-1運(yùn)算得到的,并首先保存在C寄存器中,到下一步的數(shù)據(jù)寫(xiě)回階段才寫(xiě)入寄存器堆。
為了實(shí)現(xiàn)內(nèi)存的讀出或?qū)懭氩僮?,在?zhí)行階段通過(guò)A+immed-1運(yùn)算得到內(nèi)存地址,并保存在C寄存器中,到下一步的內(nèi)存讀寫(xiě)階段用C中的這個(gè)地址來(lái)選擇內(nèi)存中的一個(gè)存儲(chǔ)單元。
對(duì)從內(nèi)存讀出數(shù)據(jù)的指令,完成讀出數(shù)據(jù)到內(nèi)存的數(shù)據(jù)緩存寄存器DR中。對(duì)寫(xiě)數(shù)據(jù)到內(nèi)存的指令,把在譯碼步驟保存在B寄存器中的數(shù)據(jù)送到內(nèi)存的數(shù)據(jù)線,完成內(nèi)存的寫(xiě)入操作。
小結(jié):運(yùn)算器需要向內(nèi)存提供地址信息和寫(xiě)入的數(shù)據(jù)信息,內(nèi)存則將向運(yùn)算器提供其讀出的數(shù)據(jù)以便寫(xiě)入到寄存器堆中。
請(qǐng)注意,這個(gè)運(yùn)算器部件中的寄存器堆和ALU將在不同的執(zhí)行步驟中完成自己的操作功能,讀寄存器堆在前(需要提供被讀的兩個(gè)寄存器的編號(hào)rs和rt),ALU計(jì)算在后(需要提供數(shù)據(jù)來(lái)源選擇信號(hào)A_sel和B_sel,以及ALU的運(yùn)算功能選擇信號(hào)alu_func),再到下一步才會(huì)把保存在寄存器C中的計(jì)算結(jié)果寫(xiě)回寄存器堆(需要提供被寫(xiě)的寄存器編號(hào)rd,寫(xiě)寄存器堆的命令信號(hào)we)。三個(gè)寄存器A、B、C都要用到時(shí)鐘信號(hào)Clock。
Am2901的內(nèi)部組成
Am2901芯片是一個(gè)4位的位片結(jié)構(gòu)的運(yùn)算器器件,其內(nèi)部組成框圖如圖3.5所示。
圖3.5 Am2901 芯片的內(nèi)部組成框圖
該芯片的第一個(gè)組成部分是一個(gè)4位的算術(shù)邏輯運(yùn)算部件ALU,它的輸出為F,兩路輸入分別用R和S標(biāo)記,還有送入ALU最低位的進(jìn)位信號(hào)Cn,能實(shí)現(xiàn)R+S、S-R、R-S三種算術(shù)運(yùn)算功能,和R∨S、R∧S、R∧S、R⊕S、R⊕S五種邏輯運(yùn)算功能。在給出運(yùn)算結(jié)果的同時(shí),還送出向高位的進(jìn)位輸出信號(hào)Cn+4,溢出標(biāo)志信號(hào)OVR,最高位的狀態(tài)信號(hào)F3(可能用作符號(hào)位),以及運(yùn)算結(jié)果為零的標(biāo)志信號(hào)F=0000。
該芯片的第二個(gè)組成部分是由16個(gè)4位的通用寄存器組成的寄存器組。它是一個(gè)用雙端口(A口和B口)控制讀出,單端口(B口)控制寫(xiě)入的部件。為了對(duì)其進(jìn)行讀寫(xiě),需通過(guò)A地址、B地址指定被讀寫(xiě)的寄存器。兩路讀出數(shù)據(jù)分別用A口、B口標(biāo)記,經(jīng)鎖存器線路可以送到ALU的R、S輸入端的多路選擇器,A口讀出數(shù)據(jù)還可以用作該芯片的可選輸出數(shù)據(jù)之一。寄存器組的寫(xiě)入數(shù)據(jù)由一組多路選擇器給出,并由B地址選擇寫(xiě)入的寄存器。
該芯片的第三個(gè)組部成分是一個(gè)4位的Q寄存器,主要用于實(shí)現(xiàn)硬件的乘法、除法指令,能對(duì)本身的內(nèi)容完成左、右移位功能,能接收ALU的輸出,輸出送到ALU 的S 輸入端。
該芯片的其余組成部分是5組多路數(shù)據(jù)選擇器,每組都由4套電路組成,一套電路對(duì)應(yīng)一個(gè)數(shù)據(jù)位,通過(guò)它們實(shí)現(xiàn)芯片內(nèi)部的三個(gè)組成成分之間的連接,實(shí)現(xiàn)芯片內(nèi)部與外部信息的輸入輸出操作,包括:經(jīng)D輸入接收外部送來(lái)的4位輸入數(shù)據(jù),經(jīng)Y輸出端輸出4位數(shù)據(jù)到芯片外部。
請(qǐng)注意,在實(shí)現(xiàn)寄存器數(shù)據(jù)左、右移位操作時(shí),會(huì)涉及到芯片內(nèi)外部的數(shù)據(jù)交換,左移操作要求向運(yùn)算器的最低位(圖中用RAM0和Q0)送入移位輸入數(shù)據(jù),運(yùn)算器的最高位(圖中用RAM3和Q3)將向外部送出移位輸出數(shù)據(jù),右移操作要求向運(yùn)算器的最高位送入移位輸入數(shù)據(jù),運(yùn)算器的最低位將向外部送出移位輸出數(shù)據(jù)。
(2) Am2901的控制與操作
控制信號(hào)包括:
① 選擇ALU的八種運(yùn)算(三種算術(shù)運(yùn)算、五種邏輯運(yùn)算)功能中的一種。這可通過(guò)提供三位功能選擇碼I5,I4,I3實(shí)現(xiàn),其具體規(guī)定列在表3.1中。
② 選擇送入ALU的兩個(gè)操作數(shù)據(jù)R和S的組合關(guān)系(數(shù)據(jù)來(lái)源)。圖3.5上已標(biāo)明,R從D和A中選擇,S從A、B和Q中選擇,再考慮到它們還均可選"0"值,則我們選取最有用的8種組合,即A、Q組合,A、B組合,O、Q組合,0、B組合,0、A組合,D、A組合,D、Q組合,D、O組合,并用I2,I1,I0三位操作數(shù)選擇碼控制二組多路選通門選取其一,具體規(guī)定如表3.2所示。
③ 選擇運(yùn)算結(jié)果或有關(guān)數(shù)據(jù)以什么方式送往何處的處理方案,這主要指通用寄存器組和Q寄存器執(zhí)不執(zhí)行接收操作或移位操作,以及向芯片的輸出信息Y提供的是什么內(nèi)容。這是通過(guò)I8,I7,I6三位結(jié)果選擇碼來(lái)控制三組相應(yīng)的選擇門實(shí)現(xiàn)的,其規(guī)定如表3.3所示。
表3.1 選擇運(yùn)算功能表 3.2數(shù)據(jù)來(lái)源選擇
表3.3 選擇結(jié)果處理方案
(3)外部的數(shù)據(jù)及線路
有一些數(shù)據(jù)是由在芯片之外的線路提供的,包括:
?、傩酒?jīng)D端接收的外部數(shù)據(jù)
②芯片最低位的進(jìn)位輸入信號(hào)Cn
③關(guān)于左右移位操作過(guò)程中的RAM3、RAM0、Q3和Q0的輸入數(shù)據(jù)
?、苄枰谛酒庠O(shè)置接收與記憶4個(gè)標(biāo)志位信息的電路
、實(shí)驗(yàn)?zāi)康?/strong>
1)通過(guò)實(shí)驗(yàn)了解和熟悉plc的結(jié)構(gòu)和外部接線方法;
2)了解和熟悉簡(jiǎn)易編程器或編程軟件的使用方法;
3)掌握簡(jiǎn)單程序的寫(xiě)入、編輯、監(jiān)視和模擬運(yùn)行的方法,熟悉PLC的基本指令,掌握定時(shí)器、計(jì)數(shù)器的工作原理。
二、實(shí)驗(yàn)裝置
1)三菱FX系列PLC1臺(tái);
2) FX-20P-E簡(jiǎn)易編程器1只或裝有編程軟件的計(jì)算機(jī)1臺(tái)(附連接電纜);
3)開(kāi)關(guān)量輸入電路板1塊。
(三)實(shí)驗(yàn)內(nèi)容
1.PLC外部接線
PLC外部接線圖如圖1所示,用開(kāi)關(guān)量輸入電路板上的按鈕或開(kāi)關(guān)信號(hào)作為PLC的輸入,PLC輸出可不接,直接通過(guò)在PLC輸出指示燈上觀察輸出情況。
圖1 PLC的外部接線圖
2.程序的寫(xiě)入、檢查及修改
將編程器或裝有編程軟件的計(jì)算機(jī)接到PLC上,并將PLC上的“RUN”開(kāi)關(guān)撥到“STOP”位置,接通PLC的電源。選擇聯(lián)機(jī)方式,按[RD/WR]鍵,使編程器處于W(WR)工作方式,再按以下順序操作:[NOP]-[A]-[GO]-[GO],將PLC用戶程序存儲(chǔ)器中的內(nèi)容全部清除。同樣,也可按編程軟件的操作方法將用戶程序清除。
用編程器或計(jì)算機(jī)寫(xiě)入圖2(a)對(duì)應(yīng)的梯形圖或指令表程序,寫(xiě)入后從第0步開(kāi)始逐條檢查程序;如發(fā)現(xiàn)錯(cuò)誤,顯示出錯(cuò)誤指令后再寫(xiě)入正確的指令。
圖2 簡(jiǎn)單PLC程序梯形圖
3.模擬運(yùn)行程序
寫(xiě)入的程序經(jīng)檢查無(wú)錯(cuò)誤后,斷開(kāi)實(shí)驗(yàn)板上的全部輸入開(kāi)關(guān),將“RUN”開(kāi)關(guān)撥到RUN位置,寫(xiě)入的程序開(kāi)始運(yùn)行,同時(shí)“RUN”的LED燈亮。
按照表1所示操作X0-X2對(duì)應(yīng)的鈕子開(kāi)關(guān),通過(guò)PLC上的LED觀察Y0和Y1的狀態(tài),并填入表中。表中的脈沖波形表示開(kāi)關(guān)接通后馬上斷開(kāi)(模擬按鈕的操作),0、1分別表示開(kāi)關(guān)斷開(kāi)和接通。
表1 信號(hào)狀態(tài)表
3.指令的讀出、刪除、插入和修改
將“RUN”開(kāi)關(guān)撥到“STOP”位置,將圖2(a)對(duì)應(yīng)的梯形圖程序改為圖2(b)對(duì)應(yīng)的梯形圖程序,按下述步驟進(jìn)行操作:
(1)刪除指令A(yù)ND X2和OUT Y1。
(2)在ANI XI之前插入ANI X3。
(3)將OR Y0改為OR Y2,將OUT Y0改為OUT Y2。
完成上述操作后,檢查修改后的程序是否與梯形圖一致;不一致,則按梯形圖改正。運(yùn)行修改后的程序,檢查程序是否能完成修改后的功能。
4.清除已運(yùn)行的程序,然后寫(xiě)入圖3所示的定時(shí)器、計(jì)數(shù)器程序,檢查無(wú)誤后進(jìn)行運(yùn)行,并用編程器或計(jì)算機(jī)完成以下監(jiān)視工作:
圖3 定時(shí)、計(jì)數(shù)器程序梯形圖
(1)改變X0和X1的狀態(tài),監(jiān)視M10和M11的狀態(tài)。
(2)用X1控制T1的線圈,監(jiān)視T1的當(dāng)前值和觸點(diǎn)的變化情況。
(3)在下述情況下監(jiān)視C1的當(dāng)前值、觸點(diǎn)和復(fù)位電路的變化情況:先接通X2對(duì)應(yīng)的開(kāi)關(guān),并用X3對(duì)應(yīng)的開(kāi)關(guān)給C1提供計(jì)數(shù)脈沖;然后斷開(kāi)X2對(duì)應(yīng)的開(kāi)關(guān),用X3對(duì)應(yīng)的開(kāi)關(guān)發(fā)出8個(gè)計(jì)數(shù)脈沖;最后重新接通X2對(duì)應(yīng)的開(kāi)關(guān),記錄上述各步觀測(cè)到的現(xiàn)象。
四、實(shí)驗(yàn)報(bào)告內(nèi)容
(1)整理出模擬運(yùn)行各程序及監(jiān)視操作時(shí)所觀察到的現(xiàn)象。
(2)分析定時(shí)器T1、計(jì)數(shù)器C1的工作原理及相應(yīng)觸點(diǎn)動(dòng)作的時(shí)序
期我們講到LoaRunner性能測(cè)試操作系統(tǒng)監(jiān)控,這期我們講LoaRunner性能測(cè)試Windows計(jì)數(shù)器。
監(jiān)控系統(tǒng)資源的目的是為了分析是否由于系統(tǒng)資源引起性能瓶頸,通常分析的硬件資源消耗主要包括內(nèi)存、磁盤和CPU,那么如何定位這些硬件是否達(dá)到瓶頸呢?在實(shí)際測(cè)試過(guò)程中沒(méi)有直接的指標(biāo)可以指明硬件是否達(dá)到瓶頸,需要分析計(jì)數(shù)器來(lái)間接的去分析硬件資源是否出現(xiàn)瓶頸。
內(nèi)存計(jì)數(shù)器
關(guān)于內(nèi)存計(jì)數(shù)器主要有三個(gè):
Available Bytes(Available Kbytes
Available Mbytes)
Memory pages/second
Page Faults/sec
Available Bytes表示計(jì)算機(jī)上可用于運(yùn)行處理的有效物理內(nèi)存的字節(jié)數(shù)量。是用零、空閑和備用內(nèi)存表上的空間總值計(jì)算的??臻e內(nèi)存指可以使用內(nèi)存;零內(nèi)存指為了防止以后的處理看到以前處理使用的數(shù)據(jù)而在很多頁(yè)內(nèi)存中充滿了零內(nèi)存。備用內(nèi)存是指從處理的工作集(它的物理內(nèi)存)移到磁盤的,但是仍舊可以調(diào)用的內(nèi)存。這個(gè)計(jì)數(shù)器只顯示上一次觀察到的值;它不是一個(gè)平均值。一般不小于4MB,如果該值低于閥值且Pages/sec持續(xù)的處于峰值狀態(tài)下,那么說(shuō)明計(jì)算機(jī)的物理內(nèi)存不夠。
Memory pages/second是指為解決頁(yè)面錯(cuò)誤從磁盤讀取或?qū)懭氪疟P的速度。這個(gè)計(jì)數(shù)器是可以顯示導(dǎo)致系統(tǒng)范圍延緩類型錯(cuò)誤的主要指示器。
它是Memory\Pages Input/sec
Memory\Pages Output/sec的總和。是用頁(yè)數(shù)計(jì)算的,以便在不用做轉(zhuǎn)換的情況下就可以同其他頁(yè)計(jì)數(shù)。
如Memory\Page Faults/sec,這個(gè)值包括為滿足錯(cuò)誤而在文件系統(tǒng)緩存(通常由應(yīng)用程序請(qǐng)求)的非緩存映射內(nèi)存文件中檢索的頁(yè)。如果系統(tǒng)運(yùn)行在內(nèi)存較少的狀態(tài),那么該值將逐漸增大,因?yàn)椴僮飨到y(tǒng)必須使用頁(yè)面文件來(lái)進(jìn)行臨時(shí)數(shù)據(jù)存儲(chǔ),并且Windows會(huì)更加依賴頁(yè)面文件來(lái)為用戶請(qǐng)求提供服務(wù),因此讀寫(xiě)數(shù)據(jù)頁(yè)面數(shù)目將增加。這個(gè)計(jì)數(shù)器的值應(yīng)該保持或接近0。
Page Faults/sec 是每秒鐘出錯(cuò)頁(yè)面的平均數(shù)量。由于每個(gè)錯(cuò)誤操作中只有一個(gè)頁(yè)面出錯(cuò),計(jì)算單位為每秒出錯(cuò)頁(yè)面數(shù)量,因此這也等于頁(yè)面錯(cuò)誤操作的數(shù)量。這個(gè)計(jì)數(shù)器包括硬錯(cuò)誤(那些需要磁盤訪問(wèn)的)和軟錯(cuò)誤(在物理內(nèi)存的其他地方找到的錯(cuò)誤頁(yè))。許多處理器可以在有大量軟錯(cuò)誤的情況下繼續(xù)操作。但是,硬錯(cuò)誤可以導(dǎo)致明顯的拖延。
在監(jiān)控內(nèi)存時(shí)應(yīng)該注意內(nèi)存泄漏的情況,一般以下兩種情況表明出現(xiàn)內(nèi)存泄漏的情況:
第一:觀察內(nèi)存分配池,如果內(nèi)存池中可用內(nèi)存消耗是呈不斷上升的趨勢(shì),說(shuō)明可能出現(xiàn)內(nèi)存泄漏的情況。。
第二:進(jìn)程分配內(nèi)存后,但并未將用完的內(nèi)存回收。
磁盤計(jì)數(shù)器
關(guān)于磁盤計(jì)數(shù)器主要有四個(gè):
%Disk Time
Average Disk Queue Length
Average Disk Seconds/Read
Average Disk Seconds/Write
%Disk Time表示所選磁盤驅(qū)動(dòng)器忙于為讀或?qū)懭胝?qǐng)求提供服務(wù)所用的時(shí)間的百分比。正常值<10,此值過(guò)大表示耗費(fèi)太多時(shí)間來(lái)訪問(wèn)磁盤,可考慮增加內(nèi)存、更換更快的硬盤、優(yōu)化讀寫(xiě)數(shù)據(jù)的算法。
Average Disk Queue Length指讀取和寫(xiě)入請(qǐng)求的平均隊(duì)列數(shù)(所選磁盤在實(shí)例間隔中的列隊(duì)),如駕車等信號(hào)燈,如果當(dāng)前信號(hào)燈有很多車在等,那么排在后面的車就必須等待下一個(gè)信號(hào)燈才有可能通過(guò)。
正常值<0.5,此值過(guò)大表示磁盤I/O太慢,要更換更快的硬盤。
Average Disk sec/Read 指以秒計(jì)算的在磁盤上讀取數(shù)據(jù)的所需平均時(shí)間。
Average Disk sec/Write 指以秒計(jì)算的在此盤上寫(xiě)入數(shù)據(jù)的所需平均時(shí)間。監(jiān)控到磁盤平均讀寫(xiě)時(shí)間后,如何確定該值是否正常呢?磁盤是否遇到瓶頸呢?如果要確定磁盤讀寫(xiě)時(shí)間是否遇到瓶頸,需要先獲得物理磁盤讀寫(xiě)一次所花費(fèi)的時(shí)間,即磁盤服務(wù)時(shí)間,磁盤服務(wù)時(shí)間由三部分時(shí)間組成:尋找時(shí)間、旋轉(zhuǎn)延遲時(shí)間和數(shù)據(jù)傳輸時(shí)間。
尋道時(shí)間(Tseek)是指將讀寫(xiě)磁頭移動(dòng)到正確的磁道上所需要的時(shí)間,尋道時(shí)間越短,I/O操作越快,目前磁盤的平均尋道時(shí)間一般為3-15ms。
旋轉(zhuǎn)延遲時(shí)間(Trotation)是指盤片旋轉(zhuǎn)將請(qǐng)求數(shù)據(jù)所在扇區(qū)移至讀寫(xiě)磁頭下方所需要的時(shí)間,旋轉(zhuǎn)延遲取決于磁盤轉(zhuǎn)速,通常為磁盤旋轉(zhuǎn)一周所需要時(shí)間的1/2?,F(xiàn)在的磁盤轉(zhuǎn)速一般為5400轉(zhuǎn)/分、7200轉(zhuǎn)/分、10K轉(zhuǎn)/分和15K轉(zhuǎn)/分,以7200轉(zhuǎn)/分為例,一分鐘可以轉(zhuǎn)120轉(zhuǎn),那么磁盤轉(zhuǎn)一周的時(shí)間為1/120,大約為8.33ms,旋轉(zhuǎn)延遲時(shí)間為旋轉(zhuǎn)一周所需時(shí)間的1/2,即大概為4.17ms。
數(shù)據(jù)傳輸時(shí)間(Transfer)是指完成傳輸所請(qǐng)求的數(shù)據(jù)所需要的時(shí)間,它取決于數(shù)據(jù)傳輸率,該值等于數(shù)據(jù)大小除于數(shù)據(jù)傳輸率
目前IDE/SATA的傳輸率達(dá)到133MB/s
SATA II可達(dá)到300MB/s,所以數(shù)據(jù)傳輸?shù)臅r(shí)間很短,相對(duì)于尋找時(shí)間和旋轉(zhuǎn)延遲時(shí)間數(shù)據(jù)傳輸時(shí)間可以忽略不計(jì)。
以7200轉(zhuǎn)/分為例,讀寫(xiě)一次平均時(shí)間大約為3ms
(尋道時(shí)間)加上4.17ms(旋轉(zhuǎn)延遲時(shí)間),即7.17ms,如果監(jiān)控到的平均讀寫(xiě)時(shí)間比計(jì)算出來(lái)的平均讀寫(xiě)時(shí)間值大,則說(shuō)明磁盤可能出現(xiàn)瓶頸。
但現(xiàn)在服務(wù)器磁盤都是以陣列的方式出現(xiàn),對(duì)于使用不同的磁盤陣列,其它讀寫(xiě)時(shí)間計(jì)算方式也有不同,在分析不同陣列方式讀寫(xiě)時(shí)間時(shí),首先需要了解磁盤陣列的相關(guān)內(nèi)容。
磁盤陣列
(Redundant Arrays of Inexpensive Disks,RAID)
有“價(jià)格便宜且多余的磁盤陣列”之意,磁盤陣列的原理是利用數(shù)組方式來(lái)來(lái)作磁盤組,配合數(shù)據(jù)分散排列的設(shè)計(jì),提升數(shù)據(jù)的安全性。磁盤陣列是由很多便宜、容量較小、穩(wěn)定性較高、速度較慢磁盤,組合成一個(gè)大型的磁盤組,利用個(gè)別磁盤提供數(shù)據(jù)所產(chǎn)生加成效果提升整個(gè)磁盤系統(tǒng)效能。同時(shí)利用這項(xiàng)技術(shù),將數(shù)據(jù)切割成許多區(qū)段,分別存放在各個(gè)硬盤上。磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數(shù)組中任一顆硬盤故障時(shí),仍可讀出數(shù)據(jù),在數(shù)據(jù)重構(gòu)時(shí),將數(shù)據(jù)經(jīng)計(jì)算后重新置入新硬盤中。
RAID的規(guī)范主要包括RAID 0~RAID 7等數(shù)個(gè)規(guī)范,它們的側(cè)重點(diǎn)各不相同,常見(jiàn)的規(guī)范有以下幾種:
RAID 0:無(wú)差錯(cuò)控制的帶區(qū)組
要實(shí)現(xiàn)RAID0必須要有兩個(gè)以上硬盤驅(qū)動(dòng)器,RAID0實(shí)現(xiàn)了帶區(qū)組,數(shù)據(jù)并不是保存在一個(gè)硬盤上,而是分成數(shù)據(jù)塊保存在不同驅(qū)動(dòng)器上。因?yàn)閷?shù)據(jù)分布在不同驅(qū)動(dòng)器上,所以數(shù)據(jù)吞吐率大大提高,驅(qū)動(dòng)器的負(fù)載也比較平衡。如果剛好所需要的數(shù)據(jù)在不同的驅(qū)動(dòng)器上效率最好,那么它不需要計(jì)算校驗(yàn)碼,實(shí)現(xiàn)容易。它的缺點(diǎn)是它沒(méi)有數(shù)據(jù)差錯(cuò)控制,如果一個(gè)驅(qū)動(dòng)器中的數(shù)據(jù)發(fā)生錯(cuò)誤,即使其它盤上的數(shù)據(jù)正確也無(wú)濟(jì)于事了。不應(yīng)該將它用于對(duì)數(shù)據(jù)穩(wěn)定性要求高的場(chǎng)合。如果用戶進(jìn)行圖像(包括動(dòng)畫(huà))編輯和其它要求傳輸比較大的場(chǎng)合使用RAID0比較合適。同時(shí),RAID0可以提高數(shù)據(jù)傳輸速率,比如所需讀取的文件分布在兩個(gè)硬盤上,這兩個(gè)硬盤可以同時(shí)讀取。那么原來(lái)讀取同樣文件的時(shí)間被縮短為1/2。在所有的級(jí)別中,RAID0的速度是最快的,但是RAID0沒(méi)有冗余功能的,如果一個(gè)磁盤(物理)損壞,則所有的數(shù)據(jù)都無(wú)法使用。RAID0的結(jié)構(gòu)圖如圖所示。
RAID 1:鏡像結(jié)構(gòu)
RAID1對(duì)于使用這種RAID1結(jié)構(gòu)的設(shè)備來(lái)說(shuō),RAID1控制器必須能夠同時(shí)對(duì)兩個(gè)盤進(jìn)行讀操作和對(duì)兩個(gè)鏡像盤進(jìn)行寫(xiě)操作。RAID1結(jié)構(gòu)圖如圖所示。
從結(jié)構(gòu)圖中可以看到必須有兩個(gè)驅(qū)動(dòng)器,因?yàn)楫?dāng)鏡像結(jié)構(gòu)在一組盤出現(xiàn)問(wèn)題時(shí),可以使用鏡像提高系統(tǒng)的容錯(cuò)能力。RAID1比較容易設(shè)計(jì)和實(shí)現(xiàn),每讀一次 盤只能讀出一塊數(shù)據(jù),也就是說(shuō)數(shù)據(jù)塊傳送速率與單獨(dú)的盤的讀取速率相同。因?yàn)镽AID1的校驗(yàn)十分完備,因此對(duì)系統(tǒng)的處理能力有很大的影響,通常的RAID功能由軟件實(shí)現(xiàn),而這樣的實(shí)現(xiàn)方法在服務(wù)器負(fù)載比較重的時(shí)候會(huì)大大影響服務(wù)器效率。當(dāng)您的系統(tǒng)需要極高的可靠性時(shí),如進(jìn)行數(shù)據(jù)統(tǒng)計(jì),那么使用 RAID1比較合適,而且RAID1技術(shù)支持“熱替換”,即不斷電的情況下對(duì)故障磁盤進(jìn)行更換,更換完畢只要從鏡像盤上恢復(fù)數(shù)據(jù)即可。當(dāng)主硬盤損壞時(shí),鏡像硬盤就可以代替主硬盤工作,鏡像硬盤相當(dāng)于一個(gè)備份盤,可想而知,這種硬盤模式的安全性是非常高的,RAID1的數(shù)據(jù)安全性在所有的RAID級(jí)別上來(lái)說(shuō)是最好的,但是其磁盤的利用率卻只有50%,是所有RAID級(jí)別中最低的。
RAID2:帶海明碼校驗(yàn)
從概念上講RAID2與RAID3類似,兩者都是將數(shù)據(jù)條塊化分布于不同的硬盤上,條塊單位為位或字節(jié)。然而RAID2使用一定的編碼技術(shù)來(lái)提供錯(cuò)誤檢查及恢復(fù),這種編碼技術(shù)需要多個(gè)磁盤存放檢查及恢復(fù)信息,使得RAID2技術(shù)實(shí)施更復(fù)雜。因此,在商業(yè)環(huán)境中很少使用。RAID2結(jié)構(gòu)圖如圖所示。
由于海明碼的特點(diǎn),它可以在數(shù)據(jù)發(fā)生錯(cuò)誤的情況下將錯(cuò)誤校正,以保證輸出的正確。它的數(shù)據(jù)傳送速率相當(dāng)高,如果希望達(dá)到比較理想的速度, 那最好提高保存校驗(yàn)碼ECC碼的硬盤性能,對(duì)于控制器的設(shè)計(jì)來(lái)說(shuō),它又比RAID3、RAID4或RAID5要簡(jiǎn)單。但是要利用海明碼,必須要付出數(shù) 據(jù)冗余的代價(jià),輸出數(shù)據(jù)的速率與驅(qū)動(dòng)器組中速度最慢的相等。
RAID3:帶奇偶校驗(yàn)碼的并行傳送
RAID3這種校驗(yàn)碼與RAID2不同,只能查錯(cuò)不能糾錯(cuò)。它訪問(wèn)數(shù)據(jù)時(shí)一次處理一個(gè)帶區(qū),這樣可以提高讀取和寫(xiě)入速度,它像RAID0一樣以并行的方式來(lái)存放數(shù)據(jù),但速度沒(méi)有RAID 0快。校驗(yàn)碼在寫(xiě)入數(shù)據(jù)時(shí)產(chǎn)生并保存在另一個(gè)磁盤上,需要實(shí)現(xiàn)時(shí)用戶必須要有三個(gè)以上的驅(qū)動(dòng)器,寫(xiě)入速率與讀出速率都很高,因?yàn)樾r?yàn)位比較少,因此計(jì)算時(shí)間相對(duì)而言比較少,RAID3的結(jié)構(gòu)圖如圖所示。
用軟件實(shí)現(xiàn)RAID控制將是十分困難的,控制器的實(shí)現(xiàn)也不是很容易,它主要用于圖形(包括動(dòng)畫(huà))等要求吞吐率比較高的場(chǎng)合,不同于RAID2,RAID3使用單塊磁盤存放奇偶校驗(yàn)信息。如果一塊磁盤失效,奇偶盤及其他數(shù)據(jù)盤可以重新產(chǎn)生數(shù)據(jù),如果奇偶盤失效,則不影響數(shù)據(jù)使用。RAID3對(duì)于大量的連續(xù)數(shù)據(jù)可提供很好的傳輸率,但對(duì)于隨機(jī)數(shù)據(jù),奇偶盤會(huì)成為寫(xiě)操作的瓶頸。利用單獨(dú)的校驗(yàn)盤來(lái)保護(hù)數(shù)據(jù)雖然沒(méi)有鏡像的安全性高,但是硬盤利用率得到了很大的提高,硬盤利用率為n-1。
RAID4:帶奇偶校驗(yàn)碼的獨(dú)立磁盤結(jié)構(gòu)
RAID4和RAID3很像,不同的是,它對(duì)數(shù)據(jù)的訪問(wèn)是按數(shù)據(jù)塊進(jìn)行的,也就是按磁盤進(jìn)行的,每次是一個(gè)盤。
RAID3是一次一橫條,而RAID4一次一豎條。它的特點(diǎn)和RAID3也挺像,不過(guò)在失敗恢復(fù)時(shí),它的難度可要比RAID3大得多了,控制器的設(shè)計(jì)難度也要大許多,而且訪問(wèn)數(shù)據(jù)的效率不高。
RAID5:分布式奇偶校驗(yàn)的獨(dú)立磁盤結(jié)構(gòu)
RAID 5不單獨(dú)指定的奇偶盤,而是在所有磁盤上交叉地存取數(shù)據(jù)及奇偶校驗(yàn)信息。在RAID 5上,讀/寫(xiě)指針可同時(shí)對(duì)陣列設(shè)備進(jìn)行操作,提供了更高的數(shù)據(jù)流量。RAID 5更適合于小數(shù)據(jù)塊和隨機(jī)讀寫(xiě)的數(shù)據(jù)。RAID 3與RAID 5相比,最主要的區(qū)別在于RAID 3每進(jìn)行一次數(shù)據(jù)傳輸就需涉及到所有的陣列盤;而對(duì)于RAID 5來(lái)說(shuō),大部分?jǐn)?shù)據(jù)傳輸只對(duì)一塊磁盤操作,并可進(jìn)行并行操作。在RAID 5中有“寫(xiě)損失”,即每一次寫(xiě)操作將產(chǎn)生四個(gè)實(shí)際的讀/寫(xiě)操作,其中兩次讀舊的數(shù)據(jù)及奇偶信息,兩次寫(xiě)新的數(shù)據(jù)及奇偶信息。RAID5結(jié)構(gòu)圖如圖所示。
RAID6:帶有兩種分布存儲(chǔ)的奇偶校驗(yàn)碼的獨(dú)立磁盤結(jié)構(gòu)
與RAID5相比,RAID6增加了第二個(gè)獨(dú)立的奇偶校驗(yàn)信息塊,兩個(gè)獨(dú)立的奇偶系統(tǒng)使用不同的算法,數(shù)據(jù)的可靠性非常高,即使兩塊磁盤同時(shí)失效也不會(huì)影響數(shù)據(jù)的使用。但RAID6需要分配給奇偶校驗(yàn)信息更大的磁盤空間,相對(duì)于RAID5有更大的“寫(xiě)損失”,因此“寫(xiě)性能”非常差,較差的性能和復(fù)雜的實(shí)施方式使得RAID 6很少得到實(shí)際應(yīng)用。
RAID7:優(yōu)化的高速數(shù)據(jù)傳送磁盤結(jié)構(gòu)
RAID7所有的I/O傳送均是同步進(jìn)行的,可以分別控制,這樣提高了系統(tǒng)的并行性,提高系統(tǒng)訪問(wèn)數(shù)據(jù)的速度,每個(gè)磁盤都帶有高速緩沖存儲(chǔ)器,實(shí)時(shí)操作系統(tǒng)可以使用任何實(shí)時(shí)操作芯片,達(dá)到不同實(shí)時(shí)系統(tǒng)的需要。允許使用SNMP協(xié)議進(jìn)行管理和監(jiān)視,可以對(duì)校驗(yàn)區(qū)指定獨(dú)立的傳送信道以提高效率,可以連接多臺(tái)主機(jī),因?yàn)榧尤敫咚倬彌_存儲(chǔ)器,當(dāng)多用戶訪問(wèn)系統(tǒng)時(shí),訪問(wèn)時(shí)間幾乎接近于0。由于采用并行結(jié)構(gòu),因此數(shù)據(jù)訪問(wèn)效率大大提高,需要注意的是它引入了一個(gè)高速緩沖存儲(chǔ)器,這有利有弊,因?yàn)橐坏┫到y(tǒng)斷電,在高速緩沖存儲(chǔ)器內(nèi)的數(shù)據(jù)就會(huì)全部丟失,因此需要和UPS一起工作。但其價(jià)格也非常昂貴。
RAID10:高可靠性與高效磁盤結(jié)構(gòu)
這種結(jié)構(gòu)無(wú)非是一個(gè)帶區(qū)結(jié)構(gòu)加一個(gè)鏡像結(jié)構(gòu),因?yàn)閮煞N結(jié)構(gòu)各有優(yōu)缺點(diǎn),因此可以相互補(bǔ)充,達(dá)到既高效又高速還可以的目的。大家可以結(jié)合兩種結(jié)構(gòu)的優(yōu)點(diǎn)和缺點(diǎn)來(lái)理解這種新結(jié)構(gòu)。這種新結(jié)構(gòu)的價(jià)格高,可擴(kuò)充性不好。主要用于容量不大,但要求速度和差錯(cuò)控制的數(shù)據(jù)庫(kù)中。
關(guān)于CPU計(jì)數(shù)器主要有三個(gè):
% Processor Time
%User Time
%Privileged Tim
% Processor Time指處理器用來(lái)執(zhí)行非閑置線程時(shí)間的百分比。計(jì)算方法是,測(cè)量范例間隔內(nèi)非閑置線程活動(dòng)的時(shí)間,用范例間隔減去該值。(每臺(tái)處理器有一個(gè)閑置線程,該線程在沒(méi)有其他線程可以運(yùn)行時(shí)消耗周期)。這個(gè)計(jì)數(shù)器是處理器活動(dòng)的主要說(shuō)明器,顯示在范例間隔時(shí)所觀察的繁忙時(shí)間平均百分比。這個(gè)值是用 100% 減去該服務(wù)不活動(dòng)的時(shí)間計(jì)算出來(lái)的。如果該計(jì)數(shù)器的值持續(xù)高于80%,則說(shuō)明CPU存在壓力,接下來(lái)需要進(jìn)一步將Processor Time分解,以便確定是內(nèi)核模式進(jìn)程還是用戶模式進(jìn)程消耗的時(shí)間更多,接下來(lái)分別分析%User Time和%Privileged Time兩個(gè)計(jì)數(shù)器。
%User Time指處理器處于用戶模式的時(shí)間百分比。用戶模式是為應(yīng)用程序、環(huán)境分系統(tǒng)和整體分系統(tǒng)設(shè)計(jì)的有限處理模式。另一個(gè)模式為特權(quán)模式,它是為操作系統(tǒng)組件設(shè)計(jì)的并且允許直接訪問(wèn)硬件和所有內(nèi)存。操作系統(tǒng)將應(yīng)用程序線程轉(zhuǎn)換成特權(quán)模式以訪問(wèn)操作系統(tǒng)服務(wù)。這個(gè)計(jì)數(shù)值將平均忙時(shí)作為示例時(shí)間的一部分顯示。
%Privileged Time是在特權(quán)模式下處理線程執(zhí)行代碼所花時(shí)間的百分比。當(dāng)調(diào)用Windows系統(tǒng)服務(wù)時(shí),此服務(wù)經(jīng)常在特權(quán)模式運(yùn)行,以便獲取對(duì)系統(tǒng)專有數(shù)據(jù)的訪問(wèn),在用戶模式執(zhí)行的線程無(wú)法訪問(wèn)這些數(shù)據(jù)。
對(duì)系統(tǒng)的調(diào)用可以是直接的(explicit)或間接的(implicit)
例如頁(yè)面錯(cuò)誤或中斷。不像某些早期的操作系統(tǒng),Windows除了使用用戶和特權(quán)模式的傳統(tǒng)保護(hù)模式之外,還使用處理邊界作為分系統(tǒng)保護(hù)。某些由 Windows為您的應(yīng)用程序所做的操作除了出現(xiàn)在處理的特權(quán)時(shí)間內(nèi),還可能在其他子系統(tǒng)處理出現(xiàn)。
如果User Time占整個(gè)Processor Time的比例很大,那么說(shuō)明是應(yīng)用程序出現(xiàn)問(wèn)題,這樣接下來(lái)需要確定是哪個(gè)進(jìn)程消耗了CPU的時(shí)間。