ES2487890T3 - Determinación de tamaños de tramas de memoria para la asignación dinámica de memoria limitando la fragmentación interna - Google Patents

Determinación de tamaños de tramas de memoria para la asignación dinámica de memoria limitando la fragmentación interna Download PDF

Info

Publication number
ES2487890T3
ES2487890T3 ES04023881.8T ES04023881T ES2487890T3 ES 2487890 T3 ES2487890 T3 ES 2487890T3 ES 04023881 T ES04023881 T ES 04023881T ES 2487890 T3 ES2487890 T3 ES 2487890T3
Authority
ES
Spain
Prior art keywords
data block
size
data
block size
sizes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES04023881.8T
Other languages
English (en)
Inventor
Patrik Åberg
Ola Nilsson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Optis Wireless Technology LLC
Original Assignee
Optis Wireless Technology LLC
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 Optis Wireless Technology LLC filed Critical Optis Wireless Technology LLC
Application granted granted Critical
Publication of ES2487890T3 publication Critical patent/ES2487890T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Communication Control (AREA)
  • Memory System (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un procedimiento para determinar el tamaño de cada una de un número predeterminado de tramas de memoria de una memoria (12), donde dicha memoria (12) está adaptada para almacenar bloques de datos en tramas de datos, de un número predeterminado de diferentes tamaños a asignar, comprendiendo dicho procedimiento: determinar la distribución de tamaños de bloques de datos para al menos un conjunto de bloques de datos (101 a 106, 111 a 117, 121 a 125) de al menos un proceso o señal, teniendo cada bloque de datos de dicho conjunto de bloques de datos un tamaño particular, caracterizado por: eliminar iterativamente al menos un tamaño de bloque de datos de la distribución de tamaños de bloques de datos, hasta que el número de tamaños de bloques de datos de dicha distribución corresponda al número de tamaños del número predeterminado de tramas de memoria, mediante la realización iterativa de: 1) calcular, para cada bloque de datos que tenga un tamaño P de bloque de datos, un valor de holgura predicha (PS) usando la fórmula: PS >= (Numero de bloques de datos de tamaño P) x ((tamaño de bloque de datos a fusionar con el tamaño P de bloque de datos) - (tamaño P de bloque de datos)), donde el tamaño de bloque de datos a fusionar con el tamaño P de bloque de datos es mayor que el tamaño P de bloque de datos, 2) seleccionar dos tamaños de bloques de datos a fusionar, usando uno cualquiera de los siguientes criterios, 20 y que corresponden a: - el menor valor calculado de holgura predictiva (PS), - el menor valor predictivo de holgura (SPV), donde el valor predictivo de holgura es la suma de los valores calculados de holgura predicha (PS), excepto el valor calculado de holgura predicha para el tamaño de bloque de datos más grande de la distribución de tamaños de bloques de datos que quedaría si un cierto tamaño P de bloque de datos se eliminase, o - el menor valor ponderado de holgura predictiva (WSPV), calculado usando la siguiente fórmula: WSPV >= c1 (PS) + c2 (SPV), donde c1 y c2 son factores de ponderación, 3) fusionar los dos tamaños de bloques de datos correspondientes para generar un tamaño de bloque de datos fusionado, y 4) determinar cada tamaño de las tramas de memoria como un tamaño de los tamaños de bloques de datos de dicha distribución, que quedan después de dicha eliminación, y de modo que los tamaños de las tramas de memoria sean diferentes.

Description

