[go: up one dir, main page]

MX2008014241A - Procesamiento de hoja de calculo de secuencia multiple con niveles de dependencia. - Google Patents

Procesamiento de hoja de calculo de secuencia multiple con niveles de dependencia.

Info

Publication number
MX2008014241A
MX2008014241A MX2008014241A MX2008014241A MX2008014241A MX 2008014241 A MX2008014241 A MX 2008014241A MX 2008014241 A MX2008014241 A MX 2008014241A MX 2008014241 A MX2008014241 A MX 2008014241A MX 2008014241 A MX2008014241 A MX 2008014241A
Authority
MX
Mexico
Prior art keywords
formula
dependent
formulas
child
support
Prior art date
Application number
MX2008014241A
Other languages
English (en)
Inventor
Matthew J Androski
Jeffrey J Duzak
Andrew Becker
Duane Campbell
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MX2008014241A publication Critical patent/MX2008014241A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Esta descripción se refiere a un método y sistema para procesar cálculos de cadena en aplicaciones de hoja de cálculo utilizando múltiples procesadores, cada uno teniendo un motor de recálculo separado. Una cadena de cálculo individual puede reordenarse en una cadena unificada en donde las fórmulas de soporte dependientes se organizan en una jerarquía de árbol de cadenas hijo. La cadena unificada además se divide en niveles de dependencia, en donde las entradas en cada nivel de dependencia pueden moverse a un siguiente nivel de dependencia durante reordenamiento. Si una entrada dentro de un nivel de dependencia depende de otra entrada no encontrada dentro de su propia cadena hijo, la cadena unificada se ordena para que una entrada sólo sea dependiente de una entrada en un nivel de dependencia previo. Además, los niveles de dependencia permiten a una secuencia de control realizar operaciones solo de secuencia de control mientras mantienen capacidades de procesamiento de secuencias múltiples.

Description

