服務器軟件firmware的作用(BIOS、BMC、PSOC、CPLD)

寫在前面
服務器 從功能上來講,跟我們日常學習辦公使用的臺式機和筆記本沒有本質區別,主要也是由最爲關鍵的三大件CPU、內存、硬盤組成,但是服務器的應用場景主要是提供給企業等角色用來支撐形形色色業務,不僅僅是用來安裝瀏覽器訪問網頁、安裝播放器看看電影,因此服務器會使用更強的配置,即更強勁的CPU、更大的內存、更大的硬盤存儲。從外形上來說,服務器存在多種外形,如機架式、刀片式、塔式等等,最主要的區別在於服務器一般不會配置顯示器、鍵盤、鼠標等部件用於近端操作,一般通過IP遠程連接的方式訪問即可。因爲服務器一般情況下都會放置於單獨的機房,而且風扇噪音會比家用電腦更大些。
Firmware 一般指固件,固件(Firmware)就是寫入EPROM(可擦寫可編程只讀存儲器)或EEPROM(電可擦可編程只讀存儲器)中的程序。
固件是指設備內部保存的設備“驅動程序”,通過固件,操作系統才能按照標準的設備驅動實現特定機器的運行動作,比如光驅、刻錄機等都有內部固件。
固件是擔任着一個系統最基礎最底層工作的軟件。而在硬件設備中,固件就是硬件設備的靈魂,因爲一些硬件設備除了固件以外沒有其它軟件組成,因此固件也就決定着硬件設備的功能及性能。

原理
固件(firmware)一般存儲於設備中的電可擦除只讀存儲器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用戶通過特定的刷新程序進行升級的程序。一般來說,擔任着一個數碼產品最基礎、最底層工作的軟件纔可以稱之爲固件,比如計算機主板上的基本輸入/輸出系統BIOS(Basic Input/output System),在以前其實更多的專業人士叫它固件。
通常這些硬件內所保存的程序是無法被用戶直接讀出或修改的。在以前,一般情況下是沒有必要對固件進行升級操作的,即使在固件內發現了嚴重的Bug也必須由專業人員帶着寫好程序的芯片把原來機器上的更換下來。早期固件芯片一般採用了ROM設計,它的Firmware代碼是在生產過程中固化的,用任何手段都無法修改。隨着技術的不斷髮展,修改固件以適應不斷更新的硬件環境成了用戶們的迫切要求,所以,可重複寫入的可編程可擦除只讀存儲器EPROM(Erasable Programmable ROM),EEPROM和flash出現了。這些芯片是可以重複刷寫的,讓固件得以修改和升級。
固件的其他介紹

一、BIOS

1.界面信息

主界面:
BIOS信息:包括版本、生成日期、固件版本等
主板信息:平臺、處理器、PCH等
內存信息:內存容量
系統信息的設置:語言、時間
ME (Intel Management Engine) :Intel ME 是 Intel Management Engine 的簡稱 ,中文翻譯爲 英特爾管理引擎,Intel ME 是指 Intel 芯片中一個獨立於CPU和操作系統的微處理器。ME裏面有用於遠程管理的功能,在出現嚴重漏洞的時可以在不受用戶操控下遠程管理企業計算機。

高級選項:
關於CPU、PCH、PCI以及USB等的配置
1、處理器配置:
預取
緩存技術利用局部性原理,使速度更快的上層存儲器成爲下層存儲器的緩衝。基於技術的限制及成本的考慮,上層存儲器的容量要比下層存儲器小得多。數據如果存在於上層存儲器中,就可以直接對其進行讀寫, 這種情形叫做命中,命中的統計概率叫做命中率;如果未命中就必須涉及到訪問下層存儲器,這種情形也叫失效。
但是隨着應用規模的不斷擴大緩存失效所佔的比例越來越大,成爲影響緩存性能的主要因素。爲了提高緩存的命中率,
預取技術通過計算和訪存的重疊,在Cache可能會發生失效之前發出預取請求以便在該數據真正被使用到時己提前將數據塊取入Cache,從而避免Cache失效造成的處理器停頓。
2、常用參考代碼
3、UPI配置
4、內存配置
5、IIO配置
Linux設備驅動之IIO子系統,是專用於模數轉換器(ADC)和數模轉換器(DAC)的內核子系統。
6、高級電源管理配置
CPU P狀態控制
以下是ACPI規格的具體電源管理狀態:
全局狀態(Global system states) ·用戶可見 ·分4個狀態:G0, G1, G2, G3
睡眠狀態(Sleeping states) ·全局狀態G1(不含S5)的睡眠狀態 ·分5個狀態:S1,S2,S3,S4,S5
設備電源狀態(Device Power states) ·用戶不可見 ·只要有一個配置顯示爲“on”(啓動)狀態,另一個則顯示爲“off”(關閉)狀態 ·分4個狀態:D0,D1,D2,D3
CPU電源狀態(CPU Power states) ·也叫做CPU睡眠狀態 ·在全局狀態G0 ·分5個狀態:C0,C1,C2,C3,C4 ·將來會有C6狀態(Penryn)
CPU/設備性能狀態(CPU / Device Performance states) ·電壓和時鐘頻率由工作量決定 ·P-state狀態總量符合CUP/設備規格 ·例如,CPU倍頻越高,P-states就越高
CPU溫度監控(CPU Thermal Monitor) ·當CPU溫度超過極限時,監控系統會降低CPU的性能 ·在TM1中,功過改變週期來降低CPU性能 ·在TM2種,通過改變時鐘頻率和核心電壓(P-state)來降低CPU性能

