ES2725800T3 - Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla - Google Patents

Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla Download PDF

Info

Publication number
ES2725800T3
ES2725800T3 ES08851185T ES08851185T ES2725800T3 ES 2725800 T3 ES2725800 T3 ES 2725800T3 ES 08851185 T ES08851185 T ES 08851185T ES 08851185 T ES08851185 T ES 08851185T ES 2725800 T3 ES2725800 T3 ES 2725800T3
Authority
ES
Spain
Prior art keywords
register
data
address
bit
bit field
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
ES08851185T
Other languages
English (en)
Inventor
Shankar Krithivasan
Mao Zeng
Lucian Codrescu
Erich J Plondke
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2725800T3 publication Critical patent/ES2725800T3/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3555Indexed addressing using scaling, e.g. multiplication of index
    • 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/30018Bit or string instructions
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Un procedimiento que comprende: ejecutar una sola instrucción (216) para identificar una ubicación de un elemento (207) dentro de una tabla (206) que está configurada para almacenar múltiples longitudes de datos, con la tabla almacenada en una memoria (202), con la única instrucción ejecutable por un procesador para: extraer (502) datos de campo de bits de un primer registro (222); determinar una desviación de bits, en el que la desviación de bits se basa en una longitud de datos del elemento dentro de la tabla y la desviación de bits es diferente para cada longitud de datos; e insertar (504) los datos del campo de bits en un segundo registro (224) que tiene una parte de dirección de tabla (228) y una parte de índice (230), en un punto de inserción en la parte de índice del segundo registro basado en la desviación de bits, con el segundo registro que incluye una dirección de tabla, en el que la dirección de tabla y los datos del campo de bits forman una dirección indexada al elemento dentro de la tabla.

Description

