ES2313349T3 - Composiciones de trazas de datos para un circuito integrado de memorias multiples. - Google Patents
Composiciones de trazas de datos para un circuito integrado de memorias multiples. Download PDFInfo
- Publication number
- ES2313349T3 ES2313349T3 ES05748092T ES05748092T ES2313349T3 ES 2313349 T3 ES2313349 T3 ES 2313349T3 ES 05748092 T ES05748092 T ES 05748092T ES 05748092 T ES05748092 T ES 05748092T ES 2313349 T3 ES2313349 T3 ES 2313349T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- memory
- address
- integrated circuit
- access
- 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
Links
- 239000000203 mixture Substances 0.000 title description 2
- 230000015654 memory Effects 0.000 claims abstract description 301
- 238000000034 method Methods 0.000 claims description 28
- 238000013481 data capture Methods 0.000 claims description 21
- 230000015572 biosynthetic process Effects 0.000 claims 4
- 238000007906 compression Methods 0.000 description 25
- 230000006835 compression Effects 0.000 description 25
- 238000013461 design Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000013144 data compression Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 239000012190 activator Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/40—Response verification devices using compression techniques
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
- G11C29/56008—Error analysis, representation of errors
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3177—Testing of logic operation, e.g. by logic analysers
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318505—Test of Modular systems, e.g. Wafers, MCM's
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0401—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
Abstract
Un circuito integrado (100) que comprende: una pluralidad de memorias (126a, 126b); y un módulo de traza (140) operativo para formar paquetes de trazas de datos, caracterizado porque cada memoria de la pluralidad de memorias (126a, 126b) es accesible de forma independiente y el medio de rastreo forma los paquetes de trazas de datos para los accesos de memoria de la pluralidad de memorias, incluyendo cada paquete de trazas de datos una dirección y datos para acceso de memoria a una memoria concreta y un identificador de memoria de la memoria concreta.
Description
Composiciones de trazas de datos para un
circuito integrado de memorias múltiples.
La presente invención se refiere en general a
circuitos integrados, y más específicamente a técnicas para
comprimir trazas de datos y direcciones para probar y depurar un
circuito integrado con múltiples memorias.
La mejora continua en la tecnología de
fabricación de circuitos integrados (CI) ha permitido que se
fabriquen más circuitos integrados y más complicados para
diferentes aplicaciones. Por ejemplo, un dispositivo tipo
sistema-en-chip (SOC) puede incluir
un microprocesador, una memoria, y otras unidades de proceso, todos
ellos incluidos en un único circuito integrado. El microprocesador
puede realizar varias funciones y/o controlar las unidades de
proceso. Las unidades de proceso pueden estar diseñadas para
realizar tareas de cálculo específicas. La memoria puede almacenar
códigos y datos para el microprocesador y unidades de proceso. La
integración de todos estos bloques de circuito en un único circuito
integrado reduce el coste y mejora la fiabilidad.
Un aspecto importante del desarrollo de un
circuito integrado es la prueba y depuración de los distintos
bloques de circuito dentro del circuito integrado. Una técnica
normalmente usada para depurar un circuito integrado es el rastreo
en tiempo real, que incluye rastreo de programas/instrucciones y el
rastreo de datos. Rastreo de programas se refiere a la captura de
líneas de código ejecutadas por los procesadores en el circuito
integrado, y el rastreo de datos hace referencia a la captura de
datos a los que acceden los procesadores. El rastreo en tiempo real
proporciona a un usuario/desarrollador la capacidad de capturar y
visualizar instrucciones y datos a los que se ha accedido en el
circuito integrado a velocidad de procesado. Esto ayuda al
usuario/desarrollador a encontrar fallos del hardware y/o código
tales como, por ejemplo, fallos oscuros que sólo se producen en
situaciones en las que hay una interacción impredecible entre el
hardware y el código.
La capacidad de rastreo en tiempo real se
proporciona normalmente mediante un módulo de traza y un puerto de
traza incluidos en el circuito integrado. El módulo de traza
normalmente incluye filtros configurables y lógica de activación
que permiten que el usuario/desarrollador seleccione qué
instrucciones y datos capturar e informar. La información capturada
a menudo se comprime y después se vehicula mediante un puerto de
traza a una herramienta de análisis localizada en la memoria
externa. Convencionalmente, el módulo de traza sólo soporta rastreo
de datos de una única memoria o una memoria de datos unificados
dentro del circuito integrado. El documento EP1139220 desvela un
componente de prueba-depuración de un SOC
generalmente de acuerdo con la técnica anterior descrita, que tiene
un módulo de traza de datos y un puerto de traza que están incluidos
en el circuito integrado, pero no desvela ninguna técnica
particularmente adecuada para SOC con múltiples memorias.
Se describen en el presente documento técnicas
para realizar el rastreo de datos en un circuito integrado con
múltiples memorias incluidas. Estas técnicas realizan el rastreo de
datos separadamente para cada memoria de forma que se puede
conseguir un mayor grado de compresión de las trazas de datos
capturados en el rastreo. Por lo general, las trazas de datos
pueden incluir direcciones y datos de memoria valores de contadores
de programa, referencia temporal, y cualquier otra información que
pueda ser útil para probar y depurar el circuito integrado. Las
trazas de datos de cada memoria se identifican adecuadamente según
un identificador de memoria asignado a dicha memoria.
Una forma de realización proporciona un circuito
integrado con múltiples memorias y un módulo de traza. Cada memoria
es accesible independientemente de las demás memorias, y las
memorias múltiples pueden ser accesibles en paralelo. El módulo de
traza forma paquetes de trazas de datos de los accesos de memoria de
las memorias múltiples, un paquete de trazas de datos para cada
acceso de memoria. Cada paquete de trazas de datos incluye una
dirección y/o datos para un acceso de memoria de una memoria
concreta y un identificador de memoria para dicha memoria.
En una forma de realización, el módulo de traza
incluye múltiples unidades de captura de datos, un generador de
corrientes de trazas, y un tampón. Se proporciona a cada memoria una
unidad de captura de datos. Cada unidad de captura de datos incluye
un registro de dirección, un comparador de dirección, un compresor
de dirección, un compresor de datos, y un empaquetador. El registro
de dirección almacena una dirección de un acceso de memoria
anterior de la memoria asociada. El comparador de dirección compara
una dirección de un acceso de memoria actual de la memoria asociada
frente a la dirección almacenada en el registro. El compresor de
dirección realiza la compresión del acceso de memoria actual, según
la salida del comparador de dirección, y genera un compresor
desarrollado para encontrar direcciones erróneas para el acceso de
memoria actual. El compresor de datos realiza la compresión de
datos para el acceso de memoria actual. El empaquetador forma un
paquete de trazas de datos para el acceso de memoria actual de la
memoria asociada. El generador de corriente de trazas recibe
paquetes de trazas de datos procedentes de las múltiples unidades de
captura de datos y genera una corriente de trazas de datos
conteniendo dichos paquetes. El tampón
almacena la corriente de trazas de datos y proporciona las trazas de datos a la memoria externa cuando se activa.
almacena la corriente de trazas de datos y proporciona las trazas de datos a la memoria externa cuando se activa.
Cada paquete de trazas de datos puede incluir
(1) un campo para el identificador de memoria, (2) un campo de
dirección de tamaño variable, (3) al menos un campo indicador del
tamaño del campo de dirección, (4) un campo de datos de tamaño
variable, (5) un campo indicador del tamaño del campo de datos, y
(6) posiblemente otros campos. Se describen a continuación varios
formatos de empaquetado. Cada paquete de trazas de datos puede
incluir (1) una dirección no comprimida, comprimida o nula, (2)
datos no comprimidos, comprimidos o nulos, y (3) otra información
tal como el identificador de memoria.
El circuito integrado puede incluir
adicionalmente uno o más procesadores de señal digital (DSP),
microprocesadores, controladores, y así sucesivamente. Las memorias
múltiples se pueden usar para almacenar datos para el o los
DSP(s).
Varios aspectos y formas de realización de la
invención se describen con más detalle a continuación.
\vskip1.000000\baselineskip
Las características y naturaleza de la presente
invención resultarán más evidentes a partir de la descripción
detallada definida a continuación cuando se toma en conjunto con los
dibujos en los que caracteres de referencia iguales se identifican
de forma correspondiente en todos ellos, y en los que:
La Fig.1 muestra un circuito integrado con
múltiples memorias incluidas y teniendo capacidad de rastreo para
prueba y depuración;
La Fig. 2 muestra un diagrama de bloques de un
módulo de traza;
La Fig. 3A muestra datos de accesos para un
circuito integrado convencional con una única memoria;
La Fig. 3B ilustra una técnica de compresión de
dirección para rastreo de datos;
La Fig. 3C muestra datos de accesos para un
circuito integrado con múltiples memorias;
La Fig. 4 muestra un diagrama de bloques de las
trazas de una unidad de captura de datos para un DSP;
Las Figs. 5A a 5D muestran cuatro formatos de
ejemplo de paquetes de trazas de datos; y
La Fig. 6 muestra un procedimiento para realizar
el rastreo de datos para un circuito integrado con múltiples (por
ejemplo, tres) memorias accesibles de manera independiente.
\vskip1.000000\baselineskip
El término "de ejemplo" que se usa en el
presente documento "sirve como ejemplo, caso o ilustración".
Cualquier forma de realización o diseño descrito en el presente
documento como "de ejemplo" no debe tomarse necesariamente
como preferido o ventajoso sobre otras formas de realización o
diseños.
La Fig. 1 muestra un diagrama de bloques de un
circuito integrado 100 con múltiples memorias incluidas y con
capacidad de rastreo para prueba y depuración. El circuito integrado
100 incluye múltiples procesadores y controladores incluidos como
un microprocesador 110, un procesador de señal digital (DSP) 120, y
un controlador de acceso directo a memoria (DMA) 130. El
microprocesador 110 realiza el procesado general del circuito
integrado 100 y puede implementarse con un conjunto reducido de
instrucciones de computación (RISC) o algún otro tipo de
microprocesador. DSP 120 es un procesador especializado
específicamente diseñado para realizar operaciones matemáticas muy
rápidamente. DSP 120 puede incluir varias unidades de proceso tales
como unidades multiplicador-acumulador (MAC),
unidades lógicas aritméticas (ALU), y así sucesivamente. El
controlador DMA 130 maneja intercambios de datos a alta velocidad
en tiempo real entre DSP 120 y otras unidades de proceso externas al
circuito integrado 100. Por simplicidad, las interconexiones entre
el microprocesador 110, DSP 120, y el controlador DMA 130 no se
muestran en la Fig. 1. En general, el circuito integrado 100 puede
incluir cualquier número y cualquier tipo de procesadores y
controladores.
El microprocesador 110 implementa una
arquitectura "Harvard", que usa memoria de instrucciones 114 y
memoria de datos 116 diferenciada para almacenar instrucciones y
datos, respectivamente. Un controlador de memoria 112 proporciona
al microprocesador 110 las instrucciones y datos necesarios y datos
de las memorias 114 y 116. DSP 120 implementa una arquitectura
"super-Harvard" que usa memoria de
instrucciones 124 diferenciada para almacenar instrucciones y
múltiples memorias de datos 126a a 126c para almacenar datos. Las
memorias 126a, 126b, y 126c se denominan también memorias de datos
A, B, y C, respectivamente. Un controlador de memoria 122
proporciona al DSP 120 las instrucciones y datos necesarios de las
memorias 124 y 126. El controlador DMA 130 también interactúa con
el controlador de memoria 122 para intercambios de datos. En
general, los procesadores y controladores del circuito integrado
100 pueden implementar cualquier tipo de arquitectura de memoria.
Más aún, el circuito integrado 100 puede incluir cualquier número
de memorias.
Cada memoria en el circuito integrado 100 es una
memoria independiente que puede accederse individualmente para
almacenar/recuperar instrucciones/datos. Cada memoria se gestiona
mediante un controlador de memoria asociado. Cada memoria puede
denominarse también como banco de memoria, una memoria caché, o con
cualquier otra terminología. Convencionalmente, un circuito
integrado incluye una única memoria o una memoria unificada para
almacenar datos. La memoria de datos única pude accederse
típicamente para obtener un número concreto de (por ejemplo,
cuatro) bytes de datos a la vez. Múltiples memorias de datos se
pueden usar para obtener beneficios variados tales como, por
ejemplo, operación en paralelo, rendimiento de memoria más elevado,
y mayor flexibilidad de almacenamiento. Por ejemplo, se pueden
almacenar diferentes tipos de datos en diferentes memorias, y un
DSP puede usar las memorias diferenciadas para conseguir cargas
paralelas de diferentes tipos de datos. Las memorias de datos
múltiples se diferencian de una memoria unificada en que estas
múltiples memorias de datos pueden usar unidades de generación de
direcciones independientes, buses de memoria independientes,
instrucciones pueden realizar datos de accesos paralelos de las
memorias diferenciadas, anchuras de datos independientes, y así
sucesivamente.
El circuito integrado 100 incluye además un
módulo de traza 140, un puerto de traza 142, y un puerto JTAG
(grupo conjunto de actividades de prueba) 138, que colectivamente
proporcionan capacidades de prueba y depuración del circuito
integrado. El módulo de traza 140 incluye varios bloques de circuito
y registros que se usan para monitorizar los buses internos del
microprocesador 110, DSP 120, y del controlador DMA 130, como se
describe más adelante. El módulo de traza 140 puede capturar
información respecto del estado de los procesadores 110 y 120 y
controlador 130 para facilitar la prueba y depuración del circuito
integrado 100. El módulo de traza 140 puede capturar adicionalmente
la información de manera "no intrusiva", es decir, sin añadir
perturbación al rendimiento de los procesadores y controlador de
forma que dichas unidades puedan operar a máxima velocidad. El
módulo de traza 140 proporciona la información capturada en forma de
corriente de trazas de datos mediante el puerto de traza 142. El
puerto JTAG 138 se usa para configurar el módulo de traza 140 y
posiblemente los procesadores y controlador del circuito integrado.
Por simplicidad, las interconexiones entre el puerto JTAG 138 y los
procesadores y controlador no se muestran en la Fig. 1.
Una herramienta de análisis 190 interactúa con
un circuito integrado 100 mediante un módulo de interfaz 180. La
herramienta de análisis 190 puede ser un sistema computerizado, un
analizador lógico y así sucesivamente, y puede implementarse
mediante hardware, software, o una combinación de los mismos. Un
usuario/desarrollador que está probando o depurando el circuito
integrado 100 puede configurar el módulo de traza 140 mediante la
herramienta de análisis 190, módulo de interfaz 180, y el puerto
JTAG 138. El usuario/desarrollador puede, mediante el puerto de
traza 142 y el módulo de interfaz 180, recibir la corriente de
trazas de datos que contiene información capturada mediante el
módulo de traza 140. El usuario/desarrollador puede visualizar y
analizar la información capturada usando la herramienta de análisis
190.
La Fig. 2 muestra un diagrama de bloques de una
forma de realización del módulo de traza 140. El módulo de traza
140 incluye tres unidades de captura de trazas de datos 210a, 210b,
y 210c para el microprocesador 110, DSP 120, y el controlador DMA
130, respectivamente, un generador de corriente de trazas 250, y un
tampón 260. Cada unidad de captura de trazas de datos 210 captura
trazas de datos para un respectivo procesador o controlador y
proporciona paquetes de trazas de datos, como se describe más
adelante.
El generador de corriente de trazas 250 recibe
paquetes de trazas de datos procedentes de todas las unidades de
captura de trazas de datos 210 y genera una corriente de trazas de
datos que contiene estos paquetes. Esta corriente única de trazas
de datos transporta así trazas de datos de instrucciones y accesos a
memoria de todas las memorias del circuito integrado 100. El tampón
260 almacena las trazas de datos procedentes del generador de
corriente de trazas 250 y proporciona las trazas de datos
almacenados cuando se activa. El tampón 260 puede estar lleno de
trazas de datos según los siguientes mecanismos de activación:
\bullet Traza tras emparejamiento - el tampón
260 comienza a llenarse con trazas de datos una vez se ha recibido
el paquete de activación;
\bullet Traza antes de emparejamiento - el
tampón 260 se llena continuamente con trazas de datos hasta
recepción del paquete activador; y
\bullet Traza en centro - el tampón 260 se
llena continuamente con trazas de datos hasta recepción del paquete
activador y después se llena con un número específico de entradas de
trazas de datos tras recepción del paquete activador.
En general, el diseño del módulo de traza puede
depender de varios factores tales como, por ejemplo, el número y
tipo de procesadores y controladores incluidos en el circuito
integrado, las memorias asociadas con estos procesadores y
controladores, las capacidades deseadas de depuración, y así
sucesivamente.
La Fig. 3A muestra una secuencia de datos de
accesos 310 de ejemplo para un circuito integrado convencional con
una única memoria. Cada dato de acceso está asociado con una
dirección de memoria y los datos correspondientes a dicha
dirección. Para rastreo de datos, el módulo de traza recibe tanto la
dirección como los datos para cada acceso de memoria, captura la
información pertinente, y genera un paquete de trazas de datos para
el acceso de memoria. El módulo de traza realiza típicamente
compresión de la dirección y/o datos con el fin de reducir la
cantidad de información a incluir en el paquete de trazas de
datos.
La Fig. 3B ilustra una técnica de compresión de
dirección usada a menudo para rastreo de datos. Esta técnica de
compresión de dirección está basada en la asunción de que accesos
consecutivos a memorias se realizan a menudo a localizaciones de
memoria cercanas entre sí. En este caso, la dirección de cada acceso
de memoria puede diferir de la dirección de un acceso de memoria
anterior en sólo un pequeño número de orden inferior o bits menos
significativos. Se usa un registro de dirección para almacenar la
dirección del último acceso de memoria. La dirección del acceso de
memoria actual se compara con la dirección almacenada para el último
acceso de memoria, y sólo se incluyen en el paquete de trazas de
datos los bits de orden inferior en la dirección actual que se
diferencian de los de la dirección almacenada (en lugar de la
dirección actual completa).
Para facilidad de implementación, el paquete de
trazas de datos puede diseñarse para transportar un cierto número
de bits de dirección (por ejemplo, 5, 12, o 18 bits de dirección,
para un diseño de ejemplo de paquete de trazas de datos descrito
más adelante). En este caso, se incluye en el paquete de trazas de
datos el menor número posible de bits de dirección según el número
de bits de orden inferior que son diferentes. Por ejemplo, si tres
bits de orden inferior de dirección son diferentes, entonces el
paquete de trazas de datos incluiría cinco bits de orden inferior
de dirección para el ejemplo de diseño indicado anteriormente. En
efecto, la dirección de compresión se cuantiza a 5, 12, o 18 bits
dependiendo del número de bits de orden inferior que son
diferentes. El uso de un único registro para almacenar la dirección
del último acceso de memoria proporciona adecuado rendimiento de
compresión de dirección para un circuito integrado con una única
memoria.
La Fig. 3C muestra una secuencia de datos de
acceso 330 de ejemplo para un circuito integrado con múltiples
memorias (por ejemplo, para el circuito integrado 100 con tres
memorias de datos 126a, 126b, y 126c). Las memorias múltiples
pueden ser accesibles en paralelo, por ejemplo, para encontrar o
almacenar datos de una simple instrucción DSP, que puede incluir
múltiples operaciones aritméticas y/o lógicas. Los datos de acceso
para cada memoria se asocian con una dirección de memoria y los
correspondientes datos en dicha dirección. Puesto que las memorias
múltiples pueden ser accesibles de manera independiente, las
direcciones de estas memorias puede que no estén próximas entre si
o estar correlacionadas de alguna manera. En este caso, usando un
único registro de dirección para almacenar una única dirección de
memoria para compresión de dirección de memorias múltiples
proporcionaría poco rendimiento de compresión si las direcciones de
estas memorias difieren ampliamente. Como ejemplo, las direcciones
actuales de las memorias A, B, y C pueden ser 100, 5000, y 10000,
respectivamente. Si está disponible un registro de dirección,
entonces este registro almacenaría inicialmente la dirección de la
memoria A de 100, que a continuación se usa para la compresión de la
dirección de la memoria B de 5000, que a continuación se usa para
la compresión de la dirección de la memoria C de 10000, que a
continuación se usa para la compresión de la dirección de la
memoria A para el siguiente acceso de memoria, y así sucesivamente.
Como puede verse, el rendimiento de compresión de dirección puede
ser pobre usando un único registro de dirección para memorias
múltiples.
Se pueden usar múltiples registros de dirección
para obtener rendimiento mejorado de compresión de dirección en un
circuito integrado con múltiples memorias. Un registro de dirección
se usa con cada memoria, y cada registro almacena la dirección del
último acceso de memoria para su memoria asociada. La dirección del
acceso de memoria actual de cada memoria se compara con la
dirección almacenada en el registro de dicha memoria. Para el
ejemplo anterior, los registros A, B, y C almacenarían direcciones
de 100, 5000, y 10000, respectivamente, para los actuales accesos
de memoria de las memorias A, B, y C, respectivamente. Para el
siguiente acceso de memoria, la dirección de la memoria A se
compararía con la dirección almacenada en el registro A, la
dirección de la memoria B se compararía con la dirección almacenada
en el registro B, y la dirección de la memoria C se compararía con
la dirección almacenada en el registro C. Si se realizan accesos
consecutivos a memoria para cada una de estas memorias múltiples a
localizaciones de memoria próximas entre sí, que es la asunción
básica usada en el circuito integrado de memoria única, entonces se
puede conseguir buen rendimiento de compresión de dirección en el
circuito integrado con múltiples memorias.
La Fig. 4 muestra un diagrama de bloques de una
forma de realización de una unidad de captura de trazas de datos
210b para DSP 120. La unidad 210b incluye tres unidades de captura
de datos 410a, 410b, y 410c para memorias de datos 126a, 126b, y
126c, respectivamente, y una unidad de captura de instrucciones 412
para la memoria de instrucciones 124. Cada unidad de captura de
datos 410 incluye una unidad de compresión 420, un empaquetador
430, y un filtro 440.
En la unidad de captura de datos 410a de la
memoria de datos 126a, una unidad de compresión 420a recibe una
dirección y los correspondientes datos (que se denominan como
memA_direcc y memA_datos, respectivamente) de un
acceso de memoria actual a la memoria 126a. La dirección actual,
memA_direcc, se almacena en un registro de dirección 422a y
también proporciona a un comparador de dirección 424a. El comparador
424a recibe también una dirección almacenada procedente del
registro 422a de un acceso de memoria anterior a una memoria de
datos 126a, compara la dirección actual con la dirección almacenada,
y proporciona el resultado de la comparación a un compresor de
dirección 426a. El compresor de dirección 426a determina el número
de bits de orden inferior de dirección en la dirección actual que
son diferentes de los de la dirección almacenada y el número mínimo
(N) de bits de dirección a incluir en el paquete de trazas de datos
para el actual acceso de memoria. Se puede derivar también la
compresión de dirección. El compresor de dirección 426a proporciona
a un empaquetador 430a una dirección comprimida que contiene N bits
de orden inferior en la dirección actual o la dirección actual no
comprimida.
Un compresor de datos 428a realiza compresión de
los datos del actual acceso de memoria. La compresión de los datos
se puede realizar de diferentes maneras. Por ejemplo, se pueden
eliminar los ceros iniciales de los datos. Como otro ejemplo, los
datos del acceso de memoria actual pueden compararse con los datos
del anterior acceso de memoria, de manera similar como para la
compresión de direcciones, y sólo se envía la diferencia. Algunos
otros ejemplos incluyen (1) eliminación de todos los ceros de los
datos y (2) restringir la anchura de los datos a 8 bits, 16 bits, u
otro número predeterminado de bits, dependiendo de un conocimiento
anterior de los datos a rastrear, por ejemplo, mediante selección
del usuario. También se puede derivar la compresión de datos. El
compresor de datos 428a proporciona datos comprimidos o sin
comprimir al empaquetador 430a.
El empaquetador 430a recibe las direcciones
comprimidas o no comprimidas procedentes del compresor de dirección
426a y los datos comprimidos o no comprimidos datos procedentes del
compresor de datos 428a. El empaquetador 430a forma un paquete de
trazas de datos para el actual acceso de memoria a la memoria 126a,
como se describe más adelante. Un filtro 440a proporciona filtrado
controlado por el usuario para el rastreo de datos de forma que se
pueda minimizar la cantidad de trazas de datos a enviar a la memoria
externa. Por ejemplo, el rastreo sólo se puede realizar (1) para
memorias de acceso en un intervalo de direcciones específico, (2) si
se cumplen algunas condiciones específicas, y/o (3) según algunos
otros criterios. El filtro 440a proporciona trazas de datos
filtrados para la memoria 126a (por ejemplo, paquetes de trazas de
datos que cumplen los criterios de filtrado).
La Fig. 4 muestra una forma de realización
específica de una unidad de captura de datos 410a para la memoria
126a. Las otras dos unidades de captura de datos 410b y 410c
realizan compresión de direcciones y datos, empaquetamiento y
filtración para accesos de memoria a las memorias 126b y 126c,
respectivamente. La unidad de captura de instrucciones 412 puede
implementarse de igual o diferente forma que la unidad de captura de
datos 410.
En general, la compresión, empaquetamiento y
compresión de direcciones y datos se puede realizar de diferentes
formas, y posiblemente en un orden diferente al que se muestra en la
Fig. 4. Por ejemplo, el filtrado se puede realizar antes de la
compresión. Como se muestra en la Fig. 4, se usan tres registros de
dirección 422a, 422b, y 422c diferentes para almacenar los últimos
accesos de memoria a las memorias de datos 126a, 126b, y 126c,
respectivamente. Esto permite la compresión de dirección
independiente de las tres memorias de datos.
La Fig. 4 muestra un diseño en el que una unidad
de captura de datos 410 independiente se usa para capturar trazas
de datos para cada memoria de datos. Una única unidad de captura de
datos puede capturar también trazas de datos para todas las
memorias de datos, por ejemplo, en una división de tiempo
multiplexada (TDM). Esta única unidad de captura de datos puede
realizar compresión de dirección independientemente para cada una de
las memorias de datos mediante (1) uso de un registro independiente
para almacenar la dirección del acceso de memoria anterior para
cada memoria y (2) comparar la dirección del actual acceso de
memoria de cada memora con la dirección almacenada de dicha
memoria.
Las Figs. 5A a 5D muestran cuatro formatos de
ejemplo de un paquete de trazas de datos. Estos formatos de ejemplo
son para un diseño específico en el que (1) una dirección completa
contiene 18 bits, (2) datos completos o no comprimidos para una
dirección de memoria dada contiene 32 bits, y (3) están disponibles
tres memorias de datos. Un paquete de trazas de datos en uno de los
cuatro posibles formatos se puede formar para cada acceso de
memoria de una memoria de datos dada.
La Fig. 5A muestra un formato de paquete 502
para una dirección completa. El formato 502 contiene 8 bytes. El
byte 0 lleva (1) un campo de 4 bit que contiene un valor binario de
"0010" que indica un paquete de trazas de datos, (1) un campo
DS de 2 bit que indica el tamaño del campo de datos en el paquete, y
(3) un campo de 2 bit que contiene un valor binario de "10"
para indicar un paquete de trazas de datos. Para esta forma de
realización, un paquete de trazas de datos se indica mediante un
valor de "0010" para el campo de 4 bit y un valor de "10"
para el campo de 2 bit inmediatamente a la derecha. Se pueden usar
otros motivos de bits y/u otros medios para indicar un paquete de
trazas de datos. En una forma de realización, el campo DS contiene
un valor binario de "00", "01", "10", o "11"
para un tamaño de campo de datos de 0 byte, 1 byte, 2 bytes, o 4
bytes, respectivamente. Se pueden usar los valores binarios de
"00", "01", y "10" en el campo DS para los datos
comprimidos, y se puede usar el valor binario de "11" para los
datos no comprimidos. El Byte 1 lleva (1) un campo de 1 bit que
contiene un valor binario de "1" para indicar que se incluye
otro bit de dirección en el paquete, (2) un campo de dirección de 5
bit que contiene los 5 bits de orden inferior de la dirección (es
decir, bits de dirección 0 a 4), y (3) un campo de 2 bit que indica
la memoria de datos concreta a la que pertenece el paquete. En una
forma de realización, el campo MB contiene un valor binario de
"00", "01", nuestro "10" para la memoria de datos A,
B, o C, respectivamente. El campo MB lleva así un identificador de
memoria de la memoria de datos específica a la que se accede.
El byte 2 lleva (1) un campo de 1 bit que
contiene un valor binario de "1" para indicar que se incluye en
el paquete otro bit de dirección y (2) un campo de dirección de 7
bits que contiene los siete bits de orden intermedio de la
dirección (es decir, bits de dirección 5 a 11). El byte 3 lleva (1)
un campo de 2 bit que contiene un valor binario de "00" y (2)
un campo de dirección de 6 bit que contiene los 6 bits de orden
superior de la dirección (es decir, bits de dirección 12 a 17). En
este ejemplo, DS = 11, y los bytes 5 a 8 llevan un campo de datos
de 4 bits para los datos en la dirección indicada.
La Fig. 5B muestra un formato de paquete 504
para una dirección parcial de 12 bits. El formato 504 contiene 7
bytes. Los bytes 0 y 1 del formato 504 son iguales a los bytes 0 y 1
del formato 502 de la Fig. 5A. El byte 2 lleva (1) un campo de 1
bit que contiene un valor binario de "0" para indicar que no se
incluyen en el paquete más bytes de dirección y (2) un campo de
dirección de 7 bit que contiene los 7 bits de orden medio de la
dirección. En este ejemplo, DS = 11, y los bytes 3 a 6 llevan un
campo de datos de 4 bytes.
La Fig. 5C muestra un formato de paquete 506
para una dirección parcial de 5 bit. El formato 506 contiene 6
bytes. El byte 0 del formato 506 es el mismo que el byte 0 del
formato 502 de la Fig. 5A. El byte 1 lleva (1) un campo de 1 bit
que contiene un valor binario de "0" para indicar que ya no se
incluyen en el paquete más bytes de dirección, (2) un campo de
dirección de 5 bit que contiene loa 5 bits de orden inferior de la
dirección, y (3) el campo MB de 2 bits. En este ejemplo, DS= 11, y
los bytes 2 a 5 llevan un campo de datos de 4 byte.
La Fig. 5D muestra un formato de paquete 508
para cuando no hay dirección. El formato 508 también contiene 6
bytes. El byte 0 del formato 508 es igual que el byte 0 del formato
502 de la Fig. 5A. El byte 1 lleva (1) un campo de 1 bit que
contiene un valor binario de "0" para indicar que ya no se
incluyen en el paquete más bytes de dirección, (2) un campo de 5
bit que contiene un valor binario de "00000" para indicar que
no se incluye una dirección en el paquete de trazas de datos, y (3)
el campo MB de 2 bit. En este ejemplo, DS = 11, y los bytes 2 a 5
llevan un campo de datos de 4 bit.
Para formatos de paquete 502, 504, 506 y 508, un
valor binario de "1" en el bit más significativo (más a la
izquierda) de un byte de dirección indica que se incluye otro byte
de dirección en el paquete. También se pueden usar otros mecanismos
para indicar el tamaño de la dirección en el paquete de trazas de
datos, y esto queda dentro del alcance de la invención.
Las Figs. 5A a 5D muestran cuatro formatos de
ejemplo para el paquete de trazas de datos. El concepto general
descrito en las Figs. 5A a 5D puede extenderse para cubrir otros
diseños con direcciones y datos de otros tamaños, para cualquier
número de memorias de datos, y así sucesivamente. En general, se
puede definir cualquier número de formatos de paquete. Cada formato
de paquete puede incluir cualquier número y tipo de campos, y cada
campo puede incluir cualquier número de bits. Los campos también se
pueden disponer de manera diferente a la disposición mostrada en
las Figs. 5A a 5D. El paquete de trazas de datos incluye un
mecanismo para iniciar la memoria o banco de memoria específico a
la que pertenece el paquete. Si un campo designado se usa para
indicar la memoria de datos, como se muestra en las Figs. 5A a 5D,
entonces el tamaño de este campo se puede determinar según el
número de memorias de datos en el circuito integrado. El paquete de
trazas de datos incluye también un mecanismo (por ejemplo, un bit
designado en cada bite de dirección) para indicar el tamaño de la
dirección incluida en el paquete.
Haciendo referencia de nuevo a las Figs. 1 y 2,
el generador de corriente de trazas 250 genera una corriente de
trazas de datos conteniendo los paquetes de trazas de datos
procedentes de todas las unidades de captura de trazas de datos
210. Cada paquete de trazas de datos contiene un campo con un
identificador de memoria para la memoria específica a la que
pertenece el paquete. Un descompresor de trazas de la herramienta de
análisis 190 puede demultiplexar los paquetes de trazas de datos en
la corriente de trazas de datos en múltiples subcorrientes, una
subcorriente para cada memoria, según los identificadores de memoria
incluidos en dichos paquetes.
La Fig. 6 muestra un diagrama de flujo de un
proceso 600 para realizar rastreo de datos en un circuito integrado
con múltiples (por ejemplo, tres) memorias accesibles de forma
independiente. Inicialmente, la memoria a la que se accede se
identifica y denota como la memoria X, dónde X puede ser A, B, o C
para el ejemplo de diseño mostrado en las Figs. 1 y 4 (bloque
610).
Para el rastreo de datos de la memoria X, se
recupera una dirección almacenada de un acceso de memoria anterior
a la memoria X a partir del registro de dirección X usado para la
memoria X (bloque 620). Una dirección actual para un acceso de
memoria actual a la memoria X se almacena en paralelo en el registro
de dirección X (bloque 622). La dirección actual se compara con la
dirección almacenada para la memoria X, por ejemplo, realizando una
operación exclusiva -OR (XOR) en las dos direcciones (bloque 624).
Se puede realizar la compresión de dirección sobre la dirección
actual, según el resultado de la comparación, para obtener una
dirección comprimida para el acceso de memoria a la memoria X
(bloque 626). La compresión de datos puede realizarse también para
el actual acceso de memoria a la memoria X (bloque 628). Se forma un
paquete de traza de datos para el actual acceso de memoria a la
memoria X (bloque 630). Este paquete de trazas de datos incluye (1)
un identificador de memoria para la memoria X, (2) una dirección
completa, comprimida o nula para el actual acceso de memoria, y (3)
datos comprimidos, no comprimidos o nulos para el actual acceso de
memoria.
El procesamiento en bloques de 620 a 630 puede
realizarse por separado para cada memoria, por ejemplo, mediante la
unidad de captura de datos asignada a dicha memoria. Una corriente
de trazas de datos se genera con los paquetes de trazas de datos
para los accesos de memorias de todas las memorias (bloque 632). La
corriente de trazas de datos se tampona y suministra a la memoria
externa cuando se activa (bloque 634).
Las técnicas de rastreo de datos descritas en el
presente documento permiten la compresión eficaz de trazas de datos
en un circuito integrado con múltiples memorias. Dicho circuito
integrado puede tener una o más DSP insertas, como se muestra en la
Fig. 1. Una DSP típicamente usa múltiples memorias de datos para
mayor capacidad de acceso a datos, usa instrucciones de longitud
variable, y a menudo ejecuta bucles cerrados por ejemplo, para
filtros digitales). Las técnicas de rastreo de datos descritas en el
presente documento pueden usarse con ventaja para depurar un
circuito integrado con una o más DSP insertas.
En general, las técnicas de rastreo de datos
descritas en el presente documento pueden usarse en cualquier
circuito integrado con múltiples memorias. Dicho circuito integrado
puede incluir uno o más microprocesadores insertos, una o más DSP,
y/u otros controladores (por ejemplo, como se muestra en la Fig. 1).
Los circuitos integrados con múltiples memorias se usan
habitualmente en dispositivos inalámbricos de comunicación (por
ejemplo, teléfonos móviles), asistentes digitales personales (PDA),
y otros dispositivos electrónicos. Las técnicas de rastreo de datos
descritas en el presente documento se pueden usar también para
diferentes aplicaciones finales, tal como comunicación inalámbrica,
computación, trabajo en red, y así sucesivamente.
Las técnicas de rastreo de datos descritas en el
presente documento se pueden implementar en hardware, firmware, o
una combinación de los anteriores. Para una implementación en
hardware, las unidades usadas para soportar el rastreo de datos
(por ejemplo, módulo de traza 140, puerto de traza 142, y puerto
JTAG 138) se pueden implementar con hardware que tenga incluido un
circuito integrado, una aplicación específica de circuito integrado
(ASIC), un dispositivo de procesado de señal digital (DSPD), un
dispositivo lógico programable (PLD), una matriz de pasarela lógica
programable (FPGA), y así sucesivamente. El rastreo de datos también
se puede realizar basándose o junto con códigos firmware que
realicen las funciones descritas en el presente documento. Los
códigos Firmware se pueden almacenar en una memoria (por ejemplo,
la memoria 124 en la Fig. 1) y ejecutarse en un procesador o unidad
de proceso (por ejemplo, módulo de traza 140).
La anterior descripción de las formas de
realización descritas se proporciona para permitir que cualquier
persona experta en la técnica realice o use la presente invención.
Se pueden realizar varias modificaciones de las formas de
realización que serán fácilmente evidentes para los expertos en la
técnica, y los principios genéricos definidos en el presente
documento se pueden aplicar a otras formas de realización sin
separarse del ámbito de la invención. Así, no se pretende que la
presente invención se limite a las formas de realización mostradas
en el presente documento sino que se acuerda un alcance consistente
con la invención desvelada en el presente documento.
Claims (29)
1. Un circuito integrado (100) que
comprende:
una pluralidad de memorias (126a, 126b); y
un módulo de traza (140) operativo para formar
paquetes de trazas de datos,
caracterizado porque cada memoria de la
pluralidad de memorias (126a, 126b) es accesible de forma
independiente y el medio de rastreo forma los paquetes de trazas de
datos para los accesos de memoria de la pluralidad de memorias,
incluyendo cada paquete de trazas de datos una dirección y datos
para acceso de memoria a una memoria concreta y un identificador de
memoria de la memoria concreta.
2. El circuito integrado (100) de la
reivindicación 1, en el que el módulo de traza (140) incluye una
pluralidad de unidades de captura de datos (410a, 410b), una unidad
de captura de datos (410) para cada una de la pluralidad de
memorias (126a, 126b), cada unidad de captura de datos operativa
para formar paquetes de trazas de datos para memorias de acceso de
la memoria asociada con la unidad de captura de datos.
3. El circuito integrado (100) de la
reivindicación 2, en el que el módulo de traza (140) incluye además
un generador de corriente de trazas (250) operativo para generar
una corriente de trazas de datos que contiene paquetes de trazas de
datos procedentes de la pluralidad de unidades de captura de
datos.
4. El circuito integrado (100) de la
reivindicación 2, en el que cada unidad de captura de datos (410)
incluye medios para almacenar (422) una dirección de un acceso de
memoria anterior a la memoria asociada, y medios para comparar
(424) una dirección de un acceso de memoria actual de la memoria
asociada con la dirección almacenada en el registro.
5. El circuito integrado (100) de la
reivindicación 4, en el que cada unidad de captura de datos incluye
además medios para generar (426) una dirección comprimida para el
acceso de memoria actual de la memoria asociada según una salida
del medio de comparación (424), y en el que el paquete de trazas de
datos del acceso de memoria actual incluye la dirección
comprimida.
6. El circuito integrado (100) de la
reivindicación 4, en el que cada unidad de captura de datos es
operable para omitir la dirección del acceso de memoria actual de
la memoria asociada procedente del paquete de trazas de datos para
el actual acceso de memoria.
7. El circuito integrado (100) de la
reivindicación 2, en el que cada unidad de captura de datos incluye
un compresor de datos operativo para comprimir datos de un acceso
de memoria actual a la memoria asociada, y en el que el paquete de
trazas de datos del acceso de memoria actual incluye los datos
comprimidos.
8. El circuito integrado (100) de la
reivindicación 7, en el que el compresor de datos es operativo para
eliminar los ceros iniciales o bits iniciales de signo en los datos
del acceso de memoria actual.
9. El circuito integrado (100) de la
reivindicación 2, en el que cada unidad de captura de datos incluye
medios para formar (430) un paquete de trazas de datos para un
acceso de memoria actual a la memoria asociada, incluyendo el
paquete de trazas de datos la dirección y datos del acceso de
memoria actual a la memoria asociada y el identificador de memoria
de la memoria asociada.
10. El circuito integrado (100) de la
reivindicación 1, en el que cada paquete de trazas de datos incluye
un campo para el identificador de memoria.
11. El circuito integrado (100) de la
reivindicación 1, en el que cada paquete de trazas de datos incluye
un campo de dirección de tamaño variable.
12. El circuito integrado (100) de la
reivindicación 11, en el que cada paquete de trazas de datos incluye
al menos un campo indicador del tamaño del campo de dirección.
13. El circuito integrado (100) de la
reivindicación 1, en el que cada paquete de trazas de datos incluye
un campo de datos de tamaño variable.
14. El circuito integrado (100) de la
reivindicación 1 y comprende al menos tres memorias de acceso
independiente (126a, 126b, 126c).
15. El circuito integrado (100) de la
reivindicación 1, que comprende además:
un procesador de señal digital (120)
operativamente asociado a la pluralidad de memorias (126a,
126b).
16. El circuito integrado (100) de la
reivindicación 15, en el que la pluralidad de memorias es operativa
para almacenar datos para el DSP.
17. El circuito integrado (100) de la
reivindicación 1, en el que la pluralidad de memorias es accesible
en paralelo mediante una instrucción.
18. El circuito integrado (100) de la
reivindicación 1, en el que los medios para formar paquetes de
trazas de datos incluyen medios para comprimir de manera
independiente las direcciones de las memorias de acceso de cada
memoria.
19. El circuito integrado (100) de la
reivindicación 1, que comprende además:
una pluralidad de registros (422a, 422b), un
registro para cada memoria (126), cada registro operativo para
almacenar una dirección de un acceso de memoria anterior a una
memoria asociada con el registro; un comparador (424) operativo
para comparar una dirección de un acceso de memoria actual de una
memoria seleccionada con la dirección almacenada en el registro de
la memoria seleccionada, siendo la memoria seleccionada una de la
pluralidad de memorias;
y
un compresor de dirección (426) operativo para
generar una dirección comprimida para el acceso de memoria actual
de la memoria seleccionada según resultado de comparación procedente
el comparador.
20. El circuito integrado (100) de la
reivindicación 19, que comprende además:
un empaquetador (430) operativo para formar un
paquete de trazas de datos para el acceso de memoria actual de la
memoria seleccionada, incluyendo el paquete de trazas de datos la
dirección comprimida y los datos del actual acceso de memoria de la
memoria seleccionada.
21. El circuito integrado (100) de la
reivindicación 20, que comprende además:
un compresor de datos operativo para comprimir
datos del acceso de memoria actual a la memoria seleccionada, y en
el que el paquete de trazas de datos del acceso de memoria actual de
la memoria seleccionada incluye los datos comprimidos.
22. El circuito integrado (100) de la
reivindicación 19, que comprende además:
un procesador de señal digital (120) acoplado
operativamente a la pluralidad de memorias, y en el que la
pluralidad de memorias es operable para almacenar datos para el
DSP.
23. El circuito integrado (100) de la
reivindicación 19, en el que una dirección completa incluye F bits
de dirección, y en el que la dirección comprimida se representa por
una de las S posibles representaciones, siendo S inferior a F, y
cada representación está asociada con un número diferente de bits de
dirección.
24. Un procedimiento para realizar rastreo de
datos en un circuito integrado (100) con múltiples memorias de
acceso independiente (126a, 126b), que comprende:
formar un primer paquete de trazas de datos de
un acceso de memoria a una primera memoria dentro del circuito
integrado (100), incluyendo el primer paquete de trazas de datos una
primera dirección y datos del acceso de memoria de la primera
memoria y un primer identificador de memoria de la primera memoria;
y
formar un segundo paquete de trazas de datos
para un acceso de memoria de una segunda memoria dentro del circuito
integrado (100), incluyendo el segundo paquete de trazas de datos
una segunda dirección y datos para el acceso de memoria de la
segunda memoria y un segundo identificador de memoria para la
segunda memoria.
25. El procedimiento de la reivindicación 24, en
el que la formación de un primer paquete de trazas de datos incluye
almacenar una dirección de un acceso de memoria anterior de la
primera memoria, y comparar la primera dirección con la dirección
almacenada.
26. El procedimiento de la reivindicación 25, en
el que la formación de un primer paquete de trazas de datos incluye
además generar una dirección comprimida para el acceso de memoria de
la primera memoria según una salida del comparador, y en el que el
primer paquete de trazas de datos incluye la dirección
comprimida.
27. El procedimiento de la reivindicación 24, en
el que la formación de un primer paquete de trazas de datos incluye
comprimir datos para el acceso de memoria de la primera memoria, y
en el que el primer paquete de trazas de datos incluye los datos
comprimidos para la primera memoria.
28. El procedimiento de la reivindicación 24,
que comprende además: generar una corriente de trazas de datos
conteniendo el primer y segundo paquetes de trazas de datos.
29. El procedimiento de la reivindicación 24, en
el que la formación de un primer paquete de trazas de datos
incluye
almacenar una dirección de un acceso de memoria
anterior para cada una de las primera y segunda memorias del
circuito integrado (100);
comparar una dirección para un acceso de memoria
actual a una memoria seleccionada frente a la dirección almacenada
de la memoria seleccionada, siendo la memoria seleccionada una de la
pluralidad de memorias; y comprendiendo además
generar una dirección comprimida para el actual
acceso de memoria de la memoria seleccionada basándose en el
resultado de la comparación.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US843971 | 1997-04-17 | ||
US10/843,971 US7702964B2 (en) | 2004-05-11 | 2004-05-11 | Compression of data traces for an integrated circuit with multiple memories |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2313349T3 true ES2313349T3 (es) | 2009-03-01 |
Family
ID=34969664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES05748092T Active ES2313349T3 (es) | 2004-05-11 | 2005-05-11 | Composiciones de trazas de datos para un circuito integrado de memorias multiples. |
Country Status (9)
Country | Link |
---|---|
US (1) | US7702964B2 (es) |
EP (2) | EP1745489B1 (es) |
JP (1) | JP4885849B2 (es) |
AT (2) | ATE409944T1 (es) |
CA (1) | CA2565989A1 (es) |
DE (2) | DE602005010070D1 (es) |
ES (1) | ES2313349T3 (es) |
RU (1) | RU2347288C2 (es) |
WO (1) | WO2005112040A1 (es) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006285617A (ja) * | 2005-03-31 | 2006-10-19 | Fujitsu Ltd | データ処理装置、データ処理方法、およびコンピュータ読み取り可能な記憶媒体 |
US8250542B1 (en) | 2006-01-03 | 2012-08-21 | Altera Corporation | Method and apparatus for performing trace data compression |
JP4846493B2 (ja) * | 2006-09-05 | 2011-12-28 | 富士通セミコンダクター株式会社 | デバッグシステム及びデバッグ回路 |
US20080155351A1 (en) * | 2006-10-03 | 2008-06-26 | Broadcom Corporation | Method for combining multiple trace sources in an embedded system |
US7477999B2 (en) | 2006-10-26 | 2009-01-13 | Samplify Systems, Inc. | Data compression for a waveform data analyzer |
DE102007006508B4 (de) * | 2007-02-09 | 2012-11-15 | Texas Instruments Deutschland Gmbh | Mikrocontroller mit Speicher-Trace-Modul |
US7840781B1 (en) * | 2007-04-04 | 2010-11-23 | Xilinx, Inc. | Circuit arrangement for profiling a programmable processor connected via a uni-directional bus |
JP2009042815A (ja) * | 2007-08-06 | 2009-02-26 | Renesas Technology Corp | 半導体集積回路及びデバッグシステム |
US7818629B2 (en) * | 2007-10-03 | 2010-10-19 | Broadcom Corporation | Multiple winner arbitration |
US7913033B2 (en) * | 2007-10-09 | 2011-03-22 | Micron Technology, Inc. | Non-volatile memory device having assignable network identification |
US8001428B2 (en) * | 2007-10-29 | 2011-08-16 | Arm Limited | Packing trace protocols within trace streams |
US8055950B2 (en) * | 2008-01-11 | 2011-11-08 | Arm Limited | Method and apparatus for improved timing for trace synchronization |
US9223677B2 (en) * | 2008-06-11 | 2015-12-29 | Arm Limited | Generation of trace data in a multi-processor system |
WO2010113674A1 (ja) * | 2009-03-30 | 2010-10-07 | 日本電気株式会社 | 情報処理システム、情報圧縮装置、情報復元装置、情報処理方法及びそのプログラム |
US8176366B2 (en) * | 2009-04-03 | 2012-05-08 | Arm Limited | Trace synchronization |
US8990633B2 (en) * | 2009-04-21 | 2015-03-24 | Freescale Semiconductor, Inc. | Tracing support for interconnect fabric |
JP5499700B2 (ja) * | 2009-12-25 | 2014-05-21 | 日本電気株式会社 | 情報圧縮装置、情報復元装置、情報圧縮方法、情報復元方法、及びその処理プログラム |
US8250243B2 (en) * | 2010-06-24 | 2012-08-21 | International Business Machines Corporation | Diagnostic data collection and storage put-away station in a multiprocessor system |
DE102010047718A1 (de) * | 2010-10-07 | 2012-04-12 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Formatieren und Vorauswählen von Trace Daten |
US8825922B2 (en) * | 2011-04-18 | 2014-09-02 | Infineon Technologies Ag | Arrangement for processing trace data information, integrated circuits and a method for processing trace data information |
DE102011107936B4 (de) * | 2011-07-19 | 2015-07-23 | Texas Instruments Deutschland Gmbh | Halbleitervorrichtung und Verfahren für die Ablaufverfolgung elnes Speichers einer Halbleitervorrichtung |
WO2013101251A1 (en) * | 2011-12-31 | 2013-07-04 | Intel Corporation | Real time instruction tracing compression of ret instructions |
GB2500441B (en) | 2012-07-09 | 2014-03-05 | Ultrasoc Technologies Ltd | Data prioritisation in a debug architecture |
US8935577B2 (en) | 2012-08-28 | 2015-01-13 | Freescale Semiconductor, Inc. | Method and apparatus for filtering trace information |
US9021311B2 (en) | 2012-08-28 | 2015-04-28 | Freescale Semiconductor, Inc. | Method and apparatus for filtering trace information |
US10503661B2 (en) * | 2014-05-21 | 2019-12-10 | Qualcomm Incorporated | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system |
US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US9542298B2 (en) * | 2014-07-08 | 2017-01-10 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
US9524227B2 (en) * | 2014-07-09 | 2016-12-20 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
US10089212B2 (en) | 2015-07-20 | 2018-10-02 | Toshiba Memory Corporation | Memory system, information processing system, and host device outputting debugging information through a host interface |
US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
KR20180054364A (ko) | 2016-11-15 | 2018-05-24 | 삼성전자주식회사 | 트레이스 데이터를 생성하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
JP6901685B2 (ja) * | 2017-10-04 | 2021-07-14 | 富士通株式会社 | 生成プログラム、生成方法、及び情報処理装置 |
US11914499B2 (en) * | 2021-10-29 | 2024-02-27 | Stmicroelectronics Application Gmbh | Systems and methods for preparing trace data |
CN117724664A (zh) * | 2024-02-18 | 2024-03-19 | 芯来智融半导体科技(上海)有限公司 | 数据写入方法、装置、设备及存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9622685D0 (en) | 1996-10-31 | 1997-01-08 | Sgs Thomson Microelectronics | An integrated circuit device and method of communication therewith |
JPH1124959A (ja) * | 1997-07-02 | 1999-01-29 | Hewlett Packard Japan Ltd | マイクロプロセッサのトレース情報出力方法 |
JP3019922B2 (ja) * | 1997-06-30 | 2000-03-15 | 日本電気株式会社 | トレースデータ削減方式 |
JP3583937B2 (ja) * | 1998-12-28 | 2004-11-04 | 富士通株式会社 | 情報処理装置 |
US6345295B1 (en) * | 1999-01-22 | 2002-02-05 | International Business Machines Corporation | Conducting traces in a computer system attachment network |
US6918065B1 (en) * | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
US6665816B1 (en) | 1999-10-01 | 2003-12-16 | Stmicroelectronics Limited | Data shift register |
DE60118089T2 (de) | 2000-03-02 | 2006-10-05 | Texas Instruments Incorporated, Dallas | Abtastschnittstelle mit Zeitmultiplexmerkmal zur Signalüberlagerung |
JP3796111B2 (ja) * | 2000-11-10 | 2006-07-12 | 株式会社ルネサステクノロジ | データプロセッサ |
US6775798B2 (en) | 2001-11-28 | 2004-08-10 | Lsi Logic Corporation | Fast sampling test bench |
JP2003263337A (ja) * | 2002-03-08 | 2003-09-19 | Seiko Epson Corp | デバック機能内蔵型マイクロコンピュータ |
GB2389931B (en) * | 2002-06-07 | 2005-12-14 | Advanced Risc Mach Ltd | Generation of trace elements within a data processing apparatus |
US7017093B2 (en) | 2002-09-16 | 2006-03-21 | Lsi Logic Corporation | Circuit and/or method for automated use of unallocated resources for a trace buffer application |
US7302616B2 (en) * | 2003-04-03 | 2007-11-27 | International Business Machines Corporation | Method and apparatus for performing bus tracing with scalable bandwidth in a data processing system having a distributed memory |
US7149933B2 (en) * | 2003-08-07 | 2006-12-12 | Arm Limited | Data processing system trace bus |
US7069176B2 (en) * | 2003-08-07 | 2006-06-27 | Arm Limited | Trace source correlation in a data processing apparatus |
-
2004
- 2004-05-11 US US10/843,971 patent/US7702964B2/en not_active Expired - Fee Related
-
2005
- 2005-05-11 EP EP05748092A patent/EP1745489B1/en active Active
- 2005-05-11 RU RU2006143663/09A patent/RU2347288C2/ru not_active IP Right Cessation
- 2005-05-11 JP JP2007513334A patent/JP4885849B2/ja not_active Expired - Fee Related
- 2005-05-11 EP EP08165088A patent/EP2012324B1/en active Active
- 2005-05-11 WO PCT/US2005/016563 patent/WO2005112040A1/en active Application Filing
- 2005-05-11 ES ES05748092T patent/ES2313349T3/es active Active
- 2005-05-11 CA CA002565989A patent/CA2565989A1/en not_active Abandoned
- 2005-05-11 DE DE602005010070T patent/DE602005010070D1/de active Active
- 2005-05-11 AT AT05748092T patent/ATE409944T1/de not_active IP Right Cessation
- 2005-05-11 AT AT08165088T patent/ATE500592T1/de not_active IP Right Cessation
- 2005-05-11 DE DE602005026732T patent/DE602005026732D1/de active Active
Also Published As
Publication number | Publication date |
---|---|
ATE409944T1 (de) | 2008-10-15 |
EP2012324B1 (en) | 2011-03-02 |
RU2347288C2 (ru) | 2009-02-20 |
DE602005026732D1 (de) | 2011-04-14 |
ATE500592T1 (de) | 2011-03-15 |
JP2007537547A (ja) | 2007-12-20 |
EP1745489A1 (en) | 2007-01-24 |
EP1745489B1 (en) | 2008-10-01 |
EP2012324A1 (en) | 2009-01-07 |
US7702964B2 (en) | 2010-04-20 |
US20050268177A1 (en) | 2005-12-01 |
JP4885849B2 (ja) | 2012-02-29 |
DE602005010070D1 (de) | 2008-11-13 |
WO2005112040A1 (en) | 2005-11-24 |
RU2006143663A (ru) | 2008-06-20 |
CA2565989A1 (en) | 2005-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2313349T3 (es) | Composiciones de trazas de datos para un circuito integrado de memorias multiples. | |
ES2678413T3 (es) | Procedimiento y sistema de alineación de trazas entre subprocesos para un procesador de subprocesos múltiples | |
JP4225851B2 (ja) | データ処理装置用トレース要素生成システム | |
US8707127B2 (en) | Configurable source based/requestor based error detection and correction for soft errors in multi-level cache memory to minimize CPU interrupt service routines | |
ES2909742T3 (es) | Aceleradores de hardware configurables | |
EP1893985A2 (en) | Packet processor and filter apparatus and methods | |
CN106547518A (zh) | 用于加速器的低等待时间调用的装置和方法 | |
CN107111572B (zh) | 用于避免死锁的方法和电路 | |
TW201303587A (zh) | 用於在快閃記憶體介質控制器中處理儲存在快閃記憶體記憶體的頁中的中繼資料的方法、裝置及快閃記憶體記憶體系統 | |
JP2011511986A (ja) | プロセッサ | |
US9372947B1 (en) | Compacting trace data generated by emulation processors during emulation of a circuit design | |
CN110554852A (zh) | 数据拼接结构、方法及其片上实现 | |
ES2725800T3 (es) | Sistema y procedimiento para determinar una dirección de un elemento dentro de una tabla | |
GB2371641A (en) | Direct Memory Access (DMA) controller for circular buffers | |
ES2318448T3 (es) | Ejecucion de un programa mediante una maquina virtual. | |
US20110219212A1 (en) | System and Method of Processing Hierarchical Very Long Instruction Packets | |
RU2013106793A (ru) | Способ и устройство для проверки основной памяти процессора | |
JP2013015985A (ja) | マルチコアプロセッサのすべてのプロセッサコアの実行トレースダンプが可能なsocデバイス | |
Uzelac et al. | Hardware-based data value and address trace filtering techniques | |
Clark | Trace-based hardware control flow signature checking | |
WO2023036076A1 (zh) | 一种软件监测方法以及相关装置 | |
JP4222843B2 (ja) | テスト機能付き集積回路 | |
JP2004272897A (ja) | パリティー検査を利用して命令モード切り換えを行なうプロセッサ及び方法 | |
JP2000267876A (ja) | エミュレータ及びマイクロコンピュータ | |
Aguirre | Modular Injection System and Sampling Template (MISST) Design Report |