服務器管理
關於BMC的等待時間、預設值、網絡配置、用戶信息以及日誌等設置,還可查看BMC的自檢狀態、版本以及系統事件日誌。
安全
設置管理員密碼和用戶密碼
輸入管理員密碼則有權進入BIOS SETUP;用戶密碼是開機密碼,可以進入啓動列表或者BIOS界面。

BOOT:
1、setup prompt timeout:設置啓動時屏幕提示等待時間
2、bootup numlock state:是啓動時鍵盤上的數字鎖定鍵的狀態的意思。
3、quick boot(迅速啓動)建議開啓(enabled),可提高啓動的速度
說明:開機每次都要檢測硬件 在bios裏設置quick boot,計算機在啓動時不進行全面自檢,從而加速系統
啓動速度quiet boot(安靜開機)
說明:此項目讓您在開機畫面上顯示供貨商標誌。設定值爲:關閉(disabled)、開啓(enabled)。預設設定值爲「開啓」(enabled)。
4、boot mode select:選擇UEFI/Legacy
5、fixed boot order priorities:固定的啓動順序優先級
6、CSM配置
CSM (兼容性支持模塊):是BIOS上Boot選項裏的一個下拉子項目(一些老的主板上沒有此選項),與Secure Boot(安全啓動)是並列項。CSM開啓使得可以支持UEFI啓動和非UEFI啓動。若是需要啓動傳統MBR設備,則需開啓CSM。關閉CSM則變成純UEFI啓動,且完全支持安全啓動。Secure Boot(安全啓動),安全啓動僅適用於使用UEFI啓動的操作系統。在筆記本的BIOS裏,這裏更多的是使用Enabled(打開)和Disabled(關閉)兩個選項。在電腦自帶Windows 8的情況下,Secure Boot(安全啓動)默認是Enabled(打開)。從而使得CSM(兼容性支持模塊)又默認是Disabled(關閉),進而導致電腦不能啓動不完全支持UEFI的設備。要使得電腦能啓動不完全支持UEFI的設備,就必須關閉Secure Boot,然後打開CSM。

保存退出
選擇是否保存之前的各種設置,也可恢復默認設置,退出BIOS

2、BIOS階段劃分

BIOS大致可以劃分爲6個階段,具體如下:1.SEC:Security(安全) (處理平臺重啓事件;創造一個臨時的內存區(注意:這個時候內存還未初始化);在系統中作爲一個可信的root;傳遞信息到PEI。 開發者可以不怎麼關注,極少涉及)2.PEI:pre-efi initialization(預EFI初始化) ( 初始化一些永久的內存;HOBs(Hand-off Blocks)中的內存;以及在HOBs裏面的FV(firmware volume)位置;傳遞控制權到DXE階段。 開發者需要一定的關注,用得還是比較多的)3.DXE:driver execution environment(驅動程序執行環境) (開發者需重點關注,從名字可以看出來,服務器上硬件驅動的執行環境,與後期外設的使用,有極大的關係)4.BDS:boot device select(引導設備選擇) (初始化console設備;加載設備驅動;嘗試加載和執行啓動項。 開發者同樣需要重點關注)5.RT:run time service(運行時服務) (這個層次,基本和OS bootloader關係比較緊密,需要了解OS)6.AL:after life(transition from the os back to the environment) of system