DESCRIPCIÓN
Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla
I. Campo
[0001] La presente divulgación se relaciona en general con un sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla.
II. Descripción de la técnica relacionada
[0002] Los procesadores de señales digitales (DSP) se utilizan con frecuencia en dispositivos informáticos portátiles personales, como teléfonos inalámbricos, ordenadores personales, asistentes digitales personales (PDA), reproductores de audio, otros dispositivos electrónicos o cualquier combinación de estos. Dichos DSP pueden utilizarse para proporcionar funciones de vídeo y audio, para procesar datos recibidos o para realizar otras funciones. Dichos DSP pueden emplear arquitecturas de hilos múltiples, que pueden procesar múltiples hilos de instrucciones de programa y pueden incluir unidades de ejecución paralelas.
[0003] Un procesador, como un DSP, típicamente incluye un generador de direcciones de memoria que genera direcciones de memoria para recuperar datos de una memoria principal o para almacenar datos producidos por el DSP. En algunos casos, una dirección de memoria puede calcularse basándose en los valores recuperados. Una vez recuperados los valores, una unidad aritmética y lógica (ALU) realiza una operación de cambio de bit en los valores y los valores desplazados se almacenan en los registros. En un próximo ciclo de instrucciones, los valores cambiados pueden leerse de los registros y se puede realizar una operación numérica en los valores desplazados para producir una dirección de memoria. El procesador puede utilizar la dirección de la memoria para acceder a una ubicación dentro de la memoria, ya sea para escribir otros resultados o para recuperar datos.
[0004] En los procesadores actuales, es común buscar datos en una tabla basándose en algún número de bits en una estructura. Sin embargo, calcular una dirección en una tabla puede requerir dos o más ciclos de ejecución. Por lo tanto, existe la necesidad de un cálculo de dirección mejorado.
[0005] El documento US2006/0271763A se refiere al direccionamiento de índice extraído de memorias direccionables por bytes. Un multiplexor selecciona un byte de varios bytes empaquetados dentro de un registro de índice. El multiplexor proporciona el byte extraído directamente en posiciones de bit específicas de una palabra de desviación de dirección con extensión cero, que se agrega a la dirección base para usarla en el contenido de la memoria de direccionamiento. JP S61 165148a se refiere a un sistema de instrucciones de acceso a tabla. Una instrucción de acceso a tabla, para acceder a un elemento dentro de una tabla, especifica un primer registro para obtener la dirección de la cabecera de la tabla y una segunda dirección para obtener el número de datos del elemento. Un circuito de desplazamiento desplaza el contenido del segundo registro en una cantidad especificada en la instrucción. La salida del circuito de cambio, la dirección de la cabecera y un desplazamiento especificado por la instrucción se introducen en un circuito sumador, que genera la dirección.
III. Sumario
[0006] En un modo de realización particular, se describe un procedimiento que incluye la ejecución de una sola instrucción para identificar una ubicación dentro de una tabla almacenada en una memoria. La instrucción única es ejecutable por un procesador para extraer datos de campo de bits de un primer registro e insertar los datos de campo de bits en una parte de índice de un segundo registro. El segundo registro incluye una parte de dirección de tabla y una parte de índice. La parte de la dirección de tabla incluye una dirección de tabla que identifica una ubicación de memoria asociada con una tabla. La dirección de tabla y los datos del campo de bits se combinan para formar una dirección indexada a un elemento dentro de la tabla.
[0007] En otro modo de realización particular, se divulga un procesador que incluye un primer registro que incluye un campo de bits y un segundo registro que incluye una parte de dirección de tabla y una parte de índice. La parte de la dirección de tabla incluye una dirección de tabla que identifica una ubicación de una tabla en una memoria. El procesador también incluye una unidad de ejecución que está adaptada para generar una dirección procesando una única instrucción para extraer datos de campo de bits del campo de bits del primer registro e insertar los datos de campo de bits extraídos en la parte de índice del segundo registro para generar una dirección a un elemento dentro de la tabla.
[0008] En otro modo de realización particular más, se divulga un procedimiento para determinar una dirección en una tabla. El procedimiento incluye extraer datos de campo de bits de un primer registro e insertar los datos de campo de bits extraídos en una parte de índice de un segundo registro que incluye una parte de dirección de tabla y la parte de índice. El segundo registro incluye datos de dirección de tabla almacenados en la parte de dirección de tabla que identifica una ubicación de memoria asociada con una tabla. Los datos de dirección de tabla y los datos de campo de bits extraídos proporcionan la ubicación de la memoria y un índice de tabla a un elemento dentro de la tabla.
[0009] Una ventaja particular proporcionada por los modos de realización del sistema y el procedimiento descrito en el presente documento es que las operaciones que involucran una combinación de un desplazamiento y una operación aritmética se pueden realizar en un solo ciclo de ejecución.
[0010] Otra ventaja particular proporcionada por los modos de realización del procedimiento se proporciona en que las direcciones se pueden calcular rápidamente y se pueden mejorar las operaciones que utilizan tablas de búsqueda. Por ejemplo, un DSP que soporta el procedimiento particular y la instrucción asociada puede generar una dirección dentro de una tabla utilizando un índice y una dirección base en un número reducido de ciclos de instrucción.
[0011] Otra ventaja particular es que las operaciones de cambio y enmascaramiento, que se pueden usar en la comprobación de redundancia cíclica y otras operaciones DSP comunes, se pueden ejecutar en una sola instrucción y en un solo ciclo de ejecución, lo cual reduce los accesos de bus para operaciones de lectura/escritura de registros. Además, se reduce el número de instrucciones utilizadas para realizar la operación en particular.
[0012] Otra ventaja adicional es que los cálculos de dirección se simplifican. Se proporciona otra ventaja particular, ya que la reducción de varios ciclos de ejecución para determinar una dirección mejora la eficiencia del rendimiento del procesador.
[0013] Otros aspectos, ventajas y características de la presente divulgación resultarán evidentes después de revisar la solicitud completa, que incluye las siguientes secciones: Breve descripción de los dibujos, Descripción detallada y Reivindicaciones.
IV. Breve descripción de los dibujos
[0014]
La FIG. 1 es un diagrama de bloques de un modo de realización ilustrativo particular de un sistema de procesamiento adaptado para ejecutar una instrucción para determinar una dirección de un elemento en una tabla;
la FIG. 2 es un diagrama de un segundo modo de realización ilustrativo de un sistema de procesamiento adaptado para ejecutar una instrucción para determinar una dirección de un elemento en una tabla;
la FIG. 3 es un diagrama de modos de realización ilustrativos particulares de los registros primero y segundo utilizados para formar direcciones a elementos dentro de una tabla;
la FIG. 4 es un diagrama de flujo de un modo de realización ilustrativo particular de un procedimiento para determinar una dirección de un elemento dentro de una tabla;
la FIG. 5 es un diagrama de flujo de un segundo modo de realización ilustrativo particular de un procedimiento para determinar una dirección de un elemento dentro de una tabla; y
la FIG. 6 es un diagrama de bloques de un dispositivo de comunicación inalámbrica representativo que incluye un procesador para determinar una dirección de un elemento dentro de una tabla.
V. Descripción detallada
[0015] La FIG. 1 es un diagrama de bloques de un modo de realización ilustrativo particular de un sistema de procesamiento 100 adaptado para ejecutar una instrucción de extracción-desplazamiento-adición 116 para determinar una dirección de un elemento en una tabla 103 (tal como un elemento 207 dentro de una tabla 206 ilustrada en la FIG.
2). El sistema de procesamiento 100 incluye una memoria 102 que incluye la tabla 103. La memoria 102 está acoplada a una memoria caché 110 a través de una interfaz de bus 108. El sistema de procesamiento 100 también incluye una memoria caché de datos 112 que está acoplada a la memoria 102 a través de la interfaz de bus 108. La memoria caché de instrucciones 110 está acoplada a un secuenciador 114 a través de un bus 111. En un ejemplo particular, el secuenciador 114 también puede recibir interrupciones generales, que pueden recuperarse de un registro de interrupciones (no mostrado). En un modo de realización particular, la memoria caché de instrucciones 110 se puede acoplar al secuenciador 114 a través de una pluralidad de registros de instrucciones actuales, que se pueden acoplar al bus 111 y asociarse con hilos particulares del sistema de procesamiento 100. En un modo de realización particular, el sistema de procesamiento 100 es un procesador de múltiples hilos intercalados que incluye seis hilos.
[0016] En un modo de realización particular, el bus 111 es un bus de sesenta y cuatro (64) bits y el secuenciador 114 está configurado para recuperar instrucciones de la memoria 102 a través de paquetes de instrucciones que incluyen múltiples instrucciones que tienen una longitud de treinta y dos (32) bits cada una. El secuenciador 114 está acoplado a una primera unidad de ejecución de instrucciones 118, una segunda unidad de ejecución de instrucciones 120, una tercera unidad de ejecución de instrucciones 122 y una cuarta unidad de ejecución de instrucciones 124. Cada unidad de ejecución de instrucciones 118, 120, 122, 124 puede acoplarse a un archivo de registro general 126 a través de un segundo bus 128. El archivo de registro general 126 también se puede acoplar al secuenciador 114, a la memoria caché de datos 112, ya la memoria 102 a través de un tercer bus 130. En un modo de realización ilustrativo particular, el archivo de registro general 126 puede incluir un primer registro 132 y un segundo registro 133 para almacenar datos relacionados con un elemento dentro de una tabla.
[0017] El sistema de procesamiento 100 también puede incluir registros de control de supervisor 134 y registros de control global 136 para almacenar bits a los que puede acceder la lógica de control dentro del secuenciador 114 para determinar si aceptar interrupciones y controlar la ejecución de instrucciones.
[0018] En un modo de realización ilustrativo particular, la unidad de ejecución 118 puede recibir la instrucción de extracción-desplazamiento-adición 116 de la memoria caché de instrucciones 110 a través del secuenciador 114. La unidad de ejecución 118 puede recuperar (extraer) datos de campo de bits del primer registro 132, desplazar los datos de campo de bits recuperados un número predeterminado de bits y agregar los datos de campo de bits desplazados (es decir, insertar los datos de campo de bits recuperados) a datos dentro el segundo registro 133. En un ejemplo particular, la unidad de ejecución 118 puede recuperar los datos del campo de bits del primer registro 132, determinar un punto de inserción dentro del segundo registro 133 e insertar los datos de campo de bits recuperados en el punto de inserción dentro del segundo registro 133. En un ejemplo particular, una desviación de bits puede representar si la tabla almacena bytes, medias palabras, palabras o palabras dobles. El punto de inserción se puede determinar basándose en los datos almacenados en la tabla, y los datos del campo de bits recuperados se pueden insertar en el punto de inserción en el segundo registro 133. El segundo registro 133 puede almacenar una ubicación de memoria asociada con una tabla en una parte de dirección y puede recibir los datos de campo de bits recuperados dentro de una parte de índice del segundo registro 133. Los datos almacenados en el segundo registro 133 después de insertar los datos del campo de bits recuperados representan una dirección de un elemento dentro de la tabla. La dirección del elemento dentro de la tabla se puede usar para acceder al elemento dentro de la memoria 102 en la dirección especificada por los datos en el segundo registro 133. En un modo de realización particular, la dirección se puede determinar en una sola instrucción o ciclo de ejecución. En un modo de realización particular, un ciclo de instrucción en general incluye varias etapas, que incluyen una o más etapas de búsqueda de instrucción, una etapa de descodificación, una etapa de archivo de registro de lectura, una o más etapas de ejecución y una etapa de reescritura. En general, debe entenderse que un ciclo de instrucción representa un ciclo de ejecución de instrucción para una instrucción particular en un hilo en particular.
[0019] En un modo de realización particular, al menos una de las unidades de ejecución 118, 120, 122 y 124 puede incluir un desplazador adaptado para desplazar los datos de campo de bits extraídos extraídos del primer registro 132 en un número predeterminado de bits. Los datos del campo de bits desplazados pueden luego insertarse en una parte del índice del segundo registro mediante una operación de adición. El desplazador puede ser un desplazador bidireccional que está adaptado para desplazar los bits hacia la derecha o hacia la izquierda.
[0020] La FIG. 2 es un diagrama de bloques de un segundo modo de realización particular de un sistema 200 que incluye un procesador que está adaptado para ejecutar una instrucción para determinar una dirección de un elemento en una tabla. El sistema 200 incluye una memoria 202 que incluye uno o más límites de memoria lógica, como el límite de memoria 204, que define un espacio de memoria de dos kilobytes. La memoria 202 está adaptada para almacenar una tabla 206 que está alineada con el límite 204 de memoria. La tabla 206 está adaptada para contener entradas de bytes, medias palabras, palabras, palabras dobles o cualquier combinación de las mismas. La tabla 206 puede incluir un elemento (E) 207 que es accesible en una ubicación de memoria que incluye información de índice de tabla.
[0021] En un ejemplo particular, la tabla 206 puede alinearse con un límite lógico, tal como el límite 204 dentro de la memoria 202. En general, el límite 204 es un límite lógico que tiene una ubicación que corresponde a un límite de potencia de dos (es decir, 2N) que es mayor o igual que un tamaño de la tabla 206. Por ejemplo, si la tabla 206 es una tabla de dos kilobytes, la tabla 206 puede alinearse con un límite de memoria 204 en un límite de memoria cero que incluye un bloque contiguo de espacio de memoria de 2 kb, un límite de memoria de 2 kb que tiene al menos un bloque de espacio de memoria contiguo de 2 kb, un límite de memoria de 4 kb, y así sucesivamente. Por ejemplo, si la tabla 206 es una tabla de cuatro kilobytes, la tabla 206 puede alinearse con un límite lógico de 4 kb, como un límite de memoria cero (es decir, la dirección de memoria cero y la secuencia) que incluye un bloque contiguo de cuatro kilobytes de espacio de memoria, un límite de 4kb, un límite de 8kb, etc. El límite de memoria puede tener un espacio disponible que sea mayor que un tamaño de la tabla 206. En un ejemplo particular, al alinear la tabla 206 con un límite lógico de potencia de dos 204 dentro de la memoria 202, la dirección de memoria de la tabla 206 puede determinarse a partir de los bits más significativos de un registro y los bits menos significativos pueden utilizarse como un índice correspondiente en la tabla 206, permitiendo el uso de un cálculo de dirección para usarse para direccionar el elemento (E) 207 dentro de la tabla 206, por ejemplo.
[0022] La memoria 202 está adaptada para comunicarse con un procesador a través de un bus 232 que está acoplado a registros generales 220 y a través de un bus 209 que está acoplado a una memoria caché de instrucciones 210. El procesador, en general indicado por la línea fantasma 208, incluye la memoria caché de instrucciones 210, que puede almacenar una instrucción de extracción-desplazamiento-adición 216. La memoria caché de instrucciones 210 se comunica con un secuenciador 214 a través de un bus 212. El secuenciador 214 proporciona instrucciones a una o más unidades de ejecución 218. La una o más unidades de ejecución 218 se comunican con los registros generales 220 para recuperar y almacenar datos. Los registros generales 220 incluyen un primer registro 222 y un segundo registro 224. El primer registro 222 incluye un campo de bits 226. El segundo registro 224 incluye una parte de dirección de tabla 228 y una parte de índice 230.
[0023] En un modo de realización ilustrativo particular, los datos pueden calcularse, cargarse o recuperarse y almacenarse de otra manera en los registros primero y segundo 222 y 224. El secuenciador 214 está adaptado para recuperar una instrucción de extracción-desplazamiento-adición 216 de la memoria caché de instrucciones 210 y para proporcionar la instrucción de extracción-desplazamiento-adición 216 a al menos una de las una o más unidades de ejecución 218. Las una o más unidades de ejecución 218 están adaptadas para extraer datos relacionados con el campo de bits 226 del primer registro 222 e insertar los datos extraídos en la parte de índice 230 del segundo registro 224 para formar una dirección para acceder a un elemento 207 dentro del tabla 206 de la memoria 202. La parte de dirección 228 del segundo registro incluye una dirección de tabla. En un ejemplo particular, la una o más unidades de ejecución 218 pueden calcular la dirección del elemento de tabla 207 dentro de la tabla 206 en un solo ciclo de ejecución.
[0024] En un ejemplo particular, la una o más unidades de ejecución 218 están adaptadas para insertar los datos extraídos del campo de bits 226 del primer registro 222 en la parte de índice 230 del segundo registro 224. La parte de índice 230 del segundo registro 224 puede representar los bits menos significativos del segundo registro 224. La parte de dirección de tabla 228 del segundo registro 224 puede representar los bits más significativos del segundo registro 224. En un ejemplo ilustrativo particular, la una o más unidades de ejecución 218 pueden adaptarse para insertar selectivamente los datos extraídos del campo de bits 226 del primer registro 222 en una ubicación de inserción dentro de la parte de índice 230 del segundo registro 224.
[0025] Por ejemplo, en un modo de realización ilustrativo particular, la una o más unidades de ejecución 218 pueden adaptarse para seleccionar un punto de inserción dentro de la parte de índice 230 basándose en el tipo de datos almacenados en la tabla 206. Por ejemplo, si la tabla 206 almacena bytes de datos, el punto de inserción puede estar en el bit 0 dentro de la parte de índice 230 del segundo registro 224. Cuando la tabla almacena medias palabras, el punto de inserción puede estar en el bit 1 de la parte de índice 230 del segundo registro 224. Cuando la tabla 206 almacena palabras de datos, el punto de inserción dentro de la parte de índice 230 puede estar en el bit 2 dentro de la parte de índice 230 del segundo registro 224. Cuando la tabla 206 almacena palabras dobles de datos, el punto de inserción puede estar en el bit 3 dentro de la parte de índice 230 del segundo registro 224. El punto de inserción se puede usar para representar un valor de desviación relacionado con el campo que se va a extraer. En un modo de realización ilustrativo particular, el primer registro 222 puede incluir el campo de bits 226 que puede tener tanto información de ancho como de desviación. La información de desviación se puede utilizar para determinar qué ubicación de inserción se debe utilizar.
[0026] En general, debe entenderse que la instrucción de extracción-desplazamiento-adición 216 es simplemente una etiqueta que se usa para describir un paquete de instrucciones particular que se puede usar para calcular una dirección de una tabla 206 y un índice para un elemento 207 dentro del tabla 206 en un solo ciclo de instrucciones. Sin embargo, la instrucción puede describirse usando una etiqueta diferente. Además, debe entenderse que un paquete de instrucciones que incluye una instrucción de cálculo de índice/dirección de tabla, como la instrucción 216 de extracción-desplazamiento-adición, también puede incluir otras instrucciones, microinstrucciones, operaciones o cualquier combinación de las mismas. Además, dicho paquete de instrucciones puede generar la ejecución de operaciones, microinstrucciones, instrucciones o cualquier combinación de las mismas adicionales.
[0027] La FIG. 3 es un diagrama de modos de realización ilustrativos particulares de los registros primero y segundo utilizados para formar direcciones a elementos dentro de una tabla. El diagrama incluye un primer conjunto 300 del primer y segundo registros 302 y 304 para acceder a una tabla de bytes. El diagrama también incluye un segundo conjunto 310 del primer y segundo registros 312 y 314 para acceder a una tabla de medias palabras. Además, el diagrama incluye un tercer conjunto 320 del primer y segundo registros 322 y 324 para acceder a una tabla de palabras. Además, el diagrama incluye un cuarto conjunto 330 del primer y segundo registros 332 y 334 para acceder a una tabla de palabras dobles.
[0028] El primer conjunto 300 incluye el primer registro 302, que incluye un campo de bits que incluye datos de campo de bits 306. El primer registro 302 también puede incluir bits de desviación 307. El segundo registro 304 incluye una parte de información de dirección de tabla 308 y una parte de índice 309. Usando la instrucción de extraccióndesplazamiento-adición (es decir, la instrucción de extracción-desplazamiento-adición 216 ilustrada en la FIG. 2), los datos de campo de bits 306 del primer registro 302 se escriben en la parte de índice 309 del segundo registro 304 para formar una dirección a un elemento dentro de una tabla que almacena bytes de datos. En este ejemplo, el punto de inserción 303 está en el bit 0 del segundo registro 304.
[0029] El segundo conjunto 310 incluye el primer registro 312, que incluye un campo de bits que incluye datos de campo de bits 316. El primer registro 312 también puede incluir bits de desviación 317. El segundo registro 314 incluye una parte de información de dirección de tabla 318 y una parte de índice 319. Usando la instrucción de extraccióndesplazamiento-adición (es decir, la instrucción de extracción-desplazamiento-adición 216 ilustrada en la FIG. 2), los datos de campo de bits 316 del primer registro 312 se escriben en la parte de índice 319 del segundo registro 314 para formar una dirección a un elemento dentro de una tabla que almacena medias palabras de datos. En este ejemplo, el punto de inserción 313 está en el bit 1 del segundo registro 314.
[0030] El tercer conjunto 320 incluye el primer registro 322, que incluye un campo de bits que incluye datos de campo de bits 326. El primer registro 322 también puede incluir bits de desviación 327. El segundo registro 324 incluye una parte de información de dirección de tabla 328 y una parte de índice 329. Usando la instrucción de extraccióndesplazamiento-adición (es decir, la instrucción de extracción-desplazamiento-adición 216 ilustrada en la FIG. 2), los datos de campo de bits 326 del primer registro 322 se escriben en la parte de índice 329 del segundo registro 324 para formar una instrucción a un elemento dentro de una tabla que almacena palabras de datos. En este ejemplo, el punto de inserción 323 está en el bit 2 del segundo registro 324.
[0031] El cuarto conjunto 330 incluye el primer registro 332, que incluye un campo de bits que incluye datos de campo de bits 336. El primer registro 332 también puede incluir bits de desviación 337. El segundo registro 334 incluye una parte de información de dirección de tabla 338 y una parte de índice 339. Usando la instrucción de extraccióndesplazamiento-adición (es decir, la instrucción de extracción-desplazamiento-adición 216 ilustrada en la FIG. 2), los datos del campo de bits 336 del primer registro 332 se escriben en la parte de índice 339 del segundo registro 334 para formar una instrucción a un elemento dentro de una tabla que almacena palabras dobles de datos. En este ejemplo, el punto de inserción 333 está en el bit 3 del segundo registro 334.
[0032] En la sintaxis de programación a nivel de ensamblaje, la información de desviación puede incluir información extraída que utiliza el ensamblador para ajustar los valores de índice de bits mediante una desviación. En un ejemplo particular, para una tabla que almacena bytes, no es necesario realizar ningún ajuste, por lo que se puede usar la ubicación de inserción 303 en el bit cero. Para una tabla que almacena medias palabras, el ensamblador puede codificar los datos de desviación como una desviación de 1 bit en la parte de índice 319 del segundo archivo de registro 314, proporcionando una ubicación de inserción 313 en el bit 1 dentro de la parte de índice 319. Para una tabla que almacena palabras, el ensamblador puede codificar los datos de desviación 327 como una desviación de 2 bits en el campo inmediato sin firmar del segundo archivo de registro 324, proporcionando una ubicación de inserción 323 en el bit 2 dentro de la parte de índice 329. Para una tabla que almacena palabras dobles, el ensamblador puede codificar la información de desviación 337 en una desviación de 3 bits en el campo inmediato sin signo del segundo registro 334, proporcionando una ubicación de inserción 333 en el bit 3 dentro de la parte de índice 339.
[0033] En general, los segundos archivos de registro 304, 314, 324 y 334 (después de la inserción de los respectivos datos de campo de bits 306, 316, 326 y 336 de los respectivos primeros archivos de registro 302, 312, 322 y 332) contienen una dirección a una tabla dentro de las partes de tabla 308, 318, 328 y 338 y un índice a un elemento dentro de la tabla dentro de las partes de índice 309, 319, 329 y 339. Las ubicaciones de inserción 303, 313, 323 y 333 proporcionan una desviación de bits que se traduce en un tamaño del elemento de datos dentro de la tabla. Al alinear la tabla con un límite lógico dentro de la memoria que es una potencia de dos tamaños igual a o mayor que el tamaño de la tabla, se puede acceder a los elementos dentro de la tabla utilizando la técnica de extracción-desplazamientoinserción ilustrada en la FIG. 3.
[0034] En un modo de realización particular, los datos almacenados en el segundo registro se pueden usar como una dirección inmediata sin firmar a un elemento dentro de una tabla en la memoria, tal como el elemento 207 almacenado en la tabla 206 de la memoria 202 ilustrada en la FIG. 2. Esta dirección puede utilizarse para escribir en el elemento dentro de la tabla o para leer datos del elemento.
[0035] La FIG. 4 es un diagrama de flujo de un modo de realización ilustrativo particular de un procedimiento para determinar una dirección de un elemento dentro de la tabla. En 402, el procedimiento incluye ejecutar una sola instrucción para identificar una ubicación dentro de la tabla almacenada en una memoria. La sola instrucción es ejecutable por un procesador para extraer datos de campo de bits de un primer registro e insertar los datos de campo de bits en una parte de índice del segundo registro, donde el segundo registro incluye una parte de dirección de tabla y la parte de índice. La parte de la dirección de tabla incluye una dirección de tabla que identifica una ubicación de memoria asociada con una tabla, donde la dirección de tabla y los datos del campo de bits se combinan para formar una dirección de índice para un elemento dentro de la tabla. Avanzando a 404, el procedimiento incluye ejecutar una segunda instrucción para acceder a la memoria en la dirección indexada. La segunda instrucción es ejecutable por el procesador para leer o escribir datos en la dirección indexada dentro de la tabla. El procedimiento termina en 406.
[0036] En un modo de realización ilustrativo particular, el procedimiento también puede incluir acceder al elemento dentro de la tabla basándose en la dirección de tabla y el índice de la tabla. En otro modo de realización particular, los datos del campo de bits se extraen y se insertan en el segundo registro en un solo ciclo de ejecución. Los registros primero y segundo pueden ser registros dentro de un archivo de registro general, tales como registros generales del archivo de registro general 126 ilustrado en la FIG. 1. En otro modo de realización particular, los datos de campo de bits extraídos se insertan en un punto de inserción que está relacionado con una estructura de datos almacenada dentro de la tabla. Por ejemplo, la información de desviación, tal como la información de desviación 307, 317, 327 y 337 ilustrada en la FIG. 3, puede ser utilizada por una o más unidades de ejecución para determinar una ubicación de inserción (como las ubicaciones de inserción 303, 313, 323 y 333 ilustradas en la FIG. 3) para la inserción de los datos de campo de bits extraídos. En particular, la información de desviación puede definir un punto de inserción que varía de acuerdo con si la tabla almacena bytes, medias palabras, palabras o palabras dobles. En particular, la información de desviación puede definir el tipo de datos almacenados en la tabla en particular. Las unidades de ejecución pueden utilizar la ubicación de la tabla en la memoria en relación con un límite lógico y utilizar la información de desviación para calcular una dirección a un elemento dentro de la tabla y recuperar la estructura de datos de tamaño apropiado de la tabla.
[0037] La FIG. 5 es un diagrama de flujo de un segundo modo de realización ilustrativo particular de un procedimiento para determinar una dirección de un elemento dentro de una tabla. En 502, el procedimiento incluye extraer datos de campo de bits de un primer registro. Avanzando a 504, el procedimiento incluye insertar los datos de campo de bits extraídos en una parte de índice de un segundo registro que incluye una parte de dirección de tabla y la parte de índice. El segundo registro incluye datos de dirección de tabla almacenados en la parte de dirección de tabla que identifica una ubicación de memoria asociada con una tabla. Los datos de la dirección de tabla y los datos del campo de bits extraídos definen la ubicación de la memoria y un índice de tabla para un elemento dentro de una tabla. Continuando con 506, el procedimiento también incluye acceder al elemento dentro de la tabla basándose en la dirección de tabla y el índice de la tabla. El procedimiento termina 508.
[0038] En un ejemplo particular, la instrucción de extracción-desplazamiento-adición descrita con respecto a las FIGs. 1-5 proporciona una búsqueda muy rápida en una tabla. En otro modo de realización particular, la instrucción de extracción-desplazamiento-adición puede utilizar un solo cambio y enmascaramiento para proporcionar acceso a un elemento particular dentro de la tabla.
[0039] La FIG. 6 es un diagrama de bloques de un dispositivo de comunicación inalámbrica 600 representativo que incluye un procesador para determinar la dirección de un elemento dentro de una tabla. El dispositivo de comunicaciones portátil 600 puede incluir un procesador de señales digitales (DSP) 610 que incluye un primer registro con datos de campo de bits 662, un segundo registro con una parte de dirección de tabla y una parte de índice 664 y una instrucción de extracción-desplazamiento-adición 668 que es ejecutable por una unidad de ejecución dentro del DSP 610 para realizar una operación de extracción-desplazamiento-adición como se describe con respecto a las FIGs.
1-5. El dispositivo de comunicaciones portátil 600 también incluye una memoria 632 que incluye una tabla 660 que incluye un elemento de tabla 661. En un modo de realización particular, una unidad de ejecución del DSP 610 puede ejecutar la instrucción de extracción-desplazamiento-adición 668 para extraer un campo de bits del primer registro 662 e insertar el campo de bits en una parte de índice del segundo registro 664 para determinar una dirección asociada al elemento 661 dentro de la tabla 660. Los datos almacenados en el elemento 661 pueden recuperarse utilizando la dirección determinada, como se describe con respecto a las FIGs. 1-5.
[0040] La FIG. 6 también muestra un controlador de pantalla 626 que está acoplado al procesador de señales digitales 610 y a una pantalla 628. Además, un dispositivo de entrada 630 está acoplado al procesado de señales digitales 610. Además, la memoria 632 está acoplada al procesador de señales digitales 610. También se puede acoplar un codificador/descodificador (CODEC) 634 al procesador de señales digitales 610. Un altavoz 636 y un micrófono 638 pueden estar acoplados al CODEC 634.
[0041] La FIG. 6 también indica que un controlador inalámbrico 640 se puede acoplar al procesador de señales digitales 610 y a una antena inalámbrica 642. En un modo de realización particular, una fuente de alimentación 644 está acoplada al sistema en chip 622. Además, en un modo de realización particular, ilustrado en la FIG. 6, la pantalla 628, el dispositivo de entrada 630, el altavoz 636, el micrófono 638, la antena inalámbrica 642 y la fuente de alimentación 644 son externos al dispositivo de sistema en chip 622. Sin embargo, cada uno está acoplado a un componente del sistema en chip 622.
[0042] Debe entenderse que, si bien el primer registro que incluye el campo de bits 662 y el segundo registro que incluye una parte de dirección de tabla y una parte de índice 664 se representan como componentes separados del procesador de señales digitales 610, ambos elementos 662 y 664 pueden integrarse en su lugar. un registro general, tal como el archivo de registro general 126 ilustrado en la FIG. 1. Además, mientras que el primer registro que incluye el campo de bits 662 y el segundo registro que incluyen una parte de dirección de tabla y una parte de índice 664 se representan dentro del DSP 610, debe entenderse que otros elementos de procesamiento también pueden utilizar la instrucción de extracción-desplazamiento-adición 668 con datos de registro de dos registros diferentes para generar una dirección de tabla e índice a un elemento 661 dentro de la tabla 660. Por ejemplo, otros componentes pueden incluir un procesador adaptado para ejecutar una instrucción de extracción-desplazamiento-adición en un solo ciclo de reloj, que incluye, por ejemplo, el controlador de pantalla 626 (que puede incluir un procesador), el controlador inalámbrico 640 (que puede incluir un procesador), otros circuitos de procesador, o cualquier combinación de los mismos.
[0043] Los expertos apreciarán, además, que los diversos bloques lógicos, configuraciones, módulos, circuitos y pasos de algoritmo ilustrativos descritos en conexión con los modos de realización divulgados en el presente documento se pueden implementar como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar claramente esta intercambiabilidad de hardware y software, anteriormente se han descrito diversos componentes, bloques, configuraciones, módulos, circuitos y pasos ilustrativos en general desde el punto de vista de su funcionalidad. Que dicha funcionalidad se implemente como hardware o software depende de la solicitud en particular y de las restricciones de diseño impuestas en el sistema global. Los expertos en la materia pueden implementar la funcionalidad descrita de distintas maneras para cada aplicación particular, pero no se debería interpretar que dichas decisiones de implementación suponen apartarse del alcance de la presente divulgación.
[0044] Los pasos de un procedimiento o algoritmo descrito en relación con los modos de realización divulgados en el presente documento se pueden realizar directamente en hardware, en un módulo de software ejecutado mediante un procesador o en una combinación de los dos. Un módulo de software puede residir en una memoria RAM, en una memoria flash, en una memoria ROM, en una memoria PROM, en una memoria EPROM, en una memoria EEPROM, en registros, en un disco duro, en un disco extraíble, en un CD-ROM, en un CD-ROM o en cualquier otra forma de medio de almacenamiento conocido en la técnica. Un medio de almacenamiento a modo de ejemplo está acoplado al procesador de modo que el procesador pueda leer información de, y escribir información en, el medio de almacenamiento. De forma alternativa, el medio de almacenamiento puede estar integrado en el procesador. El procesador y el medio de almacenamiento pueden residir en un ASIC. El ASIC puede residir en un dispositivo informático o en un terminal de usuario. De forma alternativa, el procesador y el medio de almacenamiento pueden residir como componentes discretos en un dispositivo informático o en un terminal de usuario.
[0045] La descripción anterior de los modos de realización divulgados se divulga para posibilitar que un experto en la técnica elabore o use los modos de realización divulgados. Por lo tanto, la presente divulgación no pretende limitarse a los modos de realización mostrados en el presente documento, sino que se le ha de conceder el alcance más amplio posible compatible con los principios y características novedosas, según lo definido en las reivindicaciones siguientes.