15
25
35
45
55
65
E04023881
31-07-2014
DESCRIPCIÓN
Determinación de tamaños de tramas de memoria para la asignación dinámica de memoria limitando la fragmentación interna
Campo técnico de la invención
La presente invención se refiere a un procedimiento para determinar los tamaños de las tramas de memoria, que tienen tamaños predefinidos y se utilizan para el almacenamiento de bloques de datos en una memoria. La invención también se refiere a un dispositivo de procesamiento adaptado para implementar el procedimiento según la invención.
Descripción de la técnica relacionada
La asignación dinámica de memoria se utiliza para la asignación de memoria en un sistema en tiempo real a medida que se produce una necesidad de recursos de memoria. La asignación dinámica de recursos de memoria en un dispositivo de asignación de memoria puede estar limitada a un cierto número de tamaños predefinidos de tramas de memoria, o a un cierto número de tramas de memoria que tienen diferentes tamaños, es decir, cada trama de memoria puede almacenar un cierto número de bits de datos. La capacidad de almacenamiento de cada trama de la memoria puede no corresponder necesariamente a su tamaño real, pues ciertos bits de la trama de memoria se pueden usar para la gestión de la memoria. Tener tramas de memoria con tamaños predefinidos hace que sea posible proporcionar un asignador de memoria que se comporta de manera muy predecible, en términos de tiempo de ejecución, para la asignación y des-asignación de memoria. Sin embargo, también tiene un impacto en el rendimiento.
Un inconveniente con un esquema de asignación de memoria que utiliza tramas de memoria con tamaños predefinidos es un fenómeno llamado fragmentación interna u holgura (en inglés slack). Esto significa que si un tamaño de memoria solicitado, es decir, el tamaño de un bloque de datos que va a almacenarse, es menor que el tamaño de la trama más pequeña de memoria que tiene la capacidad de almacenar el bloque de datos de ese tamaño, el número de los octetos que difieren no será utilizado, es decir, se convierte en holgura, que también es conocida como fragmentación interna.
El problema con la holgura tiene impacto en todas las áreas en donde es utilizada la asignación dinámica de memoria. Dos de estas áreas están en el procesamiento de procesos donde la memoria se pierde debido a la holgura para cada proceso, y en almacenes temporales de señales donde la memoria se pierde como holgura para cada señal asignada. Sin embargo, son conocidos los requisitos de memoria de un determinado proceso. Por lo tanto, es posible establecer los tamaños de las tramas de memoria de tal manera que se produzca tan poca holgura como sea posible. Además, si se conocen los posibles tamaños de los bloques de datos de una señal, los tamaños de las tramas de memoria se pueden fijar en una configuración óptima predicha, mediante la predicción de los tamaños de señal, por ejemplo, mediante la ejecución del sistema en el que se debería implementar el dispositivo de asignación dinámica de memoria, para diferentes casos de uso.
En los sistemas conocidos en la técnica, los tamaños de las tramas de memoria pueden ser adivinados por un ser humano que observa todos los diferentes tamaños de bloques de datos de un proceso/señal y el número de bloques de datos de cada tamaño de bloque de datos y, a continuación, recorta los tamaños de las tramas de memoria hasta los tamaños adecuados. Debe hacer esto una y otra vez para cada nuevo conjunto de tamaños de bloques de datos de un proceso/señal. Esto es un problema, ya que requiere mucho tiempo, y a veces los tamaños de las tramas de memoria, determinados manualmente, no son óptimos en absoluto.
En los sistemas integrados, tales como un terminal móvil, en los que los recursos de memoria son limitados, la configuración de un dispositivo de asignación dinámica de memoria en tamaños óptimos de tramas de memoria predefinidas tiene un gran impacto sobre la holgura. En tal sistema, el número de procesos puede, por ejemplo, estar en el intervalo entre 10 y 30 para un sistema pequeño, y en hasta cientos de procesos para un sistema más grande. Además, cada proceso puede comprender varios cientos de tamaños distintos de bloques de datos, pero los diferentes tamaños de las tramas de memoria sólo pueden estar en la gama entre unos pocos hasta algunas decenas. De manera similar, el número de tamaños diferentes de los bloques de datos de señales puede estar en la misma gama que el número de tamaños diferentes de bloques de datos de un proceso. Los ahorros en términos de recursos de memoria en este tipo de dispositivos electrónicos tienen un impacto sobre los costes de producción; el impacto es más grande cuanto mayor es el sistema. Si se pueden limitar los recursos de memoria debido a la reducción de la holgura, puede reducirse el coste de producción.
Un algoritmo según la técnica anterior para determinar automáticamente la cantidad y el tipo de diferentes recursos de sistema de un sistema se describe en el documento xp010588126, “Hardware-Software Co-Synthesis of low power real-time distributed embedded system with dynamically reconfigurable FPGAs” [“Co-síntesis de hardware y software de sistemas integrados distribuidos en tiempo real de baja energía, con FPGA reconfigurablesdinámicamente”], CONFERENCIA DE AUTOMATIZACIÓN DEL DISEÑO, 2002. Los recursos de sistema pueden
15
25
35
45
55
65
E04023881
31-07-2014
comprender FPGA [Formaciones de Compuertas Programables en el Terreno], procesadores y otros recursos de sistema dinámicamente programables. El algoritmo también comprende asignar tareas que deberían llevarse a cabo a los diferentes recursos de sistema.
El documento XP-000903927 revela un algoritmo para correlacionar una especificación de sistema de velocidad única restringida en el tiempo con una especificación de sistema heterogéneo. El sistema heterogéneo comprende múltiples limitaciones de recursos, tales como el tamaño de memoria de los procesadores, el tamaño del almacén temporal de enlaces de comunicación, y el área de los ASIC [Circuitos Integrados Específicos de la Aplicación].
El documento XP-002262845 se refiere a la fragmentación de memoria. Se revela que el tamaño de los bloques de memoria tiene implicaciones para la fragmentación.
El documento US-A-6 088 777 revela un sistema de memoria y un procedimiento de gestión para la asignación dinámica de memoria. Un área fija de memoria se divide en un número entero de clases. Cada clase de memoria incluye bloques de memoria del mismo tamaño, enlazados entre sí por punteros. Los tamaños de bloques de memoria son diferentes para cada clase. Los tamaños de los diferentes bloques de memoria se seleccionan para que sean conformes a la CPU y el acceso a la memoria, excepto al hardware, así como para asimilar los diversos tamaños de datos que se espera procesar para una aplicación particular.
Resumen de la invención
Es un objeto de la invención proporcionar un procedimiento y un dispositivo para determinar el tamaño de al menos una trama de memoria para un medio de memoria, que cause tan poca holgura como sea posible cuando los bloques de datos de diferentes tamaños se almacenen en tramas de memoria que tienen dicho(s) tamaño(s) determinado (s) en dicho medio de memoria.
De acuerdo con un primer aspecto de la invención, el objeto se logra mediante un procedimiento para determinar el tamaño de cada una entre un número predeterminado de tramas de memoria a asignar para el almacenamiento de bloques de datos en una memoria. El procedimiento comprende la determinación de una distribución de tamaños de bloque de datos para al menos un conjunto de bloques de datos. Por lo menos un tamaño de bloque de datos de la distribución de tamaños de bloques de datos se elimina de forma iterativa hasta que el número de tamaños de bloques de datos corresponda al número de tamaños de las tramas de memoria. Dicho al menos un tamaño de bloque de datos se fusiona con un primer tamaño de bloque de datos de la distribución, para generar un tamaño fusionado de bloque de datos. El primer tamaño de bloque de datos es más grande que dicho al menos un tamaño de bloque de datos y el tamaño del tamaño fusionado de bloque de datos corresponden al primer tamaño de bloque de datos. Los tamaños de bloques de datos a fusionar se seleccionan por medio de un algoritmo de predicción de holgura. Los tamaños de las tramas de memoria son determinados como los tamaños de bloques de datos de la distribución que quedan después de la eliminación.
El procedimiento también puede comprender añadir el número de bloques de datos que tienen dicho al menos un tamaño de bloque de datos al número de bloques de datos que tienen el primer tamaño de bloque de datos cuando dicho al menos un tamaño de bloque de datos se fusiona con el primer tamaño de bloque de datos. Para cada tamaño de bloque de datos, excepto el tamaño de bloque de datos más grande de la distribución, y para cada iteración, puede determinarse la holgura predicha que se produciría si dicho al menos un tamaño de bloque de datos se incorporase a un mayor tamaño de bloque de datos de la distribución determinada. El tamaño mayor de bloque de datos puede ser el siguiente tamaño de bloque de datos más grande de la distribución determinada, que no haya sido eliminado. Alternativamente, cualquier tamaño mayor de bloque de datos que no haya sido eliminado se selecciona como el tamaño mayor de bloque de datos.
El algoritmo de predicción de holgura puede comprender, para cada iteración, determinar cuál de los tamaños de bloques de datos de la distribución, que no haya sido eliminado, generaría la holgura más baja si se incorporase a un tamaño mayor de bloque de datos. Entonces, se selecciona el tamaño de bloque de datos determinado, para que sea uno de dicho al menos un tamaño de bloque de datos. El algoritmo de predicción de holgura puede comprender también, para cada iteración, la generación de un valor de predicción de holgura, indicativo de la holgura total predicha para los tamaños de bloques de datos de la distribución que no hayan sido eliminados.
El conjunto de bloques de datos puede referirse a bloques de datos para al menos un proceso predeterminado de un sistema que comprende la memoria. Alternativamente, el conjunto de bloques de datos se refiere a bloques de datos de al menos una señal. La distribución de tamaños de bloques de datos se puede determinar en tiempo de ejecución, por ejemplo, cuando los bloques de datos se escriben en una memoria. Entonces, el procedimiento de acuerdo a la invención se puede ejecutar en cualquier momento cuando se disponga de capacidad de procesamiento, o en respuesta a sucesos predeterminados, tales como la máxima lectura/escritura de memoria por unidad de tiempo.
El efecto, en al menos una posible distribución siguiente de tamaños de bloques de datos, de eliminar un cierto tamaño de bloque de datos de una distribución actual se puede comprobar antes de que sea eliminado cualquier
15
25
35
45
55
65
E04023881
31-07-2014
tamaño de bloque de datos en una distribución actual. Puede generarse cualquier número de iteraciones para determinar posibles distribuciones siguientes, y puede ajustarse de forma adaptable, tal como según el número de tamaños de bloques de datos de la distribución.
Se puede generar un valor de predicción de holgura para cada una de las distribuciones actuales y posibles de tamaños de bloques de datos. Entonces, uno de dichos al menos un tamaño de bloques de datos puede ser seleccionado entre la distribución actual de tamaños de bloques de datos, como el tamaño de bloque de datos que generaría la holgura más baja predicha, en total, en la iteración actual y la siguiente. Además, un segundo de dicho al menos un tamaño de bloque de datos puede ser seleccionado a partir de la siguiente iteración, y fusionado con otro tamaño de bloque de datos de la siguiente distribución de bloques de datos, en donde una pluralidad de bloques de datos puede ser fusionada en cada iteración.
El primer tamaño de bloque de datos, que ha de fusionarse con dicho al menos un tamaño de bloque de datos, puede ser el tamaño de bloque de datos que queda en la distribución, a continuación del más grande tamaño de bloque de datos de dicho al menos un tamaño de bloque de datos dentro de la distribución.
De acuerdo a un segundo aspecto de la invención, el objeto se logra mediante un dispositivo de procesamiento configurado para implementar el procedimiento de la invención. El dispositivo de procesamiento puede ser proporcionado en un dispositivo electrónico portátil que tenga una capacidad de procesamiento relativamente pequeña, o en un ordenador que tenga una capacidad de procesamiento mayor. El procesador también puede adaptarse para implementar el procedimiento de acuerdo a la invención en tiempo de ejecución.
Otras realizaciones de la invención se definen en las reivindicaciones dependientes.
Es una ventaja de la invención que los tamaños de las tramas de memoria no necesitan ser determinados manualmente, ni reducido el uso de los recursos de memoria. Además, si el procedimiento de acuerdo a la invención se utiliza en tiempo de ejecución, el tamaño de las tramas de memoria se puede ajustar de forma adaptable a medida que cambian los requisitos de memoria. Además, el ajuste de los tamaños de la trama de memoria a las necesidades reales ahorra recursos de memoria y, por lo tanto, también el coste. Los tamaños de las tramas de memoria se pueden cambiar más a menudo que si se hace manualmente. Además, es posible ajustar fácilmente los tamaños de las tramas de memoria para nuevas plataformas de sistema. Además, es una ventaja de la invención que la holgura resultante se reduce al mínimo, por lo que se pueden optimizar los requisitos de memoria.
Cabe destacar que el término "comprende / comprendiendo", cuando se usa en esta especificación, se interpreta como especificación de la presencia de características, enteros, etapas o componentes determinados, pero no excluye la presencia o adición de una o más características, enteros, etapas, componentes o grupos distintos de los mismos.
Breve Descripción de los Dibujos
Objetos, características y ventajas adicionales de la invención surgirán a partir de la siguiente descripción detallada de la invención, haciendo referencia a los dibujos adjuntos, en los que:
la Fig. 1 es una vista frontal de un teléfono móvil que tiene una memoria, que se configura de acuerdo al procedimiento de la invención; la Fig. 2 es un diagrama de bloques de ciertos componentes del dispositivo de acuerdo a la invención; la Fig. 3 es un diagrama de bloques de tres procesos que comprenden bloques de datos que tienen diferentes tamaños; las Figs. 4a a 4e son tablas que ilustran una primera realización de la reducción iterativa de tamaños de bloques de datos de acuerdo a la invención; las Figs. 5a a 5f son tablas que ilustran una segunda realización de la reducción iterativa de tamaños de bloques de datos de acuerdo a la invención; la Fig. 6 es un diagrama de bloques de determinados componentes de una segunda realización del dispositivo según la invención; y la Fig. 7 es un diagrama de flujo de una realización del procedimiento según la invención.
Descripción detallada de las realizaciones
La Fig. 1 ilustra un aparato electrónico en el que pueden implementarse el dispositivo y procedimiento de acuerdo a la invención. El aparato electrónico está incorporado en este ejemplo como, pero no limitado a, un teléfono 1 móvil. Como los recursos de memoria están restringidos en un dispositivo electrónico portátil, y el coste de la adición de una memoria más grande conduce a un aumento de los costes, la presente invención es útil en dispositivos electrónicos portátiles, en los que estos parámetros pueden ser priorizados, como en un terminal de radio móvil, un buscapersonas, un comunicador, un organizador electrónico, un teléfono inteligente o un asistente digital personal. Sin embargo, la invención también puede implementarse en o por un dispositivo electrónico fijo, tal como un ordenador. Más específicamente, el procedimiento puede ser implementado por cualquier procesador e
15
25
35
45
55
65
E04023881
31-07-2014
implementado para una memoria de otro dispositivo electrónico. Con propósitos ilustrativos, sólo se hará referencia a un teléfono 1 móvil de ahora en adelante.
El teléfono 1 móvil comprende varios circuitos para realizar varios procesos, tales como la comunicación con una red, por ejemplo, proporcionando/recibiendo datos de localización a/desde una estación base, funciones de reloj, exploración de señales entrantes, procesos de paginación, etc. En un teléfono 1 móvil, muchos procesos se ejecutan sólo para hacer que el teléfono 1 móvil funcione correctamente. Puede haber cientos de esos procesos en un teléfono móvil, por ejemplo, adaptado para la comunicación en una red WCDMA (Acceso Múltiple por División de Código de Banda Ancha, Wideband Code Division Multiple Access). Además de eso, los procesos pueden, aunque no necesariamente, ser añadidos, debido a los cambios de diseño del teléfono móvil y/o para características funcionales adicionales, tales como una cámara, un ordenador portátil, un listín telefónico y una función de reproductor de medios, del teléfono 1 móvil.
La Fig. 2 ilustra ciertos componentes del teléfono 1 móvil. Una interfaz 10 de entrada/salida, que comprende, por ejemplo, un receptor y un transmisor y circuitos para el procesamiento de señales de entrada/salida, está dispuesta para comunicarse con dispositivos electrónicos externos, por ejemplo, por una red inalámbrica o una red basada en cable, tal como una red móvil. Una memoria 11 no volátil y una RAM 12 (Memoria de Acceso Aleatorio, Random Access Memory) están conectadas a una CPU (Unidad Central de Procesamiento, Central Processing Unit) 13. Los bloques de datos referidos a los procesos pueden ser almacenados en la memoria 11 cuando la CPU 13 no ejecuta dichos procesos. Cuando se ejecutan los procesos, los bloques de datos pueden ser almacenados temporalmente en la RAM 12, que es más rápida que la memoria 11. La RAM 12 almacena temporalmente los bloques de datos referidos a los procesos, que van a ser, o han sido, procesados por la CPU 13. La RAM 12 puede almacenar bloques de datos para cada proceso en curso.
La RAM 12 también se puede adaptar para implementar cualquier número de almacenes temporales de señales, para el almacenamiento de bloques de datos de señales que se ejecutan en el sistema en el que la RAM 12 se implementa.
La RAM 12 puede estar adaptada para la asignación dinámica de memoria, en donde las tramas de memoria se asignan en tiempo real en un número predeterminado de diferentes tamaños de tramas de memoria, estando dichos tamaños pre-definidos. Los tamaños de las tramas de memoria se pueden determinar. Las tramas de memoria que se han asignado pueden desasignarse posteriormente y son, por ejemplo, gestionadas por medio de una lista de memoria, en la que se almacenan las direcciones de las tramas de memoria asignadas y sus tamaños. Si no hay ningún trama de memoria disponible entre las tramas de memoria liberadas que tienen un tamaño lo suficientemente grande como para almacenar un bloque de datos de un determinado tamaño, se asignará una nueva trama de memoria que tiene otro tamaño predefinido.
Los tamaños de las tramas de memoria se pueden determinar en un sistema informático distinto al dispositivo en el que se deberían utilizar las tramas de memoria. Alternativamente, los tamaños de las tramas de memoria se determinan dentro del sistema en el que deberían ser utilizados por la CPU 13.
Entonces, el procedimiento según la invención se puede ejecutar en tiempo real, tal como cuando se dispone de capacidad de procesamiento, en respuesta a sucesos predeterminados tales como cuando se alcanza un máximo de escritura/lectura a/desde la memoria por unidad de tiempo, o en intervalos de tiempo predeterminados. Para determinar los tamaños de las tramas de memoria de tal manera que se genere la menor holgura posible, se evalúan los requisitos de tamaño de almacenes temporales de al menos un proceso, es decir, se examina el tamaño de todos los bloques de datos imaginables relacionados con ese proceso. Cuantos más procesos de un sistema se evalúan en conjunto, más precisa será la determinación del tamaño de las tramas de memoria, por lo que se generará menos holgura en total cuando se ejecuta(n) el(los) proceso(s). En consecuencia, es una ventaja si se evalúan simultáneamente tantos procesos como sea posible, por ejemplo, todos los procesos que sean conocidos cuando se configura el sistema, incluyendo la memoria RAM 12.
La Fig. 3 ilustra tres procesos, el Proceso A, el Proceso B y el Proceso C. Cualquier número de procesos puede ser evaluado en conjunto. El Proceso A comprende seis bloques 101 a 106 de datos, el Proceso B comprende 7 bloques 111 a 117 de datos y el proceso C comprende 5 bloques 121 a 125 de datos. Cada bloque 101 a 106, 111 a 117, 121 a 125 de datos tiene un tamaño específico, es decir, comprende un número específico de bits de datos, indicado por un número en cada bloque 101 a 106, 111 a 117, 121 a 125 de datos. Para procesos en un teléfono 1 móvil, el número de tamaños de bloques de datos puede ser, por ejemplo, 300. Sin embargo, se puede usar cualquier número de tamaños de bloques de datos. Los bloques 101 a 106, 111 a 117, 121 a 125 de datos del Proceso A, del Proceso B y del Proceso C constituyen un conjunto de bloques de datos, el conjunto ABC, cuando se evalúan juntos. Alternativamente, los procesos se evalúan por separado, donde los bloques de datos de cada proceso son un conjunto independiente de bloques de datos.
De acuerdo al procedimiento de la invención, se determina una distribución del tamaño de bloque de datos para al menos un conjunto de bloques de datos, tal como el conjunto ABC. Se cuenta el número de bloques de datos que tienen un tamaño particular, para generar la distribución.
15
25
35
45
55
65
E04023881
31-07-2014
En la Fig. 4a se ilustra la distribución del conjunto ABC. En la primera columna, se ilustra el número de bloques de datos de un tamaño particular dentro del conjunto ABC; en la segunda columna, se ilustra el tamaño del bloque de datos; y en la tercera columna, se ilustra la holgura predicha si el tamaño de bloque de datos se fusionase con otro tamaño de bloque de datos dentro de la distribución. De acuerdo a una realización, la holgura predicha se puede definir de la siguiente manera:
(Holgura predicha para un bloque de datos que tiene el tamaño P de bloque de datos) = (Número de bloques de datos de tamaño P) x ((tamaño de bloque de datos que se va a fusionar con el tamaño P de bloque de datos) (tamaño P de bloque de datos)). El tamaño de bloque de datos a ser fusionado con el tamaño P de bloque de datos puede ser, por ejemplo, cualquier tamaño de bloque de datos a continuación, dentro de la distribución de los tamaños de bloques de datos. En esta realización, se utilizan solamente los tamaños de bloques de datos que sean efectivamente usados por los procesos. Esto es una ventaja, ya que generará menos holgura que si se utilizaran tamaños de bloques de datos no usados por el sistema.
Una realización para reducir el número de tamaños de bloques de datos de la distribución de tamaños de bloques de datos y, por lo tanto, determinar los tamaños de las tramas de memoria, se ilustra en las Figs. 4a a 4e. En esta realización, se supone que el número de tamaños de tramas de memoria es tres, pero puede ser cualquier número en otras realizaciones. El número de tamaños de bloques de datos del conjunto ABC es siete. El número de tamaños de bloques de datos se reduce fusionando de forma iterativa un primer tamaño de bloque de datos con un segundo tamaño de bloque de datos, de la distribución de tamaños de bloques de datos, hasta que el número de tamaños de bloques de datos de la distribución de bloques de datos se corresponda con el número de tamaños de las tramas de memoria. El segundo tamaño de bloque de datos es mayor que el primer tamaño de bloque de datos y el tamaño del bloque de datos fusionado corresponde al segundo tamaño de bloque de datos.
El tamaño de bloque de datos que se va a fusionar con otro tamaño de bloque de datos se determina en base a un algoritmo de predicción de holgura, como se explicará a continuación.
En primer lugar, se determina la distribución de tamaños de bloques de datos de un conjunto de bloques de datos. A continuación, el algoritmo de predicción de holgura se utiliza para encontrar candidatos para fusionar con otro tamaño de bloque de datos. De acuerdo a una realización del algoritmo de predicción de holgura, se selecciona el tamaño de bloque de datos que tiene la más baja holgura predicha, para fusionarlo con otro tamaño de bloque de datos, aunque se puede seleccionar cualquier tamaño de bloque de datos más grande, como se describirá a continuación. En la Fig. 4a, el tamaño 3 de bloque de datos generará la menor holgura si se fusiona con el tamaño 4 de bloque de datos. En las Figs. 4a a 4e, se registra la holgura total de todas las eliminaciones efectuadas. Sin embargo, esto no es necesario en todas las realizaciones de la invención.
La Fig. 4b ilustra la distribución restante de tamaños de bloques de datos después de que el tamaño 3 de bloque de datos se haya fusionado con el tamaño 4 de bloque de datos. El número de bloques de datos que tienen el primer tamaño de bloque de datos ha sido añadido al número de bloques de datos que tienen el segundo tamaño de bloque de datos, es decir, el número de bloques de datos que tienen el tamaño 3 de bloque de datos se ha añadido al número de bloques de datos que tienen el tamaño 4 de bloque de datos. Entonces, se calcula la nueva holgura predicha según lo descrito anteriormente para cada tamaño de bloque de datos. Para la distribución de los bloques de datos restantes de la Fig. 4b, se puede determinar que la fusión del tamaño 10 de bloque de datos con el tamaño 11 de bloque de datos generará la menor holgura en la siguiente iteración.
La Fig. 4c ilustra la distribución restante de tamaños de bloques de datos después de eliminar el tamaño 10 de bloque de datos y la próxima iteración de la eliminación de tamaños de bloques de datos. El tamaño 10 de bloque de datos se fusiona con el tamaño 11 de bloque de datos, donde el número de bloques de datos que tienen el tamaño 11 de bloque de datos dentro de la distribución de la Fig. 4c se ha incrementado en dos, hasta 5. Después de determinar la holgura predicha, se puede determinar que la fusión del tamaño 5 de bloque de datos con el tamaño 6 de bloque de datos generará la holgura mínima en la siguiente iteración.
La Fig. 4d ilustra la distribución restante de tamaños de bloques de datos después de eliminar el tamaño 5 de bloque de datos y la siguiente iteración de la eliminación de tamaños de bloques de datos. El tamaño 5 de bloque de datos se fusiona con el tamaño 6 de bloque de datos, donde el número de bloques de datos que tienen el tamaño 6 de bloque de datos dentro de la distribución de la Fig. 4d se ha aumentado en 3, hasta 6. Después de determinar la holgura predicha, se puede determinar que la fusión del tamaño 4 de bloque de datos con el tamaño 6 de bloque de datos generará la holgura mínima en la siguiente iteración.
La Fig. 4e ilustra la distribución restante de tamaños de bloques de datos después de eliminar el tamaño 4 de bloque de datos y la próxima iteración de la eliminación de tamaños de bloques de datos. El tamaño 4 de bloque de datos se fusiona con el tamaño 6 de bloque de datos, donde el número de bloques de datos que tienen el tamaño 6 de bloque de datos dentro de la distribución de la Fig. 4e se ha aumentado en 4, hasta 10. Ahora, la distribución restante de tamaños de bloques de datos comprende 3 tamaños diferentes, es decir, el mismo número que el número de tramas de memoria, en donde se acaba la iteración. Los tamaños de las tramas de memoria que se
15
25
35
45
55
65
E04023881
31-07-2014
utilizarán para el sistema en el que los procesos han de implementarse son determinados como los tamaños de los tamaños de bloques de datos de la distribución restante. En la realización de las Figs. 4a a 4e, se determina que los tamaños de las tramas de memoria son 6, 8 y 11.
Como puede verse en la realización de las Figs. 4a a 4e, el mayor tamaño de bloque de datos no se elimina, puesto que el tamaño del tamaño de bloque de datos eliminado es siempre menor que el tamaño de bloque de datos con el que se fusiona.
En la realización anterior, sólo se elimina un tamaño de bloque de datos en cada iteración. Sin embargo, más de un tamaño de bloque de datos, es decir, al menos uno, puede ser eliminado en cada iteración. Por ejemplo, el algoritmo de predicción de holgura puede implicar que los n tamaños de bloques de datos que tengan la más baja holgura predicha deberían ser incorporados a otro tamaño de bloque de datos, que sea mayor que dichos bloques de datos que tienen la más baja holgura predicha. Alternativamente, una pluralidad de tamaños de bloques de datos se fusionan con diferentes tamaños mayores de bloques de datos en cada iteración.
De acuerdo a otro algoritmo de predicción de holgura, se evalúa la consecuencia de la eliminación de un cierto tamaño de bloque de datos antes de que sea efectivamente seleccionado un tamaño de bloque de datos para fusionarlo con otro tamaño de bloque de datos. No siempre puede ser óptimo, para la holgura total o la holgura predicha de los tamaños de bloques de datos de una distribución siguiente, seleccionar, en la distribución actual, el tamaño de bloque de datos del que se predice que generará la menor holgura en la distribución actual. El número de distribuciones siguientes a evaluar se puede configurar, por ejemplo, en función de los recursos de procesamiento disponibles. Por lo tanto, en un dispositivo portátil, el número de posibles distribuciones, o iteraciones, siguientes a evaluar puede estar, por ejemplo, entre 1 y 3, mientras que en ordenador se pueden evaluar todas las siguientes distribuciones posibles. Además, si el procedimiento se ejecuta en tiempo real, el número de iteraciones siguientes a evaluar se puede establecer, por ejemplo, según el número de tamaños de bloques de datos de la distribución actual de bloques de datos, o según el número de tamaños de bloques de datos que hayan sido eliminados en total.
Las Figs. 5a a 5f ilustran el resultado de un algoritmo de predicción de holgura que considera la consecuencia en iteraciones futuras. La distribución inicial o actual de tamaños de bloques de datos se ilustra en la Fig. 5a. Se supone que el número de tamaños de las tramas de memoria es cuatro. Para cada posible distribución futura, se determina un valor de predicción de holgura (SPV) indicativo de cómo influiría la fusión de un cierto tamaño de bloque de datos con otro tamaño de bloque de datos en la futura holgura resultante. El valor de predicción de holgura puede ser la suma de la holgura predicha para todos los tamaños de bloques de datos, excepto el más grande tamaño de bloque de datos de la distribución de tamaños de bloques de datos, que quedarían si un cierto tamaño de bloque de datos fuera eliminado. Por lo tanto, antes de realizar cualquier eliminación en la distribución de la Fig. 5a, la consecuencia de la eliminación de un cierto tamaño de bloque de datos se determina de acuerdo al algoritmo de predicción de holgura. La Fig. 5b ilustra la consecuencia de la eliminación del tamaño 4 de bloque de datos en la distribución de la Fig. 5a, donde el valor de predicción de holgura es 22. La Fig. 5c ilustra la consecuencia de la eliminación del tamaño 5 de bloque de datos en la distribución de la Fig. 5a, donde el valor de predicción de holgura es 29. La Fig. 5d ilustra la consecuencia de la eliminación del tamaño 6 de bloque de datos en la distribución de la Fig. 5a, donde el valor de predicción de holgura es 31. La Fig. 5e ilustra la consecuencia de la eliminación del tamaño 8 de bloque de datos en la distribución de la Fig. 5a, donde el valor de predicción de holgura es 22. Los valores de predicción de holgura se resumen en la columna cuatro de la tabla de la Fig. 5a.
Como puede verse en las Figs. 5b a 5e, las distribuciones de las Figs. 5b y 5e tienen el valor más bajo de predicción de holgura, es decir, 22. Por lo tanto, de acuerdo a una realización del algoritmo de predicción de holgura, se podría seleccionar cualquiera de los tamaños 4 u 8 de bloque de datos para ser eliminado en la distribución actual de la Fig. 5a, es decir, el bloque de datos que generaría una distribución siguiente con el más bajo valor de predicción de holgura.
Sin embargo, la holgura más baja posible, resultante en la siguiente iteración, se produciría si el tamaño 5 de bloque de datos se eliminase de la distribución de la Fig. 5e, donde la holgura sería 3 en la siguiente iteración. Por lo tanto, en otra realización del algoritmo de predicción de holgura también se evalúa la holgura predicha para cada tamaño de bloque de datos, en al menos una posible iteración siguiente, donde el bloque de datos a eliminar en la distribución actual que generaría la holgura más baja en la siguiente distribución podría elegirse de acuerdo al algoritmo de predicción de holgura.
Tener la holgura más baja predicha en la siguiente distribución requeriría la eliminación del tamaño 8 de bloque de datos en la distribución de la Fig. 5a, lo que implicaría una holgura de 9, seguida por la eliminación del tamaño 5 de bloque de datos en la distribución de la Fig. 5e, donde la cantidad total de holgura sería 12. Sin embargo, la holgura resultante, comenzando por la distribución de la Fig. 5a y eliminando el tamaño 4 de bloque de datos, y luego eliminando el tamaño 6 de bloque de datos de la distribución de la Fig. 5b, generaría una holgura total de 4+6 =10. La holgura resultante, comenzando por la distribución de la Fig. 5a y eliminando el tamaño 5 de bloque de datos, y a continuación eliminando el tamaño 4 de bloque de datos de la distribución de la Fig. 5c, generaría una holgura total de 3+8=11. La holgura resultante, comenzando por la distribución de la Fig. 5a y eliminando el tamaño 6 de bloque de datos, y luego eliminando el tamaño 4 de bloque de datos de la distribución de la Fig. 5d, generaría una holgura
15
25
35
45
55
65
E04023881
31-07-2014
total de 6+4=10. Por lo tanto, en este caso, y comenzando por la distribución de tamaños de bloques de datos de la Fig. 5a, se puede determinar que, eliminando el tamaño 4 o 6 de bloque de datos de la distribución ilustrada en la Fig. 5a, y luego el tamaño 6 (Fig. 5b) o 4 (Fig. 5d) de bloque de datos de la siguiente distribución, generaría la menor holgura total, que en este caso sería 10. En consecuencia, de acuerdo a otra realización del algoritmo de predicción de holgura, el tamaño de bloque de datos a eliminar en la distribución actual sería el que, junto con una posible eliminación siguiente, generaría la menor holgura, por ejemplo, el tamaño 6 o 4 de bloque de datos en la Fig. 5a. Por lo tanto, puede verse que no siempre es óptimo eliminar el tamaño de bloque de datos que generaría la menor holgura en cada iteración.
De acuerdo a una realización alternativa más del algoritmo de predicción de holgura, se puede generar un valor ponderado de predicción de holgura (WSPV) para cada tamaño de bloque de datos de la distribución actual. Cada valor ponderado de predicción de holgura se basa en la holgura predicha de un cierto tamaño de bloque de datos de la distribución actual y el valor de predicción de holgura de la siguiente distribución, que se generaría si dicho cierto tamaño de bloque de datos fuera eliminado. El valor ponderado de predicción de holgura se muestra en la columna cinco de la Fig. 5a. El siguiente algoritmo se puede utilizar para el valor ponderado de predicción de holgura:
WSPV = c1 (tamaño P de bloque de datos de la holgura predicha) + c2 (valor de predicción de holgura resultante si el tamaño P de bloque de datos es eliminado), en donde c1 y c2 son factores de ponderación. C1 y c2 se pueden elegir de tal manera que la holgura predicha en la distribución actual se considere más importante que el valor asociado de predicción de holgura, por ejemplo, c1 = 0,75 y c2 = 0,25. Sin embargo, son posibles otros factores de ponderación y algoritmos de ponderación, y tienen que ser probados y evaluados para cada implementación particular. Dar a la holgura predicha un peso mayor que el valor de predicción de holgura tiene la ventaja de que el riesgo de tomar una decisión incorrecta en la distribución actual, que tiene impacto en eliminaciones futuras, se reduce.
En la realización ilustrada en las Figs. 5a a 5e, el tamaño de bloque de datos del que se predice que generará la holgura más baja no se elige para fusionarlo con otro tamaño de bloque de datos, por lo que la holgura total puede ser minimizada. En cambio, se selecciona el tamaño de bloque de datos que tiene el más bajo valor ponderado de predicción de holgura, para ser eliminado en la distribución de la Fig. 5a, donde se genera la distribución de la Fig. 5f, que corresponde a la distribución de la Fig. 5b. Como el número de tamaños de bloques de datos se corresponde con el número de tamaños de las tramas de memoria, se termina la eliminación y los tamaños de las tramas de memoria se determinan como los tamaños de bloques de datos de la Fig. 5f.
La evaluación de la consecuencia de la eliminación de un cierto tamaño de bloque de datos de una distribución actual se puede realizar para cualquier número de iteraciones futuras. Sin embargo, debido a la cantidad de datos a procesar en una implementación real, puede ser previsible hacer tales predicciones para una o dos futuras iteraciones posibles. En la realización ilustrada en las Figs. 5a a 5e se puede observar que el resultado óptimo se habría logrado mediante la elección del tamaño de bloque de datos, a eliminar en la distribución actual, que generaría una siguiente distribución que tendría el más bajo valor de predicción de holgura en una posible distribución siguiente, es decir, la distribución de la Fig. 5b que tiene un valor de predicción de holgura de 22, que se generaría mediante la eliminación del tamaño 4 de bloque de datos en la distribución de la Fig. 5a. El mismo resultado se conseguiría mediante la eliminación del tamaño de bloque de datos que tenga el más bajo valor ponderado de predicción de holgura.
Como se ha expuesto anteriormente, el procedimiento según la invención se refiere a un conjunto de bloques de datos para al menos un proceso predeterminado de un sistema basado en un ordenador o un dispositivo electrónico que tiene un procesador. Alternativamente, el procedimiento de acuerdo a la invención se aplica a al menos un conjunto de bloques de datos que se refieren a al menos una señal. Las señales pueden referirse a diversas funciones dentro del teléfono 1 móvil, y pueden ser procesadas por la CPU 13 y almacenadas temporalmente en la memoria RAM 12, que puede implementar un almacén temporal de señales. Una señal puede ser el intercambio de información entre los procesos, y puede ser un conjunto de bloques de datos almacenados en un almacén temporal de memoria, que puede ser implementado por la RAM 12. Los bloques de datos de la señal pueden ser comunicados entre los procesos en el sistema mediante la transferencia de la posesión de los bloques de datos almacenados en el almacén temporal de memoria, desde un primer a un segundo proceso. La principal diferencia entre una pila de procesos y una señal es el período de tiempo durante el cual los bloques de datos se almacenan en la memoria RAM 12. Los bloques de datos de una señal pueden tener una duración en la gama, por ejemplo, >5 µs y <1s, mientras que los bloques de datos de una pila de procesos pueden tener una duración de >1s. En cuanto a los procesos expuestos anteriormente, las señales comprenden bloques de datos de varios tamaños, que pueden o no corresponder a los tamaños de las tramas de memoria para la memoria RAM 12. Por lo tanto, puede recogerse y evaluarse un conjunto de bloques de datos con respecto a por lo menos una señal. Más específicamente, se puede determinar una distribución de tamaños de bloques de datos para al menos un conjunto de bloques de datos de al menos una señal, tal como cuando se escriben bloques de datos en la RAM 12.
La Fig. 6 ilustra una segunda realización de los componentes internos del terminal móvil según la invención. La realización según la Fig. 6 se corresponde básicamente con la realización de la Fig. 2. Por lo tanto, componentes similares han sido designados por los mismos números de referencia. La CPU 13 y la memoria 11 están conectadas con un medio para registrar el tamaño de los bloques de datos que se escriben en la RAM 12, o con una unidad 14
15
25
35
45
55
65
E04023881
31-07-2014
de registro de tamaño de bloque de datos. La unidad de registro de tamaño de bloque de datos está dispuesta para registrar el tamaño de los bloques de datos escritos en la RAM 12, y puede ser implementada como una unidad de software por la CPU 13, o por un componente autónomo de hardware, tal como una FPGA (Formación de Compuertas Programables en el Terreno, Field Programmable Gate Array), un ASIC (Circuito Integrado de Aplicación Específica, Application Specific Integrated Circuit) o un procesador.
La unidad 14 de registro de tamaño de bloque de datos puede estar adaptada para registrar el tamaño de bloque de datos, es decir, el número de bits del bloque de datos, de cada bloque de datos remitido a la RAM 12. Entonces, una distribución de tamaños de bloques de datos para los tamaños de los bloques de datos que se han escrito en la RAM 12 puede almacenarse en la memoria 11 y actualizarse continuamente. Alternativamente, la distribución de tamaños de bloques de datos para los bloques de datos escritos en la RAM 12 se almacena en una memoria integrada con la unidad 14 de registro de tamaño de bloque de datos. Además, la unidad 14 de registro de tamaño de bloque de datos también puede estar adaptada para registrar la asignación de las tramas de memoria, tal como el número de tramas de memoria asignadas, y el número de tramas de memoria asignadas que se están utilizando actualmente.
La CPU 13 puede evaluar la distribución de tamaños de bloques de datos, generada por la unidad 14 de registro de tamaño de bloque de datos. Alternativamente, un dispositivo de procesamiento provisto externamente al teléfono 1 móvil, tal como un ordenador, evalúa la distribución de tamaños de bloques de datos generada por la unidad 14 de registro de tamaño de bloque de datos.
La distribución de tamaños de bloques de datos generada por la unidad 14 de registro de tamaño de bloque de datos puede, por ejemplo, ser evaluada cuando un número predeterminado de bloques de datos se almacenan en la RAM 12, tal como cuando el número de bloques de datos almacenados en la RAM 12 es igual al número de tramas de memoria actualmente asignadas en la RAM 12. Entonces, la unidad 14 de registro de tamaño de bloque de datos puede alertar a la CPU 13 cuando se necesiten máximos locales de los recursos de memoria requeridos. Cuando se almacena el número predeterminado de bloques de datos en la memoria RAM 12, la CPU puede evaluar la distribución generada por la unidad 14 de registro de tamaño de bloque de datos, para determinar el tamaño de las tramas de memoria a asignar en el futuro. Sólo determinar el tamaño de las tramas de memoria en respuesta a alcanzar un número predeterminado de bloques de datos almacenados tiene la ventaja de que el procesamiento de datos es limitado. Sin embargo, alternativamente, el tamaño de las tramas de memoria se puede determinar en intervalos de tiempo predeterminados. Todavía como otra alternativa, el tamaño de las tramas de memoria puede generarse cuando se ha alcanzado un número predeterminado de transacciones (lecturas/escrituras) en la RAM 12 por unidad de tiempo.
La distribución de tamaños de bloques de datos, determinada para las señales, puede ser evaluada, y los tamaños de las tramas de memoria pueden ser determinados, de acuerdo a los mismos principios según lo descrito con referencia a las Figs. 4a a 4e y 5a a 5e.
La Fig. 7 es un diagrama de flujo de una realización del procedimiento según la invención. En una primera etapa 200, se determina una distribución de tamaños de bloques de datos para al menos un conjunto de bloques de datos. Entonces, se determina la holgura predicha para cada tamaño de bloque de datos de la distribución determinada de tamaños de bloques de datos, en la etapa 201. El valor de predicción de holgura para la distribución actual de tamaños de bloques de datos se determina en la etapa 202. En la etapa 203 se determina un efecto predicho para una distribución siguiente de tamaños de bloques de datos, que se generaría si se fusionan dos tamaños de datos de la distribución actual de tamaños de bloques de datos, por ejemplo, como se describe en relación con las Figs. 5a a 5e. Se puede generar el efecto para n distribuciones siguientes cualesquiera de tamaños de bloques de datos. El efecto puede ser, por ejemplo, determinar un valor de predicción de holgura para la distribución de tamaños de datos en la siguiente distribución, que resultaría si dos tamaños de bloques de datos se fusionaran en la distribución actual. En la etapa 204, al menos un tamaño de bloque de datos de la distribución actual, que se va a fusionar con un primer tamaño de bloque de datos de la distribución actual de tamaños de bloques de datos, es seleccionado basándose en el algoritmo de predicción de holgura. Dicho al menos un tamaño de bloque de datos y el primer tamaño de bloque de datos se pueden determinar por medio del algoritmo de predicción de holgura, por ejemplo, como se describe con respecto a las Figs. 4a a 4b o 5a a 5b. Sin embargo, los tamaños de bloques de datos que se van a fusionar también se pueden determinar de acuerdo a otros algoritmos de predicción de holgura, que tienen que ser probados en cada aplicación particular. El número de bloques de datos de dicho al menos un tamaño de bloque de datos se añade al número de bloques de datos del primer tamaño de bloque de datos en la etapa 205. Entonces, los tamaños de bloques de datos se fusionan en la etapa 206. En la etapa 207, se determina si el número de tamaños de las tramas de memoria corresponde o no al número de tamaños de bloques de datos restantes en la distribución. Si la respuesta en la etapa 207 es no, el procedimiento vuelve a la etapa 201, donde se elimina otro tamaño de bloque de datos de la distribución restante de tamaños de bloques de datos. Si la respuesta en la etapa 207 es sí, el procedimiento avanza a la etapa 208, en donde los tamaños de las tramas de memoria son determinadas como los tamaños de bloques de datos de la distribución restante de tamaños de bloques de datos.
Como se aprecia, no todas las etapas ilustrados en el diagrama de flujo de la Fig. 7 tienen que ejecutarse en todas las realizaciones del procedimiento de acuerdo a la invención. Por ejemplo, no es necesario llevar a cabo las etapas
E04023881
31-07-2014
202 y 203 si se debe implementar la realización ilustrada con referencia a las Figs. 4a a 4e. Además, también es posible eliminar más de un tamaño de bloque de datos en cada iteración. Cualquier número de bloques de datos se puede incorporar al mismo tamaño mayor de bloque de datos en una iteración, si se determina que se incorporarán de todos modos al tamaño mayor de bloque de datos en una siguiente iteración, lo cual, por ejemplo, puede 5 determinarse en base a las posibles distribuciones de tamaños de bloques de datos determinadas. Además, es posible fusionar un primer y un segundo, y un tercer y un cuarto tamaños de bloques de datos en una iteración. Por ejemplo, en la realización de las Figs. 5a a 5e, si el tamaño 8 de bloque de datos se incorpora al tamaño 11 de bloque de datos, se generará la distribución de la Fig. 5e. Entonces, se puede determinar que el tamaño de bloque de datos de la distribución generada que tiene la holgura predicha más baja debería fusionarse directamente con un 10 tamaño mayor de bloque de datos, es decir, que el tamaño 5 de bloque de datos debe fusionarse con el tamaño 6 de bloque de datos en la distribución de la Fig. 5e. Por lo tanto, tanto el tamaño 8 como el tamaño 5 de bloque de datos se eliminan en una iteración que comienza en la distribución de la Fig. 5a, por lo que el número de tamaños de bloques de datos de la distribución de la Fig. 5a se reduce en dos en una iteración. Como se entiende, se puede eliminar cualquier número de tamaños de bloques de datos en una iteración si se ha generado cualquier número de
15 distribuciones siguientes.
El procedimiento de acuerdo a la invención puede implementarse mediante software. Un producto de programa de ordenador, que comprende medios de código de programa de ordenador para ejecutar el procedimiento cuando dichos medios de código de programa de ordenador son ejecutados por un dispositivo electrónico que tiene
20 capacidades de programa de ordenador, puede implementar la invención. El dispositivo electrónico puede ser cualquier dispositivo de procesamiento, tal como un ordenador o un teléfono 1 móvil, según lo descrito anteriormente. Los medios de código de programa de ordenador pueden ser realizados en un medio legible por ordenador.
25 La presente invención se ha descrito anteriormente con referencia a realizaciones específicas. Sin embargo, son posibles otras realizaciones distintas a las descritas anteriormente dentro del alcance de la invención. Se pueden proporcionar etapas de procedimiento distintas a las descritas anteriormente, que realizan el procedimiento mediante hardware o software, dentro del alcance de la invención. Las diferentes características y etapas de la invención pueden combinarse en combinaciones distintas a las descritas. El alcance de la invención sólo está limitado por las
30 reivindicaciones de patente adjuntas.

