对数据格式化器的格式化动作区分优先级的方法和系统的制作方法

文档序号:6571026阅读:251来源:国知局
专利名称:对数据格式化器的格式化动作区分优先级的方法和系统的制作方法
技术领域
本发明涉及用于对多个数据格式化器的格式化动作区分优先级的方法和系统。
背景技术
在测试电路时,测试结果可能以“未处理”格式被登记。通常,这种未处理格式1)不被用来对测试结果进行分析的应用器接受,并且2)对于测试工程师和其他人员来说难以理解。
由于未处理数据格式存在的上述困难,通常例如通过对未处理数据进行重布置、分类、分组和/或执行其他操作来将该数据转换成一种或多种其他格式。

发明内容
在一个实施例中,用于对多个数据格式化器的格式化动作区分优先级的方法包括以下步骤1)实例化多个线程以由处理系统执行,所述多个线程共享线程处理资源,并且所述多个线程包括不同优先级的至少两个线程;2)在所述多个线程上启动多个数据格式化器,所述多个数据格式化器包括在所述具有不同优先级的至少两个线程中的多个线程上分别被启动的至少两个数据格式化器;以及3)周期性地为多个最高优先级的活动线程请求对所述线程处理资源的分配,其中活动线程是执行具有要执行的格式化动作的数据格式化器的线程。
在另一个实施例中,用于对多个数据格式化器的格式化动作区分优先级的系统包括存储在计算机可读介质中的计算机可读代码。所述计算机可读代码包括1)用于实例化多个线程以由处理系统执行的代码,所述多个线程共享线程处理资源,并且所述多个线程包括不同优先级的至少两个线程;2)用于在所述多个线程上启动多个数据格式化器的代码,所述多个数据格式化器包括在所述具有不同优先级的至少两个线程中的多个线程上分别被启动的至少两个数据格式化器;以及3)用于周期性地为多个最高优先级的活动线程请求对所述线程处理资源的分配的代码,其中活动线程是执行具有要执行的格式化动作的数据格式化器的线程。
还公开了其他实施例。


