專利名稱::進(jìn)行硬盤陣列同位運(yùn)算的裝置與相關(guān)方法
技術(shù)領(lǐng)域:
:本發(fā)明提供一種進(jìn)行硬盤陣列同位運(yùn)算的裝置與相關(guān)方法,特別指一種以硬件運(yùn)算模塊配合直接存儲器存取(memoryaccess)機(jī)制來進(jìn)行硬盤陣列同位運(yùn)算的裝置與相關(guān)方法。
背景技術(shù):
:計(jì)算機(jī)系統(tǒng)是現(xiàn)代信息社會不可或缺的硬件基礎(chǔ)之一。為了要運(yùn)算、管理各種各樣的電子信號與數(shù)據(jù)、資料,計(jì)算機(jī)系統(tǒng)中都設(shè)有硬盤作為存儲裝置,用來以非易失的方式存儲電子信息、文件及多媒體文檔。隨著數(shù)據(jù)量的增加,如何快速、安全地由硬盤中存取大量的資料數(shù)據(jù),也成為現(xiàn)代信息廠商研發(fā)的重點(diǎn)。隨著硬盤容量增加、價(jià)格降低,現(xiàn)代的計(jì)算機(jī)系統(tǒng)中已經(jīng)能以多個硬盤來組合成硬盤陣列(RAID),以多個硬盤合并運(yùn)作的方式,使數(shù)據(jù)的存取效率增加,還具備有容錯能力,能在數(shù)據(jù)存取過程中容忍相當(dāng)?shù)腻e誤。如熟知技術(shù)者所知,依運(yùn)作方式不同,現(xiàn)行的硬盤陣列結(jié)構(gòu)也分為許多種類,如RAID0、RAID1、RAID0+1、RAID2至RAID5等種類。其中,RAID3至RAID5的硬盤陣列皆使用異或(XOR,exclusiveOR)來產(chǎn)生同位檢查碼,并利用同位檢查的方式來實(shí)現(xiàn)硬盤陣列的容錯能力。舉例來說,在以二個硬盤所組成的RAID5硬盤陣列中,當(dāng)有一批數(shù)據(jù)要存儲入該硬盤陣列中時(shí),該批數(shù)據(jù)會被劃分(stripe)為兩組不同的成分?jǐn)?shù)據(jù),分別被存儲至不同的硬盤;此外,還要根據(jù)這兩組成份數(shù)據(jù)進(jìn)行異或(XOR)的邏輯運(yùn)算,以產(chǎn)生對應(yīng)的同位檢查數(shù)據(jù);該同位檢查數(shù)據(jù)也會被存儲至硬盤陣列中。當(dāng)有一個硬盤故障時(shí),根據(jù)另一硬盤上的同位檢查數(shù)據(jù)及該硬盤上剩下的成分?jǐn)?shù)據(jù),還是能復(fù)原出原來那批數(shù)據(jù),達(dá)到容錯的目的。由以上描述可知,在存取硬盤陣列(尤其是RAID3至5的硬盤陣列)時(shí),需要頻繁地進(jìn)行異或的同位運(yùn)算,才能順利地實(shí)現(xiàn)硬盤陣列的容錯功能。而在常規(guī)的技術(shù)中,這種同位運(yùn)算會以硬件或軟件技術(shù)來實(shí)現(xiàn)。在硬件的實(shí)現(xiàn)技術(shù)方面,現(xiàn)有的常規(guī)技術(shù)除了會在硬盤陣列控制器設(shè)置同位運(yùn)算的處理硬件,還會附加上專用的存儲器來支援同位運(yùn)算所需的存儲資源。由于這種常規(guī)的硬盤陣列控制器具有專用的存儲器,連帶地,控制器中也要有對應(yīng)的硬件來管理該存儲器的存取,如地址解碼器(decoder)等。而這也使得該類硬盤陣列控制器的構(gòu)造復(fù)雜,成本高昂,耗能、發(fā)熱量均較高,電路的體積也較大,不適合內(nèi)建于主機(jī)板或芯片組中,只適合以附插卡的形式安裝于計(jì)算機(jī)系統(tǒng)中。另一方面,在以軟件來實(shí)現(xiàn)同位運(yùn)算的常規(guī)技術(shù)中,則需要以中央處理器執(zhí)行軟件來進(jìn)行異或運(yùn)算。明顯地,這種常規(guī)技術(shù)將會增加中央處理器的運(yùn)算負(fù)擔(dān),降低計(jì)算機(jī)系統(tǒng)整體的運(yùn)作效能。
發(fā)明內(nèi)容因此,本發(fā)明的主要目的,即是提出一種利用直接存儲器存取機(jī)制實(shí)現(xiàn)的硬件同位運(yùn)算技術(shù),以克服前述常規(guī)技術(shù)的各種缺點(diǎn)。本發(fā)明主要是以硬盤陣列控制器中的硬件來進(jìn)行同位運(yùn)算,但本發(fā)明還進(jìn)一步地利用硬盤陣列控制器的直接存儲器存取機(jī)制,使硬盤陣列控制器能直接利用計(jì)算機(jī)系統(tǒng)本身的系統(tǒng)存儲器來支援同位運(yùn)算所需的存儲資源。如此一來,本發(fā)明就能在不占用中央處理器的情形下,快速、高效能地進(jìn)行硬件同位運(yùn)算,卻不必在硬盤陣列控制器中設(shè)置專用的存儲器及相關(guān)電路。因此,本發(fā)明的硬盤陣列控制器具有精簡的結(jié)構(gòu)、低廉的成本、較低的耗能與發(fā)熱量,不僅能以附插卡的形式安裝于計(jì)算機(jī)系統(tǒng)中,也能綜合于主機(jī)板或芯片組中。一般來說,在現(xiàn)行的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)下,是以芯片組電連接在中央處理器與系統(tǒng)存儲器之間,而各種周邊裝置的控制器,如硬盤控制器(IDEcontroller,IDE即integrateddeviceelectronics)或是硬盤陣列控制器等則可綜合于芯片組內(nèi),或是通過總線(如PCI總線,peripheralcomponentinterconnectbus)連接到芯片組。為了減輕中央處理器的工作負(fù)擔(dān),這些控制器可啟動總線主控(busmaster)事件而進(jìn)行直接存儲器存取,經(jīng)由芯片組中的北橋電路直接存取系統(tǒng)存儲器中的數(shù)據(jù)。為了協(xié)調(diào)控制器的直接存儲器存取作業(yè),控制器中會設(shè)有一些暫存器,用來暫存直接存儲器存取所需的指針及狀態(tài)等數(shù)據(jù)。舉例來說,控制器中的暫存器可包括有符表指針(descriptortablepointer)的暫存器以及一個代表直接存儲器存取作業(yè)情形的狀態(tài)暫存器。當(dāng)控制器要開始總線主控(busmaster)而直接存取系統(tǒng)存儲器中的數(shù)據(jù)時(shí),這些數(shù)據(jù)于系統(tǒng)存儲器中的地址會被記錄于一描述符表(PRDT,physicalregiondescriptortable)中,而中央處理器可執(zhí)行對應(yīng)的軟件(如驅(qū)動程序)來將一符表指針(PRDTpointer)存儲至控制器的對應(yīng)暫存器,該符表指針就是用來記錄描述符表于系統(tǒng)存儲器中的地址。而在控制器進(jìn)行直接存儲器存取時(shí),就可根據(jù)符表指針而在系統(tǒng)存儲器中找到描述符表,再根據(jù)描述符表存取到對應(yīng)的數(shù)據(jù)。除了符表指針與描述符表的機(jī)制外,直接存儲器存取中控制器的狀態(tài)暫存器則能響應(yīng)控制器對直接存儲器存取的進(jìn)行狀況。為了實(shí)現(xiàn)數(shù)據(jù)同步(datasynchronization),在現(xiàn)行的直接存儲器存取結(jié)構(gòu)下,只要中央處理器依軟件執(zhí)行情形而讀取該狀態(tài)暫存器中暫存的狀態(tài)數(shù)據(jù),控制器就會在響應(yīng)狀態(tài)數(shù)據(jù)之前,完成對系統(tǒng)存儲器的存取。換句話說,只要中央處理器在讀取狀態(tài)暫存器后取得控制器響應(yīng)的狀態(tài)數(shù)據(jù),就代表控制器已經(jīng)完成直接存儲器存??;而這種機(jī)制就可成為控制器響應(yīng)軟件層控制的管道。利用直接存儲器存取中各種相關(guān)的機(jī)制,就可實(shí)現(xiàn)本發(fā)明的技術(shù)。在本發(fā)明中,會在硬盤陣列的控制器內(nèi)設(shè)置同位運(yùn)算的硬件,再利用符表指針-描述符表的機(jī)制,使控制器可取得各批要進(jìn)行同位運(yùn)算的數(shù)據(jù)。在進(jìn)行硬件的同位運(yùn)算后,本發(fā)明同樣也可利用符表指針-描述符表的機(jī)制,將同位運(yùn)算的結(jié)果直接回存至系統(tǒng)存儲器。換句話說,在本發(fā)明中,硬盤陣列控制器中的同位運(yùn)算硬件可直接利用系統(tǒng)存儲器來支援同位運(yùn)算所需的存儲資源,故本發(fā)明能以精簡的結(jié)構(gòu)在硬盤陣列控制器中實(shí)現(xiàn)硬件同位運(yùn)算。在本發(fā)明中,可利用三種不同的方式來利用符表指針-描述符表的機(jī)制,讓控制器能存取到需要進(jìn)行同位運(yùn)算的各批數(shù)據(jù),并將同位運(yùn)算的結(jié)果回存至系統(tǒng)存儲器。另一方面,本發(fā)明也可利用硬盤陣列控制器中的狀態(tài)暫存器機(jī)制,來提供硬件同位運(yùn)算對軟件層響應(yīng)的管道。當(dāng)中央處理器在執(zhí)行硬盤陣列控制器的軟件驅(qū)動程序而要利用控制器中的硬件來進(jìn)行同位運(yùn)算時(shí),中央處理器只要讀取控制器中的狀態(tài)暫存器,控制器就可開始進(jìn)行硬件的同位運(yùn)算處理,并在將狀態(tài)暫存器的狀態(tài)數(shù)據(jù)響應(yīng)給中央處理器之前,完成同位運(yùn)算,將結(jié)果回存至系統(tǒng)存儲器。換句話說,只要中央處理器在驅(qū)動程序的軟件層得到控制器響應(yīng)的狀態(tài)數(shù)據(jù),就代表硬盤陣列控制器已經(jīng)完成硬件同位運(yùn)算。利用直接存儲器存取,本發(fā)明在進(jìn)行硬件同位運(yùn)算時(shí)就不需占用中央處理器的效能,硬盤陣列控制器也能以精簡、低成本、低耗能的結(jié)構(gòu)實(shí)現(xiàn)硬件同位運(yùn)算,快速、有效率地支援硬盤陣列的各種相關(guān)運(yùn)作。圖1為本發(fā)明計(jì)算機(jī)系統(tǒng)的功能方塊示意圖。圖2為圖1中計(jì)算機(jī)系統(tǒng)進(jìn)行同位運(yùn)算的第一實(shí)施例的示意圖。圖3為圖1中計(jì)算機(jī)系統(tǒng)進(jìn)行同位運(yùn)算的第二實(shí)施例的示意圖。圖4為圖1中計(jì)算機(jī)系統(tǒng)進(jìn)行同位運(yùn)算的第三實(shí)施例的示意圖。圖5為圖1中計(jì)算機(jī)系統(tǒng)進(jìn)行同位運(yùn)算時(shí)的流程示意圖。附圖符號說明10計(jì)算機(jī)系統(tǒng)12中央處理器14北橋電路16接口電路18存取模塊20控制器22運(yùn)算模塊24暫存模塊28驅(qū)動程序30存儲器102-108步驟HD(1)-HD(M)硬盤T(1)-T(N)、Tr描述符表P(1)-P(N)、Pr符表指針D(1)-D(N)、Dr數(shù)據(jù)S狀態(tài)數(shù)據(jù)P0總符表指針具體實(shí)施方式請參考圖1。圖1為本發(fā)明計(jì)算機(jī)系統(tǒng)10一實(shí)施例的示意圖。計(jì)算機(jī)系統(tǒng)10中設(shè)有一中央處理器12、一北橋電路14、一接口電路16、一存儲器30以及一控制器20。中央處理器12用來主控計(jì)算機(jī)系統(tǒng)10,作為系統(tǒng)存儲器的存儲器30可以是一動態(tài)隨機(jī)存取存儲器,用來支援中央處理器12運(yùn)作所需的存儲資源;北橋電路14則電連接在中央處理器12與存儲器30之間,管理對存儲器30的數(shù)據(jù)存取。本發(fā)明的控制器20可以是一硬盤陣列控制器,其可經(jīng)由總線(如ATA/ATAPI、serialATA或是SCSI規(guī)格的總線,其中ATA/ATAPI為AdvancedTechnologyAttachment/ATApacketinterface,SCSI為SmallComputerSystemInterface)通道電連接到多個存儲裝置(圖1中以硬盤HD(1)至HD(M)做為代表),以將這多個存儲裝置綜合為一硬盤陣列,并管理其數(shù)據(jù)存取。而控制器20本身則通過接口電路16電連接到北橋電路14。舉例來說,若控制器20是綜合于南橋電路中的,接口電路16就可以是南橋電路中的其他電路,與北橋電路14、控制器20綜合為一芯片組。若控制器20是以附插卡形式安裝于計(jì)算機(jī)系統(tǒng)10中,則接口電路16可以是南橋電路,而控制器20則通過總線(如PCI總線)電連接到接口電路16。為了實(shí)現(xiàn)硬盤陣列運(yùn)作中所需的同位運(yùn)算,本發(fā)明的控制器20中還設(shè)有一存取模塊18、一運(yùn)算模塊22以及一暫存模塊24。存取模塊18可經(jīng)由北橋電路14來存取存儲器30,運(yùn)算模塊22即用來以硬件進(jìn)行同位運(yùn)算,如對多批輸入數(shù)據(jù)進(jìn)行異或(XOR)的邏輯運(yùn)算后,算出對應(yīng)的同位數(shù)據(jù)。而暫存模塊24用來提供控制器20所需的暫存空間,如用來暫存狀態(tài)數(shù)據(jù)的狀態(tài)暫存器以及暫存符表指針的符表指針暫存器,皆可由暫存模塊24來提供。另外,在硬盤陣列運(yùn)作期間,中央處理器12則可通過對驅(qū)動程序28的執(zhí)行,來操作管理控制器20,進(jìn)而通過控制器20來控制硬盤陣列。如前面提到過的,本發(fā)明可利用三種不同的方式來運(yùn)用直接存儲器存取的符表指針-描述符表機(jī)制以及狀態(tài)暫存器機(jī)制,以支援硬盤陣列運(yùn)作期間所需的同位運(yùn)算。以下就以三個實(shí)施例來分別加以說明。首先,請參考圖2(并一并參考圖1);圖2即為圖1的計(jì)算機(jī)系統(tǒng)10在本發(fā)明的第一實(shí)施例中進(jìn)行硬件同位運(yùn)算的示意圖。假設(shè)在硬盤陣列運(yùn)作期間,控制器20有需要對數(shù)據(jù)D(1)、D(2)至D(N)進(jìn)行硬件同位運(yùn)算以產(chǎn)生一對應(yīng)的同位數(shù)據(jù)Dr;此時(shí),中央處理器12除了在存儲器30中準(zhǔn)備好各批同位運(yùn)算的輸入數(shù)據(jù)D(1)至D(N),還能通過對驅(qū)動程序28的執(zhí)行,在存儲器30中準(zhǔn)備好各個描述符表T(1)至T(N)及Tr,并將各個符表指針P(1)至P(N)以及Pr填入至控制器20的暫存模塊24中。在存儲器30中,每一描述符表T(n)對應(yīng)于一批數(shù)據(jù)D(n),用來記錄數(shù)據(jù)D(n)在存儲器30中的地址區(qū)域。更具體地說,各個描述符表T(n)中可另外包含有多個描述符(physicalregiondescriptor,未示于圖2),各個描述符用來描述數(shù)據(jù)D(n)一部份的數(shù)據(jù)于存儲器30中的地址區(qū)域。集合各個描述符中記錄的信息,描述符表T(n)就能描述整批數(shù)據(jù)D(n)于存儲器30中所占用的地址區(qū)域。描述符表Tr則用來記錄數(shù)據(jù)Dr于存儲器30中的地址區(qū)域。而在暫存模塊24中,符表指針P(1)至P(N)則分別對應(yīng)于描述符表T(1)至T(N),各符表指針P(n)用來記錄描述符表T(n)于存儲器30中所占用的地址區(qū)域;符表指針Pr則記錄有描述符表Tr于存儲器30中的地址區(qū)域。當(dāng)控制器20由暫存模塊24中得到各個符表指針P(1)至P(N)后,控制器20中的存取模塊18就能根據(jù)各符表指針P(1)至P(N)中所記錄的地址區(qū)域而在存儲器30中存取到各個描述符表T(1)至T(N)。根據(jù)這些描述符表T(1)至T(N),控制器20就能進(jìn)一步由存儲器30中存取到數(shù)據(jù)D(1)至D(N)。然后,硬件的運(yùn)算模塊22就能對數(shù)據(jù)D(1)至D(N)進(jìn)行同位運(yùn)算,算出對應(yīng)的同位數(shù)據(jù)Dr。根據(jù)符表指針Pr,存取模塊18能存取到描述符表Tr,進(jìn)而將運(yùn)算模塊22算出來的同位數(shù)據(jù)Dr存入描述符表Tr所記錄的地址區(qū)域,完成整個同位運(yùn)算的過程。至于上述同位運(yùn)算進(jìn)行的時(shí)機(jī),中央處理器12可以利用對狀態(tài)暫存器的讀取來加以控制。如圖2所示,控制器20可另外在暫存模塊24中暫存一狀態(tài)數(shù)據(jù)S,由暫存模塊24來實(shí)現(xiàn)一狀態(tài)暫存器的功能。中央處理器12在準(zhǔn)備好各個描述符表T(1)至T(N)、Tr以及各個符表指針P(1)至P(N)、Pr后,就可由狀態(tài)暫存器中讀取狀態(tài)數(shù)據(jù)S。而控制器20就會開始取得數(shù)據(jù)D(1)至D(N),進(jìn)行硬件同位運(yùn)算以計(jì)算出對應(yīng)的同位數(shù)據(jù)Dr,并在將同位數(shù)據(jù)Dr回存至存儲器30后,才將狀態(tài)數(shù)據(jù)S回傳給中央處理器12。換句話說,當(dāng)中央處理器12進(jìn)行讀取并得到控制器20響應(yīng)的狀態(tài)數(shù)據(jù),就代表控制器20已經(jīng)完成硬件同位運(yùn)算,并將運(yùn)算結(jié)果的同位數(shù)據(jù)Dr回存至存儲器30。在本發(fā)明于圖2的實(shí)施例中,要完成一次硬件同位運(yùn)算,控制器20中的暫存模塊24要暫存N+1個符表指針(也就是符表指針Tr及T(1)至T(N))及一個狀態(tài)數(shù)據(jù)S,相當(dāng)于要實(shí)現(xiàn)N+1個符表指針暫存器與一個狀態(tài)暫存器;而中央處理器12則要從控制器20的暫存模塊24中存取這N+1個符表指針暫存器。舉例來說,若控制器20是將兩個硬盤綜合為一個RAID5硬盤陣列,當(dāng)要存取該硬盤陣列時(shí),控制器20會需要對兩批數(shù)據(jù)(即N=2)進(jìn)行同位運(yùn)算而得到一批同位數(shù)據(jù),在該情況下,控制器20中的暫存模塊24就要實(shí)現(xiàn)出3個符表指針暫存器及一個狀態(tài)暫存器。不過,在現(xiàn)行的技術(shù)中,管理多硬盤的控制器本來就需要為每一個硬盤設(shè)置一個對應(yīng)的符表指針暫存器,故本發(fā)明于圖2的實(shí)施例其實(shí)并不會比現(xiàn)行技術(shù)的控制器需要更多的符表指針暫存器。請參考圖3(并一并參考圖1)。圖3為計(jì)算機(jī)系統(tǒng)10于本發(fā)明的第二實(shí)施例中進(jìn)行硬件同位運(yùn)算的示意圖。類似于圖2中的實(shí)施例,在圖3的實(shí)施例中,當(dāng)硬盤陣列控制器20在硬盤陣列運(yùn)作期間要對數(shù)據(jù)D(1)、D(2)至D(N)做硬件同位運(yùn)算時(shí),中央處理器12仍會配合驅(qū)動程序28的執(zhí)行而在存儲器30中準(zhǔn)備好各個對應(yīng)的描述符表T(1)至T(N)及Tr,以及各個對應(yīng)的符表指針P(1)至P(N)以及Pr。較為不同的是,在圖3的實(shí)施例中,控制器20中的暫存模塊24僅需實(shí)現(xiàn)一個符表指針暫存器及一個狀態(tài)暫存器,而各個符表指針P(1)至P(N)、Pr則是依序被一一填入至符表指針暫存器中,讓控制器20能依序存取到各批數(shù)據(jù)D(1)至D(N)。舉例來說,符表指針P(1)會先被填入至控制器20中的符表指針暫存器中,讓控制器20能根據(jù)符表指針P(1)存取到存儲器30中的描述符表T(1),并進(jìn)一步根據(jù)描述符表T(1)存取到數(shù)據(jù)D(1)。然后符表指針P(2)會被填入至符表指針暫存器中,讓控制器20能經(jīng)由描述符表T(2)存取到數(shù)據(jù)D(2);以此類推。存取到各批數(shù)據(jù)D(1)至D(N)后,控制器20中的硬件運(yùn)算模塊22就能進(jìn)行同位運(yùn)算而得出對應(yīng)的同位數(shù)據(jù)Dr;而且,符表指針Pr也會被填入至符表指針暫存器中,讓控制器20能根據(jù)描述符表Tr知道要將該同位數(shù)據(jù)Dr存入至存儲器30中的哪些地址區(qū)域。類似于圖2中的實(shí)施例,本發(fā)明于圖3中的實(shí)施例仍可沿用狀態(tài)暫存器的機(jī)制來作為控制器20與軟件層溝通的管道。也就是說,中央處理器12可向控制器20要求讀取狀態(tài)暫存器中的狀態(tài)數(shù)據(jù)S,而當(dāng)控制器20將狀態(tài)數(shù)據(jù)S響應(yīng)給中央處理器12時(shí),就代表控制器20已經(jīng)完成硬件的同位運(yùn)算了。對本發(fā)明于圖3的實(shí)施例來說,在對N批數(shù)據(jù)D(1)至D(N)進(jìn)行同位運(yùn)算時(shí),控制器20中僅需實(shí)現(xiàn)出一個符表指針暫存器及一個狀態(tài)暫存器,不過要對此一符表指針暫存器進(jìn)行N+1次存取,以依序填入符表指針P(1)至P(N)以及Pr。舉例來說,當(dāng)要對兩批數(shù)據(jù)進(jìn)行同位運(yùn)算時(shí),控制器20中僅需一個符表指針暫存器及一個狀態(tài)暫存器,但要對該單一符表指針暫存器進(jìn)行3次存取。由于現(xiàn)代的計(jì)算機(jī)系統(tǒng)所能支援的存儲空間越來越大,用來定址數(shù)據(jù)的地址本身也會更長(具有更多位),也使得符表指針的數(shù)據(jù)量增加。因此,現(xiàn)行的計(jì)算機(jī)系統(tǒng)也已經(jīng)可以運(yùn)用多次填入的方式來利用單一的符表指針暫存器,如可支援ATA48位規(guī)格的直接存儲器存取,就會利用符表指針暫存器的多次填入,來將一個較長的符表指針分成不同的片段依序填入至符表指針暫存器。因此,本發(fā)明于圖3中的實(shí)施例,不論是電路結(jié)構(gòu)或是控制時(shí)序,都不會逾越現(xiàn)行計(jì)算機(jī)系統(tǒng)的規(guī)格,也不會增加計(jì)算機(jī)系統(tǒng)運(yùn)作的復(fù)雜程度。請參考圖4。圖4為本發(fā)明計(jì)算機(jī)系統(tǒng)10以直接存儲器存取實(shí)現(xiàn)硬件同位運(yùn)算的第三實(shí)施例的示意圖。類似于前兩個實(shí)施例,在圖4的實(shí)施例中,當(dāng)控制器20要對數(shù)據(jù)D(1)至D(N)進(jìn)行同位運(yùn)算時(shí),中央處理器12會配合驅(qū)動程序28的執(zhí)行而在存儲器30中準(zhǔn)備好數(shù)據(jù)D(1)至D(N),以及對應(yīng)的描述符表T(1)至T(N)及Tr。同樣地,中央處理器12還是要準(zhǔn)備符表指針P(1)至P(N)及Pr來指示各個描述符表于存儲器30中的地址。比較不同的是,在圖4的實(shí)施例中,符表指針P(1)至P(N)及Pr會被存入至存儲器30,而這些符表指針P(1)至P(N)于存儲器30中的地址,則會被紀(jì)錄至一總符表指針P0。而該總符表指針P0會被填入至控制器20的暫存模塊24中。因此,在圖4的實(shí)施例中,控制器20的暫存模塊24也只需要實(shí)現(xiàn)出一個符表指針暫存器及一個狀態(tài)暫存器,該符表指針暫存器暫存的就是總符表指針P0。整體來說,當(dāng)控制器20要對數(shù)據(jù)D(1)至D(N)進(jìn)行硬件同位運(yùn)算時(shí),控制器20會先根據(jù)符表指針暫存器中的總符表指針P0存取到存儲器30中的各個符表指針P(1)至P(N)以及Pr,再根據(jù)這些符表指針存取到描述符表T(1)至T(N)及Tr。根據(jù)描述符表T(1)至T(N),控制器20就能在存儲器30中存取到數(shù)據(jù)D(1)至D(N)來進(jìn)行硬件同位運(yùn)算,并根據(jù)描述符表Tr,將算出來的同位數(shù)據(jù)Dr存入存儲器30中,完成硬件同位運(yùn)算。同樣地,上述運(yùn)作過程的時(shí)機(jī)可以用狀態(tài)暫存器的讀取來控制;當(dāng)中央處理器12讀取狀態(tài)暫存器中的狀態(tài)數(shù)據(jù)S時(shí),控制器20就會以直接存儲器存取進(jìn)行硬件同位運(yùn)算;當(dāng)中央處理器12在軟件層得到控制器20響應(yīng)的狀態(tài)數(shù)據(jù)S時(shí),就代表控制器20已經(jīng)完成硬件同位運(yùn)算,并已將算出的同位數(shù)據(jù)Dr回存至存儲器30。由以上描述可知,在本發(fā)明于圖4的實(shí)施例中,當(dāng)要對N批數(shù)據(jù)D(1)至D(N)進(jìn)行同位運(yùn)算時(shí),僅需在控制器20中實(shí)現(xiàn)一個符表指針暫存器以及一個狀態(tài)暫存器,也僅需對該符表指針暫存器進(jìn)行一次存取(也就是填入總符表指針P0);相對地,各個符表指針P(1)至P(N)、Pr則要被填入(存儲至)存儲器30中。等效上來說,存儲器30中的各個符表指針P(1)至P(N)及Pr可視為一個描述符表中的各個符表單元(tableentry),而總符表指針P0就可指引控制器20來存取到這個包含有各個符表指針的等效描述符表。因此,本發(fā)明于圖4的實(shí)施例還是可沿用現(xiàn)行直接存儲器存取下的符表指針-描述符表機(jī)制來加以實(shí)現(xiàn),并不會增加實(shí)現(xiàn)上的復(fù)雜程度。與本發(fā)明于圖2、圖3的實(shí)施例相比,本發(fā)明于圖4的實(shí)施例應(yīng)會有較高的效能,因?yàn)樵趫D4的實(shí)施例中,對暫存模塊24的存取最少。同樣要對N批數(shù)據(jù)D(1)至D(N)進(jìn)行同位運(yùn)算,圖2的實(shí)施例需要對暫存模塊24進(jìn)行N+1次的符表指針存取(也就是在N+1個符表指針暫存器中填入各個符表指針),圖3的實(shí)施例也要對暫存模塊24進(jìn)行N+1次的符表指針存取(對單一符表指針暫存器依序進(jìn)行N+1次存取)。而在圖4的實(shí)施例中,則僅需對控制器20的暫存模塊24進(jìn)行一次的符表指針存取(填入總符表指針P0);雖然,在圖4的實(shí)施例進(jìn)行同位運(yùn)算期間,還要額外在存儲器30中存取各個符表指針P(1)至P(N)及Pr,但由于對存儲器30的存取會比對暫存模塊24的存取來得更快、更有效率,因此,可減少對暫存模塊24存取的圖4實(shí)施例會具有較高的效能,其硬件同位運(yùn)算所花的時(shí)間應(yīng)會較短。本發(fā)明于上述各實(shí)施例中進(jìn)行硬件同位運(yùn)算的過程可歸納于圖5。請參考圖5(并一并參考圖1);圖5即為本發(fā)明計(jì)算機(jī)系統(tǒng)10藉由直接存儲器存取機(jī)制進(jìn)行硬件同位運(yùn)算的流程示意圖,其具有下列步驟步驟102在硬盤陣列運(yùn)作期間,當(dāng)要各批輸入數(shù)據(jù)D(1)至D(N)進(jìn)行同位運(yùn)算時(shí),中央處理器12可配合軟件驅(qū)動程序28的執(zhí)行而為各批數(shù)據(jù)準(zhǔn)備好對應(yīng)的描述符表,并將這些描述符表存儲在存儲器30中。當(dāng)然,也要將相關(guān)的符表指針(或圖4實(shí)施例中的總符表指針)填入至控制器20的暫存模塊24。步驟104利用直接存儲器存取中符表指針-描述符表的機(jī)制,直接由存儲器30中取得同位運(yùn)算所需的數(shù)據(jù)D(1)至D(N)。步驟106由控制器20中的運(yùn)算模塊22進(jìn)行硬件的同位運(yùn)算。步驟108利用直接存儲器存取中狀態(tài)暫存器的機(jī)制,使控制器20將同位運(yùn)算的結(jié)果(也就是同位數(shù)據(jù)Dr)回存至存儲器30中。當(dāng)中央處理器12在驅(qū)動程序28的軟件層面取得控制器20響應(yīng)的狀態(tài)數(shù)據(jù)時(shí),就代表控制器20已經(jīng)完成硬件同位運(yùn)算,并已將同位運(yùn)算的結(jié)果回存至系統(tǒng)存儲器(也就是存儲器30)總結(jié)來說,本發(fā)明可利用直接存儲器存取的機(jī)制而在硬盤陣列控制器中實(shí)現(xiàn)結(jié)構(gòu)精簡的硬件同位運(yùn)算,以便在硬盤陣列運(yùn)作期間服務(wù)其所需的同位運(yùn)算需求。與常規(guī)技術(shù)中以軟件來實(shí)現(xiàn)的同位運(yùn)算相比較,本發(fā)明的同位運(yùn)算可減輕中央處理器的運(yùn)作負(fù)擔(dān),使整個計(jì)算機(jī)系統(tǒng)具有更高的效能。與常規(guī)技術(shù)中以硬件來實(shí)現(xiàn)的同位運(yùn)算相比較,本發(fā)明則可利用計(jì)算機(jī)系統(tǒng)中原本已設(shè)置的系統(tǒng)存儲器及相關(guān)電路(如北橋電路)來支援同位運(yùn)算期間所需要的存儲資源,故本發(fā)明控制器的硬件結(jié)構(gòu)精簡,不需設(shè)置專用存儲器,成本較低,體積較小,耗能發(fā)熱均較少,不僅可利用附插卡的形式安裝于計(jì)算機(jī)系統(tǒng)中,還可綜合設(shè)置于主機(jī)板或芯片組內(nèi),符合現(xiàn)代計(jì)算機(jī)力求輕薄短小的需求。另外,本發(fā)明利用直接存儲器存取中的狀態(tài)暫存器機(jī)制來溝通控制器與軟件層,也能減少對中央處理器效能的干擾。在常規(guī)技術(shù)中,不論是用硬件或軟件來實(shí)現(xiàn)同位運(yùn)算,都要在同位運(yùn)算完成后對中央處理器發(fā)出中斷(interrupt)信號,通知中央處理器;此時(shí),中央處理器就需要耗用相當(dāng)?shù)男軄硖幚碇袛嘈盘?。相較之下,本發(fā)明以狀態(tài)暫存器機(jī)制來做為中央處理器與控制器間的溝通管道,中央處理器就不需要像處理中斷信號那樣耗用較多效能。另外,除了在硬盤陣列所需的同位運(yùn)算之外,只要改變運(yùn)算模塊22的硬件功能,本發(fā)明就可以利用直接存儲器存取來進(jìn)行其他種類的硬件運(yùn)算。舉例來說,在RAID2的硬盤陣列中,會需要將數(shù)據(jù)進(jìn)行漢明碼(hammingcode)的編碼;若將運(yùn)算模塊22的硬件運(yùn)算功能擴(kuò)充為漢明碼的編碼,本發(fā)明就能利用系統(tǒng)存儲器來支援硬件漢明碼編碼所需的存儲資源,在硬盤陣列控制器中以精簡的結(jié)構(gòu)來實(shí)現(xiàn)硬件漢明碼編碼。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求所進(jìn)行的等效變化與修改,皆應(yīng)屬本發(fā)明的涵蓋范圍。權(quán)利要求1.一種計(jì)算機(jī)系統(tǒng),其包含有一中央處理器;一存儲器;一北橋電路,電連接到該中央處理器及該存儲器之間;以及一控制器,電連接到該北橋電路;該控制器中包含有一存取模塊,其可經(jīng)由該北橋電路由該存儲器中讀取至少兩批輸入數(shù)據(jù);以及一運(yùn)算模塊,用來對該存取模塊讀取的各批輸入數(shù)據(jù)進(jìn)行邏輯運(yùn)算以提供一對應(yīng)的同位數(shù)據(jù),而該存取模塊還可將該同位數(shù)據(jù)經(jīng)由該北橋電路存儲至該存儲器。2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中該控制器還包含有一暫存模塊,其可暫存一狀態(tài)數(shù)據(jù);而該運(yùn)算模塊于該中央處理器讀取該狀態(tài)數(shù)據(jù)時(shí)進(jìn)行邏輯運(yùn)算,且該存取模塊可在該中央處理器取得該狀態(tài)數(shù)據(jù)之前,將該運(yùn)算模塊提供的同位數(shù)據(jù)經(jīng)由該北橋電路存儲至該存儲器。3.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中該中央處理器還可將至少一符表指針存儲至該暫存模塊,而該存取模塊根據(jù)該符表指針由該存儲器中讀取該各批輸入數(shù)據(jù)。4.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中該存儲器存儲有至少一描述符表,各描述符表用來記錄一對應(yīng)的輸入數(shù)據(jù)于該存儲器中的地址區(qū)域;而各符表指針用來記錄一對應(yīng)的描述符表于該存儲器中的地址;當(dāng)該存取模塊由該存儲器中讀取該各批輸入數(shù)據(jù)時(shí),先根據(jù)該符表指針由該存儲器中讀取各描述符表,再根據(jù)各描述符表由該存儲器中讀取該各批輸入數(shù)據(jù)。5.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中該中央處理器可依序于不同時(shí)間在該暫存模塊中分別存儲一符表指針,各符表指針用來記錄一對應(yīng)的描述符表于該存儲器中的地址,而各描述符表用來記錄一對應(yīng)的輸入數(shù)據(jù)于該存儲器中的地址區(qū)域;而當(dāng)該存取模塊由該存儲器中讀取該各批輸入數(shù)據(jù)時(shí),在該中央處理器將每一符表指針存儲于該暫存模塊后,依據(jù)該符表指針及對應(yīng)的描述符表而由該存儲器中讀取對應(yīng)的輸入數(shù)據(jù)。6.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中該存儲器中存儲有多個符表指針及多個描述符表,各描述符表用來記錄一對應(yīng)的輸入數(shù)據(jù)于該存儲器中的地址區(qū)域,各符表指針用來記錄一對應(yīng)的描述符表于該存儲器中的地址;且該中央處理器可將一總符表指針存儲至該暫存模塊,該總符表指針用來記錄各符表指針于該存儲器中的地址;而當(dāng)該存取模塊由該存儲器中讀取該各批輸入數(shù)據(jù)時(shí),先根據(jù)該總符表指針由該存儲器中讀取各符表指針,再根據(jù)各符表指針讀取各描述符表,并根據(jù)各描述符表由該存儲器中讀取該各批輸入數(shù)據(jù)。7.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其還包含有至少一存儲裝置,電連接到該控制器;而該控制器還可將各輸入數(shù)據(jù)及對應(yīng)的同位數(shù)據(jù)傳輸至各存儲裝置。8.一種于一計(jì)算機(jī)系統(tǒng)中進(jìn)行同位運(yùn)算的方法,該計(jì)算機(jī)系統(tǒng)中設(shè)有一存儲器及一暫存模塊,而該方法包含有由該存儲器中讀取至少兩批輸入數(shù)據(jù);于該暫存模塊中暫存一狀態(tài)數(shù)據(jù);在讀取該狀態(tài)數(shù)據(jù)時(shí),對該各批輸入數(shù)據(jù)進(jìn)行邏輯運(yùn)算以提供一對應(yīng)的同位數(shù)據(jù);以及在由該暫存模塊取得該狀態(tài)數(shù)據(jù)前,將該同位數(shù)據(jù)存儲至該存儲器。9.如權(quán)利要求8所述的方法,其還包含有將至少一描述符表存儲至該存儲器,其中各描述符表分別用來記錄一對應(yīng)的輸入數(shù)據(jù)于該存儲器中的地址區(qū)域;以及將至少一符表指針存儲于該暫存模塊,其中各符表指針用來記錄一對應(yīng)的描述符表于該存儲器中的地址;而當(dāng)要由該存儲器中讀取該各批輸入數(shù)據(jù)時(shí),先根據(jù)該符表指針由該存儲器中讀取各描述符表,再根據(jù)各描述符表由該存儲器中讀取該各批輸入數(shù)據(jù)。10.如權(quán)利要求8所述的方法,其還包含有將多個符表指針及多個描述符表存儲至該存儲器,其中各描述符表分別用來記錄一對應(yīng)的輸入數(shù)據(jù)于該存儲器中的地址區(qū)域,各符表指針用來記錄一對應(yīng)的描述符表于該存儲器中的地址;以及將一總符表指針存儲至該暫存模塊,該總符表指針用來記錄各符表指針于該存儲器中的地址;而當(dāng)要由該存儲器中讀取該各批輸入數(shù)據(jù)時(shí),先根據(jù)該總符表指針由該存儲器中讀取各符表指針,再根據(jù)各符表指針讀取各描述符表,并根據(jù)各描述符表由該存儲器中讀取該各批輸入數(shù)據(jù)。11.如權(quán)利要求8所述的方法,其還包含有依序于不同時(shí)間在該暫存模塊中分別存儲一符表指針,各符表指針用來記錄一對應(yīng)的描述符表于該存儲器中的地址,而各描述符表用來記錄一對應(yīng)的輸入數(shù)據(jù)于該存儲器中的地址區(qū)域;而當(dāng)要由該存儲器中讀取該各批輸入數(shù)據(jù)時(shí),在將每一符表指針存儲于該暫存模塊后,依據(jù)該符表指針及對應(yīng)的描述符表而由該存儲器中讀取對應(yīng)的輸入數(shù)據(jù)。全文摘要本發(fā)明提供一種進(jìn)行硬盤陣列同位運(yùn)算的裝置與相關(guān)方法。在可容錯的硬盤陣列中,要以硬盤陣列存取各硬盤中的數(shù)據(jù)時(shí),有需要根據(jù)各批數(shù)據(jù)計(jì)算出一對應(yīng)的同位數(shù)據(jù);而在本發(fā)明中,即是在硬盤陣列控制器中設(shè)置同位運(yùn)算的硬件,再配合硬盤陣列控制器的直接存儲器存取機(jī)制,于系統(tǒng)存儲器中直接存取各批數(shù)據(jù)及運(yùn)算后的同位數(shù)據(jù),以運(yùn)用系統(tǒng)存儲器來支援同位運(yùn)算所需的存儲資源,并減少同位運(yùn)算對中央處理器的負(fù)擔(dān)。文檔編號G06F3/06GK1588300SQ200410056440公開日2005年3月2日申請日期2004年8月9日優(yōu)先權(quán)日2004年8月9日發(fā)明者李勇申請人:威盛電子股份有限公司