PROCESAMIENTO DE HOJA DE CALCULO DE SECUENCIA MULTIPLE CON NIVELES DE DEPENDENCiA ANTECEDENTES El uso de aplicaciones de hojas de cálculo para análisis de datos se ha vuelto prevalente. Además, mientras más y más negocios dependen de estas aplicaciones para cálculo de datos complejos, la necesidad de procesamiento más rápido y más eficiente de estas aplicaciones se vuelve deseable. Microsoft Excel™ es un ejemplo de tal aplicación de hoja de cálculo. Es típico en aplicaciones de hoja de cálculo para una fórmula en una celda, denominada como una fórmula "dependiente", depender de los contenidos de o una fórmula en otra celda, denominada como una fórmula de "soporte". Cuando los contenidos de una celda cambian, puede activarse una operación de recálculo ("recálculo"), en donde se utiliza una secuencia de programa para repetir a través de las fórmulas y recalcular cualquiera de las fórmulas que requieren recálculo basándose en estos cambios. El tiempo de procesamiento para operaciones de cálculo puede reducirse en velocidad, si no se pausan juntos durante un periodo de tiempo significativo, cuando una secuencia de programa de recálculo confronta una fórmula dependiente de una fórmula de soporte que aún se va a calcular. Incluso en donde se emplean múltiples procesadores, o múltiples secuencias de programa, en tales aplicaciones, la velocidad de desempeño de los cálculos y recálculos puede no mejorar cuando al menos uno de los procesadores es incapaz de completar un cálculo o recálculo mientras espera que se calcule una fórmula de soporte. El problema se exacerba mientras el número de fórmulas dependientes en la aplicación de hoja de cálculo aumenta. Aunque se dirigieron problemas específicos en esta sección de Antecedentes, esta descripción no pretende de ninguna forma limitarse a resolver esos problemas específicos.
BREVE DESCRIPCION DE LA INVENCION Las modalidades de la presente invención generalmente se refieren a procesar cálculos y recálculos de hoja de cálculo con múltiples procesadores, o múltiples secuencias concurrentes, cuando más de un procesador o motor de procesamiento está disponible. Para modalidades adicionales se refieren al uso de una estructura de árbol y niveles de dependencia al reordenar una cadena de entradas para realizar procesamiento de secuencia múltiple de una operación de recálculo. Incluso además, algunas modalidades se refieren a la sincronización de procesamiento de secuencia múltiple de operaciones de recálculo. Como se discute aquí, un aspecto de una modalidad particular se refiere a reordenar una cadena de cálculo de entradas, o "ENTs", para crear una cadena de recálculo unificada compuesta de cadenas hijo (es decir, formulas las dependientes y fórmulas de soporte organizadas en una jerarquía de árbol) y de ENTs que contienen fórmulas independientes y de soporte. Una "ENT" se refiere una fórmula contenida dentro de una celda de una hoja de cálculo. En otra modalidad, la cadena unificada se divide en niveles de dependencia separados, en donde cada nivel de dependencia contiene ENTs que, además de aquellas que son dependientes de una fórmula de soporte en una cadena hijo dentro de ese nivel de dependencia, son dependientes sólo de ENTs en niveles de dependencia previos. En la distribución en tal modalidad permite que las secuencias múltiples continúen en procesamiento de ENTs a través de un nivel de dependencia sin tener que esperar a que se calculen ENTs de soporte no calculadas. Una vez que se alcance el nivel de dependencia, el procesamiento del ENTs y cadenas hijo (si hay alguna) localizada aquí se realiza recientemente basándose en los cálculos ya completados en los niveles de dependencia previos. Además de las modalidades se refieren al uso de secuencias de programas asincrónico múltiples, en donde un sistema se compone de uno o más motores de procesador o procesamiento, para evaluar fórmulas en esta cadena de recálculo unificada. En una modalidad, una secuencia de control puede utilizarse para controlar la sincronización de este procesamiento de secuencia múltiple. Esta breve descripción se proporciona para introducir una selección de conceptos en una forma simplificada que además se describe posteriormente en la Descripción detallada. Esta breve descripción no pretende identificar características clave o esenciales del tema reclamado, ni pretende utilizarse de ninguna forma para limitar el alcance del tema reclamado.
DIBUJOS La Figura 1 ilustra una representación lógica de módulos de componente funcional ilustrativos que incluyen "N" Número de motores de recálculo ("motores de recálculo") utilizados en una aplicación de hoja de cálculo de acuerdo con una modalidad de la presente invención. La Figura 2 ilustra las operaciones básicas realizadas por el sistema mostrado en la Figura 1 para cargar una aplicación de hoja de cálculo y determinar el número de procesadores para uso con éste de acuerdo con una modalidad de la presente invención. La Figura 3 ilustra las operaciones básicas realizadas por el sistema mostrado en -la Figura 1 para realizar una operación de recálculos con los motores de recálculo ilustrados en la Figura 1 de acuerdo con una modalidad de la presente invención. La Figura 4 ilustra una hoja de cálculo de 3 x 3 ilustrativa que muestra entrada de celda con valores y/o múltiples formas en una aplicación de hoja de cálculo que utiliza los módulos de componentes funcionales ilustrados en la Figura 1 de acuerdo con una modalidad de la presente invención. La Figura 5 ilustra las celdas de hoja de cálculo mostradas en la Figura 4 como inicialmente cargadas en una cadena de cálculo individual de acuerdo con una modalidad de la presente invención. La Figura 6A ilustra las celdas mostradas en las Figuras 4 y 5 como reordenadas en una cadena de recálculo unificadas de cadenas hijo. La Figura 6B muestra las cadenas hijo de la Figura 6A cargada en los motores de recálculo y separadas en niveles de dependencia, en donde una de las celdas se movió a un segundo nivel de dependencia de acuerdo con una modalidad de la presente invención. La Figura 6C es un diagrama de flujo que ilustra las características operacionales de un procedimiento para reordenar las celdas en cadenas hijo y niveles de dependencia como se ilustró en las modalidades ilustrativas de las Figuras 6A y 6B y de acuerdo con otras modalidades de la presente invención. La Figura 7 ilustra el procesamiento de las celdas mostradas en la Figura 4 por los dos motores de recálculo separados, así como una fila de celdas para reordenarse para cada uno de los motores de recálculo de acuerdo con una modalidad de la presente invención. La Figura 8 ilustra una representación de un reordenamiento no óptimo de las celdas formadas en la Figura 7 de acuerdo con una modalidad de la presente invención. La Figura 9 ilustra el código de programa para sincronizar las secuencias de los motores de recálculo mostrados en la Figura 7 de acuerdo con una modalidad de la presente invención. La Figura 10A es un diagrama de flujo que ilustra las características operacionales de un procedimiento para iniciar la evaluación de los valores y fórmulas en las celdas mostradas en la Figura 2 de acuerdo con una modalidad de la presente invención. La Figura 10B es un diagrama de flujo que ilustra las características operacionales de un procedimiento para suspender o activar la secuencia de control y/o secuencias asincrónica de los motores de recálculo mostrados en la Figura 7 de acuerdo con una modalidad de la presente invención. La Figura 11 es un diagrama de flujo que ilustra las características operacionales de un procedimiento para reordenar las celdas con la secuencia de control y secuencias asincrónicas de los motores de recálculo mostrados en la Figura 7 de acuerdo con una modalidad de la presente invención. La Figura 12 es un diagrama de flujo que ¡lustra las características operacionales de un procedimiento para permitir a la secuencia de control reordenar las celdas de las filas mostradas en la Figura 7, para trabajar en fórmulas sólo de secuencia de control, y para representar las celdas de acuerdo con una modalidad de la presente invención. La Figura 13 ilustra una representación lógica del reordenamiento de una fórmula de secuencia de control al siguiente nivel de dependencia de acuerdo con una modalidad de la presente invención. La Figura 14A ¡lustra el tratamiento de fórmulas circulares con procesamiento de secuencias múltiples de acuerdo con una modalidad de la presente invención.
La Figura 14B es un diagrama de flujo que ilustra las características operacionales de un procedimiento para reordenar una cadena de cálculo para posible detección de referencia circular y evaluación como se ilustró en la modalidad ilustrativa de la Figura 14A y de acuerdo con otras modalidades de la presente invención. La Figura 15 ilustra un sistema de cómputo ilustrativo en el cual las modalidades de la presente descripción pueden implementarse.
DESCRIPCION DETALLADA Esta descripción ahora describirá más completamente modalidades ilustrativas con referencia a los dibujos anexos, en donde se muestran modalidades específicas. Otros aspectos, sin embargo, pueden representarse en muchas formas diferentes y la inclusión de modalidades específicas en esta descripción no deben interpretarse como limitando tales aspectos a las modalidades aquí mencionadas. En lugar de esto, las modalidades ilustradas en los dibujos se incluyen para proporcionar una descripción que es total y completa y que transporta completamente el alcance pretendido para aquellos expertos en la técnica. Cuando se hace referencia a las figuras, estructuras y elementos similares mostrados completamente se indican con números de referencia similares. Las líneas puntadas pueden utilizarse para mostrar componentes u operaciones opcionales. Las líneas punteadas también pueden utilizarse para mostrar representaciones lógicas o movimiento de una celda de una ubicación a otra. Un ambiente 100 para procesar recálculos de hoja de cálculo con "N" número de procesadores y secuencias de programa correspondientes se muestra en la Figura 1. En una modalidad, el sistema 100 comprende un módulo de procesamiento 102 que incluye un número "N" de procesadores disponibles en el sistema de procesamiento, cada uno que tiene un motor de recálculo ("motor de recálculo") 104 que opera en este. El sistema 100 además incluye una base de datos 116, y un módulo de l/O o para enviar/recibir 114 operable para recibir y transmitir datos desde la base de datos 106, así como para comunicar un módulo de control de carga 112. A su vez, el módulo de control de carga se comunica con un módulo de detección de límite 110 que determinan la escala y dominio de celda "sucias", o aquéllas en las que requieren recálculo debido a que son dependientes de o soportan el contenido cambiado en otra celda. En una modalidad, las celdas sucias se recálculan en el caso que se reciba un comando de recálculo del módulo de enviar/recibir 114. En una aplicación de hoja de cálculo que utiliza el ambiente de multiprocesador del sistema 100, es necesario determinar el número de procesadores disponibles en el sistema operativo. La Figura 2 ilustra la secuencia de inicio básica de operaciones 200 realizadas por el sistema mostrado en la Figura 1 para cargar, o llamar, una aplicación de hoja de cálculo y determinar el número de procesadores para uso con este. La operación de inició 202 se inicia siguiendo comunicación con un módulo de control de carga 112, en donde se carga una aplicación de hoja de cálculo en la operación de aplicación de carga 204. En una modalidad en donde múltiples procesadores, y de esa forma múltiples secuencias de programa, se utilizan para evaluar las entradas o "ENTs" en un cálculo de cadena de hoja de cálculo, es necesario sincronizar la evaluación de esas ENTs por la pluralidad de procesadores. Por consiguiente, la operación de determinar 206 determina el número de procesadores, y de esa forma motores de recálculo 104, en el sistema operativo. La operación de almacenamiento 208 almacena el número determinado de procesadores y sus ubicaciones de acceso en base de datos 116. En una modalidad, los procesadores utilizados son procesadores separados, mientras en otra modalidad son uno o más co-procesadores fijos en un chip individual. A su vez, se distribuye el motor de recálculo a cada procesador en operación de distribuir 209, y después el control de procedimiento 200 transfiere a la operación de regreso 210. Cambiando ahora a la Figura 3, el procedimiento de recálculo 300 comienza con la operación de inicio 302, que se inicia en respuesta a una solicitud de cálculo o recálculo manual o automática para procesar un cálculo de cadena dentro de una hoja de cálculo que corre en el sistema 100 mostrado en la Figura 1. Desde la operación de inicio 302, la solicitud de recálculo se recibe de por el módulo de enviar/recibir 114 y los datos se recuperan desde la base de datos 116 como se requiera por la solicitud. En una modalidad, la operación de inicio 302 se activa por una solicitud manual por un usuario para recalcular la hoja de cálculo que se presenta. En una modalidad, la operación de inició 302 se activa automáticamente por una solicitud de una rutina de llamado o cuando un. usuario cambia un valor o fórmula en una ENT o agrega una ENT adicional a la hoja de cálculo. Sin importar el mecanismo de activación específico, la solicitud de recálculo se identifica o "resuelve" en operación 304. Siguiendo la operación de resolver 304, el dominio y la escala de la solicitud de recálculo se determinan en la operación 306. En una modalidad, esto involucra sólo una ENT. En otra modalidad, esto involucra un orden de ENTs que dependen de o soporta el contenido de celda cambiado, es decir, ENTs "sucias". Desde la operación de determinar 306, el procedimiento 300 procede a la operación de recalcular 308, que recálcula las celdas sucias de acuerdo con modalidades de la presente invención. El control se transfiere en operación de regreso 310, que regresa la operación al código de llamada o interfase de usuario. La Figura 4 dicta una hoja de cálculo de muestra 400 que puede recalcularse al utilizar el procedimiento descrito anteriormente con respecto a la Figura 3. En esta representación ilustrativa de una hoja de cálculo de 3 x 3, las celdas A1 y B1 en la fila 402 se muestran con valores ilustrativos de " = 1". Las celdas A2 y B2 en la fila 404 se muestran con fórmulas =A1 y =B1, respectivamente, que representan fórmulas dependientes de A1 y B1. Similarmente, las celdas A3 y B3 en la fila 406 se muestran con las fórmulas =A2 y = B2, respectivamente, que representan fórmulas dependientes de A2 y B2. Finalmente, las celdas C3 se muestra con una fórmula de =A3 + B3, que significa que depende de A3 y B3. Como se notó anteriormente, los contenidos de celdas A1 a C3 pueden incluir valores o fórmulas que deben recalcularse o calcularse, y de esa forma el contenido de cada celda se denomina como una entrada o "ENT". Por ejemplo, la fórmula " = A3 + B3" es una ENT localizada en la celda C3. Al cargar, o llamar, una hoja de cálculo 400 con el sistema 100 mostrado en la Figura 1, los procesadores que son por orden de las ENTs en una cadena de cálculo individual en orden consecutivo basándose en entrada en la misma hoja de cálculo. La Figura 5 ilustra esta cadena de cálculo individual que ordena las celdas A1 a C3 de la hoja de cálculo 400 mostradas en la Figura 4. A manera de ejemplo solamente, las ENTs en celdas A1 a C3 pudieron ingresarse dentro de la hoja de cálculo 400 en el orden de A1, A2, A3, B1, B2, B3, y, finalmente, C3. En este orden inicial de las ENTs en una cadena individual, el código de programa coloca la primera ENT (es decir, A1 en la modalidad ilustrativa denominada aquí) en el extremo derecho de la cadena de cálculo. Las siguientes ENTs se agregan en orden consecutivo, que trabajan de derecha a izquierda y que terminan con C3. Al proceder al evaluar las ENTs en la cadena de cálculo individual 500, el código de cálculo inicia con C3 y determina que la fórmula A3 + B3 depende de las fórmulas en celdas A3 y B3.
Después, al observar la celda A3 primero (ya que es la primer celda nombrada en la fórmula), se determina que la celda A3 está "sucia", o de cálculo pendiente. En esta modalidad, la ENT "A3 + B3" se llama una fórmula "dependiente", y la fórmula en la celda A3 se llama una fórmula de "soporte". En una modalidad de la presente invención, la cadena de cálculo individual 500 se reordena para crear una cadena unificada de fórmulas dependientes y de soporte organizadas en una estructura de árbol que utiliza cadenas hijo dentro de la cadena unificada. En una modalidad, una fórmula dependiente, por ejemplo, C3, se determina para ser un hijo de la primera fórmula de soporte, por ejemplo, A3. Además, la primera fórmula de soporte puede hacerse de un hijo de una segunda fórmula de soporte de la cual depende. Ahora es que se movió C3 para ser un hijo de A3, la siguiente celda en la cadena individual se evalúa, principalmente B3 en la modalidad ilustrativa mostrada en la Figura 5. Al intentar evaluar B3, el código de cálculos descubre que B3 es dependiente de la celda B2, y que B2 está "sucia". B3 de esa forma se vuelve un hijo de B2. En forma similar, el código intenta calcular la siguiente celda, es decir, B2, y determina que B2 dependiente de B1. B2 de esa forma se vuelve un hijo de B1 y, debido a que B3 es un hijo de B2, la cadena hijo completa de B1, B2, y B3 (mostrada como cadena hijo 602 en cadena 600 en la Figura 6A) nace. Después, el código de cálculo intenta evaluar A3 y determina que A3 (que tiene hijos C3 como se discutió anteriormente) depende de la fórmula de soporte A2, que por si misma depende de A1. De esa forma, la cadena hijo A1, A2, A3, y C3 nace. Una representación ilustrativa de esta cadena hijo se muestra como cadena de hijo 604 en la Figura 6A. Mientras la cadena 604 muestra la cadena de hijo de A1, A2, A3, y C3, otra modalidad ilustrativa de esta invención ilustrada en la Figura 6B muestra una cadena hijo similar 610 que tiene C3 removido de ésta, en donde C3 se incluye en su propia cadena 612 localizada en un "nivel de dependencia" separado 620 de acuerdo con otra modalidad de la invención. De hecho, la Figura 6B muestra dos niveles de dependencia separados, principalmente nivel de dependencia #1 (618) y nivel de dependencia #2 (620). Cada nivel de dependencia contiene ENTs que, además de aquellos que son dependientes de una fórmula de soporte en una cadena hijo dentro de ese nivel de dependencia, son dependientes de ENTs en niveles de dependencia previos. La distribución en tal modalidad permite a uno o más procesadores procesar ENTs a través de un nivel de dependencia en una forma continua sin tener que esperar a que se calculen ENTs de soporte no calculadas. Los beneficios de niveles de dependencia separados pueden demostrarse en la modalidad ilustrativa de cadena de cálculo 600, en donde C3 es un hijo de A3, que a su vez es un hijo de A2 y A1. Como se muestra en la Figura 4, C3 es dependiente de la suma de las formulas en A3 y B3. C3 de esa forma es dependiente tanto de A3 como de B3. Si B3 se calcula antes que el código de cálculo intenta evaluar C3 en la cadena de hijo 604, entonces no habrá retraso cuando el código de cálculo alcance C3 (es decir, el código de cálculo es capaz de calcular inmediatamente C3 debido a que ambos A3 y B3 ya se calcularon). De esa forma, C3 en tal modalidad puede permanecer como parte de la cadena de hijo 604. Sin embargo, en donde C3 no se calcula antes que se evalúe C3 por el código de cálculo, el código de cálculo no será capaz de calcular C3. En consecuencia, C3 permanece no calculado mientras B3 permanece no calculado. De esa forma, el procesamiento de la cadena hijo 604 se pausará, o a atascará, basándose en dependencia de C3 en B3. Tales dependencias tienen el potencial de crear ineficiencias en el procesamiento de recálculos. Una modalidad de esa forma proporciona para C3 (612) para moverse del nivel de dependencia #1 (618) al nivel de dependencia #2 (620), como se muestra en la cadena de cálculo unificada 606 en la Figura 6B. En una modalidad en donde están disponibles múltiples procesadores, mover C3 a un nuevo nivel de dependencia permite a un segundo procesador que trabaja en una cadena hijo 610 completar ese procesamiento de cadena y moverse al procesamiento de otra ENT o cadena hijo dentro del nivel de dependencia #1 mientras un primer procesador continua el procesamiento de la cadena hijo 608. Estos múltiples procesadores se muestran como motores de recálculo #1 y #2 (614 y 616, respectivamente) en la Figura 6B ya que cada procesador incluye un motor de recálculo que opera en este. Mientras dos motores de recálculo se muestran en la Figura 6B de acuerdo con una modalidad de la presente invención, cualquier número "N" de procesadores, como se muestra por las elipses 104 en la Figura 1, pueden emplearse para el cálculo y las operaciones de recálculo. La Figura 6C ilustra el procedimiento 622 para realizar el reordenamiento de ENTs y su movimiento, si hay alguno, al siguiente nivel de dependencia de acuerdo con una modalidad de la presente invención. La operación de inició 624 se inicia en respuesta a una carga de celdas en un programa de hoja de cálculo 400 y una llamada para recálculo. Desde la operación de inició 624, el procedimiento 622 procede a la operación de orden 626, en donde las ENTs se ordenan en una cadena de cálculo individual basándose en su orden de entrada en programa de hoja de cálculo 400, como se discutió anteriormente. Después, la operación de evaluar 628 intenta evaluar la primera fórmula en la cadena de cálculo individual. Después de intentar evaluar la primera fórmula, el procedimiento 622 procede a la operación de consulta 630 que determina si la primera fórmula es dependiente de una fórmula de soporte. Si la primera fórmula es dependiente de una fórmula de soporte, el flujo se ramifica a SI para mover la operación 634, que mueve la primera fórmula dependiente a la posición hijo de la fórmula de soporte. Si la primera fórmula no es dependiente de una fórmula de soporte, el flujo se ramifica a NO para evaluar la operación 632 y la primera fórmula se evalúa. A partir de la operación de mover 634, el procedimiento 622 procede a la operación de consulta 636 que determina si la primera fórmula también es dependiente de una segunda fórmula, no calculada. Si la operación de consulta 636 determina que la primera fórmula es dependiente de una segunda fórmula no calculada, el flujo se ramifica a SI para mover la operación 642, que mueve la primera fórmula dependiente al siguiente nivel de dependencia. Después, la operación de consulta 644 determina si existe cualquier otra de las fórmulas para evaluar en la cadena de cálculo y, si es así, se ramifica a SI para la operación de evaluar 628. Si la operación de consulta 644 determina que no hay otras fórmulas por evaluar, el flujo se ramifica a NO para la operación determinar 646 que termina el procedimiento 622. Si la operación de consulta 636 determina que la primera fórmula dependiente no depende de una segunda fórmula de soporte no calculada, el flujo se ramifica a NO para calcular la operación 638 que determina si la primera fórmula de soporte también tiene una segunda fórmula dependiente. Si la operación de consulta determina que la primera fórmula de soporte no tiene una segunda fórmula dependiente, el flujo se ramifica a NO para la operación de evaluar 632. Por otro lado, si la operación de consulta 638 determina que la primera fórmula de soporte también tiene una segunda fórmula dependiente, el flujo se ramifica a SI a la operación de mover 640, en donde las primeras y segundas fórmulas dependientes se mueven al siguiente nivel de dependencia. Desde la operación de mover 640, el procedimiento 622 procede a la operación de consulta 644 para determinar si cualquiera de las fórmulas requiere evaluación, y el procedimiento procede como se discutió anteriormente. Mientras el reorden de las ENTs discutidas en las Figuras 6A, 6B, y 6C tienen relacionados tal reordenamiento generalmente con respecto al número de procesadores (es decir, utilizar uno o más procesadores), la Figura 7 específicamente ilustra el reordenamiento 700 de una cadena de cálculo individual de la hoja de cálculo 400 a través del uso de múltiples motores de recálculo y secuencias asincrónicas. Una secuencia de control 702 se emplea para sincronizar las varias secuencias y motores de recálculo. En la modalidad ilustrativa del sistema 700, dos motores de recálculo 704 y 712 se emplean; sin embargo, otras modalidades pueden involucrar cualquier número de motores de recálculo y operaciones de procesamiento de secuencias múltiples correspondientes. De acuerdo con la modalidad ilustrativa ilustrada en la Figura 7, una secuencia de procesamiento del motor de recálculo 1 (704) intenta evaluar C3 en la cadena de cálculo individual 708. Debido a que C3 es dependiente de A3 y B3, que aún no se calculan, C3 puede incluso no calcularse. En consecuencia, el motor de recálculo 1 mueve C3 a su fila 706 de fórmulas dependientes y de soporte. C3 se enlista como una fórmula dependiente, y A3 se enlista como la fórmula de soporte para C3. Después, la secuencia de programa del motor de recálculo 2 (712) intenta evaluar B3. Incapaz de evaluar esta fórmula dependiente, el motor de recálculo 2 mueve B3 dependiente y su fórmula de soporte B2 es su propia fila 702 de fórmulas dependientes y de soporte. Este procedimiento continúa hasta que los motores de recálculo intentaron evaluar cada ENT en la cadena de cálculo individual 708. Una vez que cada ENT en la cadena 708 se evaluó, o intentó evaluarse, las filas 706 y 710 se reordenan en cadenas hijo por la secuencia de control 702 basándose en sus relaciones dependientes/de soporte. Similar a la cadena hijo 604 discutido anteriormente, la Figura 8 muestra la cadena de hijo 804 con ENTs A1, A2, A3, y C3. La cadena hijo 802 muestra ENTs B1, B2, y B3. Estas cadenas hijo que muestran inicialmente como localizadas en el nivel de dependencia #1 (806) de la Figura 8. En una modalidad, la máquina de recálculo 1 (704) procesa la cadena hijo 802 compuesta de B1, B2, y B3. Entonces, mientras la máquina de recálculo 1 comienza a procesar la cadena hijo 802, el motor de recálculo 2 comienza a procesar la cadena hijo 804. En esta modalidad ilustrativa, se asume que la máquina de recálculo 1 termina de procesar B3 en la cadena hijo 802 antes que la máquina de recálculo 2 alcance C3 de la cadena hijo 804. En tal caso, C3 puede evaluarse debido a que tanto las formulas de soporte A3 y B3 ya se calcularon. En esta modalidad, C3 se muestra como localizada en el nivel de dependencia #1 (806), y nivel de dependencia #2 (808) se muestra como vacío en la Figura 8. Sin embargo, en otra modalidad, es posible (por una multitud de razones) que el motor de recálculo 1 no sea capaz de evaluar B3 antes que el motor de recálculo 2 intente evaluar C3. En tal caso, C3 permanecerá no calculado y el motor de recálculo 2 permanecerá atascado mientras espera a que el motor de recálculo 1 acabe su procesamiento de B3. Tal atascamiento previene que el motor de recálculo 2 procese otras ENTs y cadenas hijo que pueden existir dentro del primer nivel de dependencia (aunque tales cadenas adicionales no se muestran en la modalidad ilustrativa de la Figura 8). Un motor de recálculo atascado es un uso ineficiente de las capacidades de procesamiento de secuencias múltiples de un sistema de multiprocesador (es decir, en donde las operaciones de recálculo solicitadas para el motor de recálculo 2 son dependientes de la velocidad de procesamiento del motor de recálculo individual 1). De esa forma, la modalidad mostrada en la Figura 8 no es un reordenamiento óptimo de las celdas. Por el contrario, el reordenamiento óptimo aparecerá como la modalidad ilustrativa mostrada en la Figura 6B y discutida anteriormente con referencia a esto. Mientras la Figura 8 muestra un reordenamiento no óptimo 800 de las ENTs, en donde C3 permanece en nivel de dependencia #1 (806), otras modalidades (en donde B3 permanece no calculado al momento de evaluar C3) requerirá que C3 se mueva al nivel de dependencia #2 (808). En una modalidad, las reglas que rigen el movimiento de una ENT al siguiente nivel de dependencia son: (1) Intentar hacer la fórmula dependiente de un hijo de la fórmula de soporte. (2) si la fórmula dependiente ya es un hijo de otra fórmula, entonces la fórmula dependiente se forma para el siguiente nivel de dependencia; o Si la fórmula de soporte en la cual la fórmula dependiente depende ya tiene un hijo, entonces las fórmulas dependientes se forman para el siguiente nivel de dependencia. (3) Si una fórmula contiene una función que debe evaluarse en la secuencia de control, entonces la fórmula (denominada como una "fórmula de secuencia de control") se mueve al siguiente nivel de dependencia. A manera de ejemplo solamente, las siguientes funciones deben evaluarse en la secuencia de control: (a) función INDIRECTA; (b) función de OBTENER DATOS DE PIVOTE; (c) función de INFORMACIÓN; (d) función de DIRECCIÓN; (e) funciones Definidas por Usuario (UDFs). Cambiando ahora a la Figura 9, una modalidad ilustrativa del código de programa 900 para activar y suspender las secuencias asincrónicas de los motores de recálculo 1 y 2 mostrados en la Figura 7 se muestran de acuerdo con una modalidad de la presente invención. La secuencia de control 902 controla la activación de las secuencias asincrónicas. Inicialmente, el contador 906 establece el número de procesadores determinados de la operación de determinar 206. El contador 906 puede ser cualquier tipo de contador. En una modalidad ilustrativa, el contador 906 puede denominarse como Giro. Sin importar el término o el tipo de contador utilizado, el contador 906 en la secuencia de control ("CP") 902 se establece el número de procesadores determinados para estar disponibles para el procesamiento de secuencia múltiple. En la modalidad ilustrativa de la Figura 9, el contador 906 de esa forma se establece a un valor de procesamiento. En la modalidad ilustrativa de la Figura 9, el contador 906 de esa forma se establece a un valor de "2" para motores de recálculo 910 y 920. Además, el índice de secuencia de control 904, por ejemplo, int ientSiguiente, se establece a cero ("0"), y cada índice de motor de recálculo 914 y 924, int ¡ENT, se establece a "0". Estos índices controlan los indicadores para las ENTs 912 y 922, como se describe más adelante. Un valor de índice de "0" es un índice para la primera celda, es decir, C3, a la izquierda de la cadena de cálculo individual 918. Las Figuras 10A y 10B ilustran los pasos operacionales 1000 de activar y suspender las operaciones de secuencia asincrónicas de la motores de recálculo 1 (910) y 2 (920) para evaluar cadena de cálculo individual 918. Iniciar la operación de cálculo 1002 de la Figura 10A se inicia en respuesta a una carga, o llamada, para evaluar una hoja de cálculo tal como la hoja de cálculo 400 mostrada en la Figura 4. El contador 906 establece el número de motores de recálculo en la operación establecida 1004. Después de la operación de asignar 1006, la secuencia de control 902 establece los índices, 914 y 924, del motor de recálculo 1 y 2, respectivamente, a "0" para que cada secuencia se asigne para iniciar a evaluar la primera ENT. La secuencia control 902 entonces activa los eventos 916 y 926 en cada motor de rectángulo para despertar las secuencias para procesamiento en la operación de activador 1008. Una llamada, o carga en una aplicación, es un ejemplo de un evento en donde la secuencia de control 902 puede activar un evento de motor de recálculo. Al activarse, cada motor de recálculo realiza una operación de incremento entrelazada segura de secuencia 1010. Por ejemplo, el motor de recálculo 910 comienza esta operación de incremento entrelazada 1010 al agregar "1" al Indice de secuencia de control 904 y recibir el valor previo de índice 904, es decir, "0" en esta modalidad, al regreso de la secuencia de control 902. La diferencia entre el primer valor de índice de motor de recálculo 914 y el valor del índice de secuencia de control 904 regresado de la secuencia de control 902 es el valor que el motor de recálculo 1 debe repetir hacia abajo de la cadena de cálculo individual 918. En esta modalidad ilustrativa, el motor de recálculo 1 (910) incrementa el índice de secuencia de control 904 de un valor de "0" a un valor de "1". Debido a que "0" fue el valor previo del índice de secuencia de control 904, el motor de recálculo 1 (910) recibe el valor "0", lo compara con el valor de su propio índice 914, por ejemplo, "0" de acuerdo con esta modalidad ilustrativa, para determinar la diferencia entre estos dos valores, es decir, "0" menos "0" igual a "0", y recibe un valor de "0". Un valor de "0" requiere motor de máquina 1 (910) para evaluar la primera ENT (es decir, C3) de la cadena de cálculo 918. Similarmente, el motor de recálculo 2 (920) realiza una operación de incremento entrelazada segura de secuencia, en donde aumenta el índice de secuencia de control 904 de "1" a "2" y recibe el valor previo del índice de secuencia de control 904 a su vez, es decir, "1" en esta modalidad ilustrativa. El motor de recálculo 2 (920) entonces compara este valor regresado de "1" del índice de secuencia de control 904 con el valor de su propio índice, es decir, "0" en esta modalidad ilustrativa, y calcula una diferencia entre estos dos valores de "1". Un valor de "1" de esa forma requiere que el motor de recálculo 2 (920) evalúe la segunda ENT (es decir, B3) de cadena de cálculo 918. En una modalidad, este incremento entrelazado seguro de secuencia continúa hasta que es el fin de la cadena de dependencia. Al realizar operación de incremento entrelazada 1010, cada motor de recálculo inicia evaluación de una ENT asignada en operación 1012. Al activar las secuencias asincrónicas para evaluar la cadena 918, la secuencia de control 902 suspende sus propias operaciones en el paso 1014 y espera a que se active su propio evento 908. El procedimiento 1000 entonces se transfiere a la operación de regreso 1016. En una modalidad, las operaciones de un motor de recálculo pueden suspenderse individualmente por el mismo motor de recálculo. En otra modalidad, un motor de recálculo puede requerir que se suspendan todas las secuencias asincrónicas. En una primera modalidad, una secuencia asincrónica se suspende a si misma cuando se alcanza el fin de un nivel de dependencia. En otra modalidad, una secuencia asincrónica puede suspenderse cuando esa fila de secuencia, o memoria intermedia, se llena con fórmulas dependientes y de soporte. Otras modalidades pueden involucrar otras razones para suspender una secuencia asincrónica. Los ejemplos aquí proporcionados se pretenden para servir como modalidades ilustrativas solamente. En una modalidad adicional como una secuencia sincrónica puede requerir que se pausen todas las secuencias (por ejemplo, en donde se detecta una fórmula de secuencia de control por la secuencia asincrónica). Siguiendo la activación de las operaciones de secuencias descritas en la Figura 10 A anterior, un procedimiento de "suspender" 1018 para suspender, o pausar, operaciones de secuencias asincrónico individuales se describe en la Figura 10B de de acuerdo con una modalidad ilustrativa. De acuerdo con una modalidad de la presente invención, el cuadro de flujo ilustrado en la Figura 10B muestra el paso de operaciones entre las dos secuencias. En otra modalidad, las secuencias pueden operar simultáneamente. El cuadro de flujo ilustrado en la Figura 10B pretende servir como una modalidad ilustrativa solamente y de ninguna forma debe interpretarse como limitando las operaciones de las secuencias. Cambiando a la Figura 10B, como se discutió anteriormente, una secuencia puede suspender sus operaciones y detecta que alcanzó el fin de un nivel de dependencia. En otra modalidad, la secuencia puede pausar sus operaciones y detecta que su fila, o memoria intermedia, está llena. De esa forma, desde la operación de inicio 1020, el flujo procede a la operación de consulta 1024 que determina si se alcanzó un final de un nivel de dependencia, o si la memoria intermedia para el motor de recálculo #1 está lleno. Si la operación de consulta 1024 determina que no se alcanzó un final del nivel de dependencia y que la fila para esa secuencia no está llena, el flujo pasa a NO para continuar la operación 1026, en donde la secuencia continua para evaluar ENTs y repetir la cadena de cálculo. Por otro lado, si la operación de consulta 1024 determina que un final de un nivel de dependencia se alcanzó o que la memoria intermedia para esa secuencia está llena, el flujo pasa de SI para disminuir la operación de contador 1028. La operación de contador de disminución disminuye el contador 906 de la secuencia de control. Al suspender sus propias operaciones, un motor de recálculo, entre otras funciones, disminuirá el contador de la secuencia de control 906. Si el contador 906 tiene un valor mayor que "0", una secuencia debe operar, o aún despertar. Sin embargo, cuando el valor del contador es "0", todas las secuencias se suspenden y el evento 908 de la secuencia de control 902 se activa. Al disminuir el contador de secuencia control 906, el motor de recálculo #1 se suspende en operación para dormir 1030, o, en otras palabras, lo ponen en modo para dormir. Después, la operación de consulta 1032 determina si el contador de secuencia de control 906 es igual a "0". Si el contador 906 tiene un valor de "0", el flujo se ramifica a SI para activar la operación de evento de secuencia control 908 en la operación 1034 debido a que un valor de "0" indica que todas las secuencias asincrónicas se suspenden. Si el contador 906 no tiene un valor de "0", el flujo se ramifica a NO para pasar a la operación 1036, en donde el control se pasa al motor de recálculo #2. El motor de recálculo #2 procede a través de los pasos 1038 a 1048, que son analógicos a aquellos discutidos anteriormente para el motor de recálculo #1. Un procedimiento 1100 para repetir a través de una cadena de cálculo para determinar reordenamiento necesario y pueda detectar fórmulas de secuencia de control, se hay alguna, se muestra de acuerdo con una modalidad de la presente descripción. Como se discutió anteriormente, la modalidad ilustrativa de la presente invención mostrada en la Figura 11 ilustra el paso de operaciones entre dos secuencias. En otra modalidad, las secuencias pueden operar simultáneamente. El cuadro de flujo ¡lustrado en la Figura 11 se pretende para servir como una modalidad ilustrativa solamente y de ninguna forma debe interpretarse como limitando las operaciones de las secuencias. Cambiando a la Figura 11, la operación de inicio de 1102 se inicia siguiendo la activación de eventos 1008 de cada motor de recálculo. Desde la operación de inicio 1102, el flujo de operación procede a la operación de incremento entrelazada 1104 del motor de recálculo #1. Después, el motor de recálculo #1 repite la cadena de cálculo en la operación de repetición 1106 al valor de ENT calculado asignado a través de la operación de incremento segura de secuencia 1104. Al alcanzar la ENT asignada, el flujo pasa a la operación de consulta 1112 que determina si el final del nivel de dependencia se alcanzó, o si la fila de secuencia asincrónica (o memoria intermedia) está llena. Si se detecta el final del nivel de dependencia, o si se determina que la fila de secuencia asincrónica está llena, la secuencia asincrónica pasa sus propias operaciones en operación de pausa 1116. Si ninguno de estos artículos que requieren pausado o están presentes, el procedimiento 1100 procede a la operación de consulta 1114 que determina si la fórmula es una fórmula de secuencia de control. Si se detecta una fórmula de secuencia de control, el flujo se ramifica a SI a la operación de fila 1115 que forma la fórmula de secuencia de control en una memoria intermedia separada, o fila, que consiste sólo de tales fórmulas. Si la operación de consulta 1114 determina que la fórmula no es una fórmula de secuencia de control, entonces el flujo se ramifica a NO a la operación de consulta 1120 que determina si la fórmula en ENT asignada es dependiente de la ENT no calculada. Si la operación de consulta 1120 determina que las fórmulas dependientes de una ENT no calculada, el flujo se ramifican a SI a la fila 1 en la operación 1122, en donde las fórmulas dependientes y de soporte se colocan en la fila apropiada. Si la operación de consulta 1120 determina que la fórmula no es dependiente en una ENT no calculada, el flujo se ramifica a NO para evaluar la fórmula en operación 1118 que regresa un valor. Siguiendo las operaciones de evaluar y formar 1118 y/o 1122, el procedimiento 1100 procede a la operación 1124, en donde las operaciones se pasan al motor de recálculo #2. El segundo motor de recálculo realiza los pasos 1126 a 1142, que son analógicos a aquellos discutidos anteriormente con referencia a las operaciones de motor de recálculo #1 1104 a 1124. Cambiando ahora a la Figura 12, el procedimiento 1200 que involucra controlar operaciones de secuencia para reordenar la cadena de cálculo en una cadena unificada, reordenada se muestra de acuerdo con una modalidad de la presente invención. La operación de inicio 1202 inicia respuesta a un activador del evento de secuencia de control. A partir de la operación de inicio 1202, el flujo procede a la operación de representación 1203, que representa la celda de la hoja de cálculo 400. Siguiendo la operación de representación 1203, el procedimiento 1200 procede a la operación de consulta 1204 que determina si existe cualquiera de las entradas en las filas de los motores de recálculo. Si la operación de consulta 1204 determina que tales entradas existen, el flujo se ramifica a SI para reordenar la operación 1210. La operación de reordenar 1210 reordena las fórmulas dependientes y de soporte en cadenas hijo dentro de una cadena unificada. Una vez que se completa este reordenamiento, la operación de consulta 1218 determina si se hace cualquiera de los hijos. Si se hacen fijos, esto es necesario para el que la operación de recálculo de nuevo corra a través del nivel de dependencia que contiene esas nuevas cadenas hijo. De esa forma, si se hacen un hijo o hijos, el flujo se ramifica SI a la operación de reiniciar 1224, que reinicia los índices y los indicadores de los motores de recálculo para iniciar el comienzo de ese nivel de dependencia de nuevo. A partir de aquí, el procedimiento 1200 procede a la operación de despertar 1230, que activa los eventos de las secuencias asincrónicas. Estas secuencias realizan operaciones de recálculo en la cadena reordenada. Al activar los motores de recálculo, la secuencia de control suspende sus operaciones propias en operación para dormir 1232. Si la operación de consulta 1218 determina que no se hicieron hijos en el reordenamiento, la entrada o entradas en las filas deben moverse al siguiente nivel de dependencia como se representó por la operación 1220. Si no se hicieron hijos, no es necesario recalcular las ENTs dentro del nivel de dependencia actual. En lugar de esto, los índices y los indicadores de las secuencias acrónicas, así como el índice de control de la secuencia asincrónica, se restablecen en la operación de restablecimiento 1222 para el siguiente nivel de dependencia. El flujo entonces procede a la operación de consulta 1226 para determinar si existe cualquiera de las fórmulas de secuencia de control en el siguiente nivel de dependencia. Si la operación de consulta 1226 determina que existen fórmulas de secuencia de control en el siguiente nivel de dependencia, el flujo se ramifica a SI a la operación de ejecutar 1228, que permite a la secuencia control trabajar en esa fórmula(s). Una vez que se evalúan esas fórmulas, el flujo procede a la operación de secuencias asincrónicas de despertar 1230, que activa los eventos de las secuencias asincrónicas y los pasos 1230 y 1232 se procesan como se discutió anteriormente. Si la operación de consulta 1226 determina que no existen tales fórmulas, el flujo se ramifica a NO a la operación de despertar 1230, y el procedimiento 1200 procede a través de los pasos 1230 y 1232 como se discutió anteriormente. Si la operación de consulta 1204 determina que no hay entradas en las filas de recálculo, el flujo se ramifica a NO a la operación de consulta 1206, que determina si existe una fórmula de secuencia de control en la lista enlazada de la secuencia de control 902. Como se discutió anteriormente, una fórmula de secuencia de control es una fórmula que debe evaluarse por la secuencia de control, como opuesto por una de las secuencias asincrónicas. Si se formó una fórmula de secuencia de control, el flujo se ramifica a SI a la operación de mover 1212, en donde la formula de secuencia de control se mueve al siguiente nivel de dependencia en la cadena unificada. Al mover las formulas de secuencia de control a un nuevo nivel de dependencia inmediatamente siguiendo el nivel de dependencia actual, el procesamiento de secuencias múltiples puede continuar a pesar de la necesidad de evaluar una fórmula de secuencia de control. Desde la operación de mover 1212, el flujo procede a la operación de consulta 1216 que determina si existe cualquier otra de las fórmulas de secuencia de control. Si existen otras fórmulas de secuencia control formadas, el flujo se ramifica a SI a la operación de consulta 1206 y los pasos anteriores se repiten. Sí la operación de consulta 1216 determina que no existen otras fórmulas de secuencia de control, el flujo se ramifica a NO a la operación de restablecer 1222, que restablece los índices e indicadores de las secuencias asincrónicas (y el índice de control correspondiente de la secuencia de control) al siguiente nivel de dependencia. Antes que la secuencia de control suspenda sus operaciones, primero determinan si existen cualquiera de las fórmulas de secuencia de control en el siguiente nivel de dependencia en la operación de consulta 1226, y el procedimiento 1200 entonces de procede a través de los pasos 1226 a 1232 como se discutió anteriormente. Si la operación de consulta 1206 determina que no hay fórmulas de secuencia de control, el flujo se ramifica a NO a la operación de restablecer 1222, que restablece los índices e indicadores para el siguiente nivel de dependencia, y el procedimiento 1200 procede a través de los pasos 1222 a 1232 como se discutió anteriormente. Mientras los pasos 1206 y 1212 en la Figura 12 involucran el movimiento de una fórmula de secuencia de control a un nuevo nivel de dependencia inmediatamente siguiendo nivel de dependencia actual, la Figura 13 ilustra una representación lógica 1300 de este movimiento. La Figura 13 muestra el nivel de dependencia #1 (1302) y nivel de dependencia #2 (1310) con C3 (1312) localizado en el nivel de dependencia #2. Además, la fórmula de secuencia de control "CT" (1308) se muestra en el nivel de dependencia #1 (también cadena de alojamiento 1304 y cadena 1306). Como se discutió, para permitir que la secuencia control realice fórmulas sólo de secuencia control, una modalidad de la presente invención mueve la fórmula de secuencia de control 1308 a la lista enlazada de la fila de secuencia de control. Entonces, cuando la secuencia de control se activa y asume el control de las operaciones y reordenamiento, la secuencia de control mueve la fórmula de secuencia de control a un nuevo nivel de dependencia inmediatamente siguiendo al actual. La modalidad ilustrativa de la Figura 13 de esa forma muestra la fórmula de secuencia de control 1308 que se mueve (1320) al nivel de dependencia #2 (1316) y el alojamiento en nivel de dependencia C3 ahora se vuelve un nivel de dependencia separado #3 (1318). Solamente se- muestra una fórmula de secuencia de control en esta modalidad. En otra modalidad, múltiples fórmulas de secuencia de control pueden moverse al nuevo nivel de dependencia 1316. Alternativamente, cada fórmula de secuencia de control puede moverse en su propio nuevo nivel de dependencia siguiendo el nivel de dependencia #1 (1314) y localizado antes del nivel de dependencia #3 (1318). En modalidades, las formulas de secuencia de control se mueven al siguiente nivel de dependencia debido a que la secuencia de control se da la secuencia que trabaja al final de un nivel de dependencia. Antes de activar las secuencias asincrónicas para comenzar las evaluaciones en el siguiente nivel de dependencia, la secuencia de control primero puede determinar si existen cualquiera de las formulas de secuencia de control que necesitan ejecutarse previo a la activación de las secuencias asincrónicas. Al mover una formula de secuencia de control a un nivel de dependencia separado permite que el procesamiento de secuencias múltiples continúen mientras, al mismo tiempo permiten las operaciones solo de secuencia de control. Mientras la Figura 13 muestra tres niveles de dependencia, cualquier número de tales niveles puede existir, y la naturaleza ilustrativa de la modalidad aquí mostrada, no pretende de ninguna forma limitar el número de tales niveles de dependencia posibles. Una modalidad de la presente invención, como se representó lógicamente en la Figura 14A, además permite que una aplicación de hoja de cálculo con capacidades de procesamiento múltiple realicen cálculos de referencia circulares (es decir, aquellos cálculos que dependen uno de otro) dentro del procesamiento de secuencia múltiple de una cadena de cálculo unificada. La hoja de cálculo 1402 muestra celdas A1 a A3 con contingencias de referencias circulares. En otras palabras, la formula en la celda A1 es dependiente de A3, que es dependiente de la formula A2, que, a su vez, es dependiente de la misma A1. Para resolver este problema de referencia circular, una modalidad de la presente invención permite a la celda de referencia circular tomarse, o desconectarse de, la cadena unificada y colocarse en un cálculo de cadena individual, es decir, una cadena de cálculo de cadenas hijo o niveles de dependencia, para calcular utilizar una secuencia individual. Con un cálculo de cadena individual, como opuesto a uno unificado que involucra relaciones hijo y/o niveles de dependencia, una función repetitiva puede realizar cálculos repetitivos con la cadena para converger a un valor final. El cálculo repetitivo 1410 es un ejemplo de tal función; sin embargo, cualquier tipo de función repetitiva para calcular dependencias circulares puede utilizarse de acuerdo con modalidades de la presente invención. Para crear un cálculo de cadena individual para cálculo circular repetitivo, las celdas primero se colocan en una cadena de cálculo individual 1404 como se discutió anteriormente (es decir, basándose en su entrada en la hoja de cálculo 1402). En esa modalidad ilustrativa, B1 primero se evalúa y se determina para no ser dependiente de ninguna otra fórmula. Después, trabajar cadena, A3 se determina para ser dependiente de A2 y se marca como "en progreso", y se remueve de la cadena de cálculo para volverse un hijo de la formula de soporte A2. Al mover la cadena 1404 a ENT A2 se encuentra que A2 depende de A1. A2 de esa forma se marca como "en progreso" y se remueve de la cadena de cálculo 1404 a la posición hijo de la fórmula de soporte A1. Al mover A2 a la posición hijo de A1, A2 toma A3 con este. Después, al mover la cadena 1404 a A1, A1 intenta evaluarse. Sin embargo, se encuentra que A1 depende de A3 para que exista una dependencia circular identificada en 1406. A1 se marca como "En progreso" y se remueve de la cadena de cálculo 1404. Como un resultado, A1, A2, y A3 ahora se desconectan completamente de la cadena de cálculo 1404 como se muestra en la cadena reordenada 1406. Por lo tanto, en el procedimiento de repetir a través de la cadena, A1, A2 y A3 no se procesarán. En consecuencia, al terminar la repetición a través de la cadena, A1, A2 y A3 aún se marcará como "En progreso" o sucia.
Con el fin de procesar estos artículos, el sistema mantiene el rastro de cada fórmula que se hace con un hijo de otra fórmula durante el curso del procedimiento de recálculo actual. Después, todas las fórmulas que se hicieron hijos durante el procedimiento se revisan para ver si cualquiera de ellas aún se marca como sucia. Si es así, esa fórmula y todos sus hijos se mueven a una cadena de cálculo plana 1408, es decir, una cadena de cálculo sin cadenas hijo o niveles de dependencia. Esta cadena de cálculo plana, mostrada en la Figura 14A en 1408, entonces se calcula al utilizar una secuencia individual. Si durante el cálculo con secuencia individual, se detecta una referencia circular verdadera, el cálculo puede hacerse repetitivamente, por ejemplo, por función de cálculo repetitiva 1410.
Cambiando ahora a la Figura 14B, el procedimiento 1411 para reordenar una cadena de cálculo en una cadena de cálculo plana para detección y evaluación de referencia circular posible se muestra de acuerdo con una modalidad de la presente invención. La operación de inicio 1412 se inicia al crear la cadena de cálculo individual 1404. Desde la operación de inicio 1412, el flujo procede a la operación de obtener 1414 que obtiene la primera fórmula en la cadena de cálculo 1404. La operación de evaluar 1416 entonces evalúa esta fórmula. La operación de consulta 1418 determina si la fórmula es un hijo de una fórmula de soporte. Si la fórmula es un hijo de una fórmula de soporte, el flujo se ramifica a SI para rastrear la operación 1420 y la fórmula hijo se marca "En progreso" y se mantiene el rastro por el sistema. Si la fórmula no es un hijo de una fórmula de soporte, el flujo se ramifica a NO para la operación de consulta 1422 que determina si existe en cualquier otra de las fórmulas en la cadena de cálculo 1404 para procesamiento. Si no hay más fórmulas, el flujo se ramifica a SI para obtener la operación 1414 que mueve a la siguiente fórmula en la cadena de cálculo 1404 para evaluación. Si no hay otras fórmulas, el flujo se ramifica a NO para obtener la operación de fórmula rastreada 1424, que recupera la primera (o siguiente) fórmula que mantiene el rastro desde la operación de rastreo 1420. Después, la operación de consulta 1426 determina si la fórmula rastreada recuperada aún se marca como sucia. Si la fórmula aún se marca como sucia, el flujo se ramifica a SI para hacer la operación de cadena de cálculo plana 1428, que agrega la fórmula y todos sus hijos a una cadena de cálculo plana como se muestra en la cadena de cálculo plana 1408, de acuerdo con una modalidad ilustrativa de la presente invención. Si la operación de consulta 1426 determina que la fórmula rastreada aún es sucia, el flujo se ramifica a NO a la operación de consulta 1430 que determina si existe en cualquier otra de las fórmulas que se rastrearon (o marcaron como "En progreso"). Si no hay otras fórmulas rastreadas, el flujo se ramifica a SI para obtener la primera/siguiente operación de fórmula rastreada 1424 y pasos 1426 a 1430 se repiten. Si la operación de consulta 1430 determina que no hay otras fórmulas rastreadas, el flujo se ramifica a NO a la operación de regresar 1432. Una vez que se crea una cadena de cálculo plana a través del procedimiento 1411, esta cadena de cálculo plana (como se creó en el paso 1428 y como se mostró como cadena de cálculo plana 1408) puede calcularse al utilizar una secuencia individual. Si durante el cálculo de secuencia individual, se detecta una referencia circular verdadera, las fórmulas pueden calcularse repetitivamente. Mientras el lenguaje de rastreo de "En progreso" se utilizó en esta modalidad ilustrativa (y al escribir la Figura 14A), cualquier mecanismo de marcado o rastreo puede utilizarse de acuerdo con modalidades de la presente invención. La Figura 15 ilustra un sistema de cómputo ilustrativo 1500 con el cual puede im plementarse la presente invención. Un sistema de computadora 1500, que tiene al menos un procesador 1502, y al menos un motor de recálculo 1518 que opera en este, se muestra en la Figura 2. El sistema 1500 tiene una memoria 1504, en donde se localiza una aplicación de hoja de cálculo 1520. En su configuración más básica, el sistema de cómputo 1500 se ¡lustra en la Figura 15 por la línea punteada 1506. Adicionalmente, el sistema 1500 también puede incluir almacenamiento adicional (removible y/o no removible) que incluye, pero no se limita a, discos o cinta magnética u óptica. Tal almacenamiento adicional se ilustra en la Figura 15 por almacenamiento removible 1508 y almacenamiento no removible 1510. Los medios de almacenamiento por computadora incluyen medios volátiles y no volátiles, removibles y no removibles ¡mplementados en cualquier método o tecnología para almacenamiento de información tal como instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos. La memoria 1504, almacenamiento removible 1508 y almacenamiento no removible 1510 son todos ejemplos de medios de almacenamiento por computadora. Los medios de almacenamiento por computadora incluyen, pero no se limitan a, RAM, ROM, EEPROM, memoria flash u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento óptico, cassettes magnéticos, cinta magnética, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede utilizarse para almacenar la información de cálculo de hoja de cálculo deseada, por ejemplo, y que puede accederse por el sistema 1500. Cualquier tal medio de almacenar de computadora puede ser parte del sistema 1500. Dependiendo de la configuración y tipo de dispositivo de cómputo, la memoria 1504, puede ser volátil, no volátil o alguna combinación de las dos. Los medios de comunicación típicamente representan instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte e incluye cualquier medio de entrega de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características establecidas o cambiadas de tal forma para codificar información en la señal. A manera de ejemplo, y no de limitación, los medios de comunicación incluyen medios por cable tal como red por cable o conexión por cable directa, y medios inalámbricos tal como medios acústicos, RF, infrarrojos y otros inalámbricos.
Combinaciones de cualquiera de los anteriores también deben incluirse dentro del alcance de medios legibles por computadora. El sistema 1500 también puede contener conexión(es) de comunicaciones 1512 que permiten al dispositivo comunicarse con otros dispositivos. Adicionalmente, el contenido de entrada en las celdas de la hoja de cálculo 400 de acuerdo con una modalidad de la invención, el sistema 1500 puede tener dispositivo(s) de entrada 1514 tal como un teclado, ratón, pluma, dispositivo de entrada por voz, dispositivo de entrada táctil, etc. El dispositivo(s) de salida 1516 tal como una presentación, bocinas, impresora, etc. también pueden incluirse, en donde tales dispositivos pueden utilizarse para presentar la hoja de cálculo 400 al usuario de acuerdo con modalidades de la presente invención. Todos estos dispositivos son bien conocidos en la técnica y no necesitan discutirse aquí en longitud. Al haber descrito las modalidades de la presente descripción con referencia las figuras anteriores, se debe apreciar que numerosas modificaciones pueden hacerse en la presente invención que sugerirán fácilmente a si mismas para aquellos expertos en la y que se abarcan dentro del alcance y espíritu de la invención descrita y como se definió en las reivindicaciones anexas. De hecho, mientras se describió una modalidad actualmente preferida para propósitos de esta descripción, pueden hacerse varios cambios y modificaciones que están bien dentro del alcance de la presente invención. Similarmente, aunque esta descripción utilizó lenguaje específico a características estructurales, actos metodológicos, y medios legibles por computadora que contienen tales actos, se debe entender que el tema definido en las reivindicaciones anexas no necesariamente se limita a la estructura, actos, características o medios específicos aquí descritos. En lugar de esto, las características y actos específicos descritos anteriormente se describen como formas ilustrativas de implementar las reivindicaciones. Por ejemplo, mientras se ilustraron y describieron dos motores de recálculo en algunas modalidades ilustrativas, cualquier número "N" de procesadores y, de esa forma, motores de recálculo pueden utilizarse. Un experto en la técnica reconocerá otras modalidades o mejoras que están dentro del alcance y espíritu de la presente invención. Por lo tanto, estructura, actos, o medios específicos se describen como modalidades ilustrativas de implementar la invención reclamada. La invención se define por las reivindicaciones anexas.

