本發(fā)明涉及一種申威平臺支持nvme硬盤啟動的實現(xiàn)方法,屬于申威處理器計算機系統(tǒng)設(shè)計技術(shù)領(lǐng)域。
背景技術(shù):
ssd(solidstatedrives)硬盤一般采用sata接口、sas或光線與計算機其他部件相連,但是,sata接口是為機械硬盤設(shè)計的,隨著ssd硬盤的迅猛發(fā)展,已成為提高ssd硬盤性能的阻礙。在nvme(non-volatilememoryexpress)標準推出之前,高端ssd硬盤已經(jīng)開始采用pcie總線作為其接口,但沒有統(tǒng)一的規(guī)范。隨著nvme標準的推出,各廠商的ssd硬盤無需再開發(fā)單獨的驅(qū)動,在系統(tǒng)下只需要一個nmve驅(qū)動就可驅(qū)動所有廠商的標準硬盤。
nvme作為非失性存儲器標準,利用基于閃存的存儲設(shè)備的低延遲和內(nèi)部并行性,滿足了當代cpu、平臺和應(yīng)用程序的并行性需求。通過其設(shè)計,nvme允許ssd硬盤中的并行性可以被主機硬件和軟件充分利用;與先前的邏輯設(shè)備接口相比,其減少了i/o開銷,并帶來了各種性能改進,包括更低的延時、更高的傳輸性能和更低的功耗,極大地提高了數(shù)據(jù)的讀取速率。nvme設(shè)備接口包括pcie、u.2、satae和m.2。
申威處理器或申威cpu,簡稱"sw處理器"。sw處理器源自于dec的alpha21164,其研制得到了國家"核高基"專項資金支持,且具有完全自主知識產(chǎn)權(quán)的處理器系列。
現(xiàn)有技術(shù)中,申威處理器計算平臺現(xiàn)有國產(chǎn)bios無法驅(qū)動nvme標準ssd硬盤,未對nvme驅(qū)動進行適配;導(dǎo)致申威處理器計算平臺無法直接從nvme標準ssd硬盤啟動,系統(tǒng)啟動時間長,硬盤讀寫速率較低,影響整機性能。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種申威平臺支持nvme硬盤啟動的實現(xiàn)方法;
本發(fā)明基于udk2015開源bios對nvme硬盤在申威平臺進行驅(qū)動調(diào)試,實現(xiàn)了對nvme硬盤的直接支持,進而實現(xiàn)從nvme硬盤直接啟動操作系統(tǒng),可充分利用其讀寫速度,減少系統(tǒng)啟動時間,提高系統(tǒng)性能。
發(fā)明概述:
本發(fā)明首先需要將nvme驅(qū)動添加到udk2015中進行編譯,其次需要對nvme驅(qū)動中涉及的具體函數(shù)進行修改和調(diào)試,最終將生成的二進制文件燒錄到flash芯片中。nvme驅(qū)動需要實現(xiàn)向nvme硬盤發(fā)送命令包來操作nvme硬盤的passthrough協(xié)議,和向上層協(xié)議diskio提供硬盤扇區(qū)讀寫的blcokio協(xié)議。
術(shù)語解釋:
baseclass,基類:,即被擴展繼承的類;
sub-class,子類;
interface,是面向?qū)ο缶幊陶Z言中接口操作的關(guān)鍵字,功能是把所需成員組合起來,以封裝一定功能的集合。它好比一個模板,在其中定義了對象必須實現(xiàn)的成員,通過類或結(jié)構(gòu)來實現(xiàn)它。
本發(fā)明的技術(shù)方案為:
一種申威平臺支持nvme硬盤啟動的實現(xiàn)方法,步驟包括:
(1)先封裝nvme驅(qū)動,類型為uefi_driver;
(2)在nvme驅(qū)動入口處安裝uefidrivermode的drvierbinding協(xié)議和componentname協(xié)議,用于nvme驅(qū)動的安裝和卸載;所述drvierbinding協(xié)議包括support、start和stop三個成員函數(shù),componentname協(xié)議用于人機交互,向用戶顯示nvme驅(qū)動的驅(qū)動信息;
(3)通過support成員函數(shù)檢測申威平臺是否支持nvme驅(qū)動,如果支持,start函數(shù)實現(xiàn)passthrough協(xié)議,實現(xiàn)對nvme控制器的初始化;如果不支持,則不加載nvme驅(qū)動,退出support成員函數(shù)。
根據(jù)本發(fā)明優(yōu)選的,support成員函數(shù)檢測申威平臺是否支持nvme驅(qū)動,包括:通過pciio協(xié)議讀取申威平臺的設(shè)備類型,如果baseclass為01、sub-class為08且interface為02,則申威平臺為nvme控制器,支持nvme驅(qū)動,否則,不支持nvme驅(qū)動。
根據(jù)本發(fā)明優(yōu)選的,所述passthrough協(xié)議包括passthru成員函數(shù),blockio協(xié)議建立在passthrough協(xié)議上,所述blockio協(xié)議包括reset、readblocks、writeblcoks和flushblocks成員函數(shù);
所述passthru成員函數(shù)用于向nvme硬盤發(fā)送命令包來操作nvme硬盤;操作繁瑣;
所述blockio協(xié)議用于讀寫nvme硬盤扇區(qū),所述reset成員函數(shù)用于重啟nvme硬盤,所述readblocks成員函數(shù)用于讀取nvme硬盤扇區(qū),所述writeblcoks成員函數(shù)用于寫nvme硬盤扇區(qū),所述flushblocks成員函數(shù)用于將緩存中的數(shù)據(jù)寫入nvme硬盤扇區(qū)。
根據(jù)本發(fā)明優(yōu)選的,實現(xiàn)對nvme控制器的初始化,包括:將nvme硬盤讀寫函數(shù)封裝為一個blockio協(xié)議,并安裝在該nvme控制器上。
將nvme硬盤讀寫函數(shù)封裝為一個blockio協(xié)議,并安裝在該nvme控制器上,為構(gòu)建文件系統(tǒng)做好準備。硬盤操作的總結(jié)如下:passthrough協(xié)議通過向硬盤設(shè)備發(fā)送命令包來操作陰干,這種讀寫硬盤的方式繁瑣;blockio協(xié)議建立在passthrough協(xié)議基礎(chǔ)之上,用于讀寫硬盤扇區(qū),其接口非常簡潔;diskio協(xié)議建立在blockio協(xié)議基礎(chǔ)之上,提供了讀寫硬盤任意地址處的數(shù)據(jù)能力;基于diskio協(xié)議,構(gòu)建文件系統(tǒng),方便對硬盤數(shù)據(jù)已文件形式進行管理。
本發(fā)明的有益效果為:
1、本發(fā)明實現(xiàn)了對nvme硬盤的直接支持,進而實現(xiàn)從nvme硬盤直接啟動操作系統(tǒng),可充分利用其讀寫速度,減少系統(tǒng)啟動時間,提高系統(tǒng)性能。
2、將nvme硬盤驅(qū)動封裝為一個uefi_driver,實現(xiàn)了模塊化設(shè)計,易于管理。
3、增強了申威平臺的擴展性和通用性,豐富了其業(yè)務(wù)生態(tài)。
附圖說明
圖1為本發(fā)明申威平臺支持nvme硬盤啟動的實現(xiàn)方法的文件系統(tǒng)的協(xié)議棧示意圖。
具體實施方式
下面結(jié)合說明書附圖和實施例對本發(fā)明作進一步限定,但不限于此。
實施例
一種申威平臺支持nvme硬盤啟動的實現(xiàn)方法,申威平臺為申威臺式機,支持pcie擴展卡,bios采用開源代碼udk2015,步驟包括:
(1)先封裝nvme驅(qū)動,類型為uefi_driver;
(2)在nvme驅(qū)動入口處安裝uefidrivermode的drvierbinding協(xié)議和componentname協(xié)議,用于nvme驅(qū)動的安裝和卸載;所述drvierbinding協(xié)議包括support、start和stop三個成員函數(shù),componentname協(xié)議用于人機交互,向用戶顯示nvme驅(qū)動的驅(qū)動信息;
(3)通過support成員函數(shù)檢測申威平臺是否支持nvme驅(qū)動,如果支持,start函數(shù)實現(xiàn)passthrough協(xié)議,實現(xiàn)對nvme控制器的初始化;如不支持,將不加載nvme驅(qū)動,退出support成員函數(shù)。所述passthrough協(xié)議包括passthru成員函數(shù),blockio協(xié)議建立在passthrough協(xié)議上,如圖1所示,所述blockio協(xié)議包括reset、readblocks、writeblcoks和flushblocks成員函數(shù);所述passthru成員函數(shù)用于向nvme硬盤發(fā)送命令包來操作nvme硬盤;命令包格式復(fù)雜,需要嚴格按照ata規(guī)范進行操作,操作繁瑣;所述blockio協(xié)議用于讀寫nvme硬盤扇區(qū),所述reset成員函數(shù)用于重啟nvme硬盤,所述readblocks成員函數(shù)用于讀取nvme硬盤扇區(qū),所述writeblcoks成員函數(shù)用于寫nvme硬盤扇區(qū),所述flushblocks成員函數(shù)用于將緩存中的數(shù)據(jù)寫入nvme硬盤扇區(qū)。
support成員函數(shù)檢測申威平臺是否支持nvme驅(qū)動,包括:通過pciio協(xié)議讀取申威平臺的設(shè)備類型,如果baseclass為01、sub-class為08且interface為02,則申威平臺為nvme控制器,支持nvme驅(qū)動,否則,不支持nvme驅(qū)動。
將nvme硬盤讀寫函數(shù)封裝為一個blockio協(xié)議,并安裝在該nvme控制器上,為構(gòu)建文件系統(tǒng)做好準備。硬盤操作的總結(jié)如下:passthrough協(xié)議通過向硬盤設(shè)備發(fā)送命令包來操作陰干,這種讀寫硬盤的方式繁瑣;blockio協(xié)議建立在passthrough協(xié)議基礎(chǔ)之上,用于讀寫硬盤扇區(qū),其接口非常簡潔;diskio協(xié)議建立在blockio協(xié)議基礎(chǔ)之上,提供了讀寫硬盤任意地址處的數(shù)據(jù)能力;基于diskio協(xié)議,構(gòu)建文件系統(tǒng),方便對硬盤數(shù)據(jù)已文件形式進行管理。