国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備的制作方法

      文檔序號:6418970閱讀:226來源:國知局
      專利名稱:數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及涉及轉(zhuǎn)換硬件支援設(shè)備,特別是涉及用于軟件升級的狀態(tài)復(fù)制方法中的轉(zhuǎn)換硬件支援設(shè)備。
      在進行軟件更新中,通常有對被更新的系統(tǒng)的操作的某種干擾。這個干擾的范圍可以是從數(shù)小時和可能數(shù)日的整個系統(tǒng)關(guān)機到例如只有數(shù)秒鐘的只對整個系統(tǒng)功能的有限的局部的短暫干擾??梢韵嘈牛赡芨緵]有干擾,不過在實際的現(xiàn)有系統(tǒng)中通常并非如此。然而,對于通信交換這樣的系統(tǒng)來說,干擾要小且盡可能短是非常重要的。
      即使借助永久性地長時間執(zhí)行的軟件模塊,要實現(xiàn)沒有干擾的軟件更新,先決條件是在舊軟件繼續(xù)地執(zhí)行的同時以來自舊軟件的所有必要數(shù)據(jù)來更新新軟件。當(dāng)新軟件的數(shù)據(jù)的狀態(tài)達(dá)到與舊軟件相同的狀態(tài)時,新軟件就把執(zhí)行接過來。
      更新軟件的最簡單的方法是停止舊軟件的執(zhí)行,裝入新軟件,最后執(zhí)行新軟件。采用這個方法,在舊軟件與新軟件之間不傳輸數(shù)據(jù)。此外,所有被建立的軟件過程都丟失,并且軟件的執(zhí)行在新軟件的裝入和啟動期間被停止。這個方法一般用于例如工作站和個人電腦。
      在(AXE10軟件的遠(yuǎn)程升級和更新)(Ericsson Review 1996年第2期66、67頁)中描述了用于通信系統(tǒng)的一種改進方法。這里,在舊軟件仍然在處理向用戶提供的服務(wù)建立的同時裝入新軟件。數(shù)據(jù)在舊軟件與新軟件之間傳輸。含有要傳輸?shù)臄?shù)據(jù)的數(shù)據(jù)變量在所謂的數(shù)據(jù)改變信息中被標(biāo)識,并且可以是復(fù)制(copy)或轉(zhuǎn)換(convert)類型的。對于每個轉(zhuǎn)換數(shù)據(jù)變量,執(zhí)行在數(shù)據(jù)改變信息中指定轉(zhuǎn)換程序,以實現(xiàn)轉(zhuǎn)換并向新軟件傳輸轉(zhuǎn)換輸出。然而在從舊軟件向新軟件傳輸已經(jīng)建立的服務(wù)所必需的數(shù)據(jù)期間,另外的服務(wù)的建立被停止。


      圖16中表示了作為迄今為止的各方法的基礎(chǔ)的一種硬件體系結(jié)構(gòu)。為了使舊軟件能在裝入新軟件的同時繼續(xù)執(zhí)行,將系統(tǒng)體系結(jié)構(gòu)劃分成A端和B端。A端包含第一處理與控制單元10和第一存儲器分區(qū)12。存儲器分區(qū)12存儲在處理與控制單元10中執(zhí)行的并通過處理與控制單元10控制的數(shù)據(jù)和軟件模塊。為了數(shù)據(jù)和軟件信息的交換,提供由數(shù)據(jù)地址總線控制單元18控制的地址總線14和數(shù)據(jù)總線16。數(shù)據(jù)地址總線控制單元18通過數(shù)據(jù)一地址總線控制線20與處理與控制單元10相連。
      此外,提供將地址總線14和數(shù)據(jù)總線16與為軟件的更新而提供的外部更新總線24連接的更新總線控制單元22。更新總線控制單元22通過更新總線控制線26與處理與控制單元10相連,用于控制。通過復(fù)制/轉(zhuǎn)換數(shù)據(jù)線28向更新總線控制線22傳遞與通過更新總線24傳輸?shù)臄?shù)據(jù)相關(guān)的復(fù)制/轉(zhuǎn)換信息,也是一種選擇。
      如圖16中所示,所述的關(guān)于A端的結(jié)構(gòu)同樣適用于B端。所以,在B端提供第二處理與控制單元30和第二存儲器分區(qū)32。第二處理與控制單元30和第二存儲器分區(qū)32由兩個都由第二數(shù)據(jù)總線控制單元38控制的第二地址總線34和第二數(shù)據(jù)總線36相連。第二數(shù)據(jù)總線控制單元38通過第二數(shù)據(jù)/地址總線控制單元線40與第二處理與控制單元30相連。為了實現(xiàn)數(shù)據(jù)的外部交換,提供通過第二更新總線控制線44與第二處理與控制單元30相連的第二更新總線控制單元42。要在A/B端之間分別傳輸?shù)膹?fù)制/轉(zhuǎn)換數(shù)據(jù),是通過第二復(fù)制/轉(zhuǎn)換數(shù)據(jù)線46向第二更新總線控制單元42傳遞的。
      如圖16中所示,這種劃分成兩部分的體系結(jié)構(gòu),便于在裝入新軟件的同時進一步執(zhí)行舊軟件,含有要傳輸?shù)臄?shù)據(jù)的數(shù)據(jù)變量或者從A端向B端復(fù)制和轉(zhuǎn)換,或者相反。
      然而,這個方法的問題是,在軟件的更新期間,總體系統(tǒng)性能降低。特別地,通常在數(shù)據(jù)的傳輸期間,為了獲得舊軟件和新軟件中的一致性的數(shù)據(jù)副本,服務(wù)要被停止。
      如圖16中所示劃分成兩部分的體系結(jié)構(gòu)的另外一個缺點是,沒有用于數(shù)據(jù)轉(zhuǎn)換的專用硬件支援設(shè)備。所以,基于軟件的數(shù)據(jù)轉(zhuǎn)換會變得耗費時間,并導(dǎo)致停機時間的增加,由此導(dǎo)致采用這種硬件結(jié)構(gòu)的服務(wù)供應(yīng)商的利潤損失。
      為了克服這個缺點,在US-A-5,5,155,837中提出了在第一步驟中將用于新服務(wù)的數(shù)據(jù)的輸出切換到新軟件。當(dāng)以舊軟件為基礎(chǔ)正在進行中的服務(wù)已經(jīng)全部結(jié)束時,就將來自這些正在進行中的服務(wù)的數(shù)據(jù)的輸出從舊軟件切換到新軟件。因此,與舊軟件相關(guān)的服務(wù)必須在新軟件工作之前結(jié)束,所以只可能以短暫的時間來處理服務(wù)。在US-A-5,5,155,837中也沒有披露數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備。
      鑒于以上情況,本發(fā)明的目的是在基于計算機的系統(tǒng)中實現(xiàn)高效的軟件更新。
      按照本發(fā)明,這個目的是通過一個分區(qū)類型的軟件處理系統(tǒng)實現(xiàn)的,該系統(tǒng)包含帶有第一存儲器裝置的第一分區(qū),帶有第二存儲器裝置的第二分區(qū),其中第一分區(qū)與第二分區(qū)是通過一個連接裝置相連的,并且適合在舊軟件的執(zhí)行期間將一個存儲器裝置中的新軟件的狀態(tài)更新到另一個存儲器裝置中的舊軟件的狀態(tài),數(shù)據(jù)從舊軟件向新軟件的傳輸是由一個適合輸出與要轉(zhuǎn)換的數(shù)據(jù)變量相關(guān)的轉(zhuǎn)換程序的起始地址的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備支持的。
      因此,本發(fā)明提供一種硬件實現(xiàn),用來在基于計算機的系統(tǒng)中在軟件例如由于增加的功能和/或由于錯誤的校正而進行的更新期間,實現(xiàn)與舊軟件和新軟件相關(guān)的數(shù)據(jù)的必要傳輸和轉(zhuǎn)換。
      本發(fā)明進一步提供一種被改造成翻譯存儲裝置的存取裝置,用來確定存儲器設(shè)備中各預(yù)定數(shù)據(jù)值的存儲地址,各數(shù)據(jù)值(在特例中)是可選地按照有節(jié)點、分支、子樹和樹葉的二進制樹數(shù)據(jù)結(jié)構(gòu)以有序的順序存儲的。存儲裝置包含一個讀出裝置,用于讀出存儲器設(shè)備的當(dāng)前檢索地址處的數(shù)據(jù)值;一個比較裝置,用于將讀出的數(shù)據(jù)值與要檢索的數(shù)據(jù)值作比較,以確定讀出的數(shù)據(jù)值大于還是小于要檢索的數(shù)據(jù)值;確定裝置,用于根據(jù)比較結(jié)果和當(dāng)前檢索地址確定為檢索數(shù)據(jù)值而要檢索的下一個完整的檢索地址,其中,讀出裝置、比較裝置和確定裝置循環(huán)地進行讀出、比較和確定,直到讀出的數(shù)據(jù)值與要檢索的數(shù)據(jù)值在允許偏差的范圍內(nèi)匹配。
      所以按照該特例的存取裝置顯著地不同于用存儲密集的指針方案(storage intensive pointer scheme)來確定二進制樹中節(jié)點的地址的常規(guī)方法。特別地,在二進制樹的遍歷期間,地址的最高有效部分在向二進制樹遍歷期間的每一個步驟中都改變。
      對采用行對應(yīng)于地址的最高有效部分、列對應(yīng)于地址的最低有效部分的行/列尋址方案的一般DRAM來說,這是耗費時間的。
      與此相反,本發(fā)明提供一種存取裝置和相關(guān)方法,用來在二進制樹檢索期間確定存儲器設(shè)備中的預(yù)定數(shù)據(jù)值的存儲地址,但不使用指針來確定存儲位置。該存取裝置也能比各已知方法快地存儲地址。
      實質(zhì)上,本發(fā)明認(rèn)識到?jīng)]有必要頻繁改變地址的最高有效部分,地址的列部分和地址的行地址部分二者都是根據(jù)比較結(jié)果和當(dāng)前地址而確定的。在本發(fā)明中,映射的列地址部分與映射的行地址部分的組合,便于縮短在存儲器中找到數(shù)據(jù)值之前的檢索時間。
      按照本發(fā)明,當(dāng)在檢索期間到達(dá)子樹的樹葉時,就確定了另一個子樹的新的根節(jié)點。如果數(shù)據(jù)值在這個子樹中仍然找不到,檢索過程就從當(dāng)前子樹中的該樹葉節(jié)點轉(zhuǎn)移到另一個子樹的另一個根節(jié)點一直到到達(dá)整個樹的底部樹葉。由于檢索總是意味著從底部向頂部遍歷樹,檢索將主要導(dǎo)致在子樹內(nèi)部的遍歷。只要少量的步驟就將導(dǎo)致子樹的改變。按照本發(fā)明的映射的結(jié)果是,在子樹內(nèi)部遍歷期間,只有列地址改變。所以,導(dǎo)致行地址的改變的步驟數(shù)被最小化,就是說,行地址中的變化被保持在最小限度。因此,檢索的時間將被極大地縮短。
      現(xiàn)在結(jié)合以下各附圖來說明本發(fā)明的增加實施例。
      圖1表示按照本發(fā)明的數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備的體系結(jié)構(gòu);圖2表示通過按照本發(fā)明的數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備所支持的狀態(tài)復(fù)制方法的不同步驟;圖3表示按照圖2中所示狀態(tài)復(fù)制方法的流程圖;圖4表示圖1中所示的翻譯表存儲單元的體系結(jié)構(gòu);圖5表示圖1中所示的匹配單元的存儲器裝置,各數(shù)據(jù)值在其中是隨機地在各特定地址位置存儲的;圖6表示用于在圖1中所示匹配單元的存儲器設(shè)備中進行二進制樹檢索的邏輯二進制樹結(jié)構(gòu);圖7表示按照本發(fā)明采用子樹的二進制樹結(jié)構(gòu);圖8表示每行被映射到圖7中所示子樹的存儲器設(shè)備;圖9表示圖8中所示子樹中數(shù)據(jù)的組織;圖10是表示由按照本發(fā)明采用二進制樹結(jié)構(gòu)的特例的匹配單元使用的檢索方法的流程圖;圖11表示按照二進制樹結(jié)構(gòu)在存儲器中存儲的數(shù)據(jù)值的例子;圖12表示對應(yīng)圖11中例子的二進制樹和節(jié)點的各個位置;圖13表示按照本發(fā)明用于訪問在圖1中所示翻譯表存儲單元中存儲的數(shù)據(jù)值的存取裝置的實施例;
      圖14表示通過圖1中所示的逆地址計算單元執(zhí)行的逆地址計算的例子;圖15表示通過圖1中所示的逆地址計算單元執(zhí)行的逆地址計算的另一個例子;圖16表示按照本發(fā)明的技術(shù)背景的分區(qū)類型的軟件處理系統(tǒng)的體系結(jié)構(gòu);圖17表示按照方程(13)為獲得推出條件而對圖10中所示算法的添加。
      圖1表示按照本發(fā)明的數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備的基本體系結(jié)構(gòu)。與前文針對圖16所述的相象或相同的部分是用相同的標(biāo)注數(shù)字標(biāo)注的,這里省略對它們的說明。
      如圖1中所示,該數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備的體系結(jié)構(gòu)與以前已知方法的不同之處在于提供了專用的轉(zhuǎn)換支持單元50。這里,轉(zhuǎn)換支持單元50可以是個單獨的單元,或者是分別與軟件處理系統(tǒng)的不同分區(qū)A、B即A端和B端相應(yīng)的相同的單元。轉(zhuǎn)換支持單元50包含轉(zhuǎn)換隊列單元52、翻譯表存儲單元54、匹配單元56和逆地址計算單元58。
      如圖1中所示,要在轉(zhuǎn)換支持單元50中被轉(zhuǎn)換的數(shù)據(jù)變量的地址,是通過地址輸入線60向其提供的,地址輸入線60在點62與A端相連,在點64處與B端分區(qū)相連。
      向轉(zhuǎn)換支持單元50提供的地址被存儲在轉(zhuǎn)換隊列單元52中。這個轉(zhuǎn)換隊列單元52是被傳輸?shù)臄?shù)據(jù)變量的地址的緩沖器,例如可以以動態(tài)RAM存儲器來實現(xiàn)。此外,如果當(dāng)轉(zhuǎn)換隊列單元52充滿時需要暫停向隊列存儲新數(shù)據(jù),則從轉(zhuǎn)換隊列單元52發(fā)出一個背壓信號,或者通過第一背壓信號線66傳送到第一更新總線控制單元22,或者通過第二背壓信號線68傳送到第二更新總線控制單元42。
      如圖1中所示,轉(zhuǎn)換支持單元50進一步包含翻譯表存儲單元54,后者包含對應(yīng)每個最終可能被傳輸?shù)睫D(zhuǎn)換隊列單元52的地址的條目。該條目便于導(dǎo)出關(guān)于與轉(zhuǎn)換隊列單元52中的地址相關(guān)的數(shù)據(jù)結(jié)構(gòu)和轉(zhuǎn)換軟件的信息。因此,在地址被提供給翻譯表存儲單元54后,與向其提供的地址相應(yīng)的翻譯表的輸出將是DWA與提供給翻譯表存儲單元54的地址相關(guān)的數(shù)據(jù)結(jié)構(gòu)的起始地址;
      DINFO關(guān)于逆地址計算和/或轉(zhuǎn)換所必需的變量的結(jié)構(gòu)信息;PA該變量的轉(zhuǎn)換程序的地址。
      因此,由轉(zhuǎn)換支持單元50執(zhí)行的第一步驟是在翻譯表存儲單元54中尋找與從轉(zhuǎn)換隊列單元52中提取的地址相對應(yīng)的條目。為了有效地在翻譯表存儲單元54中進行檢索,提供了一個匹配單元56,其中實現(xiàn)在翻譯表存儲單元54中的該檢索的方式是,檢索低于或等于通過地址提供線60從轉(zhuǎn)換隊列單元52提供的給定地址的最高DWA。
      特別地,在一個特例中,匹配單元56用二進制樹進行該檢索。下文將結(jié)合圖5至12對此作更詳細(xì)的解釋。
      一旦得到要作轉(zhuǎn)換的數(shù)據(jù)變量和關(guān)于相關(guān)數(shù)據(jù)結(jié)構(gòu)的信息的地址,它就被通過地址提供線70、DWA提供線72和DINFO提供線74提供給逆地址計算單元58。逆地址計算單元53用該信息導(dǎo)出關(guān)于該要作轉(zhuǎn)換的變量的額外信息,例如數(shù)組中的索引或矩陣的索引下。
      一般來說,該結(jié)果可能由N個組成,它們分別通過偏移提供線76-1,…,76-N被提供給A端或B端。用來在第一處理控制單元10或第二處理控制單元30中實際執(zhí)行轉(zhuǎn)換的轉(zhuǎn)換程序的地址,也通過圖1中所示的轉(zhuǎn)換程序地址線78向其提供。
      如圖1中所示,數(shù)據(jù)轉(zhuǎn)換硬件支援設(shè)備使用更新總線24。地址在這里在A端與B端之間傳輸或相反。地址被用來分別向更新過的被加載存儲器分區(qū)32或12寫入。在每端為在要被更新的該端有存儲器分區(qū)的獨立用戶的存儲器分區(qū)訪問提供一個判優(yōu)邏輯(未予示出)。
      如果需要轉(zhuǎn)換程序的延遲啟動,按照本發(fā)明,轉(zhuǎn)換支持單元50也可以包含一個可以添加的相關(guān)聯(lián)的緩沖器單元(未予示出),用來存儲通過匹配單元56和逆地址計算單元58獲得的翻譯結(jié)果。在這種情況中,該相關(guān)聯(lián)的緩沖器單元延遲轉(zhuǎn)換程序的實際啟動。如果該相關(guān)聯(lián)的緩沖器單元從不將相同的條目存儲兩次,就可以保證在預(yù)定的延遲間隔期間相同的轉(zhuǎn)換不會被啟動數(shù)次?,F(xiàn)在將結(jié)合圖2和3來解釋用上述的硬件結(jié)構(gòu)為轉(zhuǎn)換而執(zhí)行的基本過程。為了解釋的目的而不是限制本發(fā)明的范圍,假設(shè)數(shù)據(jù)是從A端向B端傳輸?shù)?,并且新軟件被裝入B端的存儲器分區(qū)。
      如圖2中所示,在第一步驟1中,兩端A和B都正在執(zhí)行并行的同步的程序,并且執(zhí)行相同的軟件。進一步,圖2中所示的步驟2涉及在第一處理與控制單元10中舊軟件繼續(xù)執(zhí)行的同時向B端裝入新軟件。在步驟3中,第一處理與控制單元10進行將數(shù)據(jù)從A端向B端的復(fù)制。
      如與步驟3相關(guān)的較低部分中所示,數(shù)據(jù)不僅能被復(fù)制,也能按照本發(fā)明在向B端傳輸?shù)倪^程中在轉(zhuǎn)換支持單元50中被轉(zhuǎn)換。這里,該轉(zhuǎn)換并行于并且不干擾第一處理與控制單元10中的軟件的執(zhí)行,以便能顯著提高速度。
      如圖2中所示,在步驟4中,第二處理與控制單元30執(zhí)行對第二存儲器分區(qū)32的初始化,該執(zhí)行并行于并且不干擾第一處理與控制單元10中運行的軟件。這里,該初始化步驟或者在按照步驟2將新軟件裝入第二存儲器分區(qū)32之后執(zhí)行,或者視在步驟3中從舊軟件復(fù)制的數(shù)據(jù)而定盡快地執(zhí)行。
      此外,與舊軟件相關(guān)的數(shù)據(jù)可能只有一部分被傳輸,在切換到B端之前或緊接著切換之后,要執(zhí)行特殊的初始化步驟,以執(zhí)行不需要從舊軟件輸入完全數(shù)據(jù)的缺省初始化操作。
      如圖2中所示,一旦在步驟5中達(dá)到適當(dāng)?shù)臓顟B(tài),就通過第二處理與控制單元30執(zhí)行向新軟件的執(zhí)行的切換。這里,在兩個存儲器分區(qū)12和32中對應(yīng)的軟件模塊分別達(dá)到相同的狀態(tài)后立即就可以按照單一的軟件模塊執(zhí)行切換。如果有由于只傳輸部分?jǐn)?shù)據(jù)而在切換時沒有被傳輸?shù)呐c舊軟件相關(guān)的數(shù)據(jù),可以在新軟件的啟動之前,必要的話,仍然可以傳輸該數(shù)據(jù)。
      此外,如圖2中所示,按照本發(fā)明,對于步驟3和4,轉(zhuǎn)換支持單元50在對B端存儲器分區(qū)的初始化步驟期間也繼續(xù)運行。因此理由是軟件在更新過程期間被繼續(xù)執(zhí)行并且會重寫已經(jīng)被傳輸?shù)睫D(zhuǎn)換支持單元50的數(shù)據(jù)。因此,在后臺重復(fù)地執(zhí)行一個或幾個更新和轉(zhuǎn)換過程,直到切換到新軟件,以便跟蹤第一存儲器分區(qū)10中變化的狀態(tài)。這個重復(fù)的過程可以由轉(zhuǎn)換支持單元50與B端存儲器分區(qū)32的初始化步驟并行地執(zhí)行。
      圖3表示與結(jié)合圖2所述更新過程相應(yīng)的流程圖。特別地,可以看到新軟件在準(zhǔn)備步驟的同時被裝入。按照本發(fā)明,轉(zhuǎn)換支持單元50以并行方式同時運行,直到發(fā)生向B端的切換。
      因此,按照本發(fā)明,在用轉(zhuǎn)換支持單元50中的硬件支援設(shè)備(hardware support)執(zhí)行新軟件的更新和與舊軟件相關(guān)的數(shù)據(jù)的傳輸?shù)耐瑫r,舊軟件的執(zhí)行不被中斷。
      以上結(jié)合圖1至3概述了數(shù)據(jù)轉(zhuǎn)換的硬件支援設(shè)備的要點。下面將結(jié)合圖4至15特別對翻譯表存儲單元54、匹配單元56和逆地址計算單元58作進一步詳細(xì)的說明。
      圖4表示翻譯表存儲單元54的內(nèi)部結(jié)構(gòu)。如以上概述的那樣,對于每個最終可能通過轉(zhuǎn)換支持單元50被轉(zhuǎn)換的數(shù)據(jù)變量,提供要作轉(zhuǎn)換的所有變量的對應(yīng)集合Vs中的一個條目viVs={v1,…,vi,…,vs} (11)每個地址和因此翻譯表中的每個條目與數(shù)據(jù)結(jié)構(gòu)dj相關(guān)dj= {nj;DWA,…,αi,…;…,DINFO,…;…,Pi,…} (12)這里,nj代表數(shù)據(jù)結(jié)構(gòu)中的變量的個數(shù),α代表數(shù)據(jù)結(jié)構(gòu)dj中的數(shù)據(jù)變量的地址,DINFO代表關(guān)于數(shù)據(jù)結(jié)構(gòu)dj中的變量的結(jié)構(gòu)信息,Pi代表分配給各個數(shù)據(jù)變量的轉(zhuǎn)換程序的起始地址。
      如圖4中所示,翻譯表只為每個條目vi和要被搜索的地址存儲數(shù)據(jù)結(jié)構(gòu)dj的第一變量的地址DMA。換言之,對于存儲數(shù)據(jù)結(jié)構(gòu)dj的不同的變量,由翻譯表存儲單元54輸出的將總是相同的起始地址DWA。
      此外,DINFO項涉及要被檢索的數(shù)據(jù)變量的結(jié)構(gòu)信息(例如,它是與一維數(shù)組、二維數(shù)組還是矩陣相關(guān))和任何其它靈活的數(shù)據(jù)結(jié)構(gòu)。
      翻譯表中每個條目的第三項是分配給要在處理與控制單元10和30之一中轉(zhuǎn)換的數(shù)據(jù)變量的轉(zhuǎn)換程序的起始地址Pi。
      對于被提供給轉(zhuǎn)換支持單元50的數(shù)據(jù)結(jié)構(gòu)的每個地址α,必須在翻譯表中DWA滿足下列方程的條目vi={v∈Vs|DWAi≤α∧α<DWAi+1} (13)圖5表示特別適合以最有效的方式進行這種檢索的匹配單元56和翻譯表存儲單元54的實施例。
      一般經(jīng)常需要在含有許多條目的存儲器中對特定數(shù)據(jù)值連同關(guān)聯(lián)信息一起進行快速檢索。一種選擇是在含有多個數(shù)據(jù)值的存儲器設(shè)備中順序地檢索特定數(shù)據(jù)值,當(dāng)找到該數(shù)據(jù)值時,讀出關(guān)聯(lián)信息。然而如果各數(shù)據(jù)值在存儲器設(shè)備中是隨機存儲的,則可能要搜索整個存儲器才能找到該數(shù)據(jù)值。
      為了避免搜索整個存儲器設(shè)備,也可以按照預(yù)定規(guī)則,例如排序,在存儲器設(shè)備中存儲數(shù)據(jù)值,以后在檢索過程中能用預(yù)定規(guī)則來查找數(shù)據(jù)值。
      圖5表示一例二維存儲器,其中的各數(shù)據(jù)條目是通過列地址部分和行地址部分B編址的,即地址S=<B(X),A(X)>。X可被看作為二進制樹中特定行地址和列地址交叉處的節(jié)點。如圖5中所示,各個數(shù)據(jù)值可以隨機地被存儲在存儲器設(shè)備中。另一種可能是用數(shù)據(jù)值到與二進制樹數(shù)據(jù)結(jié)構(gòu)相應(yīng)的存儲區(qū)的映射來表示排序的數(shù)據(jù)值。例如,WO96/09580披露了用二進制樹來進行對記錄的排序。
      如圖6中所示,在二進制樹數(shù)據(jù)結(jié)構(gòu)中每個節(jié)點(可以輸入或讀出數(shù)據(jù)值的交叉點X)與其它兩個節(jié)點相連。對整個二進制樹(或具有映射到該二進制樹的條目的存儲器設(shè)備)的檢索過程如下。從節(jié)點X1(位于行地址B(X)和列地址A(X))讀出數(shù)據(jù)值D1,將數(shù)據(jù)值D1與要被確定存儲地址的數(shù)據(jù)值I比較。如果I<D1,則取樹的左分支L,如果I>D1,則取樹的右分支R。數(shù)據(jù)結(jié)構(gòu)(或者說存儲器設(shè)備中的數(shù)據(jù)結(jié)構(gòu))在邏輯上的組織方式,使得節(jié)點X2具有的數(shù)據(jù)值D2,滿足D2<D1并且數(shù)據(jù)值D3>D1。實際上,假設(shè)有一系列數(shù)據(jù)
      ,存儲在根節(jié)點DRN處的數(shù)據(jù)值將樹劃分成數(shù)據(jù)值(0…DRN-1),DRN,(DRN+1…Dmax),其中首先被提及的數(shù)據(jù)和最后被提及的數(shù)據(jù)分別可以在左和右分支中找到。然而,由于各個數(shù)據(jù)值D1、D2、D3可能是隨機存儲在存儲器設(shè)備中的,所以對二進制樹檢索來說,有必要-在讀出A(X1)、B(X1)處的數(shù)據(jù)D1后一提供關(guān)于D2或D3的位置或存儲地址的信息。
      因此,常規(guī)上一種解決方案是每個數(shù)據(jù)值D1、D2、D3有關(guān)聯(lián)的(存儲的)兩個指針,即另外兩個包含指示大于(R)或小于(L)所讀出數(shù)據(jù)值的數(shù)據(jù)值的位置的地址的存儲位置。在如圖5中所示的存儲器設(shè)備本身中,盡管邏輯上使用二進制樹結(jié)構(gòu),其中每個更低子層次中存儲的數(shù)據(jù)值分別大于和小于前一個層次(子樹)中存儲的數(shù)據(jù)值,但只有一個使用地址指針的邏輯映射,各數(shù)據(jù)值原則上是隨機地存儲在存儲器設(shè)備中的。
      使用帶有不同地址指針的數(shù)據(jù)條目,要求預(yù)先定義根節(jié)點RN,根節(jié)點是數(shù)據(jù)值要從其讀出并與要檢索的數(shù)據(jù)值作比較的第一個節(jié)點。在“數(shù)據(jù)結(jié)構(gòu)與算法”(Aho、Hopcrot、Ullmann著,國際標(biāo)準(zhǔn)書號ISBN0-201-00023-7,155頁起)中描述了這種檢索算法。顯然,有一個缺點是,存儲各種數(shù)據(jù)值所需的存儲空間要求有額外的空間來存儲每個數(shù)據(jù)值的兩個另外的指示分支L、R的指針項。
      盡管圖5中有對存儲器設(shè)備中的邏輯二進制樹的明確表示,另一種解決方案是使用二進制樹數(shù)據(jù)結(jié)構(gòu)向存儲器設(shè)備中固定地址即向矩陣陣列的元素的映射。在這種情況中,各分支地址(branchingaddresses)是通過二進制樹節(jié)點向存儲器設(shè)備中的預(yù)定位置的映射而事先已知的,因此指針在這里不是必需的,不占用存儲空間。由于不必評估指針,就可以降低檢索時間,正如“數(shù)據(jù)結(jié)構(gòu)與算法”(Aho、Hopcrot、Ullmann著,國際標(biāo)準(zhǔn)書號ISBN0-201-00023-7,271頁起)中披露的那樣。采用這種各個節(jié)點X1、X2、X3向存儲器設(shè)備中特定位置的隱式映射,就能計算一個子樹內(nèi)的各個“子”節(jié)點X2、X3的地址。實際上,如果由列地址A代表左和右分支,則左分支處的下一個節(jié)點地址的計算方法是A(L(X))=2A(X)+0而由分支R的計算方式是A(R(X))=2A(X)+1。
      然而,對整個地址&lt;B,A&gt;采用這種映射,就意味著在對樹的短暫的初始遍歷之后,在遍歷的每一個進一步的步驟中,地址的最高有效分區(qū)(the most significant partition)改變。因此,對于要在動態(tài)隨機存取存儲器裝置中存儲的大型樹來說,由于數(shù)的大小,檢索時間仍然可能是可觀的。對于實際應(yīng)用來說,要求用特別是減少地址的最高有效分區(qū)的改變次數(shù)的更快的方法。
      以下所述的按照本發(fā)明的方法和存取裝置,根據(jù)的是二進制樹中各節(jié)點向最好是動態(tài)隨機存取存儲器DRAM的存儲器設(shè)備的地址的映射。然而,DRAM一般有非常高的存儲密度,對于隨機分布的存取來說,它們是相當(dāng)慢的。使用按照本發(fā)明的的特定尋址方式,能實現(xiàn)更少的存取時間。為此,一系列連續(xù)訪問的地址必須滿足一定的限制。按照本發(fā)明的的映射保證對樹的檢索總是滿足這些限制。性能的提高(時間的減少)能達(dá)到約10倍。
      如上文所述,DRAW的地址位通常被劃分成被稱為行地址B和列地址A的兩部分(見圖5)。一般來說,行和列地址的長度是相等的。由于DRAM的內(nèi)部實現(xiàn),如果能通過在盡可能保持行地址不變的同時只改變列地址來進行連續(xù)的訪問,則訪問時間就被顯著地縮短。所以,按照本發(fā)明的用于映射的新穎方法和存取裝置實現(xiàn)了一個符合盡可能保持行地址不變的標(biāo)準(zhǔn)的樹檢索算法。
      圖7表示按照本發(fā)明將二進制樹劃分成若干子樹。完全樹包含若干子樹,圖中顯示了是其中的子樹1、2、3、4、5。在圖7中,每個子樹有一個以“k=1”標(biāo)明的根節(jié)點。同樣,子樹的每個葉節(jié)點以“k=K”標(biāo)明?!発”是子樹的“深度”,即每個子樹內(nèi)有若干其它節(jié)點,在圖中只是以虛線粗略地表示。所以實際上在圖7中每個粗略表示的子樹都包含K層,對應(yīng)每個子樹中總共2K-1個節(jié)點。
      在通過其列和行地址訪問了一個根節(jié)點后,就在有K層(實際上層數(shù)K與存儲器中行的大小有關(guān))的子樹中相應(yīng)地進行檢索。每個子樹的(最低層的)葉節(jié)點與下一個子樹的相應(yīng)的根節(jié)點相連??赡茏⒁獾皆趫D7中只畫出了節(jié)點的一個子集。例如,子樹1的葉節(jié)點LN直接與子樹3的根節(jié)點X1相連。在根節(jié)點X1與其葉節(jié)點X2、X3之間又若干中間節(jié)點。根節(jié)點位于k=1的位置,葉節(jié)點位于k=K的位置。子樹5的葉節(jié)點LN同時也構(gòu)成整個二進制樹的一個葉節(jié)點。因此,區(qū)分整個數(shù)的根和葉與子樹的根和葉是重要的。在每個子樹中,每次遍歷一個子樹,變量k要從1步進到K,如此重復(fù),直到找到要檢索的值,或者到達(dá)整個樹的葉節(jié)點。
      子樹中的層數(shù)與實際的存儲器硬件有關(guān)。按照本發(fā)明進行的向各存儲位置的映射,使得一行中含有2K-1個條目即列。在下文中將會看到,按照本發(fā)明的在每個子樹內(nèi)的檢索,相當(dāng)于在一個個別行內(nèi)的檢索。沿該行的一例如沿子樹1的一各存儲位置(隨著列地址的增加而順序地)對應(yīng)于該特定子樹的根節(jié)點、中間節(jié)點和葉節(jié)點LN。將每個被讀出的數(shù)據(jù)值D1、D2、D3與要查找的數(shù)據(jù)值I作比較,決定需要采取的是子樹內(nèi)的左分支還是右分支。
      如圖6中所示,對于常規(guī)的二進制樹來說,樹是其中沒有循環(huán)的一種特殊的圖形;就是說,在樹中經(jīng)歷一個步驟后,返回到原來節(jié)點的唯一方式是從原路返回。這完全與自然樹相符。此外,樹的每一個本身構(gòu)成樹的部分是一個子樹。所以,樹一般含有許多子樹。
      如圖7所示的按照本發(fā)明的整個樹被以特殊的方式劃分成各子樹,使得各子樹是排它的,不與其它子樹相連;就是說,每個含有確實可以是互相連接的一個根節(jié)點、若干葉節(jié)點和中間節(jié)點的子樹,如圖9中所示,都不含有其它子樹的任何部分的。當(dāng)然,存在許多其它的由整個樹構(gòu)成子樹的方法。這個事實是重要的,因為僅僅說樹被劃分成子樹并不意味著那是如圖7中所示的那樣劃分的。所以,圖7定義了本發(fā)明中進行的特殊類型的子樹劃分。
      在一行(子樹)內(nèi)部的數(shù)據(jù)的組織如圖9中所示。根節(jié)點RN總是被映射到第一列地址A=1。假設(shè)數(shù)據(jù)范圍是Dmin到Dmax,則位于根節(jié)點RN的數(shù)據(jù)值D1將子樹劃分成數(shù)據(jù)值D=[Dmin,D1-1]位于左邊各節(jié)點,數(shù)據(jù)值D=[D1+1,Dmax]位于右邊各節(jié)點。值得注意的是,該劃分只給出范圍,而不是數(shù)據(jù)的實際值。實際上,k=2處的各下一層節(jié)點將按照各節(jié)點處存儲的相應(yīng)數(shù)據(jù)值D2、D3再次進行進一步劃分。然而如圖9中所見,數(shù)據(jù)值D2<D1位于列地址A’=2A,而右分支上的數(shù)據(jù)值D3則位于新的列地址A’=2A+1。數(shù)據(jù)值D4、D5又是分別被存儲在列地址2A、2A+1。假設(shè)K=3,顯然數(shù)據(jù)值D4、D5、D6、D7構(gòu)成了子樹的葉節(jié)點,如圖9中所示。一般來說,左分支上新節(jié)點地址將是2A,在右分支上的則是2A+1。一般來說,有2K+1個葉節(jié)點,顯然數(shù)據(jù)值DK被存儲在列地址2K-1。中間節(jié)點IN的個數(shù)為2K-1-2。這描述了一行中各節(jié)點向各個列地址的映射。
      然而,在到達(dá)一行中的葉節(jié)點(K=3時的D4、D5、D6、D7或DK或列的右端的2K-1個節(jié)點后,問題是在矩陣存儲器中的什么位置尋找下一層根節(jié)點(K=3時的D4’、D4”…和k=K時的DK’、DK”)。如圖9中所示,下一層子樹的根節(jié)點總是位于位置A=1,然而,未必是根節(jié)點和下一行中存儲的下一層中間節(jié)點和也節(jié)點。按照本發(fā)明,下一個子樹的的下一個根節(jié)點位于列位置A=1和行位置B(L(L(X))和B(R(X))。按照本發(fā)明,左分支的數(shù)據(jù)值D’4、D’4被存儲在B(L(X))=2K*B(X)=2*A(X)+0-2K而在右分支上相連的子樹的下一個根節(jié)點位于行地址B(R(X))=2K*B(X)=2*A(X)+1-2K由圖8也可看到,下一個子樹(相關(guān)聯(lián)的行)未必位于與前面的子樹相鄰的位置。
      按照圖9的二進制樹的各節(jié)點向存儲器中各存儲位置的映射,意味著各條目是在按照樹中的(因此也是如圖7、8、9中各值所指示的子樹內(nèi)的)值的增序排序的二進制樹的節(jié)點中存儲的。
      當(dāng)然,以二進制樹中的增序(對應(yīng)于圖9中所示的存儲器行的特定順序)存儲各個數(shù)據(jù)值,對每個子樹中使用的從子樹葉向下一個子樹根節(jié)點檢索的檢索算法有影響。
      如前文解釋的那樣,主要目的是使行變化盡可能地少,即盡可能地不經(jīng)常地址S=&lt;B,A&gt;的最高有效部分,因為只有按列方向的檢索是非常迅速的。列向地按照特定順序存儲一行中一個子樹的數(shù)據(jù)值,導(dǎo)致的結(jié)果是按列方向上的最后各條目構(gòu)成每個子樹的葉節(jié)點LN。所分配的葉節(jié)點LN(圖8中葉節(jié)點存儲位置)的多少取決于子樹內(nèi)的層次數(shù),即取決于存儲器在列方向上的大小。例如,層數(shù)K=3的子樹包含在列方向上最左邊位置的四個葉節(jié)點LN(也參看圖11、12中的例子)。
      鑒于以上所解釋的映射,應(yīng)當(dāng)注意在整個說明中,(邏輯)表述“節(jié)點”等同于存儲器中(物理的)被映射的存儲位置。
      如以上概述的那樣,本發(fā)明提供二進制樹向二維存儲空間的映射,使得每行對應(yīng)于一個子樹,并在每行或子樹內(nèi)使用特定的檢索策略。如果發(fā)現(xiàn)所讀出的值與要檢索的數(shù)據(jù)值之間匹配,或者如果找到一個葉節(jié)點LF,則檢索停止。因此,在每個子樹內(nèi)進行檢索的同時,檢索算法必須留意它所在的層,這是因為只有當(dāng)?shù)竭_(dá)葉節(jié)點時才改變行地址B。在本發(fā)明中不僅發(fā)現(xiàn)能在每個子樹內(nèi)計算檢索地址,而且發(fā)現(xiàn)只有根據(jù)比較結(jié)果和葉節(jié)點的當(dāng)前地址才能計算下一個子樹的特定的新的根節(jié)點地址。就是說,按照本發(fā)明,定義要讀出的下一個數(shù)據(jù)值所在的節(jié)點的新的完全地址S=&lt;B,A&gt;,是從當(dāng)前讀出的存儲位置的當(dāng)前地址并根據(jù)比較結(jié)果計算的。這適用于子樹內(nèi)的下一個節(jié)點的地址,對尋找要被檢索的下一個子樹的下一個根節(jié)點的存儲地址也是有效的。
      圖10表示與按照本發(fā)明的檢索方法的一個實施例相應(yīng)的流程圖。應(yīng)當(dāng)注意,對于該算法來說,整個二進制樹按照圖7被劃分成各子樹,根子樹以下層次的最左邊的子樹被截除。
      如上所述,如果存儲器被預(yù)先定義有m列,則層數(shù)是K=ln(m)/ln2(或下一個更小整數(shù)),實際硬件的列地址中的位數(shù)等于K,其中K是子樹中的層數(shù)。注意到在圖7、8、9所有例子中,由于數(shù)的構(gòu)造決定了不使用列地址0。實際上,如果m代表總列數(shù),K代表子樹中的層數(shù),則只使用m個列中的m-1個列,或2K-1個列(如果更小的話)(參看圖7、8、9)。
      因此,在步驟S1中開始該檢索方法之后,將第一子樹的層次設(shè)定為k=1,即檢索在子樹1的根節(jié)點RN處啟動(見圖7)。然后,在步驟S3,輸入要檢索的數(shù)據(jù)值I、每個子樹的層數(shù)K以及根節(jié)點RN的位置或根地址[B(0),A(0)=&lt;0,1&gt;](二進制表示)。因此,第一子樹1的根節(jié)點RN是檢索算法的入口點。
      在步驟4中,從第一子樹1的根節(jié)點RN的當(dāng)前地址&lt;B(0),A(0)&gt;讀出數(shù)據(jù)值D和相關(guān)信息。在步驟S5中,將所讀出的數(shù)據(jù)值D與要查找的數(shù)據(jù)值I比較。如果在步驟S5中確定匹配D=I,檢索就在步驟S11中結(jié)束。
      如果在步驟S5中,讀出的數(shù)據(jù)值D大于要檢索的數(shù)據(jù)值I,步驟S6判斷是否到達(dá)葉節(jié)點LN。這可通過比較當(dāng)現(xiàn)行數(shù)k與給定的層次數(shù)K來決定。如果在步驟S6中確定k<K,就執(zhí)行步驟S9、S14。在步驟S9中用下列方程來計算子樹內(nèi)位于左分支方向上(I<D)的中間節(jié)點-也可能是葉節(jié)點-的新地址B(L(X))=B(X)A(L(X))=2*A(X)+0(1)這里,B(L(X))和A(L(X))表示子樹1內(nèi)下一個子節(jié)點的新的行地址和列地址。之后,在步驟S14中將層深數(shù)k遞增1。
      同樣,如果在步驟S5中確定I>D,就從根節(jié)點RN轉(zhuǎn)到右分支,如果在步驟S8中判定尚未到達(dá)子樹的最深處,即k<K,就與步驟S9、S14類似地執(zhí)行步驟S12、S16,其中方程(2)如下地定義子樹1內(nèi)的下一項或子節(jié)點B(R(X))=B(X)A(R(X))=2*A(X)+1(2)由步驟S5、步驟S6、S8和步驟S9、S12可見,在子樹內(nèi)只有列地址部分A被改變,即它或者對左分支來說被加倍,或者對于右分支來說被加倍后再向右前進一列。值得注意的是,不管步驟S5中的確定如何,行地址部分B保持相同。如果所讀出的數(shù)據(jù)值更大,則有一個兩倍于列地址的跳轉(zhuǎn),如果所讀出的數(shù)據(jù)值比要檢索的數(shù)據(jù)值小,則下一個列地址是當(dāng)前列地址的兩倍加1。
      當(dāng)然,由于只有k<K時才執(zhí)行步驟S9、S12(K=一個子樹內(nèi)的最大深度或?qū)哟螖?shù);K是預(yù)先定義的),在步驟4中讀出如步驟S9、S12所確定的新地址A、B處的新數(shù)據(jù)值D。標(biāo)注號R表示這種分別經(jīng)各個步驟S4、S5、S6、S9、S14和S4、S5、S8、S12、S16的循環(huán)運行。在循環(huán)過程中,如果在某子樹內(nèi)找到該數(shù)據(jù)值(I=D),該算法就在步驟S11中停止。
      然而,在k次循環(huán)后,步驟S6或S8確定到達(dá)了所分配子樹的最深處,即k=K,這意味著一定已經(jīng)到達(dá)了某個葉節(jié)點存儲位置LN。使用圖9中所示的數(shù)據(jù)值的映射,顯然該葉節(jié)點LN在圖8中的存儲器設(shè)備的地址空間一定對應(yīng)于列地址A的較高端的(即位于該行的右端的)最后2K-1個存儲位置。
      如果到達(dá)某子樹中的這種葉節(jié)點LN,則在步驟S10、S13中采用方程(3)、(4)來分別計算另外一個子樹的根節(jié)點的新的行地址和列地址。
      B(L(X))=2K*B(X)+2*A(X)+0-2KA(L(X))=1 (3)B(R(X))=2K*B(X)+2*A(X)+1-2KA(R(X))=1 (4)由方程(3)、(4)可見,如果出現(xiàn)葉節(jié)點,則列地址A-不管步驟S5中的決定如何-被設(shè)置成第一列,即A(L(X))=A(R(X))=1。然而,根據(jù)步驟S5中的決定,要選擇新的行地址B。
      有意思的是,由其中從葉節(jié)點LN出發(fā)的箭頭指示按照方程(3)、(4)進行計算的圖8和圖9中,注意到下一個子樹的下一個根節(jié)點的確位于列A=1,然而,它卻不是如人們可能會預(yù)期的那樣位于下一個相鄰的子樹2上。相反,方程(3)、(4)進行這樣一種列-行映像(imaging),其中要檢索的下一個子樹的下一個根節(jié)點的新的行地址不是下一個新的行地址(除了子樹中最左邊的葉節(jié)點外,例如參看圖11中例子中的從13到19的映像)。
      在步驟S13中確定了要檢索的下一個子樹的下一個根節(jié)點后,在步驟S17中將k重新設(shè)置成k=1,這是因為在下一個子樹中的檢索顯然在層1即在根節(jié)點地址開始。然后再次在步驟S4讀出下一個數(shù)據(jù)值D,循環(huán)地對新子樹(新行)執(zhí)行步驟S5、S6、S9、S14或步驟S5、S8、S12、S16,直到發(fā)現(xiàn)D與I之間匹配或者再次發(fā)現(xiàn)新子樹的葉節(jié)點。
      當(dāng)然,可能會出現(xiàn)即使在下一個子樹內(nèi)(例如圖8中的4或5)也找不到該數(shù)據(jù)值,于是到達(dá)某葉節(jié)點LN的情況。例如,如果在子樹5中到達(dá)葉節(jié)點LN,則方程(3)和方程(4)都不會產(chǎn)生仍然包含在該行地址空間內(nèi)的行地址(如果行數(shù)和列數(shù)相同的話)。如果行數(shù)大于列數(shù),則當(dāng)然可以進一步計算新的子樹。這意味著有更多的子樹(行)可用。實際上,當(dāng)算法已經(jīng)到達(dá)圖7中的子樹2或3以下時,行地址中的位數(shù)一定是列地址中的位數(shù)的兩倍,這是因為二進制樹固有的特點是每深一層節(jié)點數(shù)就加倍。
      當(dāng)?shù)竭_(dá)子樹4中的葉節(jié)點時不能確定進一步的子樹的根節(jié)點時,這表明在對該子樹的二進制檢索中沒有找到該數(shù)據(jù)值,因此在整個二進制樹中也沒有找到。
      應(yīng)當(dāng)注意的是,在步驟S5中最好允許一定的誤差,使得在一定的允許誤差值的范圍內(nèi)確定D與I的匹配,即如果|D-I|<ΔD,則找到匹配,其中ΔD代表預(yù)先規(guī)定的一定的允許誤差。
      特別地,為了在圖10中的點A和B獲得與以上概述的方程(3)相應(yīng)的行為(behaviour),進一步執(zhí)行圖17中所示的下列步驟。
      在點A,第一個步驟S21A涉及測試當(dāng)前節(jié)點是否是整個樹的一個葉節(jié)點。如果不是,算法就繼續(xù)到圖10中的步驟S6。然而,如果當(dāng)前節(jié)點是整個樹的一個葉節(jié)點,就應(yīng)當(dāng)使用最后一次保存的D和信息(D)的值,然后算法停止,如圖17中的步驟S22A和S23A所示。
      在點B,第一個步驟S21B涉及測試當(dāng)前節(jié)點是否是整個樹的一個葉節(jié)點。如果不是,就為將來可能的使用而保存D和信息(D)的當(dāng)前值。然后算法就繼續(xù)到圖10中的步驟S10。然而,如果當(dāng)前節(jié)點是整個樹的一個葉節(jié)點,就應(yīng)當(dāng)使用D和信息(D)的值,然后算法停止,如圖17中的步驟S22B和S23B所示。
      圖11、12具體表示圖7、8、10中的通用算法用于特定的例子(K=3),其中列地址和行地址采用二進制表示。K=3意味著在存儲器地址空間中提供8列和(至少)8行。由于如果位于二進制樹的頂部的第一個根節(jié)點RN有地址A(0)、B(0)=(000,000),方程(1)、(2)不給出列地址中的變化,所以,首次執(zhí)行圖4中的步驟S4時要查找的第一個節(jié)點將總是圖11中存儲器中的左上的存儲位置,即第一個子樹的第一個根節(jié)點(即整個二進制樹的根節(jié)點)的B(0)=0和A(0)=1。
      圖12對行和列的地址號碼采用二進制表示,圖中顯示了位于具有地址000、001的頭兩行的子樹1和子樹2。
      圖11中存儲器設(shè)備內(nèi)各數(shù)據(jù)值D的分配是按照圖12進行的,正如上文結(jié)合圖7所作的一般說明那樣。在圖11和12中的例子中,假設(shè)所有數(shù)據(jù)值屬于給定的范圍0-100。以根節(jié)點開始,相應(yīng)的值56將這個范圍劃分成兩個范圍,即0-55(左分支)和57-100(右分支)?,F(xiàn)在,將所有屬于較低范圍0-55的值都存儲在左后繼樹中,將所有屬于較高范圍57-100的值都存儲在右后繼樹中。遞歸地在在所有更低層重復(fù)這個過程,每一層上使用一個新的范圍。例如,對于根節(jié)點的左后繼,使用范圍0-55。下一個節(jié)點處的值為27。于是,將該范圍進一步為從含有數(shù)據(jù)值27的節(jié)點下行的兩個后繼樹劃分為范圍0-26和28-55。這意味著,將所有屬于范圍0-26的值都存儲在左后繼樹中,將所有屬于范圍28-55的值都存儲在右后繼樹中。
      可以注意到,如圖12←→11中所示的這種映射數(shù)據(jù)值的方法,對于整個數(shù)以及對于其自己的子樹都是正確的,只是要記住,起始范圍會因?qū)訑?shù)K而不同。因此,圖12中就各數(shù)據(jù)值所示的是一個完全平衡的二進制樹。這同樣反映在分別對應(yīng)于一個子樹的各節(jié)點的每個行中的各項中。
      正確映射的最重要含義是,如果到達(dá)整個數(shù)的某葉節(jié)點而沒有找到所檢索的值,則在樹中就根本不存在該值。
      對于左分支來說,乘以二就意味著列地址部分A向左的轉(zhuǎn)移。右分支產(chǎn)生被左移后再加上“1”的列地址部分A。所以,位于k=2的各中間節(jié)點和位于k=3=K的各葉節(jié)點的各個地址對應(yīng)于特定數(shù)據(jù)值D位于的特定行和列。圖12中如結(jié)合圖9所討論的那樣表示了位于各中間節(jié)點和葉節(jié)點的數(shù)據(jù)值56、27、82…。
      顯然,圖10中的算法每當(dāng)?shù)竭_(dá)四個節(jié)點0,100或0101,或0110或0,111的其中之一時就計算下一個子樹的新的根節(jié)點地址。
      對于新的根節(jié)點的計算,只有一個分支是不允許的,它是在當(dāng)讀出的數(shù)據(jù)值D=13大于要檢索的數(shù)據(jù)值I時的情形中相對于地址0,100的分支。實際上在這種情形中本當(dāng)采用地址0,100的左分支,即本當(dāng)采用方程(3)。然而,在這種情形中左分支的方程(3)會產(chǎn)生B(L(X))=2K(000)+2(100)-2K=0000+1000-1000=0000。因此,決不能采用圖7和圖12中被標(biāo)明“截除”的第一個左分支,因為檢索會從再次從根節(jié)點地址開始。
      實際上,檢索機本身沒有測試手段來避免遍歷進入被禁用(截除)的子樹。然而,通過在第一個(根)子樹的左葉節(jié)點存儲一個特定數(shù)據(jù)值就能保證做到這一點。就是說,在根子樹的最左邊節(jié)點中含有具有保證右分支及因此右邊的下一個子樹總被搜索設(shè)備選擇的數(shù)據(jù)值(圖12中的數(shù)據(jù)值19)的一項。如果如圖12中所示地在樹中按順序存儲這些項,這個條件就會自動得到滿足。當(dāng)樹被截除時,根子樹中最左邊的節(jié)點也變成整個樹中的最左邊節(jié)點。所以這是存儲具有最低值的項的地方。所有其它值都在右邊。
      然而,按照方程B(R(X))=001,如果采用右分支,則意味著具有地址0,100的最左邊葉節(jié)點LN產(chǎn)生的下一個葉節(jié)點根地址是001,001。如圖12中所示,這實際上對應(yīng)于位于第二行的子樹2的根節(jié)點。如圖11中所見,子樹1的每個葉節(jié)點都能被“映射”到位于特定行地址的位置A=1處的新樹的新根節(jié)點。如果行數(shù)大小至少與列的大小相同,則能保證子樹1的每個葉節(jié)點LN都能被“映射”或“轉(zhuǎn)置”成第一列中的一個新根節(jié)點。
      也如圖11、12中所見,如果數(shù)據(jù)值被存儲在二進制樹的節(jié)點中,由方程(1)-(4)所描述的檢索算法行地址變化的數(shù)量最少,同時以最短時間檢索存儲矩陣,尋找與數(shù)據(jù)值I(在允許偏差內(nèi)的)匹配。如果在最低的葉節(jié)點找不到匹配,則沒有找到該數(shù)據(jù)值。
      通過最好對列地址部分A和行地址部分采用二進制表示,能方便檢索,這是因為,乘以2只意味著在移位寄存器中將地址左移。
      如上所述,在從一個子樹向下一個子樹的遍歷中行地址的變化可由以下步驟來描述。首先,將舊的行地址向左移位K步,以零填充。然后,應(yīng)用內(nèi)部子樹算法來改變列地址(在新的列地址中包含K+1位)。然后將這個列地址的最左邊的一位去掉(在新的列地址中包含K位)。然后將這個列地址加到行地址的K0個位中。最后,將列地址設(shè)置成1??梢钥匆?,在子樹的每個改變,需要另外K個位來保存行地址,正如前文參照圖7、8、9、11和12所述的那樣。所以,行地址中的位數(shù)一定是列地址中位數(shù)的倍數(shù)。這是按照本發(fā)明的采用具有二進制樹結(jié)構(gòu)的翻譯表存儲單元的一個實施例的較佳的映射。
      然而,類似的考慮適用于行地址中的位數(shù)不是列地址中位數(shù)的倍數(shù)的情況。這里,首先建立達(dá)到上述較佳的行和列數(shù)的最小樹。然后將含有列地址的不存在的部分中的節(jié)點的所有子樹截除。這樣,當(dāng)采用分支的截除并相應(yīng)地對數(shù)據(jù)進行分配時,也可以使用一個其中行數(shù)不是列數(shù)的倍數(shù)的存儲器。此外,為了避免算法進入已經(jīng)被截除的(實際上不存在的)被禁用的子樹,可以采用數(shù)據(jù)值的特定存儲,使得沒有需要采用通向被截除分支的路徑。
      以下將參照圖13來解釋按照本發(fā)明的采用如圖7至12中所述的檢索方法的存取裝置的一個實施例的硬件實現(xiàn)。
      在圖13中,DRAM表示存儲器設(shè)備54,存取裝置包含比較裝置MC84,用于比較讀出的數(shù)據(jù)值D與要檢索的數(shù)據(jù)值I,以確定該讀出的數(shù)據(jù)值D大于還是等于該要檢索的數(shù)據(jù)值I。如果比較裝置84發(fā)現(xiàn)D與I之間(在給定的允許偏差ΔD內(nèi))是匹配的,就輸出匹配信號M。比較結(jié)果C指示值D是大于還是小于值I。讀出裝置82(未予詳細(xì)表示)讀出從在樹的遍歷期間保存中間列和行地址的兩個寄存器RA、RB輸入的當(dāng)前檢索地址A、B處的數(shù)據(jù)值。
      存取裝置進一步包含確定裝置86,它包括用于根據(jù)比較結(jié)果C和當(dāng)前檢索地址A、B來確定為檢索數(shù)據(jù)值下一次要檢索的完整檢索地址的寄存器RB、RA。
      確定裝置86包含該第一和第二寄存器和根據(jù)比較結(jié)果C、當(dāng)前地址B、A和狀態(tài)機SEQ輸出的控制信號來計算下一個要檢索的列和行地址A’、B’的第一和第二計算電路SMB、SMA。
      狀態(tài)機SEQ確定在檢索二進制樹數(shù)據(jù)結(jié)構(gòu)期間的檢索狀態(tài)(實際上它監(jiān)視k并因此實質(zhì)上圖10中的步驟S6、S8)并根據(jù)比較結(jié)果確定控制信號S。實質(zhì)上,狀態(tài)機SEQ包含一個計數(shù)器和一個用于根據(jù)內(nèi)部狀態(tài)(STATEt)生成控制信號S的狀態(tài)確定裝置STDM。實質(zhì)上,狀態(tài)機的內(nèi)部狀態(tài),對應(yīng)于每當(dāng)比較裝置MC輸出新的比較結(jié)果C(指示D<=I或D>I)時就被更新的當(dāng)前層次號k。就是說,對應(yīng)樹的根節(jié)點的狀態(tài)是0,對應(yīng)(除根節(jié)點外的)非葉節(jié)點的是1至K-1,對應(yīng)葉節(jié)點的是K。類似地,對應(yīng)根節(jié)點的控制信號S是0,對應(yīng)非葉節(jié)點(子節(jié)點)的是1,對應(yīng)葉節(jié)點的是2。從具有狀態(tài)0的(整個樹的)根節(jié)點(其它子樹根節(jié)點的狀態(tài)是1)開始,狀態(tài)機SEQ在自上而下遍歷樹時將按照對子樹的劃分而前進。信號S將依照映射選擇SMB和SMA中地址計算的類型。
      具體來說,存取裝置的各項執(zhí)行下列功能。第一計算電路SMB執(zhí)行下列(用功能記號給定的)功能,其中K是子樹中的層數(shù)B’=0,如果S=0;B’=B,如果S=1;B’=2K*B+2*A+C-2K,如果S=2,(6)其中C(D>I時C=0;D<I時C=1)表示比較結(jié)果,B和B’代表當(dāng)前和下一個行地址,S代表控制信號,K代表子樹中的預(yù)定層數(shù),A代表當(dāng)前列地址。
      第二計算電路SMA執(zhí)行下列(用功能記號給定的)功能A’=1,如果S=0;A’=2*A+C,如果S=1;A’=1,如果S=2,(7)其中C表示比較結(jié)果,A和A’代表當(dāng)前和下一個列地址,S代表控制信號。
      狀態(tài)機SEQ根據(jù)下列公式(8)和(9)計算控制信號SS=0,如果STATEt=0;S=2,如果STATEt=K;S=1,如果0<STATEt<K,(8)其中狀態(tài)機SEQ的狀態(tài)確定裝置STDM按照下列公式(9)計算狀態(tài)機SEQ的內(nèi)部狀態(tài)STATEt(即圖10中的值k)STATEt=0,如果t=0;STATEt+1=2,如果STATEt=O;STATEt+1=1,如果STATEt=K;
      STATEt+1=STATEt+1,如果0<STATEt<K(9)其中STATEt和STATEt+1代表t和t+1時的狀態(tài),t代表在遍歷整個樹期間從開始計算的比較次數(shù)(即t是按比較步驟計算的自檢索開始的時間或循環(huán)的記號),其中t從0開始,大至整個樹的層次數(shù),層次數(shù)原則上可以是任意大的數(shù),但限于是K的倍數(shù);STATEt=0代表在二進制樹數(shù)據(jù)結(jié)構(gòu)的根節(jié)點RN相應(yīng)的存儲位置進行第一次比較時的狀態(tài)。
      如上概述,按照本發(fā)明的方法和存取裝置在引起子樹的變化時只使用最少的步驟數(shù)。根據(jù)映射,在子樹內(nèi)部的遍歷期間只有列地址改變。當(dāng)不得不使用動態(tài)隨機存取存儲器時,由于數(shù)據(jù)的數(shù)量,本發(fā)明能為按照二進制樹數(shù)據(jù)結(jié)構(gòu)排序的數(shù)據(jù)值提供快速檢索引擎。時間的縮短是呈數(shù)量級的。所以,本發(fā)明可被用于在大型存儲器查找數(shù)據(jù)值時時間極其重要的所有技術(shù)領(lǐng)域。
      應(yīng)當(dāng)注意的是,在以上說明中,行是可以與列交換的,這是因為它將取決于存儲器的組織中分別被記為行和列的是哪個存儲方向。
      一旦上述匹配單元56揭示翻譯表存儲單元54中某地址的對應(yīng)條目,就可以使用以上概述的轉(zhuǎn)換支援單元50中的與要轉(zhuǎn)換的數(shù)據(jù)變量有關(guān)的數(shù)據(jù)結(jié)構(gòu)dj的起始地址DWA、結(jié)構(gòu)信息DINFO、以及有關(guān)轉(zhuǎn)換程序的起始地址Pi。
      下一個步驟于是涉及按照要轉(zhuǎn)換的數(shù)據(jù)變量對索引的確定。這種索引使得能用邏輯的而不是物理的地址通過轉(zhuǎn)換程序來訪問數(shù)據(jù)變量。
      在逆地址計算單元58中的逆地址計算期間,最初計算一個值αinv=α-DWA(12)然后將αinv的值分裂成與總數(shù)據(jù)結(jié)構(gòu)中各索引有關(guān)的偏移量1…N,被具有起始地址Pi的轉(zhuǎn)換程序用來在用如上概述的用邏輯尋址實際轉(zhuǎn)換數(shù)據(jù)變量之前訪問數(shù)據(jù)變量。
      圖14表示對一維數(shù)組的逆地址的計算。這里,具有要轉(zhuǎn)換的數(shù)據(jù)變量α的數(shù)據(jù)結(jié)構(gòu)具有分配給它的初始索引的地址DWA。因此,在計算α與DWA的差之后,存儲一維數(shù)組中每個數(shù)據(jù)變量的長度的結(jié)構(gòu)信息DINFO被用來確定數(shù)據(jù)變量的索引。特別地,這個索引是通過將α與DWA的差除以一維數(shù)組中每個數(shù)據(jù)變量的長度計算出來的。
      圖15表示與對二維數(shù)組或矩陣的逆地址計算有關(guān)的另一個例子。假設(shè)矩陣A(I,J)的大小是I取0至3的值,J取0至6的值。圖14的上部表示處理一個指向矩陣A的元素A(2,3)的地址α的轉(zhuǎn)換隊列單元52。
      此外,如圖14的下部所示,矩陣A(I,J)的二維邏輯表示被映射到存儲器分區(qū)12、32中的一個線性結(jié)構(gòu)。這里的DWA代表對應(yīng)于矩陣元素A(0,0)的矩陣A的基址。
      要確定數(shù)據(jù)變量的索引2、3,有必要知道基址DWA、可能存儲在DINFO中的二維矩陣的每個數(shù)據(jù)變量的長度,以及索引的范圍,諸如從0到3的第一索引(行)和從0到6的第二索引(列)。如果已知每個數(shù)組元素的長度,則各索引值可按下列公式計算k=α-DWAJ=k-7*INT(k/7)I=INT(k/7) (13)其中INT(Z)是Z的整數(shù)部分,例如INT(12/7)=1,常數(shù)7是從第二下標(biāo)的范圍(列數(shù))和每個元素(1)的長度導(dǎo)出的。所以,如果A的基址是1000,則地址1017相當(dāng)于J=17-7*INT(17/7)=3I=INT(17/7)=2,(14)即存儲地址1017對應(yīng)于A(2,3)用這個方法,可將逆地址計算推廣到任意數(shù)量的下標(biāo)和數(shù)組元素的任意長度。例如,如果元素的長度是兩個存儲器字,則I和J的公式中的常數(shù)7就應(yīng)當(dāng)被2*7=14替換。如果要能訪問這種兩字?jǐn)?shù)組元素的每個字,則可以修改公式,通過取Z的余數(shù)部分REM(Z)來計算每個元素的高和低字。
      盡管以上是就根據(jù)變量地址傳輸變量來說明本發(fā)明的,也可以采用更高級的地址。這種更高級地址的組成可以是變量的程序單元號和基址和適當(dāng)?shù)娜魏蜗聵?biāo)的值。本發(fā)明的這個選擇會簡化轉(zhuǎn)換硬件,因為匹配單元56能更簡單并且不需要逆地址計算單元58。然而,從變量的程序單元號和基址向轉(zhuǎn)換程序的程序單元號和起始地址的翻譯仍然是必要的。不過,這個更高級轉(zhuǎn)換方法的一個優(yōu)點是所能獲得的轉(zhuǎn)換的能力的增加。
      標(biāo)注號列表10第一處理與控制單元12第一存儲器分區(qū)14第一地址總線16第一數(shù)據(jù)總線18第一數(shù)據(jù)地址總線控制單元20第一數(shù)據(jù)地址總線控制線22第一更新總線控制單元24更新總線26第一更新總線控制線28第一復(fù)制/轉(zhuǎn)換數(shù)據(jù)線30第二處理與控制單元32第二存儲器分區(qū)34第二地址總線36第二數(shù)據(jù)總線38第二數(shù)據(jù)地址總線控制單元40第二數(shù)據(jù)地址總線控制線42第二更新總線控制單元44第二更新總線控制線46第二復(fù)制/轉(zhuǎn)換數(shù)據(jù)線50轉(zhuǎn)換支援單元52轉(zhuǎn)換隊列單元54翻譯表存儲單元56匹配單元58逆地址計算單元60地址輸入線62第一地址連接線64第二地址連接線66第一背壓信號線68第二背壓信號線70地址提供線72DWA提供線74DINFO提供線76-1至76-N偏移量提供線78轉(zhuǎn)換程序地址線82匹配單元中的讀出單元84匹配單元中的比較單元86匹配單元中的確定單元
      權(quán)利要求
      1.一種分區(qū)類型的軟件處理系統(tǒng),包含a)帶有第一存儲器裝置(12)的第一分區(qū)(A),b)帶有第二存儲器裝置(32)的第二分區(qū)(B),其中c)第一分區(qū)(A)與第二分區(qū)(B)是通過一個連接裝置(24)相連的,并且適合在舊軟件的執(zhí)行期間將一個存儲器裝置(12;32)中的新軟件的狀態(tài)更新到另一個存儲器裝置(32;12)中的舊軟件的狀態(tài),和d)數(shù)據(jù)從舊軟件向新軟件的傳輸是由一個適合輸出與要轉(zhuǎn)換的數(shù)據(jù)變量相關(guān)的轉(zhuǎn)換程序的起始地址的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)支持的。
      2.按照權(quán)利要求1的軟件處理系統(tǒng),其特征在于,數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)將該轉(zhuǎn)換程序的起始地址分別輸出到該第一分區(qū)(A)的第一處理與控制單元(10)或該第二分區(qū)(B)的第二處理與控制單元(30)其中之一。
      3.按照權(quán)利要求1或2的軟件處理系統(tǒng),其特征在于,數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)適合在向數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)提供的用于數(shù)據(jù)轉(zhuǎn)換的地址的數(shù)目超過最大可允許地址數(shù)目時分別通過第一背壓信號線(66)和第二背壓信號線(68)向該第一分區(qū)(A)或向該第二分區(qū)(B)輸出一個背壓信號。
      4.按照權(quán)利要求1至3其中之一的軟件處理系統(tǒng),其特征在于,數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)也適合將至少一個用于訪問要通過轉(zhuǎn)換程序在某個邏輯水平上轉(zhuǎn)換的數(shù)據(jù)變量的邏輯地址分別向該第一處理與控制單元(10)和該第二處理與控制單元(30)其中之一輸出。
      5.按照權(quán)利要求2至4其中之一的軟件處理系統(tǒng),其特征在于,數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)包含a)一個適合存儲要轉(zhuǎn)換的數(shù)據(jù)變量的地址信息和結(jié)構(gòu)信息的翻譯表存儲裝置(54);和b)一個適合按照數(shù)據(jù)變量的地址(α)和與數(shù)據(jù)變量相關(guān)的數(shù)據(jù)結(jié)構(gòu)的起始地址(DWA)在該翻譯表存儲裝置(54)中尋找要轉(zhuǎn)換的數(shù)據(jù)變量的匹配裝置(56)。
      6.按照權(quán)利要求5的軟件處理系統(tǒng),其特征在于,該翻譯表存儲裝置(54)適合為要轉(zhuǎn)換的數(shù)據(jù)變量的每個地址分別存儲有關(guān)數(shù)據(jù)結(jié)構(gòu)的起始地址(DWA)、結(jié)構(gòu)信息(DINFO)和有關(guān)轉(zhuǎn)換程序的起始地址。
      7.按照權(quán)利要求6的軟件處理系統(tǒng),其特征在于,該結(jié)構(gòu)信息(DINFO)包含至少關(guān)于要轉(zhuǎn)換的數(shù)據(jù)變量的數(shù)據(jù)變量長度和數(shù)據(jù)結(jié)構(gòu)(dj)的組織的信息。
      8.按照權(quán)利要求5至7其中之一的軟件處理系統(tǒng),其特征在于,該匹配裝置(56)按照Vi=(v∈Vs|DWAi≤α∧α<DWAi+1}來確定該翻譯表存儲裝置(54)中的條目。
      9.按照權(quán)利要求5至8其中之一的軟件處理系統(tǒng),其特征在于,該匹配裝置(56)適合通過進行二進制檢索在該翻譯表存儲裝置(54)中尋找一個條目。
      10.按照權(quán)利要求9的軟件處理系統(tǒng),其特征在于,該匹配裝置(56)是按照權(quán)利要求21至31其中之一實現(xiàn)的。
      11.按照權(quán)利要求5至10其中之一的軟件處理系統(tǒng),其特征在于,該數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)進一步包含適合用從該翻譯表存儲裝置(54)讀取的信息來標(biāo)識要在某個邏輯地址水平上轉(zhuǎn)換的變量的逆地址計算裝置(58)。
      12.按照權(quán)利要求11的軟件處理系統(tǒng),其特征在于,該逆地址計算裝置(58)適合首先計算提供給該數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)的地址(α)與所標(biāo)識的數(shù)據(jù)結(jié)構(gòu)(dj)的起始地址(DWAj)之間的差,并進一步用該翻譯表存儲裝置(54)所提供的結(jié)構(gòu)信息(DINFO)來導(dǎo)出與要轉(zhuǎn)換的地址相應(yīng)的至少一個邏輯地址偏移量。
      13.一種數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,包含a)一個適合存儲要轉(zhuǎn)換的數(shù)據(jù)變量的地址信息和結(jié)構(gòu)信息的翻譯表存儲裝置(54);和b)一個適合按照數(shù)據(jù)變量的地址(α)為數(shù)據(jù)變量轉(zhuǎn)換程序在該翻譯表存儲裝置(54)中尋找一個條目的匹配裝置(56)。
      14.按照權(quán)利要求13的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,該翻譯表存儲裝置(54)適合為要轉(zhuǎn)換的數(shù)據(jù)變量的每個地址分別存儲有關(guān)數(shù)據(jù)結(jié)構(gòu)的起始地址(DWA)、結(jié)構(gòu)信息(DINFO)和有關(guān)轉(zhuǎn)換程序的起始地址。
      15.按照權(quán)利要求14的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,該結(jié)構(gòu)信息(DINFO)包含至少關(guān)于要轉(zhuǎn)換的數(shù)據(jù)變量的數(shù)據(jù)變量長度和數(shù)據(jù)結(jié)構(gòu)(dj)的組織的信息。
      16.按照權(quán)利要求13至15其中之一的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,該匹配裝置(56)按照vi=(vi∈Vs|DWAi≤α∧α<DWAi+1}來確定該翻譯表存儲裝置(54)的條目。
      17.按照權(quán)利要求13至16的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,該匹配裝置(56)適合通過進行二進制檢索在該翻譯表存儲裝置(54)中尋找一個條目。
      18.按照權(quán)利要求13至17的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,該匹配裝置(56)是按照權(quán)利要求21至31其中之一實現(xiàn)的。
      19.按照權(quán)利要求13至18其中之一的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,適合用從該翻譯表存儲裝置(54)讀取的信息來標(biāo)識要在某個邏輯地址水平上轉(zhuǎn)換的變量。
      20.按照權(quán)利要求13至19其中之一的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備,其特征在于,該逆地址計算裝置(58)適合首先計算提供給該數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)的地址(α)與所標(biāo)識的數(shù)據(jù)結(jié)構(gòu)(dj)的起始地址(DWAj)之間的差,并進一步用該翻譯表存儲裝置(54)所提供的結(jié)構(gòu)信息(DINFO)來導(dǎo)出與要轉(zhuǎn)換的地址相應(yīng)的至少一個邏輯地址偏移量。
      21.一種用于確定存儲器設(shè)備中預(yù)定數(shù)據(jù)值(D)的存儲地址(B(X),A(X))的存儲器設(shè)備的匹配裝置,所述數(shù)據(jù)值(D)是按照有節(jié)點、分支、子樹的二進制樹數(shù)據(jù)結(jié)構(gòu)存儲的,該匹配裝置包含a)一個用于讀出所述存儲器設(shè)備的預(yù)定的當(dāng)前檢索地址(B(X),A(X))處的數(shù)據(jù)值的讀出裝置(R);b)用于將該讀出的數(shù)據(jù)值(D)與要檢索的數(shù)據(jù)值(I)作比較,以確定該讀出的數(shù)據(jù)值(D)是大于還是小于要檢索的數(shù)據(jù)值(I)的比較裝置(MC);和c)用于根據(jù)該比較結(jié)果(C)和該當(dāng)前地址(B(X),A(X))來確定為檢索數(shù)據(jù)值而要檢索的下一個檢索地址(B,A)的確定裝置(SEQ、SMB、SMA、RB、RA);其中d)所述讀出裝置、所述比較裝置和所述確定裝置循環(huán)地進行所述讀出、所述比較和所述確定,直到所述讀出的數(shù)據(jù)值(D)與所述數(shù)據(jù)值(I)在預(yù)定的允許偏差內(nèi)匹配(M)。
      22.按照權(quán)利要求21的匹配裝置,其特征在于,所述數(shù)據(jù)值是按行和列的矩陣排列被存儲在所述存儲器裝置中的,其中每個數(shù)據(jù)值(D)被分配一個列地址(A)和一個行地址(B)。
      23.按照權(quán)利要求22的匹配裝置,其特征在于,所述確定裝置包含-用于保存下一個行和列地址(B’,A’)的第一和第二寄存器(RB;RA);-用于根據(jù)比較結(jié)果(C)、當(dāng)前地址(B,A)和控制信號(S)計算要檢索的下一個行和列地址(B’,A’)的第一和第二計算電路(SMB,SMA);和-用于確定通過二進制樹數(shù)據(jù)結(jié)構(gòu)的檢索期間的檢索狀態(tài)(STATEt)和用于根據(jù)比較結(jié)果(C)確定所述控制信號(S)的狀態(tài)機。
      24.按照權(quán)利要求22的匹配裝置,其特征在于,所述存儲器設(shè)備中的數(shù)據(jù)值是按每個子樹中有預(yù)定的層次數(shù)K的二進制樹數(shù)據(jù)結(jié)構(gòu)存儲的,其中所述狀態(tài)機(SEQ)包含一個計算由所述比較裝置(MC)進行的比較的次數(shù)(t)的計數(shù)器(CNT)。
      25.按照權(quán)利要求23的匹配裝置,其特征在于,所述比較結(jié)果(C)是由所述比較裝置(MC)按照下列公式(5)計算的C=0,如果I<D;C=1,如果I>=D;(5)其中C代表比較結(jié)果,I代表要檢索的數(shù)據(jù)值,D代表讀出的數(shù)據(jù)值。
      26.按照權(quán)利要求25的匹配裝置,其特征在于,所述第一計算電路(SMB)按照下列公式(6)計算下一個列地址(B’)B’=0,如果S=0;B’=B,如果S=1;B’=2K*B+2*A+C-2K,如果S=2,(6)其中C(D>I時C=0;D<I時C=1)表示比較結(jié)果,B和B’代表當(dāng)前和下一個行地址,S代表控制信號,K代表子樹中的預(yù)定層數(shù)(列地址中的位數(shù)),A代表當(dāng)前列地址。
      27.按照權(quán)利要求25的匹配裝置,其特征在于,所述第二計算電路(SMA)按照下列公式(7)計算下一個列地址(A’)A’=1,如果S=0;A’=2*A+C,如果S=1;A’=1,如果S=2,(7)其中C表示比較結(jié)果,A和A’代表當(dāng)前和下一個列地址,S代表控制信號。
      28.按照權(quán)利要求23的匹配裝置,其特征在于,所述狀態(tài)機(SEQ)根據(jù)下列公式(8)計算所述控制信號(S)S=0,如果STATEt=0;S=2,如果STATEt=K;S=1,如果0<STATEt<K,(8)其中狀態(tài)機(SEQ)的狀態(tài)確定裝置(STDM)按照下列公式(9)計算狀態(tài)機(SEQ)的內(nèi)部狀態(tài)STAEtSTATEt=0,如果t=0;STATEt+1=2,如果STATEt=0;STATEt+1=1,如果STATEt=K;STATEt+1=STATEt+1,如果0<STATEt<K(9)其中STATEt和STATEt+1代表t和t+1時的狀態(tài),t代表由計數(shù)器(CNT)計算的比較次數(shù);0<t<K*N,N代表整個二進制樹的子樹層數(shù),STATEt=0代表在二進制樹數(shù)據(jù)結(jié)構(gòu)的根節(jié)點RN相應(yīng)的存儲位置進行第一次比較時的狀態(tài)。
      29.按照權(quán)利要求21的匹配裝置,其特征在于,所述所述讀出裝置(R)讀出在所述存儲器裝置中存儲的與所述匹配數(shù)據(jù)值相關(guān)聯(lián)的信息。
      30.按照權(quán)利要求21的匹配裝置,其特征在于,所述存儲器設(shè)備是DRAM或高速緩沖存儲器其中之一。
      31.按照權(quán)利要求30的匹配裝置,其特征在于,所述存儲地址有一個行地址部分內(nèi)核一個列地址部分,所述列地址部分被用來選擇某特定高速緩沖存儲器行內(nèi)所述順序數(shù)據(jù)項的一個,所述行地址部分被用來選擇一個特定高速緩沖存儲器行。
      32.一種用于確定存儲器設(shè)備中預(yù)定數(shù)據(jù)值(I)的存儲地址(B(X),A(X))的方法,在存儲器設(shè)備中的各數(shù)據(jù)值(D)是按照有節(jié)點、分支、子樹的二進制樹數(shù)據(jù)結(jié)構(gòu)存儲的,該方法包含下列步驟a)從所述存儲器設(shè)備讀出當(dāng)前檢索地址(B(X),A(X))處的數(shù)據(jù)值(D);b)將該讀出的數(shù)據(jù)值(D)與要檢索的數(shù)據(jù)值(I)作比較,以確定該讀出的數(shù)據(jù)值(D)是大于還是小于要檢索的數(shù)據(jù)值(I);和c)根據(jù)該比較結(jié)果(C)和所述當(dāng)前地址(B(X),A(X))確定為檢索數(shù)據(jù)值而要檢索的下一個檢索地址(B,A);其中d)循環(huán)地進行步驟a)-c),直到所述讀出的數(shù)據(jù)值(D)與所述要檢索的數(shù)據(jù)值(I)在預(yù)定的允許偏差(ΔD)內(nèi)匹配(M)。
      33.按照權(quán)利要求32的方法,其特征在于,各數(shù)據(jù)值是按每個子樹中有預(yù)定的層次數(shù)K的二進制樹數(shù)據(jù)結(jié)構(gòu)存儲的,其中在所述步驟c)中所述下一個地址是根據(jù)所述比較結(jié)果(C)、所述當(dāng)前檢索地址和所述每個子樹中預(yù)定層次數(shù)(K)確定的。
      34.按照權(quán)利要求32的方法,其特征在于,所述數(shù)據(jù)值(D)處于由一個最低數(shù)據(jù)值和一個最高數(shù)據(jù)值構(gòu)成的范圍內(nèi),其中在一個預(yù)定的根地址(B(0),A(0)=&lt;0,1&gt;)存儲與所述范圍的中心值對應(yīng)的一個中心數(shù)據(jù)值,其中,當(dāng)步驟a)被首次執(zhí)行時,所述根地址被用作所述當(dāng)前地址。
      35.按照權(quán)利要求32的方法,其特征在于,所述數(shù)據(jù)值是按行和列的矩陣排列被存儲在所述存儲器裝置中的,其中每個數(shù)據(jù)值(D)被分配一個列地址(A)和一個行地址(B)。
      36.按照權(quán)利要求32或35的方法,其特征在于,當(dāng)步驟b)中所述比較結(jié)果(C)表明讀出的數(shù)據(jù)值大于所述要檢索的數(shù)據(jù)值(I)時(“分支左”),步驟c)中所述下一個地址是由下列公式(1)計算的B(L(X))=B(X)A(L(X))=2*A(X)+0(1)其中X代表由當(dāng)前地址(B(X),A(X))定義的當(dāng)前節(jié)點,A(X)和B(X)代表當(dāng)前節(jié)點X的列地址和行地址,L(X)代表存儲一個小于當(dāng)前節(jié)點處存儲的數(shù)據(jù)值的數(shù)據(jù)值的下一個節(jié)點,A(L(X))和B(L(X))代表該下一個節(jié)點L(X)的列和行地址。
      37.按照權(quán)利要求32或35的方法,其特征在于,當(dāng)步驟b)中所述比較結(jié)果表明讀出的數(shù)據(jù)值小于所述要檢索的數(shù)據(jù)值(I)時(“分支右”),步驟c)中所述下一個地址是由下列公式(2)計算的B(R(X))=B(X)A(R(X))=2*A(X)+1(2)其中X代表由當(dāng)前地址(B(X),A(X))定義的當(dāng)前節(jié)點,A(X)和B(X)代表當(dāng)前節(jié)點X的列地址和行地址,R(X)代表存儲一個大于當(dāng)前節(jié)點處存儲的數(shù)據(jù)值的數(shù)據(jù)值的下一個節(jié)點,A(R(X))和B(R(X))代表該下一個節(jié)點R(X)的列和行地址。
      38.按照權(quán)利要求32、33或35的方法,其特征在于,當(dāng)步驟b)中所述比較結(jié)果表明讀出的數(shù)據(jù)值大于所述要檢索的數(shù)據(jù)值(I)時(“葉左”),步驟c)中所述下一個地址是由下列公式(3)計算的B(L(X))=2K*B(X)+2*A(X)+0-2KA(L(X))=1(3)其中X代表由當(dāng)前地址(B(X),A(X))定義的當(dāng)前節(jié)點,A(X)和B(X)代表當(dāng)前節(jié)點X的列地址和行地址,L(X)代表存儲一個小于當(dāng)前節(jié)點處存儲的數(shù)據(jù)值的數(shù)據(jù)值的下一個節(jié)點,A(L(X))和B(L(X))代表該下一個節(jié)點L(X)的列和行地址,2K是存儲器設(shè)備中的列數(shù)。
      39.按照權(quán)利要求32、33或35的方法,其特征在于,當(dāng)步驟b)中所述比較結(jié)果表明讀出的數(shù)據(jù)值小于所述要檢索的數(shù)據(jù)值(I)時(“葉右”),步驟c)中所述下一個地址是由下列公式(4)計算的B(R(X))=2K*B(X)+2*A(X)+1-2KA(R(X))=1 (4)其中X代表由當(dāng)前地址(B(X),A(X))定義的當(dāng)前節(jié)點,A(X)和B(X)代表當(dāng)前節(jié)點X的列地址和行地址,R(X)代表存儲一個大于當(dāng)前節(jié)點處存儲的數(shù)據(jù)值的數(shù)據(jù)值的下一個節(jié)點,A(R(X))和B(R(X))代表該下一個節(jié)點R(X)的列和行地址,2K是存儲器設(shè)備中的列數(shù)。
      40.按照權(quán)利要求33和38或33和39其中之一的方法,其特征在于,如果步驟b)中進行的比較次數(shù)等于子樹中層次數(shù)(K)的倍數(shù),則分別按公式(3)或(4)計算所述下一個地址。
      41.按照權(quán)利要求33和36或33和37其中之一的方法,其特征在于,如果步驟b)中進行的比較次數(shù)不等于子樹中層次數(shù)(K)的倍數(shù),則分別按公式(1)或(2)計算所述下一個地址。
      42.按照權(quán)利要求32的方法,其特征在于,在所述步驟d)后,從具有所述當(dāng)前地址的存儲位置讀出與所述匹配數(shù)據(jù)值關(guān)聯(lián)的存儲的信息。
      43.按照權(quán)利要求32的方法,其特征在于,所述存儲器設(shè)備是DRAM或高速緩沖存儲器之一。
      全文摘要
      為了在基于計算機的系統(tǒng)中實現(xiàn)高效的軟件更新,提供一個包含通過通過連接裝置(24)相連的兩個分區(qū)(A,B)的軟件處理系統(tǒng)。這兩個分區(qū)(A,B)適合在舊軟件的執(zhí)行期間將一個存儲器裝置(12)中的新軟件的狀態(tài)更新到另一個存儲器裝置(32)中的舊軟件的狀態(tài),特別地,數(shù)據(jù)從舊軟件向新軟件的傳輸是由一個適合輸出與要轉(zhuǎn)換的數(shù)據(jù)變量相關(guān)的轉(zhuǎn)換程序的起始地址的數(shù)據(jù)轉(zhuǎn)換支援設(shè)備(50)支持的。
      文檔編號G06F11/00GK1300390SQ99806119
      公開日2001年6月20日 申請日期1999年3月11日 優(yōu)先權(quán)日1998年3月12日
      發(fā)明者B·E·I·加德, L·-O·克林, S·E·約翰松 申請人:艾利森電話股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1