CN1300390A - 数据转换硬件支援设备 - Google Patents
数据转换硬件支援设备 Download PDFInfo
- Publication number
- CN1300390A CN1300390A CN99806119A CN99806119A CN1300390A CN 1300390 A CN1300390 A CN 1300390A CN 99806119 A CN99806119 A CN 99806119A CN 99806119 A CN99806119 A CN 99806119A CN 1300390 A CN1300390 A CN 1300390A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- data value
- row
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
为了在基于计算机的系统中实现高效的软件更新,提供一个包含通过通过连接装置(24)相连的两个分区(A,B)的软件处理系统。这两个分区(A,B)适合在旧软件的执行期间将一个存储器装置(12)中的新软件的状态更新到另一个存储器装置(32)中的旧软件的状态,特别地,数据从旧软件向新软件的传输是由一个适合输出与要转换的数据变量相关的转换程序的起始地址的数据转换支援设备(50)支持的。
Description
本发明涉及涉及转换硬件支援设备,特别是涉及用于软件升级的状态复制方法中的转换硬件支援设备。
在进行软件更新中,通常有对被更新的系统的操作的某种干扰。这个干扰的范围可以是从数小时和可能数日的整个系统关机到例如只有数秒钟的只对整个系统功能的有限的局部的短暂干扰。可以相信,可能根本没有干扰,不过在实际的现有系统中通常并非如此。然而,对于通信交换这样的系统来说,干扰要小且尽可能短是非常重要的。
即使借助永久性地长时间执行的软件模块,要实现没有干扰的软件更新,先决条件是在旧软件继续地执行的同时以来自旧软件的所有必要数据来更新新软件。当新软件的数据的状态达到与旧软件相同的状态时,新软件就把执行接过来。
更新软件的最简单的方法是停止旧软件的执行,装入新软件,最后执行新软件。采用这个方法,在旧软件与新软件之间不传输数据。此外,所有被建立的软件过程都丢失,并且软件的执行在新软件的装入和启动期间被停止。这个方法一般用于例如工作站和个人电脑。
在(AXE10软件的远程升级和更新)(Ericsson Review 1996年第2期66、67页)中描述了用于通信系统的一种改进方法。这里,在旧软件仍然在处理向用户提供的服务建立的同时装入新软件。数据在旧软件与新软件之间传输。含有要传输的数据的数据变量在所谓的数据改变信息中被标识,并且可以是复制(copy)或转换(convert)类型的。对于每个转换数据变量,执行在数据改变信息中指定转换程序,以实现转换并向新软件传输转换输出。然而在从旧软件向新软件传输已经建立的服务所必需的数据期间,另外的服务的建立被停止。
图16中表示了作为迄今为止的各方法的基础的一种硬件体系结构。为了使旧软件能在装入新软件的同时继续执行,将系统体系结构划分成A端和B端。A端包含第一处理与控制单元10和第一存储器分区12。存储器分区12存储在处理与控制单元10中执行的并通过处理与控制单元10控制的数据和软件模块。为了数据和软件信息的交换,提供由数据地址总线控制单元18控制的地址总线14和数据总线16。数据地址总线控制单元18通过数据一地址总线控制线20与处理与控制单元10相连。
此外,提供将地址总线14和数据总线16与为软件的更新而提供的外部更新总线24连接的更新总线控制单元22。更新总线控制单元22通过更新总线控制线26与处理与控制单元10相连,用于控制。通过复制/转换数据线28向更新总线控制线22传递与通过更新总线24传输的数据相关的复制/转换信息,也是一种选择。
如图16中所示,所述的关于A端的结构同样适用于B端。所以,在B端提供第二处理与控制单元30和第二存储器分区32。第二处理与控制单元30和第二存储器分区32由两个都由第二数据总线控制单元38控制的第二地址总线34和第二数据总线36相连。第二数据总线控制单元38通过第二数据/地址总线控制单元线40与第二处理与控制单元30相连。为了实现数据的外部交换,提供通过第二更新总线控制线44与第二处理与控制单元30相连的第二更新总线控制单元42。要在A/B端之间分别传输的复制/转换数据,是通过第二复制/转换数据线46向第二更新总线控制单元42传递的。
如图16中所示,这种划分成两部分的体系结构,便于在装入新软件的同时进一步执行旧软件,含有要传输的数据的数据变量或者从A端向B端复制和转换,或者相反。
然而,这个方法的问题是,在软件的更新期间,总体系统性能降低。特别地,通常在数据的传输期间,为了获得旧软件和新软件中的一致性的数据副本,服务要被停止。
如图16中所示划分成两部分的体系结构的另外一个缺点是,没有用于数据转换的专用硬件支援设备。所以,基于软件的数据转换会变得耗费时间,并导致停机时间的增加,由此导致采用这种硬件结构的服务供应商的利润损失。
为了克服这个缺点,在US-A-5,5,155,837中提出了在第一步骤中将用于新服务的数据的输出切换到新软件。当以旧软件为基础正在进行中的服务已经全部结束时,就将来自这些正在进行中的服务的数据的输出从旧软件切换到新软件。因此,与旧软件相关的服务必须在新软件工作之前结束,所以只可能以短暂的时间来处理服务。在US-A-5,5,155,837中也没有披露数据转换硬件支援设备。
鉴于以上情况,本发明的目的是在基于计算机的系统中实现高效的软件更新。
按照本发明,这个目的是通过一个分区类型的软件处理系统实现的,该系统包含:带有第一存储器装置的第一分区,带有第二存储器装置的第二分区,其中第一分区与第二分区是通过一个连接装置相连的,并且适合在旧软件的执行期间将一个存储器装置中的新软件的状态更新到另一个存储器装置中的旧软件的状态,数据从旧软件向新软件的传输是由一个适合输出与要转换的数据变量相关的转换程序的起始地址的数据转换支援设备支持的。
因此,本发明提供一种硬件实现,用来在基于计算机的系统中在软件例如由于增加的功能和/或由于错误的校正而进行的更新期间,实现与旧软件和新软件相关的数据的必要传输和转换。
本发明进一步提供一种被改造成翻译存储装置的存取装置,用来确定存储器设备中各预定数据值的存储地址,各数据值(在特例中)是可选地按照有节点、分支、子树和树叶的二进制树数据结构以有序的顺序存储的。存储装置包含一个读出装置,用于读出存储器设备的当前检索地址处的数据值;一个比较装置,用于将读出的数据值与要检索的数据值作比较,以确定读出的数据值大于还是小于要检索的数据值;确定装置,用于根据比较结果和当前检索地址确定为检索数据值而要检索的下一个完整的检索地址,其中,读出装置、比较装置和确定装置循环地进行读出、比较和确定,直到读出的数据值与要检索的数据值在允许偏差的范围内匹配。
所以按照该特例的存取装置显著地不同于用存储密集的指针方案(storage intensive pointer scheme)来确定二进制树中节点的地址的常规方法。特别地,在二进制树的遍历期间,地址的最高有效部分在向二进制树遍历期间的每一个步骤中都改变。
对采用行对应于地址的最高有效部分、列对应于地址的最低有效部分的行/列寻址方案的一般DRAM来说,这是耗费时间的。
与此相反,本发明提供一种存取装置和相关方法,用来在二进制树检索期间确定存储器设备中的预定数据值的存储地址,但不使用指针来确定存储位置。该存取装置也能比各已知方法快地存储地址。
实质上,本发明认识到没有必要频繁改变地址的最高有效部分,地址的列部分和地址的行地址部分二者都是根据比较结果和当前地址而确定的。在本发明中,映射的列地址部分与映射的行地址部分的组合,便于缩短在存储器中找到数据值之前的检索时间。
按照本发明,当在检索期间到达子树的树叶时,就确定了另一个子树的新的根节点。如果数据值在这个子树中仍然找不到,检索过程就从当前子树中的该树叶节点转移到另一个子树的另一个根节点一直到到达整个树的底部树叶。由于检索总是意味着从底部向顶部遍历树,检索将主要导致在子树内部的遍历。只要少量的步骤就将导致子树的改变。按照本发明的映射的结果是,在子树内部遍历期间,只有列地址改变。所以,导致行地址的改变的步骤数被最小化,就是说,行地址中的变化被保持在最小限度。因此,检索的时间将被极大地缩短。
现在结合以下各附图来说明本发明的增加实施例。
图1表示按照本发明的数据转换硬件支援设备的体系结构;
图2表示通过按照本发明的数据转换硬件支援设备所支持的状态复制方法的不同步骤;
图3表示按照图2中所示状态复制方法的流程图;
图4表示图1中所示的翻译表存储单元的体系结构;
图5表示图1中所示的匹配单元的存储器装置,各数据值在其中是随机地在各特定地址位置存储的;
图6表示用于在图1中所示匹配单元的存储器设备中进行二进制树检索的逻辑二进制树结构;
图7表示按照本发明采用子树的二进制树结构;
图8表示每行被映射到图7中所示子树的存储器设备;
图9表示图8中所示子树中数据的组织;
图10是表示由按照本发明采用二进制树结构的特例的匹配单元使用的检索方法的流程图;
图11表示按照二进制树结构在存储器中存储的数据值的例子;
图12表示对应图11中例子的二进制树和节点的各个位置;
图13表示按照本发明用于访问在图1中所示翻译表存储单元中存储的数据值的存取装置的实施例;
图14表示通过图1中所示的逆地址计算单元执行的逆地址计算的例子;
图15表示通过图1中所示的逆地址计算单元执行的逆地址计算的另一个例子;
图16表示按照本发明的技术背景的分区类型的软件处理系统的体系结构;
图17表示按照方程(13)为获得推出条件而对图10中所示算法的添加。
图1表示按照本发明的数据转换硬件支援设备的基本体系结构。与前文针对图16所述的相象或相同的部分是用相同的标注数字标注的,这里省略对它们的说明。
如图1中所示,该数据转换硬件支援设备的体系结构与以前已知方法的不同之处在于提供了专用的转换支持单元50。这里,转换支持单元50可以是个单独的单元,或者是分别与软件处理系统的不同分区A、B即A端和B端相应的相同的单元。转换支持单元50包含转换队列单元52、翻译表存储单元54、匹配单元56和逆地址计算单元58。
如图1中所示,要在转换支持单元50中被转换的数据变量的地址,是通过地址输入线60向其提供的,地址输入线60在点62与A端相连,在点64处与B端分区相连。
向转换支持单元50提供的地址被存储在转换队列单元52中。这个转换队列单元52是被传输的数据变量的地址的缓冲器,例如可以以动态RAM存储器来实现。此外,如果当转换队列单元52充满时需要暂停向队列存储新数据,则从转换队列单元52发出一个背压信号,或者通过第一背压信号线66传送到第一更新总线控制单元22,或者通过第二背压信号线68传送到第二更新总线控制单元42。
如图1中所示,转换支持单元50进一步包含翻译表存储单元54,后者包含对应每个最终可能被传输到转换队列单元52的地址的条目。该条目便于导出关于与转换队列单元52中的地址相关的数据结构和转换软件的信息。因此,在地址被提供给翻译表存储单元54后,与向其提供的地址相应的翻译表的输出将是
DWA:与提供给翻译表存储单元54的地址相关的数据结构的起始地址;
DINFO:关于逆地址计算和/或转换所必需的变量的结构信息;
PA:该变量的转换程序的地址。
因此,由转换支持单元50执行的第一步骤是在翻译表存储单元54中寻找与从转换队列单元52中提取的地址相对应的条目。为了有效地在翻译表存储单元54中进行检索,提供了一个匹配单元56,其中实现在翻译表存储单元54中的该检索的方式是,检索低于或等于通过地址提供线60从转换队列单元52提供的给定地址的最高DWA。
特别地,在一个特例中,匹配单元56用二进制树进行该检索。下文将结合图5至12对此作更详细的解释。
一旦得到要作转换的数据变量和关于相关数据结构的信息的地址,它就被通过地址提供线70、DWA提供线72和DINFO提供线74提供给逆地址计算单元58。逆地址计算单元53用该信息导出关于该要作转换的变量的额外信息,例如数组中的索引或矩阵的索引下。
一般来说,该结果可能由N个组成,它们分别通过偏移提供线76-1,…,76-N被提供给A端或B端。用来在第一处理控制单元10或第二处理控制单元30中实际执行转换的转换程序的地址,也通过图1中所示的转换程序地址线78向其提供。
如图1中所示,数据转换硬件支援设备使用更新总线24。地址在这里在A端与B端之间传输或相反。地址被用来分别向更新过的被加载存储器分区32或12写入。在每端为在要被更新的该端有存储器分区的独立用户的存储器分区访问提供一个判优逻辑(未予示出)。
如果需要转换程序的延迟启动,按照本发明,转换支持单元50也可以包含一个可以添加的相关联的缓冲器单元(未予示出),用来存储通过匹配单元56和逆地址计算单元58获得的翻译结果。在这种情况中,该相关联的缓冲器单元延迟转换程序的实际启动。如果该相关联的缓冲器单元从不将相同的条目存储两次,就可以保证在预定的延迟间隔期间相同的转换不会被启动数次。现在将结合图2和3来解释用上述的硬件结构为转换而执行的基本过程。为了解释的目的而不是限制本发明的范围,假设数据是从A端向B端传输的,并且新软件被装入B端的存储器分区。
如图2中所示,在第一步骤1中,两端A和B都正在执行并行的同步的程序,并且执行相同的软件。进一步,图2中所示的步骤2涉及在第一处理与控制单元10中旧软件继续执行的同时向B端装入新软件。在步骤3中,第一处理与控制单元10进行将数据从A端向B端的复制。
如与步骤3相关的较低部分中所示,数据不仅能被复制,也能按照本发明在向B端传输的过程中在转换支持单元50中被转换。这里,该转换并行于并且不干扰第一处理与控制单元10中的软件的执行,以便能显著提高速度。
如图2中所示,在步骤4中,第二处理与控制单元30执行对第二存储器分区32的初始化,该执行并行于并且不干扰第一处理与控制单元10中运行的软件。这里,该初始化步骤或者在按照步骤2将新软件装入第二存储器分区32之后执行,或者视在步骤3中从旧软件复制的数据而定尽快地执行。
此外,与旧软件相关的数据可能只有一部分被传输,在切换到B端之前或紧接着切换之后,要执行特殊的初始化步骤,以执行不需要从旧软件输入完全数据的缺省初始化操作。
如图2中所示,一旦在步骤5中达到适当的状态,就通过第二处理与控制单元30执行向新软件的执行的切换。这里,在两个存储器分区12和32中对应的软件模块分别达到相同的状态后立即就可以按照单一的软件模块执行切换。如果有由于只传输部分数据而在切换时没有被传输的与旧软件相关的数据,可以在新软件的启动之前,必要的话,仍然可以传输该数据。
此外,如图2中所示,按照本发明,对于步骤3和4,转换支持单元50在对B端存储器分区的初始化步骤期间也继续运行。因此理由是软件在更新过程期间被继续执行并且会重写已经被传输到转换支持单元50的数据。因此,在后台重复地执行一个或几个更新和转换过程,直到切换到新软件,以便跟踪第一存储器分区10中变化的状态。这个重复的过程可以由转换支持单元50与B端存储器分区32的初始化步骤并行地执行。
图3表示与结合图2所述更新过程相应的流程图。特别地,可以看到新软件在准备步骤的同时被装入。按照本发明,转换支持单元50以并行方式同时运行,直到发生向B端的切换。
因此,按照本发明,在用转换支持单元50中的硬件支援设备(hardware support)执行新软件的更新和与旧软件相关的数据的传输的同时,旧软件的执行不被中断。
以上结合图1至3概述了数据转换的硬件支援设备的要点。下面将结合图4至15特别对翻译表存储单元54、匹配单元56和逆地址计算单元58作进一步详细的说明。
图4表示翻译表存储单元54的内部结构。如以上概述的那样,对于每个最终可能通过转换支持单元50被转换的数据变量,提供要作转换的所有变量的对应集合Vs中的一个条目vi:
Vs={v1,…,vi,…,vs} (11)
每个地址和因此翻译表中的每个条目与数据结构dj相关:
dj= {nj;DWA,…,αi,…;
…,DINFO,…;
…,Pi,…} (12)
这里,nj代表数据结构中的变量的个数,α代表数据结构dj中的数据变量的地址,DINFO代表关于数据结构dj中的变量的结构信息,Pi代表分配给各个数据变量的转换程序的起始地址。
如图4中所示,翻译表只为每个条目vi和要被搜索的地址存储数据结构dj的第一变量的地址DMA。换言之,对于存储数据结构dj的不同的变量,由翻译表存储单元54输出的将总是相同的起始地址DWA。
此外,DINFO项涉及要被检索的数据变量的结构信息(例如,它是与一维数组、二维数组还是矩阵相关)和任何其它灵活的数据结构。
翻译表中每个条目的第三项是分配给要在处理与控制单元10和30之一中转换的数据变量的转换程序的起始地址Pi。
对于被提供给转换支持单元50的数据结构的每个地址α,必须在翻译表中DWA满足下列方程的条目:
vi={v∈Vs|DWAi≤α∧α<DWAi+1} (13)
图5表示特别适合以最有效的方式进行这种检索的匹配单元56和翻译表存储单元54的实施例。
一般经常需要在含有许多条目的存储器中对特定数据值连同关联信息一起进行快速检索。一种选择是在含有多个数据值的存储器设备中顺序地检索特定数据值,当找到该数据值时,读出关联信息。然而如果各数据值在存储器设备中是随机存储的,则可能要搜索整个存储器才能找到该数据值。
为了避免搜索整个存储器设备,也可以按照预定规则,例如排序,在存储器设备中存储数据值,以后在检索过程中能用预定规则来查找数据值。
图5表示一例二维存储器,其中的各数据条目是通过列地址部分和行地址部分B编址的,即地址S=<B(X),A(X)>。X可被看作为二进制树中特定行地址和列地址交叉处的节点。如图5中所示,各个数据值可以随机地被存储在存储器设备中。另一种可能是用数据值到与二进制树数据结构相应的存储区的映射来表示排序的数据值。例如,WO96/09580披露了用二进制树来进行对记录的排序。
如图6中所示,在二进制树数据结构中每个节点(可以输入或读出数据值的交叉点X)与其它两个节点相连。对整个二进制树(或具有映射到该二进制树的条目的存储器设备)的检索过程如下。从节点X1(位于行地址B(X)和列地址A(X))读出数据值D1,将数据值D1与要被确定存储地址的数据值I比较。如果I<D1,则取树的左分支L,如果I>D1,则取树的右分支R。数据结构(或者说存储器设备中的数据结构)在逻辑上的组织方式,使得节点X2具有的数据值D2,满足D2<D1并且数据值D3>D1。实际上,假设有一系列数据[0,Dmax],存储在根节点DRN处的数据值将树划分成数据值(0…DRN-1),DRN,(DRN+1…Dmax),其中首先被提及的数据和最后被提及的数据分别可以在左和右分支中找到。然而,由于各个数据值D1、D2、D3可能是随机存储在存储器设备中的,所以对二进制树检索来说,有必要-在读出A(X1)、B(X1)处的数据D1后一提供关于D2或D3的位置或存储地址的信息。
因此,常规上一种解决方案是每个数据值D1、D2、D3有关联的(存储的)两个指针,即另外两个包含指示大于(R)或小于(L)所读出数据值的数据值的位置的地址的存储位置。在如图5中所示的存储器设备本身中,尽管逻辑上使用二进制树结构,其中每个更低子层次中存储的数据值分别大于和小于前一个层次(子树)中存储的数据值,但只有一个使用地址指针的逻辑映射,各数据值原则上是随机地存储在存储器设备中的。
使用带有不同地址指针的数据条目,要求预先定义根节点RN,根节点是数据值要从其读出并与要检索的数据值作比较的第一个节点。在“数据结构与算法”(Aho、Hopcrot、Ullmann著,国际标准书号ISBN0-201-00023-7,155页起)中描述了这种检索算法。显然,有一个缺点是,存储各种数据值所需的存储空间要求有额外的空间来存储每个数据值的两个另外的指示分支L、R的指针项。
尽管图5中有对存储器设备中的逻辑二进制树的明确表示,另一种解决方案是使用二进制树数据结构向存储器设备中固定地址即向矩阵阵列的元素的映射。在这种情况中,各分支地址(branchingaddresses)是通过二进制树节点向存储器设备中的预定位置的映射而事先已知的,因此指针在这里不是必需的,不占用存储空间。由于不必评估指针,就可以降低检索时间,正如“数据结构与算法”(Aho、Hopcrot、Ullmann著,国际标准书号ISBN0-201-00023-7,271页起)中披露的那样。采用这种各个节点X1、X2、X3向存储器设备中特定位置的隐式映射,就能计算一个子树内的各个“子”节点X2、X3的地址。实际上,如果由列地址A代表左和右分支,则左分支处的下一个节点地址的计算方法是
A(L(X))=2A(X)+0
而由分支R的计算方式是
A(R(X))=2A(X)+1。
然而,对整个地址<B,A>采用这种映射,就意味着在对树的短暂的初始遍历之后,在遍历的每一个进一步的步骤中,地址的最高有效分区(the most significant partition)改变。因此,对于要在动态随机存取存储器装置中存储的大型树来说,由于数的大小,检索时间仍然可能是可观的。对于实际应用来说,要求用特别是减少地址的最高有效分区的改变次数的更快的方法。
以下所述的按照本发明的方法和存取装置,根据的是二进制树中各节点向最好是动态随机存取存储器DRAM的存储器设备的地址的映射。然而,DRAM一般有非常高的存储密度,对于随机分布的存取来说,它们是相当慢的。使用按照本发明的的特定寻址方式,能实现更少的存取时间。为此,一系列连续访问的地址必须满足一定的限制。按照本发明的的映射保证对树的检索总是满足这些限制。性能的提高(时间的减少)能达到约10倍。
如上文所述,DRAW的地址位通常被划分成被称为行地址B和列地址A的两部分(见图5)。一般来说,行和列地址的长度是相等的。由于DRAM的内部实现,如果能通过在尽可能保持行地址不变的同时只改变列地址来进行连续的访问,则访问时间就被显著地缩短。所以,按照本发明的用于映射的新颖方法和存取装置实现了一个符合尽可能保持行地址不变的标准的树检索算法。
图7表示按照本发明将二进制树划分成若干子树。完全树包含若干子树,图中显示了是其中的子树1、2、3、4、5。在图7中,每个子树有一个以“k=1”标明的根节点。同样,子树的每个叶节点以“k=K”标明。“k”是子树的“深度”,即每个子树内有若干其它节点,在图中只是以虚线粗略地表示。所以实际上在图7中每个粗略表示的子树都包含K层,对应每个子树中总共2K-1个节点。
在通过其列和行地址访问了一个根节点后,就在有K层(实际上层数K与存储器中行的大小有关)的子树中相应地进行检索。每个子树的(最低层的)叶节点与下一个子树的相应的根节点相连。可能注意到在图7中只画出了节点的一个子集。例如,子树1的叶节点LN直接与子树3的根节点X1相连。在根节点X1与其叶节点X2、X3之间又若干中间节点。根节点位于k=1的位置,叶节点位于k=K的位置。子树5的叶节点LN同时也构成整个二进制树的一个叶节点。因此,区分整个数的根和叶与子树的根和叶是重要的。在每个子树中,每次遍历一个子树,变量k要从1步进到K,如此重复,直到找到要检索的值,或者到达整个树的叶节点。
子树中的层数与实际的存储器硬件有关。按照本发明进行的向各存储位置的映射,使得一行中含有2K-1个条目即列。在下文中将会看到,按照本发明的在每个子树内的检索,相当于在一个个别行内的检索。沿该行的一例如沿子树1的一各存储位置(随着列地址的增加而顺序地)对应于该特定子树的根节点、中间节点和叶节点LN。将每个被读出的数据值D1、D2、D3与要查找的数据值I作比较,决定需要采取的是子树内的左分支还是右分支。
如图6中所示,对于常规的二进制树来说,树是其中没有循环的一种特殊的图形;就是说,在树中经历一个步骤后,返回到原来节点的唯一方式是从原路返回。这完全与自然树相符。此外,树的每一个本身构成树的部分是一个子树。所以,树一般含有许多子树。
如图7所示的按照本发明的整个树被以特殊的方式划分成各子树,使得各子树是排它的,不与其它子树相连;就是说,每个含有确实可以是互相连接的一个根节点、若干叶节点和中间节点的子树,如图9中所示,都不含有其它子树的任何部分的。当然,存在许多其它的由整个树构成子树的方法。这个事实是重要的,因为仅仅说树被划分成子树并不意味着那是如图7中所示的那样划分的。所以,图7定义了本发明中进行的特殊类型的子树划分。
在一行(子树)内部的数据的组织如图9中所示。根节点RN总是被映射到第一列地址A=1。假设数据范围是Dmin到Dmax,则位于根节点RN的数据值D1将子树划分成数据值D=[Dmin,D1-1]位于左边各节点,数据值D=[D1+1,Dmax]位于右边各节点。值得注意的是,该划分只给出范围,而不是数据的实际值。实际上,k=2处的各下一层节点将按照各节点处存储的相应数据值D2、D3再次进行进一步划分。然而如图9中所见,数据值D2<D1位于列地址A’=2A,而右分支上的数据值D3则位于新的列地址A’=2A+1。数据值D4、D5又是分别被存储在列地址2A、2A+1。假设K=3,显然数据值D4、D5、D6、D7构成了子树的叶节点,如图9中所示。一般来说,左分支上新节点地址将是2A,在右分支上的则是2A+1。一般来说,有2K+1个叶节点,显然数据值DK被存储在列地址2K-1。中间节点IN的个数为2K-1-2。这描述了一行中各节点向各个列地址的映射。
然而,在到达一行中的叶节点(K=3时的D4、D5、D6、D7或DK或列的右端的2K-1个节点后,问题是在矩阵存储器中的什么位置寻找下一层根节点(K=3时的D4’、D4”…和k=K时的DK’、DK”)。如图9中所示,下一层子树的根节点总是位于位置A=1,然而,未必是根节点和下一行中存储的下一层中间节点和也节点。按照本发明,下一个子树的的下一个根节点位于列位置A=1和行位置B(L(L(X))和B(R(X))。按照本发明,左分支的数据值D’4、D’4被存储在
B(L(X))=2K*B(X)=2*A(X)+0-2K
而在右分支上相连的子树的下一个根节点位于行地址
B(R(X))=2K*B(X)=2*A(X)+1-2K
由图8也可看到,下一个子树(相关联的行)未必位于与前面的子树相邻的位置。
按照图9的二进制树的各节点向存储器中各存储位置的映射,意味着各条目是在按照树中的(因此也是如图7、8、9中各值所指示的子树内的)值的增序排序的二进制树的节点中存储的。
当然,以二进制树中的增序(对应于图9中所示的存储器行的特定顺序)存储各个数据值,对每个子树中使用的从子树叶向下一个子树根节点检索的检索算法有影响。
如前文解释的那样,主要目的是使行变化尽可能地少,即尽可能地不经常地址S=<B,A>的最高有效部分,因为只有按列方向的检索是非常迅速的。列向地按照特定顺序存储一行中一个子树的数据值,导致的结果是按列方向上的最后各条目构成每个子树的叶节点LN。所分配的叶节点LN(图8中叶节点存储位置)的多少取决于子树内的层次数,即取决于存储器在列方向上的大小。例如,层数K=3的子树包含在列方向上最左边位置的四个叶节点LN(也参看图11、12中的例子)。
鉴于以上所解释的映射,应当注意在整个说明中,(逻辑)表述“节点”等同于存储器中(物理的)被映射的存储位置。
如以上概述的那样,本发明提供二进制树向二维存储空间的映射,使得每行对应于一个子树,并在每行或子树内使用特定的检索策略。如果发现所读出的值与要检索的数据值之间匹配,或者如果找到一个叶节点LF,则检索停止。因此,在每个子树内进行检索的同时,检索算法必须留意它所在的层,这是因为只有当到达叶节点时才改变行地址B。在本发明中不仅发现能在每个子树内计算检索地址,而且发现只有根据比较结果和叶节点的当前地址才能计算下一个子树的特定的新的根节点地址。就是说,按照本发明,定义要读出的下一个数据值所在的节点的新的完全地址S=<B,A>,是从当前读出的存储位置的当前地址并根据比较结果计算的。这适用于子树内的下一个节点的地址,对寻找要被检索的下一个子树的下一个根节点的存储地址也是有效的。
图10表示与按照本发明的检索方法的一个实施例相应的流程图。应当注意,对于该算法来说,整个二进制树按照图7被划分成各子树,根子树以下层次的最左边的子树被截除。
如上所述,如果存储器被预先定义有m列,则层数是K=ln(m)/ln2(或下一个更小整数),实际硬件的列地址中的位数等于K,其中K是子树中的层数。注意到在图7、8、9所有例子中,由于数的构造决定了不使用列地址0。实际上,如果m代表总列数,K代表子树中的层数,则只使用m个列中的m-1个列,或2K-1个列(如果更小的话)(参看图7、8、9)。
因此,在步骤S1中开始该检索方法之后,将第一子树的层次设定为k=1,即检索在子树1的根节点RN处启动(见图7)。然后,在步骤S3,输入要检索的数据值I、每个子树的层数K以及根节点RN的位置或根地址[B(0),A(0)=<0,1>](二进制表示)。因此,第一子树1的根节点RN是检索算法的入口点。
在步骤4中,从第一子树1的根节点RN的当前地址<B(0),A(0)>读出数据值D和相关信息。在步骤S5中,将所读出的数据值D与要查找的数据值I比较。如果在步骤S5中确定匹配D=I,检索就在步骤S11中结束。
如果在步骤S5中,读出的数据值D大于要检索的数据值I,步骤S6判断是否到达叶节点LN。这可通过比较当现行数k与给定的层次数K来决定。如果在步骤S6中确定k<K,就执行步骤S9、S14。在步骤S9中用下列方程来计算子树内位于左分支方向上(I<D)的中间节点-也可能是叶节点-的新地址:
B(L(X))=B(X)
A(L(X))=2*A(X)+0 (1)
这里,B(L(X))和A(L(X))表示子树1内下一个子节点的新的行地址和列地址。之后,在步骤S14中将层深数k递增1。
同样,如果在步骤S5中确定I>D,就从根节点RN转到右分支,如果在步骤S8中判定尚未到达子树的最深处,即k<K,就与步骤S9、S14类似地执行步骤S12、S16,其中方程(2)如下地定义子树1内的下一项或子节点:
B(R(X))=B(X)
A(R(X))=2*A(X)+1 (2)
由步骤S5、步骤S6、S8和步骤S9、S12可见,在子树内只有列地址部分A被改变,即它或者对左分支来说被加倍,或者对于右分支来说被加倍后再向右前进一列。值得注意的是,不管步骤S5中的确定如何,行地址部分B保持相同。如果所读出的数据值更大,则有一个两倍于列地址的跳转,如果所读出的数据值比要检索的数据值小,则下一个列地址是当前列地址的两倍加1。
当然,由于只有k<K时才执行步骤S9、S12(K=一个子树内的最大深度或层次数;K是预先定义的),在步骤4中读出如步骤S9、S12所确定的新地址A、B处的新数据值D。标注号R表示这种分别经各个步骤S4、S5、S6、S9、S14和S4、S5、S8、S12、S16的循环运行。在循环过程中,如果在某子树内找到该数据值(I=D),该算法就在步骤S11中停止。
然而,在k次循环后,步骤S6或S8确定到达了所分配子树的最深处,即k=K,这意味着一定已经到达了某个叶节点存储位置LN。使用图9中所示的数据值的映射,显然该叶节点LN在图8中的存储器设备的地址空间一定对应于列地址A的较高端的(即位于该行的右端的)最后2K-1个存储位置。
如果到达某子树中的这种叶节点LN,则在步骤S10、S13中采用方程(3)、(4)来分别计算另外一个子树的根节点的新的行地址和列地址。
B(L(X))=2K*B(X)+2*A(X)+0-2K
A(L(X))=1 (3)
B(R(X))=2K*B(X)+2*A(X)+1-2K
A(R(X))=1 (4)
由方程(3)、(4)可见,如果出现叶节点,则列地址A-不管步骤S5中的决定如何-被设置成第一列,即A(L(X))=A(R(X))=1。然而,根据步骤S5中的决定,要选择新的行地址B。
有意思的是,由其中从叶节点LN出发的箭头指示按照方程(3)、(4)进行计算的图8和图9中,注意到下一个子树的下一个根节点的确位于列A=1,然而,它却不是如人们可能会预期的那样位于下一个相邻的子树2上。相反,方程(3)、(4)进行这样一种列-行映像(imaging),其中要检索的下一个子树的下一个根节点的新的行地址不是下一个新的行地址(除了子树中最左边的叶节点外,例如参看图11中例子中的从13到19的映像)。
在步骤S13中确定了要检索的下一个子树的下一个根节点后,在步骤S17中将k重新设置成k=1,这是因为在下一个子树中的检索显然在层1即在根节点地址开始。然后再次在步骤S4读出下一个数据值D,循环地对新子树(新行)执行步骤S5、S6、S9、S14或步骤S5、S8、S12、S16,直到发现D与I之间匹配或者再次发现新子树的叶节点。
当然,可能会出现即使在下一个子树内(例如图8中的4或5)也找不到该数据值,于是到达某叶节点LN的情况。例如,如果在子树5中到达叶节点LN,则方程(3)和方程(4)都不会产生仍然包含在该行地址空间内的行地址(如果行数和列数相同的话)。如果行数大于列数,则当然可以进一步计算新的子树。这意味着有更多的子树(行)可用。实际上,当算法已经到达图7中的子树2或3以下时,行地址中的位数一定是列地址中的位数的两倍,这是因为二进制树固有的特点是每深一层节点数就加倍。
当到达子树4中的叶节点时不能确定进一步的子树的根节点时,这表明在对该子树的二进制检索中没有找到该数据值,因此在整个二进制树中也没有找到。
应当注意的是,在步骤S5中最好允许一定的误差,使得在一定的允许误差值的范围内确定D与I的匹配,即如果|D-I|<ΔD,则找到匹配,其中ΔD代表预先规定的一定的允许误差。
特别地,为了在图10中的点A和B获得与以上概述的方程(3)相应的行为(behaviour),进一步执行图17中所示的下列步骤。
在点A,第一个步骤S21A涉及测试当前节点是否是整个树的一个叶节点。如果不是,算法就继续到图10中的步骤S6。然而,如果当前节点是整个树的一个叶节点,就应当使用最后一次保存的D和信息(D)的值,然后算法停止,如图17中的步骤S22A和S23A所示。
在点B,第一个步骤S21B涉及测试当前节点是否是整个树的一个叶节点。如果不是,就为将来可能的使用而保存D和信息(D)的当前值。然后算法就继续到图10中的步骤S10。然而,如果当前节点是整个树的一个叶节点,就应当使用D和信息(D)的值,然后算法停止,如图17中的步骤S22B和S23B所示。
图11、12具体表示图7、8、10中的通用算法用于特定的例子(K=3),其中列地址和行地址采用二进制表示。K=3意味着在存储器地址空间中提供8列和(至少)8行。由于如果位于二进制树的顶部的第一个根节点RN有地址A(0)、B(0)=(000,000),方程(1)、(2)不给出列地址中的变化,所以,首次执行图4中的步骤S4时要查找的第一个节点将总是图11中存储器中的左上的存储位置,即第一个子树的第一个根节点(即整个二进制树的根节点)的B(0)=0和A(0)=1。
图12对行和列的地址号码采用二进制表示,图中显示了位于具有地址000、001的头两行的子树1和子树2。
图11中存储器设备内各数据值D的分配是按照图12进行的,正如上文结合图7所作的一般说明那样。在图11和12中的例子中,假设所有数据值属于给定的范围0-100。以根节点开始,相应的值56将这个范围划分成两个范围,即0-55(左分支)和57-100(右分支)。现在,将所有属于较低范围0-55的值都存储在左后继树中,将所有属于较高范围57-100的值都存储在右后继树中。递归地在在所有更低层重复这个过程,每一层上使用一个新的范围。例如,对于根节点的左后继,使用范围0-55。下一个节点处的值为27。于是,将该范围进一步为从含有数据值27的节点下行的两个后继树划分为范围0-26和28-55。这意味着,将所有属于范围0-26的值都存储在左后继树中,将所有属于范围28-55的值都存储在右后继树中。
可以注意到,如图12←→11中所示的这种映射数据值的方法,对于整个数以及对于其自己的子树都是正确的,只是要记住,起始范围会因层数K而不同。因此,图12中就各数据值所示的是一个完全平衡的二进制树。这同样反映在分别对应于一个子树的各节点的每个行中的各项中。
正确映射的最重要含义是,如果到达整个数的某叶节点而没有找到所检索的值,则在树中就根本不存在该值。
对于左分支来说,乘以二就意味着列地址部分A向左的转移。右分支产生被左移后再加上“1”的列地址部分A。所以,位于k=2的各中间节点和位于k=3=K的各叶节点的各个地址对应于特定数据值D位于的特定行和列。图12中如结合图9所讨论的那样表示了位于各中间节点和叶节点的数据值56、27、82…。
显然,图10中的算法每当到达四个节点0,100或0101,或0110或0,111的其中之一时就计算下一个子树的新的根节点地址。
对于新的根节点的计算,只有一个分支是不允许的,它是在当读出的数据值D=13大于要检索的数据值I时的情形中相对于地址0,100的分支。实际上在这种情形中本当采用地址0,100的左分支,即本当采用方程(3)。然而,在这种情形中左分支的方程(3)会产生B(L(X))=2K(000)+2(100)-2K=0000+1000-1000=0000。因此,决不能采用图7和图12中被标明“截除”的第一个左分支,因为检索会从再次从根节点地址开始。
实际上,检索机本身没有测试手段来避免遍历进入被禁用(截除)的子树。然而,通过在第一个(根)子树的左叶节点存储一个特定数据值就能保证做到这一点。就是说,在根子树的最左边节点中含有具有保证右分支及因此右边的下一个子树总被搜索设备选择的数据值(图12中的数据值19)的一项。如果如图12中所示地在树中按顺序存储这些项,这个条件就会自动得到满足。当树被截除时,根子树中最左边的节点也变成整个树中的最左边节点。所以这是存储具有最低值的项的地方。所有其它值都在右边。
然而,按照方程B(R(X))=001,如果采用右分支,则意味着具有地址0,100的最左边叶节点LN产生的下一个叶节点根地址是001,001。如图12中所示,这实际上对应于位于第二行的子树2的根节点。如图11中所见,子树1的每个叶节点都能被“映射”到位于特定行地址的位置A=1处的新树的新根节点。如果行数大小至少与列的大小相同,则能保证子树1的每个叶节点LN都能被“映射”或“转置”成第一列中的一个新根节点。
也如图11、12中所见,如果数据值被存储在二进制树的节点中,由方程(1)-(4)所描述的检索算法行地址变化的数量最少,同时以最短时间检索存储矩阵,寻找与数据值I(在允许偏差内的)匹配。如果在最低的叶节点找不到匹配,则没有找到该数据值。
通过最好对列地址部分A和行地址部分采用二进制表示,能方便检索,这是因为,乘以2只意味着在移位寄存器中将地址左移。
如上所述,在从一个子树向下一个子树的遍历中行地址的变化可由以下步骤来描述。首先,将旧的行地址向左移位K步,以零填充。然后,应用内部子树算法来改变列地址(在新的列地址中包含K+1位)。然后将这个列地址的最左边的一位去掉(在新的列地址中包含K位)。然后将这个列地址加到行地址的K0个位中。最后,将列地址设置成1。可以看见,在子树的每个改变,需要另外K个位来保存行地址,正如前文参照图7、8、9、11和12所述的那样。所以,行地址中的位数一定是列地址中位数的倍数。这是按照本发明的采用具有二进制树结构的翻译表存储单元的一个实施例的较佳的映射。
然而,类似的考虑适用于行地址中的位数不是列地址中位数的倍数的情况。这里,首先建立达到上述较佳的行和列数的最小树。然后将含有列地址的不存在的部分中的节点的所有子树截除。这样,当采用分支的截除并相应地对数据进行分配时,也可以使用一个其中行数不是列数的倍数的存储器。此外,为了避免算法进入已经被截除的(实际上不存在的)被禁用的子树,可以采用数据值的特定存储,使得没有需要采用通向被截除分支的路径。
以下将参照图13来解释按照本发明的采用如图7至12中所述的检索方法的存取装置的一个实施例的硬件实现。
在图13中,DRAM表示存储器设备54,存取装置包含比较装置MC84,用于比较读出的数据值D与要检索的数据值I,以确定该读出的数据值D大于还是等于该要检索的数据值I。如果比较装置84发现D与I之间(在给定的允许偏差ΔD内)是匹配的,就输出匹配信号M。比较结果C指示值D是大于还是小于值I。读出装置82(未予详细表示)读出从在树的遍历期间保存中间列和行地址的两个寄存器RA、RB输入的当前检索地址A、B处的数据值。
存取装置进一步包含确定装置86,它包括用于根据比较结果C和当前检索地址A、B来确定为检索数据值下一次要检索的完整检索地址的寄存器RB、RA。
确定装置86包含该第一和第二寄存器和根据比较结果C、当前地址B、A和状态机SEQ输出的控制信号来计算下一个要检索的列和行地址A’、B’的第一和第二计算电路SMB、SMA。
状态机SEQ确定在检索二进制树数据结构期间的检索状态(实际上它监视k并因此实质上图10中的步骤S6、S8)并根据比较结果确定控制信号S。实质上,状态机SEQ包含一个计数器和一个用于根据内部状态(STATEt)生成控制信号S的状态确定装置STDM。实质上,状态机的内部状态,对应于每当比较装置MC输出新的比较结果C(指示D<=I或D>I)时就被更新的当前层次号k。就是说,对应树的根节点的状态是0,对应(除根节点外的)非叶节点的是1至K-1,对应叶节点的是K。类似地,对应根节点的控制信号S是0,对应非叶节点(子节点)的是1,对应叶节点的是2。从具有状态0的(整个树的)根节点(其它子树根节点的状态是1)开始,状态机SEQ在自上而下遍历树时将按照对子树的划分而前进。信号S将依照映射选择SMB和SMA中地址计算的类型。
具体来说,存取装置的各项执行下列功能。第一计算电路SMB执行下列(用功能记号给定的)功能,其中K是子树中的层数:
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)表示比较结果,B和B’代表当前和下一个行地址,S代表控制信号,K代表子树中的预定层数,A代表当前列地址。
第二计算电路SMA执行下列(用功能记号给定的)功能:
A’=1,如果S=0;
A’=2*A+C,如果S=1;
A’=1,如果S=2, (7)
其中C表示比较结果,A和A’代表当前和下一个列地址,S代表控制信号。
状态机SEQ根据下列公式(8)和(9)计算控制信号S:
S=0,如果STATEt=0;
S=2,如果STATEt=K;
S=1,如果0<STATEt<K, (8)
其中状态机SEQ的状态确定装置STDM按照下列公式(9)计算状态机SEQ的内部状态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代表在遍历整个树期间从开始计算的比较次数(即t是按比较步骤计算的自检索开始的时间或循环的记号),其中t从0开始,大至整个树的层次数,层次数原则上可以是任意大的数,但限于是K的倍数;STATEt=0代表在二进制树数据结构的根节点RN相应的存储位置进行第一次比较时的状态。
如上概述,按照本发明的方法和存取装置在引起子树的变化时只使用最少的步骤数。根据映射,在子树内部的遍历期间只有列地址改变。当不得不使用动态随机存取存储器时,由于数据的数量,本发明能为按照二进制树数据结构排序的数据值提供快速检索引擎。时间的缩短是呈数量级的。所以,本发明可被用于在大型存储器查找数据值时时间极其重要的所有技术领域。
应当注意的是,在以上说明中,行是可以与列交换的,这是因为它将取决于存储器的组织中分别被记为行和列的是哪个存储方向。
一旦上述匹配单元56揭示翻译表存储单元54中某地址的对应条目,就可以使用以上概述的转换支援单元50中的与要转换的数据变量有关的数据结构dj的起始地址DWA、结构信息DINFO、以及有关转换程序的起始地址Pi。
下一个步骤于是涉及按照要转换的数据变量对索引的确定。这种索引使得能用逻辑的而不是物理的地址通过转换程序来访问数据变量。
在逆地址计算单元58中的逆地址计算期间,最初计算一个值
αinv=α-DWA (12)
然后将αinv的值分裂成与总数据结构中各索引有关的偏移量1…N,被具有起始地址Pi的转换程序用来在用如上概述的用逻辑寻址实际转换数据变量之前访问数据变量。
图14表示对一维数组的逆地址的计算。这里,具有要转换的数据变量α的数据结构具有分配给它的初始索引的地址DWA。因此,在计算α与DWA的差之后,存储一维数组中每个数据变量的长度的结构信息DINFO被用来确定数据变量的索引。特别地,这个索引是通过将α与DWA的差除以一维数组中每个数据变量的长度计算出来的。
图15表示与对二维数组或矩阵的逆地址计算有关的另一个例子。假设矩阵A(I,J)的大小是I取0至3的值,J取0至6的值。图14的上部表示处理一个指向矩阵A的元素A(2,3)的地址α的转换队列单元52。
此外,如图14的下部所示,矩阵A(I,J)的二维逻辑表示被映射到存储器分区12、32中的一个线性结构。这里的DWA代表对应于矩阵元素A(0,0)的矩阵A的基址。
要确定数据变量的索引2、3,有必要知道基址DWA、可能存储在DINFO中的二维矩阵的每个数据变量的长度,以及索引的范围,诸如从0到3的第一索引(行)和从0到6的第二索引(列)。如果已知每个数组元素的长度,则各索引值可按下列公式计算:
k=α-DWA
J=k-7*INT(k/7)
I=INT(k/7) (13)
其中INT(Z)是Z的整数部分,例如INT(12/7)=1,常数7是从第二下标的范围(列数)和每个元素(1)的长度导出的。所以,如果A的基址是1000,则地址1017相当于
J=17-7*INT(17/7)=3
I=INT(17/7)=2, (14)
即存储地址1017对应于A(2,3)
用这个方法,可将逆地址计算推广到任意数量的下标和数组元素的任意长度。例如,如果元素的长度是两个存储器字,则I和J的公式中的常数7就应当被2*7=14替换。如果要能访问这种两字数组元素的每个字,则可以修改公式,通过取Z的余数部分REM(Z)来计算每个元素的高和低字。
尽管以上是就根据变量地址传输变量来说明本发明的,也可以采用更高级的地址。这种更高级地址的组成可以是变量的程序单元号和基址和适当的任何下标的值。本发明的这个选择会简化转换硬件,因为匹配单元56能更简单并且不需要逆地址计算单元58。然而,从变量的程序单元号和基址向转换程序的程序单元号和起始地址的翻译仍然是必要的。不过,这个更高级转换方法的一个优点是所能获得的转换的能力的增加。
标注号列表10第一处理与控制单元12第一存储器分区14第一地址总线16第一数据总线18第一数据地址总线控制单元20第一数据地址总线控制线22第一更新总线控制单元24更新总线26第一更新总线控制线28第一复制/转换数据线30第二处理与控制单元32第二存储器分区34第二地址总线36第二数据总线38第二数据地址总线控制单元40第二数据地址总线控制线42第二更新总线控制单元44第二更新总线控制线46第二复制/转换数据线50转换支援单元52转换队列单元54翻译表存储单元56匹配单元58逆地址计算单元60地址输入线62第一地址连接线64第二地址连接线66第一背压信号线68第二背压信号线70地址提供线72DWA提供线74DINFO提供线76-1至76-N偏移量提供线78转换程序地址线82匹配单元中的读出单元84匹配单元中的比较单元86匹配单元中的确定单元
Claims (43)
1.一种分区类型的软件处理系统,包含:
a)带有第一存储器装置(12)的第一分区(A),
b)带有第二存储器装置(32)的第二分区(B),其中
c)第一分区(A)与第二分区(B)是通过一个连接装置(24)相连的,并且适合在旧软件的执行期间将一个存储器装置(12;32)中的新软件的状态更新到另一个存储器装置(32;12)中的旧软件的状态,和
d)数据从旧软件向新软件的传输是由一个适合输出与要转换的数据变量相关的转换程序的起始地址的数据转换支援设备(50)支持的。
2.按照权利要求1的软件处理系统,其特征在于,数据转换支援设备(50)将该转换程序的起始地址分别输出到该第一分区(A)的第一处理与控制单元(10)或该第二分区(B)的第二处理与控制单元(30)其中之一。
3.按照权利要求1或2的软件处理系统,其特征在于,数据转换支援设备(50)适合在向数据转换支援设备(50)提供的用于数据转换的地址的数目超过最大可允许地址数目时分别通过第一背压信号线(66)和第二背压信号线(68)向该第一分区(A)或向该第二分区(B)输出一个背压信号。
4.按照权利要求1至3其中之一的软件处理系统,其特征在于,数据转换支援设备(50)也适合将至少一个用于访问要通过转换程序在某个逻辑水平上转换的数据变量的逻辑地址分别向该第一处理与控制单元(10)和该第二处理与控制单元(30)其中之一输出。
5.按照权利要求2至4其中之一的软件处理系统,其特征在于,数据转换支援设备(50)包含:
a)一个适合存储要转换的数据变量的地址信息和结构信息的翻译表存储装置(54);和
b)一个适合按照数据变量的地址(α)和与数据变量相关的数据结构的起始地址(DWA)在该翻译表存储装置(54)中寻找要转换的数据变量的匹配装置(56)。
6.按照权利要求5的软件处理系统,其特征在于,该翻译表存储装置(54)适合为要转换的数据变量的每个地址分别存储有关数据结构的起始地址(DWA)、结构信息(DINFO)和有关转换程序的起始地址。
7.按照权利要求6的软件处理系统,其特征在于,该结构信息(DINFO)包含至少关于要转换的数据变量的数据变量长度和数据结构(dj)的组织的信息。
8.按照权利要求5至7其中之一的软件处理系统,其特征在于,该匹配装置(56)按照
Vi=(v∈Vs|DWAi≤α∧α<DWAi+1}
来确定该翻译表存储装置(54)中的条目。
9.按照权利要求5至8其中之一的软件处理系统,其特征在于,该匹配装置(56)适合通过进行二进制检索在该翻译表存储装置(54)中寻找一个条目。
10.按照权利要求9的软件处理系统,其特征在于,该匹配装置(56)是按照权利要求21至31其中之一实现的。
11.按照权利要求5至10其中之一的软件处理系统,其特征在于,该数据转换支援设备(50)进一步包含适合用从该翻译表存储装置(54)读取的信息来标识要在某个逻辑地址水平上转换的变量的逆地址计算装置(58)。
12.按照权利要求11的软件处理系统,其特征在于,该逆地址计算装置(58)适合首先计算提供给该数据转换支援设备(50)的地址(α)与所标识的数据结构(dj)的起始地址(DWAj)之间的差,并进一步用该翻译表存储装置(54)所提供的结构信息(DINFO)来导出与要转换的地址相应的至少一个逻辑地址偏移量。
13.一种数据转换支援设备,包含:
a)一个适合存储要转换的数据变量的地址信息和结构信息的翻译表存储装置(54);和
b)一个适合按照数据变量的地址(α)为数据变量转换程序在该翻译表存储装置(54)中寻找一个条目的匹配装置(56)。
14.按照权利要求13的数据转换支援设备,其特征在于,该翻译表存储装置(54)适合为要转换的数据变量的每个地址分别存储有关数据结构的起始地址(DWA)、结构信息(DINFO)和有关转换程序的起始地址。
15.按照权利要求14的数据转换支援设备,其特征在于,该结构信息(DINFO)包含至少关于要转换的数据变量的数据变量长度和数据结构(dj)的组织的信息。
16.按照权利要求13至15其中之一的数据转换支援设备,其特征在于,该匹配装置(56)按照
vi=(vi∈Vs|DWAi≤α∧α<DWAi+1}
来确定该翻译表存储装置(54)的条目。
17.按照权利要求13至16的数据转换支援设备,其特征在于,该匹配装置(56)适合通过进行二进制检索在该翻译表存储装置(54)中寻找一个条目。
18.按照权利要求13至17的数据转换支援设备,其特征在于,该匹配装置(56)是按照权利要求21至31其中之一实现的。
19.按照权利要求13至18其中之一的数据转换支援设备,其特征在于,适合用从该翻译表存储装置(54)读取的信息来标识要在某个逻辑地址水平上转换的变量。
20.按照权利要求13至19其中之一的数据转换支援设备,其特征在于,该逆地址计算装置(58)适合首先计算提供给该数据转换支援设备(50)的地址(α)与所标识的数据结构(dj)的起始地址(DWAj)之间的差,并进一步用该翻译表存储装置(54)所提供的结构信息(DINFO)来导出与要转换的地址相应的至少一个逻辑地址偏移量。
21.一种用于确定存储器设备中预定数据值(D)的存储地址(B(X),A(X))的存储器设备的匹配装置,所述数据值(D)是按照有节点、分支、子树的二进制树数据结构存储的,该匹配装置包含:
a)一个用于读出所述存储器设备的预定的当前检索地址(B(X),A(X))处的数据值的读出装置(R);
b)用于将该读出的数据值(D)与要检索的数据值(I)作比较,以确定该读出的数据值(D)是大于还是小于要检索的数据值(I)的比较装置(MC);和
c)用于根据该比较结果(C)和该当前地址(B(X),A(X))来确定为检索数据值而要检索的下一个检索地址(B,A)的确定装置(SEQ、SMB、SMA、RB、RA);其中
d)所述读出装置、所述比较装置和所述确定装置循环地进行所述读出、所述比较和所述确定,直到所述读出的数据值(D)与所述数据值(I)在预定的允许偏差内匹配(M)。
22.按照权利要求21的匹配装置,其特征在于,所述数据值是按行和列的矩阵排列被存储在所述存储器装置中的,其中每个数据值(D)被分配一个列地址(A)和一个行地址(B)。
23.按照权利要求22的匹配装置,其特征在于,所述确定装置包含:
-用于保存下一个行和列地址(B’,A’)的第一和第二寄存器(RB;RA);
-用于根据比较结果(C)、当前地址(B,A)和控制信号(S)计算要检索的下一个行和列地址(B’,A’)的第一和第二计算电路(SMB,SMA);和
-用于确定通过二进制树数据结构的检索期间的检索状态(STATEt)和用于根据比较结果(C)确定所述控制信号(S)的状态机。
24.按照权利要求22的匹配装置,其特征在于,所述存储器设备中的数据值是按每个子树中有预定的层次数K的二进制树数据结构存储的,其中所述状态机(SEQ)包含一个计算由所述比较装置(MC)进行的比较的次数(t)的计数器(CNT)。
25.按照权利要求23的匹配装置,其特征在于,所述比较结果(C)是由所述比较装置(MC)按照下列公式(5)计算的:
C=0,如果I<D;
C=1,如果I>=D; (5)
其中C代表比较结果,I代表要检索的数据值,D代表读出的数据值。
26.按照权利要求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)表示比较结果,B和B’代表当前和下一个行地址,S代表控制信号,K代表子树中的预定层数(列地址中的位数),A代表当前列地址。
27.按照权利要求25的匹配装置,其特征在于,所述第二计算电路(SMA)按照下列公式(7)计算下一个列地址(A’):
A’=1,如果S=0;
A’=2*A+C,如果S=1;
A’=1,如果S=2, (7)
其中C表示比较结果,A和A’代表当前和下一个列地址,S代表控制信号。
28.按照权利要求23的匹配装置,其特征在于,所述状态机(SEQ)根据下列公式(8)计算所述控制信号(S):
S=0,如果STATEt=0;
S=2,如果STATEt=K;
S=1,如果0<STATEt<K, (8)
其中状态机(SEQ)的状态确定装置(STDM)按照下列公式(9)计算状态机(SEQ)的内部状态STAEt:
STATEt=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代表由计数器(CNT)计算的比较次数;0<t<K*N,N代表整个二进制树的子树层数,STATEt=0代表在二进制树数据结构的根节点RN相应的存储位置进行第一次比较时的状态。
29.按照权利要求21的匹配装置,其特征在于,所述所述读出装置(R)读出在所述存储器装置中存储的与所述匹配数据值相关联的信息。
30.按照权利要求21的匹配装置,其特征在于,所述存储器设备是DRAM或高速缓冲存储器其中之一。
31.按照权利要求30的匹配装置,其特征在于,所述存储地址有一个行地址部分内核一个列地址部分,所述列地址部分被用来选择某特定高速缓冲存储器行内所述顺序数据项的一个,所述行地址部分被用来选择一个特定高速缓冲存储器行。
32.一种用于确定存储器设备中预定数据值(I)的存储地址(B(X),A(X))的方法,在存储器设备中的各数据值(D)是按照有节点、分支、子树的二进制树数据结构存储的,该方法包含下列步骤:
a)从所述存储器设备读出当前检索地址(B(X),A(X))处的数据值(D);
b)将该读出的数据值(D)与要检索的数据值(I)作比较,以确定该读出的数据值(D)是大于还是小于要检索的数据值(I);和
c)根据该比较结果(C)和所述当前地址(B(X),A(X))确定为检索数据值而要检索的下一个检索地址(B,A);其中
d)循环地进行步骤a)-c),直到所述读出的数据值(D)与所述要检索的数据值(I)在预定的允许偏差(ΔD)内匹配(M)。
33.按照权利要求32的方法,其特征在于,各数据值是按每个子树中有预定的层次数K的二进制树数据结构存储的,其中在所述步骤c)中所述下一个地址是根据所述比较结果(C)、所述当前检索地址和所述每个子树中预定层次数(K)确定的。
34.按照权利要求32的方法,其特征在于,所述数据值(D)处于由一个最低数据值和一个最高数据值构成的范围内,其中在一个预定的根地址(B(0),A(0)=<0,1>)存储与所述范围的中心值对应的一个中心数据值,其中,当步骤a)被首次执行时,所述根地址被用作所述当前地址。
35.按照权利要求32的方法,其特征在于,所述数据值是按行和列的矩阵排列被存储在所述存储器装置中的,其中每个数据值(D)被分配一个列地址(A)和一个行地址(B)。
36.按照权利要求32或35的方法,其特征在于,当步骤b)中所述比较结果(C)表明读出的数据值大于所述要检索的数据值(I)时(“分支左”),步骤c)中所述下一个地址是由下列公式(1)计算的:
B(L(X))=B(X)
A(L(X))=2*A(X)+0 (1)
其中X代表由当前地址(B(X),A(X))定义的当前节点,A(X)和B(X)代表当前节点X的列地址和行地址,L(X)代表存储一个小于当前节点处存储的数据值的数据值的下一个节点,A(L(X))和B(L(X))代表该下一个节点L(X)的列和行地址。
37.按照权利要求32或35的方法,其特征在于,当步骤b)中所述比较结果表明读出的数据值小于所述要检索的数据值(I)时(“分支右”),步骤c)中所述下一个地址是由下列公式(2)计算的:
B(R(X))=B(X)
A(R(X))=2*A(X)+1 (2)
其中X代表由当前地址(B(X),A(X))定义的当前节点,A(X)和B(X)代表当前节点X的列地址和行地址,R(X)代表存储一个大于当前节点处存储的数据值的数据值的下一个节点,A(R(X))和B(R(X))代表该下一个节点R(X)的列和行地址。
38.按照权利要求32、33或35的方法,其特征在于,当步骤b)中所述比较结果表明读出的数据值大于所述要检索的数据值(I)时(“叶左”),步骤c)中所述下一个地址是由下列公式(3)计算的:
B(L(X))=2K*B(X)+2*A(X)+0-2K
A(L(X))=1 (3)
其中X代表由当前地址(B(X),A(X))定义的当前节点,A(X)和B(X)代表当前节点X的列地址和行地址,L(X)代表存储一个小于当前节点处存储的数据值的数据值的下一个节点,A(L(X))和B(L(X))代表该下一个节点L(X)的列和行地址,2K是存储器设备中的列数。
39.按照权利要求32、33或35的方法,其特征在于,当步骤b)中所述比较结果表明读出的数据值小于所述要检索的数据值(I)时(“叶右”),步骤c)中所述下一个地址是由下列公式(4)计算的:
B(R(X))=2K*B(X)+2*A(X)+1-2K
A(R(X))=1 (4)
其中X代表由当前地址(B(X),A(X))定义的当前节点,A(X)和B(X)代表当前节点X的列地址和行地址,R(X)代表存储一个大于当前节点处存储的数据值的数据值的下一个节点,A(R(X))和B(R(X))代表该下一个节点R(X)的列和行地址,2K是存储器设备中的列数。
40.按照权利要求33和38或33和39其中之一的方法,其特征在于,如果步骤b)中进行的比较次数等于子树中层次数(K)的倍数,则分别按公式(3)或(4)计算所述下一个地址。
41.按照权利要求33和36或33和37其中之一的方法,其特征在于,如果步骤b)中进行的比较次数不等于子树中层次数(K)的倍数,则分别按公式(1)或(2)计算所述下一个地址。
42.按照权利要求32的方法,其特征在于,在所述步骤d)后,从具有所述当前地址的存储位置读出与所述匹配数据值关联的存储的信息。
43.按照权利要求32的方法,其特征在于,所述存储器设备是DRAM或高速缓冲存储器之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19810784.6 | 1998-03-12 | ||
DE19810784A DE19810784B4 (de) | 1998-03-12 | 1998-03-12 | Rechnersystem |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1300390A true CN1300390A (zh) | 2001-06-20 |
Family
ID=7860674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99806119A Pending CN1300390A (zh) | 1998-03-12 | 1999-03-11 | 数据转换硬件支援设备 |
Country Status (9)
Country | Link |
---|---|
EP (1) | EP1062574B1 (zh) |
JP (1) | JP2002507023A (zh) |
KR (1) | KR20010041804A (zh) |
CN (1) | CN1300390A (zh) |
AU (1) | AU3033899A (zh) |
BR (1) | BR9908729A (zh) |
CA (1) | CA2323017A1 (zh) |
DE (1) | DE19810784B4 (zh) |
WO (1) | WO1999046676A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100416503C (zh) * | 2005-11-04 | 2008-09-03 | 中兴通讯股份有限公司 | 一种软件版本更新的方法 |
CN100454253C (zh) * | 2006-04-29 | 2009-01-21 | 华为技术有限公司 | 一种终端软件升级方法及终端设备 |
CN101982813A (zh) * | 2010-11-22 | 2011-03-02 | 株洲南车时代电气股份有限公司 | 用于列车乘客信息显示器的软件远程更新方法及更新系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030014355A (ko) * | 2000-12-13 | 2003-02-17 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 소프트웨어를 업데이트하기 위한 방법 및 프로그램 |
JP2004199490A (ja) * | 2002-12-19 | 2004-07-15 | Komatsu Ltd | 車載プログラムの書き換え制御装置 |
US7818740B2 (en) * | 2006-05-05 | 2010-10-19 | Microsoft Corporation | Techniques to perform gradual upgrades |
EP2365438A1 (de) | 2010-03-09 | 2011-09-14 | Siemens Aktiengesellschaft | Verfahren zum Betrieb eines Automatisierungssystems |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5168567A (en) * | 1989-05-30 | 1992-12-01 | Tektronix, Inc. | Data sorting circuit |
US5410703A (en) * | 1992-07-01 | 1995-04-25 | Telefonaktiebolaget L M Ericsson | System for changing software during computer operation |
US5493671A (en) * | 1993-06-04 | 1996-02-20 | Marcam Corporation | Method and apparatus for conversion of database data into a different format on a field by field basis using a table of conversion procedures |
US5613110A (en) * | 1995-01-05 | 1997-03-18 | International Business Machines Corporation | Indexing method and apparatus facilitating a binary search of digital data |
DE19518266A1 (de) * | 1995-05-18 | 1996-11-21 | Philips Patentverwaltung | Kommunikationssystem mit Mitteln zum Austausch von Software |
-
1998
- 1998-03-12 DE DE19810784A patent/DE19810784B4/de not_active Expired - Fee Related
-
1999
- 1999-03-11 BR BR9908729-4A patent/BR9908729A/pt not_active Application Discontinuation
- 1999-03-11 CN CN99806119A patent/CN1300390A/zh active Pending
- 1999-03-11 KR KR1020007010079A patent/KR20010041804A/ko not_active Application Discontinuation
- 1999-03-11 WO PCT/EP1999/001590 patent/WO1999046676A2/en not_active Application Discontinuation
- 1999-03-11 AU AU30338/99A patent/AU3033899A/en not_active Abandoned
- 1999-03-11 EP EP99911775A patent/EP1062574B1/en not_active Expired - Lifetime
- 1999-03-11 JP JP2000535994A patent/JP2002507023A/ja not_active Withdrawn
- 1999-03-11 CA CA002323017A patent/CA2323017A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100416503C (zh) * | 2005-11-04 | 2008-09-03 | 中兴通讯股份有限公司 | 一种软件版本更新的方法 |
CN100454253C (zh) * | 2006-04-29 | 2009-01-21 | 华为技术有限公司 | 一种终端软件升级方法及终端设备 |
CN101982813A (zh) * | 2010-11-22 | 2011-03-02 | 株洲南车时代电气股份有限公司 | 用于列车乘客信息显示器的软件远程更新方法及更新系统 |
Also Published As
Publication number | Publication date |
---|---|
DE19810784B4 (de) | 2006-03-16 |
AU3033899A (en) | 1999-09-27 |
JP2002507023A (ja) | 2002-03-05 |
DE19810784A1 (de) | 1999-09-16 |
EP1062574A2 (en) | 2000-12-27 |
WO1999046676A3 (en) | 1999-11-11 |
EP1062574B1 (en) | 2004-01-21 |
CA2323017A1 (en) | 1999-09-16 |
KR20010041804A (ko) | 2001-05-25 |
BR9908729A (pt) | 2000-11-21 |
WO1999046676A2 (en) | 1999-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1111815C (zh) | 在数据库中存储元素和寻找这样存储的元素的方法 | |
CN1278525C (zh) | 最长匹配地址查询的方法和装置 | |
CN1148687C (zh) | 用于网络处理器的全匹配搜索方法和设备 | |
CN1096036C (zh) | 以格阵作关键字的字典检索装置和方法 | |
CN1315057C (zh) | 重映射闪速存储器的方法 | |
CN1151454C (zh) | 高速傅里叶变换装置、高速傅里叶反变换装置及方法 | |
CN1256732C (zh) | 快闪存储器及其控制方法 | |
CN1108579C (zh) | 在序列同源性检测中完成模式词典组成的方法和设备 | |
CN1276359C (zh) | 用于检查和操作数据的存储器引擎 | |
CN1162788C (zh) | 可换存储媒体和控制方法及计算机系统 | |
CN1781093A (zh) | 用于存储和访问互锁树数据仓库中的数据的系统和方法 | |
CN1552032A (zh) | 数据库 | |
CN1613058A (zh) | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 | |
CN1316708A (zh) | 对软件管理树进行模式范围比较的方法和装置 | |
CN1122216C (zh) | 优化器 | |
CN101042676A (zh) | 存储系统以及存储区域释放方法以及存储装置 | |
CN1802632A (zh) | 用于在程序代码转换期间执行解释器优化的方法和装置 | |
CN1704911A (zh) | 高速缓冲存储器、系统和数据存储方法 | |
CN1731402A (zh) | 用协处理器加速文件系统操作的方法及装置 | |
CN1300390A (zh) | 数据转换硬件支援设备 | |
CN1299467C (zh) | 管理网络设备的装置及其方法 | |
CN1723463A (zh) | 用于将可扩展标记语言映射到n维数据结构的方法和系统 | |
CN1649274A (zh) | 可变长度解码装置和可变长度解码方法以及再现系统 | |
CN1035372A (zh) | 在剩余数系统中用于编码和译码数据的方法和装置 | |
Zheng et al. | A general model for" germplasm-omics" data sharing and mining: a case study of SoyFGB v2. 0 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |