存儲和服務器的三大件②

存儲和服務器的三大件

從底層原理實現角度來看,存儲和服務器的物理硬件本質都是三大件:CPU、內存和I/O的組合運用。

二、服務器對於三大件的組合運用

從電腦的角度看,服務器也是電腦,只是比普通的電腦更復雜更先進而已。服務器的誕生,是爲了處理企業級的應用,使工作協同性變得更高。所以服務器和家用的電腦相比,最重要的一點就是要穩定、安全、少出錯。服務器上面運行的應用程序、數據庫對於企業來說是非常重要的,所以服務器級別的內存、硬盤、網卡、CPU等等的性能和穩定性,理論上來說會比普通電腦要高出一些。所以服務器CPU、內存、硬盤、網卡等配件均進行了技術升級,使之更加安全穩定。但是其針對CPU、內存及I/O設備的組合運用並無區別。在高端的服務器中,由於支持多路CPU、內存及I/O設備,因此其組合運用方式會更加複雜。

1.系統總線組合階段

在系統總線組合階段,通過系統總線將CPU芯片、內存和I/O設備連接起來,實現相互間的通訊和協同工作,實現了最原始的組合運用,也實現了最基礎的計算功能。

服務器或者電腦從最開始的架構設計之初,針對CPU、內存及I/O設備的組合運用是最粗暴簡單的,其通過一條系統總線將CPU、內存及I/O設備連接起來,CPU、內存及I/O設備的通訊必須通過系統總線進行傳輸和同步,由於設備之間的差異性,在這個簡單的數字系統中,爲了確保內部所有硬件單元能夠協同快速工作,CPU架構工程師們就設計了一套時鐘信號與系統同步進行操作,由CPU來決定其他設備工作在什麼頻率上,保證所有的設備都在同步的模式下面工作。在這樣的模式下,所有的設備都會被限定在一個被所有設備所能承受的通用時鐘頻率上面,即產生所謂的"互鎖"效應,木桶原理告訴我們,這種情況下系統的整體性能會被最低頻率的設備拉低。

下圖顯示了最開始的計算機系統的基本框圖。它由CPU,內存(RAM)和許多I/O設備組成。所有這些都通過系統總線連接。CPU執行存儲在內存中的指令。這些指令可以從內存或I/O設備中讀取數據,並可以操作這些數據,以及將結果數據寫入內存或I/O設備中。

clip_image002

這種體系結構的計算機第一次怎麼啓動,因爲內存中並不存在啓動代碼。爲了解決系統總線直連計算機的啓動問題,最開始的解決方案是使用一個前面板(The front panel)來控制計算機的啓動過程,之後才採用ROM方式來控制計算機的啓動。

前面板架構設計圖:

clip_image004

前面板的設計原理是,通過在一個金屬面板上添加帶有指示燈、撥動開關和按鈕的設備,這些設備通過導線和總線相連接,然後使用一行燈來表示一個或多個硬件寄存器的內容,並允許在機器停止時直接讀取內容。在計算機第一次啓動時,通過前面板進行啓動引導,通常需要執行一系列複雜的操作。首先操作員需要將具有包含一系列短引導指令的程序指令使用前面板的切換開關手動輸入其中。第一步需要設置“地址”信息,並通過設置地址的開關將二進制形式的地址表示信息數據輸入進去,前面板上會存在專門的二進制數字按鈕,比如DEC PDP-8或MITS Altair 8800的二進制數字在前面板上分組爲三個,每組燈或開關代表0到7之間的單個八進制數字。接下來,操作員將設置地址的“值”,通過“值”的開關然後輸入用於該地址的值。然後操作員將設置引導程序的起始地址,並啓動“RUN”開關開始執行程序。引導程序通常從打孔的紙帶讀取和加載程序,並最終將計算機運行起來。

前面板可以控制內存控制器、CPU寄存器合其他I/O設備的寄存器地址,用戶可以設置要檢查或更改的寄存器地址,將新數據寫入寄存器位置,並且可復位、啓動和停止CPU。大多數前面板提供了一種讀取和寫入單個CPU寄存器的方法,在通過前面板輸入指令的情況下,CPU會一次一個指令地逐步執行程序。

下圖展示了System/360 Model 91的前面板實物圖(圖片來自維基百科)

clip_image006