Claims (17)

  1. 5
    15
    25
    35
    45
    55
    65
    E04023881
    31-07-2014
    REIVINDICACIONES
    1. Un procedimiento para determinar el tamaño de cada una de un número predeterminado de tramas de memoria de una memoria (12), donde dicha memoria (12) está adaptada para almacenar bloques de datos en tramas de datos, de un número predeterminado de diferentes tamaños a asignar, comprendiendo dicho procedimiento:
    determinar la distribución de tamaños de bloques de datos para al menos un conjunto de bloques de datos (101 a 106, 111 a 117, 121 a 125) de al menos un proceso o señal, teniendo cada bloque de datos de dicho conjunto de bloques de datos un tamaño particular, caracterizado por:
    eliminar iterativamente al menos un tamaño de bloque de datos de la distribución de tamaños de bloques de datos, hasta que el número de tamaños de bloques de datos de dicha distribución corresponda al número de tamaños del número predeterminado de tramas de memoria, mediante la realización iterativa de:
    1) calcular, para cada bloque de datos que tenga un tamaño P de bloque de datos, un valor de holgura predicha (PS) usando la fórmula: PS = (Numero de bloques de datos de tamaño P) x ((tamaño de bloque de datos a fusionar con el
    tamaño P de bloque de datos) – (tamaño P de bloque de datos)), donde el tamaño de bloque de datos a fusionar con el tamaño P de bloque de datos es mayor que el tamaño P de bloque de datos,
    2) seleccionar dos tamaños de bloques de datos a fusionar, usando uno cualquiera de los siguientes criterios,
    y que corresponden a: -el menor valor calculado de holgura predictiva (PS), -el menor valor predictivo de holgura (SPV), donde el valor predictivo de holgura es la suma de los
    valores calculados de holgura predicha (PS), excepto el valor calculado de holgura predicha para el tamaño de bloque de datos más grande de la distribución de tamaños de bloques de datos que quedaría si un cierto tamaño P de bloque de datos se eliminase, o
    -el menor valor ponderado de holgura predictiva (WSPV), calculado usando la siguiente fórmula: WSPV = c1 (PS) + c2 (SPV), donde c1 y c2 son factores de ponderación,
    3) fusionar los dos tamaños de bloques de datos correspondientes para generar un tamaño de bloque de datos fusionado, y
    4) determinar cada tamaño de las tramas de memoria como un tamaño de los tamaños de bloques de datos de dicha distribución, que quedan después de dicha eliminación, y de modo que los tamaños de las tramas de memoria sean diferentes.
  2. 2.
    El procedimiento según la reivindicación 1, que comprende, para cada iteración, añadir el número de bloques de datos que tienen dicho al menos un tamaño de bloque de datos, al número de bloques de datos que tienen el otro tamaño de bloque de datos, cuando dicho al menos un tamaño de bloque de datos se fusiona con dicho otro tamaño de bloque de datos.
  3. 3.
    El procedimiento según cualquiera de las reivindicaciones anteriores, que comprende, para cada tamaño de bloque de datos, excepto el tamaño de bloque de datos más grande de dicha distribución, y para cada iteración, determinar la holgura predicha que se produciría si dicho al menos un tamaño de bloque de datos se incorporase a un tamaño de bloque de datos más grande de dicha distribución determinada.
  4. 4.
    El procedimiento según la reivindicación 3, en el que el tamaño de bloque de datos más grande es el siguiente tamaño de bloque de datos más grande de dicha distribución determinada, que no haya sido eliminado.
  5. 5.
    El procedimiento según cualquiera de las reivindicaciones anteriores, en el que el algoritmo de predicción de holgura comprende, para cada iteración, determinar cuál de los tamaños de bloques de datos de dicha distribución, que no haya sido eliminado, generaría la holgura más baja si se incorporase a un tamaño de bloque de datos más grande, y seleccionar dicho tamaño de bloque de datos determinado para que sea uno de dicho al menos un tamaño de bloque de datos.
  6. 6.
    El procedimiento según cualquiera de las reivindicaciones anteriores, en el que el algoritmo de predicción de holgura comprende, para cada iteración, generar un valor de predicción de holgura indicativo de la holgura total predicha para los tamaños de bloques de datos de la distribución que no se hayan eliminado.
  7. 7.
    El procedimiento según cualquiera de las reivindicaciones anteriores, en el que el conjunto de bloques de datos se refiere a bloques de datos para al menos un proceso predeterminado de un sistema que comprende una memoria (12).
  8. 8.
    El procedimiento según cualquiera de las reivindicaciones 1 a 6, en el que el conjunto de bloques de datos se refiere a bloques de datos de al menos una señal.
  9. 9.
    El procedimiento según cualquiera de las reivindicaciones anteriores, que comprende determinar la distribución de tamaños de bloques de datos en tiempo de ejecución cuando los bloques de datos se escriben en la memoria
    11
    E04023881
    31-07-2014
    (12).
  10. 10. El procedimiento según cualquiera de las reivindicaciones anteriores, en el que el efecto, en al menos una posible distribución siguiente de tamaños de bloques de datos, de la eliminación de un cierto tamaño de bloque de
    5 datos de una distribución actual se comprueba antes de eliminar cualquier tamaño de bloque de datos en una distribución actual.
  11. 11. El procedimiento según la reivindicación 10, que comprende cambiar dinámicamente el número de posibles
    distribuciones siguientes de tamaños de bloques de datos para comprobar la independencia del número de tamaños 10 de bloques de datos de la distribución actual de tamaños de bloques de datos.
  12. 12. El procedimiento según la reivindicación 10 u 11, que comprende determinar cada posible distribución de tamaños de bloques de datos que pueda generarse sobre la base de la distribución actual de tamaños de bloques de datos, y generar un valor de predicción de holgura para cada una de las actuales y las posibles distribuciones de
    15 tamaños de bloques de datos.
  13. 13. El procedimiento según la reivindicación 12, que comprende seleccionar un primero de dichos al menos un tamaño de bloque de datos de la distribución actual de tamaños de bloques de datos, como el tamaño de bloque de datos que generaría la más baja holgura predicha en total, en la iteración actual y la siguiente.
    20
  14. 14. El procedimiento según cualquiera de las reivindicaciones 10 a 13, que comprende seleccionar un segundo de dichos al menos un tamaño de bloque de datos a partir de la siguiente iteración, y fusionar dicho segundo tamaño de bloque de datos con otro tamaño de bloque de datos de la siguiente distribución de bloques de datos.
    25 15. El procedimiento según cualquiera de las reivindicaciones anteriores, en el que el otro tamaño de bloque de datos es el tamaño de bloque de datos, que queda en la distribución, después del tamaño de bloque de datos más grande de dichos al menos un tamaño de bloques de datos dentro de dicha distribución.
  15. 16. Un dispositivo (13) de procesamiento configurado para determinar el tamaño de cada una de un número
    30 predeterminado de tramas de memoria de una memoria (12), según las etapas del procedimiento de cualquiera de las reivindicaciones 1 a 15.
  16. 17. Un producto de programa de ordenador que comprende medios de código de programa de ordenador, para ejecutar el procedimiento según cualquiera de las reivindicaciones 1 a 15 cuando dichos medios de código de
    35 programa de ordenador son ejecutados por un dispositivo electrónico que tiene capacidades de programa de ordenador.
  17. 18. El producto de programa de ordenador según la reivindicación 17, en el que los medios de código de programa
    de ordenador están realizados en un medio legible por ordenador. 40
    12
