本申請涉及通信技術(shù),尤其涉及一種輸入輸出處理方法、裝置及終端。
背景技術(shù):
目前的智能手機(jī)主要采用基于閃存的存儲設(shè)備,其中,映射緩存是閃存中的關(guān)鍵部件,映射緩存主要用來緩存邏輯地址到物理地址的映射信息,以加快閃存內(nèi)部的地址轉(zhuǎn)換。而在智能手機(jī)等嵌入式設(shè)備中,由于功耗與成本控制的限制,映射緩存的尺寸都設(shè)計(jì)的較小。映射緩存的尺寸設(shè)計(jì)越小,命中率就越低,這會增加存儲設(shè)備的管理開銷,損害輸入/輸出(input/output,io)性能。
現(xiàn)有技術(shù)中,提出了一種提升設(shè)備io性能的io調(diào)度方法,該方法對多個io請求進(jìn)行判斷,識別可以并行執(zhí)行的io請求,進(jìn)而并行執(zhí)行這些io請求,從而提升io的整體性能。
但是,現(xiàn)有技術(shù)所提出的方法并未考慮映射緩存對io性能的影響,不能解決映射緩存命中率低的問題。
技術(shù)實(shí)現(xiàn)要素:
本申請?zhí)峁┮环N輸入輸出處理方法、裝置及終端,用于解決現(xiàn)有技術(shù)中映射緩存命中率低的問題。
本申請第一方面提供一種輸入輸出處理方法,該方法包括:主機(jī)首先確定至少一個io請求所對應(yīng)的邏輯地址,再根據(jù)該io請求所對應(yīng)的邏輯地址,確定模擬映射緩存信息,其中,所述模擬映射緩存信息與緩存控制器的映射緩存中所保存的信息保持一致,進(jìn)而,主機(jī)根據(jù)所述模擬映射緩存信息,確定所述io請求的請求類型,所述io請求的請求類型包括可命中io請求以及不可命中io請求,其中,所述可命中io請求為可在閃存控制器的映射緩存中命中的io請求,所述不可命中io請求為不能在閃存控制器的映射緩存中命中的io請求;進(jìn)而,主機(jī)再根據(jù)所述io請求的請求類型以及預(yù)設(shè)的調(diào)度優(yōu)先級進(jìn)行io請求調(diào)度,其中,在所述預(yù)設(shè)的調(diào)度優(yōu)先級中,所述可命中io請求的優(yōu)先級高于所述不可命中io請求的優(yōu)先級。
該方法中,通過獲取模擬映射緩存信息,使得在主機(jī)側(cè)可以實(shí)時(shí)獲知緩存控制器中映射緩存的實(shí)際情況,再基于該模擬映射緩存信息確定io請求的類型,即確定主機(jī)中的各io請求是否能夠在緩存控制器的映射緩存中命中,再按照先調(diào)度可命中io請求再調(diào)度不可命中io請求的優(yōu)先級順序來調(diào)度io請求,從而使得映射緩存中的映射信息在被覆蓋之前就被命中,從而極大提升映射緩存的命中率。
在一種可能的設(shè)計(jì)中,主機(jī)根據(jù)所述io請求所對應(yīng)的邏輯地址,確定模擬映射緩存信息的具體方式為:
根據(jù)所述io請求所對應(yīng)的邏輯地址,對閃存控制器中的映射緩存處理過程進(jìn)行模擬,確定模擬映射緩存信息。
在一種可能的設(shè)計(jì)中,主機(jī)根據(jù)所述模擬映射緩存信息,確定所述io請求的請求類型的具體方式為:
若所述模擬映射緩存信息中存在所述io請求對應(yīng)的邏輯地址,則確定所述io請求的請求類型為可命中io請求;或者,
若所述模擬映射緩存信息中不存在所述io請求對應(yīng)的邏輯地址,則確定所述io請求的請求類型為不可命中io請求。
在一種可能的設(shè)計(jì)中,主機(jī)根據(jù)所述io請求的請求類型進(jìn)行io請求調(diào)度的具體方法為:
對請求類型為可命中io請求的所述io請求進(jìn)行調(diào)度;
按照所述io請求對應(yīng)的邏輯地址,將請求類型為不可命中io請求的所述io請求劃分為至少一個io請求組;
按照所述至少一個io請求組對請求類型為不可命中io請求的所述io請求進(jìn)行調(diào)度。
在一種可能的設(shè)計(jì)中,主機(jī)按照所述至少一個io請求組對請求類型為不可命中io請求的所述io請求進(jìn)行調(diào)度的具體方法為:
將所述io請求組中的首個io請求,以及除所述首個io請求外的其余io請求所對應(yīng)的邏輯地址發(fā)送給閃存控制器,以使所述閃存控制器根據(jù)所述首個io請求外的其余io請求所對應(yīng)的邏輯地址確定地址映射信息,以及將所述地址映射信息寫入所述閃存控制器的映射緩存中;
接收所述緩存控制器的響應(yīng);
根據(jù)所述緩存控制器的響應(yīng),將所述io請求組中除所述首個io請求外的其余io請求發(fā)送給所述閃存控制器。
該方法中,主機(jī)僅將一個請求組中的第一個io請求本身以及其余io請求的邏輯地址發(fā)送給緩存控制器,在緩存控制器將其余io請求的地址映射信息預(yù)讀入映射緩存之后,主機(jī)再將其余io請求本身發(fā)送給緩存控制器,由于在這些io請求本身發(fā)送之前其地址映射信息已經(jīng)預(yù)讀入映射緩存中了,因此,這些io請求能夠在映射緩存中命中,從而降低了緩存控制器在進(jìn)行地址轉(zhuǎn)換時(shí)的管理開銷。
在一種可能的設(shè)計(jì)中,所述io請求組中的io請求所對應(yīng)的邏輯地址屬于同一預(yù)設(shè)地址段。
在一種可能的設(shè)計(jì)中,上述方法還包括:
判斷請求類型為不可命中io請求的所述io請求的調(diào)度等待時(shí)間是否達(dá)到預(yù)設(shè)時(shí)間,若是,則調(diào)度所述請求類型為不可命中io請求的所述io請求。
在一種可能的設(shè)計(jì)中,所述模擬映射緩存信息中包括邏輯地址信息。
本申請第二方面提供一種輸入輸出處理裝置,該輸入輸出處理裝置具有實(shí)現(xiàn)上述方法的功能。這些功能可以通過硬件實(shí)現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。所述硬件或軟件包括一個或多個與上述功能相對應(yīng)的模塊。
在一種可能的設(shè)計(jì)中,該輸入輸出處理裝置可以包括處理模塊,該處理模塊可以執(zhí)行上述方法中的相應(yīng)功能,例如:處理模塊,用于確定至少一個輸入輸出io請求所對應(yīng)的邏輯地址;以及,根據(jù)所述io請求所對應(yīng)的邏輯地址,確定模擬映射緩存信息,其中,所述模擬映射緩存信息與緩存控制器的映射緩存中所保存的信息保持一致;以及,根據(jù)所述模擬映射緩存信息,確定所述io請求的請求類型,所述io請求的請求類型包括可命中io請求以及不可命中io請求,其中,所述可命中io請求為可在閃存控制器的映射緩存中命中的io請求,所述不可命中io請求為不能在閃存控制器的映射緩存中命中的io請求;以及,根據(jù)所述io請求的請求類型以及預(yù)設(shè)的調(diào)度優(yōu)先級進(jìn)行io請求調(diào)度,其中,在所述預(yù)設(shè)的調(diào)度優(yōu)先級中,所述可命中io請求的優(yōu)先級高于所述不可命中io請求的優(yōu)先級。
本申請第三方面提供一種終端,該終端包括上述的輸入輸出處理裝置。
本申請第四方面提供一種終端,該終端包括存儲器以及處理器,所述存儲器用于存儲程序指令,所述處理器用于調(diào)用所述存儲器中的程序指令,實(shí)現(xiàn)上述第一方面及其各實(shí)施方式中的方法。
附圖說明
圖1為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?yīng)的系統(tǒng)架構(gòu)圖;
圖2為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?shí)施例一的流程示意圖;
圖3為主機(jī)中模擬映射緩存信息與緩存控制器中映射緩存信息的對比示例圖;
圖4為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?shí)施例二的流程示意圖;
圖5為不可命中io請求的分組示例圖;
圖6為主機(jī)執(zhí)行io請求調(diào)度的完整流程示意圖;
圖7為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?shí)施例三的流程示意圖;
圖8為待調(diào)度的io請求示例;
圖9為本申請所提供的輸入輸出處理方法的完整處理過程;
圖10為本申請?zhí)峁┑妮斎胼敵鎏幚硌b置實(shí)施例一的模塊結(jié)構(gòu)圖;
圖11為本申請?zhí)峁┑慕K端實(shí)施例一的實(shí)體框圖。
具體實(shí)施方式
圖1為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?yīng)的系統(tǒng)架構(gòu)圖,該系統(tǒng)架構(gòu)圖為智能手機(jī)等具有閃存存儲設(shè)備的嵌入式設(shè)備的內(nèi)部系統(tǒng)架構(gòu),如圖1所示,該方法對應(yīng)的系統(tǒng)架構(gòu)中包括主機(jī)、閃存控制器以及閃存芯片。其中,主機(jī)根據(jù)上層應(yīng)用的需求生成各種io請求,并由主機(jī)中的io調(diào)度器進(jìn)行io請求的調(diào)度。io調(diào)度器根據(jù)一定的規(guī)則將io請求發(fā)送到閃存控制器,io請求具體可以為讀請求或?qū)懻埱蟆iW存控制器負(fù)責(zé)管理閃存芯片,提供閃存芯片的地址映射和閃存芯片的訪問。閃存控制器中包括映射緩存,用于存儲邏輯地址到物理地址的映射信息。閃存控制器接收到主機(jī)的io調(diào)度器發(fā)送的io請求后,將io請求對應(yīng)地址映射信息讀入映射緩存,完成邏輯地址到物理地址轉(zhuǎn)換;而如果映射緩存中存在io請求對應(yīng)的邏輯地址,則可以直接通過映射緩存獲取io請求對應(yīng)的物理地址。然后,閃存控制器根據(jù)獲得的物理地址,進(jìn)行閃存芯片的訪問。
本申請從主機(jī)的角度進(jìn)行描述。
圖2為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?shí)施例一的流程示意圖,如圖2所示,該方法包括:
s201、確定至少一個io請求所對應(yīng)的邏輯地址。
主機(jī)根據(jù)上層應(yīng)用的需求可以生成多個io請求,例如上層應(yīng)用需要保存一幅圖片,主機(jī)會相應(yīng)生成一個寫請求。生成每個io請求時(shí)都需要確定該請求對應(yīng)的邏輯地址,即需要向哪個邏輯地址寫入內(nèi)容或從哪個邏輯地址讀取內(nèi)容。
s202、根據(jù)io請求所對應(yīng)的邏輯地址,確定模擬映射緩存信息。
其中,上述模擬映射緩存信息與緩存控制器的映射緩存中所保存的信息保持一致。
如前述圖1中所示,緩存控制器中包括映射緩存,用于存儲邏輯地址到物理地址的映射信息。即在現(xiàn)有技術(shù)中,由緩存控制器根據(jù)從主機(jī)接收到的io請求,利用特定的算法來填充映射緩存。但是緩存控制器僅是在收到io請求之后來確定映射緩存中應(yīng)該填入哪些映射信息,當(dāng)映射緩存尺寸較小時(shí),映射緩存中寫入的映射信息很容易會被覆蓋掉,當(dāng)再次出現(xiàn)對應(yīng)地址的io請求后,緩存控制器又需要再進(jìn)行一次處理來獲取地址映射信息,使得映射緩存的命中率過低。
本步驟中,根據(jù)io請求所對應(yīng)的邏輯地址,確定模擬映射緩存信息,即在主機(jī)側(cè)根據(jù)當(dāng)前的io請求對緩存控制器中的映射緩存進(jìn)行模擬,得到模擬映射緩存信息,該模擬映射緩存信息與緩存控制器中實(shí)際的映射緩存中的信息能夠保持一致,從而保證實(shí)時(shí)獲取緩存控制器中映射緩存的具體內(nèi)容,再結(jié)合如下步驟的操作來提升映射緩存的命中率。
s203、根據(jù)上述模擬映射緩存信息,確定io請求的請求類型。
其中,io請求的請求類型包括可命中io請求以及不可命中io請求,可命中io請求為可在閃存控制器的映射緩存中命中的io請求,不可命中io請求為不能在閃存控制器的映射緩存中命中的io請求。
經(jīng)過前述步驟s202獲得模擬映射緩存信息之后,即獲得了緩沖控制器中實(shí)際的映射緩存的內(nèi)容,基于此,可以確定io請求的請求類型是命中io請求或者不可命中io請求。舉例來說,某個io請求對應(yīng)的邏輯地址為0001,確定出的模擬映射緩存信息中存在0001這個邏輯地址,則說明該io請求可以在真正的映射緩存中命中,因此可以將此io請求歸為可命中io請求的類型。
s204、根據(jù)所述io請求的請求類型以及預(yù)設(shè)的調(diào)度優(yōu)先級進(jìn)行io請求調(diào)度。
其中,在上述預(yù)設(shè)的調(diào)度優(yōu)先級中,上述可命中io請求的優(yōu)先級高于上述不可命中io請求的優(yōu)先級。
當(dāng)確定出io請求的請求類型之后,即已經(jīng)獲知主機(jī)中的io請求是否能夠在緩存控制器中的映射緩存命中之后,就可以基于io請求的請求類型以及上述預(yù)設(shè)的調(diào)度優(yōu)先級進(jìn)行io請求調(diào)度。具體地,首先調(diào)度可命中io請求,這樣能夠保證這些io請求被發(fā)送到閃存控制器之后能夠命中映射緩存,當(dāng)這些可命中io請求被調(diào)度之后,再調(diào)度不可命中io請求,通過先調(diào)度可命中io請求,使得映射緩存中的映射信息在被覆蓋之前就被命中,從而極大提升映射緩存的命中率。
本實(shí)施例中,通過獲取模擬映射緩存信息,使得在主機(jī)側(cè)可以實(shí)時(shí)獲知緩存控制器中映射緩存的實(shí)際情況,再基于該模擬映射緩存信息確定io請求的類型,即確定主機(jī)中的各io請求是否能夠在緩存控制器的映射緩存中命中,再按照先調(diào)度可命中io請求再調(diào)度不可命中io請求的優(yōu)先級順序來調(diào)度io請求,從而使得映射緩存中的映射信息在被覆蓋之前就被命中,從而極大提升映射緩存的命中率。
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例涉及主機(jī)確定模擬映射緩存信息的一種具體實(shí)施方法,即,上述步驟s202的一種具體實(shí)施方式為:
根據(jù)上述io請求所對應(yīng)的邏輯地址,對閃存控制器中的映射緩存處理過程進(jìn)行模擬,確定模擬映射緩存信息。
具體地,閃存控制器中的映射緩存具有特定的大小,并且,閃存控制器在對映射緩存進(jìn)行管理時(shí),按照特定的管理算法來管理。當(dāng)主機(jī)模擬閃存控制器中的映射緩存處理過程時(shí),使用與映射緩存相同的管理算法,并且在主機(jī)中設(shè)置與映射緩存相同大小的緩存,從而保證主機(jī)所模擬出的模擬緩存信息與實(shí)際映射緩存中的信息完全相同。
可選地,主機(jī)可以在動態(tài)隨機(jī)存儲器(dynamicrandomaccessmemory,dram)中確定特定的一塊空間,并輸入io請求對應(yīng)的邏輯地址,進(jìn)而模擬閃存控制器中映射緩存的處理過程,從而得到模擬映射緩存內(nèi)容。
需要說明的是,本申請中所述的模擬映射緩存信息與緩存控制器的映射緩存中所保存的信息保持一致,并不是指模擬映射緩存信息與映射緩存中所保存的信息完全相同,而僅需要保證二者的邏輯地址完全相同即可。以下舉例說明。
圖3為主機(jī)中模擬映射緩存信息與緩存控制器中映射緩存信息的對比示例圖,如圖3所示,主機(jī)中的模擬映射緩存信息中僅包括邏輯地址,而緩存控制器的映射緩存存儲了邏輯地址與物理地址的映射關(guān)系。由于主機(jī)中的模擬映射緩存信息的作用是用于判斷io請求是否能在映射緩存中命中,而該判斷僅需要邏輯地址即可完成,因此,模擬映射緩存信息僅需要包括邏輯地址即可,即僅需要保證通過模擬所得到的模擬映射緩存信息中的邏輯地址與緩存控制器中映射緩存的邏輯地址完全一致即可。這樣的處理方式既能實(shí)現(xiàn)對映射緩存的準(zhǔn)確模擬,同時(shí)還能夠減少主機(jī)處理的復(fù)雜度。
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例涉及主機(jī)確定io請求的請求類型的具體方法,即,上述步驟s203的一種具體實(shí)施方式為:
若上述模擬映射緩存信息中存在io請求對應(yīng)的邏輯地址,則確定io請求的請求類型為可命中io請求;或者,
若上述模擬映射緩存信息中不存在io請求對應(yīng)的邏輯地址,則確定io請求的請求類型為不可命中io請求。
具體地,當(dāng)?shù)玫侥M映射緩存信息之后,即相當(dāng)于主機(jī)獲知了緩存控制器中映射緩存的內(nèi)容,進(jìn)而,對于主機(jī)中的每一個io請求,主機(jī)判斷該io請求所對應(yīng)的邏輯地址是否在模擬映射緩存信息中,如果在,則說明緩存控制器中的映射緩存能夠命中該io請求,則將該io請求歸為可命中io請求這一類型;如果不在,則說明緩存控制器中的映射緩存不能命中該io請求,則將該io請求歸為不可命中io請求這一類型。
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例涉及主機(jī)根據(jù)io請求類型進(jìn)行io請求調(diào)度的具體方法,即,圖4為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?shí)施例二的流程示意圖,如圖4所示,上述步驟s204的一種具體實(shí)施過程包括:
s401、對請求類型為可命中io請求的io請求進(jìn)行調(diào)度。
需要說明的是,本實(shí)施例中,步驟s401必須在s403之前執(zhí)行,即,可命中io請求的優(yōu)先級高于不可命中io請求,必須先調(diào)度可命中io請求,這樣才能夠保證閃存控制器中映射緩存的內(nèi)容被覆蓋之前被命中,以提升映射緩存的命中率。
可選地,在對請求類型為可命中io請求的io請求進(jìn)行調(diào)度時(shí),可以預(yù)先將這些io請求置于一個命中隊(duì)列中,具體可以將這些io請求按照邏輯地址由小到達(dá)的順序排列在命中隊(duì)列中,并將命中隊(duì)列中的io請求按序逐個發(fā)送到緩存控制器中。
s402、按照io請求對應(yīng)的邏輯地址,將請求類型為不可命中io請求的io請求劃分為至少一個io請求組。
圖5為不可命中io請求的分組示例圖,如圖5所示,共有6個不可命中io請求,io請求序號分別為1、4、2、3、6、7,其中,io請求1和4的邏輯地址屬于100-199這個范圍內(nèi),io請求2、3、6的邏輯地址屬于300-399這個范圍,io請求7的邏輯地址屬于400-499這個范圍。將io請求1和4劃分至io請求組1,將io請求2、3、6劃分至io請求組2,將io請求7劃分至io請求組3。
s403、按照上述至少一個io請求組對請求類型為不可命中io請求的io請求進(jìn)行調(diào)度。
對于不可命中io請求來說,當(dāng)將這些io請求發(fā)送到閃存控制器之后,閃存控制器需要根據(jù)這些io請求的邏輯地址來獲取對應(yīng)的物理地址,并將邏輯地址與物理地址的映射信息寫入映射緩存,如果對每個io請求都執(zhí)行這個過程,會增大緩存控制器的開銷。而將io請求分組之后,每個io請求組中的io請求的邏輯地址都比較接近,即都屬于同一預(yù)設(shè)地址段,這些io請求的地址映射信息位于閃存控制器中的同一映射頁,如果可以將每個io請求組中的io請求的邏輯地址一次發(fā)送給閃存控制器,則閃存控制器僅需要一次操作就可以獲取一個io請求組中的所有io請求的地址映射信息,這樣就可以大大降低緩存控制器的開銷。
可選地,在對請求類型為不可命中io請求的io請求進(jìn)行調(diào)度時(shí),可以預(yù)先將這些io請求置于一個未命中隊(duì)列中,該未命中隊(duì)列中的io請求按照io請求組進(jìn)行排列。
圖6為主機(jī)執(zhí)行io請求調(diào)度的完整流程示意圖,如圖6所示,該過程包括:
s601、判斷命中隊(duì)列是否為空,若否,則執(zhí)行s602,若是,則執(zhí)行s603。
s602、對命中隊(duì)列中的io請求進(jìn)行調(diào)度。
具體過程可以參見上述步驟s401。
s603、判斷未命中隊(duì)列是否為空,若否,則執(zhí)行s604,若是,則結(jié)束。
s604、對未命中隊(duì)列中的io請求進(jìn)行調(diào)度。
具體過程可以參見上述步驟s402-s403。
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例涉及主機(jī)按照io請求組對請求類型為不可命中io請求的io請求進(jìn)行調(diào)度的具體方法,即,圖7為本申請?zhí)峁┑妮斎胼敵鎏幚矸椒▽?shí)施例三的流程示意圖,如圖7所示,上述步驟s403的一種具體實(shí)施過程為:
s701、將上述io請求組中的首個io請求,以及除該首個io請求外的其余io請求所對應(yīng)的邏輯地址發(fā)送給閃存控制器,以使所述閃存控制器根據(jù)所述首個io請求外的其余io請求所對應(yīng)的邏輯地址確定地址映射信息,以及將所述地址映射信息寫入所述閃存控制器的映射緩存中。
以圖5所示的io請求組為例,假設(shè)當(dāng)前調(diào)度到io請求2,即調(diào)度到io請求組2的第一個io請求,則主機(jī)會將io請求2本身,以及同一組內(nèi)的io請求3和6的邏輯地址發(fā)送給閃存控制器。閃存控制器接收到上述兩個信息之后,會處理io請求1,同時(shí),會預(yù)讀取io請求3和6的邏輯地址所對應(yīng)的物理地址,由于io請求3和io請求6屬于同一io請求組,即二者的邏輯地址屬于同一映射頁,因此閃存控制器可以一次性讀取到二者的邏輯地址對應(yīng)的物理地址,從而極大提升了閃存控制器的處理效率。進(jìn)而,閃存控制器將io請求3和6的邏輯地址和物理地址的對應(yīng)關(guān)系,即地址映射信息,寫入閃存控制器的映射緩存中,即將io請求3和6的地址映射信息預(yù)讀入映射緩存中。
s702、接收緩存控制器的響應(yīng)。
當(dāng)緩存控制器執(zhí)行完上述過程之后,會向主機(jī)發(fā)送處理響應(yīng),主機(jī)接收該響應(yīng)。
s703、根據(jù)緩存控制器的響應(yīng),將上述io請求組中除上述首個io請求外的其余io請求發(fā)送給閃存控制器。
即,在步驟s701中,主機(jī)僅將一個請求組中的第一個io請求本身以及其余io請求的邏輯地址發(fā)送給緩存控制器,在緩存控制器將其余io請求的地址映射信息預(yù)讀入映射緩存之后,主機(jī)再將其余io請求本身發(fā)送給緩存控制器,由于在這些io請求本身發(fā)送之前其地址映射信息已經(jīng)預(yù)讀入映射緩存中了,因此,這些io請求能夠在映射緩存中命中,從而降低了緩存控制器在進(jìn)行地址轉(zhuǎn)換時(shí)的管理開銷。
另一實(shí)施例中,上述方法還包括:
判斷請求類型為不可命中io請求的io請求的調(diào)度等待時(shí)間是否達(dá)到預(yù)設(shè)時(shí)間,若是,則調(diào)度請求類型為不可命中io請求的io請求。
如前述實(shí)施例所述,主機(jī)根據(jù)模擬映射緩存信息確定出io請求的請求類型之后,按照可命中io請求優(yōu)先的原則來調(diào)度io請求,即,可命中io請求會被優(yōu)先調(diào)度,而不可命中io請求就需要等待,如果某個不可命中io請求一直不被調(diào)度,則可能出現(xiàn)該io請求異常的問題,因此,本實(shí)施例中,對io請求的調(diào)度等待時(shí)間進(jìn)行監(jiān)控,如果某個io請求的調(diào)度等待時(shí)間超過預(yù)設(shè)時(shí)間,則立即調(diào)度該io請求,從而避免出現(xiàn)io請求異常的問題。
以下結(jié)合圖8的io請求實(shí)例來說明本申請所提供的輸入輸出處理方法的完整處理過程,圖8為待調(diào)度的io請求示例,其中,主機(jī)根據(jù)模擬映射緩存信息確定出io請求的請求類型之后,分別將可命中io請求以及不可命中io請求置于命中隊(duì)列以及未命中隊(duì)列中,并且,未命中隊(duì)列中的io請求按照io請求組的順序進(jìn)行排列。圖9為本申請所提供的輸入輸出處理方法的完整處理過程,如圖9所示,圖8的示例對應(yīng)的處理過程為:
s901、主機(jī)根據(jù)模擬映射緩存信息確定io請求的請求類型。
s902、主機(jī)將屬于可命中io請求類型的io請求5、8、9置于命中隊(duì)列。
s903、主機(jī)調(diào)度io請求5、8、9。
主機(jī)判斷命中隊(duì)列不為空,則按順序調(diào)度命中隊(duì)列中的io請求5、8、9。
s904、主機(jī)將屬于不可命中io請求類型的io請求1、4、2、3、6、7進(jìn)行分組,并置于未命中隊(duì)列。
其中,io請求1、4屬于io請求組1,io請求2、3、6屬于io請求組2,io請求7屬于io請求組3。
s905、主機(jī)向閃存控制器發(fā)送io請求1本身以及io請求4對應(yīng)的邏輯地址。
s906、閃存控制器處理io請求1,同時(shí)將io請求4的地址映射信息預(yù)讀入映射緩存。
s907、閃存控制器向主機(jī)發(fā)送響應(yīng)。
s908、主機(jī)向閃存控制器發(fā)送io請求4本身,請求4在映射緩存中命中。
s909、重復(fù)執(zhí)行步驟s905-s908,進(jìn)行io請求組2以及io請求組3的調(diào)度。
其中,上述步驟中主機(jī)的處理過程具體可以由主機(jī)中的io調(diào)度器來執(zhí)行。
圖10為本申請?zhí)峁┑妮斎胼敵鎏幚硌b置實(shí)施例一的模塊結(jié)構(gòu)圖,如圖10所示,輸入輸出處理裝置10包括處理模塊101。
其中,處理模塊101用于確定至少一個輸入輸出io請求所對應(yīng)的邏輯地址;以及,
根據(jù)io請求所對應(yīng)的邏輯地址,確定模擬映射緩存信息,其中,該模擬映射緩存信息與緩存控制器的映射緩存中所保存的信息保持一致;以及,
根據(jù)上述模擬映射緩存信息,確定io請求的請求類型,io請求的請求類型包括可命中io請求以及不可命中io請求,其中,可命中io請求為可在閃存控制器的映射緩存中命中的io請求,不可命中io請求為不能在閃存控制器的映射緩存中命中的io請求;以及,
根據(jù)io請求的請求類型以及預(yù)設(shè)的調(diào)度優(yōu)先級進(jìn)行io請求調(diào)度,其中,在預(yù)設(shè)的調(diào)度優(yōu)先級中,可命中io請求的優(yōu)先級高于不可命中io請求的優(yōu)先級。
進(jìn)一步地,處理模塊101具體用于:
根據(jù)io請求所對應(yīng)的邏輯地址,對閃存控制器中的映射緩存處理過程進(jìn)行模擬,確定模擬映射緩存信息。
進(jìn)一步地,處理模塊101具體還用于:
在上述模擬映射緩存信息中存在io請求對應(yīng)的邏輯地址時(shí),確定io請求的請求類型為可命中io請求;以及,
在上述模擬映射緩存信息中不存在io請求對應(yīng)的邏輯地址時(shí),確定io請的請求類型為不可命中io請求。
進(jìn)一步地,處理模塊101具體還用于:
對請求類型為可命中io請求的io請求進(jìn)行調(diào)度;以及,
按照io請求對應(yīng)的邏輯地址,將請求類型為不可命中io請求的io請求劃分為至少一個io請求組;以及,
按照上述至少一個io請求組對請求類型為不可命中io請求的io請求進(jìn)行調(diào)度。
進(jìn)一步地,處理模塊101具體還用于:
將所述io請求組中的首個io請求,以及除該首個io請求外的其余io請求所對應(yīng)的邏輯地址發(fā)送給閃存控制器,以使閃存控制器根據(jù)該首個io請求外的其余io請求所對應(yīng)的邏輯地址確定地址映射信息,以及將該地址映射信息寫入閃存控制器的映射緩存中;以及,
接收緩存控制器的響應(yīng);以及,
根據(jù)緩存控制器的響應(yīng),將io請求組中除上述首個io請求外的其余io請求發(fā)送給閃存控制器。
另一實(shí)施例中,上述io請求組中的io請求所對應(yīng)的邏輯地址屬于同一預(yù)設(shè)地址段。
進(jìn)一步地,處理模塊101具體還用于:
判斷請求類型為不可命中io請求的io請求的調(diào)度等待時(shí)間是否達(dá)到預(yù)設(shè)時(shí)間,若是,則調(diào)度該請求類型為不可命中io請求的所述io請求。
另一實(shí)施例中,上述模擬映射緩存信息中包括邏輯地址信息。
本申請還提供一種終端,包括了前述各實(shí)施例所述的輸入輸出處理裝置。
圖11為本申請?zhí)峁┑囊环N終端實(shí)施例一的實(shí)體框圖,如圖11所示,該終端包括:存儲器1101和處理器1102。
存儲器1101用于存儲程序指令,處理器1102用于調(diào)用存儲器1101中的程序指令,實(shí)現(xiàn)上述各方法實(shí)施例中的功能。