Claims (13)

  1. REIVINDICACIONES
    i . Un procedimiento que comprende:
    ejecutar una sola instrucción (216) para identificar una ubicación de un elemento (207) dentro de una tabla (206) que está configurada para almacenar múltiples longitudes de datos, con la tabla almacenada en una memoria (202), con la única instrucción ejecutable por un procesador para:
    extraer (502) datos de campo de bits de un primer registro (222);
    determinar una desviación de bits, en el que la desviación de bits se basa en una longitud de datos del elemento dentro de la tabla y la desviación de bits es diferente para cada longitud de datos; e insertar (504) los datos del campo de bits en un segundo registro (224) que tiene una parte de dirección de tabla (228) y una parte de índice (230), en un punto de inserción en la parte de índice del segundo registro basado en la desviación de bits, con el segundo registro que incluye una dirección de tabla, en el que la dirección de tabla y los datos del campo de bits forman una dirección indexada al elemento dentro de la tabla.
  2. 2. El procedimiento según la reivindicación 1, que comprende además ejecutar una segunda instrucción para acceder a la memoria en la dirección indexada, con la segunda instrucción ejecutable por el procesador para leer datos desde o para escribir datos en la dirección indexada dentro de la tabla.
  3. 3. El procedimiento según la reivindicación 1, en el que los datos de campo de bits extraídos se insertan en una parte de bits menos significativa del segundo registro.
  4. 4. El procedimiento según la reivindicación 1, en el que la desviación de bits se codifica como información de desviación en el primer registro mediante un ensamblador en el momento de la compilación.
  5. 5. El procedimiento según la reivindicación 1, que comprende además acceder al elemento dentro de la tabla basándose en la dirección del índice.
  6. 6. El procedimiento según la reivindicación 1, en el que la extracción de los datos del campo de bits, la determinación de la desviación de bits y la inserción de los datos del campo de bits extraídos se realizan dentro de un solo ciclo de ejecución.
  7. 7. El procedimiento según la reivindicación 1, en el que las múltiples longitudes de datos comprenden un byte, una media palabra, una palabra y una palabra doble.
  8. 8. Un procesador (208) que comprende:
    un primer registro (222) que incluye un campo de bits (226);
    un segundo registro (224) que incluye una parte de dirección de tabla (228) y una parte de índice (230), con la parte de dirección de tabla (228) que incluye una dirección de tabla de una tabla (206) almacenada en una memoria (202), en el que la tabla (206) está configurada para almacenar elementos de diferentes longitudes de datos; y
    una unidad de ejecución (218) adaptada, en respuesta a la ejecución de una sola instrucción (216) para identificar una ubicación de un elemento dentro de la tabla, para determinar una desviación de bits para la inserción de datos de campo de bits en la parte de índice (230) del segundo registro (224), en el que la desviación de bits se basa en una longitud de datos del elemento (207) dentro de la tabla (206) y la desviación de bits es diferente para cada longitud de datos, y en el que la unidad de ejecución (218) está adaptada para generar una dirección para extraer datos de campo de bits del campo de bits (226) del primer registro (222) e insertar los datos de campo de bits extraídos en un punto de inserción en la parte de índice (230) del segundo registro (224) basándose en la desviación de bits, para generar una dirección indexada al elemento (207) dentro de la tabla (206).
  9. 9. El procesador de la reivindicación 8, en el que la unidad de ejecución (218) incluye un desplazador para desplazar bits, en el que el desplazador está adaptado para desplazar los datos de campo de bits extraídos mediante la desviación de bits y en el que los datos de campo de bits desplazados se insertan en la parte de índice (230) utilizando una operación de adición.
  10. 10. El procesador de la reivindicación 9, en el que el desplazador comprende un desplazador bidireccional.
  11. 11. El procesador de la reivindicación 8, en el que la tabla (206) está alineada con un límite de memoria (204) que es una potencia de dos mayor que o igual a un tamaño de la tabla (206).
  12. 12. El procesador de la reivindicación 8, en el que la parte de dirección de tabla (228) comprende una parte de bits más significativa del segundo registro (224).
  13. 13. El procesador de la reivindicación 8, en el que la unidad de ejecución (218) está adaptada para determinar la desviación de bits utilizando información de desplazamiento en el primer registro (222).