3、BIOS與BMC的通信

在x86服務器,BIOS需要與各種硬件和芯片打交道,當然也包括BMC(Baseboard Management Controller)。
BIOS與BMC之間的通信,主要使用的是IPMI。有2個階段,PEI和DXE(包括DXE後面的),用的是不同的IPMI函數(這點需要注意)。雖然使用的是IPMI,但是會有兩個通道,分別是KCS、BT。一般使用KCS通道。請記住,BMC是不能主動與BIOS通信的;BIOS會發送IPMI命令給BMC,BMC如果成功接收的話,就會有個返回信息給BIOS,所以“看起來像是BMC可以與BIOS通信”。
如果產生了通信故障如何解決:(1)確認BIOS是否發送了IPMI命令給BMC,可以查看BMC返回的completion code;(2)確認BMC是否收到了BIOS發送的IPMI命令;(3)如果BIOS發送了IPMI命令,但是BMC未接收:可能是BMC的IPMI進程正處於忙碌狀態,所以丟掉了這條IPMI命令(BIOS這邊如果發送失敗,可以嘗試多次發送;另外,可以稍微調高點KCS通道的延時);當然,也有可能是BMC的IPMI進程掛了。(4)如果涉及到了底層協議的具體實現,一條IPMI命令通常涉及到2個底層實現函數,SendDataToBmcPort()和ReceiveBmcDataFromPort()。接收時,BIOS從KCS的I/O端口讀取數據,讀完後,會檢測KCS寄存器中OBF狀態寄存器,如果BMC沒有寫數據,就會計數減1,延時5ms,然後重試;當BMC一直不寫數據時,計數到0,就認爲BMC有故障,返回Device Error。

4、BIOS在計算機啓動過程中的工作

4.1、基本概念

4.1.1 BIOS(基本輸入輸出系統)

BIOS直接與硬件打交道,爲操作系統提供控制硬件設備的基本功能。
BIOS分爲系統BIOS(主板BIOS,控制計算機啓動的主要代碼)、顯卡BIOS和其他設備BIOS(IDE控制器、SCSI卡或網卡)
BIOS一般存放在ROM(只讀存儲芯片)中,在關機或掉電後,這些代碼也不會消失。

4.1.2 內存地址

內存每個字節都被賦予了一個地址,以便CPU訪問。最初的8086處理器能夠訪問的內存最大隻有1MB(0~FFFFFH): 低端640KB被稱爲基本內存;A0000H~BFFFFH保留給顯示卡顯存使用;C0000H~FFFFFH則保留給BIOS使用,其中顯卡BIOS一般在C0000H~C7FFFH處,IDE控制器的BIOS在C8000H~CBFFFH處,系統BIOS一般佔用了最後的64KB或更多一點的空間。

4.1.3 MBR

磁盤指的是硬盤、軟盤、U盤、光盤等等這種類型的設備。 對每個類型磁盤,都有MBR和分區來組成這個磁盤。 按照標準,每個磁盤可以有最多4個主分區,1個擴展分區。擴展分區上可以分多個邏輯分區。磁盤每個分區的第一個扇區是用來存放特別的信息,比如引導加載程序,而不用來存放文件等信息(每個分區的第一個扇區無法通過文件系統來訪問)。 注意:MBR不屬於任何分區。MBR除了存放引導加載程序,還在後64個字節中存放這個磁盤的分區表。

4.2、BIOS啓動過程

4.2.1

按下電源開關,電源就開始向主板和其它設備供電;此時電壓還不太穩定,主板上的 控制芯片組會向CPU發出並保持一個RESET(重置)信號,讓CPU內部自動恢復到初始狀態,但CPU在此刻不會馬上執行指令;當芯片組檢測到電源已經開始穩定供電了(當然從不穩定到穩定的過程只是一瞬間的事情),它便撤去RESET信號(如果是手工按下計算機面板上的Reset按鈕來重啓機器,那麼鬆開該按鈕時芯片組就會撤去RESET信號);CPU馬上就從地址FFFF0H處開始執行指令。這個地址是系統BIOS的地址範圍,這裏放的只是一條跳轉指令,跳到系統BIOS中真正的啓動代碼處。

4.2.2 系統BIOS的啓動代碼首先進行POST(Power-on self test 加電後自檢)

