欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種包括讀寫緩存的存儲(chǔ)設(shè)備及緩存實(shí)現(xiàn)方法

文檔序號(hào):6613667閱讀:206來(lái)源:國(guó)知局
專利名稱:一種包括讀寫緩存的存儲(chǔ)設(shè)備及緩存實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及緩存技術(shù),特別涉及一種包括讀寫緩存的存儲(chǔ)設(shè)備、以及一 種存儲(chǔ)設(shè)備中的讀寫緩存實(shí)現(xiàn)方法。
背景技術(shù)
在存儲(chǔ)設(shè)備中,緩存是必不可少的存儲(chǔ)介質(zhì)(通常為一塊或多塊內(nèi)存), 能夠加速存儲(chǔ)設(shè)備中的主處理器對(duì)磁盤組的訪問(wèn)速度,從而對(duì)于存儲(chǔ)設(shè)備總 體性能的提升有非常大的幫助。需要說(shuō)明的是,此處提及的存儲(chǔ)設(shè)備中的緩存,物理位置和介質(zhì)類型不同于計(jì)算機(jī)系統(tǒng)CPU內(nèi)部自帶的緩存。根據(jù)訪問(wèn)的類型,緩存可分為讀緩存和寫緩存兩種。其中,對(duì)于存儲(chǔ)設(shè)備來(lái)說(shuō),寫緩存中的數(shù)據(jù)不能丟失,以避免用戶數(shù)據(jù)的丟失;而讀緩存中的 數(shù)據(jù)丟失則不會(huì)丟失用戶數(shù)據(jù)。因此,在存儲(chǔ)設(shè)備中,必須考慮在系統(tǒng)突然 斷電的情況下,對(duì)寫緩存數(shù)據(jù)所在的內(nèi)存進(jìn)行持續(xù)供電。圖1為現(xiàn)有一種寫緩存供電方案的示意圖。如圖l所示,存儲(chǔ)設(shè)備中包 括主處理器、讀緩存和寫緩存、以及磁盤組。其中,讀緩存用于緩存主處理器從磁盤組讀取的數(shù)據(jù);寫緩存用于緩存 主處理器待寫入到磁盤組的數(shù)據(jù)。主處理器中承載了應(yīng)用程序和驅(qū)動(dòng)程序、用于實(shí)現(xiàn)對(duì)讀緩存進(jìn)行讀訪問(wèn) 控制的讀緩存程序、用于實(shí)現(xiàn)對(duì)寫緩存進(jìn)行寫訪問(wèn)控制的寫緩存程序、用于 對(duì)磁盤組進(jìn)行讀寫訪問(wèn)控制的讀寫處理程序;讀緩存和寫緩存均掛接在主處 理器下,由主處理器統(tǒng)一管理,即由主處理器對(duì)讀緩存和寫緩存進(jìn)行訪問(wèn)控 制,磁盤組也掛接在主處理器下,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。
如圖1所示的存儲(chǔ)設(shè)備外接一 UPS,由外接的UPS對(duì)整個(gè)系統(tǒng)供電。 該方案實(shí)現(xiàn)簡(jiǎn)單,但是在對(duì)寫緩存的持續(xù)供電的同時(shí),對(duì)讀緩存和系統(tǒng)其他 部分也進(jìn)行了持續(xù)供電,而讀緩存和系統(tǒng)其他部分并不需要持續(xù)供電,從而 造成了資源浪費(fèi)。而且,UPS本身的成本很高,從而使得實(shí)現(xiàn)該方案需要較 高的硬件成本。圖2為現(xiàn)有另一種寫緩存供電方案的示意圖。如圖2所示,存儲(chǔ)設(shè)備中 包括主處理器、輸入/輸出(I/O)處理器、讀緩存、寫緩存、以及磁盤組。其中,讀緩存用于緩存主處理器從磁盤組讀取的數(shù)據(jù);寫緩存用于緩存 主處理器待寫入到磁盤組的數(shù)據(jù)。I/O處理器掛接在主處理器下;主處理器中承載了應(yīng)用程序和驅(qū)動(dòng)程序; I/O處理器中承載了用于實(shí)現(xiàn)對(duì)讀緩存進(jìn)行讀訪問(wèn)控制的讀緩存程序、用 于實(shí)現(xiàn)對(duì)寫緩存進(jìn)行寫訪問(wèn)控制的寫緩存程序、以及用于對(duì)磁盤組進(jìn)行讀寫 訪問(wèn)控制的讀寫處理程序;讀緩存和寫緩存均掛接在I/O處理器下,由I/O 處理器統(tǒng)一管理,即由1/0處理器在主處理器的控制下對(duì)讀緩存和寫緩存進(jìn) 行訪問(wèn)控制,磁盤組也掛接在I/0處理器下,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。如圖2所示的存儲(chǔ)設(shè)備中,與1/0處理器配套的電池在為1/0處理器供 電的同時(shí),也為讀緩存和寫緩存供電。相比如圖1所示的第一種方案,在如圖2所示的方案中利用電池實(shí)現(xiàn)對(duì) 寫緩存的供電,降低了存儲(chǔ)設(shè)備的實(shí)現(xiàn)成本,但卻存在以下問(wèn)題1 )讀緩存和寫緩存均通過(guò)I/O處理器掛接在主處理器下,即遠(yuǎn)離了主 處理器,對(duì)于讀寫命中后的處理效率比如圖l所示的第一種方案要低;2) 通常情況下,1/0處理器能夠支持的內(nèi)存空間(即由電池持續(xù)供電的 內(nèi)存空間)大小比較有限,遠(yuǎn)遠(yuǎn)小于主處理器所能夠支持的內(nèi)存空間,因而 限制了掛接在1/0處理器下的讀緩存和寫緩存的容量;而讀緩存和寫緩存的 讀寫效率高低與其容量有直接的關(guān)系。3) 該方案中也是對(duì)讀緩存和寫緩存同時(shí)持續(xù)供電,而讀緩存并不需要 持續(xù)供電,從而造成了資源浪費(fèi)。 可見(jiàn),上述如圖2所示的方案中雖然降低了成本,但由于讀緩存占用了 由電池持續(xù)供電的部分內(nèi)存空間,因而使得作為寫緩存的由電池持續(xù)供電的 內(nèi)存空間較小,因而使得對(duì)讀寫緩存的讀寫處理效率較低。發(fā)明內(nèi)容有鑒于此,本發(fā)明提供了一種包括讀寫緩存的存儲(chǔ)設(shè)備、以及一種存儲(chǔ) 設(shè)備中的讀寫緩存實(shí)現(xiàn)方法,能夠在以較低成本實(shí)現(xiàn)為寫緩存持續(xù)供電的前 提下,提高對(duì)讀寫緩存的讀寫處理效率。本發(fā)明提供的一種包括讀寫緩存的存儲(chǔ)設(shè)備,包括主處理器、輸入/ 輸出I/0處理器、電池、讀緩存、寫緩存和磁盤組,所述讀緩存和所述I/O處理器掛接在所述主處理器下,所述寫緩存和所 述》茲盤組掛4妄在所述I/O處理器下;所述主處理器,用于對(duì)所述讀緩存進(jìn)行訪問(wèn)控制;所述I/O處理器,用于在所述主處理器的控制下對(duì)所述寫緩存進(jìn)行訪問(wèn) 控制;所述電池為所述寫緩存供電。還包括由所述主處理器執(zhí)行的應(yīng)用程序、驅(qū)動(dòng)程序和讀緩存程序,其中,所述應(yīng)用程序,用于向所述驅(qū)動(dòng)程序下發(fā)讀請(qǐng)求;所述驅(qū)動(dòng)程序,用于根據(jù)接收到的讀請(qǐng)求,驅(qū)動(dòng)所述讀緩存程序從所述 讀緩存中讀取該讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);所述讀緩存程序,用于從讀緩存中讀取讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),并判斷對(duì)讀 緩存是否全部讀命中,如果是,則向所述應(yīng)用程序返回全部讀命中的數(shù)據(jù);否則,將表示對(duì)讀緩存未命中部分的讀請(qǐng)求下發(fā)到所述i/o處理器,并向所述應(yīng)用程序返回讀命中的數(shù)據(jù)。所述主處理器中進(jìn)一步包括緩沖器buffer,用于存儲(chǔ)返回給所述應(yīng)用 程序的讀命中的數(shù)據(jù);所述應(yīng)用程序下發(fā)的讀請(qǐng)求中包括buffer指針,所述讀緩存程序利用所 述buffer指針將返回給所述應(yīng)用程序的讀命中的數(shù)據(jù)返回到所述buffer。 還包括由所述I/O處理器執(zhí)行的讀寫處理程序和寫緩存程序,其中, 所述寫緩存程序,用于接收來(lái)自讀緩存程序?qū)ψx緩存未命中部分的讀請(qǐng)求并讀取所述寫緩存,判斷對(duì)寫緩存是否全部讀命中,如果是,則向所述應(yīng)用程序返回讀命中的數(shù)據(jù),否則,將表示對(duì)寫緩存讀取未命中部分的讀請(qǐng)求下發(fā)到讀寫處理程序;所述讀寫處理程序,用于從所述磁盤中讀取接收到的對(duì)寫緩存未命中部分的讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù),并向所述應(yīng)用程序返回讀命中的數(shù)據(jù)。所述主處理器中進(jìn)一步包括buffer,用于存儲(chǔ)返回給所述應(yīng)用程序的數(shù)據(jù);所述讀緩存程序在未全部讀命中時(shí),重新構(gòu)建并下發(fā)的讀請(qǐng)求中包括所 述buffer的指針,所述寫緩存程序利用所述buffer指針將讀命中的數(shù)據(jù)直接 返回到所述buffer;和/或,所述寫緩存程序在判斷出未全部讀命中時(shí),重新構(gòu)建并下發(fā)的 讀請(qǐng)求中包括所述buffer指針,所述讀寫處理程序利用所述buffer指針將返 回的讀命中的數(shù)據(jù)直接返回到所述buffer。還包括由所述主處理器執(zhí)行的應(yīng)用程序、驅(qū)動(dòng)程序、讀緩存程序,其中,所述應(yīng)用程序,用于向所述驅(qū)動(dòng)程序下發(fā)寫請(qǐng)求;所述驅(qū)動(dòng)程序,用于將所述應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到所述讀緩存程序;所述讀緩存程序,用于根據(jù)所述寫請(qǐng)求讀取所述的讀緩存,并判斷對(duì)讀 緩存是否全部未命中,如果全部未命中,則將所述應(yīng)用程序下發(fā)的寫請(qǐng)求下 發(fā)給所述I/0處理器;否則,申請(qǐng)內(nèi)存空間,將命中部分對(duì)應(yīng)的寫請(qǐng)求數(shù)據(jù) 復(fù)制到申請(qǐng)到的內(nèi)存空間中,掛起后續(xù)對(duì)該讀緩存中命中部分的訪問(wèn),并將 所述應(yīng)用程序下發(fā)的寫請(qǐng)水下發(fā)到所述I/0處理器;在接收到來(lái)自1/0處理 器的表示寫操作成功的響應(yīng)信息后,將申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù)據(jù)替 換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù),取消掛起;在接收到來(lái)自1/0處理器的表示寫 操作失敗的響應(yīng)信息后,將申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù)據(jù)丟棄,取消掛起;所述I/O處理器根據(jù)接收到的寫請(qǐng)求,向所述寫緩存或磁盤組中寫入對(duì) 應(yīng)的寫請(qǐng)求數(shù)據(jù),并在寫操作成功后返回表示寫操作成功的響應(yīng)信息,在寫 搡作失敗后返回表示寫操作失敗的響應(yīng)信息。所述讀緩存程序在將申請(qǐng)到的內(nèi)存空間中的數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位 置的數(shù)據(jù)、或?qū)⑸暾?qǐng)到的內(nèi)存空間中的數(shù)據(jù)丟棄之后,進(jìn)一步釋放所述申請(qǐng) 的內(nèi)存空間。所述申請(qǐng)的內(nèi)存空間為所述主處理器中的臨時(shí)buffer 。本發(fā)明提供的 一種緩存儲(chǔ)設(shè)備中的緩存實(shí)現(xiàn)方法,將讀緩存和輸入/輸出1/0處理器掛接在主處理器下,將寫緩存和磁盤組掛接在所述i/o處理器下,由電池為所述寫緩存供電,該方法包括所述主處理器對(duì)所述讀緩存進(jìn)行訪問(wèn)控制,且所述I/O處理器在所述主 處理器的控制下對(duì)所述寫緩存進(jìn)行訪問(wèn)控制。所述進(jìn)行訪問(wèn)控制包括對(duì)讀請(qǐng)求進(jìn)行訪問(wèn)控制;所述對(duì)讀請(qǐng)求進(jìn)行訪問(wèn)控制包括主處理器中的讀緩存程序從讀緩存中讀取應(yīng)用程序下發(fā)的讀請(qǐng)求所對(duì) 應(yīng)的數(shù)據(jù),并判斷對(duì)讀緩存是否全部讀命中,如果是,則讀緩存程序向應(yīng)用 程序返回全部命中的數(shù)據(jù),并結(jié)束流程;否則,讀緩存程序?qū)⒆x命中的部分?jǐn)?shù)據(jù)向應(yīng)用程序返回,并重新構(gòu)建表 示對(duì)讀緩存未命中部分的讀請(qǐng)求下發(fā)到1/0處理器。所述主處理器中包括緩沖器buffer,所述應(yīng)用程序下發(fā)的讀請(qǐng)求中包括 buffer指針;所述讀緩存程序向應(yīng)用程序返回讀命中的數(shù)據(jù)包括讀緩存程序利用所 述buffer指針直接將讀命中的數(shù)據(jù)返回到所述buffer中。在重新構(gòu)建表示對(duì)讀緩存未命中部分的讀請(qǐng)求下發(fā)到1/0處理器之后, 所述對(duì)讀請(qǐng)求進(jìn)行訪問(wèn)控制進(jìn)一步包括I/O處理器中的寫緩存程序接收來(lái)自讀緩存程序?qū)ψx緩存未命中部分的 讀請(qǐng)求并讀取所述寫緩存并讀取寫緩存,判斷對(duì)寫緩存是否全部讀命中,如果是,則向應(yīng)用程序返回讀命中的數(shù)據(jù);否則,將表示對(duì)寫緩存讀取未命中部分的讀請(qǐng)求下發(fā)到讀寫處理程序由 讀寫處理程序從磁盤中讀取接收到的對(duì)寫緩存未命中部分的讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù),并向所述應(yīng)用程序返回讀命中的數(shù)據(jù),然后結(jié)束流程。所述主處理器中包括緩沖器buffer;所述讀緩存程序重新構(gòu)建并下發(fā)的讀請(qǐng)求中包括buffer指針,所述寫緩 存程序向應(yīng)用程序返回?cái)?shù)據(jù)包括寫緩存程序利用所述buffer指針將讀命中 數(shù)據(jù)直接返回到所述buffer;和/或,所述寫緩存程序重新構(gòu)建并下發(fā)的讀請(qǐng)求中包括buffer指針, 所述讀寫處理程序向應(yīng)用程序返回?cái)?shù)據(jù)包括讀寫處理程序利用所述buffer 指針將命中的數(shù)據(jù)直接返回到所述buffer。所述進(jìn)行訪問(wèn)控制包括對(duì)寫請(qǐng)求進(jìn)行訪問(wèn)控制;所述對(duì)寫請(qǐng)求進(jìn)行訪問(wèn)控制包括主處理器中的讀緩存程序接收應(yīng)用程序下發(fā)的寫請(qǐng)求,根據(jù)所述寫請(qǐng)求 讀取所述的讀緩存;在對(duì)讀緩存全部未命中后,主處理器的讀緩存程序?qū)?yīng)用程序下發(fā)的寫 請(qǐng)求下發(fā)給所述I/0處理器;在對(duì)讀緩存完全命中或部分命中后,主處理器 的讀緩存程序申請(qǐng)內(nèi)存空間,將命中部分對(duì)應(yīng)的寫請(qǐng)求數(shù)據(jù)復(fù)制到申請(qǐng)到的 內(nèi)存空間中,并對(duì)讀緩存命中部分設(shè)置標(biāo)記,掛起后續(xù)對(duì)命中部分的訪問(wèn), 并將應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到所述1/0處理器;I/O處理器將對(duì)應(yīng)寫請(qǐng)求數(shù)據(jù)寫入寫緩存、或者磁盤組;在I/O處理器寫操作成功后,讀緩存程序?qū)⑸暾?qǐng)到的內(nèi)存空間中的寫請(qǐng) 求數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù),并取消桂起;在I/0處理器寫操作失 敗后,將申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù)據(jù)丟棄,并取消掛起。所述將申請(qǐng)到的內(nèi)存空間中的數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù)、或?qū)?br> 申請(qǐng)到的內(nèi)存空間中的數(shù)據(jù)丟棄之后,該方法進(jìn)一步包括釋放所述申請(qǐng)的 內(nèi)存空間。
所述申請(qǐng)內(nèi)存空間包括申請(qǐng)主處理器中的臨時(shí)buffer。 由上述技術(shù)方案可見(jiàn),本發(fā)明將讀緩存和寫緩存分離,即由不同的處理 器分別對(duì)讀緩存和寫緩存進(jìn)行訪問(wèn)控制,即讀緩存直接掛接在主處理器下, 從而能夠提高主處理器對(duì)讀緩存的處理效率,且由于主處理器能夠支持較大 的內(nèi)存空間,從而保證了讀緩存能夠具有較大容量,進(jìn)而由于讀緩存具有較 大容量而能夠進(jìn)一步提高主處理器對(duì)讀緩存的處理效率;寫緩存掛接在I/O 處理器下,由1/0處理器的配套電池供電電路實(shí)現(xiàn)對(duì)寫緩存的持續(xù)供電,且 寫緩存不需要與讀緩存分享1/0處理器所能夠支持的有限內(nèi)存空間,因而由 于寫緩存容量的提高而能夠提高主處理器對(duì)寫緩存的處理效率。
而且,由電池為寫緩存持續(xù)供電,從而保證了對(duì)寫緩存持續(xù)供電的實(shí)現(xiàn) 成本較低,電池并不為不需要持續(xù)供電的讀緩存和系統(tǒng)其他部分供電,因而 還節(jié)省了供電資源。