ES08851185T 2007-11-20 2008-11-20 Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla Active ES2725800T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/943,265 US7877571B2 (en) 2007-11-20 2007-11-20 System and method of determining an address of an element within a table
PCT/US2008/084189 WO2009067598A1 (en) 2007-11-20 2008-11-20 System and method of determining an address of an element within a table

Publications (1)

Publication Number Publication Date
ES2725800T3 true ES2725800T3 (es) 2019-09-27

Family

ID=40279010

Family Applications (1)

Application Number Title Priority Date Filing Date
ES08851185T Active ES2725800T3 (es) 2007-11-20 2008-11-20 Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla

Country Status (8)

Country Link
US (1) US7877571B2 (es)
EP (1) EP2223204B1 (es)
JP (1) JP5490711B2 (es)
KR (1) KR101283423B1 (es)
CN (1) CN101911011B (es)
ES (1) ES2725800T3 (es)
HU (1) HUE043204T2 (es)
WO (1) WO2009067598A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812516B2 (en) * 2011-10-18 2014-08-19 Qualcomm Incorporated Determining top N or bottom N data values and positions
KR20130087936A (ko) * 2012-01-30 2013-08-07 삼성전자주식회사 메모리 장치, 메모리 시스템 및 이의 프로그램 방법
CN104243085A (zh) * 2013-06-08 2014-12-24 阿尔卡特朗讯 用于编码重组位数据的方法、装置和基站控制器
US20170185402A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Instructions and logic for bit field address and insertion
US20190272175A1 (en) * 2018-03-01 2019-09-05 Qualcomm Incorporated Single pack & unpack network and method for variable bit width data formats for computational machines
KR102663496B1 (ko) * 2022-08-02 2024-05-08 이화여자대학교 산학협력단 프로세서의 레지스터 캐시 인덱스 결정 방법 및 이를 수행하는 전자 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5679352A (en) * 1979-12-03 1981-06-29 Nec Corp Address generator
JPS56164447A (en) * 1980-05-20 1981-12-17 Canon Inc Data processing device
JPS61165148A (ja) * 1984-12-14 1986-07-25 Fujitsu Ltd テ−ブルアクセス命令方式
JP3203401B2 (ja) * 1993-05-21 2001-08-27 三菱電機株式会社 データ処理装置
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US6263420B1 (en) 1997-09-17 2001-07-17 Sony Corporation Digital signal processor particularly suited for decoding digital audio
GB2352065B (en) * 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
EP1369774A1 (fr) * 2002-06-06 2003-12-10 CSEM Centre Suisse d'Electronique et de Microtechnique SA Recherche et Développement Dispositif d'élaboration d'adresses pour un processeur de signaux numériques
JP4545777B2 (ja) 2002-06-28 2010-09-15 ルネサスエレクトロニクス株式会社 データ処理装置
US7243210B2 (en) 2005-05-31 2007-07-10 Atmel Corporation Extracted-index addressing of byte-addressable memories
US8285972B2 (en) * 2005-10-26 2012-10-09 Analog Devices, Inc. Lookup table addressing system and method

