一種數(shù)據(jù)讀寫方法以及主板的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)讀寫方法以及主板。
【背景技術(shù)】
[0002]存儲服務(wù)器是一種能提供很大存儲空間的服務(wù)器,它必須具有快速的處理芯片,較大的RAM (Random Access Memory,隨機存取存儲器),以及非常大的內(nèi)部磁盤空間,以便應(yīng)對終端用戶隨時可能出現(xiàn)的應(yīng)用調(diào)配需求。
[0003]在存儲服務(wù)器中,主板通常是一臺存儲服務(wù)器設(shè)計的核心。存儲服務(wù)器主板的現(xiàn)有架構(gòu)中,CPU通常通過SAS(Serial Attached SCSI,即串行SCSI技術(shù))控制器以及SAS擴展器與磁盤陣列建立連接,在進行數(shù)據(jù)讀寫時,CPU將從I/O業(yè)務(wù)口接收到讀1請求和寫1請求通過SAS控制器以及SAS擴展器下發(fā)到磁盤陣列,來完成對應(yīng)的讀寫操作。
[0004]磁盤陣列在完成對應(yīng)的讀寫操作時,磁盤陣列中的磁盤設(shè)備以恒定的速率旋轉(zhuǎn),為了能夠完成讀操作和寫操作,磁盤的磁頭必須能移動到所要求的磁道上,并等待所要求扇區(qū)的開始位置旋轉(zhuǎn)到磁頭下,然后再開始讀操作和寫操作。
[0005]因此,磁盤設(shè)備在進行數(shù)據(jù)讀寫時,數(shù)據(jù)讀寫所耗費的總時長通??梢园▽さ罆r間,旋轉(zhuǎn)延時時間和傳輸時間三部分。由于在實際應(yīng)用中,磁盤在進行數(shù)據(jù)讀寫時,磁頭尋道時間和旋轉(zhuǎn)延時間通常比較長,如果CPU頻繁訪問磁盤,磁盤工作的大部分時間都在尋道,工作效率將非常低下,必然導(dǎo)致整個計算系統(tǒng)運行緩慢,因此對磁盤訪問進行加速十分有必要。
【發(fā)明內(nèi)容】
[0006]本申請?zhí)岢鲆环N數(shù)據(jù)讀寫方法,應(yīng)用于存儲服務(wù)器,所述存儲服務(wù)器的主板包括CPU、基于FPGA的數(shù)據(jù)讀寫模塊、內(nèi)存;所述基于FPGA的數(shù)據(jù)讀寫模塊與所述CPU以及所述存儲服務(wù)器的磁盤陣列分別相連接;所述內(nèi)存與所述基于FPGA的數(shù)據(jù)讀寫模塊相連接;所述方法包括:
[0007]步驟A、所述基于FPGA的數(shù)據(jù)讀寫模塊接收所述CPU下發(fā)的讀寫1請求,并對所述讀寫1請求進行解析獲取對應(yīng)的讀寫地址;
[0008]步驟B、所述基于FPGA的數(shù)據(jù)讀寫模塊判斷獲取到所述讀寫地址是否命中所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引;
[0009]步驟C、當(dāng)獲取到的所述讀寫地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,所述基于FPGA的數(shù)據(jù)讀寫模塊基于所述熱點數(shù)據(jù)庫中的熱點數(shù)據(jù)在本地執(zhí)行與所述讀寫1請求對應(yīng)的讀寫操作。
[0010]可選的,所述步驟C具體包括:
[0011]當(dāng)解析CPU下發(fā)的讀1請求獲取到的讀地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,從所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中讀取與該地址索引對應(yīng)的熱點數(shù)據(jù),并將讀取到的熱點數(shù)據(jù)返回給CPU,以由CPU將該熱點數(shù)據(jù)發(fā)送給所述讀1請求的發(fā)起端主機;
[0012]當(dāng)解析CPU下發(fā)的寫1請求獲取到的寫地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,將與該寫1請求對應(yīng)的寫入數(shù)據(jù)存入所述熱點數(shù)據(jù)庫,對所述熱點數(shù)據(jù)庫中與該地址索引對應(yīng)的熱點數(shù)據(jù)進行更新。
[0013]可選的,所述步驟B具體包括:
[0014]在判斷獲取到所述讀寫地址是否命中所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引之前,針對與所述讀寫地址對應(yīng)的數(shù)據(jù)進行訪問次數(shù)統(tǒng)計;
[0015]判斷統(tǒng)計出的訪問次數(shù)是否達到閾值;
[0016]當(dāng)統(tǒng)計出的任一數(shù)據(jù)的訪問次數(shù)達到閾值時,將該數(shù)據(jù)作為熱點數(shù)據(jù)保存在所述預(yù)設(shè)的熱點數(shù)據(jù)庫中,并在該熱點數(shù)據(jù)庫中創(chuàng)建該數(shù)據(jù)與該數(shù)據(jù)的地址索引之間的對應(yīng)關(guān)系O
[0017]可選的,所述步驟B進一步包括:
[0018]當(dāng)所述預(yù)設(shè)的熱點數(shù)據(jù)庫中任一熱點數(shù)據(jù)未被讀取的持續(xù)時長達到預(yù)設(shè)時長時,將該熱點數(shù)據(jù)從所述內(nèi)存中回寫到所述磁盤陣列,并刪除所述預(yù)設(shè)的熱點數(shù)據(jù)庫中保存的與該熱點數(shù)據(jù)對應(yīng)的地址索引。
[0019]可選的,所述內(nèi)存包括大容量閃存。
[0020]本申請還提出一種主板,應(yīng)用于存儲服務(wù)器,所述主板包括CPU、基于FPGA的數(shù)據(jù)讀寫模塊、內(nèi)存;其中,所述基于FPGA的數(shù)據(jù)讀寫模塊與所述CPU以及所述存儲服務(wù)器的磁盤陣列分別相連接;所述內(nèi)存與所述基于FPGA的數(shù)據(jù)讀寫模塊相連接;其中:
[0021]所述基于FPGA的數(shù)據(jù)讀寫模塊,用于接收所述CPU下發(fā)的讀寫1請求,并對所述讀寫1請求進行解析獲取對應(yīng)的讀寫地址;
[0022]所述基于FPGA的數(shù)據(jù)讀寫模塊進一步判斷獲取到所述讀寫地址是否命中所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引;
[0023]當(dāng)獲取到的所述讀寫地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,所述基于FPGA的數(shù)據(jù)讀寫模塊進一步用于基于所述熱點數(shù)據(jù)庫中的熱點數(shù)據(jù)在本地執(zhí)行與所述讀寫1請求對應(yīng)的讀寫操作。
[0024]可選的,所述基于FPGA的數(shù)據(jù)讀寫模塊進一步用于:
[0025]當(dāng)解析CPU下發(fā)的讀1請求獲取到的讀地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,從所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中讀取與該地址索引對應(yīng)的熱點數(shù)據(jù),并將讀取到的熱點數(shù)據(jù)返回給CPU,以由CPU將該熱點數(shù)據(jù)發(fā)送給所述讀1請求的發(fā)起端主機;
[0026]當(dāng)解析CPU下發(fā)的寫1請求獲取到的寫地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,將與該寫1請求對應(yīng)的寫入數(shù)據(jù)存入所述熱點數(shù)據(jù)庫,對所述熱點數(shù)據(jù)庫中與該地址索引對應(yīng)的熱點數(shù)據(jù)進行更新。
[0027]可選的,所述基于FPGA的數(shù)據(jù)讀寫模塊進一步用于:
[0028]在判斷獲取到所述讀寫地址是否命中所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引之前,針對與所述讀寫地址對應(yīng)的數(shù)據(jù)進行訪問次數(shù)統(tǒng)計;
[0029]判斷統(tǒng)計出的訪問次數(shù)是否達到閾值;
[0030]當(dāng)統(tǒng)計出的任一數(shù)據(jù)的訪問次數(shù)達到閾值時,將該數(shù)據(jù)作為熱點數(shù)據(jù)保存在所述預(yù)設(shè)的熱點數(shù)據(jù)庫中,并在該熱點數(shù)據(jù)庫中創(chuàng)建該數(shù)據(jù)與該數(shù)據(jù)的地址索引之間的對應(yīng)關(guān)系O
[0031]可選的,所述基于FPGA的數(shù)據(jù)讀寫模塊進一步用于:
[0032]當(dāng)所述預(yù)設(shè)的熱點數(shù)據(jù)庫中任一熱點數(shù)據(jù)未被讀取的持續(xù)時長達到預(yù)設(shè)時長時,將該熱點數(shù)據(jù)從所述內(nèi)存中回寫到所述磁盤陣列,并刪除所述預(yù)設(shè)的熱點數(shù)據(jù)庫中保存的與該熱點數(shù)據(jù)對應(yīng)的地址索引。
[0033]可選的,所述內(nèi)存包括大容量閃存。
[0034]本申請?zhí)岢鲆环N新的存儲服務(wù)器的主板架構(gòu),該主板架構(gòu)中包括CPU、基于FPGA的數(shù)據(jù)讀寫模塊、內(nèi)存;所述基于FPGA的數(shù)據(jù)讀寫模塊與所述CPU以及所述存儲服務(wù)器的磁盤陣列分別相連接;所述內(nèi)存與所述基于FPGA的數(shù)據(jù)讀寫模塊相連接。CPU在進行數(shù)據(jù)讀寫時,基于FPGA的數(shù)據(jù)讀寫模塊接收CPU下發(fā)的讀寫1請求,對所述讀寫1請求進行解析獲取對應(yīng)的讀寫地址,并判斷獲取到所述讀寫地址是否命中所述內(nèi)存中預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引;當(dāng)獲取到的所述讀寫地址命中所述預(yù)設(shè)的熱點數(shù)據(jù)庫中的地址索引時,所述基于FPGA的數(shù)據(jù)讀寫模塊基于所述熱點數(shù)據(jù)庫中的熱點數(shù)據(jù)在本地執(zhí)行與所述讀寫1請求對應(yīng)的讀寫操作。
[0035]由于在該主板架構(gòu)中,當(dāng)CPU發(fā)起的讀寫1請求對應(yīng)的讀寫數(shù)據(jù)命中熱點數(shù)據(jù)庫中的熱點數(shù)據(jù)時,將由基于FPGA的數(shù)據(jù)讀寫模塊根據(jù)基于所述熱點數(shù)據(jù)庫中的數(shù)據(jù)在其本地完成與所述讀寫1請求對應(yīng)的讀寫操作,而不需要將該讀寫1請求下發(fā)到磁盤陣列來執(zhí)行對應(yīng)的讀寫操作,因此可以有效的減少磁盤陣列中單塊磁盤的讀寫操作次數(shù)節(jié)省磁盤的尋道時長,從而可以實現(xiàn)磁盤訪問的加速,極大的提高了熱點數(shù)據(jù)的訪問速度,提升了存儲服務(wù)器的整體讀寫性能。
【附圖說明】
[0036]圖1是本申請一實施例提供的一種存儲服務(wù)器的主板架構(gòu)圖;
[0037]圖2是本申請一實施例提供的另一種存儲服務(wù)器的主板架構(gòu)圖;
[0038]圖3是本申請一實施例提供的一種數(shù)據(jù)讀寫方法的流程圖。
【具體實施方式】
[0039]請參見圖1,圖1為現(xiàn)有實現(xiàn)中存儲服務(wù)器的主板架構(gòu)示意圖。
[0040]如圖1所示,在存儲服務(wù)器的主板架構(gòu)中,通常包括業(yè)務(wù)1 口、CPU、1H