在20世紀50年代後期,計算機是一臺相當龐大且昂貴的機器。它的成本在當時遠遠高於豪華轎車甚至是房子,而且一個面積龐大滿是開關和燈的前面板也相對地增加了計算機的成本。當計算機通電時,CPU尚未運行,操作員可以使用前面板在沒有CPU幫助的情況下讀取和寫入內存的內容。當合適的程序存儲到內存中,操作員將前面板開關設置到RUN位置時,CPU就會開始運行。1975年之前製造的大多數計算機都有這樣的前面板。

每次計算機上電時,操作員都必須將引導程序輸入內存,該內存將從I/O設備(例如讀卡器,磁帶或磁盤)讀取一些數據。加載的數據形成一個小程序,然後加載更多數據,直到加載整個操作系統或應用程序。根據當時的電子計算機架構和I/O設備的類型,這些指令大概有數十條指令數的規模,每次機器上電時都必須逐位輸入。

爲了解決繁瑣的計算機系統啓動問題,內存需要使用非易失性存儲介質,保存位於內存中的啓動代碼數據,確保關機狀態下啓動指令仍然存儲在內存中。當CPU啓動時,計算機就開始從內存中明確定義的位置讀取並執行指令。從20世紀50年代後期到20世紀70年代早期,大多數計算機使用核心存儲器來存儲內存數據,這種存儲是非易失性的。即當我們啓動計算機時,內存仍然包含上次使用機器時存儲的內容。

系統啓動之後,爲了更進一步解決前面板後續的I/O設備初始化和操作繁瑣的問題,有些計算機設計們向CPU添加了邏輯,這樣CPU就可以自己從I/O設備中加載啓動代碼,而不需要內存中的任何指令。操作員只需按下正確的按鈕,即可從正確的設備中選擇自動啓動加載代碼和運行I/O設備。

當計算機的硬件成本因爲科技的進步和工藝製作的提升而變得更加便宜時,費用昂貴、面積龐大且明顯不友好的前面板就成爲了急需解決的問題,此外,內存的保存特性使得內存的容量無法滿足系統的需求,擴充容量就會造成成本居高不下。因此架構師們就設計出了ROM(只讀存儲器)以及CRT(顯像管)用於替代前面板的功能,並使用大容量的內存元器件,將計算機運行所必需的程序放到ROM中。在20世紀70年代末和80年代初,除了一些早期微型計算機仍然有一個前面板外,絕大多數微型計算機都已經更換到ROM和CRT。

ROM的作用是:當計算機通電時,CPU開始從明確定義的地址執行指令,該地址指向只讀存儲器(ROM),如下圖所示。ROM中的程序控制計算機啓動的功能。

clip_image008

ROM內部的數據是在ROM的製造工序中,在工廠裏用特殊的方法燒錄進去的,其中的內容只能讀不能改,一旦燒錄進去,用戶只能驗證寫入的數據是否正確,不能再作任何修改。如果發現數據有錯誤,則只有捨棄不用,重新訂做一份。ROM解決了前面板啓動電子計算機繁瑣的問題,使得計算機的啓動變得便捷許多,但是,這樣也存在着弊端。由於ROM定義了計算機內部元件的寄存器地址及啓動地址信息等內容,計算機的功能就不在僅由其硬件決定,而且由存儲在其ROM中的程序決定。簡單來說就是ROM限制了計算機的特定規格。

ROM中軟件的範圍在計算機系統之間差異很大。在某些機器中,ROM只是將軟盤的第一個扇區加載到內存中,然後加載CPU跳轉到內存中的這段程序去運行。剛加載的程序會將操作系統從軟盤加載到內存。如果軟盤中沒有合適的系統盤,計算機就完全無法啓動了,會提示找不到啓動文件。另一方面,如果ROM可將硬盤的啓動扇區加載到內存中並從這段程序運行,從而加載硬盤上的操作系統。在許多計算機中,ROM中的程序確定了計算機可以做什麼以及以以什麼方式做事。一般來說內存大小通常非常有限,如果將重要程序(或操作系統)存儲在ROM中意味着可以爲應用程序或數據提供更多內存空間,此外也可以加速操作系統的啓動速度。基於這樣的設計和理念,有些計算機就在ROM中嵌入了非常有限的固件,這些計算機在ROM上有大量程序,包括操作系統,這樣的計算機將操作系統及功能實現均燒錄在了ROM中。

從今天計算機的組件來看,組成計算機的每個組件均包含了芯片、內存及I/O這三部分核心的基礎元件。其中大部分模塊或組件的操作系統均燒錄在了組件自身的ROM中,ROM有些組件獨立,有些組件和內存及芯片等完全集成在同一個芯片模組中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章