ES04023881.8T 2004-10-07 2004-10-07 Determinación de tamaños de tramas de memoria para la asignación dinámica de memoria limitando la fragmentación interna Active ES2487890T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP04023881.8A EP1645963B1 (en) 2004-10-07 2004-10-07 Determining sizes of memory frames for dynamic memory allocation limiting internal fragmentation

Publications (1)

Publication Number Publication Date
ES2487890T3 true ES2487890T3 (es) 2014-08-25

Family

ID=34926880

Family Applications (1)

Application Number Title Priority Date Filing Date
ES04023881.8T Active ES2487890T3 (es) 2004-10-07 2004-10-07 Determinación de tamaños de tramas de memoria para la asignación dinámica de memoria limitando la fragmentación interna

Country Status (5)

Country Link
US (1) US7689798B2 (es)
EP (1) EP1645963B1 (es)
JP (1) JP2008516320A (es)
ES (1) ES2487890T3 (es)
WO (1) WO2006037635A2 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
US20080181397A1 (en) * 2007-01-25 2008-07-31 John Wilson Dorminy Secure data transmission and storage using limited-domain functions
ES2919077T3 (es) 2011-04-13 2022-07-21 Ericsson Telefon Ab L M Método y dispositivo para la gestión de almacenador temporal flexible basada en categorías de equipos de usuario en una red de comunicaciones
EP3394747A1 (en) * 2015-12-21 2018-10-31 Telefonaktiebolaget LM Ericsson (publ) Priority trainer for many core processing system
US20170220284A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Block-level internal fragmentation reduction using a heuristic-based approach to allocate fine-grained blocks
CN112860444B (zh) * 2021-04-26 2021-08-20 腾讯科技(深圳)有限公司 内存调用信息的确定方法和装置、存储介质及电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3175371B2 (ja) * 1992-03-06 2001-06-11 三菱電機株式会社 データ記憶フォーマット変換方式及びその変換方法及びアクセス制御装置及びデータアクセス方法
JPH0698361A (ja) * 1992-09-14 1994-04-08 Fujitsu Ltd 呼処理データエリア管理システム
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages
AUPP638698A0 (en) * 1998-10-06 1998-10-29 Canon Kabushiki Kaisha Efficient memory allocator utilising a dual free-list structure
US6442661B1 (en) * 2000-02-29 2002-08-27 Quantum Corporation Self-tuning memory management for computer systems
US6985072B2 (en) * 2001-12-21 2006-01-10 Maxim Integrated Products, Inc. Apparatus and method for a low-rate data transmission mode over a power line
US6999439B2 (en) * 2002-01-31 2006-02-14 Mitsubishi Denki Kabushiki Kaisha Information transmission method, mobile communications system, base station and mobile station in which data size of identification data is reduced
US7286560B2 (en) * 2002-11-26 2007-10-23 Lucent Technologies Inc. Methods and apparatus for optimum packet aggregation in a communication network
US20050229139A1 (en) * 2004-03-30 2005-10-13 Intel Corporation Block-based processing in a packet-based reconfigurable architecture
WO2006027672A2 (en) * 2004-09-10 2006-03-16 Nortel Networks System and method for adaptive frame size management in a wireless multihop network