POST主要檢測系統中的一些關鍵設備是否能正常工作,eg:內存和顯卡。
由於POST是最早進行的檢測過程,此時顯卡未初始化,如果系統BIOS在POST過程中發現致命錯誤,eg:未找到內存或內存有問題(此時只檢查640k常規內存),那麼系統BIOS就會直接控制喇叭發聲報告錯誤,聲音不同,錯誤類型不同。
在正常情況下,POST非常快,結束後會調用其它代碼來進行更完整的硬件檢測。

4.2.3 系統BIOS查找顯卡BIOS

系統BIOS在C0000H處找到顯卡BIOS之後就調用它的初始化代碼,由顯卡BIOS初始化顯卡。此時會在屏幕上顯示一些初始化信息(生產廠商、圖形芯片等)。
系統BIOS會接着查找其他設備的BIOS程序,找到後同樣調用這些BIOS內部的初始化代碼完成設備初始化。

4.2.5

接着系統BIOS將檢測CPU的類型和工作頻率,測試所有的RAM,同時在屏幕上顯示內存測試的進度。可在CMOS設置中自行決定使用簡單耗時少或詳細耗時多的測試方式。

4.2.6

內存測試通過後,系統BIOS將開始檢測系統中安裝的一些標準硬件設備(硬盤、CD-ROM、串口、並口和軟驅等),較新版本的系統BIOS在這一過程中還要自動檢測和設置內存的定時參數、硬盤參數和訪問模式。

4.2.7

標準設備檢測完畢後,系統BIOS內部支持即插即用的代碼開始檢測和配置系統中安裝的即插即用設備。每找到一個設備,系統BIOS都會在屏幕上顯示設備的名稱、型號等,同時爲該設備分配中斷、DMA通道和I/O端口等資源。

4.2.8

所有硬件檢測配置完畢,多數系統BIOS會清屏並在屏幕上方顯示一個表格,概略列出了系統中安裝的各種標準硬件設備以及他們使用的資源和一些相關工作參數。

4.2.9

接着系統BIOS將更新ESCD(Extended System Configuration Data,擴展系統配置數據)。ESCD是系統BIOS用來與操作系統交換硬件配置信息的一種手段,這些數據被存放在CMOS(一小塊特殊的RAM,由主板上的電池來供電)之中。通常ESCD數據只在系統硬件配置發生改變後纔會更新,所以不是每次啓動機器時都能夠看到“Update ESCD… Success”這樣的信息。不過,某些主板的系統BIOS在保存ESCD數據時使用了與Windows 9x不相同的數據格式,於是Windows 9x在它自己的啓動過程中會把ESCD數據修改成自己的格式。但在下一次啓動機器時,即使硬件配置沒有發生改變,系統BIOS也會把ESCD的數據格式改回來。如此循環,將會導致在每次啓動機器時,系統BIOS都要更新一遍ESCD,這就是爲什麼有些機器在每次啓動時都會顯示出相關信息的原因。

4.2.10

ESCD更新完畢後,系統BIOS的啓動代碼將進行它的最後一項工作:即根據用戶指定的啓動順序從軟盤、硬盤或光驅啓動MBR。系統BIOS將讀取磁盤上的主引導記錄MBR,並放入指定位置(0x7c00)的內存。然後BIOS把控制權交給MBR。主引導記錄由兩部分組成:代碼和分區表。MBR代碼首先檢測其他代碼(如查看是否有"55AA"有效標記),然後從分區表中找到第一個活動分區,讀取並執行這個活動分區的分區引導記錄。

以上就是計算機在打開電源開關進行冷啓動時要完成的各種初始化工作。如果從Windows中選擇重新啓動計算機來進行熱啓動,那麼post將被跳過,直接從第三步開始,另外第五步的檢測CPU和內存測試也不會進行。

二、BMC

