当前位置: 首页 > 专利查询>微软公司专利>正文

带有依赖性等级的多线程电子表格处理制造技术

技术编号:2914163 阅读:301 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及利用各自具有单独的重新计算引擎的多个处理器来处理电子表格应用程序中的链计算的方法和系统。单计算链可被重新排序成其中支持和依赖公式被组织成子链的树分层结构的统一链。该统一链被进一步划分成依赖性等级,其中每一依赖性等级中的输入项可在重新排序期间被移至下一依赖性等级。如果一个依赖性等级内的输入项依赖于未在其自己的子链中找到的另一输入项,则对该统一链排序以使得一输入项仅依赖于前一依赖性等级中的输入项。此外,依赖性等级允许控制线程在维持多线程处理能力的同时执行仅适用控制线程的操作。

【技术实现步骤摘要】
【国外来华专利技术】背景将电子表格应用程序用于数据分析已变得普及。此外,随着越来越多的企业依赖于这些应用程序来进行复杂数据计算,对这些程序的更快且更高效的处理的需求也变得十分渴求。Microsoft ExcelTM是这一电子表格应用程序的一个示例。电子表格应用程序的一个单元格中被称为“依赖”公式的公式依赖于另一单元格的内容或其中被称为“支持”公式的公式是典型的。当单元格的内容改变时,可触发重新计算(“重计算(recalc)”)操作,其中使用一程序线程来迭代通过各公式并基于这些改变来重计算需要重新计算的任何公式。当重计算程序线程面临依赖于尚未被计算的支持公式的公式时,用于计算操作的处理时间即使没有完全暂停相当长的一段时间也会在速度上减慢。即使在这些应用程序中采用多个处理器或多个程序线程的情况下,计算和重计算的执行速度在至少一个处理器不能在等待支持公式被计算的同时完成计算或重计算的情况下也不能提高。该问题随着电子表格应用程序中的依赖公式的数目增加而恶化。虽然本背景一节中着眼于特定的问题,但本专利技术决不旨在限于解决那些特定问题。概述本专利技术的各实施例一般涉及在有一个以上处理器或处理引擎可用时用多个处理器或多个并发线程来处理电子表格计算和重新计算。其它实施例涉及在对输入项链重新排序时使用树结构和依赖性等级来执行重计算操作的多线程处理。此外,某些实施例涉及对重计算操作的多线程处理的同步。如此处所讨论的,一特定实施例的一方面涉及对输入项,或称“ENT”的计算链重新排序,以创建由既不包含依赖公式也不包含支持公式的子链和ENT的子链(即,依赖公式和支持公式以树分层结构来组织)构成的统一重计算链。-->“ENT”指的是包含在电子表格的单元格内的公式。在另一实施例中,该统一链被划分成单独的依赖性等级,其中每一依赖性等级包含除了依赖于该依赖性等级内的子链中的支持公式之外仅依赖于先前的依赖性等级中的ENT的ENT。这一实施例中的安排允许多个线程在不必等待未计算的支持ENT被计算的情况下继续处理整个依赖性等级中的ENT。一旦到达下一依赖性等级,对位于其中的ENT和子链(如果有)的处理基于在先前的依赖性等级中已经完成的计算而高效地完成。其它实施例涉及在系统包括一个以上处理器或处理引擎的情况下使用多个异步程序线程来对该统一重计算链中的公式求值。在一个实施例中,可使用控制线程来控制该多线程处理的同步。提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也决不旨在用于限制所要求保护的主题的范围。附图图1示出了根据本专利技术的一个实施例的在电子表格应用程序中使用的、包括“N”个重新计算引擎(“重计算引擎”)的示例性功能组件模块的逻辑表示。图2描绘了根据本专利技术的一个实施例的由图1所示的系统执行的、用于加载电子表格应用程序并确定要对其使用的处理器的个数的基本操作。图3示出了根据本专利技术的一个实施例的由图1所示的系统执行的、用于用图1所描绘的重计算引擎执行重计算操作的基本操作。图4描绘了根据本专利技术的一个实施例的示出使用图1所示的功能组件模块的电子表格应用程序中具有值和/或多个公式的单元格输入项的示例性3x3电子表格。图5示出了根据本专利技术的一个实施例的最初被加载到单计算链中的图4所示的电子表格单元格。图6A描绘了被重新排序成子链的统一重计算链的图4和5所示的单元格。图6B示出了根据本专利技术的一个实施例的被加载到两个重新计算引擎中并-->被分隔成依赖性等级的图6A的子链,其中单元格之一被移至第二依赖性等级。图6C是示出根据本专利技术的其它实施例的用于如图6A和6B的示例性实施例中所描绘的将单元格重新排序成子链和依赖性等级的过程的操作特性的流程图。图7示出了根据本专利技术的一个实施例的由两个单独的重计算引擎对图4所示的单元格的处理,以及要对每一重计算引擎重新排序的单元格队列。图8描绘了根据本专利技术的一个实施例的对图7中排队的单元格的非最优重新排序的表示。图9示出了根据本专利技术的一个实施例的用于同步图7所示的重计算引擎的线程的程序代码。图10A是示出根据本专利技术的一个实施例的用于启动对图2所示的单元格中的值和公式的求值的过程的操作特性的流程图。图10B是示出根据本专利技术的一个实施例的用于挂起或触发图7所示的重计算引擎的控制线程和/或异步线程的过程的操作特性的流程图。图11是示出根据本专利技术的一个实施例的用于用图7所示的重计算引擎的控制线程和异步线程对单元格重新排序的过程的操作特性的流程图。图12是示出根据本专利技术的一个实施例的用于允许控制线程对图7所示的队列的单元格重新排序以便在仅适用控制线程的公式上工作并重新显示单元格的过程的操作特性的流程图。图13示出了根据本专利技术的一个实施例的将控制线程公式重新排序到下一依赖性等级的逻辑表示。图14A示出了根据本专利技术的一个实施例的采用多线程处理对循环公式的处理。图14B是示出根据本专利技术的其它实施例的用于如图14A的示例性实施例中所描述的对计算链重新排序以供可能的循环引用检测和求值的过程的操作特性的流程图。图15描绘其上可以实现本专利技术的各实施例的示例性计算系统。详细描述-->本专利技术现将参考其中示出了各具体实施例的附图来更完整地描述各示例性实施例。然而,其它方面能以许多不同的形式来实现,并且在本专利技术中包括具体的实施例不应被解释为将这些方面限于在此所述的各实施例。相反,包括附图中描绘的各实施例是为了提供全面和完整且将预期的范围完全地传达给本领域技术人员的公开。在参考附图时,使用相同的附图标记来指示所有附图所示的相同的结构和元素。虚线可用于示出可任选组件或操作。虚线也可用于示出单元格从一个位置到另一位置的移动的逻辑表示。用于用“N”个处理器和相应的程序线程来处理电子表格重新计算的环境100在图1中示出。在一个实施例中,系统100包括处理模块102,其包括操作系统中的“N”个可用处理器,每一处理器具有在其上操作的重新计算引擎(“重计算引擎”)104。系统100还包括数据库116、可用于从数据库106接收和发送数据以及与加载控制模块112通信的I/O或发送/接收模块114。加载控制模块进而与边界检测模块110通信,后者确定“脏”单元格的范围和域,或由于依赖于或支持另一单元格中改变的内容而需要重计算的单元格的范围和域。在一个实施例中,脏单元格在本文档来自技高网...