Claims (20)

REIVINDICACIONES
1. - Un método de procesar fórmulas en un programa de hoja de cálculo (1520, 500), que comprende: ordenar las fórmulas en una cadena de cálculo individual (500, 626); intentar evaluar una primera fórmula en la cadena de cálculo individual (500, 628); si la primera fórmula es dependiente de una fórmula de soporte en la cadena de cálculo individual, mover la primera fórmula a una posición hijo de la fórmula de soporte (604, 630, 634); y continuar el orden de todas las fórmulas en la cadena de cálculo individual hasta que cada fórmula dependiente haya hecho un hijo de su fórmula de soporte respectiva y una cadena unificada con una o más cadenas hijo de resultados de fórmulas (602, 604, 644).
2. - El método de acuerdo con la reivindicación 1, el método además comprende: dividir la cadena unificada (602, 604) en una pluralidad de niveles de dependencia (618, 620), en donde cada nivel de dependencia incluye fórmulas (608, 610, 612, 642, 640) que son dependientes de fórmulas de un nivel de dependencia previo (618) o en fórmulas dentro de sus propias cadenas hijo (608, 610, 640, 642).
3. - El método de acuerdo con la reivindicación 2, en donde una fórmula dependiente (612) se mueve al siguiente nivel de dependencia si es un hijo de una primera fórmula de soporte (610) y es dependiente de una segunda fórmula de soporte no calculada (608, 636, 642).
4. - El método de acuerdo con la reivindicación 2, en donde una fórmula de soporte tiene una primera fórmula dependiente y una segunda fórmula dependiente y las primera y segunda fórmulas dependientes se mueven al siguiente nivel de dependencia (638, 640).
5. - Un producto de programa de computadora (1508, 1520) legible por un sistema de computadora (1500) y que tangiblemente representa un programa de instrucciones ejecutables por el sistema de computadora para realizar el método de la reivindicación 1.
6. - Un método para utilizar múltiples procesadores para calcular fórmulas en un programa de hoja de cálculo (200, 1000), que comprende: determinar el número de procesadores (206); distribuir un motor de recálculo a cada procesador (209); mantener una secuencia de control para sincronizar el procesamiento de los motores de recálculo (1004); ordenar las fórmulas en una cadena de cálculo individual (700, 626); intentar evaluar una primera fórmula en la cadena de cálculo individual con el primer motor de recálculo (708, 628, 1120); si la primera fórmula es dependiente de una primera fórmula de soporte, mover la primera fórmula dependiente y la primera fórmula de soporte a una fila para el primer motor de recálculo (706, 636, 1122); intentar evaluar una segunda fórmula en la cadena de cálculo individual con el segundo motor de recálculo (708, 1124, 1138); si la segunda fórmula es dependiente de una segunda fórmula de soporte, mover la segunda fórmula dependiente y la segunda fórmula de soporte a una fila para el segundo motor de recálculo (710, 1138, 1140), y continuar repitiendo la cadena de cálculo individual hasta alcanzar el fin de la cadena (708, 706, 710, 1142, 644). 7.- El método de acuerdo con la reivindicación 6, en donde el método además comprende: vaciar las filas de cada motor de recálculo para reordenamiento (1122, 1140), en donde la primera fórmula dependiente se hace de un hijo de la primera fórmula de soporte y en donde la segunda fórmula dependiente se hace de un hijo de la segunda fórmula de soporte (802, 804, 630, 634). 8.- El método de acuerdo con la reivindicación 7, en donde la segunda fórmula de soporte por sí misma es un hijo de una tercera fórmula de soporte (804). 9.- El método de acuerdo con la reivindicación 6, en donde el método además comprende: si la primera fórmula es dependiente de una primera fórmula de soporte, marcar la primera fórmula dependiente para mantener rastro de ésta (1420); determinar si la primera fórmula de soporte es dependiente de la primera fórmula dependiente (1414, 1418); si la primera fórmula de soporte es dependiente de la primera fórmula dependiente, marcar la primera fórmula de soporte para mantener rastro de ésta (1420); al terminar la repetición a través de la cadena de cálculo individual, recuperar las fórmulas rastreadas (1422, 1424); determinar si cualquiera de las fórmulas rastreadas están sucias (1426); si cualquiera de las fórmulas rastreadas están sucias, mover la fórmula rastreada y su hijo o hijos a una cadena de cálculo plana sin ninguna de las cadenas hijo o niveles de dependencia (1428); y calcular la cadena de cálculo plana utilizando una secuencia individual (1432). 10. - El método de acuerdo con la reivindicación 6, en donde el método además comprende: determinar si la primera fórmula dependiente es dependiente de una segunda fórmula de soporte no calculada (802, 804, 616, 636); y si la primera fórmula dependiente depende de la primera fórmula de soporte y depende de la segunda fórmula de soporte no calculada, mover la primera fórmula dependiente a un nivel de dependencia separado (610, 612, 618, 620, 636, 642). 11. - El método de acuerdo con la reivindicación 6, en donde el método además comprende: determinar si la primera fórmula de soporte tiene tanto una primera fórmula dependiente como una segunda fórmula dependiente (1132, 638); y si la primera fórmula dependiente tiene tanto una primera fórmula dependiente como una segunda fórmula dependiente, mover las primera y segunda fórmulas dependientes a un nivel de dependencia separado (612, 620, 638, 640). 12. - El método de acuerdo con la reivindicación 6, en donde el método además comprende: determinar si existen cualquiera de las fórmulas en la cadena de cálculo para realizarse por la secuencia de control solamente (1206); y mover una fórmula solo de secuencia de control a un nivel de dependencia separado (1216). 13. - El método de acuerdo con la reivindicación 6, en donde una fórmula solo de secuencia de control se mueve a un nivel de dependencia que inmediatamente sigue un nivel de dependencia actual (1130). 14. - El método de acuerdo con la reivindicación 6, en donde las operaciones de secuencia de un primer motor de recálculo se suspenden cuando la secuencia alcanza el final de un nivel de dependencia (1132, 1134). 15. - El método de acuerdo con la reivindicación 6, en donde las operaciones de secuencia de un primer motor de recálculo se suspenden cuando la primera fila de motor de recálculo está llena (1132, 1134). 16.- El método de acuerdo con la reivindicación 6, en donde una fórmula solo de secuencia de control se coloca en una fila para tales fórmulas (1132, 1130). 1
7. - Un producto de programa de computadora (1508, 1520) legible por un sistema de computadora y que tangiblemente representa un programa de instrucciones ejecutables por el sistema de computadora (1500) para realizar el método de la reivindicación 6. 1
8. - Un método de reordenamiento de una cadena de cálculo en una aplicación hoja de cálculo a través del uso de niveles de dependencia, que comprende: crear un primer nivel de dependencia que comprende una primera cadena hijo y una segunda cadena hijo (618, 608, 610, 642, 640); intentar evaluar cada fórmula en la primera cadena hijo (608, 628); intentar evaluar cada fórmula en la segunda cadena hijo (608, 628); si no puede evaluarse una fórmula, determinar si la fórmula es dependiente de una primera fórmula de soporte en su propia cadena hijo y es dependiente de una segunda fórmula de soporte en otra cadena hijo dentro del mismo nivel de dependencia (612, 620, 630, 636); determinar si la segunda fórmula de soporte es no calculada (612, 620, 636); si la segunda fórmula de soporte es no calculada, mover la fórmula dependiente a un siguiente nivel de dependencia (612, 642); y si se calcula la segunda fórmula de soporte, evaluar la fórmula dependiente en el nivel de dependencia actual (604, 632). 1
9. - El método de acuerdo con la reivindicación 18, en donde el método además comprende: determinar si la primera fórmula de soporte en la cual depende una primera fórmula dependiente ya tiene una segunda fórmula dependiente como un hijo (630, 638); y si la primera fórmula de soporte ya tiene un hijo, entonces mover las primera y segunda fórmulas dependientes al siguiente nivel de dependencia (638, 640). 20. - El método de acuerdo con la reivindicación 18, en donde el método además comprende: determinar si existe cualquiera de las fórmulas sólo de secuencia de control (1206); y si existen fórmulas sólo de secuencia de control, mover estos artículos al siguiente nivel de dependencia (1206, 1212).
MX2008014241A 2006-05-08 2007-05-08 Procesamiento de hoja de calculo de secuencia multiple con niveles de dependencia. MX2008014241A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/430,486 US8032821B2 (en) 2006-05-08 2006-05-08 Multi-thread spreadsheet processing with dependency levels
PCT/US2007/011189 WO2007145742A2 (en) 2006-05-08 2007-05-08 Multithread spreadsheet processing with dependency levels