在介紹BMC之前需要了解一個概念,即平臺管理(platform management)。平臺管理表示的是一系列的監視和控制功能,操作的對象是系統硬件。比如通過監視系統的溫度,電壓,風扇、電源等等,並做相應的調節工作,以保證系統處於健康的狀態。當然如果系統真的不正常了,也可以通過復位的方式來重新啓動系統。同時平臺管理還負責記錄各種硬件的信息和日誌記錄,用於提示用戶和後續問題的定位。以上的這些功能可以集成到一個控制器上來實現,這個控制器被稱爲基板管理控制器(Baseboard Manager Controller,簡稱BMC)。
BMC是一個獨立的系統,它不依賴與系統上的其它硬件(比如CPU、內存等),也不依賴與BIOS、OS等(但是BMC可以與BIOS和OS交互,這樣可以起到更好的平臺管理作用,OS下有系統管理軟件可以與BMC協同工作以達到更好的管理效果)。一般我們的電腦不會帶BMC,因爲用處不大,一些溫度、電源等的管理,CPU來控制就夠了。但是對於系統要求高的設備,比如服務器,就會用到BMC。當然因爲BMC是一個獨立的系統,對於某些嵌入式設備,可能不需要其它處理器,光一個BMC就能完成工作。說到底BMC本身也是一個帶處理器(一般都是ARM處理器)的小系統,單獨用來處理某些工作也完全是可以的。
BMC全稱BaseboardManagement Controller,通俗來講,BMC是整個服務器單板的大管家。從一款服務器上電時刻,它的所有部件都歸BMC來負責和管理。BMC是一個獨立於服務器系統的小型操作系統。作用是方便服務器遠程管理、監控、安裝、重啓等。 BMC是一個集成在主板上的芯片(也有通過PCIE等各種形式插在主板上),對外表現形式只是一個標準的RJ45網口,擁有獨立的IP。普通維護只需使用瀏覽器訪問IP:PORT登錄管理界面,服務器集羣一般使用BMC指令進行大規模無人值守操作。一般服務器BMC網口是獨立的,仔細看印有BMC字樣,也有小型服務器BMC網口和通信網口是二合一的。
BMC是一款服務器AC上電起始即運行的軟件,運行在服務器上一款單獨的ARM芯片上,這個ARM芯片就是BMC軟件的CPU,同時會芯片外圍會配置自己的RAM、Flash等器件,只要服務器插上電源線,BMC軟件便快速運行起來,此時有可能我們通常意義上的x86服務器側的OS都還沒有安裝呢。BMC是整個服務器的大管家,主要用於服務器各個部件(CPU、內存、硬盤、風扇、機框等)的溫度、電壓等健康狀態進行檢測,同時根據各個溫度採集點情況實時調整風扇轉速保證服務器不產生過溫、而且控制總體功耗又不能過高,如果單板部件出現任何異常則通過SNMP協議、SMTP協議、Redfish協議等多種業界通用規範講信息及時上報給上層網管,以便運維人員及時處理,保證業務無損。
此處介紹下帶外管理和帶內的概念,通常情況下x86側執行的運維管理動作被稱作帶內的方式,而BMC是脫離x86側獨立運行的服務器管理軟件,被稱作帶外管理軟件。 BMC可以採集任何服務器上的除x86側運行的私有業務本身之外的任何信息,但是請注意,現在業界的BMC帶外管理軟件有各種解決方案,可以採集到任何你想要的信息。因爲即使從帶外無法獲取的信息,當前業界也存在帶外和帶內監控結合、帶外統一提供接口的方案,可以實現通過BMC獲取任何想要獲得信息。
從功能上來講,BMC主要用於採集單個服務器上各種信息,同時提供給上層運維網管軟件。主要有兩種手段,第一種BMC會提供各種各樣的接口供上層網管查詢,如web、命令行等人機接口、SNMP、IPMI、Restful等機機接口;第二種是主動上報,當檢測到有故障產生時,BMC可以通過SNMP trap消息、SMTP 郵件消息、Redfish http json報文等手段上報給上層網管軟件的服務端,以便運維人員及時識別處理故障。一般情況下,BMC軟件上報的消息中都會明確的指明具體是哪個部件產生了故障、處理建議是怎樣的等等。
SNMP:簡單網絡管理協議(SNMP) 是專門設計用於在 IP 網絡管理網絡節點(服務器、工作站、路由器、交換機及HUBS等)的一種標準協議,它是一種應用層協議。SNMP 使網絡管理員能夠管理網絡效能,發現並解決網絡問題以及規劃網絡增長。通過 SNMP 接收隨機消息(及事件報告)網絡管理系統獲知網絡出現問題。
RESTFUL:一種網絡應用程序的設計風格和開發方式,基於HTTP,可以使用XML格式定義或JSON格式定義。RESTFUL適用於移動互聯網廠商作爲業務使能接口的場景,實現第三方OTT調用移動網絡資源的功能,動作類型爲新增、變更、刪除所調用資源。
BMC通過不同的接口與系統中的其它組件連接。在**IPMB(Intelligent Platform Management Bus)**總線上連接着各個管理控制器,分別執行不同功能。IPMB總線上還連接着一些I2C器件,用來作爲傳感器的接口,讓系統管理軟件能夠通過IPMB來讀取傳感器的數據。同時,這些傳感器的具體配置信息,如告警門限、事件觸發是否允許等配置都保存在一組名爲SDR(Sensor Data Record)的數據裏面。而傳感器產生的告警事件則保存在一組叫做SEL(Sensor Event Log)的數據裏面。在IPMB總線上,連接着一個ICMB(Intelligent Chassis Management Bus)橋,通過ICMB可以和遠程的另一個管理平臺通信。此外,在IPMB總線上,還可以外接其他的用戶板,用來擴展IPMI管理平臺的功能。
BMC芯片就相當於計算機中的中央處理器,通過BMC芯片上一對SMBus接口連接網絡,用戶可通過網絡訪問實現對遠程服務器接管的帶外管理(Out-of-band)功能,例如遠程接管服務器(Pre-OS),在客戶端實現對遠程服務器的完全接管;通過RS-232接口連接Modem,在遠程服務器宕機情況下,用戶可以通過撥號訪問獲取SDR、SEL數據,分析診斷故障原因;BMC通過IPMB接口訪問模組風扇背板、電源背板等上的SMC,實現對各種背板的溫度電壓風扇轉速等關鍵參數管理;BMC通過系統接口(多用SMIC:Server Management Interface Chip),實現IPMI消息傳輸機制,控制LCD顯示和實現上層軟件與底層F/W通信,實現告警、數據採集。SDR(傳感器數據存儲庫)、SEL系統事件日誌)、FRU(Field Replacement Unit)物理實體可以是做在芯片內的存儲體,也可以是外掛的E2PROM。