圖1為現(xiàn)有一種寫緩存供電方案的示意圖。
圖2為現(xiàn)有另一種寫緩存供電方案的示意圖。
圖3為本發(fā)明實(shí)施例中存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。
圖4為本發(fā)明中讀寫緩存實(shí)現(xiàn)方法對(duì)讀請(qǐng)求的處理流程示意圖。
圖5為本發(fā)明中讀寫緩存實(shí)現(xiàn)方法對(duì)寫請(qǐng)求的處理流程示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
圖3為本發(fā)明實(shí)施例中存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。如圖3所示,本實(shí)施例 所提供的包括讀緩存和寫緩存的存儲(chǔ)設(shè)備中,包括主處理器、1/0處理器、
電池、讀緩存、寫緩存和磁盤組。
與如圖2所示現(xiàn)有方案的不同之處在于,讀緩存和I/0處理器掛接在主
處理器下,寫緩存和磁盤組掛接在所述i/o處理器下,即讀緩存和寫緩存分
別掛接在不同的處理器下。
這樣,主處理器,用于對(duì)讀緩存進(jìn)行訪問(wèn)控制。 I/0處理器,用于在主處理器的控制下對(duì)寫緩存進(jìn)行訪問(wèn)控制。 電池為寫緩存持續(xù)供電(例如通過(guò)電池供電電路實(shí)現(xiàn)持續(xù)供電)。也就 是說(shuō),在存儲(chǔ)設(shè)備的外接電源斷開(kāi)時(shí),I/O處理器所配套的電池可通過(guò)供電 電路給寫緩存持續(xù)供電,保證寫緩存能夠在存儲(chǔ)設(shè)備外接電源斷開(kāi)的 一段時(shí) 間內(nèi)不丟失數(shù)據(jù),在存儲(chǔ)設(shè)備的外接電源恢復(fù)以使得存儲(chǔ)設(shè)備重新啟動(dòng)后, 寫緩存中的數(shù)據(jù)仍然有效。
可見(jiàn),上述存儲(chǔ)設(shè)備中,將讀緩存和寫緩存分離,即由不同的處理器分 別對(duì)讀緩存和寫緩存進(jìn)行訪問(wèn)控制,讀緩存靠近主處理器,即讀緩存直接掛 接在主處理器下,從而能夠提高主處理器對(duì)讀緩存的處理效率,且由于主處 理器能夠支持較大的內(nèi)存空間,從而保證了讀緩存能夠具有較大容量,進(jìn)而
由于讀緩存具有較大容量而能夠進(jìn)一步提高主處理器對(duì)讀緩存的處理效率; 寫緩存掛接在I/0處理器下,由1/0處理器的配套電池供電電路實(shí)現(xiàn)對(duì)寫緩 存的持續(xù)供電,且寫緩存不需要與讀緩存分享1/0處理器所能夠支持的有限
內(nèi)容空間,因而由于寫緩存容量的提高而能夠提高主處理器對(duì)寫緩存的處理效率。
而且,由電池為寫緩存持續(xù)供電,從而保證了對(duì)寫緩存持續(xù)供電的實(shí)現(xiàn) 成本較低,電池并不為不需要持續(xù)供電的讀緩存和系統(tǒng)其他部分供電,因而 還節(jié)省了供電資源,能夠在最低硬件成本的情況下最大化發(fā)揮緩存的性能優(yōu)勢(shì)。
本發(fā)明實(shí)施例中,考慮到讀寫緩存間的關(guān)聯(lián),除了將讀緩存與寫緩存相 分離之外,還進(jìn)一步提供了讀請(qǐng)求和寫請(qǐng)求過(guò)程中如何處理讀緩存寫緩存關(guān) 耳關(guān)的處理方式。
對(duì)于讀請(qǐng)求的處理過(guò)程,上述關(guān)聯(lián)主要體現(xiàn)在如果讀請(qǐng)求所對(duì)應(yīng)的數(shù) 據(jù)已緩存在寫緩存中,則可以直接從寫緩存讀取,而無(wú)需從磁盤組中讀取, 從而提高讀效率。
具體來(lái)說(shuō),本實(shí)施例中存儲(chǔ)設(shè)備的主處理器包括應(yīng)用程序、驅(qū)動(dòng)程序
和讀緩存程序,即主處理器中承載了應(yīng)用程序和驅(qū)動(dòng)程序、用于實(shí)現(xiàn)對(duì)讀緩 存進(jìn)行讀訪問(wèn)控制的讀緩存程序。
應(yīng)用程序,用于向驅(qū)動(dòng)程序下發(fā)讀請(qǐng)求。
驅(qū)動(dòng)程序,用于根據(jù)接收到的讀請(qǐng)求,驅(qū)動(dòng)讀緩存程序從讀緩存中讀取 該讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。
讀緩存程序,用于從讀緩存中讀取讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),并判斷對(duì)讀緩存 是否全部讀命中,如果是,即應(yīng)用程序下發(fā)的讀請(qǐng)求所對(duì)應(yīng)的全部數(shù)據(jù)均已 緩存在讀緩存中,則向應(yīng)用程序返回讀命中的全部數(shù)據(jù)、以及讀請(qǐng)求成功的
響應(yīng),不涉及與寫緩存的關(guān)聯(lián);否則,在部分命中的情況下,即應(yīng)用程序下 發(fā)的讀請(qǐng)求所對(duì)應(yīng)的部分?jǐn)?shù)據(jù)已緩存在讀緩存中,重新構(gòu)建一個(gè)或多個(gè)表示 對(duì)讀緩存未命中部分的讀請(qǐng)求(如果未命中部分?jǐn)?shù)據(jù)的內(nèi)存空間連續(xù),則可 以只構(gòu)建一個(gè)讀請(qǐng)求,否則,較佳地可構(gòu)建多個(gè)讀請(qǐng)求),下發(fā)到I/0處理 器,在全未命中或讀緩存禁止訪問(wèn)的情況下,即應(yīng)用程序下發(fā)的讀請(qǐng)求所對(duì) 應(yīng)的全部數(shù)據(jù)均未緩存在讀緩存中,直接重新構(gòu)建一個(gè)或多個(gè)表示對(duì)讀緩存 未命中部分的讀請(qǐng)求,下發(fā)到I/0處理器。
I/O處理器中包括讀寫處理程序和寫緩存程序,即I/O處理器中承載 了用于實(shí)現(xiàn)對(duì)寫緩存進(jìn)行寫訪問(wèn)控制的寫緩存程序、以及用于對(duì)磁盤組進(jìn)行 讀寫訪問(wèn)控制的讀寫處理程序。其中,讀寫處理程序是對(duì)現(xiàn)有1/0處理器中 包括的一些其它與寫緩存程序連接的相關(guān)程序總稱,在此不做詳細(xì)描述。
寫緩存程序,用于根據(jù)接收到的對(duì)讀緩存未命中部分的讀請(qǐng)求(接收自 主處理器的讀緩存程序的讀請(qǐng)求)讀取寫緩存,判斷對(duì)寫緩存是否全部讀命 中,如果是,即下發(fā)的讀請(qǐng)求所對(duì)應(yīng)的全部數(shù)據(jù)均已緩存在寫緩存中,則向 應(yīng)用程序返回讀命中的數(shù)據(jù)、以及讀請(qǐng)求成功的響應(yīng),否則,向應(yīng)用程序返
回讀命中的部分?jǐn)?shù)據(jù),并再次重新構(gòu)建一個(gè)或多個(gè)表示對(duì)寫緩存未命中部分 的讀請(qǐng)求,下發(fā)到讀寫處理程序。
讀寫處理程序,用于根據(jù)接收到的對(duì)寫緩存未命中部分的讀請(qǐng)求(接收 自1/0處理器中的寫緩存程序的讀請(qǐng)求),從磁盤組中讀取對(duì)寫緩存未命中 部分的讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),并向應(yīng)用程序返回命中的數(shù)據(jù),同時(shí)還返回讀請(qǐng) 求成功的響應(yīng)。
實(shí)際應(yīng)用中,主處理器中還可包括一緩沖器(buffer),用于存儲(chǔ)返回 給應(yīng)用程序的數(shù)據(jù),并提供給應(yīng)用程序。這樣,應(yīng)用程序下發(fā)的讀請(qǐng)求中可 包括一 buffer指針(即buffer在內(nèi)存中的地址信息),而讀緩存程序、寫緩 存程序、讀寫處理程序,均可以傳遞和使用主處理器中應(yīng)用程序下發(fā)的讀請(qǐng) 求所帶的buffer指針,將向應(yīng)用程序返回的數(shù)據(jù)直接返回到buffer中。
這種情況下,讀緩存程序、和/或?qū)懢彺娉绦?、?或讀寫處理程序,均 可把返回?cái)?shù)據(jù)直接返回到buffer中,以實(shí)現(xiàn)數(shù)據(jù)的快速返回,避免數(shù)據(jù)在各 個(gè)程序之間重復(fù)傳遞。更進(jìn)一步,為了提高數(shù)據(jù)返回的效率,還可以通過(guò) DMA等方式實(shí)現(xiàn)數(shù)據(jù)返回。
對(duì)于寫請(qǐng)求的處理過(guò)程,關(guān)聯(lián)主要體現(xiàn)在如果待寫入的數(shù)據(jù)剛好也緩 存在讀緩存中,必須同步更新磁盤組和讀緩存中的相同數(shù)據(jù)。在寫入操作未 完成之前,為了防止從讀緩存中讀出的數(shù)據(jù)(未經(jīng)寫操作的更新)與待寫入 的數(shù)據(jù)不符,需要將對(duì)讀緩存中該部分對(duì)應(yīng)數(shù)據(jù)的訪問(wèn)掛起,待寫請(qǐng)求完成 后再允許對(duì)該部分?jǐn)?shù)據(jù)的訪問(wèn)。
具體來(lái)說(shuō),主處理器中仍可以包括應(yīng)用程序、驅(qū)動(dòng)程序、讀緩存程序。
應(yīng)用程序,用于向驅(qū)動(dòng)程序下發(fā)寫請(qǐng)求。
驅(qū)動(dòng)程序,用于將應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到讀緩存程序。
讀緩存程序,用于根據(jù)寫請(qǐng)求讀取所述的讀緩存,并判斷對(duì)讀緩存是否 全部未命中,如果是,即待寫入的數(shù)據(jù)并未緩存在讀緩存中,則將接收到的 由應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)給I/O處理器;否則,待寫入數(shù)據(jù)的全部或部 分剛好也緩存在讀緩存中,則申請(qǐng)內(nèi)存空間,例如申請(qǐng)臨時(shí)buffer,將命中 部分對(duì)應(yīng)的寫請(qǐng)求數(shù)據(jù)復(fù)制到申請(qǐng)到的臨時(shí)buffer,而暫不替換讀緩存中對(duì) 應(yīng)位置的原有數(shù)據(jù)(待后續(xù)寫操作成功后再將原有數(shù)據(jù)替換為新寫入的臨時(shí) buffer中的寫請(qǐng)求數(shù)據(jù)),并掛起對(duì)讀緩存中命中部分的訪問(wèn),然后將由應(yīng) 用程序下發(fā)的寫請(qǐng)求下發(fā)到1/0處理器;在接收到來(lái)自1/0處理器的表示寫 操作成功的響應(yīng)信息后,將臨時(shí)buffer中的寫請(qǐng)求數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位 置的數(shù)據(jù),并釋放申請(qǐng)的臨時(shí)buffer。1/0處理器中仍可包括讀寫處理程序和寫緩存程序。 寫緩存程序根據(jù)接收到的寫請(qǐng)求向?qū)懢彺鎸懭雽?duì)應(yīng)的寫請(qǐng)求數(shù)據(jù),在寫 操作成功后向讀緩存程序返回寫請(qǐng)求成功的響應(yīng),即將數(shù)據(jù)寫入到寫緩存 中。實(shí)際應(yīng)用中,也可以不將數(shù)據(jù)先寫入到寫緩存而是直接寫入到磁盤組 中。這種情況下,寫緩存程序通過(guò)讀寫處理程序向磁盤組中寫入對(duì)應(yīng)的寫請(qǐng) 求數(shù)據(jù),在寫操作成功后向讀緩存程序返回表示寫操作成功的響應(yīng)信息;主 處理器中的讀緩存程序?qū)?duì)應(yīng)位置的原有數(shù)據(jù)替換為其申請(qǐng)的臨時(shí)buffer 中的寫請(qǐng)求數(shù)據(jù),并向應(yīng)用程序返回寫請(qǐng)求完成的響應(yīng)。在寫操作失敗后,寫緩存程序或讀寫處理程序向讀緩存程序返回表示寫 操作失敗的響應(yīng)信息。這樣,由于寫請(qǐng)求對(duì)應(yīng)的寫操作失敗,因而主處理器 中的讀緩存程序不將對(duì)應(yīng)位置的原有數(shù)據(jù)替換為其申請(qǐng)的臨時(shí)buffer中的 寫請(qǐng)求數(shù)據(jù),而是在接收到所述表示寫操作失敗的響應(yīng)信息后,丟棄申請(qǐng)到 的臨時(shí)buffer中的寫請(qǐng)求數(shù)據(jù)并釋放該臨時(shí)buffer,并向應(yīng)用程序返回寫請(qǐng) 求完成的響應(yīng)。可見(jiàn),上述存儲(chǔ)設(shè)備中,主處理器和I/0處理器的協(xié)同處理,能夠進(jìn)一 步提高讀效率,且保證在寫操作的過(guò)程中能夠及時(shí)更新讀緩存中的對(duì)應(yīng)數(shù)據(jù)。以上是對(duì)本發(fā)明實(shí)施例中存儲(chǔ)設(shè)備的詳細(xì)說(shuō)明,下面,再對(duì)本發(fā)明實(shí)施 例中的讀寫緩存實(shí)現(xiàn)方法進(jìn)行說(shuō)明。本發(fā)明實(shí)施例中的讀寫緩存實(shí)現(xiàn)方法中,先將讀緩存和輸入/輸出I/O
處理器掛接在主處理器下、將寫緩存和磁盤組掛接在所述I/0處理器下,并 由1/0處理器的電池為寫緩存供電,該方法包括主處理器對(duì)所述讀緩存進(jìn)行訪問(wèn)控制,且i/o處理器在主處理器的控制 下對(duì)寫緩存進(jìn)行訪問(wèn)控制。其中,訪問(wèn)控制包括對(duì)讀請(qǐng)求的訪問(wèn)控制和對(duì)寫請(qǐng)求的訪問(wèn)控制,本發(fā) 明實(shí)施例分別針對(duì)讀請(qǐng)求和寫請(qǐng)求提供了對(duì)應(yīng)的處理方式,以保證讀緩存和 寫緩存間的關(guān)聯(lián)。圖4為本發(fā)明中讀寫緩存實(shí)現(xiàn)方法對(duì)讀請(qǐng)求的處理流程示意圖。如圖4 所示,本實(shí)施例中讀寫緩存實(shí)現(xiàn)方法對(duì)讀請(qǐng)求的處理流程包括步驟401,主處理器中的讀緩存程序根據(jù)應(yīng)用程序下發(fā)的讀請(qǐng)求從讀緩 存中讀取讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。步驟402,主處理器中的讀緩存程序判斷對(duì)讀緩存是否全部讀命中,如 果是,則執(zhí)行步驟403,否則,執(zhí)行步驟404。步驟403,讀緩存全部讀命中,因而主處理器中的讀緩存程序直接向應(yīng) 用程序返回全部命中的數(shù)據(jù),不涉及與寫緩存的關(guān)聯(lián),并執(zhí)行步驟409。步驟404,讀緩存未全部命中或禁止訪問(wèn),主處理器中的讀緩存程序?qū)?讀命中的部分?jǐn)?shù)據(jù)向應(yīng)用程序返回,并重新構(gòu)建一個(gè)或多個(gè)表示對(duì)讀緩存未 命中部分的讀請(qǐng)求下發(fā)到I/O處理器,并繼續(xù)執(zhí)行步眾t 405。本步驟中重新構(gòu)建的讀請(qǐng)求中可以包括buffer指針。步驟405, I/O處理器中的寫緩存程序根據(jù)接收到的對(duì)讀緩存未命中部 分的讀請(qǐng)求,讀取寫緩存中對(duì)應(yīng)的數(shù)據(jù),并判斷對(duì)寫緩存是否全部讀命中, 如果是,則執(zhí)行步驟406,否則執(zhí)行步驟407。步驟406,寫緩存中剛好緩存了讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù),即寫緩存全部讀 命中,I/O處理器中的寫緩存程序直接將命中的數(shù)據(jù)向應(yīng)用程序返回,并執(zhí) 行步驟409。步驟407,寫緩存未全部讀命中(全部未命中或者部分未命中),由I/O 處理器中的寫緩存程序再次重新構(gòu)建一個(gè)或多個(gè)表示對(duì)寫緩存未命中部分
的讀請(qǐng)求并下發(fā),然后執(zhí)行步驟408。與之前所述同理,本步驟中重新構(gòu)建的讀請(qǐng)求中也可以包括buffer指針。步驟408, I/O處理器中的讀寫處理程序根據(jù)接收自寫緩存程序的對(duì)讀 緩存未命中部分的讀請(qǐng)求,從磁盤組讀取對(duì)應(yīng)的數(shù)據(jù)并向應(yīng)用程序返回,并 執(zhí)行步驟409。步驟409,主處理器中的讀緩存程序向應(yīng)用程序返回讀請(qǐng)求完成的響應(yīng)。 至此,本流程結(jié)束。由上述流程可見(jiàn),如果讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)已緩存在寫緩存中,則可以 直接從寫緩存讀取,而無(wú)需再次下發(fā)讀請(qǐng)求以從磁盤組中讀取,從而能夠提 高讀效率。為了進(jìn)一步提高讀效率,上述流程中可以采用如下方式來(lái)具體實(shí)現(xiàn) 在步驟401,主處理器的讀緩存程序接收到的讀請(qǐng)求中可以包括一 buffer指針;如果對(duì)讀緩存全部讀命中,則在步驟403,讀緩存可以將全部命中的數(shù) 據(jù)直接返回到主處理器的buffer中;如果對(duì)讀緩存未全部讀命中,則在步驟404,主處理器的讀緩存程序重 新構(gòu)建的讀請(qǐng)求中也可以包括buffer指針。這樣,在步驟405,寫緩存程序接收到的讀請(qǐng)求中也包括buffer指針。如果寫緩存程序?qū)懢彺嫒孔x命中,則在步驟406,寫緩存可以將全 部讀命中的數(shù)據(jù)直接返回到主處理器的buffer中;如果對(duì)寫緩存未全部讀命中,先將部分命中的數(shù)據(jù)返回到主處理器的 buffer中;等待后續(xù)步驟讀取了當(dāng)前未命中的部分?jǐn)?shù)據(jù)、再將新讀取的數(shù)據(jù) 返回到主處理器的buffer中。在步驟407, I/O處理器的寫緩存程序重新構(gòu)建的讀請(qǐng)求中也可以包括 buffer指針。這樣,在步驟408, I/O處理器的讀寫處理程序接收到的讀請(qǐng)求中則包
括buffer指針。在步驟408,讀寫處理程序在從磁盤組中讀取了對(duì)應(yīng)的數(shù)據(jù) 后,通過(guò)DMA等快速方式直接將數(shù)據(jù)返回到主處理器的buffer中,以提高 數(shù)據(jù)返回的效率;圖5為本發(fā)明中讀寫緩存實(shí)現(xiàn)方法對(duì)寫請(qǐng)求的處理流程示意圖。如圖5 所示,本實(shí)施例中讀寫緩存實(shí)現(xiàn)方法對(duì)寫請(qǐng)求的處理流程包括步驟501,主處理器中的讀緩存程序接收應(yīng)用程序下發(fā)的寫請(qǐng)求,根據(jù) 寫請(qǐng)求讀取讀緩存。步驟502,主處理器中的讀緩存程序判斷對(duì)讀緩存是否全部未命中,如 果是,則執(zhí)行步驟504,否則,執(zhí)行步驟503。步驟5(B,讀緩存完全命中或部分命中,主處理器的讀緩存程序申請(qǐng)內(nèi) 存空間,將命中部分對(duì)應(yīng)的寫請(qǐng)求數(shù)據(jù)復(fù)制到申請(qǐng)到的內(nèi)存空間中,而暫不 替換寫緩存中對(duì)應(yīng)位置的原有數(shù)據(jù),同時(shí),讀緩存程序?qū)ψx緩存命中部分所 在內(nèi)存空間設(shè)置表示掛起的標(biāo)記,然后將后續(xù)對(duì)命中部分的訪問(wèn)掛起,等待 本流程的寫請(qǐng)求完成并更新后才取消掛起,并纟丸行步驟504。步驟504,主處理器的讀緩存程序?qū)?yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到I/O 處理器的寫緩存程序,并執(zhí)行步驟505。步驟505, I/O處理器中的寫緩存程序或讀寫處理程序按照現(xiàn)有方式將 寫請(qǐng)求數(shù)據(jù)寫入寫緩存,或者直接寫入磁盤組,并向主處理器中的讀緩存程 序返回表示寫操作是否成功的響應(yīng)信息。步驟506,主處理器中的讀緩存程序根據(jù)接收到的響應(yīng)信息判斷寫操作 是否成功,如果成功,則執(zhí)行步驟507,否則執(zhí)行步驟508。步驟507,主處理器中的讀緩存程序?qū)⑸暾?qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù) 據(jù)替換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù)(即步驟503對(duì)讀緩存命中的部分?jǐn)?shù)據(jù)), 并釋放申請(qǐng)的內(nèi)存空間,然后執(zhí)行步驟509。步驟508,主處理器中的讀緩存程序丟棄申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求 數(shù)據(jù)并釋放該內(nèi)存空間,然后執(zhí)行步驟509。步驟509,讀緩存程序向主處理器中的應(yīng)用程序返回完成寫請(qǐng)求的響應(yīng),
并#1行步驟510。步驟510,讀緩存程序取消對(duì)命中部分?jǐn)?shù)據(jù)所在內(nèi)存空間設(shè)置的標(biāo)記, 處理由于本步驟之前訪問(wèn)該部分?jǐn)?shù)據(jù)而被掛起的訪問(wèn)。 至此,本流程結(jié)束。由上述流程可見(jiàn),如果待寫入的數(shù)據(jù)剛好也緩存在讀緩存中,則為了同 時(shí)更新磁盤和讀緩存中的相同數(shù)據(jù),以防止從讀緩存中讀出的數(shù)據(jù)(未經(jīng)寫 操作的更新)與待寫入的數(shù)據(jù)不符,需要將對(duì)讀緩存中該部分對(duì)應(yīng)數(shù)據(jù)的訪 問(wèn)掛起,待寫請(qǐng)求完成后再允許對(duì)該部分?jǐn)?shù)據(jù)的訪問(wèn),從而能夠保證在寫操 作的過(guò)程中能夠及時(shí)更新讀緩存中的對(duì)應(yīng)數(shù)據(jù)。上述流程中,在步驟503申請(qǐng)的內(nèi)存空間可以為臨時(shí)buffer。 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范 圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種包括讀寫緩存的存儲(chǔ)設(shè)備,包括主處理器、輸入/輸出I/O處理器、電池、讀緩存、寫緩存和磁盤組,其特征在于,所述讀緩存和所述I/O處理器掛接在所述主處理器下,所述寫緩存和所述磁盤組掛接在所述I/O處理器下;所述主處理器,用于對(duì)所述讀緩存進(jìn)行訪問(wèn)控制;所述I/O處理器,用于在所述主處理器的控制下對(duì)所述寫緩存進(jìn)行訪問(wèn)控制;所述電池為所述寫緩存供電。
2、 如權(quán)利要求1所述的存儲(chǔ)設(shè)備,其特征在于,還包括由所述主處理 器執(zhí)行的應(yīng)用程序、驅(qū)動(dòng)程序和讀緩存程序,其中,所述應(yīng)用程序,用于向所述驅(qū)動(dòng)程序下發(fā)讀請(qǐng)求;所述驅(qū)動(dòng)程序,用于根據(jù)接收到的讀請(qǐng)求,驅(qū)動(dòng)所述讀緩存程序從所述 讀緩存中讀取該讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);所述讀緩存程序,用于從讀緩存中讀取讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),并判斷對(duì)讀 緩存是否全部讀命中,如果是,則向所述應(yīng)用程序返回全部讀命中的數(shù)據(jù);否則,將表示對(duì)讀緩存未命中部分的讀請(qǐng)求下發(fā)到所述i/o處理器,并向所述應(yīng)用程序返回讀命中的數(shù)據(jù)。
3、 如權(quán)利要求2所述的存儲(chǔ)設(shè)備,其特征在于,所述主處理器中進(jìn)一 步包括緩沖器buffer,用于存儲(chǔ)返回給所述應(yīng)用程序的讀命中的數(shù)據(jù);所述應(yīng)用程序下發(fā)的讀請(qǐng)求中包括buffer指針,所述讀緩存程序利用所 述buffer指針將返回給所述應(yīng)用程序的讀命中的數(shù)據(jù)返回到所述buffer。
4、 如權(quán)利要求2所述的存儲(chǔ)設(shè)備,其特征在于,還包括由所述I/0處 理器執(zhí)行的讀寫處理程序和寫緩存程序,其中,所述寫緩存程序,用于接收來(lái)自讀緩存程序?qū)ψx緩存未命中部分的讀請(qǐng) 求并讀取所述寫緩存,判斷對(duì)寫緩存是否全部讀命中,如果是,則向所述應(yīng) 用程序返回讀命中的數(shù)據(jù),否則,將表示對(duì)寫緩存讀取未命中部分的讀請(qǐng)求下發(fā)到讀寫處理程序;所述讀寫處理程序,用于從所述磁盤中讀取接收到的對(duì)寫緩存未命中部 分的讀請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù),并向所述應(yīng)用程序返回讀命中的數(shù)據(jù)。
5、 如權(quán)利要求4所述的存儲(chǔ)設(shè)備,其特征在于,所述主處理器中進(jìn)一 步包括buffer,用于存儲(chǔ)返回給所述應(yīng)用程序的數(shù)據(jù);所述讀緩存程序在未全部讀命中時(shí),重新構(gòu)建并下發(fā)的讀請(qǐng)求中包括所 述buffer的指針,所述寫緩存程序利用所述buffer指針將讀命中的數(shù)據(jù)直接 返回到所述buffer;和/或,所述寫緩存程序在判斷出未全部讀命中時(shí),重新構(gòu)建并下發(fā)的 讀請(qǐng)求中包括所述buffer指針,所述讀寫處理程序利用所述buffer指針將返 回的讀命中的數(shù)據(jù)直接返回到所述buffer。
6、 如權(quán)利要求1所述的存儲(chǔ)設(shè)備,其特征在于,還包括由所述主處理 器執(zhí)行的應(yīng)用程序、驅(qū)動(dòng)程序、讀緩存程序,其中,所述應(yīng)用程序,用于向所述驅(qū)動(dòng)程序下發(fā)寫請(qǐng)求;所述驅(qū)動(dòng)程序,用于將所述應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到所述讀緩存程序;所述讀緩存程序,用于根據(jù)所述寫請(qǐng)求讀取所述的讀緩存,并判斷對(duì)讀 緩存是否全部未命中,如果全部未命中,則將所述應(yīng)用程序下發(fā)的寫請(qǐng)求下 發(fā)給所述I/0處理器;否則,申請(qǐng)內(nèi)存空間,將命中部分對(duì)應(yīng)的寫請(qǐng)求數(shù)據(jù) 復(fù)制到申請(qǐng)到的內(nèi)存空間中,掛起后續(xù)對(duì)該讀緩存中命中部分的訪問(wèn),并將 所述應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到所述I/0處理器;在接收到來(lái)自1/0處理 器的表示寫操作成功的響應(yīng)信息后,將申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù)據(jù)替 換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù),取消掛起;在接收到來(lái)自1/0處理器的表示寫 操作失敗的響應(yīng)信息后,將申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù)據(jù)丟棄,取消掛 起; 所述I/O處理器根據(jù)接收到的寫請(qǐng)求,向所述寫緩存或磁盤組中寫入對(duì) 應(yīng)的寫請(qǐng)求數(shù)據(jù),并在寫操作成功后返回表示寫操作成功的響應(yīng)信息,在寫 操作失敗后返回表示寫操作失敗的響應(yīng)信息。
7、 如權(quán)利要求6所述的存儲(chǔ)設(shè)備,其特征在于,所述讀緩存程序在將 申請(qǐng)到的內(nèi)存空間中的數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù)、或?qū)⑸暾?qǐng)到的內(nèi) 存空間中的數(shù)據(jù)丟棄之后,進(jìn)一步釋放所述申請(qǐng)的內(nèi)存空間。
8、 如權(quán)利要求6或7所述的存儲(chǔ)設(shè)備,其特征在于,所述申請(qǐng)的內(nèi)存 空間為所述主處理器中的臨時(shí)buffer。
9、 一種存儲(chǔ)設(shè)備中的讀寫緩存實(shí)現(xiàn)方法,其特征在于,將讀緩存和輸 入/輸出1/0處理器掛接在主處理器下,將寫緩存和磁盤組掛接在所述i/o處 理器下,由電池為所述寫緩存供電,該方法包括所述主處理器對(duì)所述讀緩存進(jìn)行訪問(wèn)控制,且所述I/O處理器在所述主 處理器的控制下對(duì)所述寫緩存進(jìn)行訪問(wèn)控制。
10、 如權(quán)利要求9所述的方法,其特征在于,所述進(jìn)行訪問(wèn)控制包括 對(duì)讀請(qǐng)求進(jìn)行訪問(wèn)控制;所述對(duì)讀請(qǐng)求進(jìn)行訪問(wèn)控制包括主處理器中的讀緩存程序從讀緩存中讀取應(yīng)用程序下發(fā)的讀請(qǐng)求所對(duì) 應(yīng)的數(shù)據(jù),并判斷對(duì)讀緩存是否全部讀命中,如果是,則讀緩存程序向應(yīng)用 程序返回全部命中的數(shù)據(jù),并結(jié)束流程;否則,讀緩存程序?qū)⒆x命中的部分?jǐn)?shù)據(jù)向應(yīng)用程序返回,并重新構(gòu)建表 示對(duì)讀緩存未命中部分的讀請(qǐng)求下發(fā)到1/0處理器。
11、 如權(quán)利要求10所述的方法,其特征在于,所述主處理器中包括緩 沖器buffer,所述應(yīng)用程序下發(fā)的讀請(qǐng)求中包括buffer指針;所述讀緩存程序向應(yīng)用程序返回讀命中的數(shù)據(jù)包括讀緩存程序利用所 述buffer指針直接將讀命中的數(shù)據(jù)返回到所述buffer中。
12、 如權(quán)利要求10所述的方法,其特征在于,在重新構(gòu)建表示對(duì)讀緩 存未命中部分的讀請(qǐng)求下發(fā)到1/0處理器之后,所述對(duì)讀請(qǐng)求進(jìn)行訪問(wèn)控制 進(jìn)一步包括I/O處理器中的寫緩存程序接收來(lái)自讀緩存程序?qū)ψx緩存未命中部分的 讀請(qǐng)求并讀取所述寫緩存并讀取寫緩存,判斷對(duì)寫緩存是否全部讀命中,如果是,則向應(yīng)用程序返回讀命中的數(shù)據(jù);否則,將表示對(duì)寫緩存讀取未命中部分的讀請(qǐng)求下發(fā)到讀寫處理程序由 讀寫處理程序從磁盤中讀取接收到的對(duì)寫緩存未命中部分的讀請(qǐng)求所對(duì)應(yīng) 的數(shù)據(jù),并向所述應(yīng)用程序返回讀命中的數(shù)據(jù),然后結(jié)束流程。
13、 如權(quán)利要求12所述的方法,其特征在于,所述主處理器中包括緩 沖器buffer;所述讀緩存程序重新構(gòu)建并下發(fā)的讀請(qǐng)求中包括buffer指針,所述寫緩 存程序向應(yīng)用程序返回?cái)?shù)據(jù)包括寫緩存程序利用所述buffer指針將讀命中 數(shù)據(jù)直接返回到所述buffer;和/或,所述寫緩存程序重新構(gòu)建并下發(fā)的讀請(qǐng)求中包括buffer指針, 所述讀寫處理程序向應(yīng)用程序返回?cái)?shù)據(jù)包括讀寫處理程序利用所述buffer 指針將命中的數(shù)據(jù)直接返回到所述buffer。
14、 如權(quán)利要求9所述的方法,其特征在于,所述進(jìn)行訪問(wèn)控制包括 對(duì)寫請(qǐng)求進(jìn)行訪問(wèn)控制;所述對(duì)寫請(qǐng)求進(jìn)行訪問(wèn)控制包括主處理器中的讀緩存程序接收應(yīng)用程序下發(fā)的寫請(qǐng)求,根據(jù)所述寫請(qǐng)求 讀取所述的讀緩存;在對(duì)讀緩存全部未命中后,主處理器的讀緩存程序?qū)?yīng)用程序下發(fā)的寫 請(qǐng)求下發(fā)給所述I/0處理器;在對(duì)讀緩存完全命中或部分命中后,主處理器 的讀緩存程序申請(qǐng)內(nèi)存空間,將命中部分對(duì)應(yīng)的寫請(qǐng)求數(shù)據(jù)復(fù)制到申請(qǐng)到的 內(nèi)存空間中,并對(duì)讀緩存命中部分設(shè)置標(biāo)記,掛起后續(xù)對(duì)命中部分的訪問(wèn), 并將應(yīng)用程序下發(fā)的寫請(qǐng)求下發(fā)到所述1/0處理器;I/O處理器將對(duì)應(yīng)寫請(qǐng)求數(shù)據(jù)寫入寫緩存、或者磁盤組;在I/O處理器寫操作成功后,讀緩存程序?qū)⑸暾?qǐng)到的內(nèi)存空間中的寫請(qǐng) 求數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù),并取消掛起;在I/0處理器寫操作失敗后,將申請(qǐng)到的內(nèi)存空間中的寫請(qǐng)求數(shù)據(jù)丟棄,并取消掛起。
15、 如權(quán)利要求14所述的方法,其特征在于,所述將申請(qǐng)到的內(nèi)存空間中的數(shù)據(jù)替換讀緩存中對(duì)應(yīng)位置的數(shù)據(jù)、或?qū)⑸暾?qǐng)到的內(nèi)存空間中的數(shù)據(jù)丟棄之后,該方法進(jìn)一步包括釋放所述申請(qǐng)的內(nèi)存空間。
16、 如權(quán)利要求14或15所述的方法,其特征在于,所述申請(qǐng)內(nèi)存空間 包括申請(qǐng)主處理器中的臨時(shí)buffer。
全文摘要
本發(fā)明公開(kāi)了一種包括讀寫緩存的存儲(chǔ)設(shè)備和一種存儲(chǔ)設(shè)備中的讀寫緩存實(shí)現(xiàn)方法。本發(fā)明將讀緩存和寫緩存分離,即由不同的處理器分別對(duì)讀緩存和寫緩存進(jìn)行訪問(wèn)控制,即讀緩存直接掛接在主處理器下,從而能夠提高主處理器對(duì)讀緩存的處理效率,且由于主處理器能夠支持較大的內(nèi)存空間,從而保證了讀緩存能夠具有較大容量,進(jìn)而由于讀緩存具有較大容量而能夠進(jìn)一步提高主處理器對(duì)讀緩存的處理效率;寫緩存掛接在I/O處理器下,由I/O處理器的配套電池供電電路實(shí)現(xiàn)對(duì)寫緩存的持續(xù)供電,且寫緩存不需要與讀緩存分享I/O處理器所能夠支持的有限內(nèi)存空間,因而由于寫緩存容量的提高而能夠提高主處理器對(duì)寫緩存的處理效率。
文檔編號(hào)G06F3/06GK101149668SQ20071017680
公開(kāi)日2008年3月26日 申請(qǐng)日期2007年11月2日 優(yōu)先權(quán)日2007年11月2日
發(fā)明者倪小珂, 李至哲 申請(qǐng)人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
乌鲁木齐市| 梓潼县| 休宁县| 延庆县| 平塘县| 蒙城县| 饶阳县| 满洲里市| 南宁市| 海安县| 介休市| 宁蒗| 修水县| 玉屏| 中阳县| 平泉县| 汉源县| 伽师县| 新安县| 青河县| 垣曲县| 锦州市| 内黄县| 贵溪市| 乃东县| 金秀| 浮山县| 茶陵县| 土默特左旗| 阜南县| 白朗县| 亳州市| 大新县| 桐梓县| 章丘市| 秀山| 灌云县| 南宫市| 永靖县| 潜山县| 吴忠市|