Publications (1)

Publication Number Publication Date
MX2008014241A true MX2008014241A (es) 2009-03-20

Family

ID=38662346

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2008014241A MX2008014241A (es) 2006-05-08 2007-05-08 Procesamiento de hoja de calculo de secuencia multiple con niveles de dependencia.

Country Status (13)

Country Link
US (1) US8032821B2 (es)
EP (1) EP2024868B1 (es)
JP (1) JP5081901B2 (es)
KR (1) KR101354810B1 (es)
CN (1) CN101438276B (es)
AU (1) AU2007259398B2 (es)
BR (1) BRPI0711327A2 (es)
CA (2) CA2648875C (es)
MX (1) MX2008014241A (es)
MY (1) MY153218A (es)
NO (1) NO20084366L (es)
RU (1) RU2461059C2 (es)
WO (1) WO2007145742A2 (es)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533139B2 (en) * 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
US8032821B2 (en) 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
US7814052B2 (en) 2006-11-03 2010-10-12 Salesforce.Com, Inc. Implementing formulas for custom fields in an on-demand database
US20110067015A1 (en) * 2008-02-15 2011-03-17 Masamichi Takagi Program parallelization apparatus, program parallelization method, and program parallelization program
EP2107474A1 (en) * 2008-03-31 2009-10-07 British Telecommunications Public Limited Company Data access
US8584004B2 (en) * 2008-04-23 2013-11-12 Microsoft Corporation Asynchronous user defined functions
US8255905B2 (en) * 2008-06-27 2012-08-28 Microsoft Corporation Multi-threaded processes for opening and saving documents
US9037959B2 (en) * 2008-09-30 2015-05-19 Apple Inc. Formula display and search in a spreadsheet
US20110264993A1 (en) * 2010-04-23 2011-10-27 Microsoft Corporation Multi-Threaded Sort of Data Items in Spreadsheet Tables
US8527866B2 (en) * 2010-04-30 2013-09-03 Microsoft Corporation Multi-threaded sort of data items in spreadsheet tables
US20110314365A1 (en) * 2010-06-17 2011-12-22 Microsoft Corporation Decompiling loops in a spreadsheet
US9952893B2 (en) * 2010-11-03 2018-04-24 Microsoft Technology Licensing, Llc Spreadsheet model for distributed computations
US8793566B2 (en) 2010-11-10 2014-07-29 Duquesne University Of The Holy Spirit System and method for allocating, scheduling, tracking and reporting usage of training assets and facilities
US11676090B2 (en) * 2011-11-29 2023-06-13 Model N, Inc. Enhanced multi-component object-based design, computation, and evaluation
US11074643B1 (en) 2012-12-21 2021-07-27 Model N, Inc. Method and systems for efficient product navigation and product configuration
US9417890B2 (en) * 2013-04-12 2016-08-16 Microsoft Technology Licensing, Llc Compilation of transformation in recalculation user interface
US9552007B2 (en) * 2013-12-19 2017-01-24 International Business Machines Corporation Parallel technique for computing problem functions in solving optimal power flow
US9292486B2 (en) * 2014-01-08 2016-03-22 International Business Machines Corporation Validation of formulas with external sources
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US9898440B2 (en) * 2015-02-25 2018-02-20 Sap Se Calculation framework utilizing fragmentation of expressions
US10289672B1 (en) * 2015-12-21 2019-05-14 Workday, Inc. Threading spreadsheet calculations
CN109409872A (zh) * 2017-08-17 2019-03-01 深圳市智派网络技术有限公司 电子现金的转账方法及装置
KR101985491B1 (ko) * 2017-12-11 2019-06-03 주식회사 핀인사이트 다이어그램 방식의 시각화 수식 작성을 통한 결과 생성 및 모니터링 장치
US11416262B1 (en) * 2018-05-22 2022-08-16 Workday, Inc. Systems and methods for improving computational speed of planning by enabling interactive processing in hypercubes
US11036931B2 (en) * 2018-08-21 2021-06-15 GrowthPlan LLC Grid-based data processing with changeable cell formats
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations
CN113420537B (zh) * 2021-06-22 2023-01-31 平安科技(深圳)有限公司 电子表格数据处理方法、装置、设备及存储介质

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US5276607A (en) * 1990-03-28 1994-01-04 Wordperfect Corporation Method for optimal recalculation
CA2074769C (en) * 1991-08-09 2001-03-20 International Business Machines Corporation Formula processor
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
JPH0744629A (ja) * 1993-07-30 1995-02-14 Nec Corp 表計算処理装置
US5943663A (en) * 1994-11-28 1999-08-24 Mouradian; Gary C. Data processing method and system utilizing parallel processing
JPH08235266A (ja) * 1995-02-23 1996-09-13 Matsushita Electric Ind Co Ltd 表計算処理方法
US6138130A (en) * 1995-12-08 2000-10-24 Inventure Technologies, Inc. System and method for processing data in an electronic spreadsheet in accordance with a data type
US6055548A (en) * 1996-06-03 2000-04-25 Microsoft Corporation Computerized spreadsheet with auto-calculator
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5970506A (en) * 1997-01-20 1999-10-19 Justsystem Corporation Spreadsheet-calculating system and method
US6304866B1 (en) 1997-06-27 2001-10-16 International Business Machines Corporation Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads
JP3209205B2 (ja) 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6349295B1 (en) * 1998-12-31 2002-02-19 Walker Digital, Llc Method and apparatus for performing supplemental searches over a network
US6957191B1 (en) 1999-02-05 2005-10-18 Babcock & Brown Lp Automated financial scenario modeling and analysis tool having an intelligent graphical user interface
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
EP1109105A1 (en) 1999-12-14 2001-06-20 Sun Microsystems, Inc. Inserting a data object into a text document
EP1152331B1 (en) 2000-03-16 2017-11-22 Kabushiki Kaisha Square Enix (also trading as Square Enix Co., Ltd.) Parallel task processing system and method
EP2458511A3 (en) * 2000-06-21 2014-08-13 Microsoft Corporation System and method for integrating spreadsheets and word processing tables
US7155667B1 (en) * 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
AUPQ836500A0 (en) * 2000-06-26 2000-07-20 Dstc Pty Ltd Parallel execution mechanism for spreadsheets
JP2002133360A (ja) 2000-10-27 2002-05-10 Mitsuyoshi Yamane 表計算処理におけるセルのレイアウトによる入出力方法及びそのプログラムを記録した記録媒体
RU2202123C2 (ru) * 2001-06-06 2003-04-10 Бачериков Геннадий Иванович Параллельная вычислительная система с программируемой архитектурой
JP3702814B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7010779B2 (en) * 2001-08-16 2006-03-07 Knowledge Dynamics, Inc. Parser, code generator, and data calculation and transformation engine for spreadsheet calculations
US7028167B2 (en) 2002-03-04 2006-04-11 Hewlett-Packard Development Company, L.P. Core parallel execution with different optimization characteristics to decrease dynamic execution path
US8793176B2 (en) * 2002-06-13 2014-07-29 Cfph, Llc Systems and methods for providing a customizable spreadsheet application interface for an electronic trading system
GB0224272D0 (en) * 2002-10-18 2002-11-27 Morrow Iain Systems and method for improved data processing
US7266763B2 (en) 2002-11-26 2007-09-04 Microsoft Corporation User defined spreadsheet functions
US7207043B2 (en) 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7228543B2 (en) 2003-01-24 2007-06-05 Arm Limited Technique for reaching consistent state in a multi-threaded data processing system
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US7243096B2 (en) * 2003-04-29 2007-07-10 International Business Machines Corporation Method and system in an electronic data table for managing order oriented criteria
US7530013B2 (en) * 2003-06-13 2009-05-05 Ultimate Risk Solutions, Llc Optimizer of interdependent information
US7454595B1 (en) * 2004-04-19 2008-11-18 Sandia Corporation Distributed processor allocation for launching applications in a massively connected processors complex
US7664804B2 (en) * 2004-06-01 2010-02-16 Microsoft Corporation Method, system, and apparatus for exposing workbook ranges as data sources
US7533139B2 (en) * 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
US7810032B2 (en) * 2004-12-01 2010-10-05 International Business Machines Corporation System and method for performing over time statistics in an electronic spreadsheet environment
US7451397B2 (en) * 2004-12-15 2008-11-11 Microsoft Corporation System and method for automatically completing spreadsheet formulas
US8010969B2 (en) * 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US8032821B2 (en) 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels

Also Published As

Publication number Publication date
EP2024868A2 (en) 2009-02-18
CA2648875A1 (en) 2007-12-21
CN101438276B (zh) 2012-09-05
US8032821B2 (en) 2011-10-04
RU2008144192A (ru) 2010-05-20
JP5081901B2 (ja) 2012-11-28
KR101354810B1 (ko) 2014-01-22
RU2461059C2 (ru) 2012-09-10
US20070260667A1 (en) 2007-11-08
AU2007259398A1 (en) 2007-12-21
CA2875086A1 (en) 2007-12-21
CN101438276A (zh) 2009-05-20
JP2009536766A (ja) 2009-10-15
AU2007259398B2 (en) 2012-01-19
EP2024868B1 (en) 2018-02-28
EP2024868A4 (en) 2011-01-12
BRPI0711327A2 (pt) 2011-08-30
KR20090018097A (ko) 2009-02-19
WO2007145742A2 (en) 2007-12-21
CA2648875C (en) 2015-02-24
NO20084366L (no) 2008-12-05
WO2007145742A3 (en) 2008-02-28
MY153218A (en) 2015-01-29

Similar Documents

Publication Publication Date Title
MX2008014241A (es) Procesamiento de hoja de calculo de secuencia multiple con niveles de dependencia.
US7827167B2 (en) Database management system and method including a query executor for generating multiple tasks
US8930895B2 (en) Automatically displaying a related file in an editor
US8584004B2 (en) Asynchronous user defined functions
US10108401B2 (en) Dynamic suggestion of next task based on task navigation information
EP2088504A1 (en) Representation of data transformation processes for parallelization
US7533139B2 (en) Method and system for multithread processing of spreadsheet chain calculations
US8954969B2 (en) File system object node management
US9400584B2 (en) Alias selection in multiple-aliased animations
EP2089796A2 (en) Enterprise performance management software system having dynamic code generation
Shanker et al. Priority assignment heuristic to cohorts executing in parallel
HK1182468A (en) Efficiently providing data from a virtualized data source

Legal Events

Date Code Title Description
FG Grant or registration