在x86側OS上部署一套自研的Agent,也可以採集到我想要的各種信息,對於少量與硬件強相關的信息,我在帶內OS上通過BMC接口查詢補全,這種帶內結合帶外管理的方式不是也挺好嗎?
全帶外管理,是當前各大服務器廠商推出的單板運維管理的解決方案。各大服務器廠商當前均自研統一的帶內Agent信息補全工具,最終彙集信息至BMC側統一對外提供接口。理論上來說,可以滿足單板運維管理的訴求。對於服務器用戶來說,這是零成本的解決方案,強烈建議採用,何必自己再研發一套增加成本呢?

不過這裏既然叫做BMC,那麼總的來說重點還是在平臺管理,所以本文主要說的是服務器中的BMC。

BMC在系統中的位置大致如下圖所示:
在這裏插入圖片描述
BMC通過不同的接口與系統中的其它組件連接。LPC、I2C、SMBUS,Serial等,這些都是比較基本的接口,而IPMI,它是與BMC匹配的總線,所有的BMC都需要實現這種接口,這裏需要特別的介紹。
IPMI
IPMI的全稱是Intelligent Platform Management Interface,智能平臺管理接口。IPMI規定了很多的東西,BMC是其中最重要的一個部分,此外還有一些”衛星“控制器通過IPMB與BMC相連,這些”衛星“控制器一般控制特定的設備。
IPMB全稱Intelligent Platform Management Bus,是一種基於I2C的串行總線,它用於BMC與”衛星“控制器的通信,其上傳遞的是IPMI命令。
下面的圖描述了與IPMI有關的各個模塊:
在這裏插入圖片描述
智能平臺管理接口 (IPMI) 是一種開放標準的硬件管理接口規格,定義了嵌入式管理子系統進行通信的特定方法。IPMI 信息通過基板管理控制器 (BMC)(位於 IPMI 規格的硬件組件上)進行交流。使用低級硬件智能管理而不使用操作系統進行管理,具有兩個主要優點: 首先,此配置允許進行帶外服務器管理;其次,操作系統不必負擔傳輸系統狀態數據的任務。用戶可以利用IPMI監視服務器的物理健康特徵,如溫度、電壓、風扇工作狀態、電源狀態等。
IPMI的核心是一個專用芯片/控制器(叫做服務器處理器或基板管理控制器(BMC)),其並不依賴於服務器的處理器、BIOS或操作系統來工作,是一個單獨在系統內運行的無代理管理子系統,只要有BMC與IPMI固件其便可開始工作,而BMC通常是一個安裝在服務器主板上的獨立的板卡。IPMI良好的自治特性便克服了以往基於操作系統的管理方式所受的限制,例如操作系統不響應或未加載的情況下其仍然可以進行開關機、信息提取等操作。
在工作時,所有的IPMI功能都是向BMC發送命令來完成的,BMC接收並在系統事件日誌中記錄事件消息,維護描述系統中傳感器情況的傳感器數據記錄。
一般來說,BMC具有以下功能:
1.通過系統的串行端口進行訪問
2.故障日誌記錄和 SNMP 警報發送
3.訪問系統事件日誌 (System Event Log ,SEL) 和傳感器狀況
4.控制包括開機和關機
5.獨立於系統電源或工作狀態的支持
6.用於系統設置、基於文本公用程序和操作系統控制檯的文本控制檯重定向
而通過IPMI ,用戶可以主動監測組件的狀況,以確保不超出預置閾值,例如服務器溫度。這樣,通過避免不定期的斷電,協助維護了 IT 資源的運行時間。 IPMI的預告故障能力也有助於 IT 週期的管理。通過檢查系統事件日誌 (SEL),可以更輕鬆的預先判定故障組件。只要將服務器接入網絡並且沒有斷開服務器的電源,不管服務器的處於何種狀態(開機、關機、重啓),都可以允許用戶通過網絡進行遠程管理。
下面簡單的介紹各個部分。

  • MOTHERBOARD
    在這裏插入圖片描述
    首先是圖中的左下角部分,名稱寫着Mother Board。
    通常,在服務器中,這一部分是主角,它包含了CPU,PCH等主要的部件。它連接除了數個組件:網卡,串口和IPMI總線,其實還有一個部分在圖中最上面中間的PCI總線。
    網卡:服務器需要用到網卡,重點其實在於BMC到網卡的連接,後續會介紹。
    串口:串口用於輸出服務器的調試信息,值得注意的是Serial Port Sharing,它使得服務器的串口輸出可以直接輸出,也可以輸出到BMC。至於爲什麼要輸出到BMC,這裏其實需要注意的是一種常用的場景。服務器位於機房,而工作人員通常不會直接在機房操作,而是通過網絡(這也是爲什麼BMC會連接網卡的原因)進行操作,這個時候過需要獲取服務器的串口信息,就不方便直接去機房,這個時候通過BMC來獲取服務器串口信息就是一個好主意。
    IPMI總線:這是BMC與服務器通信並進行控制的主體,當然少不了。
    PCI總線:這個部分的作用跟串口很像。服務器除了輸出串口信息,當然還需要輸出圖形界面之類的東西。從服務器端來看,它通過PCI連接的就是一個顯卡,通過它來輸出顯示。
  • IPMB
    再來到圖中的右上角,其中描述的是通過IPMB連接的設備。
    在這裏插入圖片描述
    這些設備跟BMC類似,也是用來進行管理芯片。它們是對BMC的補充,從而擴展BMC的功能。
  • Non-volatile Storage
    在這裏插入圖片描述

