сжатие трассировок данных для интегральной схемы со множеством блоков памяти
Классы МПК: | G11C29/00 Контроль правильности работы запоминающих устройств; испытание запоминающих устройств во время режима ожидания или автономного режима работы |
Автор(ы): | ДЖОН Джонни К. (US) |
Патентообладатель(и): | КВЭЛКОММ ИНКОРПОРЕЙТЕД (US) |
Приоритеты: |
подача заявки:
2005-05-11 публикация патента:
20.02.2009 |
Изобретение относится к методам выполнения трассировки данных в интегральной схеме со множеством введенных блоков памяти. Техническим результатом является возможность выполнения трассировки для каждого блока памяти в отдельности и обеспечение высокой степени компрессии для данных трассировки. Модуль трассировки в интегральной схеме формирует пакеты данных трассировки для доступов к памяти множества блоков памяти. Модуль памяти включает в себя множество устройств захвата данных (один на любую память) и генератор потока трассировки. Каждый блок захвата данных включает в себя регистр, компаратор, компрессор адреса и устройство пакетирования. Регистр хранит адрес для предыдущего доступа к памяти ассоциированной памяти. Компаратор сравнивает адрес для текущего доступа к памяти с адресом, сохраненным в регистре. Компрессоры адреса и данных выполняют сжатие адреса и данных, соответственно, для текущего доступа к памяти. Устройство пакетирования формирует пакет данных трассировки для текущего доступа к памяти. Генератор потока трассировки генерирует поток, содержащий пакеты данных трассировки, от всех устройств захвата данных. 7 н. и 26 з.п. ф-лы, 11 ил.
Формула изобретения
1. Интегральная схема, содержащая множество блоков памяти, причем множество блоков памяти имеет независимый и параллельный доступ; и модуль трассировки, функционирующий для параллельного захвата данных трассировки для по меньшей мере двух блоков памяти из множества блоков памяти; и формирования пакетов данных трассировки основываясь, по меньшей мере частично, на данных трассировки, причем каждый пакет данных трассировки включает в себя адрес и данные доступа к памяти конкретного блока памяти из множества блоков памяти и идентификатор памяти конкретной блока памяти.
2. Интегральная схема по п.1, в которой модуль трассировки включает в себя
множество устройств захвата данных по одному устройству захвата данных для каждого из множества блоков памяти, причем каждое устройство захвата функционирует для формирования пакетов данных трассировки для доступов к памяти блока памяти, ассоциированного с устройством захвата данных.
3. Интегральная схема по п.2, в которой модуль трассировки дополнительно включает в себя генератор потока трассировки, функционирующий для генерирования из множества устройств захвата данных потока данных трассировки, содержащего пакеты данных трассировки.
4. Интегральная схема по п.2, в которой каждое устройство захвата данных включает в себя регистр, функционирующий для хранения адреса предыдущего доступа к памяти ассоциированного блока памяти; и компаратор, функционирующий для сравнения адреса для текущего доступа к памяти ассоциированного блока памяти с адресом, сохраненным в регистре.
5. Интегральная схема по п.4, в которой каждое устройство захвата данных дополнительно включает в себя компрессор адреса, функционирующий для генерирования сжатого адреса для текущего доступа к памяти ассоциированного блока памяти на основе выходного сигнала из компаратора, и в котором пакет данных трассировки для текущего доступа к памяти включает в себя сжатый адрес.
6. Интегральная схема по п.4, в которой каждое устройство захвата данных функционирует для пропуска адреса для текущего доступа к памяти ассоциированного блока памяти из пакета данных трассировки для текущего доступа к памяти.
7. Интегральная схема по п.2, в которой каждое устройство захвата данных включает в себя компрессор данных, функционирующий для сжатия данных для текущего доступа к памяти ассоциированного блока памяти, и в которой пакет данных трассировки для текущего доступа к памяти включает в себя сжатые данные.
8. Интегральная схема по п.7, в которой компрессор данных функционирует для удаления начальных нулей или начальных знаковых разрядов в данных для текущего доступа к памяти.
9. Интегральная схема по п.2, в которой каждое устройство захвата данных включает в себя устройство пакетирования, функционирующее для формирования пакета данных трассировки для текущего доступа к памяти ассоциированного блока памяти, причем пакет данных трассировки включает в себя адрес и данные для текущего доступа к памяти ассоциированного блока памяти и идентификатор памяти для ассоциированного блока памяти.
10. Интегральная схема по п.1, в которой каждый пакет данных трассировки включает в себя область для идентификатора памяти.
11. Интегральная схема по п.1, в которой каждый пакет данных трассировки включает в себя область адреса, имеющую переменный размер.
12. Интегральная схема по п.11, в которой каждый пакет данных трассировки включает в себя одну область отображения размера области адреса.
13. Интегральная схема по п.1, в которой каждый пакет данных трассировки включает в себя область данных, имеющую переменный размер.
14. Интегральная схема по п.1, содержащая по меньшей мере три блока памяти независимого доступа.
15. Интегральная схема по п.1, дополнительно содержащая: цифровой сигнальный процессор (ЦСП) (DSP), соединенный с возможностью взаимодействия с множеством блоков памяти.
16. Интегральная схема по п.15, в которой множество блоков памяти функционируют для хранения данных для ЦСП.
17. Интегральная схема по п.1, в которой множество блоков памяти имеют параллельный доступ через одну команду.
18. Интегральная схема, содержащая множество блоков памяти, причем каждый блок памяти имеет независимый и параллельный доступ; и средство для формирования пакетов данных трассировки для параллельных доступов к по меньшей мере двум блокам памяти из множества блоков памяти, причем каждый пакет данных трассировки включает в себя адрес и данные доступа к памяти конкретного блока памяти и идентификатор памяти конкретного блока памяти.
19. Интегральная схема по п.18, в которой средство для формирования пакетов данных трассировки включает в себя средство для независимого сжатия адресов для доступов к памяти каждой памяти.
20. Способ выполнения трассировки данных для интегральной схемы с множеством блоков памяти независимого доступа, содержащий этапы, на которых
формируют первый пакет данных трассировки для доступа к памяти первого блока памяти из множества блоков памяти, имеющих независимый доступ в интегральной схеме, причем первый пакет данных трассировки включает в себя первый адрес и данные для доступа к памяти первого блока памяти и идентификатор первого блока памяти для первого блока памяти; формируют второй пакет данных трассировки для доступа к памяти второго блока памяти из множества блоков памяти, имеющих независимый доступ в интегральной схеме, причем второй пакет данных трассировки включает в себя второй адрес и данные для доступа к памяти второго блока памяти и идентификатор второго блока памяти для второго блока памяти.
21. Способ по п.20, в котором формирование первого пакета данных трассировки включает в себя этапы, на которых сохраняют адрес предыдущего доступа к памяти первого блока памяти; и
сравнивают первый адрес с сохраненным адресом.
22. Способ по п.21, в котором формирование первого пакета данных трассировки дополнительно включает в себя этапы, на которых генерируют сжатые данные для доступа к памяти первого блока памяти на основе выходного сигнала из компаратора, и в котором первый пакет данных трассировки включает в себя сжатый адрес.
23. Способ по п.20, в котором формирование первого пакета данных трассировки дополнительно включает в себя этапы, на которых осуществляют сжатие данных для доступа к памяти первого блока памяти, и в котором первый пакет данных трассировки включает в себя сжатые данные для первого блока памяти.
24. Способ по п.20, дополнительно содержащий этапы, на которых генерируют поток данных трассировки, содержащий первый и второй пакеты данных трассировки.
25. Интегральная схема, содержащая множество блоков памяти, причем каждый блок памяти имеет независимый доступ;
множество регистров, по одному регистру для каждого блока памяти, причем каждый регистр функционирует для хранения адреса для предыдущего доступа к памяти блока памяти, ассоциированного с регистром;
компаратор, функционирующий для сравнения адреса для текущего доступа к памяти выбранного блока памяти с адресом, сохраненным в регистре для выбранного блока памяти, причем выбранный блок памяти является одним из множества блоков памяти; компрессор адреса, функционирующий для генерирования сжатого адреса для текущего доступа к памяти выбранного блока памяти на основе результата сравнения из компаратора.
26. Интегральная схема по п.25, дополнительно содержащая устройство пакетирования, функционирующее для формирования пакета данных трассировки для текущего доступа к памяти выбранного блока памяти, причем пакет данных трассировки включает в себя сжатый адрес и данные для текущего доступа к памяти выбранного блока памяти.
27. Интегральная схема по п.26, дополнительно содержащая компрессор данных, функционирующий для сжатия данных для текущего доступа к памяти выбранного блока памяти, и в которой пакет данных трассировки для текущего доступа к памяти выбранного блока памяти включает в себя сжатые данные.
28. Интегральная схема по п.25, дополнительно содержащая цифровой сигнальный процессор (ЦСП) (DSP), соединенный с возможностью взаимодействия со множеством блоков памяти, и в которой множество блоков памяти функционирует для хранения данных для ЦСП.
29. Интегральная схема по п.25, в которой полный адрес включает в себя F битов адреса, и в которой сжатый адрес представляют с одним из S возможных представлений, где S меньше чем F, а каждое представление ассоциировано с различным числом битов адреса.
30. Интегральная схема, содержащая множество блоков памяти, причем каждый блок памяти имеет независимый доступ;
множество устройств захвата данных, по одному устройству захвата данных на каждый блок памяти из множества блоков памяти, причем каждое устройство захвата данных включает в себя регистр, функционирующий для хранения адреса предыдущего доступа к памяти блока памяти, ассоциированного с устройством захвата данных; компаратор, функционирующий для сравнения адреса текущего доступа к памяти ассоциированного блока памяти с адресом, сохраненным в регистре, и компрессор адреса, функционирующий для генерирования сжатого адреса для текущего доступа к памяти на основе результата сравнения из компаратора.
31. Интегральная схема, содержащая множество блоков памяти, причем каждый блок памяти имеет независимый доступ;
средство для хранения адреса для предыдущего доступа к памяти каждого из множества блоков памяти; средство для сравнения адреса для текущего доступа к памяти выбранного блока памяти с сохраненным адресом для выбранного блока памяти, причем выбранный блок памяти является одним из множества блоков памяти; и средство для генерирования сжатого адреса для текущего доступа к памяти выбранного блока памяти на основе результата сравнения.
32. Интегральная схема по п.31, дополнительно содержащая средство для формирования пакета данных трассировки для текущего доступа к памяти выбранного блока памяти, причем пакет данных трассировки включает в себя сжатый адрес и данные для текущего доступа к выбранному блоку памяти.
33. Способ выполнения трассировки данных для интегральной схемы с множеством блоков памяти независимого доступа, причем способ содержит этапы, на которых сохраняют адрес для предыдущего доступа к памяти каждого из множества блоков памяти в интегральной схеме; сравнивают адрес для текущего доступа к памяти выбранного блока памяти с сохраненным адресом для выбранного блока памяти, причем выбранный блок памяти является одним из множества блоков памяти; и генерируют сжатый адрес для текущего доступа к памяти выбранного блока памяти на основе результата сравнения.
Описание изобретения к патенту
Область техники, к которой относится изобретение
Изобретение относится в основном к интегральным схемам и, конкретнее, к методам для сжатия трассировки данных и адреса для тестирования и отладки интегральной схемы со множеством блоков памяти.
Уровень техники
Постоянные улучшения в технологии производства интегральной схемы (ИС) (IC) дают возможность все больше усложнять интегральные схемы, изготовленные для разнообразных задач. Например, устройство система-на-кристалле (СНК) (SOC) может включать в себя микропроцессор, память и другие блоки обработки, все из которых вмонтированы в отдельную интегральную схему. Микропроцессор может выполнять различные функции и/или управлять блоками обработки. Блоки обработки могут быть изготовлены для выполнения конкретных вычислительных задач. Память может хранить коды и данные для микропроцессора и блоков обработки. Интегрирование всех этих блоков схемы на отдельной интегральной схеме снижает стоимость и улучшает надежность.
Важный аспект в развитии составной интегральной схемы заключается в тестировании и отладке различных блоков схемы в интегральной схеме. Распространенным методом, который используется для отладки интегральной схемы, является трассировка в реальном времени, которая включает в себя трассировку программы/команды и трассировку данных. Программа трассировки относится к захвату линий кода, который выполняют процессорами в интегральной схеме, а данные трассировки относятся к захвату данных, вызываемых процессорами. Трассировка в реальном времени обеспечивает пользователя/разработчика способностью захватывать и рассматривать команды и данные, имеющие доступ в интегральной схеме на скорости прогона. Это помогает пользователю/разработчику обнаруживать ошибки в аппаратном обеспечении и/или коде, таком как, например, невидимая ошибка, которая происходит только в ситуации, где существует непредсказуемое взаимодействие между аппаратным обеспечением и кодом.
Способность трассировки в реальном времени обычно обеспечивают модулем трассировки и портом трассировки, которые встроены в интегральную схему. Модуль трассировки обычно включает в себя настраиваемые фильтры и триггерную логику, которая позволяет пользователю/разработчику выбрать, какие команды и данные захватывают и составляют отчет. Захваченную информацию часто сжимают, а затем передают через порт трассировки в средство анализа, расположенное вне кристалла. Обычно модуль трассировки только поддерживает данные трассировки для отдельной памяти или объединенные памяти данных в интегральной схеме.
Сущность изобретения
Здесь описаны методы для выполнения трассировки данных в интегральной схеме со множеством блоков встроенной памяти. Эти методы выполняют трассировку данных для каждой памяти в отдельности так, чтобы могла быть достигнута высокая степень компрессии для данных трассировки, захваченных трассировкой. Обычно данные трассировки могут включать в себя адрес памяти и данные, значение счетчика команд, опорный сигнал и любую другую информацию, которая может быть полезна для тестирования и отладки интегральной схемы. Данные трассировки для каждой памяти соответствующим образом идентифицируют на основе памяти идентификатор, назначенный этой памяти.
Вариант осуществления обеспечивает интегральную схему со множеством блоков памяти и модулем трассировки. Каждый блок памяти является доступным вне зависимости от других блоков памяти, и может быть осуществлен параллельный доступ ко множеству блоков памяти. Модуль трассировки формирует пакеты данных трассировки для доступов ко множеству блоков памяти, один пакет данных трассировки на каждый доступ к памяти. Каждый пакет данных трассировки включает в себя адрес и/или данные для доступа к памяти конкретной памяти и идентификатор памяти для этой памяти.
В варианте осуществления модуль трассировки включает в себя множество устройств захвата данных, генератор потока трассирования и буфер. Одно устройство захвата данных предназначено для любой памяти. Каждое устройство захвата данных включает в себя регистр адреса, компаратор адреса, компрессор адреса, компрессор данных и устройство пакетирования. Регистр адреса хранит адрес для предыдущего доступа к памяти соответствующей памяти. Компаратор адреса сравнивает адрес из текущего доступа к памяти соответствующей памяти с адресом, сохраненным в регистре. Компаратор адреса выполняет сжатие адреса для текущего доступа к памяти на основе выходных данных из компаратора памяти и генерирует сжатый адрес для текущего доступа к памяти. Компрессор данных выполняет сжатие данных для текущего доступа к памяти. Устройство пакетирования формирует пакет данных трассировки для текущего доступа к памяти соответствующей памяти. Генератор потока трассировки принимает пакеты данных трассировки из множества устройств захвата данных и генерирует поток данных трассировки, содержащий эти пакеты. Буфер хранит поток данных трассировки и обеспечивает данные трассировки вне кристалла, когда переключается.
Каждый пакет данных трассировки может включать в себя (1) область для идентификатора памяти, (2) область адреса, имеющую изменяемый размер, (3) по меньшей мере одну область, отображающую размер области адреса, (4) область данных, имеющую изменяемый размер, (5) область, отображающую размер области данных, и (6) возможные другие области. Ниже описаны различные форматы пакетов. Каждый пакет данных трассировки может включать (1) несжатый, сжатый или нулевой адрес, (2) несжатые, сжатые или нулевые данные и (3) другую информацию, такую как идентификатор памяти.
Интегральная схема может далее включать в себя один или более цифровых сигнальных процессоров (ЦСП) (DSP), микропроцессоров, контроллеров и так далее. Множество блоков памяти может быть использовано для хранения данных для DSP.
Ниже подробно описаны различные аспекты и варианты осуществления изобретения.
Краткое описание чертежей
Признаки и сущность настоящего изобретения будут более наглядны из подробного описания, изложенного ниже, которое сопровождается чертежами, на которых подобные ссылочные позиции обозначают одинаково по всему документу и на которых:
Фиг.1 представляет собой интегральную схему со множеством блоков встроенной памяти, имеющую способности трассировки для тестирования и отладки;
Фиг.2 представляет собой блок-схему модуля трассировки;
Фиг.3А представляет собой выборки данных для обычной интегральной схемы с отдельной памятью;
Фиг.3В представляет собой метод сжатия адреса для трассировки данных;
Фиг.3С представляет собой выборку данных к интегральной схеме со множеством блоков памяти;
Фиг.4 представляет собой блок-схему блока захвата данных трассировки для DSP;
Фиг.5А-5D представляет собой четыре примерных формата пакета данных трассировки; и
Фиг.6 представляет собой способ для выполнения трассировки данных для интегральной схемы со множеством (например, тремя) блоками памяти независимого доступа.
Подробное описание
Слово «примерный» используется здесь для обозначения «выполняющий функцию примера, образца или иллюстрации». Любой вариант осуществления или схема, обозначенные здесь, как «примерная», не должен интерпретироваться как предпочтительный или преимущественный перед другими вариантами осуществления или схемами.
Фиг.1 показывает блок-схему интегральной схемы 100 со множеством блоков встроенной памяти и имеющей способность трассировать для тестирования и отладки. Интегральная схема 100 включает в себя встроенные процессоры и контроллеры, такие как микропроцессор 110, цифровой сигнальный процессор (ЦСП) (DSP) 120 и контроллер 130 прямого доступа к памяти. Микроконтроллер 110 выполняет основную обработку для интегральной схемы 100 и может быть осуществлен компьютером с сокращенным набором команд (RISC) или другим типом микропроцессора. DSP 120 представляет собой специализированный процессор, который специально разрабатывают для сверхбыстрого выполнения математических вычислений. DSP 120 может включать в себя различные процессоры, такие как устройства умножения с накоплением (УУН) (MACC), арифметическо-логические устройства (АЛУ) (ALU) и так далее. Контроллер 130 DMA обрабатывает изменения высокоскоростных данных в реальном времени между DSP 120 и другими процессорами вне интегральной схемы 100. Для упрощения внешние соединения между микропроцессором 110, DSP 120 и контроллером 130 DMA не показаны на Фиг.1. Обычно интегральная схема 100 может включать в себя любое число и любые типы процессоров и контроллеров.
Микропроцессор 110 реализует архитектуру «Гарвард», которая использует отдельную память 114 команд и память 116 данных для хранения команд и данных, соответственно. Контроллер 112 памяти обеспечивает микропроцессор 110 необходимыми командами и данными из блоков памяти 114 и 116. DSP 120 реализует архитектуру «супер-Гарвард», которая использует отдельную память 124 команд для хранения команд и множество блоков памяти 126а-126с данных для хранения данных. Блоки памяти 126а, 126b и 126с также обозначают, как блоки памяти А, В и С, соответственно. Контроллер 122 памяти обеспечивает DSP 120 необходимыми командами и данными из блоков памяти 124 и 126. Контроллер 130 DMA также соединен с контроллером 122 памяти для обмена данными. Обычно процессоры и контроллеры в интегральной схеме 100 могут реализовывать любой тип архитектуры памяти. Более того, интегральная схема 100 может включать в себя любое число блоков памяти.
Каждая память в интегральной схеме 100 представляет собой независимую память, которая может быть с индивидуальным доступом для хранения/поиска команд/данных. Каждой памятью управляет соответствующий контроллер памяти. Каждая память может также именоваться как банк памяти, кэш-память или некоторой другой терминологией. Обычно интегральная схема включает в себя отдельную память или унифицированную память для хранения данных. Отдельная память данных может обычно иметь доступ для получения специального количества (например, четырех) байт данных за раз. Множество блоков памяти данных может быть использовано для получения различных преимуществ, таких как, например, распараллеливание работы, наивысшая скорость отработки информации памяти и большая гибкость хранения. Например, различные виды данных могут быть сохранены в различных блоках памяти, а DSP может использовать отдельные блоки памяти для достижения параллельной загрузки различных видов данных. Множество блоков данных памяти отличаются от унифицированной памяти, в которой множество блоков памяти данных может использовать устройства генерации отдельного адреса, отдельные шины памяти, команды, которые могут выполнять одновременный доступ данных к отдельным блокам памяти, независимого размера данных и так далее.
Интегральная схема 100 далее включает в себя модуль 140 трассировки, порт 142 трассировки и порт 138 JTAG (Объединенной группы в области автоматизации тестирования Joint Test Action Group), который совместно обеспечивает возможности для тестирования и отладки для интегральной схемы. Модуль 140 трассировки включает в себя различные блоки схемы и регистры, которые используют для шин внешнего наблюдения микропроцессора 110, DSP 120 и контроллер 130 DMA, как описано ниже. Модуль 140 трассировки может захватывать информацию, относящуюся к состоянию процессоров 110 и 120 и контроллера 130 для содействия в тестировании и отладке интегральной схемы 100. Модуль 140 трассировки может далее захватывать информацию неинтрузивным методом, то есть без добавления какой бы то ни было нагрузки на работу процессоров и контроллера так, чтобы эти устройства могли работать на полной скорости. Модуль 140 трассировки предоставляет захваченную информацию, как поток данных трассировки, через порт 142 трассировки. Порт 138 JTAG используют для настройки модуля 140 трассировки и, возможно, процессоров и контроллера в интегральной схеме. Для упрощения, внешние соединения между портом 138 JTAG и процессорами и контролером не показаны на Фиг.1.
Средство 190 анализа соединено с интегральной схемой 100 через интерфейсный модуль 180. Средство 190 анализа может быть компьютерной системой, логическим анализатором и так далее и может быть осуществлено аппаратно, программно или в их комбинации. Пользователь/разработчик, кто тестирует или отлаживает интегральную схему 100, могут настраивать модуль 140 трассировки через средство 190 анализа, интерфейсный модуль 180 и порт 138 JTAG. Пользователь/разработчик может через порт 142 трассировки и интерфейсный модуль 180 принимать поток данных трассировки, содержащий информацию, захваченную модулем 140 трассировки. Пользователь/разработчик может просматривать и анализировать захваченную информацию с помощью средства 190 анализа.
Фиг.2 представляет собой блок-схему варианта осуществления модуля 140 трассировки. Модуль 140 трассировки включает в себя три устройства 210а, 210b и 210с захвата данных трассировки для микропроцессора 110, DSP 120 и контроллера 130 DMA, соответственно, генератор 250 потока трассировки и буфер 260. Каждое устройство 210 захвата данных трассировки захватывает данные для соответствующего процессора или контроллера и обеспечивает пакеты данных трассировки, как описано ниже.
Генератор 250 потока данных принимает пакеты данных ото всех устройств 210 захвата данных трассировки и генерирует поток данных трассировки, содержащий эти пакеты. Этот отдельный поток данных трассировки таким образом переносит данные трассировки для команд и обращений к памяти всех блоков памяти в интегральной схеме 100. Буфер 260 хранит данные трассировки от генератора 250 потока трассировки и обеспечивает сохраненные данные трассировки, когда переключается. Буфер 260 может быть наполнен данными трассировки на основе последующих механизмов переключения:
Трассировка после согласования - буфер 260 начинают наполнять данными трассировки, если принят пакет переключения.
Трассировка до согласования - буфер 260 последовательно наполняют данными трассировки прежде того, как принят пакет переключения.
Трассировка по середине - буфер 260 последовательно наполняют данными трассировки, пока принимают пакет переключения, и затем наполняют конкретным числом данных трассировки, введенных после приема пакета переключения.
Обычно схема модуля трассировки может зависеть от различных факторов, таких как, например, число и тип процессоров и контроллеров, встроенных в интегральную схему, блоки памяти, ассоциированные с этими процессорами и контроллерами, желаемые возможности отладки и так далее.
Фиг.3А представляет собой примерную последовательность выборок 310 данных для обычной интегральной схемы с отдельной памятью. Каждую выборку данных ассоциируют с адресом памяти и соответствующими данными в этом адресе. Для трассировки данных модуль трассировки принимает и адрес и данные для каждого доступа к памяти, захватывает подходящую информацию и генерирует пакет данных трассировки для доступа к памяти. Модуль трассировки обычно выполняет сжатие адреса и/или данных, чтобы уменьшить количество информации для включения в пакет данных трассировки.
Фиг.3В представляет собой метод сжатия адреса, часто используемого для трассировки данных. Этот метод сжатия адреса основан на предположении, что последовательные доступы к памяти часто делают ячейки памяти близкими друг к другу. В этом случае адрес для каждого доступа к памяти может отличаться от адреса для предыдущего доступа к памяти только на небольшое количество младших разрядов или младших значащих разрядов. Регистр адреса используют для хранения адреса для последнего доступа к памяти. Адрес для текущего доступа к памяти сравнивают сначала с сохраненным адресом последнего доступа к памяти, и только младшие разряды в текущем адресе, которые отличаются от сохраненного адреса (вместо полного текущего адреса), включают в пакет данных трассировки.
Для упрощения осуществления пакет данных трассировки может быть создан для переноса основного числа битов адреса (например, 5, 12 или 18 битов адреса для примерной схемы пакета трассировки, описанной ниже). В этом случае наименьшее возможное число младших разрядов включают в пакет данных трассировки на основе числа различающихся младших разрядов. Например, если отличаются три младших разряда адреса, то пакет данных трассировки будет включать пять младших разрядов адреса для примерной схемы, отмеченной выше. В действительности сжатый адрес квантуют 5, 12 или 18 битами в зависимости от числа различающихся младших разрядов. Использование отдельного регистра для хранения адреса последнего доступа к памяти обеспечивает достаточное выполнение сжатия адреса для интегральной схемы с отдельной памятью.
Фиг.3С представляет собой примерную последовательность выборок 330 данных для интегральной схемы со множеством блоков памяти (например, для интегральной схемы 100 с тремя блоками памяти 126а, 126b и 126с). Ко множеству блоков памяти может быть осуществлен доступ одновременно, например, для извлечения или хранения данных для отдельной команды DSP, которая может включать в себя арифметические и/или логические операции. Выборку данных для каждой памяти ассоциируют с доступом к памяти и соответствующими данными в этом адресе. Пока множество блоков памяти может иметь независимый доступ, адреса для этих блоков памяти могут быть закрыты друг от друга или быть соотнесенными. В этом случае использование отдельного регистра адреса для хранения отдельного адреса памяти для сжатия адреса множества блоков памяти будет обеспечивать осуществление сжатия низкого качества, если адреса для этих блоков памяти сильно различаются. Например, текущие адреса для блоков памяти А, В и С могут быть 100, 5000 и 10000, соответственно. Если доступен один регистр адреса, то этот регистр будет сначала сохранять адрес 100 памяти А, который затем используют для сжатия адреса 5000 памяти В, который затем используют для сжатия адреса 10000 памяти С, который затем используют для сжатия адреса памяти А для следующего доступа к памяти и так далее. Как может быть видно, осуществление сжатия адреса может быть низкого качества при использовании отдельного регистра адреса для множества блоков памяти.
Множество регистров адреса может быть использовано для получения улучшенного осуществления сжатия адреса для интегральной схемы со множеством блоков памяти. Один регистр памяти используют для любой памяти, и каждый регистр хранит адрес последнего доступа к памяти для его соответствующей памяти. Адрес для текущего доступа к памяти каждой памяти сравнивают сначала с адресом, сохраненным в регистре для этой памяти. Для описанного выше примера регистры А, В и С будут хранить адреса 100, 5000 и 10000, соответственно, для текущего доступа к памяти блоков памяти А, В и С, соответственно. Для следующего доступа к памяти адрес для памяти А будут сравнивать с адресом, сохраненным в регистре А, адрес для памяти В будут сравнивать с адресом, сохраненным в регистре В, и адрес для памяти С будут сравнивать с адресом, сохраненным в регистре С. Если последовательные доступы к памяти для каждого из этого множества блоков памяти часто делают ячейки памяти близкими друг к другу, что является основным допущением, использованным для интегральной схемы с одной памятью, то хорошее осуществление сжатия адреса может быть получено для интегральной схемы со множеством блоков памяти.
Фиг.4 представляет собой блок-схему варианта осуществления устройства 210b захвата данных трассировки для DSP 120. Устройство 210b включает в себя три устройства 410а, 410b и 410с для блоков памяти 126а, 126b и 126с, соответственно, и устройства 412 захвата команд для команд памяти 124. Каждое устройство 410 захвата памяти включает в себя устройство 420 сжатия, устройство 430 пакетирования и фильтр 440.
В устройстве 410а захвата данных для памяти 126а данных устройство 420а сжатия принимает адрес и соответствующие данные (которые отмечены как memA_addr и memA_data, соответственно) для текущего доступа к памяти упомянутой памяти 126а. Текущий адрес memA_addr сохраняют в регистре 422а адреса и также обеспечивают для компаратора 424а адреса. Компаратор 424а также принимает сохраненный адрес из регистра 422а для предыдущего доступа к памяти упомянутой памяти 126а данных, сравнивает текущий адрес с сохраненным адресом и обеспечивает результат сравнения компрессору 426а адреса. Компрессор 426а адреса определяет число младших разрядов адреса в текущем адресе, который отличается от сохраненного адреса и минимального числа (N) бит адреса, включенного в пакет данных трассировки для текущего доступа к памяти. Сжатие адреса также может быть блокировано. Компрессор 426а адреса обеспечивает устройство 430а пакетирования сжатым адресом, содержащим N младших разрядов в текущем адресе или несжатый текущий адрес.
Компрессор 428а данных выполняет сжатие данных для текущего доступа к памяти. Сжатие данных может быть выполнено различными способами. Например, могут быть удалены начальные нули в данных. В качестве другого примера, данные для текущего доступа к памяти могут быть сравнены с данными для первичного доступа к памяти подобным образом, как для сжатия адреса, а посылают только отличия. Некоторые другие примеры включают в себя (1) удаление всех нулей в данных и (2) ограничение размера данных на 8 бит, 16 бит или другое некоторое заранее определенное число бит в зависимости от априорного знания данных, которые будут трассировать, например, через пользовательский выбор. Сжатие данных может быть также блокировано. Компрессор 428а данных предоставляет сжатые и несжатые данные для устройства 430а пакетирования.
Устройство 430а пакетирования принимает сжатый и несжатый адрес из компрессора 426а адреса и сжатые и несжатые данные из компрессора 428а данных. Устройство 430а пакетирования формирует пакет данных для текущего доступа к памяти упомянутой памяти 126а, как описано ниже. Фильтр 440а обеспечивает фильтрацию, управляемую пользователем, для трассировки данных так, что количество данных трассировки для посылки за пределы кристалла может быть минимально. Например, трассировка может быть выполнена (1) для доступов к памяти в нормативных пределах адресов, (2) если некоторые встречают заданные условия эксплуатации и/или (3) на основе некоторых других критериев. Фильтр 440а обеспечивает фильтрованные данные трассировки для памяти 126а (например, пакеты данных трассировки, которые удовлетворяют критерию фильтрации).
Фиг.4 показывает конкретный вариант осуществления устройства 410а захвата данных для памяти 126а, другие два устройства 410b и 410с захвата данных выполняют сжатие адреса и данных, пакетирование и фильтрацию для доступов к памяти блоков памяти 126b и 126с, соответственно. Устройство 412 захвата команды может быть осуществлено таким же устройством или отличающимся от устройства 410 захвата данных.
Обычно сжатие адреса и данных, пакетирование и фильтрация могут быть выполнены различными методами и, возможно, в различном порядке, который показан на Фиг.4. Например, фильтрация может быть выполнена до сжатия. Как показано на Фиг.4, три различных регистра 422а, 422b и 422с адреса используют для хранения адресов для последних доступов к памяти блоков памяти 126а, 126b и 126с, соответственно. Это предусматривает независимое сжатие адреса трех блоков памяти данных.
Фиг.4 представляет собой схему, на которой отдельное устройство 410 захвата данных используют для захвата данных трассировки для любой памяти данных. Отдельное устройство захвата данных может также захватывать данные трассировки для всех блоков памяти данных, например, мультиплексированием с временным разделением каналов (TDM). Это отдельное устройство захвата данных может выполнять сжатие адреса независимо для каждого из блоков памяти, (1) используя отдельный регистр для хранения адреса для предыдущего доступа к памяти каждой памяти и (2) сравнения адреса для текущего доступа к памяти каждой памяти с сохраненным адресом для этой памяти.
Фиг.5А-5D показывают четыре примерных формата для пакета трассировки данных. Эти примерные форматы предназначены для конкретного вида, в котором (1) полный адрес содержит 18 бит, (2) полные или несжатые данные для данного доступа к памяти содержат 32 бита и (3) доступны три блока памяти данных. Один пакет данных трассировки в одном из четырех возможных форматов может быть сформирован для каждого доступа к памяти данной памяти данных.
Фиг.5А показывает формат 502 пакета для полного адреса. Формат 502 содержит 8 байт. Байт 0 переносит (1) 4-х битную область, содержащую двоичное значение «0010» для отображения пакета данных трассировки, (2) 2-х битную область DS, которая показывает размер области данных в пакете, и (3) 2-х битную область, содержащую двоичное значение «10» для отображения пакета данных трассировки. Для этого варианта осуществления пакет данных трассировки отображают значением «0010» для 4-х битной области и значением «10» для крайней правой 2-х битной области. Другие комбинации бит и/или другие средства могут быть использованы для отображения пакета данных трассировки. В варианте осуществления область DS содержит двоичное значение «00», «01», «10» или «11» для размера области данных в 0 байт, 1 байт, 2 байта или 4 байта, соответственно. Двоичные значения «00», «01» и «10» могут быть использованы для области DS для сжатых данных, а двоичное значение «11» может быть использовано для несжатых данных. Байт 1 переносит (1) 1-битовую область, содержащую двоичное значение «1» для отображения того, что любой другой байт адреса включен в пакет, (2) 5-ти битовая область адреса, содержащая пять младших разрядов адреса (то есть биты адреса 0-4), и (3) 2-х битную область МВ, которая отображает конкретную память данных, к которой относится пакет. В варианте осуществления область МВ содержит двоичное значение «00», «01» или «10» для памяти А, В или С данных, соответственно. Область МВ таким образом переносит идентификатор памяти для конкретной памяти данных, к которой осуществляют доступ.
Байт 2 переносит (1) 1-битовую область, содержащую двоичное значение «1» для отображения того, что другой байт адреса включен в пакет, и (2) 7-битовый область памяти, содержащую семь битов среднего порядка адреса (то есть биты адреса 5-11). Байт 3 переносит (1) 2-битовую область, содержащую двоичное значение «00», и (2) 6-битовую область адреса, содержащую шесть битов наивысшего порядка адреса (то есть биты адреса 12-17). В этом примере DS=11, а байты 5-8 переносят 4-битовую область данных для данных в отображаемом адресе.
Фиг.5В представляет собой формат 504 пакета для 12-битового отдельного адреса. Формат 504 содержит 7 байт. Байты 0 и 1 для формата 504 являются такими же, как байты 0 и 1 для формата 502 на Фиг.5А. Байт 2 переносит (1) 1-битовую область, содержащую двоичное значение «0» для отображения того, что нет больше байт, включенных в пакет, и (2) 7-битовую область данных, содержащую семь битов среднего порядка адреса. В этом примере DS=11, а байты 3-6 переносят 4-битовую область данных.
Фиг.5С представляет собой формат 506 пакета для 5-битового конкретного адреса. Формат 506 содержит 6 байт. Байт 0 для формата 506 является таким же, как для формата 502 на Фиг.5А. Байт 1 переносит (1) 1-битовую область, содержащую двоичное значение «0» для отображения того, что нет больше байт, включенных в пакет, (2) 5-битовую область данных, содержащую пять битов младшего разряда адреса, и (3) 2-битовую область МВ. В этом примере DS=11, а байты 2-5 переносят 4-битовую область данных.
Фиг.5D представляет собой формат 508 пакета без адреса. Формат 508 также содержит 6 байт. Байт 0 для формата 508 является таким же, как для байта 0 для формата 502 на Фиг.5А. Байт 1 переносит (1) 1-битовую область, содержащую двоичное значение «0» для отображения того, что нет больше байт, включенных в пакет, (2) 5-битовую область данных, содержащую двоичное значение «00000» для отображения того, что нет больше байт, включенных в пакет данных трассировки, и (3) 2-битовую область МВ. В этом примере DS=11, а байты 2-5 переносят 4-битовую область данных.
Для форматов 502, 504, 506 и 508 пакетов двоичное значение «1» в наиболее значимом бите (крайнем левом) байта адреса показывает, что другой тип адреса включен в пакет. Другие механизмы могут быть также использованы для отображения размера адреса в пакете данных трассировки, и они находятся в объеме изобретения.
Фиг.5А-5D представляют собой четыре примерных формата для пакета данных трассировки. Общие принципы, описанные в Фиг.5А-5D, могут быть расширены, чтобы защитить другие варианты с адресами и данными других размеров, для любого числа блоков памяти данных и так далее. Обычно может быть определено любое число форматов пакетов. Каждый формат пакета может включать в себя любое число и любой тип областей, и каждая область может включать любое число бит. Области могут также быть расположены отличающимися от расположений, показанных на Фиг.5А-5D. Пакет данных трассировки включает в себя механизм для отображения специальной памяти или банк памяти, к которой относится пакет. Если назначенную область используют для отображения памяти данных, как показано на Фиг.5А-5D, то размер этой области может быть определен на основе числа блоков памяти данных в интегральной схеме. Пакет данных трассировки также включает в себя механизм (например, назначенный бит на любой байт адреса) для отображения размера адреса, включенного в пакет.
На Фиг.1 и 2 генератор 250 потока данных генерирует поток данных трассировки, содержащий пакеты данных трассировки от всех устройств 210 захвата данных трассировки. Каждый пакет данных трассировки содержит область с идентификатором памяти для конкретной памяти, к которой относятся пакеты. Декомпрессор трассировки в средстве 190 анализа может разуплотнять пакеты данных трассировки в потоке данных трассировки во множество подпотоков, один подпоток для любой памяти на основе идентификаторов памяти, включенных в эти пакеты.
Фиг.6 представляет собой схему последовательности операций процесса 600 для выполнения трассировки данных для интегральной схемы со множеством (например, тремя) блоками памяти независимого доступа. Первоначально, память, к которой осуществляют доступ, определена и отмечена как память Х, где память Х может быть А, В и С для примерной схемы, показанной на Фиг.1 и 4 (блок 610).
Для трассировки данных памяти Х сохраненный адрес для предыдущего доступа к памяти упомянутой памяти Х восстанавливают из регистра Х адреса, используемого для памяти Х (блок 620). Текущий адрес для текущего доступа к памяти упомянутой памяти Х одновременно сохраняют в регистре Х адреса (блок 622). Текущий адрес сравнивают с сохраненным адресом для памяти Х, например, выполняя операцию исключающее-ИЛИ (XOR) на два адреса (блок 624). Сжатие адреса может быть выполнено на текущем адресе на основе результата сравнения для получения сжатого адреса для доступа к памяти упомянутой памяти Х (блок 626). Сжатие данных может также быть выполнено для текущего доступа к памяти упомянутой памяти Х (блок 628). Пакет данных трассировки формируют для текущего доступа к памяти упомянутой памяти Х (блок 630). Этот пакет данных трассировки включает в себя (1) идентификатор памяти для памяти Х, (2) полный, сжатый или нулевой адрес для текущего доступа к памяти и (3) сжатые, несжатые или нулевые данные для текущего доступа к памяти.
Обработка в блоках 620-630 может быть выполнена отдельно для любой памяти, например, блоком захвата данных, назначенным для этой памяти. Поток данных трассировки генерируют с пакетами данных трассировки для доступов к памяти всех блоков памяти (блок 632). Поток данных трассировки буферизируют и обеспечивают вне кристалла, при переключении (блок 634).
Методы трассировки данных, описанные здесь, позволяют эффективно сжимать данные трассировки для интегральной схемы с множеством блоков памяти. Такая интегральная схема может иметь один или более встроенных DSP, как показано на Фиг.1. DSP обычно использует множество блоков памяти данных для большей способности к выборке данных, использования команд различной длины, и часто выполняют жесткие циклы (например, для цифровых фильтров). Методы трассировки данных, описанные здесь, могут быть преимущественно использованы для отладки интегральной схемы с одним или более встроенными DSP.
Обычно методы трассировки данных, описанные здесь, могут быть использованы для любой интегральной схемы со множеством блоков памяти. Такая интегральная схема может включать в себя один или более встроенных микропроцессоров, один или более DSP и/или другие контроллеры (например, как показано на Фиг.1). Интегральные схемы со множеством блоков памяти в основном используют для устройств беспроводной связи (например, сотовые телефоны), персональные цифровые секретари (PDA) и другие электронные устройства. Методы трассировки данных, описанные здесь, могут также быть использованы для различных прикладных программ, таких как беспроводная связь, вычисление, создание сети и так далее.
Методы трассировки данных, описанные здесь, могут быть осуществлены аппаратно, программно или в их комбинации. Для аппаратного воплощения устройства, используемые для поддержки трассировки данных (например, модуль 140 трассировки, порт 142 трассировки и порт 138 JTAG), могут быть осуществлены с аппаратурой, встроенной в интегральную схему, специализированную интегральную схему (ASIC), цифровой сигнальный процессор (DCPD), программируемое логическое устройство (ПЛУ) (PLD), матрицу программируемых логических вентилей (FPGA) и так далее. Трассировка данных может также быть выполнена на основе или совместно с программными кодами, которые выполняют функции, описанные здесь. Программные коды могут храниться в памяти (например, памяти 124 на Фиг.1) и выполняться процессором или устройством обработки (например, модулем 140 трассировки).
Предыдущее описание раскрытия вариантов осуществления предназначено, чтобы специалист мог создать или использовать настоящее изобретение. Различные изменения этих вариантов осуществления будут очевидны специалисту, и основные принципы, определенные здесь, могут быть применены для других вариантов осуществления без отклонения от сущности и рамок изобретения. Таким образом, настоящее изобретение не предназначено для ограничения вариантов осуществления, показанных здесь, а соответствует широкому объему, согласующемуся с принципами и дополнительными признаками, раскрытыми здесь.
Класс G11C29/00 Контроль правильности работы запоминающих устройств; испытание запоминающих устройств во время режима ожидания или автономного режима работы