專利名稱:存儲(chǔ)器件中存儲(chǔ)數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般性涉及數(shù)據(jù)存儲(chǔ)系統(tǒng),尤其涉及用以將數(shù)據(jù)存入一個(gè)存儲(chǔ)器件的一種方法和系統(tǒng)。
數(shù)據(jù)存儲(chǔ)系統(tǒng)被廣泛應(yīng)用于各種計(jì)算環(huán)境中。
圖1顯示一個(gè)計(jì)算機(jī)(10),它包含一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)(14)。典型地,一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)包含一個(gè)大容量存儲(chǔ)器(16),存儲(chǔ)器管理單元(22),和CPU存儲(chǔ)器(24)。中央處理單元(CPU)(12)執(zhí)行軟件程序,并且通過(guò)總線(20)連接至存儲(chǔ)器管理單元(22)和CPU存儲(chǔ)器(24)。
存儲(chǔ)器管理單元(22)控制大容量存儲(chǔ)器(16)與CPU存儲(chǔ)器(24)之間的數(shù)據(jù)傳輸,而且在某些情況下可以在中央處理單元(12)與大容量存儲(chǔ)器(16)之間傳輸數(shù)據(jù)。為將來(lái)自大容量存儲(chǔ)器(16)的數(shù)據(jù)移送至CPU存儲(chǔ)器(24),存儲(chǔ)器管理單元(22)利用總線(18)[譯者注原文中為(13),根據(jù)圖示應(yīng)為18]從大容量存儲(chǔ)器(16)中讀取數(shù)據(jù)塊,然后利用總線(20)將這些數(shù)據(jù)塊寫入CPU存儲(chǔ)器(24)。以類似的方式,通過(guò)先從CPU存儲(chǔ)器(24)中讀取數(shù)據(jù)塊而后將其寫入大容量存儲(chǔ)器(16),存儲(chǔ)器管理單元(22)可將來(lái)自CPU存儲(chǔ)器(24)的數(shù)據(jù)塊移送至大容量存儲(chǔ)器(16)。
大容量存儲(chǔ)器(16)典型地提供一個(gè)裝置,用以以相對(duì)低的每存儲(chǔ)數(shù)據(jù)元成本存儲(chǔ)大量數(shù)據(jù)。具備技術(shù)上普通技能的人可認(rèn)識(shí)到,大容量存儲(chǔ)器(16)可包括一個(gè)硬盤,一組隨機(jī)存取存儲(chǔ)器(RAM)芯片,或其它存儲(chǔ)媒體。
CPU存儲(chǔ)器(24)存儲(chǔ)CPU(12)所使用的數(shù)據(jù)和程序指令。具備技術(shù)上普通技能的人將認(rèn)識(shí)到,CPU存儲(chǔ)器(24)可為靜態(tài)或超高速緩存RAM,他們與CUP(12)存在于同一集成電路上。存儲(chǔ)在CPU存儲(chǔ)器(24)中的數(shù)據(jù)通過(guò)總線(20)被CPU(12)存取。與大容量存儲(chǔ)器(16)相比,CPU存儲(chǔ)器(24)允許更為快速的存取過(guò)程。然而,CPU存儲(chǔ)器(24)一般容量較小,這歸因于其相對(duì)較高的價(jià)格——與它容許短的存取時(shí)間相關(guān)。對(duì)于存儲(chǔ)CPU(12)操作中所需的所有數(shù)據(jù),CPU存儲(chǔ)器(24)通常不夠大。因此,要么CPU(12)必須通過(guò)存儲(chǔ)器管理單元(22)周期性地存取來(lái)自大容量存儲(chǔ)器(16)的數(shù)據(jù),要么存儲(chǔ)器管理單元(22)必須周期性刷新CPU存儲(chǔ)器(24)的內(nèi)容。因?yàn)榇笕萘看鎯?chǔ)器(16)比CPU存儲(chǔ)器(24)速度慢,CPU(12)在存取來(lái)自大容量存儲(chǔ)器(16)的數(shù)據(jù)時(shí)必須插入若干等待狀態(tài)。由CPU(12)插入的等待狀態(tài)將降低計(jì)算機(jī)(10)的整體性能。另外,在許多情形下,存儲(chǔ)器管理單元(22)向CPU存儲(chǔ)器(24)裝入數(shù)據(jù)塊所需的時(shí)間量將引起CPU(12)空閑,這亦將降低計(jì)算機(jī)(10)的性能。
因此,存在對(duì)一種數(shù)據(jù)存儲(chǔ)系統(tǒng)的重要需求,這種數(shù)據(jù)存儲(chǔ)系統(tǒng)允許數(shù)據(jù)塊以減少所需總體存儲(chǔ)空間的方式存儲(chǔ)。還存在對(duì)一種數(shù)據(jù)存儲(chǔ)系統(tǒng)的需求,這種數(shù)據(jù)存儲(chǔ)系統(tǒng)將數(shù)據(jù)裝入存儲(chǔ)器,并減少數(shù)據(jù)塊在該存儲(chǔ)器和大容量存儲(chǔ)器之間交換。
因此,本發(fā)明的一個(gè)優(yōu)點(diǎn)是提供一種減少存儲(chǔ)器件中存儲(chǔ)數(shù)據(jù)所需存儲(chǔ)空間的方法。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)是提供一種有效地減少將數(shù)據(jù)裝入上述存儲(chǔ)器件所需時(shí)間量的存儲(chǔ)數(shù)據(jù)方法。
本發(fā)明一個(gè)進(jìn)一步的優(yōu)點(diǎn)是提供一種減少在一存儲(chǔ)器件和一大容量存儲(chǔ)器之間數(shù)據(jù)交換需求的方法。
在本發(fā)明的一個(gè)實(shí)施例中,提供一種方法用以將一組數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件。在本方法中,每一個(gè)數(shù)據(jù)塊具有一組數(shù)據(jù)元。首先確定是否一個(gè)公共數(shù)據(jù)元存在于一組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間。該組數(shù)據(jù)塊隨后被存入上述存儲(chǔ)器件,以使得如果一個(gè)公共數(shù)據(jù)元存在于一組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間,則該組數(shù)據(jù)塊中這兩個(gè)數(shù)據(jù)塊之間的公共數(shù)據(jù)元被存入存儲(chǔ)器件的一個(gè)單獨(dú)區(qū)域。
在本發(fā)明的另一個(gè)以供選擇的實(shí)施例中,提供一種方法用以將一組數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件。該組數(shù)據(jù)塊中每一個(gè)數(shù)據(jù)塊擁有一個(gè)起始地址和一組可尋址數(shù)據(jù)元,并且該組數(shù)據(jù)元中的每一個(gè)數(shù)據(jù)元擁有一個(gè)相對(duì)于該起始地址的地址。進(jìn)一步地,該組數(shù)據(jù)塊包含第一和第二數(shù)據(jù)塊。上述方法為第一數(shù)據(jù)塊和第二數(shù)據(jù)塊指定地址,以使得第二數(shù)據(jù)塊的那組數(shù)據(jù)元的至少一個(gè)數(shù)據(jù)元之地址與第一數(shù)據(jù)塊的那組數(shù)據(jù)元的至少一個(gè)數(shù)據(jù)元之地址相同。本方法確定第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的上述一組數(shù)據(jù)元中,上述擁有相同地址的至少一個(gè)數(shù)據(jù)元是否相等。如果上述數(shù)據(jù)元相等,本方法開(kāi)辟一個(gè)重迭記錄,它包含第二數(shù)據(jù)塊的起始地址和第一與第二數(shù)據(jù)塊之間公共數(shù)據(jù)元的數(shù)目。隨后改變第二數(shù)據(jù)塊的起始地址,并且重復(fù)所述諸步驟直至找到公共數(shù)據(jù)元的最大數(shù)目。第一數(shù)據(jù)塊隨后被存儲(chǔ)于所分配的起始地址。第二數(shù)據(jù)塊被存儲(chǔ)于由公共元最大數(shù)目對(duì)應(yīng)的重迭記錄所給定的起始地址。
在本發(fā)明一個(gè)進(jìn)一步的實(shí)施例中,提供一個(gè)存儲(chǔ)器管理單元用以將一組數(shù)據(jù)塊存入計(jì)算機(jī)的存儲(chǔ)器件。該存儲(chǔ)器管理單元包含確定裝置,用以確定上述一組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間是否存在一個(gè)公共數(shù)據(jù)元。另外,該存儲(chǔ)器管理單元包含存儲(chǔ)裝置,有效地連接至上述存儲(chǔ)器件,并響應(yīng)于上述確定裝置,用以將上述一組數(shù)據(jù)塊存入存儲(chǔ)器件,以使得如果該組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間存在上述公共數(shù)據(jù)元,該組數(shù)據(jù)塊中的上述兩個(gè)數(shù)據(jù)塊之間的公共數(shù)據(jù)元被存入存儲(chǔ)器件的一個(gè)單獨(dú)區(qū)域。
在其后所附的權(quán)利要求中,將指出本發(fā)明所具有的特別之處。然而,通過(guò)參考以下結(jié)合附圖的詳細(xì)說(shuō)明,本發(fā)明的其它特性將更為明了并得到最好的理解。其中圖1顯示一臺(tái)包含數(shù)據(jù)存儲(chǔ)系統(tǒng)的已有技術(shù)的計(jì)算機(jī)方框圖。
圖2顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例,一個(gè)存儲(chǔ)器件中存儲(chǔ)數(shù)據(jù)方法的流程圖。
圖3描述一個(gè)存儲(chǔ)器件中用以定位數(shù)據(jù)的兩維尋址方案設(shè)計(jì)之示例。
圖4描述位于兩維地址空間非重迭區(qū)域的兩個(gè)數(shù)據(jù)塊的示例。
圖5描述根據(jù)本發(fā)明實(shí)施例之一,位于兩維地址空間重迭區(qū)域的圖4中兩個(gè)數(shù)據(jù)塊的示例。
圖6顯示根據(jù)本發(fā)明另一個(gè)以供選擇的實(shí)施例,將一組數(shù)據(jù)塊中兩個(gè)數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件的方法流程圖。
圖7顯示根據(jù)本發(fā)明之進(jìn)一步實(shí)施例,將一個(gè)數(shù)據(jù)塊序列存入一個(gè)存儲(chǔ)器件的方法流程圖。
圖8顯示根據(jù)本發(fā)明的附加實(shí)施例,將數(shù)據(jù)塊序列的一個(gè)需要最小存儲(chǔ)量的排列存入一個(gè)存儲(chǔ)器件的方法流程圖。
圖9顯示一臺(tái)包含本發(fā)明一個(gè)實(shí)施例中的存儲(chǔ)器管理單元的多處理器計(jì)算機(jī)方框圖。
圖10顯示本發(fā)明的一個(gè)實(shí)施例所用及的一個(gè)存儲(chǔ)器管理單元的方法流程圖。
圖11描述包含本發(fā)明一個(gè)實(shí)施例中所使用的指數(shù)值的一個(gè)數(shù)據(jù)塊的示例。
具備技術(shù)上普通技能的人應(yīng)認(rèn)識(shí)到,本發(fā)明的方法可以用軟件或硬件,或者其任意形式的結(jié)合加以實(shí)現(xiàn),術(shù)語(yǔ)”指數(shù)”或”指數(shù)值”,以及”塊”或“數(shù)據(jù)塊”在本說(shuō)明中可以互換使用。
圖2顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例,將一組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件的方法流程圖。首先,在判決框(30)中作出一個(gè)判定——在兩個(gè)數(shù)據(jù)塊之間是否存在一個(gè)公共數(shù)據(jù)元。如果是,則本方法繼續(xù)執(zhí)行框(32)。如果非,本方法繼續(xù)執(zhí)行框(34)。
在框(32)中,存儲(chǔ)上述兩個(gè)數(shù)據(jù)塊以使得公共數(shù)據(jù)元被存儲(chǔ)于該存儲(chǔ)器件的一個(gè)單獨(dú)區(qū)域中。在此情形下,因兩個(gè)數(shù)據(jù)塊之間的重迭,相對(duì)于分立地存儲(chǔ),需要較少存儲(chǔ)量以存儲(chǔ)上述兩個(gè)數(shù)據(jù)塊。返回來(lái),較少的存儲(chǔ)量可以減少數(shù)據(jù)塊在存儲(chǔ)器件和大容量存儲(chǔ)器之間交換的需求。
在框(34)中,諸數(shù)據(jù)塊被存儲(chǔ)于該存儲(chǔ)器件分立的非重迭區(qū)域。
圖3描述一個(gè)存儲(chǔ)器件中用以定位數(shù)據(jù)的兩維編址尋址方案設(shè)計(jì)之示例。在一個(gè)實(shí)施例中,存儲(chǔ)器件中的地址由具有兩個(gè)索引——行地址和列地址——的陣列表示。因此,一個(gè)兩維地址可表示為一個(gè)有序?qū)?i,j),其中i表示行地址,j表示列地址。一個(gè)數(shù)據(jù)元可被存儲(chǔ)于存儲(chǔ)器件的每一個(gè)兩維地址上。
軸(64)表示行地址值,軸(66)表示列地址值。邊界(48)指示存儲(chǔ)器件的存儲(chǔ)空間。一個(gè)數(shù)據(jù)元可被存入存儲(chǔ)器件之存儲(chǔ)空間的任意位置。換句話說(shuō),存儲(chǔ)于邊界(48)以內(nèi)的一個(gè)數(shù)據(jù)元的兩維地址可由(i,j)給定,其中0≤i≤f,0≤j≤e。
數(shù)據(jù)塊(40)包括一組數(shù)據(jù)元,其中之一如數(shù)據(jù)元(44)所示。數(shù)據(jù)塊(40)由兩維起始地址(50)標(biāo)定。起始地址(50)給出數(shù)據(jù)塊(40)中第一個(gè)數(shù)據(jù)元的位置。該第一數(shù)據(jù)元先于該塊中的其它數(shù)據(jù)元被存取。起始地址(50)由有序?qū)?a,b)給定。一個(gè)數(shù)據(jù)塊中的所有其它數(shù)據(jù)元被定位于相對(duì)該數(shù)據(jù)塊起始地址的諸地址上。例如,數(shù)據(jù)元(44)的行地址由行偏移(54)與起始地址(50)的行地址之和給定,數(shù)據(jù)元(44)的列地址由列偏移(56)與起始地址(50)的列地址之和給定。在此例中,行偏移(54)等于1個(gè)存儲(chǔ)單元,列偏移(56)等于5個(gè)存儲(chǔ)單元,因此所得數(shù)據(jù)元(44)的兩維地址是(a+1,b+5)。
數(shù)據(jù)塊(42)由有序?qū)?c,d)所表示的起始地址(52)標(biāo)定。最大行偏移(58)和最大列偏移(60)給定數(shù)據(jù)元(46)相對(duì)于起始地址(52)的兩維地址。該最大行偏移和最大列偏移表示一個(gè)數(shù)據(jù)塊中將被最后一個(gè)存取的數(shù)據(jù)元之地址。例如,最大行偏移(58)等于5個(gè)存儲(chǔ)單元,最大列偏移(60)等于6個(gè)存儲(chǔ)單元。因此所得數(shù)據(jù)元(46)的兩維地址是(c+5,d+6)。
圖4描述位于兩維地址空間中非重迭區(qū)域的兩個(gè)數(shù)據(jù)塊的示例。數(shù)據(jù)塊(100)包含十六個(gè)兩位數(shù)字字,并由起始地址(104)標(biāo)定。數(shù)據(jù)塊(102)包含十個(gè)兩位數(shù)字字,并由起始地址(106)標(biāo)定。軸(90)指示兩維地址空間的列地址,軸(92)指示兩維地址空間的行地址。
圖5描述根據(jù)本發(fā)明實(shí)施例之一,位于兩維地址空間重迭區(qū)域的圖4中兩個(gè)數(shù)據(jù)塊的示例。數(shù)據(jù)塊(100)保留在由起始地址(104)所給定的位置。然而,數(shù)據(jù)塊(102)被移送至新的起始地址(108)。數(shù)據(jù)塊(102)的該新位置允許來(lái)自這兩塊中具有相同值的數(shù)據(jù)元或者公共數(shù)據(jù)元共用相同的兩維地址。在圖5中,該公共數(shù)據(jù)元為兩位數(shù)字字。
通過(guò)重迭數(shù)據(jù)塊以使得公共數(shù)據(jù)元被定位于公共兩維地址,本發(fā)明減少用于存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)塊所需的存儲(chǔ)空間量。
圖4和5出于例示的目的描述兩位數(shù)據(jù)元。進(jìn)一步地,圖4和5均用兩維編址尋址的形式描述。具備技術(shù)上普通技能的人將認(rèn)識(shí)到,可以使用由任意多位所組成的數(shù)據(jù)元,并且該編址尋址方式可以在n-維意義上加以實(shí)施。
圖6顯示根據(jù)本發(fā)明之另一個(gè)以供選擇的實(shí)施例,將一組數(shù)據(jù)塊中兩個(gè)數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件的方法流程圖。在框(140)中,起始地址被分配給上述兩個(gè)數(shù)據(jù)塊以使得這兩個(gè)數(shù)據(jù)塊在兩維地址空間中重迭;換句話說(shuō),這兩個(gè)數(shù)據(jù)塊中的第一個(gè)數(shù)據(jù)塊的至少一個(gè)數(shù)據(jù)元與這兩個(gè)數(shù)據(jù)塊中的第二個(gè)數(shù)據(jù)塊的至少一個(gè)數(shù)據(jù)元具有相同的兩維地址。
其次,在判決框(142)中執(zhí)行一個(gè)檢驗(yàn)以確定具有相同地址的諸數(shù)據(jù)元是否相等。如果是,本方法繼續(xù)執(zhí)行框(144)。如果非,本方法繼續(xù)執(zhí)行框(146)。
在框(144)中,開(kāi)辟一個(gè)重迭記錄。該重迭記錄可以是一個(gè)用于存儲(chǔ)數(shù)據(jù)的軟件變?cè)蛴布b置。該重迭記錄存儲(chǔ)第二數(shù)據(jù)塊的起始地址和公共數(shù)據(jù)元的數(shù)目。本方法產(chǎn)生一組重迭記錄。
在框(146)中,第二數(shù)據(jù)塊的起始地址被改變以允許這兩個(gè)數(shù)據(jù)塊中不相同的數(shù)據(jù)元共用相同的地址。
其次,在判決框(148)中,執(zhí)行一個(gè)檢驗(yàn)以確定是否已找到這兩個(gè)數(shù)據(jù)塊之間公共數(shù)據(jù)元的最大數(shù)目。這通過(guò)比較重迭記錄以尋找具有最大數(shù)目的一個(gè)公共數(shù)據(jù)元來(lái)完成。公共數(shù)據(jù)元重迭記錄的上述比較要求上述第一和第二數(shù)據(jù)塊在此之前以任何可能的方式完成重迭。如果上述第一和第二數(shù)據(jù)塊以任何可能的方式已完成重迭,則本方法繼續(xù)執(zhí)行框(150)。如果非,本方法返回框(142)。
在框(150)中,上述第一數(shù)據(jù)塊被存儲(chǔ)于存儲(chǔ)器件中在框(140)中所分配的起始地址上。該第一數(shù)據(jù)塊中的諸數(shù)據(jù)元被存儲(chǔ)于存儲(chǔ)器件中相對(duì)于所分配起始地址的諸兩維地址上。
在框(152)中,上述第一數(shù)據(jù)塊被存儲(chǔ)于存儲(chǔ)器件中由具有公共元最大數(shù)目的重迭記錄所給定的起始地址上。第二數(shù)據(jù)塊中的諸數(shù)據(jù)元被存儲(chǔ)于存儲(chǔ)器件中相對(duì)于由重迭記錄所給定的起始地址的諸兩維地址上。
圖7顯示根據(jù)本發(fā)明之進(jìn)一步實(shí)施例,將一個(gè)數(shù)據(jù)塊序列存入一個(gè)存儲(chǔ)器件的方法流程圖。諸數(shù)據(jù)塊可以多種方式排序。例如,該序列可被排序成從擁有最少數(shù)據(jù)元的數(shù)據(jù)塊開(kāi)始到擁有最多數(shù)據(jù)元的數(shù)據(jù)塊結(jié)束?;蛘?,序列中數(shù)據(jù)塊可作隨機(jī)排序。在一個(gè)最佳實(shí)施例中,該序列以遞減數(shù)據(jù)塊大小排序;這即是,該序列開(kāi)始于擁有最多數(shù)據(jù)元的數(shù)據(jù)塊,結(jié)束于擁有最少數(shù)據(jù)元的數(shù)據(jù)塊。
在框(160)中,起始地址被分配給該序列中上述第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,以使得這兩個(gè)數(shù)據(jù)塊在地址空間內(nèi)重迭;換句話說(shuō),第一數(shù)據(jù)塊中的至少一個(gè)數(shù)據(jù)元與該相繼數(shù)據(jù)塊中的至少一個(gè)數(shù)據(jù)元具有相同的地址。
其次,在判決框(162)中執(zhí)行一個(gè)檢驗(yàn)以確定具有相同地址的數(shù)據(jù)元是否相等。如果是,本方法繼續(xù)執(zhí)行框(164)。如果非,本方法繼續(xù)執(zhí)行框(166)。
在框(164)中,建立一個(gè)重迭記錄。該重迭記錄可以是一個(gè)用于存儲(chǔ)數(shù)據(jù)的軟件變量或硬件裝置。該重迭記錄存儲(chǔ)第二數(shù)據(jù)塊的起始地址和公共數(shù)據(jù)元的數(shù)目。本方法產(chǎn)生一組重迭記錄。
在框(166)中,第二數(shù)據(jù)塊的起始地址被改變以允許第一和第二數(shù)據(jù)塊的不同數(shù)據(jù)元共用同一地址。
其次,在判決框(168)中,執(zhí)行一個(gè)檢驗(yàn)以確定是否已找到上述兩個(gè)數(shù)據(jù)塊之間公共數(shù)據(jù)元的最大數(shù)目。這通過(guò)比較重迭記錄以尋找具有最大數(shù)目的一個(gè)公共數(shù)據(jù)元來(lái)完成。重迭記錄的比較,要求第一和第二數(shù)據(jù)塊預(yù)先以任何可能的方式完成重迭。如果第一和第二數(shù)據(jù)塊以任何可能的方式已完成重迭,則本方法繼續(xù)執(zhí)行框(170)。如果非,本方法返回框(162)。
在框(170)中,定義一個(gè)集合數(shù)據(jù)塊。該集合數(shù)據(jù)塊包含具有在框(160)中所分配的起始地址的第一數(shù)據(jù)塊,以及具有由公共數(shù)據(jù)元最大數(shù)目所對(duì)應(yīng)的重迭記錄所給定起始地址的第二數(shù)據(jù)塊。第一和相繼數(shù)據(jù)塊的數(shù)據(jù)元具有相對(duì)于它們各自數(shù)據(jù)塊之起始地址的兩維地址。
在判決框(172)中,執(zhí)行一個(gè)檢驗(yàn)以確定上述數(shù)據(jù)塊序列中是否還存在另一個(gè)數(shù)據(jù)塊。如果是,本方法繼續(xù)執(zhí)行框(174)。如果非,本方法繼續(xù)執(zhí)行框(176)。
在框(174)中,上述集合數(shù)據(jù)塊替代第一數(shù)據(jù)塊,序列中下一個(gè)數(shù)據(jù)塊替代第二數(shù)據(jù)塊。當(dāng)退出框(174)時(shí),本方法返回框(160)。
在框(176)中,上述包含序列中所有數(shù)據(jù)塊的集合數(shù)據(jù)塊被存入存儲(chǔ)器件。
圖8顯示根據(jù)本發(fā)明的一個(gè)附加實(shí)施例,存儲(chǔ)數(shù)據(jù)塊序列的一個(gè)需要最小存儲(chǔ)量的排列的方法流程圖。在此實(shí)施例中,比較數(shù)據(jù)塊序列的所有可能的排序,并且需要最少存儲(chǔ)空間的排序或排列被存入存儲(chǔ)器件。在框(190)中,起始地址被分配給序列中的第一數(shù)據(jù)塊和一個(gè)相繼數(shù)據(jù)塊,以使得這兩個(gè)數(shù)據(jù)塊在地址空間內(nèi)重迭;換句話說(shuō),第一數(shù)據(jù)塊中至少一個(gè)數(shù)據(jù)元與相繼數(shù)據(jù)塊中至少一個(gè)數(shù)據(jù)元具有相同的地址。
其次,在判決框(192)中執(zhí)行一個(gè)檢驗(yàn)以確定具有相同地址的數(shù)據(jù)元是否相等。如果是,本方法繼續(xù)執(zhí)行框(194)。如果非,本方法繼續(xù)執(zhí)行框(196)。
在框(194)中,建立一個(gè)重迭記錄。該重迭記錄可以是一個(gè)用于存儲(chǔ)數(shù)據(jù)的軟件變量或硬件裝置。該重迭記錄存儲(chǔ)第二數(shù)據(jù)塊的起始地址和公共數(shù)據(jù)元的數(shù)目。本方法產(chǎn)生一組重迭記錄。
在框(196)中,第二數(shù)據(jù)塊的起始地址被改變以允許第一和第二數(shù)據(jù)塊的不同數(shù)據(jù)元共用同一地址。
其次,在判決框(198)中,執(zhí)行一個(gè)檢驗(yàn)以確定是否已找到上述兩個(gè)數(shù)據(jù)塊之間公共數(shù)據(jù)元的最大數(shù)目。這通過(guò)比較重迭記錄以尋找具有最大數(shù)目的一個(gè)公共數(shù)據(jù)元來(lái)完成。重迭記錄的比較要求上述第一和第二數(shù)據(jù)塊預(yù)先以任何可能的方式完成重迭。如果上述第一和第二數(shù)據(jù)塊以任何可能的方式已完成重迭,則本方法繼續(xù)執(zhí)行框(200)。如果非,本方法返回框(192)。
在框(200)中,定義一個(gè)集合數(shù)據(jù)塊。該集合數(shù)據(jù)塊包含具有在框(190)中所分配的起始地址的第一數(shù)據(jù)塊,以及具有由公共數(shù)據(jù)元最大數(shù)目所對(duì)應(yīng)的重迭記錄所給定的起始地址的第二數(shù)據(jù)塊。第一和第二數(shù)據(jù)塊的數(shù)據(jù)元具有相對(duì)于它們各自數(shù)據(jù)塊之起始地址的兩維地址。
在判決框(202)中,執(zhí)行一個(gè)檢驗(yàn)以確定上述數(shù)據(jù)塊序列中是否還存在另一個(gè)數(shù)據(jù)塊。如果是,本方法繼續(xù)執(zhí)行框(204)。如果非,本方法繼續(xù)執(zhí)行框(206)。
在框(204)中,上述集合數(shù)據(jù)塊替代第一數(shù)據(jù)塊,序列中下一個(gè)數(shù)據(jù)塊替代第二數(shù)據(jù)塊。當(dāng)退出框(204)時(shí),本方法返回框(190)。
在框(206)中,存儲(chǔ)一個(gè)包含序列中所有數(shù)據(jù)塊的集合數(shù)據(jù)塊所需的存儲(chǔ)量被存儲(chǔ)。本方法記錄關(guān)于上述序列每個(gè)排列的集合數(shù)據(jù)塊所需的存儲(chǔ)量或大小。
在判決框(208)中,執(zhí)行一個(gè)檢驗(yàn)以確定是否存在數(shù)據(jù)塊序列的其它排列。如果是,本方法返回框(190),否則本方法繼續(xù)執(zhí)行框(210)。
在框(210)中,進(jìn)行一個(gè)諸集合數(shù)據(jù)塊大小之間的比較。隨后,需要最少存儲(chǔ)空間的集合數(shù)據(jù)塊被存入存儲(chǔ)器件。
圖9顯示包含本發(fā)明一個(gè)實(shí)施例的存儲(chǔ)器管理單元的一臺(tái)多處理器計(jì)算機(jī)的方框圖。計(jì)算機(jī)(216)包含存儲(chǔ)器件(222),存儲(chǔ)器管理單元(212),加法電路(217),以及一組計(jì)算元,其中的三個(gè)被顯示為計(jì)算元(211),(213),和(215)。
計(jì)算機(jī)(216)用以計(jì)算如下形式的多項(xiàng)式展開(kāi)y=∑x1g1ix2g2i…xngni公式1這里y表示計(jì)算機(jī)(216)的輸出,亦可稱之為多項(xiàng)式展開(kāi)的函數(shù);這里x1,x2,…,xn表示計(jì)算機(jī)(216)的數(shù)據(jù)輸入,亦可稱之為多項(xiàng)式展開(kāi)的自變量;而這里的g1i,g2i,...,gni表示展開(kāi)式中第i項(xiàng)的指數(shù),它們施加于數(shù)據(jù)輸入;其中的i,m,和n為整數(shù)。
計(jì)算機(jī)(216)以下述方式計(jì)算一個(gè)多項(xiàng)式展開(kāi)。利用總線(219)將一組數(shù)據(jù)輸入x1,x2,...,xn饋入計(jì)算機(jī)(216),然后分配給一組計(jì)算元,其中的計(jì)算元(211),(213),和(215)被圖示。應(yīng)被理解的是,其余的計(jì)算元(未示出)可被提供用以執(zhí)行以上公式(1)所表示多項(xiàng)式展開(kāi)中的每一項(xiàng)。每一個(gè)計(jì)算元計(jì)算多項(xiàng)式展開(kāi)中的一項(xiàng),并確定接受哪一個(gè)數(shù)據(jù)輸入。計(jì)算元讀取被存于存儲(chǔ)器件(222)內(nèi)的指數(shù)值,計(jì)算一項(xiàng)后,一個(gè)計(jì)算元將該項(xiàng)傳遞至加法電路(217),它將計(jì)算元所計(jì)算的諸項(xiàng)相加并將和值置于計(jì)算機(jī)(216)的輸出端(233)。
例如,圖9描繪多項(xiàng)式y(tǒng)=x1g11x2g21+x1g12x2g22+…xngnm的計(jì)算。該例中,計(jì)算元(211)通過(guò)總線(221)從存儲(chǔ)器件(222)讀取指數(shù)g11和g21,同時(shí)計(jì)算元(213)利用總線(223)從存儲(chǔ)器件(222)讀取指數(shù)g12和g22,以及計(jì)算元(215)利用總線(225)從存儲(chǔ)器件(222)讀取指數(shù)gnm。計(jì)算元(211)計(jì)算x1g11x2g21項(xiàng),然后通過(guò)總線(227)將其送至加法電路(217);計(jì)算元(213)計(jì)算x1g12x2g22項(xiàng),然后通過(guò)總線(229)將其送至加法電路(217);以及計(jì)算元(215)計(jì)算xngnm項(xiàng),然后通過(guò)總線(231)將其送至加法電路(217)。當(dāng)接到來(lái)自諸計(jì)算元的各項(xiàng)時(shí),加法電路(217)將諸項(xiàng)相加并將所得的多項(xiàng)式展開(kāi)放置于計(jì)算機(jī)輸出端(233)。
對(duì)具備普通技能的人將顯而易見(jiàn)的是,計(jì)算機(jī)(216)能夠計(jì)算由公式1給出形式的多項(xiàng)式,多項(xiàng)式中的一些項(xiàng)可不同于上例,多項(xiàng)式諸項(xiàng)可由不同于上例中多項(xiàng)式各項(xiàng)的形式的數(shù)據(jù)輸入組成。
存儲(chǔ)器件(222)存儲(chǔ)被一組計(jì)算元使用的諸指數(shù)值。存儲(chǔ)器件(222)可存儲(chǔ)指數(shù)值的一個(gè)或多個(gè)塊,其中每一塊對(duì)應(yīng)于一個(gè)不同的多項(xiàng)式展開(kāi)。
存儲(chǔ)器管理單元(212)包含存儲(chǔ)裝置(224)和確定裝置(214)。存儲(chǔ)裝置(224)通過(guò)總線(218)有效地連接至存儲(chǔ)器件(222),而確定裝置(214)通過(guò)總線(220)有效地連接至存儲(chǔ)裝置(224)。
根據(jù)本發(fā)明,存儲(chǔ)器管理單元(212)將一組指數(shù)值的塊存入存儲(chǔ)器件中,以一種減少存儲(chǔ)這組塊所需的存儲(chǔ)空間之方式。這些塊中的每一塊包括用于計(jì)算一個(gè)對(duì)應(yīng)的多項(xiàng)式展開(kāi)的諸指數(shù)值。為減少所需的存儲(chǔ)空間,確定裝置(214)確定是否兩個(gè)或多個(gè)塊有相同的指數(shù)。如果是,確定裝置(214)通過(guò)總線(220)通知存儲(chǔ)裝置(224)。存儲(chǔ)裝置(224)通過(guò)總線(218)返回來(lái)發(fā)信號(hào)給存儲(chǔ)器件(222)存儲(chǔ)該塊,以使得相同的指數(shù)或公共數(shù)據(jù)元被存儲(chǔ)于存儲(chǔ)器件(222)的單獨(dú)位置。
圖10顯示本發(fā)明的一個(gè)實(shí)施例所使用的一個(gè)存儲(chǔ)器管理方法的流程圖。在框(240)中,一個(gè)多項(xiàng)式展開(kāi)的諸指數(shù)值采用兩維尋址方案被存入該存儲(chǔ)器件。每一個(gè)展開(kāi)式的指數(shù)值被定位在對(duì)應(yīng)該多項(xiàng)式展開(kāi)的數(shù)據(jù)塊中。因此,每一個(gè)多項(xiàng)式展開(kāi)擁有一個(gè)起始地址,并且多項(xiàng)式展開(kāi)的指數(shù)被置于相對(duì)于它們各自展開(kāi)式起始地址的地址上。如果存在公共指數(shù)值,即具有相同值并位于兩個(gè)或多個(gè)塊中的諸指數(shù),則這些公共指數(shù)值被存儲(chǔ)于存儲(chǔ)器件中的單獨(dú)兩維地址上。
其次,如框(242)所示,計(jì)算元讀取存儲(chǔ)于存儲(chǔ)器件中的多個(gè)指數(shù)值。這是通過(guò)設(shè)定一個(gè)指向當(dāng)前被計(jì)算的多項(xiàng)式展開(kāi)之起始地址的指針來(lái)完成的。將位于該兩維地址上的指數(shù)值從存儲(chǔ)器件中取回,之后該指針增值以指向該多項(xiàng)式展開(kāi)的另一個(gè)指數(shù)。重復(fù)取回指數(shù)值然后指針增值的步驟,直至該多項(xiàng)式的最后一個(gè)指數(shù)被取回。
圖11描述一個(gè)包含指數(shù)值的數(shù)據(jù)塊之示例。根據(jù)一個(gè)實(shí)施例,數(shù)據(jù)塊(250)包含一組數(shù)據(jù)元,其中每個(gè)數(shù)據(jù)元表示作為一個(gè)兩位數(shù)字字的指數(shù)值。第一個(gè)數(shù)據(jù)元(254)表示指數(shù)g1,1,最后一個(gè)數(shù)據(jù)元表示指數(shù)g128,64。數(shù)據(jù)塊(250)的諸指數(shù)值被用以計(jì)算由公式1給出之形式的多項(xiàng)式展開(kāi)。
每一個(gè)指數(shù)被定位于存儲(chǔ)器件中的一個(gè)兩維地址(i,j),其中i表示行地址,j表示列地址。軸(260)表示行地址的諸個(gè)值,軸(262)表示列地址的諸個(gè)值。
數(shù)據(jù)塊(250)可被存入圖9中的存儲(chǔ)器件(222)。在此情形下,諸指數(shù)值可被存入存儲(chǔ)器件(222),以使得每一個(gè)列地址可以指向一些指數(shù)值,它們被圖9中計(jì)算機(jī)(216)的一組計(jì)算元中特定的一個(gè)計(jì)算元讀取,且每一個(gè)行地址可以指向一些指數(shù)值,它們被應(yīng)用于一組數(shù)據(jù)輸入中特定的一個(gè)。例如,數(shù)據(jù)塊(250)可被用于計(jì)算機(jī)(216)中,旨在提供用于64個(gè)計(jì)算元和128個(gè)數(shù)據(jù)輸入的諸指數(shù)值。
盡管圖11顯示一個(gè)擁有128個(gè)行地址,64個(gè)列地址,以及128×64個(gè)指數(shù)值的數(shù)據(jù)塊,但是,具備普通技能的人將理解,一個(gè)數(shù)據(jù)塊可擁有任意數(shù)目的行地址和列地址,以及任意數(shù)目的指數(shù)值。同樣,一個(gè)技術(shù)上熟練的人將認(rèn)識(shí)到,當(dāng)數(shù)據(jù)塊(250)被存儲(chǔ)于存儲(chǔ)器件(222)中時(shí),行地址和列地址可以交換,以分別指向被一個(gè)特定計(jì)算元讀取的諸指數(shù)和對(duì)應(yīng)于一個(gè)特定數(shù)據(jù)輸入的諸指數(shù)。
于是,在這里已經(jīng)描述了用以將數(shù)據(jù)存入一個(gè)存儲(chǔ)器件的一種方法之概念,以及包含一個(gè)最佳實(shí)施例的若干實(shí)施例,這種方法減少數(shù)據(jù)所需的存儲(chǔ)空間。
對(duì)于技術(shù)上嫻熟的人們,將十分明了的是,所揭示的發(fā)明可以通過(guò)眾多的途徑加以改變,并且可以設(shè)想多種不同于以上所特別設(shè)計(jì)和描述之最佳形式的實(shí)施例。
相應(yīng)地,通過(guò)所附權(quán)利要求,意在涵蓋落入本發(fā)明之真正精神與范圍之內(nèi)的,對(duì)本發(fā)明的所有變更形式。
權(quán)利要求
1. 一種用以將一組數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件的方法,上述一組數(shù)據(jù)塊中每一個(gè)數(shù)據(jù)塊擁有一組數(shù)據(jù)元,本方法包括下列步驟(a)確定在該組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間是否存在一個(gè)公共數(shù)據(jù)元;和(b)將該組數(shù)據(jù)塊存入存儲(chǔ)器件,以便如果該組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間存在公共數(shù)據(jù)元,則該組數(shù)據(jù)塊中這兩個(gè)數(shù)據(jù)塊之間的公共數(shù)據(jù)元被存入存儲(chǔ)器件內(nèi)的一個(gè)單獨(dú)區(qū)域。
2.權(quán)利要求1所述的方法,特征在于每個(gè)數(shù)據(jù)元是一個(gè)長(zhǎng)度為n位的數(shù)字字,特征在于n是一個(gè)整數(shù)。
3.權(quán)利要求2所述的方法,特征在于n為2。
4.權(quán)利要求1所述的方法,特征在于該組數(shù)據(jù)元中的每個(gè)數(shù)據(jù)元為通過(guò)一個(gè)n-維地址可存取的,特征在于n是一個(gè)整數(shù)。
5.權(quán)利要求4所述的方法,特征在于n為2。
6.權(quán)利要求1所述的方法,特征在于該組數(shù)據(jù)元中的每個(gè)數(shù)據(jù)元相當(dāng)于一個(gè)多項(xiàng)式展開(kāi)中的一個(gè)指數(shù)。
7.權(quán)利要求6所述的方法,特征在于上述多項(xiàng)式展開(kāi)具有以下形式y(tǒng)=∑x1g1ix2g2i…xngni其中y表示一個(gè)函數(shù);其中i,m和n為整數(shù);其中x1,x2,...,xn表示自變量;以及其中g(shù)1i,...,gni表示上述展開(kāi)式中第i項(xiàng)的指數(shù),它們被施加于上述自變量。
8.權(quán)利要求1所述的方法,特征在于對(duì)于一組數(shù)據(jù)塊對(duì),步驟(a)和(b)被重復(fù)。
9.一種用以將一組數(shù)據(jù)塊存入一個(gè)存儲(chǔ)器件的方法,該組數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊擁有一個(gè)起始地址和一組可尋址的數(shù)據(jù)元,并且該組數(shù)據(jù)元中的每個(gè)數(shù)據(jù)元擁有一個(gè)相對(duì)于上述起始地址的地址,該組數(shù)據(jù)塊擁有第一和第二數(shù)據(jù)塊,本方法包括以下步驟(a)為上述第一和第二數(shù)據(jù)塊指定起始地址,以使得第二數(shù)據(jù)塊的那組數(shù)據(jù)元的至少一個(gè)數(shù)據(jù)元之地址與第一數(shù)據(jù)塊的那組數(shù)據(jù)元的至少一個(gè)數(shù)據(jù)元之地址相同;(b)確定第一和第二數(shù)據(jù)塊的一組數(shù)據(jù)元中,擁有相同地址的至少一個(gè)數(shù)據(jù)元是否相等;(i)如果是,建立一個(gè)重迭記錄,它包含第二數(shù)據(jù)塊的起始地址和第一與第二數(shù)據(jù)塊之間公共數(shù)據(jù)元的數(shù)目;(ii)如果非,繼續(xù)執(zhí)行步驟(c)(c)改變第二數(shù)據(jù)塊的起始地址;(d)重復(fù)步驟(b)-(c),直至找到公共數(shù)據(jù)元的最大數(shù)目;(e)將第一數(shù)據(jù)塊存儲(chǔ)于存儲(chǔ)器件內(nèi)步驟(a)中所分配的起始地址上;以及(f)將第二數(shù)據(jù)塊存儲(chǔ)于存儲(chǔ)器件內(nèi)由公共元最大數(shù)目對(duì)應(yīng)的重迭記錄所給定的起始地址上。
10.在一臺(tái)計(jì)算機(jī)內(nèi),包含一個(gè)存儲(chǔ)器件,一個(gè)用以將一組數(shù)據(jù)塊存入存儲(chǔ)器件的存儲(chǔ)器管理單元,上述諸數(shù)據(jù)塊中的每一個(gè)擁有一組數(shù)據(jù)元,上述存儲(chǔ)器管理單元包括確定裝置,用以確定一組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間是否存在一個(gè)公共數(shù)據(jù)元;以及存儲(chǔ)裝置,有效地連接至上述存儲(chǔ)器件,并響應(yīng)于上述確定裝置,用于將上述一組數(shù)據(jù)塊存入存儲(chǔ)器件,以便如果該組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間存在公共數(shù)據(jù)元,則該組數(shù)據(jù)塊中的兩個(gè)數(shù)據(jù)塊之間的公共數(shù)據(jù)元被存入存儲(chǔ)器件的一個(gè)單獨(dú)區(qū)域。
全文摘要
提供一種將數(shù)據(jù)存入一個(gè)存儲(chǔ)器件(222)的方法。本方法在一個(gè)兩維地址空間內(nèi)存儲(chǔ)諸數(shù)據(jù)元組成的塊,以使得這些塊在上述地址空間內(nèi)重疊。上述數(shù)據(jù)元可為表示多項(xiàng)式展開(kāi)之指數(shù)的數(shù)字字。
文檔編號(hào)G06F12/02GK1164900SQ95194545
公開(kāi)日1997年11月12日 申請(qǐng)日期1995年6月30日 優(yōu)先權(quán)日1994年8月10日
發(fā)明者斯科特·E·勞埃德, 謝伊-平·T·王 申請(qǐng)人:摩托羅拉公司