在附图中示出了本发明的说明性实施例,其中图1示出了用于管理对数据存储设备的访问的第一示例性方法;图2示出了用于管理对数据存储设备的访问的第二示例性方法;图3示出了如图1或图2的方法所要求执行多线程的处理系统的示例性处理框图;图4示出了图3所示数据填充器的示例性框图;图5示出了图3所示数据格式化器之一的示例性框图;图6示出了用于管理对数据存储设备的访问的示例性系统;以及图7示出了用于对多个数据格式化器的格式化动作区分优先级的示例性方法。
具体实施例方式
作为基本的方式,注意在下面的描述中,在不同的附图中出现的相似的标号指代相似的元素/特征。因此,通常将不针对每副附图描述在在不同附图中出现的相似元素/特征。
图1示出了用于管理对数据存储设备的访问的第一示例性方法100。根据方法100,主线程和多个从线程被实例化以由处理系统执行(参见框102)。然后在数据填充器在主线程上被启动(框104),多个数据格式化器在多个从线程中的至少一个从线程上被启动(框106)。在一个实施例中,在每个从线程上一个数据格式化器被启动。在其他实施例中,一个或多个从线程每个都具有在其中执行的多个数据格式化器。
在启动了数据填充器后,方法100在监控数据获取系统的参数的同时使数据填充器向数据存储设备写数据项(框108)。作为示例,数据存储设备可以是存储器,并且数据项可以是存储器内的数据对象(即,作为执行面向对象编程范式的结果创建的对象)。参数可以是需要被数据获取系统(其可能包括数据填充器和数据存储设备)操作的新数据的可用性,或者数据存储设备的充满程度。还可以监控其他参数和参数的组合。
响应于方法100监控参数,从线程相对于主线程的执行被控制来管理多个数据格式化器对数据存储设备及其中的数据项的访问(框112)。如果被监控的参数是数据存储设备的充满程度,则从线程相对于主线程的执行可通过以下过程被控制1)在数据存储设备的充满程度超过第一阈值时,挂起主线程、使从线程之一可以执行,以及2)在数据存储设备的充满程度落到低于第二阈值时激活主线程。通过监控数据存储设备的充满程度,可以防止数据存储设备溢出。另外,通过监控数据存储设备的充满程度的两个阈值,可以避免线程挂起/激活的乒乓效果(ping-ponging)。
通过控制从线程相对于主线程的执行,数据获取系统可以产生数据,并且数据填充器可以全速或者根据任何期望的性能目标填充数据存储设备。然后在数据格式化器对数据存储设备的访问将不会对数据获取系统或数据填充器的期望性能目标造成影响时授权数据格式化器对数据存储设备的访问。这组测试环境中尤其有用,例如,电路测试环境(其中数据项与对至少一个被测器件(DUT)的测试有关)。
图2示出了用于管理对数据存储设备的访问的第二示例性方法200。根据方法200,主线程和多个从线程被实例化以由处理系统执行(参见框202)。然后在数据填充器在主线程上被启动(框204),多个数据格式化器在多个从线程中的至少一个从线程上被启动(框206)。在一个实施例中,在每个从线程上一个数据格式化器被启动。在其他实施例中,一个或多个从线程每个都具有在其中执行的多个数据格式化器。
在启动了数据填充器后,方法200(在框208处)使数据填充器1)将数据项写到数据存储设备(框210);2)创建令牌来索引数据项(框212);并且3)使所述令牌中的至少一些被传递到多个数据格式化器中的至少一些(框214)。在一个实施例中,令牌被直接传递到数据格式化器。在另一个实施例中,令牌经由通知管理器被传递到数据格式化器,将在本说明书的后面对此进行更详细的描述。作为示例,数据存储设备可以是存储器,并且数据项可以是存储器内的数据对象。另外,作为示例,令牌可以引用存储器位置、对象、记录号、文件名、行号或者与数据项相关联的任何其他标识符。
在启动了多个格式化器后,方法200(在框216处)使这些格式化器中的数个1)读取由令牌索引的数据项(框218);以及2)在完成对数据项之一的读取后,施放与读取数据项相关联的令牌(框220)。在一个数据项不再由任何令牌索引时,可以从数据存储设备中将其删除(例如,由数据填充器或者由另一个进程)。
通过实例化执行优先级比所述多个从线程高的主线程,在数据格式化器对数据存储设备的访问将不会对数据获取系统或者数据填充器的期望性能目标造成影响时数据格式化器可以再次被授权对数据存储设备的访问。或者,也可能存在期望给予从线程比主线程高的优先级的情形。
注意,图1和2中所示的方法步骤的顺序不是关键的,也可以采用这些步骤的其他顺序,包括这些步骤的并行处理。
图1和2中所示的方法100和200可由计算机可读介质中存储的计算机可读代码实现。计算机可读介质可以包括例如任何数量的固定介质或可移动介质或者固定介质和可移动介质的混合(例如,一个或多个固定盘、随机存取存储器(RAM)、只读存储器(ROM)或者CD盘),这些介质可以位于单个位置或者分布在整个网络上。计算机可读代码一般包括软件,但是也可以包括固件或编程电路。
图3示出了执行通过执行图1或图2的方法而被实例化的多个线程304、306、308和310的装置300的示例性框图。处理系统302可以包括至少一个处理器和至少一个操作系统实例,用于执行线程304、306、308和310。数据填充器312在一个主线程304上被启动,并且多个数据格式化器314、316、318、320和322在多个从线程306、30和310上被启动。注意,多个数据格式化器314、316和318在一个从线程306上被启动。
在一个实施例中,主线程和从线程304、306、308和310按照相同的优先级级别被实例化。在另一个实施例中,主线程304在比多个从线程306、308和310高的优先级级别上被实例化,或者反之。
图4示出了数据填充器例如数据填充器312的示例性框图。数据填充器312包括代码片段400、402和404用于1)将数据项写到数据存储设备;2)创建索引数据项的令牌;以及3)将令牌传递到多个格式化器314、316、318、320和322。
图5示出了一个数据格式化器例如数据格式化器324的示例性框图500。数据格式化器314包括代码片段500、502和504用于1)接收令牌;2)读取由令牌索引的数据项;以及3)施放令牌。
方法100和200可以用在许多应用中,一个是对测试结果例如电路测试结果进行存储和格式化。在一个具体应用中,测试结果可由AgilentTechnologies,Inc提供的93000 SOC系列测试仪产生。
93000 SOC系列测试仪(下文称作“93000测试仪”)是一种SOC(系统芯片)测试仪,这种测试仪将测试结果和事件登记到称作EDL(事件数据登记)文件600的二进制数据文件中。该EDL文件600中的事件对应于对至少一个被测器件(DUT)执行的多个测试,并且按照有序序列被存储。然而,在EDL文件600中存储的事件不是被“扔”到任何其他进程,而是仅被登记到EDL文件600。在这种应用中,1)与多个事件相对应的文件(例如,EDL文件600)可以被解析来提取多个事件,然后2)从数据文件中提取出的事件可以被传递给创建了多个数据对象并且将数据存储设备到存储器610中的进程(数据填充器608)。
在一个实施例中,EDL文件600响应于事件管理器604作出的方法调用而被解析。如图6所示,事件管理器604可以对共享库602进行方法调用(例如,获得事件;获得事件属性),共享库602然后可以从EDL文件600提取事件并且将它们“扔”到事件管理器604。事件管理器604然后将事件606传递给数据填充器608。
共享库602可以采用在被事件管理器604调用时执行一种或多种方法的已编译代码的形式,例如数据提取库(DRL)。
数据填充器608可以将数据对象存储到存储器610中,然后以多种方式将这些数据对象彼此相关。然而,在一个实施例中,它们以层状树结构被彼此相关。作为其他数据对象的子的数据对象可以维护指向它们的父数据对象的指针,而父对象无需维护指向它们的所有子的指针的列表。在本说明的后面将解释,从子到父的这些指针可以帮助实现删除不再需要的数据对象的处理。
数据项可以以多种方式被与数据对象相关,包括通过1)直接将数据项存储在数据对象内,或者2)将数据项存储在与数据对象相关的数据结构中(例如,通过指针或其他方式相关)。
在EDL文件600中,数据被作为事件的属性存储。因此,如果数据填充器608接收到从EDL文件600取出的事件606,则数据填充器608可以通过从事件的属性抽取数据项来抽取与事件相对应的数据项。在电路测试情形中,所抽取的数据可以包括测试结果。
有多种数据格式化器614、616、618和620可以访问由数据填充器608创建的数据对象和数据项的方式。在一个实施例中,数据格式化器614、616、618和620可以仅监控数据对象。然而,这可能要求大量的存储器宽度,并且通常是效率低下的。在优选实施例中,数据填充器608创建对其创建的数据项进行索引的令牌,然后将令牌传递给通知管理器612。通知管理器612然后将这些令牌中的多个令牌分发给数据格式化器614、616、618和620中的多个数据格式化器。
注意,通知管理器612仅需针对每个数据对象接收一个令牌。通知管理器612然后可以复制该令牌,或者将该令牌广播给数据格式化器614、616、618和620中的每个。或者,通知管理器612可以不为/向数据格式化器614、616、618和620中的每个复制或广播该令牌,而是可以仅为/向数据格式化器614、616、618和620中已订阅了由该数据对象代表的一类数据项的某些格式化器。
一般而言,数据填充器608的操作将被给予比数据格式化器614、616、618和620高的优先级。为了进一步控制对其中存储了数据对象和数据的存储器610的访问,数据填充器608可以配备有对数据对象和数据项的直接访问。然而,多个数据格式化器614、616、618和620可以配备有经由对数据格式化器对数据对象和数据的访问进行协调/仲裁的结构化接口对多个数据对象的访问。
为了减少在存储器610中存储的数据对象的数目,数据填充器608可以对数据对象的保留进行监控,并且可以删除不再由引用或者访问这些数据对象的任何对象或进程保留的数据对象(或者数据项)。在一个实施例中,在令牌被创建来索引一个数据对象时该数据对象被认为是被保留的。数据填充器608可以在创建一个数据对象后产生一个这样的令牌,并且通知管理器612可以产生该令牌的额外拷贝并且将它们分发给数据格式化器614、616、618和620。数据填充器608还可以在一个数据对象的子对象被创建时产生指向该对象的指针(或者索引令牌)。在产生了令牌后,引用特定数据对象(或者数据项)的令牌数目的计数可以被保存(可能在该数据对象自身内)。数据格式化器614、616、618和620和其他进程然后可以被编程为在它们已完成对数据对象的访问后放弃它们的索引该数据对象的令牌,并且数据填充器608可以在所有这种令牌都被施放后删除数据对象。由于子对象引用它们的父,所以在其全部子都首先被删除之前,父对象不能被删除。
图6所示数据格式化器可以采用多种形式,包括例如ASCII(美国标准信息交换码)格式化器614、XML(可扩展标记语言)格式化器616、EDL格式化器618和/或STDF(标准测试定义格式)格式化器620。
除了对线程304(其中执行数据填充器312)相对于线程306、308和310(其中执行数据格式化器314、316、318和320)的执行进行控制之外,数据格式化器线程306、308和310的执行优先级也可以被控制。这样,通过将较高优先级的格式化器置于较高优先级的线程中,一些数据格式化器可以被给予比其他数据格式化器高的优先级。可能期望给以一些格式化器优先,是例如因为可以或多或少实时产生它们的输出,因为可以在几乎不会对线程处理资源造成影响的情况下产生它们的输出,或者因为它们的输出对于评估测试过程更关键。图7从而示出了用于对多个数据格式化器314、316、318、320和322的格式化动作区分优先级的示例性方法700。
方法700包括实例化多个线程,例如图3所示从线程306、308和310,以由处理系统302执行(框702)。多个线程306、308和310共享线程处理资源,例如处理系统302;并且这多个线程306、308和310包括至少两个不同优先级的线程306和308。在包括至少两个数据格式化器314和320的多个数据格式化器在具有不同优先级的至少两个线程中的线程306和308上被分别启动的同时,多个数据格式化器314、316、318、320和322然后在多个线程上被启动(框704)。
在启动了数据格式化器314、316、318、320和322后,周期性地为多个最高优先级的活动线程请求对线程处理资源的分配,其中活动线程是执行具有格式化动作要执行的数据格式化器的线程。作为示例,数据格式化器的格式化动作可以包括读取数据项、格式化数据项和输出格式化后的数据。
对资源分配的请求被“周期性”地执行,以使得有许多工作要处理的低优先级数据格式化器不会强占对线程处理资源的控制,防止较高优先级的数据格式化器不能处理工作。
优先地,对线程处理资源的分配的请求是对线程处理资源的独占分配的请求。较高优先级的数据格式化器因此能够在其他数据格式化器之前执行它们的格式化动作,并且在较高优先级的格式化器无工作可作时允许其他数据格式化器“赶上来”。有时这种“赶上来”的时刻可能是测试仪暂停以改变测试设置时。
应当理解,各种编程语言、范式和硬件平台都可以用来实现这里的教导。在一个实施例中,面向对象的编程技术被用来开发存储器610(图6)中存储的数据对象。在另一个实施例中,过程语言被用来开发数据元素和处理逻辑。还应当理解,术语“施放”包括“标为删除”,其中操作系统或者其他进程被告知先前分配的存储器或者存储设备已被其宿主施放并且可利用。
权利要求
1.一种用于对多个数据格式化器的格式化动作区分优先级的方法,包括以下步骤实例化多个线程以由处理系统执行,所述多个线程共享线程处理资源,并且所述多个线程包括不同优先级的至少两个线程;在所述多个线程上启动多个数据格式化器,所述多个数据格式化器包括在所述具有不同优先级的至少两个线程中的多个线程上分别被启动的至少两个数据格式化器;以及周期性地为多个最高优先级的活动线程请求对所述线程处理资源的分配,其中活动线程是执行具有要执行的格式化动作的数据格式化器的线程。
2.如权利要求1所述的方法,其中,所述周期请求是对用于所述多个最高优先级的活动线程的所述线程处理资源的独占分配的请求。
3.如权利要求1所述的方法,还包括利用所述多个数据格式化器中的每个执行包括以下步骤的格式化动作从数据存储设备读取数据项;格式化所述数据项;以及输出格式化后的数据。
4.如权利要求3所述的方法,其中,所述数据项中的至少一些与对至少一个被测器件的测试有关。
5.如权利要求3所述的方法,其中,所述数据存储设备是存储器,并且其中所述数据项与所述存储器中的对象相关联。
6.如权利要求1所述的方法,还包括以下步骤在所述多个线程中的一个上启动数据填充器;使所述数据填充器执行以下动作,将数据项写到数据存储设备;创建用于索引所述数据项的令牌;以及使所述令牌中的至少一些令牌传递到所述多个数据格式化器中的一些数据格式化器;以及使所述数据格式化器中的多个数据格式化器执行包括以下步骤的格式化动作,读取由所述令牌索引的所述数据项;在完成对所述数据项中的一个数据项的读取后,施放与所述被读取的数据项相关联的令牌。
7.如权利要求6所述的方法,其中,所述数据填充器在其上被启动的线程按照比所述数据格式化器在其上被启动的所述多个线程高的执行优先级被实例化。
8.如权利要求6所述的方法,其中创建令牌来索引所述数据项包括针对每个数据项执行以下步骤,使所述数据填充器创建初始令牌来索引所述数据项;以及将所述初始令牌传递给通知管理器;以及该方法还包括响应于所述初始令牌并且利用所述通知管理器将令牌传递给所述数据格式化器中的多个格式化器。
9.如权利要求8所述的方法,还包括在所述多个线程中的一个线程上启动所述通知管理器。
10.如权利要求8所述的方法,还包括以下步骤接收来自所述数据格式化器的对多种数据类型的数据项的订阅;以及响应于所述初始令牌并且利用所述通知管理器,根据1)所述初始令牌索引的数据项的数据类型和2)所述数据格式化器的订阅,将令牌传递给所述数据格式化器中的多个数据格式化器。
11.一种用于对多个数据格式化器的格式化动作区分优先级的系统,包括计算机可读介质;以及存储在所述计算机可读介质中的计算机可读代码,所述计算机可读代码包括,用于实例化多个线程以由处理系统执行的代码,所述多个线程共享线程处理资源,并且所述多个线程包括不同优先级的至少两个线程;用于在所述多个线程上启动多个数据格式化器的代码,所述多个数据格式化器包括在所述具有不同优先级的至少两个线程中的多个线程上分别被启动的至少两个数据格式化器;以及用于周期性地为多个最高优先级的活动线程请求对所述线程处理资源的分配的代码,其中活动线程是执行具有要执行的格式化动作的数据格式化器的线程。
12.如权利要求11所述的系统,其中,所述周期请求是对用于所述多个最高优先级的活动线程的所述线程处理资源的独占分配的请求。
13.如权利要求11所述的系统,还包括用于利用所述多个数据格式化器中的每个执行包括以下步骤的格式化动作的代码从数据存储设备读取数据项;格式化所述数据项;以及输出格式化后的数据。
14.如权利要求13所述的系统,其中,所述数据项中的至少一些与对至少一个被测器件的测试有关。
15.如权利要求13所述的系统,其中,所述数据存储设备是存储器,并且其中所述数据项与所述存储器中的对象相关联。
16.如权利要求11所述的系统,还包括用于在所述多个线程中的一个上启动数据填充器的代码;用于使所述数据填充器执行以下动作的代码,将数据项写到数据存储设备;创建用于索引所述数据项的令牌;以及使所述令牌中的至少一些令牌传递到所述多个数据格式化器中的一些数据格式化器;以及用于使所述数据格式化器中的多个数据格式化器执行包括以下步骤的格式化动作的代码,读取由所述令牌索引的所述数据项;在完成对所述数据项中的一个数据项的读取后,施放与所述被读取的数据项相关联的令牌。
17.如权利要求16所述的系统,其中,所述数据填充器在其上被启动的线程按照比所述数据格式化器在其上被启动的所述多个线程高的执行优先级被实例化。
18.如权利要求16所述的系统,其中创建令牌来索引所述数据项包括针对每个数据项执行以下步骤,使所述数据填充器创建初始令牌来索引所述数据项;以及将所述初始令牌传递给通知管理器;以及该系统还包括响应于所述初始令牌并且利用所述通知管理器将令牌传递给所述数据格式化器中的多个格式化器。
19.如权利要求18所述的系统,还包括用于在所述多个线程中的一个线程上启动所述通知管理器的代码。
20.如权利要求18所述的系统,还包括用于接收来自所述数据格式化器的对多种数据类型的数据项的订阅的代码;以及用于响应于所述初始令牌并且利用所述通知管理器,根据1)所述初始令牌索引的数据项的数据类型和2)所述数据格式化器的订阅,将令牌传递给所述数据格式化器中的多个数据格式化器的代码。
全文摘要
本发明公开了用于对多个数据格式化器的格式化动作区分优先级的方法和系统。在一个实施例中,用于对多个数据格式化器的格式化动作区分优先级的方法包括以下步骤1)实例化多个线程以由处理系统执行,所述多个线程共享线程处理资源,并且所述多个线程包括不同优先级的至少两个线程;2)在所述多个线程上启动多个数据格式化器,所述多个数据格式化器包括在所述具有不同优先级的至少两个线程中的多个线程上分别被启动的至少两个数据格式化器;以及3)周期性地为多个最高优先级的活动线程请求对所述线程处理资源的分配,其中活动线程是执行具有要执行的格式化动作的数据格式化器的线程。还公开了其他实施例。
文档编号G06F17/30GK101030151SQ20071000274
公开日2007年9月5日 申请日期2007年1月30日 优先权日2006年1月31日
发明者布莱恩·F·卡宾特 申请人:韦瑞吉(新加坡)私人有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1