【技术保护点】
一种处理电子表格程序(1520,500)中的公式的方法,包括: 将所述公式排序成单计算链(500,626); 试图对所述单计算链中的第一个公式求值(500,628); 如果所述第一个公式依赖于所述单计算链中的支持公式,则将 所述第一个公式移至所述支持公式的子位置(604、630、634);以及 继续对所述单计算链中的所有公式排序,直到每一依赖公式都成为其各自的支持公式的子并且得到具有一个或多个公式子链的统一链(602、604、644);。

【技术特征摘要】
【国外来华专利技术】US 2006-5-8 11/430,4861.一种处理电子表格程序(1520,500)中的公式的方法,包括:
将所述公式排序成单计算链(500,626);
试图对所述单计算链中的第一个公式求值(500,628);
如果所述第一个公式依赖于所述单计算链中的支持公式,则将所述第一个
公式移至所述支持公式的子位置(604、630、634);以及
继续对所述单计算链中的所有公式排序,直到每一依赖公式都成为其各自
的支持公式的子并且得到具有一个或多个公式子链的统一链(602、604、644);。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述统一链(602、604)划分成多个依赖性等级(618、620),其中每
一依赖性等级包括仅依赖于来自前一依赖性等级(618)的公式或其自己的子
链内的公式(608、610、640、642)的公式(608、610、612、642、640)。
3.如权利要求2所述的方法,其特征在于,如果一依赖公式(612)是第
一个支持公式(610)的子并且依赖于未计算的第二个支持公式(608、636、
642),则所述依赖公式被移至下一依赖性等级。
4.如权利要求2所述的方法,其特征在于,一支持公式具有第一个依赖
公式和第二个依赖公式,并且所述第一个和第二个依赖公式被移至下一依赖性
等级(638、640)。
5.一种可由计算机系统(1500)读取并且有形地包含可由所述计算机系
统执行来执行如权利要求1所述的方法的指令的程序的计算机程序产品(1508、
1520)。
6.一种使用多个处理器来计算电子表格程序中的公式的方法(200、1000),
包括:
确定处理器的个数(206);
将重新结算引擎分配给每一处理器(209);
维护一控制线程以同步所述重新计算引擎的处理(1004);
将所述公式排序成单计算链(700、626);
试图用第一重新计算引擎对所述单计算链中的第一个公式求值(708、628、
1120);
如果所述第一个公式依赖于第一个支持公式,则将所述第一个依赖公式和
第一个支持公式移至所述第一重新计算引擎的队列(706、636、1122);
试图用第二重新计算引擎对所述单计算链中的第二个公式求值(708、
1124、1138);
如果所述第二个公式依赖于第二个支持公式,则将所述第二个依赖公式和
第二个支持公式移至所述第二重新计算引擎的队列(710、1138、1140);以

继续沿着所述单计算链向下迭代,直到到达所述链的末尾(708、706、710、
1142、644)。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
清空每一重新计算引擎的队列以便重新排序(1122、1140),其中所述第
一个依赖公式成为所述第一个支持公式的子,并且其中所述第二个依赖公式成
为所述第二个支持公式的子(802、804、630、634)。
8.如权利要求7所述的方法,其特征在于,所述第二个支持公式本身是
第三个支持公式的子(804)。
9.如权利要求6所述的方法,其特征在于,所述方法还包括:
如果所述第一个公式依赖于第一个支持公式,则标记所述第一个依赖公式
以跟踪它(1420);
确定所述第一个支持公式是否依赖于所述第一个依赖公式(1414、1418);
如果所述第一个支持公式依赖于所述第一个依赖公式,则标记所述第一个
支持公式以跟踪它(1420);
在完成通过所述单计算链的迭代后,检索被跟踪公式(1422、1424...

【专利技术属性】
技术研发人员:JJ杜扎克A贝克MJ安德罗斯奇D坎贝尔
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1