我們知道BMC其實是一個獨立的芯片,那麼它肯定也需要運行系統。通過BMC裏面運行的是一個類Unix系統,而該系統就存放在Non-volatile Storage中,通常就是SPI Flash裏面。跟一般的存儲介質沒有本質的區別。除了系統本身之後,還包含一系列BMC會存放的信息。比如從服務器上面獲取到的串口信息;系統本身的報警信息;FRU信息等。

  • Sensors & Control Circuitry
    在這裏插入圖片描述
    這一部分雖然圖中只佔很小的一部分,但卻是BMC最基本的功能:獲取信息和控制環境。BMC會通過I2C/PECI等總線去獲取設備的溫度,然後根據預先設定的策略去調整溫度。調整的方式兩種,一種就是調整風扇,屬於主動降溫;另一種是調整供電,比如CPU的P狀態,或者關閉多餘的硬盤等,屬於被動降溫。
  • FRU
    在這裏插入圖片描述
    FRU的全稱是Field Replaceable Unit。
    從圖中也可以看出,類似內存條,CPU等就屬於FRU,它們在服務器中通常是可以更換的。
    BMC會檢測這些設備並保存相關的信息。
    當這些設備的在位情況發生變化時,BMC會發生相關的告警。

三、PSoC

可編程化系統單芯片(PSoC),是一種可編程化的混合訊號陣列架構,由一個芯片內建的微控制器(MCU)所控制,整合可組態的類比與數位電路,內含UART、定時器、放大器(amplifier)、比較器、數位類比轉換器(ADC)、脈波寬度調變(PWM)、濾波器(Filter)、以及SPI、GPIO、I2C等元件數十種元件,協助客戶節省研發時間。

簡介