Also Published As

Publication number Publication date
EP1645963A1 (en) 2006-04-12
WO2006037635A3 (en) 2006-07-20
US20070247469A1 (en) 2007-10-25
JP2008516320A (ja) 2008-05-15
WO2006037635A2 (en) 2006-04-13
EP1645963B1 (en) 2014-05-14
US7689798B2 (en) 2010-03-30

Similar Documents

Publication Publication Date Title
CN110209348B (zh) 数据存储方法、装置、电子设备及存储介质
WO2022057420A1 (zh) 数据处理方法、装置、电子设备以及存储介质
WO2020119029A1 (zh) 分布式任务调度方法、系统及存储介质
CN111079917A (zh) 张量数据分块存取的方法及装置
ES2487890T3 (es) Determinación de tamaños de tramas de memoria para la asignación dinámica de memoria limitando la fragmentación interna
CN111245732A (zh) 一种流量控制方法、装置及设备
WO2019127230A1 (zh) 一种网络节点的唤醒方法及设备
CN111026697A (zh) 核间通信方法、系统、电子器件以及电子设备
Hasırcıoğlu et al. Bivariate hermitian polynomial coding for efficient distributed matrix multiplication
CN112799793A (zh) 调度方法及装置、电子设备和存储介质
CN105094742B (zh) 一种写数据的方法和设备
US20120204181A1 (en) Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor
CN111158907B (zh) 数据处理方法及装置、电子设备和存储介质
CN111369444A (zh) 一种图像缩放处理方法及装置
CN105988871B (zh) 一种远端内存分配方法、装置和系统
US9189382B2 (en) Noncontiguous representation of an array
CN116304212A (zh) 一种数据处理系统、方法、设备及存储介质
CN112416294B (zh) 处理器及其二进制累加方法和计算机可读介质
CN109981251B (zh) 随机数序列压缩方法、装置及电子设备
JP6236720B2 (ja) 記憶デバイスに対する書き込み方法および書き込み装置
KR101981628B1 (ko) 버스 통신 기반의 프레임 스케줄링 방법 및 그를 위한 장치
KR20160109733A (ko) 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법
CN112395216A (zh) 用于存储管理的方法、装置、设备和计算机可读存储介质
KR102285940B1 (ko) 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법
CN109582449B (zh) 风控业务系统中的风控任务分组方法、装置、计算机设备