本發(fā)明涉及處理i/o指令的信息處理裝置。
背景技術(shù):
近年來,以靈活用于商業(yè)為目的,高速解析大量的數(shù)據(jù)的技術(shù)受到矚目。一般而言,服務(wù)器的主處理器(以下稱為處理器)從hdd(harddiskdrive:硬盤驅(qū)動(dòng)器)等存儲(chǔ)設(shè)備讀出數(shù)據(jù)并進(jìn)行數(shù)據(jù)的解析和運(yùn)算。
作為存儲(chǔ)設(shè)備,正在普及與hdd相比能夠高速地進(jìn)行訪問的、以閃存為存儲(chǔ)介質(zhì)的ssd(solidstatedrive:固態(tài)驅(qū)動(dòng)器)。進(jìn)而,reram(resistancerandomaccessmemory:電阻隨機(jī)存取存儲(chǔ)器)或pcm(phasechangememory:相變存儲(chǔ)器)等與閃存相比能夠高速地訪問的半導(dǎo)體存儲(chǔ)介質(zhì)的實(shí)用化正在推進(jìn)。
由于這樣的存儲(chǔ)設(shè)備的出現(xiàn),高速地讀出大量數(shù)據(jù)成為可能。但是,處理器的處理負(fù)荷高、與處理器連接的總線的帶寬成為瓶頸而導(dǎo)致數(shù)據(jù)傳送需要花費(fèi)時(shí)間,因此無(wú)法有效利用高速的存儲(chǔ)設(shè)備的性能,作為信息處理裝置無(wú)法高速化。
現(xiàn)有技術(shù)中,已知有通過在信息處理裝置中添加具有運(yùn)算功能的裝置(以下稱為加速器),使原本處理器執(zhí)行的處理的一部分分散于該加速器的技術(shù)。例如,存在如下所述的技術(shù):在具有處理器的服務(wù)器中添加gpu(graphicsprocessingunit:圖形處理單元)作為加速器,由gpu對(duì)處理器執(zhí)行的程序處理的一部分進(jìn)行處理,由此實(shí)現(xiàn)處理速度的提高。
該技術(shù)是數(shù)據(jù)傳送較多的技術(shù),即,處理器從存儲(chǔ)設(shè)備將處理對(duì)象數(shù)據(jù)傳送到與處理器連接的系統(tǒng)存儲(chǔ)器,進(jìn)而處理器從系統(tǒng)存儲(chǔ)器對(duì)加速器傳送數(shù)據(jù),由此gpu能夠處理數(shù)據(jù)。特別是因?yàn)閿?shù)據(jù)在與處理器連接的總線往復(fù),所以該總線的帶寬成為性能提高的瓶頸。
專利文獻(xiàn)1中記載有一種信息處理裝置,其目的在于,為了消除該數(shù)據(jù)傳送瓶頸,加速器和存儲(chǔ)設(shè)備不經(jīng)由處理器而直接通信,由此進(jìn)一步提高處理速度。
專利文獻(xiàn)1的技術(shù)中,在具有處理器和系統(tǒng)存儲(chǔ)器的信息處理裝置連接基板,gpu與非易失性存儲(chǔ)器陣列成一對(duì)地搭載于該基板上,在gpu與非易失性存儲(chǔ)器陣列間直接進(jìn)行數(shù)據(jù)傳送。由于非易失性存儲(chǔ)器陣列的數(shù)據(jù)被傳送到gpu,僅該gpu的處理結(jié)果被傳送到與處理器連接的總線,所以能夠消除總線的帶寬因向系統(tǒng)存儲(chǔ)器的訪問而被壓迫的情況。
現(xiàn)有技術(shù)文獻(xiàn)
專利文獻(xiàn)
專利文獻(xiàn)1:美國(guó)專利申請(qǐng)公開第2014/129753號(hào)說明書
技術(shù)實(shí)現(xiàn)要素:
發(fā)明要解決的課題
專利文獻(xiàn)1中關(guān)于在信息處理裝置的初始化時(shí)gpu如何確定成為訪問目的地的非易失性存儲(chǔ)器陣列則沒有記載。存在如下課題:若作為pci-express(以下稱為pcle)的末端而連接有存儲(chǔ)設(shè)備和加速器,則加速器無(wú)法確定成為訪問目的地的存儲(chǔ)設(shè)備的指令接口的地址。還存在如下課題:若加速器無(wú)法確定存儲(chǔ)設(shè)備的指令接口的地址,則根本就無(wú)法訪問存儲(chǔ)設(shè)備來讀出數(shù)據(jù)并執(zhí)行處理器的一部分處理。
因此,本發(fā)明的目的是提供一種信息處理裝置,加速器確定出存儲(chǔ)設(shè)備后加速器從存儲(chǔ)設(shè)備讀出數(shù)據(jù),并且加速器執(zhí)行處理器的一部分處理。
用于解決課題的手段
本發(fā)明是一種信息處理裝置,其具有處理器和存儲(chǔ)器,并且包括1個(gè)以上的加速器和1個(gè)以上的存儲(chǔ)設(shè)備,所述信息處理裝置具有將所述處理器與所述加速器和所述存儲(chǔ)設(shè)備連接的一個(gè)網(wǎng)絡(luò),所述存儲(chǔ)設(shè)備具有從所述處理器接受初始化命令的初始設(shè)定接口和發(fā)行i/o指令的i/o發(fā)行接口,所述處理器對(duì)所述加速器通知所述初始設(shè)定接口的地址或者所述i/o發(fā)行接口的地址。
發(fā)明效果
根據(jù)本發(fā)明,能夠由加速器確定出存儲(chǔ)設(shè)備的指令接口的地址,從存儲(chǔ)設(shè)備讀出數(shù)據(jù),并執(zhí)行處理器的一部分處理,從而能夠使信息處理裝置的處理高速化。
附圖說明
圖1表示本發(fā)明的第一實(shí)施例,是表示信息處理裝置將數(shù)據(jù)庫(kù)的過濾處理卸載到加速器板的概念的圖。
圖2表示本發(fā)明的第一實(shí)施例,是表示信息處理裝置的構(gòu)成的一例的框圖。
圖3表示本發(fā)明的第一實(shí)施例,是在信息處理裝置進(jìn)行了i/o發(fā)行處理的情況的說明圖。
圖4表示本發(fā)明的第一實(shí)施例,是表示在信息處理裝置進(jìn)行的初始化處理的一例的時(shí)序圖。
圖5表示本發(fā)明的第一實(shí)施例,是信息處理裝置使fpga執(zhí)行數(shù)據(jù)庫(kù)的過濾處理的例子的時(shí)序圖。
圖6表示本發(fā)明的第一實(shí)施例,是表示主處理器的i/o和加速器板的i/o同時(shí)存在時(shí)的處理的一例的時(shí)序圖。
圖7表示本發(fā)明的第一實(shí)施例的變形例,是表示向1個(gè)pcle開關(guān)連接了存儲(chǔ)設(shè)備和加速器板的多個(gè)組的構(gòu)成的一例的框圖。
圖8表示本發(fā)明的第一實(shí)施例的變形例,是表示存儲(chǔ)設(shè)備與加速器板之間的跳數(shù)的表格。
圖9a表示本發(fā)明的第一實(shí)施例的變形例,是表示加速器板的處理性能的表格。
圖9b表示本發(fā)明的第一實(shí)施例的變形例,是表示存儲(chǔ)設(shè)備的性能的表格。
圖10表示本發(fā)明的第一實(shí)施例,表示在存儲(chǔ)設(shè)備發(fā)生了故障時(shí)在信息處理裝置進(jìn)行的處理的一例的時(shí)序圖。
圖11表示本發(fā)明的第一實(shí)施例,是表示在加速器板發(fā)生了故障時(shí)在信息處理裝置進(jìn)行的處理的一例的時(shí)序圖。
圖12表示本發(fā)明的第一實(shí)施例,是表示在加速器板發(fā)生了故障時(shí)在信息處理裝置進(jìn)行的重新分配處理的一例的時(shí)序圖。
圖13表示本發(fā)明的第一實(shí)施例,表示在初始化完成的狀態(tài)下新追加存儲(chǔ)設(shè)備或者加速器板的信息處理裝置的一例的框圖。
圖14表示本發(fā)明的第一實(shí)施例,是表示在信息處理裝置初始化完成后追加了新的存儲(chǔ)設(shè)備時(shí)的處理的一例的時(shí)序圖。
圖15表示本發(fā)明的第一實(shí)施例,是表示在信息處理裝置初始化完成后追加了新的加速器板時(shí)的處理的一例的時(shí)序圖。
圖16表示本發(fā)明的第一實(shí)施例的變形例,是表示信息處理裝置的一例的框圖。
圖17表示本發(fā)明的第二實(shí)施例,是表示信息處理裝置的一例的框圖。
圖18表示本發(fā)明的第二實(shí)施例,是表示在信息處理裝置進(jìn)行的數(shù)據(jù)庫(kù)處理的一例的時(shí)序圖。
圖19表示本發(fā)明的第三實(shí)施例,是表示信息處理裝置的一例的框圖。
圖20表示本發(fā)明的第三實(shí)施例,是表示在信息處理裝置進(jìn)行的初始化處理的一例的時(shí)序圖。
圖21表示本發(fā)明的第一實(shí)施例,是表示信息處理裝置的一例的框圖。
具體實(shí)施方式
以下使用附圖說明本發(fā)明的實(shí)施方式。
首先,作為本發(fā)明的概要,針對(duì)進(jìn)行數(shù)據(jù)庫(kù)處理(以下稱為db處理)的信息處理裝置10進(jìn)行說明。
圖1是表示本發(fā)明的思想的框圖。圖1是包括信息處理裝置10和利用信息處理裝置10的客戶端服務(wù)器11、12的計(jì)算機(jī)系統(tǒng),信息處理裝置10搭載有以卸載數(shù)據(jù)庫(kù)處理的過濾處理為前提的加速器板50。
過濾處理是比較成為對(duì)象的數(shù)據(jù)庫(kù)(以下稱為db)和條件式,僅提取與條件式一致的db的處理,特別是在所述條件式復(fù)雜的情況、或成為所述對(duì)象的db的數(shù)據(jù)量多的情況下,會(huì)對(duì)信息處理裝置10的主處理器200施加高的負(fù)荷,因此向加速器板50的卸載是有效的處理。
在加速器板50搭載例如fieldprogrammablegatearray(現(xiàn)場(chǎng)可編程門陣列)(以下稱為fpga)、graphicsprocessingunit(圖形處理單元)(以下稱為gpu)、副處理器等。加速器板50通常搭載于帶有pcle接口的基板等上,并作為加速器利用于信息處理裝置10。
圖1的信息處理裝置10中包括:帶有進(jìn)行數(shù)據(jù)庫(kù)處理的主處理器200(以下稱為處理器)的數(shù)據(jù)庫(kù)服務(wù)器20(以下稱為db服務(wù)器);保存有數(shù)據(jù)庫(kù)(以下稱為db)450的存儲(chǔ)設(shè)備400;和搭載有能夠卸載主處理器200的處理的fpga500的加速器板50。此外,數(shù)據(jù)庫(kù)處理是例如dbms(databasemanagementsystem:數(shù)據(jù)庫(kù)管理系統(tǒng))進(jìn)行的處理。
主處理器200、存儲(chǔ)設(shè)備400、加速器板50和fpga500利用pcle總線300、303與pcle開關(guān)310相互連接。此外,加速器板50和fpga500映射于db服務(wù)器20(主處理器200)的存儲(chǔ)器空間上,能夠使用該存儲(chǔ)器映射上的地址相互通信,將其稱為一個(gè)網(wǎng)絡(luò)。
fpga500中包括:i/o處理電路501,其具有接受來自主處理器200的訪問的功能和進(jìn)行來自fpga500的i/o發(fā)行的功能(具體而言,pcle末端功能和pcle末端的控制功能);能夠高速地執(zhí)行過濾處理的過濾處理電路502;和臨時(shí)存儲(chǔ)db450的數(shù)據(jù)的緩存503,它們通過內(nèi)部總線相互連接。
i/o處理電路501和過濾處理電路502兩者都可以作為fpga500的硬件電路安裝,也可以通過fpga500內(nèi)部的嵌入式處理器實(shí)現(xiàn)一部分或者全部的功能。此外,本實(shí)施例中,作為加速器板50使用fpga500進(jìn)行說明,但是也可以采用gpu和副處理器。
客戶端服務(wù)器11和12是利用由信息處理裝置10管理的db450的應(yīng)用程序所運(yùn)行的服務(wù)器,向db服務(wù)器20請(qǐng)求db處理。
db服務(wù)器20從客戶端服務(wù)器11、12接收使用過濾處理的命令,作為db服務(wù)器20將過濾處理卸載到fpga500的順序,說明a~c。
db服務(wù)器20的主處理器200對(duì)fpga500發(fā)行指示過濾處理的執(zhí)行的指令(a)。接收到指令的fpga500的i/o處理電路501對(duì)存儲(chǔ)設(shè)備400發(fā)行讀取命令,獲取成為過濾處理的對(duì)象的db450的數(shù)據(jù),并將其存儲(chǔ)在fpga500的緩存503(b)。
接著,過濾處理電路502從緩存503讀出i/o處理電路501所讀取的db450的數(shù)據(jù),進(jìn)行過濾處理,并將該過濾處理結(jié)果作為結(jié)果數(shù)據(jù)發(fā)送到db服務(wù)器20(c)。
通過以這樣的順序進(jìn)行過濾處理,在與db服務(wù)器20連接的總線300中,db450的數(shù)據(jù)其本身不流動(dòng),僅流動(dòng)指令和結(jié)果數(shù)據(jù),所以與所述現(xiàn)有例的順序相比,能夠減少在總線300流動(dòng)的數(shù)據(jù)量。
此外,由于能夠在信息處理裝置10連接多個(gè)客戶端服務(wù)器11、12,所以有可能在例如客戶端服務(wù)器11請(qǐng)求過濾處理的期間,其他的客戶端服務(wù)器12請(qǐng)求過濾處理以外的db處理(例如更新處理)。
該情況下,主處理器200需要對(duì)存儲(chǔ)設(shè)備400進(jìn)行i/o訪問,但是在fpga500執(zhí)行過濾處理中,信息處理裝置10的主處理器200也能夠?qū)Υ鎯?chǔ)設(shè)備400發(fā)行i/o,并行執(zhí)行多個(gè)處理,能夠發(fā)送被客戶端服務(wù)器11、12所請(qǐng)求的處理的結(jié)果。
實(shí)施例1
接著,使用圖2~6,詳細(xì)說明本發(fā)明的實(shí)施例1。
圖2是表示適用本發(fā)明的信息處理裝置10的構(gòu)成的一例的框圖。
信息處理裝置10包括db服務(wù)器20和擴(kuò)展器30。db服務(wù)器20具有處理器200、系統(tǒng)存儲(chǔ)器210和芯片組220,它們由內(nèi)部總線230連接。在芯片組220中pcle根聯(lián)合體221發(fā)揮功能,經(jīng)由pcle總線2300與pcle開關(guān)2310連接。
在芯片組220連接有具有輸入裝置和輸出裝置(例如、顯示器)的終端180。在系統(tǒng)存儲(chǔ)器210中加載os110、pcle驅(qū)動(dòng)器130、dbms120并由主處理器200執(zhí)行。
pcle驅(qū)動(dòng)器130控制與pcle網(wǎng)絡(luò)上連接的存儲(chǔ)設(shè)備或者加速器。其中,pcle驅(qū)動(dòng)器130也可以包括在os110中。dbms120在訪問與pcle總線2300連接的裝置時(shí)經(jīng)由pcle驅(qū)動(dòng)器130訪問各裝置。
擴(kuò)展器30包括2個(gè)存儲(chǔ)設(shè)備400、410、2個(gè)加速器板50、51、pcle開關(guān)2310、2320、2330,它們分別經(jīng)由pcle總線2300~2304與db服務(wù)器20連接。
存儲(chǔ)設(shè)備400和加速器板50經(jīng)由pcle總線2303與pcle開關(guān)2320連接。pcle開關(guān)2320經(jīng)由pcle總線2301與pcle開關(guān)2310連接。
同樣,存儲(chǔ)設(shè)備410和加速器板51經(jīng)由pcle總線2304與pcle開關(guān)2330連接。pcle開關(guān)2330經(jīng)由pcle總線2302與pcle開關(guān)2310連接。
因?yàn)榧铀倨靼?0、51和存儲(chǔ)設(shè)備400、410映射在db服務(wù)器20的存儲(chǔ)器空間上,所以圖2那樣的構(gòu)成也是一個(gè)網(wǎng)絡(luò)。本實(shí)施例中使用pcle總線,所以稱為pcle網(wǎng)絡(luò)。這樣,一個(gè)網(wǎng)絡(luò)不限定于如圖1的存儲(chǔ)設(shè)備400和加速器板50那樣僅夾著一級(jí)pcle開關(guān)310的構(gòu)成。即使如圖2的pcle開關(guān)2310、2320、2330那樣是夾著多級(jí)開關(guān)的構(gòu)成,只要映射在db服務(wù)器20(主處理器200)的存儲(chǔ)器空間上即可。
加速器板50、51分別搭載fpga500、510。在fpga500中具有i/o處理電路501、過濾處理電路502、緩存503,它們相互連接。雖然未圖示,但是fpga510也與fpga500同樣地構(gòu)成。
存儲(chǔ)設(shè)備400是能夠使用nvm(nonvolatilememory:非易失性存儲(chǔ)器)express協(xié)議(以下稱為nvme)進(jìn)行通信的存儲(chǔ)設(shè)備,具有i/o控制器401和數(shù)據(jù)庫(kù)保存區(qū)域404。在數(shù)據(jù)庫(kù)保存區(qū)域404保存db450。數(shù)據(jù)庫(kù)保存區(qū)域404能夠由例如閃存、reram(resistancerandomaccessmemory:電阻隨機(jī)存取存儲(chǔ)器)、pcm(phasechangerandomaccessmemory:相變隨機(jī)存取存儲(chǔ)器)等非易失性存儲(chǔ)介質(zhì)構(gòu)成。再者,雖然未圖示,但是存儲(chǔ)設(shè)備410也與存儲(chǔ)設(shè)備400同樣地構(gòu)成。
存儲(chǔ)設(shè)備400的數(shù)據(jù)庫(kù)保存區(qū)域404,沒有直接映射在db服務(wù)器20(主處理器200)的存儲(chǔ)器空間上,僅映射指令接口。主處理器200和fpga500無(wú)法使用pcle總線2300~2304直接訪問數(shù)據(jù)庫(kù)保存區(qū)域404。因此,主處理器200和加速器板50通過向存儲(chǔ)設(shè)備400發(fā)行i/o指令(讀取指令/寫入指令),實(shí)施向數(shù)據(jù)庫(kù)保存區(qū)域的讀取寫入。
即,在系統(tǒng)存儲(chǔ)器210中,通過os110對(duì)地址空間分配系統(tǒng)存儲(chǔ)器210的存儲(chǔ)元件來管理訪問。與之相對(duì),在nvme和sata中,以區(qū)塊為單位管理數(shù)據(jù)庫(kù)保存區(qū)域404,但不將全部的區(qū)塊分配給系統(tǒng)存儲(chǔ)器210的地址空間(邏輯塊),通過指令的交換來實(shí)現(xiàn)訪問。
i/o控制器401接收來自存儲(chǔ)設(shè)備400、410外部的i/o指令,根據(jù)指令進(jìn)行以下的處理。在讀取指令的情況下從數(shù)據(jù)庫(kù)保存區(qū)域404讀出對(duì)應(yīng)的讀取地址的數(shù)據(jù),并將其寫入到讀取數(shù)據(jù)的請(qǐng)求目的地地址。在寫入指令的情況下,從寫入數(shù)據(jù)發(fā)送源的地址讀取寫入數(shù)據(jù),并將其保存在與寫入地址對(duì)應(yīng)的數(shù)據(jù)庫(kù)保存區(qū)域404。
i/o控制器401包括進(jìn)行運(yùn)算處理的處理器402、包括多個(gè)隊(duì)列的指令接口405、和保存用于進(jìn)行處理的信息的管理信息保存區(qū)域403。
指令接口405具有:admin隊(duì)列406,其用于接受主要在初始化(在nvme中生成(或者有效化)i/o發(fā)行隊(duì)列的功能等)或者錯(cuò)誤時(shí)使用的admin指令;主處理器用i/o發(fā)行隊(duì)列407(以下稱為處理器隊(duì)列),其用于接受來自主處理器200的i/o指令;和fpga用i/o發(fā)行隊(duì)列408(以下稱為fpga隊(duì)列),其用于接受來自fpga500的i/o指令。再者,以下將處理器隊(duì)列407和fpga隊(duì)列408總稱為i/o發(fā)行隊(duì)列。
這些i/o發(fā)行隊(duì)列作為指令接口405與存儲(chǔ)設(shè)備400的管理用寄存器等共同映射于pcle網(wǎng)絡(luò)的地址空間(mmio空間)。
再者,admin隊(duì)列406、處理器隊(duì)列407和fpga隊(duì)列408是分別被分配了不同的地址的獨(dú)立的隊(duì)列。這些admin隊(duì)列406、處理器隊(duì)列407和fpga隊(duì)列408的地址在pcle網(wǎng)絡(luò)的地址空間被分配于存儲(chǔ)設(shè)備的指令接口405內(nèi)。pcle網(wǎng)絡(luò)的地址空間能夠由在db服務(wù)器20運(yùn)行的os110或者pcle驅(qū)動(dòng)器130來分配。
db服務(wù)器20的主處理器200或者fpga500使用這些i/o發(fā)行隊(duì)列發(fā)行i/o指令時(shí),檢測(cè)到i/o指令的存儲(chǔ)設(shè)備400的處理器402進(jìn)行寫入或者讀取這樣的i/o指令處理。
在電源起動(dòng)時(shí)的存儲(chǔ)設(shè)備400中,i/o發(fā)行隊(duì)列不成為有效,而僅admin隊(duì)列406為有效。通過主處理器200對(duì)該admin隊(duì)列406發(fā)行i/o發(fā)行隊(duì)列的生成(或者有效化)命令(或者初始化的命令),接收到該命令的處理器402使例如處理器隊(duì)列407有效。
然后,處理器402對(duì)db服務(wù)器20的主處理器200發(fā)送生成了(或者有效化)主處理器隊(duì)列407的通知,主處理器200能夠使用處理器隊(duì)列407。
此處,將使用了該admin隊(duì)列406的i/o發(fā)行隊(duì)列407~408的有效化稱為生成i/o發(fā)行隊(duì)列。在存儲(chǔ)設(shè)備400準(zhǔn)備有多個(gè)i/o發(fā)行隊(duì)列,其有效還是無(wú)效的信息保存在i/o控制器401的管理信息保存區(qū)域(例如dram等易失性存儲(chǔ)介質(zhì)、或者閃存、reram、pcm等非易失性存儲(chǔ)介質(zhì))403。
再者,admin隊(duì)列406接受來自主處理器200的初始化的命令,作為用于生成和管理i/o發(fā)行隊(duì)列407、408的初始設(shè)定接口起作用。此外,i/o發(fā)行隊(duì)列407、408作為接受來自主處理器200和fpga500的i/o指令的i/o發(fā)行接口起作用。
圖2中,存儲(chǔ)設(shè)備400具有3個(gè)i/o發(fā)行隊(duì)列407~409,其中,對(duì)主處理器200分配處理器隊(duì)列407并使其有效,對(duì)fpga500分配fpga隊(duì)列408并使其有效,i/o發(fā)行隊(duì)列409為無(wú)效。
成為無(wú)效的i/o發(fā)行隊(duì)列409能夠分配給其他處理器或者fpga。例如,可以使主處理器200為雙核處理器,將其一個(gè)核分配給處理器隊(duì)列407,將另一個(gè)核分配給i/o發(fā)行隊(duì)列409,成為不進(jìn)行核間的排他處理而各核能夠進(jìn)行i/o發(fā)行的狀態(tài)?;蛘撸部梢詫?duì)fpga500分配fpga隊(duì)列408,對(duì)fpga510分配i/o發(fā)行隊(duì)列409,而成為能夠從多個(gè)fpga對(duì)一個(gè)存儲(chǔ)設(shè)備400發(fā)行i/o命令的狀態(tài)。
圖2中,存儲(chǔ)設(shè)備400具有3個(gè)i/o發(fā)行隊(duì)列,但是其個(gè)數(shù)不限定于3個(gè),幾個(gè)都可以。
圖3是由信息處理裝置10進(jìn)行了i/o發(fā)行處理的情況的說明圖。此處,使用圖3說明使主處理器200用和fpga500用獨(dú)立地來準(zhǔn)備i/o發(fā)行隊(duì)列的必要性。
例如,在nvme的技術(shù)中,存儲(chǔ)設(shè)備400的處理器隊(duì)列407由供主處理器200進(jìn)行寫入的寄存器構(gòu)成,主處理器200記錄i/o指令發(fā)行的累計(jì)個(gè)數(shù)。
主處理器200發(fā)行的i/o指令能夠保存在i/o控制器401的管理信息保存區(qū)域403中?;蛘撸部梢詫⒅魈幚砥?00發(fā)行的i/o指令保存在系統(tǒng)存儲(chǔ)器210的規(guī)定區(qū)域。對(duì)于主處理器200發(fā)行的i/o指令的保存目的地,使用周知或者公知的技術(shù)即可,因此本實(shí)施例中不詳述。
另一方面,存儲(chǔ)設(shè)備400的處理器200(402?)將過去處理的指令數(shù)存儲(chǔ)在管理信息保存區(qū)域403中。例如,如果處理器隊(duì)列407的值和管理信息保存區(qū)域403的值的任一者的值均成為4,則表示過去主處理器200發(fā)行了4個(gè)指令,存儲(chǔ)設(shè)備400將該4個(gè)指令全部處理完畢。
使用圖3的a~c說明從主處理器200對(duì)存儲(chǔ)設(shè)備400新發(fā)行1個(gè)i/o指令的處理。首先,主處理器200在系統(tǒng)存儲(chǔ)器210的規(guī)定地址生成i/o指令(a)。
接著,主處理器200在處理器隊(duì)列407寫入對(duì)當(dāng)前值=“4”加上1所得的值=“5”(b)。
與之相對(duì),i/o控制器401的處理器402檢測(cè)到處理器隊(duì)列407的值“5”與存儲(chǔ)在管理信息保存區(qū)域403的、過去處理過的指令數(shù)=“4”的值具有差值,判斷為有新的指令,從系統(tǒng)存儲(chǔ)器210獲取指令(c)。
由于主處理器200自身能夠存儲(chǔ)寫入到處理器隊(duì)列407的值,所以在下次的i/o發(fā)行時(shí)不用讀取處理器隊(duì)列407,能夠容易地寫入對(duì)過去的值加上1而得的值,能夠高速地發(fā)行指令。
該情況下,若fpga500共有主處理器200和處理器隊(duì)列407而要新發(fā)行i/o指令,則首先,必需讀取一次處理器隊(duì)列407,才能知道當(dāng)前的值。
此外,fpga500需要與主處理器200進(jìn)行排他處理,例如指示主處理器200不更新處理器隊(duì)列407等。這些與通常的來自主處理器200的i/o發(fā)行相比存在不僅花費(fèi)時(shí)間,還產(chǎn)生主處理器200無(wú)法發(fā)行i/o指令的時(shí)間,信息處理裝置10整體的性能降低的問題。
另一方面,本實(shí)施例1的存儲(chǔ)設(shè)備400中,對(duì)主處理器200用生成處理器隊(duì)列407,對(duì)fpga500用生成fpga隊(duì)列408。像這樣在i/o控制器401具有針對(duì)主處理器200和fpga500而獨(dú)立的i/o發(fā)行隊(duì)列的情況下,在處理器200與fpga500之間,可以不進(jìn)行排他處理和多余的i/o發(fā)行隊(duì)列的讀取,所以主處理器200和fpga500都能夠高速地發(fā)行i/o指令。
圖4是表示在信息處理裝置10進(jìn)行的初始化處理的一例的時(shí)序圖。
在信息處理裝置10的初始化開始時(shí),主處理器200從系統(tǒng)存儲(chǔ)器210獲取自身所連接的pcle網(wǎng)絡(luò)的構(gòu)成信息(1000)。此外,本實(shí)施例的初始化處理由加載到系統(tǒng)存儲(chǔ)器210的os110和pcle驅(qū)動(dòng)器130執(zhí)行。以下,將進(jìn)行os110或者pcle驅(qū)動(dòng)器130的處理的主體作為主處理器200進(jìn)行說明。
在pcle網(wǎng)絡(luò)中,具有pcle根聯(lián)合體221的芯片組220在起動(dòng)時(shí)檢測(cè)與該芯片組220連接的pcle末端設(shè)備的網(wǎng)絡(luò)構(gòu)成,將檢測(cè)結(jié)果(pci設(shè)備樹等)保存在系統(tǒng)存儲(chǔ)器210的規(guī)定區(qū)域中。主處理器200通過訪問系統(tǒng)存儲(chǔ)器210的規(guī)定區(qū)域,能夠獲取所存儲(chǔ)的pcle網(wǎng)絡(luò)(或者總線)的構(gòu)成信息。
作為pcle網(wǎng)絡(luò)的構(gòu)成信息,能夠包括網(wǎng)絡(luò)(或者總線)上的設(shè)備的位置、設(shè)備的性能、設(shè)備的容量等。pcle網(wǎng)絡(luò)的構(gòu)成信息在os110或者pcle驅(qū)動(dòng)器130的起動(dòng)時(shí)由主處理器200收集,并保存在系統(tǒng)存儲(chǔ)器210的規(guī)定區(qū)域。
接著,主處理器200使用所獲取的pcle網(wǎng)絡(luò)的構(gòu)成信息,分配訪問存儲(chǔ)設(shè)備400、410的加速器板50、51(1001)。分配所使用的信息使用例如存儲(chǔ)設(shè)備400、410與加速器板50、51之間的距離的信息。其中,對(duì)加速器板50分配存儲(chǔ)設(shè)備400、410的處理能夠以pcle驅(qū)動(dòng)器130或者os110成為主體的方式進(jìn)行。以下,將執(zhí)行pcle驅(qū)動(dòng)器130或者os110的主處理器200作為分配的主體進(jìn)行說明。
作為距離的信息,能夠使用例如pcle網(wǎng)絡(luò)的跳數(shù)。本實(shí)施例中,將通過pcle開關(guān)2310、2320、2330的個(gè)數(shù)(或者次數(shù))作為跳數(shù)。
在fpga500與存儲(chǔ)設(shè)備400的通信中,由于通過一個(gè)pcle開關(guān)2320,所以跳數(shù)=1。另一方面,fpga510與存儲(chǔ)設(shè)備400之間通過pcle開關(guān)2310、2320、2330,跳數(shù)=3。因此,圖2的構(gòu)成中,將跳數(shù)少的fpga500分配給存儲(chǔ)設(shè)備400。通過同樣的距離的信息的比較,對(duì)存儲(chǔ)設(shè)備410分配fpga510。
再者,存儲(chǔ)設(shè)備400和加速器板50的分配不限定于一對(duì)一。例如,主處理器200能夠?qū)Υ鎯?chǔ)設(shè)備400分配fpga500和fpga510兩者,或者也能夠?qū)pga500分配給存儲(chǔ)設(shè)備400和存儲(chǔ)設(shè)備410兩者。
接著,主處理器200對(duì)存儲(chǔ)設(shè)備400發(fā)送生成i/o發(fā)行隊(duì)列的指令(1002)。此處,與pcle根聯(lián)合體221連接的主處理器200能夠獲取存儲(chǔ)設(shè)備400的i/o控制器401具有的、admin隊(duì)列406的地址。另一方面,如所述課題中也已陳述的那樣,作為pcle末端的fpga500無(wú)法獲取同樣作為pcle末端的admin隊(duì)列406的地址。
因此,主處理器200使用存儲(chǔ)設(shè)備400的admin隊(duì)列406,生產(chǎn)用于自身對(duì)存儲(chǔ)設(shè)備400發(fā)行i/o指令的處理器隊(duì)列407和用于fpga500對(duì)存儲(chǔ)設(shè)備400發(fā)行i/o指令的fpga隊(duì)列408這兩個(gè)隊(duì)列(1002)。
接著,主處理器200對(duì)fpga500通知fpga隊(duì)列408的隊(duì)列信息(fpga隊(duì)列408的地址和最大同時(shí)發(fā)行指令數(shù)(隊(duì)列的深度))(1003)。
這樣,如果有最低限fpga隊(duì)列408的地址和隊(duì)列的深度,則fpga500能夠?qū)Υ鎯?chǔ)設(shè)備400發(fā)行i/o指令。進(jìn)而,作為隊(duì)列信息,還可以包括存儲(chǔ)設(shè)備400的pcle(或者pci)配置寄存器(省略圖示)的地址和能夠訪問的lba(logicalblockaddress:邏輯塊地址)的范圍(能夠訪問的起始lba和容量等)等信息。
例如,若fpga500能夠獲取存儲(chǔ)設(shè)備400的pcle配置寄存器的地址,則還能夠獲取存儲(chǔ)設(shè)備400的nvme寄存器(省略圖示)的地址。fpga500能夠根據(jù)這些地址計(jì)算能夠訪問的lba的范圍。在fpga500使用能夠訪問的lba的范圍對(duì)例如一臺(tái)加速器板50分配了多個(gè)存儲(chǔ)設(shè)備400、410的情況下,fpga500能夠判斷對(duì)哪個(gè)存儲(chǔ)設(shè)備發(fā)行i/o指令好。
再者,nvme寄存器是例如在“nvmexpress”(revision1.1bjuly2,2014、nvmexpressworkgroup刊)的第37頁(yè)~第45頁(yè)等記載的寄存器。
進(jìn)而,主處理器200使用admin隊(duì)列在存儲(chǔ)設(shè)備410也同樣生成處理器隊(duì)列和fpga隊(duì)列(1004),并將fpga隊(duì)列的信息通知給fpga510(1005)。
通過以上圖4的處理,fpga500能夠向存儲(chǔ)設(shè)備400發(fā)行i/o指令,此外,fpga510能夠向存儲(chǔ)設(shè)備410發(fā)行i/o指令。
再者,以主處理器200使用admin隊(duì)列406生成處理器隊(duì)列407和fpga隊(duì)列408的順序?yàn)槔M(jìn)行了說明,但是也可以是,主處理器200對(duì)fpga500通知admin隊(duì)列406的地址,fpga500生成處理器隊(duì)列407和fpga隊(duì)列408。
通過以上圖3、圖4的處理,作為pcle網(wǎng)絡(luò)的末端而連接的加速器板50的fpga500能夠從主處理器200獲取fpga隊(duì)列408的隊(duì)列信息。由此,能夠從pcle末端的fpga500對(duì)同樣為pcle末端的存儲(chǔ)設(shè)備400發(fā)行i/o指令,加速器板50能夠訪問保存在存儲(chǔ)設(shè)備400的db450的數(shù)據(jù)。
圖5是表示在信息處理裝置10的初始化完成后主處理器200使fpga500執(zhí)行數(shù)據(jù)庫(kù)450的過濾處理的例子的時(shí)序圖。
執(zhí)行dbms120的主處理器200首先對(duì)fpga500發(fā)行指示過濾處理的過濾處理指令(1101)。該過濾處理指令中至少包括:表示執(zhí)行過濾處理的數(shù)據(jù)庫(kù)450的表格的排頭位于存儲(chǔ)設(shè)備400的db保存區(qū)域404的地址的哪里的信息;和執(zhí)行過濾處理的db450的大小的信息、過濾處理的條件式=a。再者,過濾處理指令中除此之外還可以包括保存過濾處理的結(jié)果數(shù)據(jù)的系統(tǒng)存儲(chǔ)器210的地址。
過濾處理指令是包括例如表格的排頭為存儲(chǔ)設(shè)備400的lba=0x1000,并按1m(兆)字節(jié)的數(shù)據(jù)執(zhí)行過濾條件式=a的過濾處理這樣的信息的指令。
此外,過濾處理指令的發(fā)行目的地(fpga500或者fpga510)也可以由dbms120或者pcle驅(qū)動(dòng)器130的任一個(gè)決定。在pcle驅(qū)動(dòng)器130進(jìn)行決定的情況下,dbms120發(fā)行過濾處理指令時(shí),pcle驅(qū)動(dòng)器130決定發(fā)行目的地(fpga500或者fpga510)而發(fā)送過濾處理指令。
從執(zhí)行dbms120的主處理器200接收到過濾處理指令的fpga500的i/o處理電路501,根據(jù)過濾處理指令的信息對(duì)存儲(chǔ)設(shè)備400發(fā)行讀取指令(1102)。該讀取指令可以是一次,也可以是多次。圖示的例子中,表示fpga500將對(duì)1m字節(jié)的讀取分為4次而按每256k字節(jié)發(fā)行4個(gè)讀取指令的例子。
4個(gè)讀取指令通過例如對(duì)于lba=0x1000、0x1200、0x1400、0x1600的4次256k字節(jié)讀取指令,fpga500讀取將lba=0x1000作為排頭的1m字節(jié)的數(shù)據(jù)。
從存儲(chǔ)設(shè)備400的db保存區(qū)域404讀取到的數(shù)據(jù)保存在fpga500的緩存503中(1103)。收到4次的讀取完成通知的i/o處理電路501對(duì)過濾處理電路502進(jìn)行指示以使得對(duì)緩存503的數(shù)據(jù)執(zhí)行規(guī)定的過濾處理(1104)。
接受了指示的過濾處理電路502執(zhí)行過濾條件式=a的過濾處理。
接著,過濾處理電路502將過濾處理的結(jié)果發(fā)送到db服務(wù)器20的系統(tǒng)存儲(chǔ)器210(1105)。發(fā)送目的地的地址可以由過濾處理指令指定,也可以為預(yù)先設(shè)定的固定地址。
過濾處理完成后,過濾處理電路502將完成通知發(fā)送到i/o處理電路501(1106)。接收到完成通知的i/o處理電路501對(duì)主處理器200通知過濾處理的完成,并且主處理器200接收到該完成通知,由此一系列的過濾處理完成(1107)。
此外,圖5中,說明了作為保存過濾處理的結(jié)果數(shù)據(jù)的地址而使用系統(tǒng)存儲(chǔ)器210的地址的例子,但是過濾處理的結(jié)果數(shù)據(jù)的保存目的地地址不限定于此。例如,如果是表示存儲(chǔ)設(shè)備400的地址的信息,則在存儲(chǔ)設(shè)備400寫入過濾處理的結(jié)果數(shù)據(jù)即可,如果是表示加速器板51的地址的信息,則在加速器板51寫入過濾處理的結(jié)果數(shù)據(jù)即可,如果是表示加速器板50的地址的信息,則保存在加速器板50的存儲(chǔ)器上即可。
此外,雖然表示了在過濾處理指令之中直接放入過濾條件式=a的例子,但是不限定于此,也可以是用于得到過濾條件式的信息。例如,也可以在系統(tǒng)存儲(chǔ)器210上保存過濾條件式,并將該過濾條件式的保存地址放入過濾處理指令之中。
通過上述圖5的處理,從與pcle總線的末端連接的加速器板50直接訪問同樣為末端的存儲(chǔ)設(shè)備400,由此能夠降低db服務(wù)器20的負(fù)荷。此外,db450的數(shù)據(jù)不通過pcle總線2300,而經(jīng)由pcle開關(guān)2320被讀入fpga500。因此,pcle總線2300的性能(傳送速度等)不成為瓶頸,fpga500能夠高速地執(zhí)行過濾處理。特別是,以如圖21那樣pcle開關(guān)9000~9006構(gòu)成為樹狀、且在其前端連接有存儲(chǔ)設(shè)備9300、9400、9500、9600和加速器9301、9401、9501、9601那樣的樹狀的構(gòu)成將多個(gè)存儲(chǔ)設(shè)備和加速器組連接時(shí),本發(fā)明尤其能發(fā)揮效果。此時(shí),加速器9031訪問的存儲(chǔ)設(shè)備全部是跳數(shù)為1的存儲(chǔ)設(shè)備的情況下,從各存儲(chǔ)設(shè)備9300、9400、9500、9600讀取到的數(shù)據(jù)由pcle開關(guān)9003~9006關(guān)閉,所以即使增加存儲(chǔ)設(shè)備和加速器的組也不使用樹狀的上位的pcle開關(guān)(9000、9001、9002)的帶寬。由此,能夠橫向擴(kuò)展過濾處理性能。
圖6是表示主處理器200的i/o和加速器板50的i/o同時(shí)存在時(shí)的處理的一例的時(shí)序圖。圖6的例子是在fpga500執(zhí)行過濾處理時(shí),主處理器200在存儲(chǔ)設(shè)備400進(jìn)行讀取的時(shí)序圖。
與上述圖5的過濾處理的時(shí)序圖同樣,執(zhí)行dbms120的主處理器200首先對(duì)fpga500發(fā)行指示過濾處理的過濾處理指令(1111)。
從主處理器200接收到過濾處理指令的fpga500的i/o處理電路501根據(jù)過濾處理指令的信息對(duì)存儲(chǔ)設(shè)備400發(fā)行讀取指令(1112)。該情況下,fpga500使用在上述初始化時(shí)從主處理器200通知了地址的fpga隊(duì)列408。此外,同時(shí),主處理器200也對(duì)存儲(chǔ)設(shè)備400發(fā)行了讀取指令(1113)。該情況下,主處理器200使用處理器隊(duì)列407。
圖示的例子中,存儲(chǔ)設(shè)備400執(zhí)行fpga隊(duì)列408的第一個(gè)讀取指令,并將從db保存區(qū)域404讀入的數(shù)據(jù)保存在fpga500的緩存503中(1114)。存儲(chǔ)設(shè)備400將第一個(gè)讀取指令的讀取完成通知發(fā)送到fpga500(1115)。
接著,存儲(chǔ)設(shè)備400執(zhí)行處理器隊(duì)列407的讀取指令,并將從db保存區(qū)域404讀入的數(shù)據(jù)保存在系統(tǒng)存儲(chǔ)器210中(1116)。存儲(chǔ)設(shè)備400將讀取指令的讀取完成通知發(fā)送到主處理器200(1117)。
使主處理器200的i/o處理完成了的存儲(chǔ)設(shè)備400依次執(zhí)行fpga隊(duì)列408的第二個(gè)以后的讀取指令,并將從db保存區(qū)域404讀入的數(shù)據(jù)保存在fpga500的緩存503中(1118)。存儲(chǔ)設(shè)備400將各讀取指令的讀取完成通知分別發(fā)送到fpga500(1119)。
收到了4次讀取完成通知的i/o處理電路501對(duì)過濾處理電路502指示對(duì)緩存503的數(shù)據(jù)執(zhí)行規(guī)定的過濾處理(1120)。接受了指示的過濾處理電路502執(zhí)行規(guī)定的過濾處理。
接著,過濾處理電路502將過濾處理的結(jié)果發(fā)送到db服務(wù)器20的系統(tǒng)存儲(chǔ)器210(1121)。過濾處理完成后,過濾處理電路502將完成通知發(fā)送到i/o處理電路501。接收到完成通知的i/o處理電路501對(duì)主處理器200通知過濾處理完成,主處理器200收到該完成通知,由此一系列的過濾處理完成(1122)。
如以上圖5的處理那樣,存儲(chǔ)設(shè)備400通過初始化處理(圖4)獨(dú)立地設(shè)置處理器隊(duì)列407和fpga隊(duì)列408,使用任意隊(duì)列都能夠讀取和寫入db保存區(qū)域404的數(shù)據(jù)。因此,即使主處理器200和fpga500不進(jìn)行排他處理,這些讀取請(qǐng)求也會(huì)被正確地處理。
例如,圖6中表示了正從fpga500向存儲(chǔ)設(shè)備400發(fā)行4個(gè)讀取指令時(shí)從主處理器200也發(fā)行了讀取指令的例子,i/o控制器401中,fpga500和主處理器200寫入讀取指令的隊(duì)列分別獨(dú)立,所以不需要進(jìn)行fpga500和主處理器200的排他控制。由此,信息處理裝置10能夠不降低處理性能地從fpga500和主處理器200并行地發(fā)行i/o指令。
接著,使用圖7~圖9說明在本實(shí)施例1中多個(gè)存儲(chǔ)設(shè)備400和加速器板50與同一pcle開關(guān)連接的情況下的分配方法。
圖7是表示將向1個(gè)pcle開關(guān)3320連接了存儲(chǔ)設(shè)備和加速器板的多個(gè)組的構(gòu)成的一例的框圖。代替圖2所示的pcle開關(guān)2320,圖7的信息處理裝置10在pcle開關(guān)3320和pcle總線3303添加存儲(chǔ)設(shè)備410、420和加速器板52,而且在pcle驅(qū)動(dòng)器130添加表格140~160。其他的構(gòu)成與上述圖2相同。
圖8是表示存儲(chǔ)設(shè)備400、410、420與加速器板50~52之間的跳數(shù)的跳數(shù)表格140。跳數(shù)表格140表示圖7的存儲(chǔ)設(shè)備400、410、430與fpga500、510、520之間的跳數(shù)的表格。跳數(shù)表格140由信息處理裝置10的管理者等預(yù)先設(shè)定,并由pcle驅(qū)動(dòng)器130管理,存儲(chǔ)在系統(tǒng)存儲(chǔ)器210中。
關(guān)于與pcle開關(guān)3330連接的存儲(chǔ)設(shè)備410,跳數(shù)最少的加速器板51僅為fpga510,所以能夠僅通過跳數(shù)對(duì)fpga510分配存儲(chǔ)設(shè)備410。
另一方面,關(guān)于存儲(chǔ)設(shè)備400、420、430,跳數(shù)最少的加速器板50、52存在多個(gè)。這樣的情況下,可以在pcle網(wǎng)絡(luò)構(gòu)成中選擇距離信息近的加速器板。該情況下,圖7的構(gòu)成中,對(duì)fpga500分配存儲(chǔ)設(shè)備400和存儲(chǔ)設(shè)備410。此外,對(duì)fpga520分配存儲(chǔ)設(shè)備430。再者,作為pcle網(wǎng)絡(luò)構(gòu)成的距離信息,能夠定義為pcle開關(guān)3320的端口編號(hào)越近則距離越近。
此外,os110或者pcle驅(qū)動(dòng)器130也可以使用跳數(shù)等距離信息以外的信息來決定存儲(chǔ)設(shè)備400和加速器板50的分配。該信息能夠從存儲(chǔ)設(shè)備和/或加速器板50獲取,例如,具有圖9a、圖9b所示那樣的加速器板50的過濾處理性能、存儲(chǔ)設(shè)備的容量、存儲(chǔ)設(shè)備的讀取性能等。
圖9a是表示fpga的過濾處理性能的fpga性能表格150。fpga性能表格150由fpga的標(biāo)識(shí)符1511和過濾處理性能1512構(gòu)成。fpga性能表格150可以由信息處理裝置10的管理者等預(yù)先設(shè)定而由pcle驅(qū)動(dòng)器130管理,并保存在系統(tǒng)存儲(chǔ)器210中,還可以是pcle驅(qū)動(dòng)器130在加速器識(shí)別時(shí)進(jìn)行查詢,并將其結(jié)果保存在系統(tǒng)存儲(chǔ)器210中。
圖9b是表示存儲(chǔ)設(shè)備的性能的存儲(chǔ)設(shè)備性能表格160。存儲(chǔ)設(shè)備性能表格160由存儲(chǔ)設(shè)備的標(biāo)識(shí)符1601、容量1602和讀取性能1603構(gòu)成。存儲(chǔ)設(shè)備性能表格160可以由信息處理裝置10的管理者等預(yù)先設(shè)定而由pcle驅(qū)動(dòng)器130管理,并保存在系統(tǒng)存儲(chǔ)器210中,也可以是pcle驅(qū)動(dòng)器130在存儲(chǔ)設(shè)備識(shí)別時(shí)查詢存儲(chǔ)設(shè)備的性能,并將其結(jié)果保存在系統(tǒng)存儲(chǔ)器210中。
圖9a、圖9b的例子中,os110或者pcle驅(qū)動(dòng)器130也可以以將容量大的存儲(chǔ)設(shè)備分配給處理性能高的設(shè)備這樣的邏輯,對(duì)fpga500分配存儲(chǔ)設(shè)備420,對(duì)fpga510分配存儲(chǔ)設(shè)備400和存儲(chǔ)設(shè)備430。
或者,os110或者pcle驅(qū)動(dòng)器130還可以以使得加速器板的過濾性能和存儲(chǔ)設(shè)備的讀取性能平衡的方式對(duì)fpga500分配存儲(chǔ)設(shè)備420,對(duì)fpga520分配存儲(chǔ)設(shè)備400和410。
或者,也可以對(duì)fpga500分配存儲(chǔ)設(shè)備400、存儲(chǔ)設(shè)備420和存儲(chǔ)設(shè)備430,對(duì)fpga510也分配存儲(chǔ)設(shè)備400、存儲(chǔ)設(shè)備420和存儲(chǔ)設(shè)備430。該情況下,存儲(chǔ)設(shè)備400、420、430的i/o控制器401,除了生成各個(gè)主處理器200用的處理器隊(duì)列407以外,還能生成加上fpga500用的fpga隊(duì)列408和fpga510用的fpga隊(duì)列409這兩個(gè)而得到的數(shù)量的i/o發(fā)行隊(duì)列。主處理器200能夠在使用了存儲(chǔ)設(shè)備400、410、420、430的數(shù)據(jù)庫(kù)450的過濾處理中并行使用fpga500和fpga510兩者。
信息處理裝置10中,通過進(jìn)行這樣的fpga和存儲(chǔ)設(shè)備的分配,例如能夠以存儲(chǔ)設(shè)備的讀取性能的合計(jì)與加速器板的過濾性能平衡的方式進(jìn)行分配,能夠采用在高負(fù)荷時(shí)存儲(chǔ)設(shè)備和加速器板都能夠發(fā)揮最大性能的構(gòu)成等,實(shí)現(xiàn)信息處理裝置10整體的性能的最優(yōu)化。
接著,說明在本實(shí)施例1中在存儲(chǔ)設(shè)備400產(chǎn)生了故障的情況下的處理的一例。圖10是表示在存儲(chǔ)設(shè)備400產(chǎn)生了故障時(shí)在信息處理裝置10進(jìn)行的處理的一例的時(shí)序圖。
當(dāng)存儲(chǔ)設(shè)備400被分配給fpga500時(shí),執(zhí)行dbms120的主處理器200對(duì)fpga500發(fā)行過濾處理指令,對(duì)存儲(chǔ)設(shè)備400的db450執(zhí)行過濾處理(1201)。
fpga500接收過濾處理指令,為了讀取成為處理對(duì)象的db450,對(duì)存儲(chǔ)設(shè)備400發(fā)行讀取指令(1202)。
但是,在該時(shí)刻存儲(chǔ)設(shè)備400產(chǎn)生了故障的情況下(1203),例如存儲(chǔ)設(shè)備400檢測(cè)到自身的故障,經(jīng)由pcle根聯(lián)合體221對(duì)主處理器200通知故障(1204)。
接受了故障通知的主處理器200檢測(cè)存儲(chǔ)設(shè)備400的故障,并將該故障通知給fpga500(1205)。接收到故障的通知的fpga500,因?yàn)檫^濾處理尚未完成,所以將因故障而過濾處理失敗了的情況通知給主處理器200。
上述圖10的例子中,說明了存儲(chǔ)設(shè)備400自身檢測(cè)到故障并通知給主處理器200的例子,但是也可以是主處理器200監(jiān)視存儲(chǔ)設(shè)備400的狀態(tài),檢測(cè)故障,對(duì)fpga500通知存儲(chǔ)設(shè)備400的故障。
此外,也可以是fpga500通過輪詢(polling)等檢測(cè)在存儲(chǔ)設(shè)備400產(chǎn)生了故障的情況。例如,也可以通過從fpga500對(duì)存儲(chǔ)設(shè)備400發(fā)行的讀取的超時(shí)等來進(jìn)行檢測(cè)。檢測(cè)到故障的fpga500對(duì)主處理器200通知該故障和過濾處理失敗了的情況。
通過這種方式檢測(cè)到存儲(chǔ)設(shè)備400的故障的主處理器200能夠?qū)b服務(wù)器20通知在存儲(chǔ)設(shè)備400發(fā)生了故障的情況,并催促更換。例如,存在在db服務(wù)器20的管理畫面顯示告知產(chǎn)生故障的消息等的方法。此外,當(dāng)具有通過鏡像等方法而被保護(hù)的、存儲(chǔ)設(shè)備400的備份設(shè)備時(shí),能夠代替存儲(chǔ)設(shè)備400而使用該設(shè)備。
接著,對(duì)在本實(shí)施例1中在加速器板50產(chǎn)生了故障的情況下的處理的一例進(jìn)行說明。圖11是表示在加速器板50產(chǎn)生了故障時(shí)由信息處理裝置10進(jìn)行的處理的一例的時(shí)序圖。
在存儲(chǔ)設(shè)備400被分配給fpga500的情況下,執(zhí)行dbms120的主處理器200指示fpga500進(jìn)行對(duì)存儲(chǔ)設(shè)備400的db450的過濾處理(1211)。
但是,在該時(shí)刻,在fpga500產(chǎn)生了故障的情況下(1212),fpga500經(jīng)由pcle根聯(lián)合體221對(duì)主處理器200通知故障(1213)。接受了故障的通知的主處理器200檢測(cè)fpga500的故障。另外,也可以由主處理器200監(jiān)視fpga500,來檢測(cè)故障。
主處理器200從存儲(chǔ)設(shè)備400讀取過濾處理中所需的db450(1214),并將其保存在系統(tǒng)存儲(chǔ)器210(1215)。讀取完成后(1216),執(zhí)行dbms120的主處理器200不使用fpga500,而由自身執(zhí)行db450的過濾處理(1217)。
此外,主處理器200也可以將分配給fpga500的存儲(chǔ)設(shè)備400再次分配給fpga510等其他加速器板51。關(guān)于該處理,用以下的圖12進(jìn)行說明。
圖12是表示在加速器板50產(chǎn)生了故障時(shí)由信息處理裝置10進(jìn)行的重新分配處理的一例的時(shí)序圖。
在存儲(chǔ)設(shè)備400被分配給fpga500的情況下,執(zhí)行dbms120的主處理器200對(duì)fpga500指示對(duì)存儲(chǔ)設(shè)備400的db450執(zhí)行過濾處理(1221)。
但是,在該時(shí)刻,在fpga500產(chǎn)生了故障的情況下(1222),fpga500經(jīng)由pcle根聯(lián)合體221對(duì)主處理器200通知故障(1223)。接受了故障的通知的主處理器200檢測(cè)fpga500的故障。此外,也可以由主處理器200監(jiān)視fpga500來檢測(cè)故障。
主處理器200決定對(duì)新的加速器板51分配存儲(chǔ)設(shè)備400。主處理器200指示存儲(chǔ)設(shè)備400生成fpga510用的fpga隊(duì)列408(1224)。主處理器200對(duì)fpga510通知包括存儲(chǔ)設(shè)備400的fpga510用的fpga隊(duì)列408的地址在內(nèi)的信息(1225)。
接著,執(zhí)行dbms120的主處理器200對(duì)新的fpga510重新發(fā)行指示進(jìn)行使用保存在存儲(chǔ)設(shè)備400的db450的過濾處理的過濾處理指令(1226)。
從主處理器200接收到過濾處理指令的fpga510根據(jù)過濾處理指令的信息對(duì)存儲(chǔ)設(shè)備400發(fā)行讀取指令(1227)。從存儲(chǔ)設(shè)備400的db保存區(qū)域404讀取的數(shù)據(jù)保存在fpga510的緩存中(1228)。
存儲(chǔ)設(shè)備400在所請(qǐng)求的數(shù)據(jù)的讀出完成時(shí)將讀取完成通知發(fā)送到fpga510(1229)。接收到讀取完成通知的fpga510基于過濾處理指令執(zhí)行過濾處理(1230)。
接著,fpga510將過濾處理的結(jié)果發(fā)送到db服務(wù)器20的系統(tǒng)存儲(chǔ)器210(1231)。過濾處理完成后,fpga500將過濾處理的完成通知發(fā)送到主處理器200(1232),結(jié)束一系列的過濾處理。
另外,雖然說明了在存儲(chǔ)設(shè)備400生成新的fpga510用的fpga隊(duì)列408的例子,但是也可以是fpga510援用fpga500所使用的fpga隊(duì)列408。在該情況下,主處理器200對(duì)fpga510通知fpga500所使用的fpga隊(duì)列408的地址和fpga隊(duì)列408的值等、用于援用fpga隊(duì)列408的交接信息。
如以上圖12那樣,在fpga500產(chǎn)生了故障的情況下,對(duì)存儲(chǔ)設(shè)備400分配其他fpga510,由此,即使在fpga500發(fā)生故障時(shí)也能夠保持處理能力,能夠繼續(xù)信息處理裝置10的運(yùn)用。
圖13是表示對(duì)1個(gè)pcle開關(guān)4320追加了存儲(chǔ)設(shè)備和加速器板的構(gòu)成的一例的框圖。圖13的信息處理裝置10,代替圖2所示的pcle開關(guān)2320,在經(jīng)由pcle總線4300與db服務(wù)器20連接的pcle開關(guān)4310上,經(jīng)由pcle總線4303連接有加速器板50和存儲(chǔ)設(shè)備400。而且,在該pcle開關(guān)4310熱插拔存儲(chǔ)設(shè)備440和加速器板53。對(duì)于其他構(gòu)成,與所述圖2相同。
圖14是表示在信息處理裝置10的初始化完成后,追加了新的存儲(chǔ)設(shè)備440時(shí)的處理的一例的時(shí)序圖。
在向?qū)pga500分配給存儲(chǔ)設(shè)備400的信息處理裝置10新插入了存儲(chǔ)設(shè)備440時(shí)(1301),從存儲(chǔ)設(shè)備440對(duì)主處理器200發(fā)行中斷(1302)。
檢測(cè)通過熱插拔進(jìn)行的中斷,檢測(cè)到存儲(chǔ)設(shè)備440的追加的主處理器200進(jìn)行存儲(chǔ)設(shè)備440和fpga500的重新分配。例如,示出將存儲(chǔ)設(shè)備440追加分配給fpga500的例子。
主處理器200指示存儲(chǔ)設(shè)備440生成主處理器200用的處理器隊(duì)列407和fpga500用的fpga隊(duì)列408(1303)。
主處理器200對(duì)fpga510通知包括fpga510用的fpga隊(duì)列408的地址在內(nèi)的隊(duì)列信息(1304)。
通過進(jìn)行這樣的重新分配,即使在信息處理裝置10的初始化完成后,也能夠在存儲(chǔ)設(shè)備440的追加后賦予fpga500處理新的存儲(chǔ)設(shè)備的信息的功能。
圖15是表示在信息處理裝置10的初始化完成后追加了新的加速器板53時(shí)的處理的一例的時(shí)序圖。
圖13中,在向?qū)pga500分配給存儲(chǔ)設(shè)備400的信息處理裝置10新追加了加速器板53(fpga530)時(shí)(1311),從fpga530對(duì)主處理器200發(fā)行中斷(1312)。
檢測(cè)通過熱插拔進(jìn)行的中斷,檢測(cè)到追加了fpga530的主處理器200對(duì)存儲(chǔ)設(shè)備400、440、fpga500、530再次進(jìn)行分配。例如,在存儲(chǔ)設(shè)備400仍然被分配給fpga500、且存儲(chǔ)設(shè)備440被分配給新追加的fpga530的情況下,主處理器200對(duì)fpga500通知存儲(chǔ)設(shè)備440的分配解除(1313)。
接著,主處理器200指示存儲(chǔ)設(shè)備440生成fpga530用的fpga隊(duì)列408(1314)。之后,主處理器200對(duì)fpga530通知包括存儲(chǔ)設(shè)備440的fpga530用的fpga隊(duì)列408的地址在內(nèi)的隊(duì)列信息(1315)。之后,執(zhí)行dbms120的主處理器200指示由fpga530執(zhí)行使用存儲(chǔ)設(shè)備440的db的過濾處理。
此外,說明了在存儲(chǔ)設(shè)備440生成新的fpga530用的fpga隊(duì)列408的例子,但也可以是fpga530援用fpga500所使用的fpga隊(duì)列408。該情況下,主處理器200對(duì)fpga530通知fpga500所使用的fpga隊(duì)列408的地址和fpga隊(duì)列408的值等、用于援用fpga隊(duì)列408的交接信息。
通過進(jìn)行這樣的重新分配,即使在信息處理裝置10的初始化完成后,也能夠在追加加速器板53后使用加速器板53來提高信息處理裝置10的性能。
以上,根據(jù)本實(shí)施例1,db服務(wù)器20的主處理器200對(duì)同樣作為末端的加速器的fpga500通知與pcle總線2300~2304的末端連接的存儲(chǔ)設(shè)備400的隊(duì)列的信息。由此,pcle總線2300~2304的末端的fpga500同樣能夠訪問末端的存儲(chǔ)設(shè)備400。而且,fpga500能夠直接從存儲(chǔ)設(shè)備400讀出數(shù)據(jù)并執(zhí)行主處理器200的處理的一部分,能夠使信息處理裝置10高速化。
此外,本實(shí)施例1使用數(shù)據(jù)庫(kù)450的過濾處理進(jìn)行了說明,但是適用本發(fā)明的處理不限定于數(shù)據(jù)庫(kù)450的過濾處理,只要是能夠?qū)⒅魈幚砥?00的負(fù)荷卸載到加速器板50的處理即可。例如可以是數(shù)據(jù)的壓縮處理等。
此外,在本實(shí)施例1中,說明了主處理器200對(duì)加速器板50通知nvme的admin隊(duì)列406的地址和i/o發(fā)行隊(duì)列407~409的地址的例子,但是本發(fā)明不限定于nvme和隊(duì)列接口。只要是處理器對(duì)加速器板50通知用于能夠進(jìn)行i/o指令發(fā)行的初始設(shè)定接口的地址和從其他設(shè)備向存儲(chǔ)設(shè)備的i/o發(fā)行接口的地址的構(gòu)成即可。
此外,在本實(shí)施例1中,如圖2所示,說明了利用在db服務(wù)器20的外部連接存儲(chǔ)設(shè)備400和加速器板50的構(gòu)成,執(zhí)行db450的過濾處理的例子。但是,本發(fā)明不限定于該構(gòu)成,只要是主處理器200、存儲(chǔ)設(shè)備400和加速器板50通過網(wǎng)絡(luò)連接的構(gòu)成即可。
例如也可以是在db服務(wù)器20的內(nèi)部的pcle插槽搭載有存儲(chǔ)設(shè)備400或者加速器板50的構(gòu)成,或者圖16的信息處理裝置10那樣的構(gòu)成。
圖16表示實(shí)施例1的變形例,是表示信息處理裝置10a的一例的框圖。信息處理裝置10a具有通過服務(wù)器-存儲(chǔ)裝置間網(wǎng)絡(luò)700(例如、光纖通道、infiniband(無(wú)線帶寬技術(shù))等)連接于db服務(wù)器20的存儲(chǔ)裝置60。在存儲(chǔ)裝置60的內(nèi)部包括具有存儲(chǔ)處理器600、高速緩存610、存儲(chǔ)芯片組620的存儲(chǔ)控制器61。
存儲(chǔ)控制器61的存儲(chǔ)芯片組620包括pcle根聯(lián)合體621。pcle根聯(lián)合體621經(jīng)由pcle總線5301連接pcle開關(guān)5310。
包括fpga500、510的加速器板50、51和存儲(chǔ)設(shè)備400、410、420、430經(jīng)由pcle總線5303與pcle開關(guān)5310連接。
此外,在本實(shí)施例1中,說明了使用pcle總線作為將主處理器200、存儲(chǔ)設(shè)備400和加速器板50連接的總線,但是本發(fā)明中使用的總線不限定于的pcle。例如代替pcle總線可以使用sas(serialattachedscsi:串列scsi)。
實(shí)施例2
圖17表示本發(fā)明的第二實(shí)施例,是表示信息處理裝置10的一例的框圖。本實(shí)施例2中,代替加速器板50,采用加速器板54,僅使用pcle開關(guān)2310,其他的構(gòu)成與所述實(shí)施例1相同。
所述實(shí)施例1中,說明了不具有存儲(chǔ)元件的加速器板50對(duì)存儲(chǔ)設(shè)備400發(fā)行i/o指令的例子,但是本發(fā)明中,搭載有加速器板50的設(shè)備也可以具有存儲(chǔ)元件。
例如,圖17的信息處理裝置10是具有加速器板54和存儲(chǔ)設(shè)備400的構(gòu)成,加速器板54搭載有作為加速器的fpga540和作為非易失性存儲(chǔ)器的db保存區(qū)域545雙方。
db服務(wù)器20與所述實(shí)施例1同樣,主處理器200在存儲(chǔ)設(shè)備400的i/o控制器401生成fpga用i/o發(fā)行隊(duì)列409,并將所生成的隊(duì)列信息通知給fpga540。由此,fpga540能夠使用隊(duì)列信息對(duì)存儲(chǔ)設(shè)備400發(fā)行i/o指令。
以下說明在該加速器板54發(fā)行了過濾處理指令時(shí)的處理。
圖18是表示由信息處理裝置10進(jìn)行的數(shù)據(jù)庫(kù)處理的一例的時(shí)序圖。
與所述實(shí)施例1的圖5同樣,執(zhí)行dbms120的主處理器200對(duì)fpga540發(fā)行過濾處理指令(1401)。過濾處理指令中至少包括:表示執(zhí)行過濾處理的數(shù)據(jù)庫(kù)450的表格的排頭位于存儲(chǔ)設(shè)備400的db保存區(qū)域404的地址的哪里的信息;和執(zhí)行過濾處理的db450的大小信息、過濾處理的條件式=a。收到過濾處理指令的i/o處理電路541針對(duì)自身的db保存區(qū)域545中沒有的lba區(qū)域的數(shù)據(jù)向存儲(chǔ)設(shè)備400發(fā)行讀取指令(1402)。存儲(chǔ)設(shè)備400讀出所請(qǐng)求的數(shù)據(jù)并將其寫入緩存543(1404、1408),向i/o處理電路541發(fā)行讀取完成通知(1406、1410)。
另一方面,對(duì)于保存在fpga540自身的db保存區(qū)域545的lba區(qū)域的數(shù)據(jù),對(duì)非易失性存儲(chǔ)器控制電路544發(fā)行讀取指令(1403)。db保存區(qū)域545讀出所請(qǐng)求的數(shù)據(jù)并將其寫入緩存543(1405、1409),對(duì)i/o處理電路541發(fā)行讀取完成通知(1407、1411)。
i/o處理電路541,在過濾處理中所需的全部數(shù)據(jù)被寫入緩存543時(shí),基于接收到的條件式=a對(duì)過濾處理電路542發(fā)出執(zhí)行過濾處理的指令(1412)。過濾處理電路542使用緩存543的數(shù)據(jù)執(zhí)行過濾處理,在db服務(wù)器20的系統(tǒng)存儲(chǔ)器210寫入過濾處理結(jié)果(1413)。而且,過濾處理電路542對(duì)i/o處理電路541發(fā)行過濾處理的完成通知(1414)。i/o處理電路541對(duì)db服務(wù)器20的主處理器200通知過濾處理的完成通知(1415),結(jié)束處理。
通過這樣的處理,db服務(wù)器20能夠?qū)铀倨靼?4將在存儲(chǔ)設(shè)備400的db保存區(qū)域404和加速器板54的db保存區(qū)域545中保存的db的過濾處理卸載到作為加速器的fpga540。
實(shí)施例3
圖19表示本發(fā)明的第三實(shí)施例,是表示信息處理裝置10的一例的框圖。本實(shí)施例3中,代替加速器板50和存儲(chǔ)設(shè)備400,將多個(gè)加速器搭載存儲(chǔ)設(shè)備800、810連接在pcle開關(guān)310上,其他構(gòu)成與所述實(shí)施例1相同。
所述實(shí)施例1中,說明了不具有存儲(chǔ)元件的加速器板50對(duì)存儲(chǔ)設(shè)備發(fā)行i/o指令的例子,但是本發(fā)明中,能夠采用包括加速器的功能和存儲(chǔ)設(shè)備的功能的加速器搭載存儲(chǔ)設(shè)備800、810。
例如,如圖19的信息處理裝置10那樣,存在將作為加速器而搭載有fpga900的加速器搭載存儲(chǔ)設(shè)備800和搭載有fpga910的加速器搭載存儲(chǔ)設(shè)備810經(jīng)由pcle開關(guān)310與db服務(wù)器20連接的構(gòu)成等。db服務(wù)器20和pcle開關(guān)310是與所述實(shí)施例1相同的構(gòu)成。
加速器搭載存儲(chǔ)設(shè)備800中,i/o控制器801和fpga900具有芯片間通信電路901,能夠?qū)pga900的緩存903傳送db保存區(qū)域804的數(shù)據(jù)。由此,能夠利用過濾處理電路902對(duì)db保存區(qū)域804的db進(jìn)行過濾處理。
再者,i/o控制器801與所述實(shí)施例1的圖2所示的i/o控制器401同樣,具有處理器802、管理信息保存區(qū)域803和指令接口805。指令接口805具有admin隊(duì)列806、處理器隊(duì)列807和fpga隊(duì)列808、809。
加速器搭載存儲(chǔ)設(shè)備810也是同樣的構(gòu)成,i/o控制器811和fpga910具有芯片間通信電路,能夠?qū)pga910的緩存913傳送db保存區(qū)域814的數(shù)據(jù)。由此,能夠利用過濾處理電路912對(duì)db保存區(qū)域814的db進(jìn)行過濾處理。
再者,i/o控制器811與所述實(shí)施例1的圖2所示的i/o控制器401同樣,具有處理器812、管理信息保存區(qū)域813和指令接口815。指令接口815具有admin隊(duì)列816、處理器隊(duì)列817和fpga隊(duì)列818、819。
圖20是表示由信息處理裝置10進(jìn)行的初始化處理的一例的時(shí)序圖。
主處理器200在信息處理裝置10的初始化開始時(shí)從系統(tǒng)存儲(chǔ)器210取得自身連接的pcle網(wǎng)絡(luò)的構(gòu)成信息(1501)。
接著,主處理器200使用所取得的pcle網(wǎng)絡(luò)的構(gòu)成信息分配訪問數(shù)據(jù)庫(kù)保存區(qū)域804、814的fpga900、910(1502)。該分配能夠與所述實(shí)施例1的圖4同樣地進(jìn)行。
主處理器200使用加速器搭載存儲(chǔ)設(shè)備800的admin隊(duì)列806,生成主處理器200用的i/o發(fā)行隊(duì)列807和加速器搭載存儲(chǔ)設(shè)備810的fpga910用的i/o發(fā)行隊(duì)列808(1503)。
此外,同樣地,主處理器200使用加速器搭載存儲(chǔ)設(shè)備810的admin隊(duì)列816,生成主處理器200用的i/o發(fā)行隊(duì)列817和加速器搭載存儲(chǔ)設(shè)備800的fpga900用的i/o發(fā)行隊(duì)列818(1504)。
之后,主處理器200對(duì)加速器搭載存儲(chǔ)設(shè)備800通知加速器搭載存儲(chǔ)設(shè)備810的i/o發(fā)行隊(duì)列818的信息(1505)。此外,主處理器200對(duì)加速器搭載存儲(chǔ)設(shè)備810通知加速器搭載存儲(chǔ)設(shè)備800的i/o發(fā)行隊(duì)列808的信息(1506)。通過上述圖20的處理,加速器搭載存儲(chǔ)設(shè)備800和加速器搭載存儲(chǔ)設(shè)備810能夠相互發(fā)行i/o指令來執(zhí)行過濾處理。
再者,上述實(shí)施例3中介紹了i/o控制器801、811和fpga900、910作為獨(dú)立的芯片而被安裝的例子,但是也可以將過濾處理電路902、912搭載于i/o控制器801、811等一體化為具有加速器的功能的i/o控制器。
再者,將所述實(shí)施例1的圖5的處理適用于本實(shí)施例3時(shí),主處理器200對(duì)加速器搭載存儲(chǔ)設(shè)備810發(fā)行過濾處理指令,加速器搭載存儲(chǔ)設(shè)備810從加速器存儲(chǔ)設(shè)備800讀入數(shù)據(jù)。然后,加速器搭載存儲(chǔ)設(shè)備810的fpga910執(zhí)行過濾處理,并將處理結(jié)果保存在主處理器200的系統(tǒng)存儲(chǔ)器210。
此外,將所述實(shí)施例1的圖7、圖8、圖9a、圖9b的內(nèi)容適用于本實(shí)施例3時(shí),首先,在主處理器200起動(dòng)等時(shí)多個(gè)加速器收集存儲(chǔ)設(shè)備800、810的信息,并作為pcle網(wǎng)絡(luò)的構(gòu)成信息保存在系統(tǒng)存儲(chǔ)器210中。然后,主處理器200基于pcle網(wǎng)絡(luò)的構(gòu)成信息,使?jié)M足規(guī)定條件的加速器決定存儲(chǔ)設(shè)備800、810和fpga900、910的分配。主處理器200基于該決定了的分配,通過加速器對(duì)加速器搭載存儲(chǔ)設(shè)備810通知存儲(chǔ)設(shè)備800的admin隊(duì)列806的地址或者i/o發(fā)行隊(duì)列807、808的地址,來進(jìn)行分配并執(zhí)行。
再者,將所述實(shí)施例1的圖10的處理適用于本實(shí)施例3時(shí),在加速器搭載存儲(chǔ)設(shè)備800產(chǎn)生了故障時(shí),基于來自加速器搭載存儲(chǔ)設(shè)備800的通知,主處理器200檢測(cè)故障。主處理器200對(duì)執(zhí)行過濾處理的加速器搭載存儲(chǔ)設(shè)備810通知加速器搭載存儲(chǔ)設(shè)備800的故障。
再者,將所述實(shí)施例1的圖11的處理適用于本實(shí)施例3時(shí),在加速器搭載存儲(chǔ)設(shè)備810的fpga910產(chǎn)生了故障時(shí),加速器搭載存儲(chǔ)設(shè)備810對(duì)讀入了數(shù)據(jù)的加速器搭載存儲(chǔ)設(shè)備800通知fpga910的故障。
或者,也可以是,加速器搭載存儲(chǔ)設(shè)備810對(duì)主處理器200通知fpga910的故障,主處理器200對(duì)加速器搭載存儲(chǔ)設(shè)備800通知fpga910的故障。
再者,將所述實(shí)施例1的圖14或者圖15的處理適用于本實(shí)施例3時(shí),主處理器200檢測(cè)到新的加速器搭載存儲(chǔ)設(shè)備的追加時(shí),參照系統(tǒng)存儲(chǔ)器210的pcle網(wǎng)絡(luò)的構(gòu)成信息,決定新的加速器搭載存儲(chǔ)設(shè)備和fpga的分配。然后,主處理器200基于新的分配,將admin隊(duì)列和i/o發(fā)行隊(duì)列的地址通知給新的加速器搭載存儲(chǔ)設(shè)備或已有的加速器搭載存儲(chǔ)設(shè)備800來改變分配。
再者,本發(fā)明不限定于上述的實(shí)施例,包括各種變形例。例如,為了容易理解地說明本發(fā)明,上述的實(shí)施例是詳細(xì)記載的例子,不必限定于具有所說明的全部構(gòu)成。此外,能夠?qū)⒛硨?shí)施例的構(gòu)成的一部分置換為其他實(shí)施例的構(gòu)成,此外,還能夠在某實(shí)施例的構(gòu)成中添加其他實(shí)施例的構(gòu)成。此外,對(duì)于各實(shí)施例的構(gòu)成的一部分,均能夠單獨(dú)地或者組合地應(yīng)用其他構(gòu)成的任何追加、刪除或者置換。
此外,上述的各構(gòu)成、功能、處理部和處理單元等,它們的一部分或者全部可以通過例如集成電路進(jìn)行設(shè)計(jì)等由硬件實(shí)現(xiàn)。此外,上述的各構(gòu)成和功能等,也可以通過解釋、執(zhí)行處理器實(shí)現(xiàn)各個(gè)功能的程序而由軟件實(shí)現(xiàn)。實(shí)現(xiàn)各功能的程序、表格、文件等信息能夠放在存儲(chǔ)器、硬盤、ssd(solidstatedrive)等記錄裝置、或者ic卡、sd卡、dvd等記錄介質(zhì)中。
此外,控制線和信息線示出了說明上認(rèn)為必要的部分,不限定于產(chǎn)品上必須示出全部的控制線和信息線。實(shí)際上也可以認(rèn)為幾乎所有的構(gòu)成相互連接。
<補(bǔ)充>
一種信息處理裝置,是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備,
所述存儲(chǔ)設(shè)備具有接受所述初始化的命令的初始設(shè)定接口和發(fā)行i/o指令的i/o發(fā)行接口,
所述i/o發(fā)行接口包括接受來自所述第一裝置的i/o指令的第一i/o發(fā)行接口和接受來自所述第二裝置的i/o指令的第二i/o發(fā)行接口,
所述存儲(chǔ)設(shè)備能夠從所述第一裝置和第二裝置分別獨(dú)立地接受所述i/o指令。