可編程化系統單芯片(PSoC),是一種可編程化的混合訊號陣列架構,由一個芯片內建的微控制器(MCU)所控制,整合可組態的類比與數位電路,內含UART、定時器、放大器(amplifier)、比較器、數位類比轉換器(ADC)、脈波寬度調變(PWM)、濾波器(Filter)、以及SPI、GPIO、I2C等元件數十種元件,協助客戶節省研發時間。
Altera、Atmel、Xilinx、Lattice皆有推出PSoC產品。實現PSoC有兩種方法:利用FPGA/CPLD;另一是在ASIC中加入可編程模組。
在這裏插入圖片描述
PSOC 固件主要功能:
SATA、SAS硬盤LED控制;
BMC獲取PSOC版本信息;
BMC通過PSOC獲取硬盤狀態;

PSOC 4是一個可以重配置和擴展的平臺架構,是一個包含ARM Cortex-M0 CPU的可編程嵌入式系統控制器。通過靈活自動佈線資源,它將可編程及可重新配置的模擬模塊與數字模塊相結合。基於此平臺的PSOC 4200-L產品系列組合了具有數字可編程邏輯、可編程模擬、可編程互聯和片外存儲器擴展安全性的微控制器、高性能的模數轉換、支持比較器模式的運算放大器以及標準通信和定時外設。針對新應用和設計方面的要求。
PSOC 4200-L產品與PSOC 4平臺系列產品完全向上兼容。可編程模擬和數字子系統支持靈活、現場調試的設計。

BMC更新PSOC固件
PSOC的固件可以通過BMC的WEBUI更新,PSOC固件在線更新文件是‘cyacd’格式的文件,BMC不能更新PSOC的hex文件。PSOC的hex格式的固件文件需要通過燒錄器在工廠離線燒錄或使用賽普拉斯提供的工具燒錄。
BMC WEBUI更新PSOC路徑:維護->固件更新->更新PSOC固件
當用戶在BMC的WEBUI更新PSOC,BMC發送更新命令到PSOC,PSOC進入在線更新模式,然後BMC將PSOC的更新文件傳輸給PSOC,在PSOC內部完成更新。

BMC 發送I2C命令: 0x01 0x02
PSOC返回數據:0x01/0x00
在這裏插入圖片描述
當PSOC返回0x01時,說明PSOC進入了在線更新模式,然後BMC和PSOC交互完成固件的傳輸,PSOC內部再完成固件更新動作。如果要確定升級的固件是否正確,可以在BMC的WEBUI查看當前PSOC 的版本號。

四、CPLD

CPLD採用CMOS EPROM、EEPROM、快閃存儲器和SRAM等編程技術,從而構成了高密度、高速度和低功耗的可編程邏輯器件。
CPLD主要由邏輯塊、可編程互連通道和I/O塊三部分構成。
CPLD中的邏輯塊類似於一個小規模PLD,通常一個邏輯塊包含4~20個宏單元,每個宏單元一般由乘積項陣列、乘積項分配和可編程寄存器構成。每個宏單元有多種配置方式,各宏單元也可級聯使用, 因此可實現較複雜組合邏輯和時序邏輯功能。對集成度較高的CPLD,通常還提供了帶片內RAM/ROM的嵌入陣列塊。
可編程互連通道主要提供邏輯塊、宏單元、輸入/輸出引腳間的互連網絡。輸入/輸出塊(I/O塊)提供內部邏輯到器件I/O引腳之間的接口。
  邏輯規模較大的CPLD一般還內帶JTAG邊界掃描測試電路,可對已編程的高密度可編程邏輯器件做全面徹底的系統測試,此外也可通過JTAG接口進行在系統編程。
  由於集成工藝、集成規模和製造廠家的不同,各種CPLD分區結構、邏輯單元等也有較大的差別。
應用
基於SRAM(靜態隨機存儲器)的可重配置PLD(可編程邏輯器件)的出現,爲系統設計者動態改變運行電路中PLD的邏輯功能創造了條件。PLD使用SRAM單元來保存配置數據。這些配置數據決定了PLD內部的互連關係和邏輯功能,改變這些數據,也就改變了器件的邏輯功能。由於SRAM的數據是易失的,因此這些數據必須保存在PLD器件以外的EPROM、EEPROM或FLASH ROM等非易失存儲器內,以便使系統在適當的時候將其下載到PLD的SRAM單元中,從而實現在電路可重配置ICR(In-Circuit Reconfigurability)。

發佈了107 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章