Also Published As

Publication number Publication date
JP5490711B2 (ja) 2014-05-14
CN101911011B (zh) 2016-04-27
KR20100075697A (ko) 2010-07-02
EP2223204B1 (en) 2019-02-13
EP2223204A1 (en) 2010-09-01
KR101283423B1 (ko) 2013-07-08
WO2009067598A1 (en) 2009-05-28
CN101911011A (zh) 2010-12-08
US20090132783A1 (en) 2009-05-21
US7877571B2 (en) 2011-01-25
JP2011503758A (ja) 2011-01-27
HUE043204T2 (hu) 2019-08-28

Similar Documents

Publication Publication Date Title
ES2725800T3 (es) Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla
KR20170032424A (ko) 비휘발성 메모리 내의 복구 알고리즘
JP6022581B2 (ja) Fifoロード命令
JPH04313121A (ja) インストラクションメモリ装置
KR20110055629A (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
US7827356B2 (en) System and method of using an N-way cache
EP2734918B1 (en) Table call instruction for frequently called functions
ES2396800T3 (es) Microprocesador o microcontrolador potenciado
KR20110128787A (ko) 뱅크형 메모리에서의 선형 메모리를 갖는 마이크로컨트롤러
JP3935871B2 (ja) パイプラインを有する計算回路のためのメモリ・システムおよびパイプラインの機能ユニットにデータを提供する方法
CN111984317A (zh) 用于对存储器中的数据进行寻址的系统和方法
EP2542963B1 (en) System and method of processing hierarchical very long instruction packets
US9411724B2 (en) Method and apparatus for a partial-address select-signal generator with address shift
US20040054873A1 (en) Indirect indexing instructions
US8572147B2 (en) Method for implementing a bit-reversed increment in a data processing system
JP2009037386A (ja) プロセッサ及びプロセッサによるデータ読み出し方法
JPS61214029A (ja) 命令先取りバツフア
JPH07152535A (ja) メモリアドレス指定論理回路およびメモリアドレス指定方法
JP5480793B2 (ja) プログラマブルコントローラ
US20100115239A1 (en) Variable instruction width digital signal processor