ES2957432T3 - Método y dispositivo para representación en coma flotante con precisión variable - Google Patents

Método y dispositivo para representación en coma flotante con precisión variable Download PDF

Info

Publication number
ES2957432T3
ES2957432T3 ES20161056T ES20161056T ES2957432T3 ES 2957432 T3 ES2957432 T3 ES 2957432T3 ES 20161056 T ES20161056 T ES 20161056T ES 20161056 T ES20161056 T ES 20161056T ES 2957432 T3 ES2957432 T3 ES 2957432T3
Authority
ES
Spain
Prior art keywords
floating point
precision floating
variable precision
value
mbb
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
ES20161056T
Other languages
English (en)
Inventor
Andrea Bocco
De Dinechin Florent Dupont
Yves Durand
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.)
Institut National des Sciences Appliquees de Lyon
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Institut National des Sciences Appliquees de Lyon
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique CEA, Institut National des Sciences Appliquees de Lyon , Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Application granted granted Critical
Publication of ES2957432T3 publication Critical patent/ES2957432T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Oscillators With Electromechanical Resonators (AREA)

Abstract

La presente divulgación se refiere a un método para almacenar, mediante un circuito de carga y almacenamiento u otros medios de procesamiento, un valor de coma flotante de precisión variable en una dirección de memoria de una memoria, comprendiendo el método: reducir la longitud de bits del valor de coma flotante de precisión variable a no más que un límite de tamaño; y almacenar el valor de coma flotante de precisión variable en una de una pluralidad de zonas de almacenamiento en la memoria, teniendo cada una de la pluralidad de zonas de almacenamiento un espacio de almacenamiento igual o mayor que el límite de tamaño (MBB). (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y dispositivo para representación en coma flotante con precisión variable
Campo técnico
[0001]La presente divulgación se refiere en general al campo de los cálculos de coma flotante y, en particular, a un método y dispositivo para cálculos de precisión variable.
Antecedentes de la técnica
[0002]La norma IEEE 754-2008 define un formato de coma flotante (FP) de acuerdo con el que los números se representan usando un número fijo de bits, más comúnmente 16, 32, 64 o 128 bits, aunque también se soportan los números no binarios y los números mayores a 128 bits.
[0003]Un inconveniente de la representación FP IEEE 754-2008 es que, debido a la naturaleza discreta de las longitudes de bits, los cálculos basándose en números de FP pueden verse afectados por errores computacionales, tales como errores de redondeo, errores de cancelación y errores de absorción.
[0004]Los errores de cancelación ocurren cuando un número de FP que tiene un valor muy grande se resta de otro número de FP que tiene un valor muy grande, siendo los dos números de FP relativamente cercanos en valor entre sí, pero no iguales. En vista de la precisión asociada con estos números de FP grandes, la resta da como resultado cero.
[0005]Los errores de absorción ocurren cuando un número de FP que tiene un valor muy pequeño se suma o resta con/de un número de FP que tiene un valor muy grande y, en vista de la precisión asociada con el número de FP muy grande, la suma o resta no da como resultado ninguna modificación del número de FP grande.
[0006]La acumulación de errores de redondeo, cancelación y absorción puede conducir rápidamente a imprecisiones muy significativas en el cálculo.
[0007]El cálculo de precisión variable, también conocido en la técnica como precisión múltiple, precisión trans y cálculo de precisión controlada, proporciona un medio para obtener mejoras en términos de precisión cuando sea necesario, reduciendo de esta manera los errores de cálculo. El cálculo de precisión variable es particularmente relevante para resolver problemas que no son muy estables numéricamente, o cuando se desea una precisión particularmente alta en algunos puntos del cálculo.
[0008]Sin embargo, existen problemas técnicos con las soluciones de cálculo de precisión variable existentes, al menos en términos de ocupación de memoria. Por tanto, existe en la técnica la necesidad de un método y un dispositivo mejorados para realizar cálculos de precisión variable. La publicación de Richard P Brent.et al.titulada "Modern Computer Arithmetic (version 0.5.1)", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, n Y 14853, 27 de abril de 2010, analiza el uso de números enteros de precisión arbitraria para un exponente de un número de coma flotante.
Sumario de la invención
[0009]La invención se expone en el conjunto de reivindicaciones adjunto. Las reivindicaciones dependientes exponen realizaciones particulares.
[0010]Es un objeto de las realizaciones de la presente divulgación tratar una o más necesidades en la técnica anterior.
[0011]De acuerdo con una realización, se proporciona un método para almacenar, mediante un circuito de carga y almacenamiento u otros medios de procesamiento, un valor de coma flotante de precisión variable en una dirección de memoria de una memoria, comprendiendo el método: reducir la longitud de bits del valor de coma flotante de precisión variable a no mayor que un límite de tamaño; y almacenar el valor de coma flotante de precisión variable en una de una pluralidad de zonas de almacenamiento en la memoria, teniendo cada una de la pluralidad de zonas de almacenamiento un espacio de almacenamiento igual o mayor que el límite de tamaño. De acuerdo con la invención, el espacio de almacenamiento de cada una de la pluralidad de zonas de almacenamiento es del mismo tamaño.
[0012]En algunas realizaciones, la longitud de bits se reduce: determinando, comparando una longitud de bits del valor de coma flotante de precisión variable con el límite de tamaño, que la longitud de bits del valor de coma flotante de precisión variable supera el límite de tamaño y, a continuación, redondeando o truncando el valor de coma flotante de precisión variable; o convirtiendo el valor de coma flotante de precisión variable de un primer formato a un segundo formato, en donde en el segundo formato la longitud de bits está limitada a no mayor que el límite de tamaño.
[0013]De acuerdo con una realización, el límite de tamaño se almacena en un registro accesible por el circuito de carga y almacenamiento u otros medios de procesamiento, siendo el límite de tamaño programable.
[0014]De acuerdo con una realización, el método comprende, además, antes de reducir la longitud de bits, recibir por el circuito de carga y almacenamiento u otros medios de procesamiento una instrucción de carga que comprende uno o más bits que indican el límite de tamaño.
[0015]De acuerdo con una realización, el límite de tamaño es igual a un múltiplo de p bits, donde p es un número entero positivo, no siendo el límite de tamaño igual a una potencia de 2.
[0016]De acuerdo con una realización, el método comprende la etapa de comparar la longitud de bits del valor de coma flotante de precisión variable con el límite de tamaño, y antes de la comparación, convertir el valor de coma flotante de precisión variable de un tercer formato de coma flotante de precisión variable al segundo formato de coma flotante de precisión variable.
[0017]De acuerdo con una realización, el valor de coma flotante de precisión variable comprende un campo de exponente, un campo de mantisa y al menos un campo de tamaño que indica una longitud de bits absoluta o relativa del campo de exponente y/o campo de mantisa.
[0018]De acuerdo con una realización, reducir la longitud de bits del valor de coma flotante de precisión variable a no mayor que el límite de tamaño comprende modificar el al menos un campo de tamaño en vista de la longitud de bits reducida del valor de coma flotante de precisión variable.
[0019]De acuerdo con una realización, el al menos un campo de tamaño incluye un campo de tamaño de exponente y un campo de tamaño de mantisa.
[0020]De acuerdo con una realización, si una longitud de bits de al menos un campo de tamaño puede indicar una longitud de bits del campo de exponente y/o del campo de mantisa que superaría el límite de tamaño, la etapa de reducir la longitud de bits comprende establecer el al menos un campo de tamaño a un valor máximo para codificar al menos un tipo de valor de FP especial.
[0021]De acuerdo con una realización, cada zona de almacenamiento comprende una pluralidad de subporciones, en donde almacenar el valor de coma flotante de precisión variable comprende almacenar el al menos un campo de tamaño del valor de coma flotante de precisión variable en una o más primeras subporciones de la zona de almacenamiento.
[0022]De acuerdo con un aspecto adicional, se proporciona un método para leer, desde una dirección de memoria en una memoria, un valor de coma flotante de precisión variable almacenado de acuerdo con el método anterior, que comprende: leer la una o más primeras subporciones; identificar, basándose en el al menos un campo de tamaño, una o más subporciones no vacías adicionales de la zona de almacenamiento; y leer la una o más subporciones no vacías adicionales de la zona de almacenamiento.
[0023]De acuerdo con una realización, identificar la una o más subporciones no vacías adicionales comprende además identificar al menos una subporción vacía adicional de la zona de almacenamiento, no leyéndose la al menos una subporción adicional vacía.
[0024]De acuerdo con un aspecto adicional, se proporciona un método para leer, desde una dirección de memoria en una memoria, uno o más valores de coma flotante de precisión variable almacenados de acuerdo con el método anterior, que comprende: leer valores de bits de una o más zonas de almacenamiento de la memoria; y extraer de los valores de bits leídos uno o más valores de coma flotante de precisión variable identificados basándose en el al menos un campo de tamaño de cada valor.
[0025]De acuerdo con un aspecto adicional, se proporciona un método para resolver un problema científico usando al menos un procesador de coma flotante de precisión variable, comprendiendo el método: generar al menos un resultado intermedio representado por un valor de coma flotante de precisión variable de M bits; y almacenar el valor de coma flotante de precisión variable de M bits en una memoria de acuerdo con el método anterior.
[0026]De acuerdo con un aspecto adicional, se proporciona un sistema informático que comprende un procesador de coma flotante de precisión variable configurado para generar valores de coma flotante de precisión variable, estando configurado el procesador de FP de VP y/o un circuito de carga y almacenamiento acoplado al procesador de FP de VP para almacenar un valor de coma flotante de precisión variable en una memoria: reduciendo la longitud de bits del valor de coma flotante de precisión variable a no mayor que un límite de tamaño; y almacenar el valor de coma flotante de precisión variable en una de una pluralidad de zonas de almacenamiento en la memoria, teniendo cada una de la pluralidad de zonas de almacenamiento un espacio de almacenamiento igual o mayor que el límite de tamaño.
[0027]De acuerdo con una realización, el procesador de FP de VP, y/o el circuito de carga y almacenamiento acoplado al procesador de FP de VP, están configurados para reducir la longitud de bits del valor de coma flotante de precisión variable: determinando, comparando una longitud de bits del valor de coma flotante de precisión variable con el límite de tamaño, que la longitud de bits del valor de coma flotante de precisión variable supera el límite de tamaño y, a continuación, redondeando o truncando el valor de coma flotante de precisión variable; o convirtiendo el valor de coma flotante de precisión variable de un primer formato a un segundo formato, en donde en el segundo formato la longitud de bits está limitada a no mayor que el límite de tamaño.
[0028] De acuerdo con una realización, el sistema informático comprende además un registro que almacena una indicación del límite de tamaño, siendo el registro accesible y programable por el procesador de coma flotante de precisión variable y/o por el circuito de carga y almacenamiento.
[0029] De acuerdo con una realización, el procesador de FP de VP, y/o un circuito de carga y almacenamiento acoplado al procesador de FP de VP, está configurado para almacenar el valor de coma flotante de precisión variable en la memoria basándose en una instrucción de almacenamiento, en donde la instrucción de almacenamiento comprende uno o más bits que indican el límite de tamaño.
[0030] De acuerdo con una realización, el procesador de FP de VP se implementa: como parte de una unidad de procesamiento de gráficos; o como parte de una unidad de coma flotante; o como parte de un dispositivo de procesamiento principal acoplado a una unidad de coma flotante.
Breve descripción de los dibujos
[0031] Las características y ventajas anteriores, así como otras, se describirán en detalle en la siguiente descripción de realizaciones específicas proporcionadas a modo de ilustración y sin limitación con referencia a los dibujos adjuntos, en los que:
La Figura 1 ilustra esquemáticamente un sistema informático de precisión variable de acuerdo con una realización ilustrativa;
La Figura 2 representa el formato de número de coma flotante de precisión variable UNUM;
La Figura 3 es un gráfico que representa un enfoque iterativo para resolver un problema científico;
La Figura 4 es un diagrama de flujo que muestra un ejemplo de un enfoque iterativo para converger hacia una solución a un problema científico;
La Figura 5 representa direcciones de memoria de una memoria que almacena números de coma flotante en donde cada número tiene una ocupación de memoria variable;
La Figura 6 ilustra esquemáticamente un sistema informático de precisión variable de acuerdo con una realización ilustrativa de la presente divulgación;
La Figura 7 representa un ejemplo de un formato de número de coma flotante de precisión variable que proporciona un formato de memoria limitada de acuerdo con una realización ilustrativa de la presente divulgación;
La Figura 8 representa direcciones de memoria de una memoria que almacena números de coma flotante en donde cada número está en un formato de memoria limitada de acuerdo con una realización ilustrativa de la presente divulgación;
La Figura 9 es un diagrama de flujo que ilustra operaciones en un método para almacenar un número de coma flotante respetando un formato de memoria limitada a una dirección de memoria de acuerdo con una realización ilustrativa de la presente divulgación;
La Figura 10 es un diagrama de flujo que ilustra operaciones en un método de lectura de un número de coma flotante respetando un formato de memoria limitada a partir de una dirección de memoria de acuerdo con una realización ilustrativa de la presente divulgación;
La Figura 11 representa un ejemplo de un conjunto de formatos para una pluralidad de tipos de números de FP respetando un formato de memoria limitada de acuerdo con una realización ilustrativa de la presente divulgación;
La Figura 12 representa un ejemplo de un conjunto de formatos para una pluralidad de tipos de números de FP respetando un formato de memoria limitada de acuerdo con una realización ilustrativa adicional de la presente divulgación;
La Figura 13 representa un ejemplo de un conjunto de formatos para una pluralidad de tipos de números de FP respetando un formato de memoria limitada de acuerdo con una realización ilustrativa adicional de la presente divulgación; y
La Figura 14 representa un ejemplo de un conjunto de formatos para una pluralidad de tipos de números de FP respetando un formato de memoria limitada de acuerdo con otra realización ilustrativa más de la presente divulgación.
Descripción de realizaciones
[0032] Se han designado características similares por referencias similares en las diversas figuras. En particular, las características estructurales y/o funcionales que son comunes entre las diversas realizaciones pueden tener las mismas referencias y pueden presentar propiedades estructurales, dimensionales y materiales idénticas.
[0033] A menos que se indique lo contrario, cuando se hace referencia a dos elementos conectados entre sí, esto significa una conexión directa sin ningún elemento intermedio que no sean conductores, y cuando se hace referencia a dos elementos vinculados o acoplados entre sí, esto significa que estos dos elementos pueden conectarse o pueden estar vinculados o acoplados a través de uno o más otros elementos.
[0034] A menos que se especifique lo contrario, las expresiones "alrededor de", "aproximadamente", "sustancialmente" y "en el orden de" significan dentro del 10 % y preferentemente dentro del 5 %.
[0035] En la siguiente memoria descriptiva, se considerará que los siguientes términos tienen los siguientes significados:
- número o valor de coma flotante (FP): un número expresado en forma de exponente e y mantisa o fracción f; - un formato de FP: un conjunto definido de campos en un orden definido usado para representar un número de FP, y que tiene al menos un campo que representa el exponente e, y otro campo que representa la mantisa o fracción f;
- formato de FP de precisión de variable autodescriptiva (VP): cualquier formato de número de coma flotante que tiene un campo de exponente, un campo de mantisa y al menos un campo de tamaño que indica el tamaño del campo de exponente y/o del campo de mantisa. Por ejemplo, el campo de tamaño comprende bits que se usan para expresar la longitud del campo de exponente, la longitud del campo de mantisa, una relación de bits entre los campos de exponente y mantisa, o una longitud combinada de los campos de exponente y mantisa o del número de FP completo. El formato de FP de VP descrito en el presente documento comprende opcionalmente un bit de signo, un bit de incertidumbre y un campo de tamaño de exponente que indica el tamaño del exponente y un campo de tamaño de mantisa que indica el tamaño de la mantisa;
- formato de memoria limitada: un formato de FP de VP autodescriptivo como se ha definido anteriormente, y para el que ningún valor supera una longitud máxima de bits definida por un presupuesto límite máximo o un presupuesto máximo de bytes (MBB), descrito con más detalle a continuación; y
- tipo de valor de FP especial: cualquier valor indefinido o no representable, por ejemplo, valores que no son números (NaN), que están en el infinito casi positivo o negativo, o que definen intervalos limitados por el infinito casi positivo o negativo.
[0036] La Figura 1 ilustra esquemáticamente un sistema informático de precisión variable 100 que comprende una unidad de coma flotante (FPU) 102 que comprende uno o más procesadores bajo el control de instrucciones almacenadas en una memoria de instrucciones (MEMORIA DE INSTRUCCIONES) 104. La FPU 102, por ejemplo, comprende una memoria de borrador (MEMORIA DE BORRADOR) 106 y está acoplada a una memoria adicional 108, que es, por ejemplo, una memoria caché (CACHÉ).
[0037] La memoria de borrador 106 es, por ejemplo, una memoria que almacena números de FP de precisión variable relativamente precisos, por ejemplo, de hasta 256 bits cada uno. Esta memoria 106 se implementa mediante registros, mediante una matriz de memoria relativamente pequeña o, en realizaciones no reivindicadas, mediante cualquier otro tipo de memoria que tiene tiempos de acceso relativamente rápidos. La memoria caché 108 es, por ejemplo, una memoria mayor que la memoria de borrador 106, pero tiene tiempos de acceso más largos que la memoria de borrador 106.
[0038] La Figura 2 representa un formato de número de FP de VP conocido en la técnica como el formato de número universal (UNUM).
[0039] El formato UNUM comprende seis campos etiquetados 201 a 206 en la Figura 2. El campo 201 contiene un valor s que indica el signo del número, por ejemplo, usando un único bit, el campo 202 contiene un exponente e del número, el campo 203 contiene una fracción o mantisa f del número, el campo 204 contiene un bit de incertidumbre u, o ubit, asociado con el número, el campo 205 contiene un tamaño de exponente es-1, y el campo 206 contiene una fracción o tamaño de mantisa fs-1. Por lo tanto, el formato UNUM es un formato autodescriptivo en el que la información relativa al número de bits que forman el exponente y el número de bits que forman la mantisa, según se define en los campos 205 y 206, es dinámica y está contenida dentro del valor de FP de VP, a diferencia del formato definido por la norma IEEE 754. Por ejemplo, estos tamaños pueden personalizarse basándose en los requisitos de una aplicación y/o usuario.
[0040]Cuando se expresa en bits, un valor en formato UNUM se puede decodificar de acuerdo con la siguiente ecuación:
[Cálculo 1]
x = (-1)s2e-(2es“1“ i)+(i “ Soαe[e>0]) ■ (Boole[e >0] ^ )
donde s es el bit de signo, e es el exponente, es es el tamaño del exponente en bits, f es la mantisa, fs es el tamaño de la mantisa en bits y Boole[e>0] es una función booleana de forma Boole [prueba] que devuelve 1 cuando la prueba es verdadera y 0 de lo contrario. La fracción f/(2fs) está, por ejemplo, en el intervalo [0,1), en otras palabras, mayor o igual que cero y menor que 1.
[0041]El formato UNUM proporciona una representación de precisión variable que tiene ventajas para una diversidad de tipos de cálculos científicos, cuyos ejemplos se describirán ahora con referencia a las Figuras 3 y 4.
[0042]La Figura 3 es un gráfico que representa un enfoque iterativo para resolver un problema científico. Por ejemplo, se desea encontrar x que resuelve la relación Ax=b, donde x es un vector de n elementos de valores x<1>a xne, b es un vector de n elementos de valores b<1>a bn, y A es una matriz de n por n que proporciona los datos de entrada. En un ejemplo, n es relativamente grande, por ejemplo, igual a 500.000 o mayor, lo que implica alrededor de un millón o más de grados de libertad (DoF). El eje y en la Figura 3, por ejemplo, representa:
[Cálculo 2]
llAx- b||
y el eje x, por ejemplo, presenta:
[Cálculo 3]
M
[0043]Una curva 302 en la Figura 3 representa la convergencia del enfoque iterativo, que alcanza a cero cuando x es tal que Ax=b.
[0044]El cálculo de precisión variable es particularmente beneficioso para el tipo de cálculo de iteración representado en la Figura 3. De hecho, el enfoque iterativo representado en la Figura 3 implica comenzar en un punto de la curva 302, tal como el etiquetado 304, asociado con un valor relativamente alto de x. El valor de Ax-b en este punto de inicio, por ejemplo, tiene una magnitud relativamente alta y, por lo tanto, debería representarse usando un exponente relativamente largo, mientras que la fracción tiene menos importancia. A continuación, se modifican los valores de x para moverse a lo largo de la curva 302, y a medida que la solución converge hacia un valor final de x, el valor de Ax-b se hará cada vez más pequeño hasta llegar a cero con la precisión dada del valor de FP de VP correspondiente. Para una precisión razonable, estos valores cercanos a la convergencia deben representarse usando una fracción relativamente larga, mientras que el exponente de estos valores puede ser bajo. Por lo tanto, sería beneficioso representar valores para un enfoque iterativo de este tipo con precisión variable, en otras palabras, en el que el número de bits que representan el exponente y la fracción puede cambiar durante el curso del cálculo, desde un exponente relativamente grande y una fracción pequeña al inicio del algoritmo a un exponente relativamente pequeño y una fracción grande hacia el final del algoritmo.
[0045]La Figura 4 es un diagrama de flujo que muestra un ejemplo de un método iterativo para converger hacia una solución a un problema científico, conduciendo este método, por ejemplo, a la curva 302 de la Figura 3. En particular, el ejemplo de la Figura 4 se basa en un solucionador Jacobi simplificado que usa varios bucles anidados.
[0046]En una operación 401, se establece un valor de iteración K, por ejemplo, a cero.
[0047]En una operación 402 después de la operación 401, se establece una variable a, por ejemplo, a cero, y se establece una variable j, por ejemplo, a 1.
[0048]En una operación 403 después de la operación 402, se determina si las variables j e y no son iguales. Si no son iguales, se realiza una operación 404, en la que la variable a se incrementa en un incremento igual a a¡j^xj(K), donde ay es un valor en la matriz de entrada A en la columna i y la fila j, y xj es el j-ésimo valor en el vector x.
[0049]Después de la operación 404, o después de la operación 403 si las variables i y j son iguales, se realiza una operación 405 en la que se determina si j es igual a n, en otras palabras, si se ha alcanzado la última fila de la matriz de entrada A. Si no, se incrementa j en una operación 406 y a continuación se repite la operación 403. Sin embargo, si j es igual a n, la siguiente operación es 407.
[0050]En la operación 407, se calcula un valor Xi para la iteración K+1 como una función del valor actual de a, es decir, Xi(K+1)=f(a).
[0051]Después de la operación 407, en una operación 408, se determina si la variable i es igual a n, en otras palabras, si se ha alcanzado la última columna de la matriz de entrada A. Si no, se incrementa i en una operación 409 y a continuación se repiten las operaciones 402 a 407.
[0052]Si en la operación 408 la variable i es igual a n, a continuación, en una operación 410, se determina si se ha alcanzado o no la convergencia, basándose en, por ejemplo, un cálculo de la norma del residuo. Si no, en una operación 411, se incrementa la variable K y se restablece la variable i a 1 y, a continuación, el método vuelve a la operación 402. Una vez que se determina en la operación 410 que se ha alcanzado la convergencia, el método, por ejemplo, finaliza en una operación 412.
[0053]De acuerdo con algunas realizaciones, los valores acumulados de la variable a durante el bucle interno formado por las operaciones 403 a 406 de la Figura 4 se almacenan en una memoria de borrador. Sin embargo, los valores de Xi, por ejemplo, ocupan una cantidad relativamente grande de memoria y, por lo tanto, se almacenan, por ejemplo, en la caché.
[0054]La Figura 5 representa direcciones de memoria de una memoria 500 que almacena números de coma flotante en un formato de precisión variable autodescriptivo tal como el formato UNUM descrito anteriormente en relación con la Figura 2. Por ejemplo, los valores almacenados en la memoria 500 corresponden a cualquier dato intermedio que sea demasiado grande para mantenerse en la memoria de borrador y, por lo tanto, se almacenan en la memoria principal. Por ejemplo, en el caso particular de la Figura 4, tales datos intermedios podrían corresponder a los valores de Xi generados en la operación 407. En vista del formato de precisión variable y, por lo tanto, a la longitud de bits variable de los valores, los valores almacenados en la memoria tienen una ocupación de memoria variable. Los valores están representados, por ejemplo, por los números U1, U2, etc., en el formato UNUM que tiene un bit de signo, un exponente y una fracción representados por partes densamente sombreadas en la Figura 5, y los parámetros u, es-1 y fs-1 representados por porciones ligeramente sombreadas en la Figura 5. La longitud de cada valor UNUM en la memoria está representada por una flecha discontinua. Las direcciones @0 a @14 se representan en la Figura 5, teniendo las direcciones una etapa de dirección de un byte de ocho bits.
[0055]Los valores UMUM son de longitud variable y todos tienen más de un byte. Los valores se almacenan en la memoria uno tras otro sin espacios vacíos entre valores adyacentes. Esto tiene ventajas en términos de eficiencia en de uso de memoria. Sin embargo, los accesos afines a posiciones aleatorias en la matriz de memoria son difíciles. Un acceso a memoria afín implica que la dirección a la que se accederá es predecible, en otras palabras, que la dirección de un valor dado s[n] puede determinarse mediante una función lineal de n, de la forma an+p. Por ejemplo, para acceder al valor<u>4 en la Figura 5, se deben leer las direcciones @9 a @14, pero esta información de dirección únicamente se puede obtener leyendo en primer lugar cada uno de los valores U1 a U3 para encontrar las longitudes de bits de cada uno de estos valores. Esto impone una restricción significativa a cualquier operación de lectura de este tipo.
[0056]La capacidad de realizar accesos afines a la memoria es importante en muchas aplicaciones. Por ejemplo, con referencia al método iterativo de la Figura 4, acceder a los valores Xj en la operación 404, o actualizar los valores Xi en la operación 407, implican accesos a memoria afín.
[0057]Una dificultad adicional con el almacenamiento de valores de FP usando ocupaciones variables como se representa en la Figura 5 es que sobrescribir un valor con un nuevo valor de mayor longitud de bits se vuelve complicado. Por ejemplo, para actualizar el valor U2 con un valor que tenga una longitud de bits mayor, también tendrían que reescribirse los valores U3 y U4, y cualquier valor posterior en la memoria.
[0058]La Figura 6 ilustra esquemáticamente un sistema informático de precisión variable 600 de acuerdo con una realización ilustrativa de la presente divulgación.
[0059]El sistema 600, por ejemplo, comprende una pluralidad de piezas, representándose dos piezas 602 y 602' en la Figura 6, aunque podría haber muchas más. Cada pieza en la Figura 6 corresponde a un módulo de procesamiento al que se le pueden asignar tareas computacionales en relación con un cálculo complejo, que puede implicar, por ejemplo, el uso de una única pieza, o de dos o más piezas que operan en paralelo.
[0060]Cada pieza 602, 602', por ejemplo, comprende un procesador principal (P) 603 y un coprocesador de coma flotante de precisión variable (CO-PROc de Fp de VP) 604, que, por ejemplo, están acoplados entre sí. El coprocesador de FP de VP 604, por ejemplo, comprende una memoria de borrador (MEMORIA d E BORRADOR) 606. En algunas realizaciones, la memoria de borrador 606 se implementa, por ejemplo, mediante 16, 32, 64 o más registros, almacenando cada uno un valor de FP que tiene una mantisa de, por ejemplo, hasta 512 bits de longitud o mayor. La memoria de borrador 606, por ejemplo, tiene tiempos de acceso relativamente rápidos. Por ejemplo, en algunas realizaciones, los accesos a la memoria de la memoria de borrador implican hasta diez ciclos de reloj del coprocesador 604.
[0061]En algunas realizaciones, cada pieza 602, 602' comprende una unidad de coma flotante (FPU) 608 acoplada al procesador principal 603 que permite, por ejemplo, cálculos de coma flotante basándose en valores de FP convencionales que respetan el formato de FP IEEE 754. Por ejemplo, en algunas realizaciones, la FPU 608 se usa para cálculos que no requieren altos niveles de precisión, siendo la ejecución de tales cálculos relativamente eficiente en energía y potencia cuando se realiza mediante la FPU 608.
[0062]El procesador principal 603 de cada pieza 602, 602' está acoplado, por ejemplo, a un circuito 610 de carga y almacenamiento (L y S), que carga valores de una o más memorias caché ($) 612 y almacena valores en la una o más memorias caché 612. La una o más memorias caché 612, por ejemplo, corresponden al nivel de caché L1 local para cada pieza. Adicionalmente o como alternativa, la caché 612 puede corresponder a una memoria caché que se comparte por una agrupación de dos o más piezas, tal como caché L2, caché L3 y/o una caché de nivel inferior hasta la LLC (caché de último nivel), que es la última caché antes de abandonar el chip.
[0063]El coprocesador de FP de VP 604 de cada pieza también está acoplado, por ejemplo, a un circuito de carga y almacenamiento (L y S) 614 que, a su vez, está acoplado a la una o más memorias caché 612. El circuito 614 también está acoplado, por ejemplo, a un registro de sistema 616 que almacena un valor MBB que indica un presupuesto de límite máximo o un presupuesto máximo de bytes, como se describirá con más detalle a continuación.
[0064]Mientras que en la Figura 6 cada pieza 602, 602' comprende un procesador principal 603 y el procesador de Fp de VP 604 implementado como un coprocesador, en realizaciones alternativas no reivindicadas las funcionalidades del procesador de FP de VP 604, así como las funcionalidades de los circuitos 614 y 616, podría implementarse como una GPU (unidad de procesamiento de gráficos), como una GPGPU (cálculo de propósito general implementado por una GPU), dentro de la FPU 608, dentro del procesador principal 603 y/o dentro del circuito 610. Además, los circuitos 608 y 610 podrían implementarse dentro del procesador principal 603.
[0065]Además, en realizaciones alternativas, el circuito de carga y almacenamiento 614 y el registro 616 podrían implementarse dentro del coprocesador de FP de VP 604 en hardware y/o emularse al menos parcialmente mediante software o firmware ejecutado por el coprocesador 604. Además, en algunas realizaciones, se podría omitir el registro 616 y proporcionar el valor de MBB al circuito de carga y almacenamiento 614 en una instrucción de almacenamiento, generada, por ejemplo, por el coprocesador 604. Por ejemplo, la instrucción de almacenamiento comprende, en un campo especializado, uno o más bits que indican el límite de tamaño de MBB. Como alternativa, el límite de tamaño podría codificarse con la dirección de la instrucción de almacenamiento. Por ejemplo, la instrucción de almacenamiento indica una dirección virtual y, si la dirección virtual cae dentro de un primer intervalo de direcciones, esto implica un primer límite de tamaño y, si la dirección virtual cae dentro de un segundo intervalo de direcciones, esto implica un segundo límite de tamaño diferente al primer límite de tamaño.
[0066]La memoria o memorias caché 612 de cada pieza 602, 602' están acopladas, por ejemplo, a una memoria externa (MEMORIA EXTERNA (RAM)) 618, que se implementa, por ejemplo, mediante una memoria de acceso aleatorio (RAM), tal como una matriz DRAM. Los accesos a la memoria externa 618 y a la caché 612 son, por ejemplo, relativamente lentos con respecto a los accesos a la memoria de borrador 606, que, por ejemplo, tardan hasta 10 ciclos de reloj. Por ejemplo, los accesos a memoria a la caché 612 implican entre 20 y 100 ciclos de reloj, y los accesos a memoria a la memoria externa 618 implican más de 100 y hasta 1000 ciclos.
[0067]En operación, el coprocesador de FP de VP 604 es, por ejemplo, un procesador que puede realizar cálculos de coma flotante sobre valores de datos relativamente grandes de precisión variable. En algunas realizaciones, el coprocesador 604 podría ser un procesador UNUM que opera directamente en valores en el formato UNUM. Como alternativa, el coprocesador 604 podría realizar operaciones sobre valores de FP de VP en otros formatos. El circuito de carga y almacenamiento 614 está configurado, por ejemplo, para convertir resultados intermedios generados por el coprocesador 604 en un formato de memoria limitada (b Mf ) antes del almacenamiento en la caché 612 y/o en la memoria externa 618. Por ejemplo, esta conversión implica reducir, redondeando o truncando, las longitudes de al menos algunos de los valores de VP almacenados en uno o más de los registros de la memoria de borrador 604 a un número de bits indicado por el MBB de presupuesto máximo almacenado en el registro. 616. Si el valor a convertir es un intervalo, se reduce, por ejemplo, mediante redondeo, de acuerdo con el MBB de presupuesto máximo de bytes, de tal manera que el intervalo reducido contiene el valor de entrada a convertir.
[0068]La Figura 7 representa un formato de número de coma flotante de precisión variable que tiene el formato de memoria limitada (BMF) de acuerdo con una realización ilustrativa de la presente divulgación. Por ejemplo, la longitud L de cada valor representado en este formato no supera el límite definido por el valor de MBB.
[0069]El formato de BMF, por ejemplo, contiene los mismos campos que los del formato UNUM representado en la Figura 2. Sin embargo, los campos se reordenan, por ejemplo, para tener los campos de descriptor (utag, véase a continuación) en o cerca del comienzo del valor de F<p>de VP cuando se accede a ellos en una memoria. Por ejemplo, en la Figura 7, un primer campo 701 almacena el signo s, un segundo campo 702 almacena el ubit asociado con el número, un tercer campo 703 almacena el tamaño del exponente es-1, un cuarto campo 704 almacena el tamaño de la fracción o mantisa fs-1, un quinto campo 705 almacena el exponente e y un sexto campo 706 almacena la fracción o mantisa f. Los campos s, u, es-1 y fs-1, por ejemplo, forman una porción de utag del formato de memoria limitada. Estos campos proporcionan parámetros para interpretar los campos de exponente y mantisa e y f. Por supuesto, el orden de los bits puede ser de LSB a MSB o viceversa, para permitir una organización de memoria little endian o big endian. Adicionalmente o como alternativa, el orden de los campos podría cambiarse, por ejemplo, invertirse, para permitir la organización de la memoria de tipo little endian o big endian.
[0070]La Figura 7 corresponde a un ejemplo de un formato de memoria limitada para la representación de FP de VP, pero será evidente para los expertos en la materia que serían posibles variaciones. Por ejemplo, se podrían omitir ciertos campos como el ubit y serían posibles diferentes órdenes. De manera más general, el formato de memoria limitada comprende, por ejemplo, al menos los campos 705 y 706 que contienen el exponente y la mantisa, y al menos un campo de tamaño que indica, directa o indirectamente, el tamaño del exponente y/o la mantisa. Por ejemplo, el al menos un campo de tamaño indica una longitud de bits absoluta o relativa del campo de exponente y/o campo de mantisa. Por ejemplo, en el caso de una longitud de bits relativa, el al menos un campo de tamaño podría indicar una relación de bits entre el campo de exponente y el campo de mantisa, o una relación de bits entre uno o ambos de los campos de exponente y mantisa y la longitud de bits general del valor de FP de VP, etc.
[0071]Como se mencionó anteriormente, el al menos un campo de tamaño puede representar, por ejemplo, la longitud del campo de exponente, la longitud del campo de mantisa, una relación de bits entre los campos de exponente y mantisa, o una longitud combinada de los campos de exponente y mantisa o del número de FP total. El al menos un campo de tamaño está situado, por ejemplo, antes de los campos de exponente y mantisa de manera que, durante una operación de lectura, la información de tamaño se puede usar para determinar el número de subporciones de memoria o direcciones que deben leerse, como se explicará ahora con más detalle con referencia a la Figura 8. De hecho, en algunas realizaciones, las palabras leídas de la memoria externa 618 o de la caché 612 pueden ser de longitud variable para optimizar la operación de lectura. Adicionalmente o como alternativa, en algunas realizaciones, los accesos a caché, por ejemplo, a la caché L1, incluyen una interfaz de habilitación de bytes a través de la que se pueden afirmar banderas para seleccionar el tamaño de lectura basándose en los bytes que han de recuperarse de la memoria externa.
[0072]La Figura 8 representa direcciones de memoria de una memoria 800 que almacena números de coma flotante en donde cada número está en un formato de memoria limitada tal como el formato de la Figura 7. La Figura 8 ilustra las direcciones @0 a @15 que tienen tamaños de paso de dirección de longitud p, donde p es, por ejemplo, igual a 8 bits, pero de manera más general podría ser igual a cualquier número entero positivo. El valor p, por ejemplo, corresponde a la longitud mínima de bits que se puede leer en una única operación de lectura. Cada dirección corresponde a una subporción, de p bits de longitud, de un espacio de direcciones asignado a cada valor de FP de VP. Este espacio de direcciones asignado de tamaño igual al menos al tamaño definido por MBB se denominará en lo sucesivo en el presente documento zona de almacenamiento de BMF. En el ejemplo de la Figura 8, el presupuesto máximo de bytes de MBB corresponde a 4 bytes, o 32 bits en este ejemplo. Sin embargo, el presupuesto máximo de bytes podría ser igual a cualquier número entero de bytes, o podría reemplazarse por un presupuesto máximo límite definido como un número entero de las subporciones p, donde p podría ser cualquier número entero positivo de bits.
[0073]De hecho, mientras que en el ejemplo de la Figura 8 el MBB corresponde a una potencia de 2, igual a 32 bits en este ejemplo, en realizaciones alternativas el MBB podría corresponder a un valor que no es una potencia de 2. En un caso de este tipo, el circuito de carga y almacenamiento 614 puede soportar, por ejemplo, accesos a memoria desalineados basándose en el MBB, en otras palabras, accesos a memoria que acceden a grupos de direcciones que no están alineados con palabras de una potencia dada de 2 bits de longitud, tal como 32 bits, 64 bits, 128 bits, etc.
[0074]Los valores de formato de memoria limitada almacenados se etiquetan como U1, U2, etc., y cada uno, por ejemplo, comprende una utag que contiene los campos s, u, es-1 y fs-1 representados por porciones ligeramente sombreadas, y campos de exponente y mantisa representados por porciones densamente sombreadas. La longitud de cada valor UNUM en la memoria está representada por una flecha discontinua.
[0075]Los campos s, u, es-1 y fs-1 están presentes, por ejemplo, en una o más primeras subporciones de cada zona de almacenamiento de<b>M<f>, en otras palabras, la dirección o las direcciones de memoria de la zona de almacenamiento de BMF que se leerán en primer lugar, correspondientes, por ejemplo, a las direcciones más bajas en el ejemplo de la Figura 8. De esta manera, el circuito de carga y almacenamiento 614 puede leer, por ejemplo, esta dirección y determinar a partir de la información de tamaño la longitud en bits del valor de FP de VP y, por lo tanto, leer únicamente el número apropiado de direcciones posteriores para leer el valor de PF de VP completo. Esto permite que se reduzca la duración de la operación de lectura, lo que puede ser, por ejemplo, particularmente ventajoso en el caso de que la longitud de bits definida por el MBB y, por lo tanto, el tamaño de cada zona de almacenamiento BMF, sea relativamente grande, por ejemplo igual a 6 bytes o mayor.
[0076]En el ejemplo de la Figura 8, los valores U2 y U3 son más cortos que el presupuesto máximo de bytes MBB y, por lo tanto, cada uno comprende uno o más bits vacíos al final de la zona de almacenamiento de BMF correspondiente. Además, los valores U2 y U3 ocupan menos de tres bytes, lo que implica que para cada uno de ellos no es necesario leer el cuarto byte de la zona de almacenamiento de BMF. Los valores U1 y U4, por ejemplo, usan toda la longitud del MBB de presupuesto máximo de bytes. Esto implica que cada uno de estos valores ya tenía una longitud igual al MBB, o, más probablemente, su longitud se redujo al MBB durante la operación de almacenamiento, asumiendo que la longitud máxima posible del valor de FP de VP era mayor que la longitud definida por el MBB.
[0077]El formato de almacenamiento de memoria representado en la Figura 8 se puede usar, por ejemplo, en modos de carga y almacenamiento convencionales en los que se accede a las direcciones de una en una, o en modos de ráfaga en los que se realizan secuencias programadas de operaciones de acceso. Por ejemplo, durante el modo de ráfaga, se realizan, por ejemplo, accesos a la memoria desalineados. En particular, se accede, por ejemplo, a un número B de direcciones de p bits, donde B*p es, por ejemplo, igual al número de bits definido por el MBB, o a un múltiplo del mismo. Como tal, el número de direcciones a las que se accede puede ser cualquier número entero, incluyendo los números enteros impares o los números enteros no iguales a una potencia de dos. Por ejemplo, en el caso de que el MBB corresponda a cinco direcciones de p bits, el modo ráfaga podría implicar cargar o almacenar cinco direcciones a la vez, o un múltiplo de cinco direcciones.
[0078]La Figura 9 es un diagrama de flujo que representa operaciones en un método para almacenar un número de coma flotante respetando un formato de memoria limitada a una dirección de memoria de una memoria de acuerdo con una realización ilustrativa de la presente divulgación. Este método se implementa, por ejemplo, en parte mediante el coprocesador de FP de VP 604 de la Figura 6 y en parte mediante el circuito de carga y almacenamiento 614 de cada pieza 602, 602' de la Figura 6. Adicionalmente o como alternativa, este método podría implementarse al menos parcialmente mediante software ejecutado por el coprocesador de FP de VP 604 o por el procesador principal 603 de la Figura 6.
[0079]En una operación 901, un valor de bit M se genera, por ejemplo, por el coprocesador de FP de VP 604. Este valor de M bits corresponde, por ejemplo, a un resultado intermedio de un algoritmo de cálculo ejecutado por el procesador 604, tal como el valor xi(K+1) en el algoritmo de la Figura 4. El valor de M bits se almacena en la memoria de borrador 606, aunque - en realizaciones no reivindicadas - como alternativa, podría generarse y a continuación proporcionarse directamente al circuito de carga y almacenamiento 614, si, por ejemplo, corresponde al resultado de un cierto tipo de operación tal como una operación de adición y almacenamiento.
[0080]En una operación 902, el circuito de carga y almacenamiento 614, por ejemplo, convierte el valor de M bits de la memoria de borrador 606 al formato de FP de Vp usado por el formato de memoria limitada si este aún no es el caso. Por ejemplo, en la realización de la Figura 6, el coprocesador 604 o el procesador principal 603 puede ser un procesador UNUM configurado para procesar valores de coma flotante en el formato UNUM, y esta conversión implica simplemente reordenar los campos de los valores UNUM. En realizaciones alternativas, se podrían usar otros tipos de procesador configurados para procesar valores de coma flotante de precisión variable en otros formatos, en cuyo caso la conversión de la operación 902 se usa, por ejemplo, para convertir el formato al de la Figura 7. En algunas realizaciones, esta conversión se realiza sin límite de longitud de bits y la siguiente operación es una operación 903. Como alternativa, esta conversión se puede realizar limitando directamente la longitud de bits a un valor igual o menor que la longitud máxima de bits definida por el MBB. Por ejemplo, en el caso de que el MBB defina un presupuesto máximo de bytes, la longitud máxima de bits es igual a 8*MBB. De manera más general, la longitud máxima de bits es, por ejemplo, igual a p*MBB. En un caso de este tipo, como se representa mediante una flecha discontinua en la Figura 9, la siguiente operación es una operación 904, en la que el valor se almacena directamente en la caché o memoria externa.
[0081]En la operación 903, se determina si el tamaño del valor en el formato de FP de VP es mayor que la longitud máxima de bits definida por el MBB. Si no, el valor se puede almacenar en la memoria caché o externa en la operación 904. Si el tamaño es mayor que la longitud máxima de bits, el tamaño se reduce, por ejemplo, en una operación 905, ya sea redondeando la mantisa o truncando la mantisa, en otras palabras, simplemente eliminando un número de bits menos significativos. Por ejemplo, si el valor de FP de VP define un intervalo, la operación 905 implica reducir la precisión de los puntos finales, lo que conduce a ampliar la definición del intervalo. Si el valor de FP de VP define un valor escalar, la precisión de salida se reduce, por ejemplo, para ajustarse dentro de la longitud de bits definida por el MBB, mientras se trunca o redondea, por ejemplo, al valor más cercano que se puede representar usando el número reducido de bits. Podría usarse cualquiera de los muchos modos de redondeo posibles, los muchos modos de redondeo disponibles son conocidos por los expertos en la materia. En todos los casos, el al menos un campo de tamaño del valor de FP de VP también se modifica en consecuencia, por ejemplo, en vista de la longitud reducida de la mantisa.
[0082]Después de la operación 905, el valor de FP de VP de tamaño reducido se almacena en la caché o RAM en una operación 906.
[0083]Almacenar el valor de FP de VP en caché o memoria externa en las operaciones 904 y 906, por ejemplo, implica almacenar el al menos un campo de tamaño 703, 704 en una o más primeras direcciones de la zona de almacenamiento de BMF, de manera que este valor pueda leerse en primer lugar durante una operación de lectura posterior.
[0084]En algunas realizaciones, si cuando se reduce la longitud de bits en la operación 902 o 905 se determina que no hay suficientes bits para representar todo el campo de exponente, se podría generar un mensaje de error, una bandera de advertencia, un activador o una interrupción para informar a un usuario que el MBB es insuficiente y debe aumentarse.
[0085]La Figura 10 es un diagrama de flujo que representa operaciones en un método de lectura de un número de Fp de VP respetando un formato de memoria limitada desde una dirección de memoria de una memoria de acuerdo con una realización ilustrativa de la presente divulgación. Este método se implementa, por ejemplo, mediante el circuito de carga y almacenamiento 614 de cada pieza 602, 602' de la Figura 6. Como alternativa, este método podría implementarse al menos parcialmente mediante software ejecutado por el coprocesador de FP de VP 604 o el procesador principal 603 de la Figura 6.
[0086]En una operación 1001, se leen una o más primeras subporciones del valor de FP de VP. Por ejemplo, la primera dirección del valor de FP de VP se puede determinar basándose en el MBB, o se proporciona directamente en la instrucción de carga, o se calcula mediante el núcleo principal 603 o mediante el coprocesador 604. Se leen esta dirección y una o más subporciones o direcciones posteriores que almacenan el al menos un campo de tamaño. En algunas realizaciones, la una o más primeras subporciones contienen tanto el campo de tamaño de exponente es-1 como el campo de tamaño de mantisa fs-1 y, en algunas realizaciones, la utag completa contiene adicionalmente el bit de signo y el ubit. Por supuesto, será evidente para los expertos en la materia que se pueden leer múltiples subporciones o direcciones en paralelo, tal como una operación de carga de 64 bits, que implica cargar 8 bytes correspondientes, por ejemplo, a 8 subporciones.
[0087]En una operación 1002, la presencia de una o más subporciones no vacías adicionales del valor de FP de V<p>se identifica basándose en los datos leídos de la una o más primeras subporciones. Esto se puede determinar, por ejemplo, al menos a partir del tamaño del exponente y/o de la mantisa.
[0088]En una operación 1003, se determina si hay al menos una subporción adicional no vacía del valor de FP de V<p>a leer. De hecho, en algunos casos, se puede determinar en la operación 1002 que todas las subporciones restantes de la zona de almacenamiento de BMF están vacías y, por lo tanto, no ha de realizarse ninguna operación de lectura adicional.
[0089]Si hay al menos una subporción no vacía a leerse, se lee, por ejemplo, una siguiente subporción del valor de FP de VP en una operación 1004, y, a continuación, se repite la operación 1003. Cuando no hay subporciones no vacías adicionales de la zona de almacenamiento de BMF a leer, el método finaliza en una operación 1005.
[0090]La Figura 11 representa un ejemplo del formato de memoria limitada en el caso de que el presupuesto máximo de bytes de la memoria se establece a un valor igual o mayor que el valor de FP de VP más grande que va a almacenarse en la memoria. El eje horizontal en la Figura 11 representa la longitud de bits del valor de FP de VP almacenado en la memoria. Como ejemplo, el tamaño máximo de exponente es_máx podría ser de 16 bits, y el tamaño máximo de mantisa fs_máx podría ser de 32 bits, y suponiendo un tamaño ess de 4 bits para el campo de tamaño de exponente es-1 y un tamaño fss de 5 bits para el campo de tamaño de mantisa fs-1, un único bit de signo s y un único ubit, el valor de Fp de VP más grande sería 59 bits. Por lo tanto, cuando se establece el MBB como 64 bits u 8 bytes, todos los valores de coma flotante se pueden escribir en una dirección de memoria correspondiente sin reducir su longitud de bits, e incluso para el tamaño de valor de coma flotante más grande, habrá 5 bits sin uso (BITS SIN USO). De manera más general, en el caso de que el MBB sea igual o superior al número de coma flotante más grande, el número de bits más grande que puede tener un valor de coma flotante de acuerdo con el formato de número limitado es, por ejemplo, 2+ess+fss+2ess+2fss.
[0091]Una fila inferior 1101 de la Figura 11 representa un caso general en el que: el bit de signo s se establece basándose en el signo del valor de coma flotante; el ubit no se establece si el número es exacto, o se establece si el número codificado tiene un intervalo de una anchura de ULP; los campos de tamaño de exponente y mantisa es-1, fs-1 indican los tamaños del exponente y de la mantisa respectivamente, teniendo estos campos, por ejemplo, longitudes fijas de ess y fss respectivamente, el campo de exponente tiene un tamaño de entre 1 bit y es_máx, y la mantisa tiene un tamaño entre 1 bit y fs_máx. Por ejemplo, los tamaños mínimos del exponente y la mantisa son cada uno de un bit, el campo de tamaño de exponente, por ejemplo, indica el tamaño de exponente menos uno (es-1), y el campo de tamaño de mantisa, por ejemplo, indica el tamaño de mantisa menos uno (fs-1).
[0092]Las otras filas en la Figura 11 tratan los casos específicos de valores de FP especiales, tales como los no números que, por ejemplo, se soportan por el formato de memoria limitada.
[0093]Las filas 1102 y 1103 representan respectivamente los valores qNaN (silencioso, no es un número) y sNaN (señalización, no es un número). El valor qNaN es, por ejemplo, un valor más allá del infinito positivo y el valor sNaN es, por ejemplo, un valor más allá del infinito negativo, ninguno de los cuales tiene significado matemático. El valor qNaN se codifica, por ejemplo, mediante un bit de signo de 0, un ubit de 1 y rellenando cada uno de los demás campos con unos. El valor sNaN se codifica de la misma manera que el valor qNaN, pero con el bit de signo en 1.
[0094]Las filas 1104 y 1105 representan respectivamente valores de infinito positivo e infinito negativo. El infinito positivo se codifica, por ejemplo, estableciéndose el bit de signo y el ubit a cero y rellenándose los otros campos con unos. Por ejemplo, el infinito negativo se codifica de la misma manera que el infinito positivo, pero con el bit de signo en 1.
[0095]Las filas 1106 y 1107 representan respectivamente valores de infinito casi positivo y de infinito casi negativo, correspondientes a valores que son demasiado grandes para ser representados pero que no están en infinito positivo o negativo. En el caso de que los valores representados sean intervalos, la palabra "DERECHA" en la fila 1106 indica que el intervalo codificado no incluye el infinito positivo, y la palabra "IZQUIERDA" en la fila 1107 indica que el intervalo codificado no incluye el infinito negativo. Por ejemplo, un valor de infinito casi positivo se codifica estableciendo el signo a cero, el ubit a 1 y rellenando los otros campos con unos, excepto el bit final de la mantisa, que, por ejemplo, está a cero. Un valor de infinito casi negativo se codifica, por ejemplo, de la misma manera que un infinito casi positivo, pero con el bit de signo establecido a uno.
[0096]Las filas 1108 y 1109 representan codificaciones alternativas para infinito casi positivo e infinito casi negativo, que permiten, por ejemplo, una reducción del espacio de almacenamiento. De hecho, en las filas 1108 y 1109, los campos de signo y ubit son, por ejemplo, los mismos que para las filas 1106 y 1107 respectivamente, pero los campos es-1 y fs-1, por ejemplo, están establecidos cada uno a valores inferiores al tamaño máximo que puede definirse por estos campos, en otras palabras, cada uno incluye al menos un bit a cero, y los campos de exponente y mantisa se establecen, por ejemplo, a todo unos.
[0097]Las flechas horizontales 1110 en la Figura 11 (y de manera similar en las Figuras 12 a 14) indican que las longitudes de los campos de exponente de las filas 1108, 1109 y 1101 pueden variar basándose en la información en el campo de tamaño de exponente es-1. De manera similar, las flechas horizontales 1112 en la Figura 11 (y de manera similar en las Figuras 12 a 14) indican que las longitudes de los campos de mantisa de las filas 1108, 1109 y 1101 pueden variar basándose en la información en el campo de tamaño de mantisa fs-1.
[0098]La Figura 12 representa ejemplos de formatos de una pluralidad de tipos de números de FP con respecto a un formato de memoria limitada de acuerdo con una realización ilustrativa adicional de la presente divulgación en la que el MBB se establece en un valor inferior que la longitud de al menos uno de los valores de coma flotante a almacenarse en la memoria.
[0099]Una fila 1201 en la Figura 12 corresponde a un caso en el que el valor de FP de VP a almacenar tiene una longitud de bits igual o inferior a la longitud máxima de bits definida por el MBB. En un caso de este tipo, puede haber uno o más bits sin uso (BITS SIN USO) en la zona de almacenamiento de BMF.
[0100]Una fila 1202 en la Figura 12 corresponde a un caso en el que el valor de FP de VP a almacenar tiene una longitud de bits mayor que la longitud máxima de bits definida por el MBB, pero la longitud combinada de los campos s, u, es-1, fs-1 y e es al menos un bit inferior que la longitud máxima de bits definida por el MBB. En otras palabras, después de reducirse al MBB, el valor de FP de VP todavía tiene un campo mantisa de al menos un bit. En este caso, el valor de FP de VP se reduce desde su longitud de bits original a la longitud de bits definida por el MBB, por ejemplo, redondeando o truncando la mantisa.
[0101]Una fila 1203 en la Figura 12 corresponde a un caso en el que los campos s, u, es-1, fs-1 y e del valor de FP de VP a almacenar tienen una longitud de bits combinada mayor que la longitud máxima de bits definida por el MBB, pero la longitud combinada de los campos s, u, es-1 y fs-1 es al menos un bit inferior que la longitud máxima de bits definida por el MBB. En otras palabras, después de reducirse al MBB, el valor de FP de VP todavía tiene un campo de exponente de al menos un bit. En este caso, el valor de FP de VP se reduce de su longitud de bits original a la longitud de bits definida por el MBB reduciendo su campo de mantisa a un bit y truncando el campo de exponente. Como no hay suficientes bits para expresar el exponente, el valor de número se satura, por ejemplo, hasta casi el infinito positivo o negativo, de acuerdo con el signo del valor.
[0102]Una fila 1204 corresponde a un caso en el que los tamaños ess y fss de los campos de tamaño de exponente y mantisa es-1, fs-1 del valor de FP de VP son relativamente grandes, pero cuando se redondean o truncan al MBB, los campos de exponente y mantisa aún comprenden cada uno al menos un bit.
[0103]Una fila 1205 en la Figura 12 corresponde a un caso en el que los tamaños ess y fss de los campos de tamaño de exponente y mantisa es-1, fs-1 del valor de FP de VP son tan grandes, o la longitud máxima de bits definida por el MBB es tan pequeña, que la longitud de bits combinada de los campos s, u, es-1 y fs-1 es mayor que la longitud de bits definida por el MBB. En un caso de este tipo, la forma truncada del de FP de VP no tendrá sentido y se considerará un error de codificación.
[0104]Las filas 1206, 1207, 1208 y 1209 en la Figura 12 corresponden a los valores de FP de VP de las filas 1102, 1103, 1104 y 1105 de la Figura 11 respectivamente, pero para los que la longitud combinada de los campos s, u, es-1, fs-1 y e es al menos un bit menor que la longitud de bits definida por el MBB. Estos valores ya no respetan más la codificación definida en la Figura 11 y, por ejemplo, dan como resultado un mensaje de error, o el surgimiento de una bandera de error o advertencia, activador o interrupción, o cualquier otro medio para informar un error a un usuario.
[0105]En algunas realizaciones, por ejemplo, en respuesta a un mensaje de error, bandera o interrupción, el MBB se puede aumentar para evitar al menos los casos de las filas 1203 y 1205 a 1209 de la Figura 12. Sin embargo, para los casos de las filas 1206 a 1209, la codificación usa las longitudes máximas de los campos es-1, fs-1, e y f y, por lo tanto, estos valores no se pueden truncar en absoluto sin crear representaciones no válidas.
[0106]A continuación, se describirá una codificación alternativa para permitir que estos valores se codifiquen usando una longitud de bits inferior a la longitud máxima con referencia a la Figura 13. De hecho, en algunas realizaciones descritas en relación con la Figura 13, se observa que, cuando la longitud de bits más alta posible de un valor de FP de VP es mayor que la longitud de bits definida por el MBB, cualquier número de este tipo no puede tener tanto sus campos de tamaño de exponente como de mantisa es-1, fs-1 en sus valores máximos. Esto permite que se use este valor máximo para codificar tipos de valores de FP especiales.
[0107]La Figura 13 representa ejemplos de formatos de una pluralidad de tipos de números de FP respetando un formato de memoria limitada de acuerdo con una realización ilustrativa de la presente divulgación.
[0108]Las filas 1301 a 1309 de la Figura 13 corresponden respectivamente a los casos de las filas 1101 a 1109 de la Figura 11, y no se describirán de nuevo en detalle. Se supone para estos casos en la Figura 13 que los campos es-1 y fs-1 tienen tamaños ess' y fss', respectivamente.
[0109]Las filas 1310 a 1316 en la Figura 13 corresponden a casos en los que los campos es-1 y fs-1 tienen tamaños ess" y fss" respectivamente, cada uno de los cuales es mayor que los tamaños ess' y fss' y el tamaño máximo de un valor de FP de VP que se almacenará en la memoria es mayor que el número máximo de bits definido por el MBB. Sin embargo, el MBB se elige, por ejemplo, de modo que, después de redondear o truncar, los campos de exponente y mantisa comprendan cada uno al menos un bit.
[0110]Las filas 1310, 1311, 1312 y 1313 codifican los mismos valores que las filas 1302, 1303, 1304 y 1305 respectivamente, usando una codificación similar excepto que los valores se codifican, por ejemplo, usando únicamente utag, es decir, los campos s, u, es-1 y fs-1. De esta manera, no es necesario almacenar ni cargar subporciones de la zona de almacenamiento de BMF después de la utag para estos tipos de FP de VP específicos.
[0111]Las filas 1314, 1315 y 1316 codifican los mismos valores que las filas 1308, 1309 y 1301 respectivamente, excepto que en el caso de un valor de FP de VP que tiene una longitud de bits mayor o igual que la longitud de bits indicada por el MBB, por ejemplo, no hay bits no usados en la dirección de memoria. Se observará que los formatos de los números en las filas 1314 y 1315 difieren de los de las filas 1302 y 1303 respectivamente en que, en el caso de las filas 1314 y 1315, los tamaños ess", fss" son de manera que la longitud de bits más alta posible del valor de FP de VP es mayor que la longitud máxima de bits definida por el MBB.
[0112]La Figura 14 representa ejemplos de formatos de una pluralidad de tipos de números de FP respetando un formato de memoria limitada de acuerdo con una realización alternativa a la de la Figura 13.
[0113]Las filas 1401 a 1409 y 1416 a 1418 son las mismas que las filas 1301 a 1309 y 1314 a 1316 en la Figura 13, y estas filas no se describirán de nuevo en detalle. Las cuatro filas 1410 a 1413 codifican los mismos tipos de FP de VP que las filas 1310 a 1313 de la Figura 13, pero en lugar de no tener campos de exponente ni mantisa, estos valores se codifican usando un único campo que está lleno con unos. Además, las filas 1414 y 1415 proporcionan maneras alternativas de codificar los tipos de FP de VP de las filas 1406 y 1407 usando, en lugar de campos de exponente y mantisa, un único campo lleno de unos, excepto el bit final, que es un cero.
[0114]Una ventaja de las realizaciones descritas en el presente documento es que los valores de FP de VP se pueden almacenar en una memoria de tal manera que sean posibles accesos afines a la memoria; en otras palabras, se puede acceder a las direcciones de memoria para lectura o escritura en cualquier orden. Además, la precisión se puede modificar dinámicamente cambiando la longitud máxima de bits definida por el MBB.
[0115]Además, se pueden realizar operaciones de lectura relativamente rápidas adaptando la operación de lectura basándose en uno o más campos de tamaño del valor de FP de VP a leer. En particular, esto permite evitar la lectura de una o más subporciones vacías de la memoria.
[0116]Se han descrito diversas realizaciones y variantes. Los expertos en la materia entenderán que ciertas características de estas realizaciones se pueden combinar y a los expertos en la materia se les ocurrirán fácilmente otras variantes. Por ejemplo, será evidente para los expertos en la materia que los formatos de FP de VP proporcionados en las Figuras 11 a 14 son simplemente algunos ejemplos, y que un conjunto de formatos reconocidos para cada tipo de FP de VP podría comprender cualquier combinación de los ejemplos proporcionados en estas figuras.
[0117]Además, será evidente para los expertos en la materia que, en realizaciones alternativas, el formato de memoria limitada descrito en el presente documento podría omitir el ubit. Bajo un esquema de este tipo, los puntos finales de intervalo se consideran, por ejemplo, como siempre incluidos (exactos), y los valores FP especiales se codifican, por ejemplo, utilizando codificaciones de bits especializadas.
[0118]Además, aunque se han descrito ejemplos de reducción de las longitudes de bits de los valores de FP de VP basándose en el redondeo, será evidente para los expertos en la materia que existen muchas técnicas de redondeo conocidas específicas que podrían aplicarse.
Implementaciones de software
[0119]La operación de almacenamiento de memoria descrita anteriormente en relación con la Figura 9 basándose en el formato de la Figura 13 se puede implementar usando el siguiente código, que está en pseudocódigo:
[Cálculo 4]
[0120]La operación de lectura de memoria descrita anteriormente en relación con la Figura 10 basándose en el formato de la Figura 13 se puede implementar usando el siguiente código, que está en pseudocódigo:
[Cálculo 5]

Claims (16)

REIVINDICACIONES
1. Un método para almacenar, mediante un circuito de carga y almacenamiento (614) u otros medios de procesamiento (604), un valor de coma flotante de precisión variable en una dirección de memoria de una memoria (612, 618), comprendiendo el método:
generar el valor de coma flotante de precisión variable usando un procesador o coprocesador de coma flotante de precisión variable y almacenar el valor de coma flotante de precisión variable en uno o más registros; y almacenar el valor de coma flotante de precisión variable del uno o más registros en la memoria:
- reduciendo la longitud de bits del valor de coma flotante de precisión variable desde un valor que supera un límite de tamaño (MBB) a un valor que no es mayor que el límite de tamaño (MBB); y
- almacenando el valor de coma flotante de precisión variable en una de una pluralidad de zonas de almacenamiento en la memoria, teniendo cada una de la pluralidad de zonas de almacenamiento un mismo tamaño de espacio de almacenamiento igual o mayor que el límite de tamaño (MBB).
2. El método de la reivindicación 1, en donde reducir la longitud de bits del valor de coma flotante de precisión variable comprende:
determinar, comparando una longitud de bits del valor de coma flotante de precisión variable con el límite de tamaño (MBB), que la longitud de bits del valor de coma flotante de precisión variable supera el límite de tamaño (MBB), y, a continuación, redondear o truncar el valor de coma flotante de precisión variable; o
convertir el valor de coma flotante de precisión variable de un primer formato a un segundo formato (BMF), en donde en el segundo formato la longitud de bits está limitada a no mayor que el límite de tamaño (MBB).
3. El método de la reivindicación 1 o 2, en donde el límite de tamaño (MBB) se almacena en un registro (616) accesible por el circuito de carga y almacenamiento (614) u otros medios de procesamiento (604), siendo programable el límite de tamaño (MBB).
4. El método de la reivindicación 1 o 2, que comprende, además, antes de reducir la longitud de bits, recibir por el circuito de carga y almacenamiento (614) u otros medios de procesamiento (604) una instrucción de carga o almacenamiento que comprende uno o más bits que indican el límite de tamaño (MBB).
5. El método de cualquiera de las reivindicaciones 1 a 4, en donde el límite de tamaño (MBB) es igual a un múltiplo de p bits, donde p es un número entero positivo, no siendo el límite de tamaño igual a una potencia de 2.
6. El método de cualquiera de las reivindicaciones 1 a 5, que comprende la etapa de comparar la longitud de bits del valor de coma flotante de precisión variable con el límite de tamaño (MBB), y antes de la comparación, convertir el valor de coma flotante de precisión variable de un tercer formato de coma flotante de precisión variable al segundo formato de coma flotante de precisión variable (BMF).
7. El método de cualquiera de las reivindicaciones 1 a 6, en donde el valor de coma flotante de precisión variable comprende un campo de exponente (705), un campo de mantisa (706) y al menos un campo de tamaño (703, 704) que indica una longitud de bits absoluta o relativa del campo de exponente y/o campo de mantisa, en donde el al menos un campo de tamaño incluye, por ejemplo, un campo de tamaño de exponente (703) y un campo de tamaño de mantisa (704);
en donde reducir la longitud de bits del valor de coma flotante de precisión variable a no mayor que el límite de tamaño (MBB) comprende modificar el al menos un campo de tamaño (703, 704) en vista de la longitud de bits reducida del valor de coma flotante de precisión variable; y
en donde cada zona de almacenamiento comprende, por ejemplo, una pluralidad de subporciones, en donde almacenar el valor de coma flotante de precisión variable comprende, por ejemplo, almacenar el al menos un campo de tamaño (703, 704) del valor de coma flotante de precisión variable en una o más primeras subporciones de la zona de almacenamiento.
8. El método de la reivindicación 7, en donde, si una longitud de bits (ess", fss") de al menos un campo de tamaño puede indicar una longitud de bits del campo de exponente y/o del campo de mantisa que superaría el límite de tamaño (MBB), la etapa de reducir la longitud de bits comprende establecer el al menos un campo de tamaño a un valor máximo para codificar al menos un tipo de valor de FP especial.
9. Un método para leer, a partir de una dirección de memoria en una memoria (612, 618), un valor de coma flotante de precisión variable almacenado de acuerdo con el método de la reivindicación 7, que comprende:
- leer la una o más primeras subporciones;
- identificar, basándose en el al menos un campo de tamaño (703, 704), una o más subporciones no vacías adicionales de la zona de almacenamiento; y
- leer la una o más subporciones no vacías adicionales de la zona de almacenamiento.
10. El método de la reivindicación 9, en donde identificar la una o más subporciones no vacías adicionales comprende además identificar al menos una subporción vacía adicional de la zona de almacenamiento, no leyéndose la al menos una subporción vacía adicional.
11. Un método para leer, a partir de una dirección de memoria en una memoria (612, 618), uno o más valores de coma flotante de precisión variable almacenados de acuerdo con el método de la reivindicación 7, que comprende:
- leer valores de bits de una o más zonas de almacenamiento de la memoria; y
- extraer de los valores de bits leídos uno o más valores de coma flotante de precisión variable identificados basándose en el al menos un campo de tamaño (703, 704) de cada valor.
12. Un método para resolver un problema científico usando al menos un procesador de coma flotante de precisión variable (604), comprendiendo el método:
- generar al menos un resultado intermedio representado por un valor de coma flotante de precisión variable de M bits; y
- almacenar el valor de coma flotante de precisión variable de M bits en una memoria (612, 618) de acuerdo con el método de cualquiera de las reivindicaciones 1 a 8.
13. Un sistema informático que comprende un procesador de coma flotante de precisión variable, de FP de VP (604), configurado para generar valores de coma flotante de precisión variable, el procesador de FP de VP (604) y/o un circuito de carga y almacenamiento (614) acoplado al procesador de FP de VP (604), estando configurados para generar y almacenar un valor de coma flotante de precisión variable en una memoria (612, 618):
generando el valor de coma flotante de precisión variable usando un procesador o coprocesador de coma flotante de precisión variable y almacenando el valor de coma flotante de precisión variable en uno o más registros; y almacenando el valor de coma flotante de precisión variable en la memoria:
- reduciendo la longitud de bits del valor de coma flotante de precisión variable desde un valor que supera un límite de tamaño (MBB) a un valor que no es mayor que el límite de tamaño (MBB); y
- almacenando el valor de coma flotante de precisión variable en una de una pluralidad de zonas de almacenamiento en la memoria, teniendo cada una de la pluralidad de zonas de almacenamiento un mismo tamaño de espacio de almacenamiento igual o mayor que el límite de tamaño (MBB).
14. El sistema informático de la reivindicación 13, en donde el procesador de FP de VP (604), y/o el circuito de carga y almacenamiento (614) acoplado al procesador de FP de VP (604), están configurados para:
- reducir la longitud de bits del valor de coma flotante de precisión variable:
o determinar, comparando una longitud de bits del valor de coma flotante de precisión variable con el límite de tamaño (MBB), que la longitud de bits del valor de coma flotante de precisión variable supera el límite de tamaño (MBB), y, a continuación, redondear o truncar el valor de coma flotante de precisión variable; o
o convertir el valor de coma flotante de precisión variable de un primer formato a un segundo formato (BMF), en donde en el segundo formato la longitud de bits está limitada a no mayor que el límite de tamaño (MBB); y/o
- almacenar el valor de coma flotante de precisión variable en la memoria basándose en una instrucción de almacenamiento, en donde la instrucción de almacenamiento comprende uno o más bits que indican el límite de tamaño (MBB).
15. El sistema informático de la reivindicación 13 o 14, que comprende además un registro (616) que almacena una indicación del límite de tamaño (MBB), siendo el registro accesible y programable por el procesador de coma flotante de precisión variable (604) y/o por el circuito de carga y almacenamiento (614).
16. El sistema informático de cualquiera de las reivindicaciones 13 a 15, en donde el procesador de FP de VP (604) está implementado:
- como parte de una unidad de procesamiento de gráficos; o
- como parte de una unidad de coma flotante (608); o
- como parte de un dispositivo de procesamiento principal (603) acoplado a una unidad de coma flotante (608).
ES20161056T 2019-03-08 2020-03-04 Método y dispositivo para representación en coma flotante con precisión variable Active ES2957432T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1902386A FR3093571B1 (fr) 2019-03-08 2019-03-08 Procédé et dispositif de représentation en virgule flottante avec précision variable

Publications (1)

Publication Number Publication Date
ES2957432T3 true ES2957432T3 (es) 2024-01-18

Family

ID=67999727

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20161056T Active ES2957432T3 (es) 2019-03-08 2020-03-04 Método y dispositivo para representación en coma flotante con precisión variable

Country Status (4)

Country Link
US (1) US11461095B2 (es)
EP (1) EP3706004B1 (es)
ES (1) ES2957432T3 (es)
FR (1) FR3093571B1 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008230B (zh) 2019-11-22 2023-08-04 远景智能国际私人投资有限公司 数据存储方法、装置、计算机设备及存储介质
US11928509B2 (en) * 2021-01-07 2024-03-12 Micron Technology, Inc. Memory system workload allocation
CN116841500A (zh) * 2022-03-24 2023-10-03 华为技术有限公司 一种浮点数的处理方法及相关设备
FR3136572A1 (fr) 2022-06-10 2023-12-15 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procédé et dispositif pour calculer avec une précision variable
FR3136571B1 (fr) 2022-06-10 2024-04-26 Commissariat Energie Atomique Procédé et dispositif pour arrondir dans un calcul à précision variable

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496920B1 (en) * 1998-03-18 2002-12-17 Qiuzhen Zou Digital signal processor having multiple access registers
US8412760B2 (en) * 2008-07-22 2013-04-02 International Business Machines Corporation Dynamic range adjusting floating point execution unit
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US9582413B2 (en) * 2014-12-04 2017-02-28 International Business Machines Corporation Alignment based block concurrency for accessing memory
US9660666B1 (en) * 2014-12-22 2017-05-23 EMC IP Holding Company LLC Content-aware lossless compression and decompression of floating point data
US9817662B2 (en) * 2015-10-24 2017-11-14 Alan A Jorgensen Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof
CN107766078A (zh) * 2016-08-15 2018-03-06 法乐第(北京)网络科技有限公司 变量值存储方法、读取方法、操作执行方法及装置
US9912957B1 (en) * 2017-04-01 2018-03-06 Intel Corporation Lossless compression for multisample render targets alongside fragment compression

Also Published As

Publication number Publication date
EP3706004A1 (en) 2020-09-09
EP3706004B1 (en) 2023-07-19
FR3093571B1 (fr) 2021-03-19
US20200285468A1 (en) 2020-09-10
FR3093571A1 (fr) 2020-09-11
US11461095B2 (en) 2022-10-04

Similar Documents

Publication Publication Date Title
ES2957432T3 (es) Método y dispositivo para representación en coma flotante con precisión variable
ES2927546T3 (es) Procesador informático para cálculos de precisión superior que utiliza una descomposición de operaciones de precisión mixta
US9870824B2 (en) Iterator register for structured memory
KR101581177B1 (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
JP6787554B2 (ja) ベクトルキャッシュラインライトバックのためのプロセッサ、方法、システム、および命令
KR100241049B1 (ko) 벡터프로세서를 위한 요소선택 메카니즘
JP2018504666A (ja) 多次元アレイから要素の多次元ブロックをプリフェッチするためのハードウェア装置および方法
JP2011511986A (ja) プロセッサ
CN106502922B (zh) 一种fifo数据缓存器的数据读写方法及数据缓存器
TWI607307B (zh) 用於存取記憶體之對準式區塊並行
US11347650B2 (en) Word type/boundary propagation with memory performance applications
JP2017027149A (ja) 半導体装置
US20140244987A1 (en) Precision Exception Signaling for Multiple Data Architecture
CN110321161B (zh) 使用simd指令的向量函数快速查表法、系统及介质
US6757809B1 (en) Data processor having 2n bits width data bus for context switching functions
JP2022546615A (ja) 圧縮支援命令
CN110018847B (zh) 可配置寄存器及基于可配置寄存器的数据存取方法
WO2019055738A1 (en) MEMORY ACCESS NOT ALIGNED
JP2556182B2 (ja) デ−タ処理装置
CN113138800B (zh) 定长指令集的编解码方法及计算系统
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
EP1378999B1 (en) Code compression process, system and computer program product therefor
KR102440692B1 (ko) 메모리 어레이 주변부에서의 비트 스트링의 누산
JP5480793B2 (ja) プログラマブルコントローラ
Liu Playing with Your Data: A High-Performance Programming Guide with the Taichi Programming Language