RU2429525C2 - Схема отладки, сравнивающая режим обработки набора команд процессора - Google Patents
Схема отладки, сравнивающая режим обработки набора команд процессора Download PDFInfo
- Publication number
- RU2429525C2 RU2429525C2 RU2009108321/08A RU2009108321A RU2429525C2 RU 2429525 C2 RU2429525 C2 RU 2429525C2 RU 2009108321/08 A RU2009108321/08 A RU 2009108321/08A RU 2009108321 A RU2009108321 A RU 2009108321A RU 2429525 C2 RU2429525 C2 RU 2429525C2
- Authority
- RU
- Russia
- Prior art keywords
- instruction set
- processing mode
- processor
- address
- target
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Изобретения относятся к системам и способам отладки кода на процессоре посредством схемы отладки. Техническим результатом является повышение эффективности отладки команд в процессоре. Процессор в одном из вариантов содержит индикатор текущего режима обработки набора команд, место хранения данных, выполненное с возможностью хранить индикатор целевого режима обработки набора команд, исполнительный блок, выполненный с возможностью выполнения команд согласно текущему режиму обработки набора команд, и схему сравнения, выполненную с возможностью сравнивать текущий режим обработки набора команд и целевой режим обработки набора команд при выполнении каждой команды и выводить индикацию, если текущий режим обработки набора команд соответствует целевому режиму обработки набора команд. 4 н. и 24 з.п. ф-лы, 3 ил., 2 табл.
Description
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится, в общем, к процессорам и, в частности, к системе и способу отладки кода на процессоре посредством схемы отладки, которые включают в себя рассмотрение режима обработки набора команд процессора.
УРОВЕНЬ ТЕХНИКИ
Современные процессоры являются чрезвычайно сложными системами. Большинство современных процессоров используют конвейерную архитектуру, где последовательные команды, каждая из которых имеет множество этапов исполнения, совмещаются при выполнении. Множество процессоров, известных как "суперскалярные" процессоры, включают два или более отдельных конвейера для параллельного выполнения команд. Чтобы избежать остановов в конвейере из-за команд ветвления, большинство процессоров использует различные формы предсказания переходов со спекулятивной выборкой и выполнением команд при принятии предсказанных переходов. Чтобы улучшить производительность, множество современных процессоров отделяют логические адреса регистра от соответствующих физических регистров памяти, что известно как переименование регистров. Чтобы предоставить программам иллюзию неограниченной и быстродействующей памяти, множество процессоров выполняют код в виртуальном адресном пространстве, транслируя адреса в одно или более физических адресных пространств, когда данные проходят через иерархию памяти (например, регистр, кэш, оперативная память). При такой сложности выполнение кода в рамках современного процессора очень трудно точно проследить и проверить правильность выбора. В частности, аномальные ситуации могут быть очень сложны в отладке.
Кроме того, само программное обеспечение, которое выполняется на современных процессорах, чрезвычайно сложно. С появлением архитектур процессоров с сокращенным набором команд (RISC) большая часть вычислительной и логической сложности вычисления перемещена от команд процессора к оптимизирующим компиляторам. Таким образом, компиляторы создают сложные операции из относительно маленького набора команд процессора, каждая из которых оптимизирована для определенной, конкретной функции. Это приводит к более длинной и сложной последовательности команд, включающих, например, логические, арифметические, загрузочные/сохраняющие операции и операции ветвления для данной вычислительной задачи. Такой сложный код может быть сложным в отладке, когда ошибки вызывают аномальное поведение программы.
Чтобы содействовать задаче подчинения отладки сложного кода, выполняющегося на сложном процессоре, во многие процессоры встроены инструменты отладки. Они могут включать в себя компараторы адреса и данных для того, чтобы идентифицировать определенные команды и/или шаблоны данных. Отладчики могут дополнительно включать в себя компараторы адресного интервала так, чтобы отладка или отслеживание могли быть ограничены предопределенными кодовыми сегментами. Другие инструменты отладки могут включать в себя счетчики, задатчики последовательности и т.п., чтобы предоставить гибкость в определении условий, которые определяют точки останова и/или отслеживают инициирующие механизмы. Трассировочная информация может быть предоставлена вне кристалла, например через выделенную шину, или может быть сохранена в выделенном на кристалле буфере. Точки остановов могут инициировать один или более внешних сигналов, например, таких, чтобы вызвать срабатывание и/или запуск логического анализатора или подсвечивание светодиода; могут вызвать исключительную ситуацию, выполнение кода ветвления к подпрограмме отладки; или могут просто остановить выполнение, позволяя производить просмотр содержимого регистров и кэшей. Эти инструменты отладки, которые не используются во время нормальной работы процессора, встроены в схемы процессора таким образом, чтобы минимизировать воздействие на производительность процессора и потребляемую мощность.
Программисты могут явно установить надлежащий режим обработки набора команд в программном обеспечении до выполнения команд согласно релевантному кодированию набора команд. Однако неправильное программное обеспечение может время от времени выполнять переход к специфическому адресу команды, который был предназначен для выполнения в одном режиме обработки набора команд, в то время как процессор находится фактически в некотором другом режиме обработки набора команд. В таком случае процессор может попытаться выполнить команду по этому адресу, используя неподходящее декодирование набора команд, приводящее к неправильным результатам.
Например, некоторые версии архитектуры семейства процессоров ARM содержат по меньшей мере два набора команд режимов обработки: 32-разрядный режим ARM и 16-разрядный режим "Thumb". В таблице 1 представлен фрагмент кода команд ARM:
Таблица 1 Режим ARM кодирования команд |
||
000096F0 | cpy | r4,r0 |
000096F4 | bl | 0xA8A0 |
000096FC | cpy | r1,r4 |
00009700 | ldr | r0,[r0, #0x8] |
В таблице 2 представлен тот же самый код, интерпретированный в режиме "Thumb":
Таблица 2 Кодирование команды в режима "Thumb" |
||
000096F0 | and | r0,r0 |
000096F2 | b | 0x9A36 |
000096F4 | lsl | rl,r5,#0x11 |
000096F6 | add.w | r0,r0,r4,lsl #0x4 |
000096FA | b | 0x9A3E |
000096FC | lsl | r0,rl,#0x0 |
000096FE | b | 0x9222 |
00009700 | and | r0,r2 |
Отметим, в частности, команды перехода в 96F2, 96FA и 96FE. Ввиду ошибочного перехода может быть трудно установить место, в котором ошибка вызвала код ARM Таблицы 1, чтобы быть интерпретированной в режиме "Thumb", как в таблице 2, и, следовательно, отладить ошибку. Эта трудность возникает, потому что схемы отладки, известные из предшествующего уровня техники, не включают в себя режим обработки набора команд процессора как входные данные для логики, которая вызывает точки останова, инициализирует трассировки и тому подобное.
Большинство процессоров, которые поддерживают два или более "режимов" обработки, как, например, привилегированные (супервизора) и непривилегированные (пользовательские) режимы, или реальные и защищенные режимы, переключаются между режимами посредством вызова исключительной ситуации и выполнения перехода к подпрограмме переключения режимов. Эта операция легко обнаруживается, используя инструменты отладки, известные из предшествующего уровня техники, и программное обеспечение, посредством установки точки останова или начала трассировки на адрес команды подпрограммы переключения режимов. Переключение режимов обработки набора команд процессором без получения исключительной ситуации является одним примером поведения кода, который является трудным в диагностике с помощью инструментов отладки, известных из уровня техники, которые не включают в себя режим обработки набора команд процессором в качестве рассмотрения при вызове точек остановов, инициализации трассировки и т.п.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Технический результат, на достижение которого направлено настоящее изобретение, заключается в повышении эффективности отладки команд в процессоре посредством использования режима обработки набора команд процессора.
Согласно одному или более варианту осуществления схема отладки в процессоре, выполняющем два или более наборов команд, идентифицирует адрес, по которому процессор переключается из одного режима обработки набора команд на другой режим обработки набора команд, и выводит предупреждение или указатель (индикацию) переключения режима. Предупреждение или индикация могут содержать сигнал точки останова, который останавливает выполнение и/или является выходным сигналом в качестве внешнего сигнала процессора. Адрес команды, по которому процессор переключает режим обработки набора команд, может быть дополнительно выведен. Альтернативно, предупреждение или индикация могут включать в себя начало или окончание трассировочной операции, вызов исключительной ситуации или любую другую известную функцию отладчика.
Один вариант осуществления относится к способу отладки программного кода, содержащего множество команд, на процессоре, имеющем по меньшей мере два различных режима обработки набора команд. Целевой режим обработки набора команд принимается до выполнения любых команд кода. Команды кода выполняются, и для каждой выполняемой команды текущий режим обработки набора команд процессора сравнивается с целевым набором команд режима обработки. Предупреждение инициируется, если текущий режим обработки набора команд процессора соответствует целевому режиму обработки набора команд.
Другой вариант осуществления относится к способу выполнения программного обеспечения на процессоре, имеющем по меньшей мере первый и второй режимы обработки набора команд. Адрес, по которому процессор переключает первый режим обработки набора команд на второй режим обработки набора команд, идентифицируется, и предупреждение инициируется в ответ на идентификацию.
Еще один вариант осуществления относится к процессору, выполненному с возможностью выполнения команд согласно двум или более кодированиям набора команд, причем каждый - в отличных режимах обработки наборов команд. Процессор включает в себя индикатор текущего режима обработки набора команд и местоположение хранения данных для сохранения индикатора целевого режима обработки набора команд. Процессор также включает в себя исполнительный блок, выполненный с возможностью осуществлять команды согласно текущему режиму обработки набора команд, и схему сравнения, выполненную с возможностью сравнивать текущий режим обработки набора команд с целевым режимом обработки набора команд при выполнении каждой команды, и вывода индикации, если текущий режим обработки набора команд соответствует целевому режиму обработки набора команд.
Еще один вариант осуществления относится к процессору, выполненному с возможностью осуществления двух или более кодирований набора команд, причем каждый - в отличном режиме обработки набора команд. Процессор включает в себя схему сравнения, выполненную с возможностью обнаруживать изменение в режиме обработки набора команд и выводить индикацию относительно изменения режима обработки набора команд, и адрес команды, по которому это изменение происходит, в ответ на обнаружение.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 является функциональной блок-схемой процессора.
Фиг.2 является функциональной блок-схемой конвейера процессора, включая схему отладки.
Фиг.3 является блок-схемой последовательности операций процесса диагностики/отладки.
ПОДРОБНОЕ ОПИСАНИЕ
Фиг.1 иллюстрирует функциональную блок-схему процессора 10. Процессор 10 выполняет команды в конвейере 12 выполнения команды согласно логике 14 управления. Логика 14 управления поддерживает счетчик 15 программы (PC), и устанавливает и очищает биты в одном или более регистрах 16 состояния для указания, например, текущего режима обработки набора команд, информации относительно результатов арифметических операций и логических сравнений (нуль, перенос, равно, не равно) и т.п. В некоторых вариантах осуществления конвейер 12 может быть суперскалярной конструкцией с множественными параллельными конвейерами. Конвейер 12 может также называться как исполнительный блок. Файл 20 регистров общего назначения (GPR) предоставляет регистры, доступные конвейеру 12, и представляет собой вершину иерархии памяти.
Процессор 10, который выполняет команды по меньшей мере из двух наборов команд в различных режимах обработки набора команд, дополнительно включает в себя схему 18 отладки, выполненную с возможностью сравнивать, при выполнении каждой команды, по меньшей мере заранее определенный целевой режим обработки набора команд и текущий режим обработки набора команд и предоставлять индикацию соответствия между двумя режимами. Схема 18 отладки описана более подробно ниже.
Конвейер 12 осуществляет выборку команд из кэша 26 команд (I-кэш) с трансляцией адреса памяти и разрешениями, управляемыми буфером предыстории трансляции команд (ITLB) 28. К данным обращаются из кэша 30 данных (D-кэш) с трансляцией адреса памяти и разрешениями, управляемыми основным буфером предыстории трансляции 32 (TLB). В различных вариантах осуществления ITLB 28 может включать в себя копию части TLB 32. Альтернативно, ITLB 28 и TLB 32 могут быть интегрированы. Точно также в различных вариантах осуществления процессора 10, I-кэш 26 и D-кэш 30 могут быть интегрированы или объединены. Промахи в I-кэше 26 и/или D-кэше 30 вызывают обращение к основной памяти (вне кристалла) 38, 40 с помощью интерфейса 34 памяти. Интерфейс 34 памяти может быть основным входом в шинное соединение 42, реализующее совместно используемую шину для одного или более устройств 38, 40 памяти. Дополнительные основные устройства (не показанные) могут дополнительно подключиться к шинному соединению 42.
Процессор 10 может включать в себя интерфейс 44 ввода/вывода (I/O), который может быть ведущим устройством на периферийной шине, через которую интерфейс 44 I/O может обратиться к различным периферийным устройствам 48, 50. Для специалистов в данной области техники понятно, что возможны многочисленные изменения процессора 10. Например, процессор 10 может включать в себя кэш второго уровня (L2) для одного или для обоих I- и D-кэшей 26, 30. Кроме того, один или более функциональных блоков, изображенных в процессоре 10, могут быть не включены в конкретный вариант осуществления. Другие функциональные блоки, которые могут постоянно находиться в процессоре 10, например, контроллер JTAG, предварительный декодер команд, целевой кэш адреса перехода и т.п., не относятся к описанию настоящего изобретения и исключены для ясности.
Фиг.2 иллюстрирует функциональную блок-схему одного варианта осуществления схемы 18 отладки. Схема 18 отладки включает в себя регистр 52 целевого режима обработки набора команд, регистр 54 адреса начала адресного интервала и регистр 56 адреса конца адресного интервала. Регистры 52, 54, 56 загружаются программистами с помощью диагностического программного обеспечения до операции диагностики/отладки. Значение, записанное в регистр 52 целевого режима обработки набора команд, сравнивается с текущим режимом обработки набора команд процессора во время выполнения каждой команды для инициирования точки останова, трассировочной функции или другого предупреждения. Значения регистров 54, 56 начального и конечного адреса являются началом и концом, соответственно, целевого адресного интервала, по которому схема 18 отладки должна контролировать соответствие между текущим и целевым режимом обработки набора команд.
Для специалистов в данной области техники понятно, что схема 18 отладки может включать в себя дополнительные настраиваемые параметры и дополнительные функциональные блоки, разрешающие точки останова, трассировки и т.п. для инициирования в широком спектре условий. Эти блоки не отражены на фиг.2 для ясности, но вообще могут включать в себя все параметры схемы отладки и функциональные возможности, известные из уровня техники.
До выполнения диагностики/отладки программист загружает регистры 54, 56 начального и конечного адреса, чтобы определить целевую область адреса, которая может колебаться от одного адреса до всего адресного интервала тестируемого кода. В других вариантах осуществления множество регистров начального и конечного адреса могут быть предоставлены, чтобы определить множество целевых адресных интервалов. Программист дополнительно загружает регистр 52 целевого режима обработки набора команд. Например, в случае процессора ARM, выполняющего код полностью в режиме ARM, программист может загрузить регистр 52 значением, указывающим режим "Thumb", устанавливать точки останова, побуждающие схему 18 отладки остановить выполнение, например, если процессор 10 выполняет команду в пределах адресного интервала, определенного регистрами 54, 56 в режиме "Thumb".
Во время операции диагностики/отладки значение, сохраненное в регистре 52 целевого режима обработки набора команд, сравнивается с битом регистра состояния, указывающим текущий режим обработки набора команд процессора 10 в логике сравнения, таком как вентиль 58 AND. Например, в процессоре 10 ARM бит 5 из регистра 16 состояния текущей программы (CPSR) может быть проверен. Выходной сигнал 60 из логики 58 сравнения будет установлен, только когда текущий режим обработки набора команд процессора 10 сопоставляется с режимом обработки набора команд, указанным регистром 52 целевого режима обработки набора команд.
В вариантах осуществления, где процессор 10 выполняет команды из более чем двух наборов команд в различных режимах обработки набора команд, регистр 52 целевого режима обработки набора команд и биты индикатора режима CPSR (или другой регистр состояния) 16 будут включать многобитовые значения, и логика 58 сравнения может включать в себя дополнительные схемы, например, декодеры. В различных вариантах осуществления другие индикации относительно текущего режима обработки набора команд используются вместо CPSR 16, например, выходной сигнал логики декодирования команд.
Одновременно, текущее значение PC 15 сравнивается с регистрами 54, 56 адресного интервала в логике 68 сравнения адреса. Выходной сигнал 70 из логики 68 сравнения адреса устанавливается всякий раз, когда текущее значение PC 15 находится в пределах целевого адресного интервала. В различных вариантах осуществления индикации относительно "текущего" адреса команды могут отличаться от PC 15, как требуется или задано. Например, схема 68 сравнения адреса может сравнивать адреса команд на этапе (каскаде) декодирования в конвейере 12, каскаде выполнения, или любом другом каскаде конвейера. Кроме того, может использоваться другой динамический адрес, как, например, адрес последней команды в конвейере 12, для фиксации выполнения.
Выходной сигнал 70 из логики 68 сравнения адреса объединяется посредством операции AND с выходным сигналом 60 из логики 58 сравнения индикатора режима обработки набора команд в AND вентиле 72 для формирования выходного сигнала 20, указывающего соответствие в данный период времени между текущим и целевым режимом обработки набора команд, происходящее в пределах целевого адресного интервала. В одном варианте осуществления выходной сигнал 20 предоставляется как выходной сигнал процессора (см. фиг.1). Этот выходной сигнал 20 может побуждать и/или инициировать логический анализатор, подсветить светодиод или вызвать некоторое другое действие или сигнал тревоги. В одном варианте осуществления, как изображено на фиг.1, выходной сигнал 20 индикатора о соответствии режима обработки набора команд может являться входящим сигналом на контроллер 14 для остановки выполнения процессором 10.
В одном варианте осуществления выходной сигнал 20 индикатора о соответствии режима обработки набора команд может инициализировать или останавливать операцию трассировки команды, с трассировочной информацией, направляемой к выходным контактам процессора 10 или сохраняемой в находящемся на кристалле буфере трассировки (не показан). В одном варианте осуществления, как показано на фиг.2, выходной сигнал 20 индикатора о соответствии режима обработки набора команд может переключать регистр 74 адреса соответствия режима обработки набора команд, фиксируя значение PC 15, и, следовательно, адрес команды, при которой соответствие может быть обнаружено между текущим и целевым режимом обработки набора команд. Это может быть особенно важным в обнаружении смены одного режима обработки набора команд на другой. Выходной сигнал 76 из этого регистра 74 может быть направлен к выводам процессора 10 для внешнего просмотра.
В одном варианте осуществления выходной сигнал 20 индикатора о соответствии режима обработки набора команд может вызывать исключительную ситуацию, выполнение кода ветвления к предопределенной подпрограмме. Эта подпрограмма соответствия режима набора команд может, например, считывать регистр 74 адреса соответствия режима обработки набора команд. В общем, выходной сигнал 20 индикатора о соответствии режима обработки набора команд может запускать любую известную операцию отладки, как требуется или задано.
Фиг.3 иллюстрирует способ отладки кода согласно одному или более вариантам осуществления настоящего изобретения. Начиная с этапа 78, программист инициализирует регистры схемы отладки (этап 80). Это может содержать, например, загрузку регистра 52 целевого режима обработки набора команд и установку целевого адресного интервала посредством загрузки регистра 54 начального адреса и регистра 56 конечного адреса. Дополнительные регистры схемы отладки (не показаны) могут быть инициализированы, как требуется или задано.
Далее программист начинает выполнение кода, который должен быть отлажен (этап 82), последовательно выбирая и выполняя следующую команду (этап 84) в последовательности кода. Независимо от адреса, если текущий режим обработки набора команд процессора 10 не соответствует таковому, установленному программистом в регистре 52 целевого режима обработки набора команд (этап 86), то следующая команда выбирается и выполняется (этап 84) до окончания кода, подлежащего отладке (этап 88), при котором способ останавливается на этапе 90.
Если при выполнении команды (этап 84) адрес команды находится в пределах предопределенного адресного интервала, и текущий режим обработки набора команд соответствует установленному программистом в регистре 52 целевого режима обработки набора команд (этап 86), то схема отладки устанавливает выходной сигнал 20 и может выбрать любое число действий, как определено программистом.
Например, выходной сигнал 20 схемы отладки может побудить процессор 10 принимать исключительную ситуацию, выполнение кода ветвления к подпрограмме соответствия режима обработки набора команд (этап 92). Выходной сигнал 20 схемы отладки может побудить контроллер 14 конвейера останавливать выполнение (этап 94), разрешая программисту проверить содержимое различных регистров, строк кэша и т.п. Схема 18 отладки может установить выходной сигнал 20 внешне (этап 96), который может использоваться для задания или запуска логического анализатора, подсвечивания светодиода или т.п. Схема 18 отладки может дополнительно выводить адрес соответствия режима обработки набора команд для внешнего просмотра (этап 98). Схема 18 отладки может начинать или заканчивать трассировочную операцию (этап 100). Несмотря на то, что схема 18 отладки изображена как альтернатива, в данном варианте осуществления она может выполнить два или более этапов 92-96. В общем, схема 18 отладки может предпринять любое действие, известное в предшествующем уровне техники, которое выгодно для отладки кода на процессоре 10, после обнаружения соответствия между текущим режимом обработки набора команд и целевым режимом обработки набора команд.
Термин "набор команд", как используется здесь, относится к набору кодов, посредством которого данные команд (например, содержимое строки I-кэша) интерпретируются процессором 10 как выполнимые команды. Термин "режим обработки набора команд" относится к идентифицируемому режиму работы процессора 10, в котором данные команд интерпретируются согласно определенному кодированию набора команд. В частности, "режим обработки набора команд" отличается от известных "режимов" обработки процессором, например, разрешениями (например, режим супервизора и пользовательский), адресацией памяти (например, реальный и защищенный режим) и т.п.
Хотя настоящее изобретение было описано здесь относительно конкретных признаков, аспектов и вариантов осуществления, очевидно, что многочисленные изменения, модификации и другие варианты осуществления возможны в пределах широкой области применения настоящего изобретения, и, соответственно, все изменения, модификации и воплощения должны попадать в рамки изобретения. Поэтому настоящие варианты осуществления должны быть рассмотрены во всех аспектах как иллюстративные и без ограничений и должны содержать все изменения, находящиеся в пределах объема и формы эквивалентов приложенной формулы изобретения.
Claims (28)
1. Способ отладки кода программного обеспечения, содержащего множество команд на процессоре, имеющем по меньшей мере два различных режима обработки набора команд, содержащий этапы, на которых:
принимают целевой режим обработки набора команд до выполнения любых команд кода;
выполняют команды кода и для каждой выполненной команды сравнивают текущий режим обработки набора команд процессора с целевым режимом обработки набора команд; и
формируют предупреждение, если текущий режим обработки набора команд процессора соответствует целевому режиму обработки набора команд.
принимают целевой режим обработки набора команд до выполнения любых команд кода;
выполняют команды кода и для каждой выполненной команды сравнивают текущий режим обработки набора команд процессора с целевым режимом обработки набора команд; и
формируют предупреждение, если текущий режим обработки набора команд процессора соответствует целевому режиму обработки набора команд.
2. Способ по п.1, в котором предупреждение содержит остановку выполнения команды.
3. Способ по п.1, в котором предупреждение содержит управление трассировочной операцией.
4. Способ по п.1, в котором предупреждение содержит вызов исключительной ситуации.
5. Способ по п.1, в котором предупреждение содержит выведение сигнала, указывающего о соответствии между текущим режимом обработки набора команд процессора и целевым режимом обработки набора команд.
6. Способ по п.1, в котором предупреждение содержит выведение адреса команды, для которой текущий режим обработки набора команд процессора соответствует целевому режиму обработки набора команд.
7. Способ по п.1, дополнительно содержащий этапы, на которых:
принимают целевой адресный интервал до выполнения любых команд кода;
для каждой выполненной команды сравнивают текущий адрес команды с целевым адресным интервалом; и
формируют предупреждение, только если текущий режим обработки набора команд процессора соответствует целевому режиму обработки набора команд, и текущий адрес команды находится в пределах целевого адресного интервала.
принимают целевой адресный интервал до выполнения любых команд кода;
для каждой выполненной команды сравнивают текущий адрес команды с целевым адресным интервалом; и
формируют предупреждение, только если текущий режим обработки набора команд процессора соответствует целевому режиму обработки набора команд, и текущий адрес команды находится в пределах целевого адресного интервала.
8. Способ выполнения программного обеспечения на процессоре, имеющем по меньшей мере первый и второй режимы обработки набора команд, содержащий этапы, на которых:
идентифицируют адрес, по которому процессор переключает первый режим обработки набора команд на второй режим обработки набора команд; и
формируют предупреждение в ответ на идентификацию.
идентифицируют адрес, по которому процессор переключает первый режим обработки набора команд на второй режим обработки набора команд; и
формируют предупреждение в ответ на идентификацию.
9. Способ по п.8, в котором предупреждение содержит остановку выполнения команды.
10. Способ по п.8, в котором предупреждение содержит управление трассировочной операцией.
11. Способ по п.8, в котором предупреждение содержит вызов исключительной ситуации.
12. Способ по п.8, в котором предупреждение содержит выведение индикатора сигнала, указывающего об изменении режима обработки набора команд.
13. Способ по п.8, в котором предупреждение содержит выведение адреса идентифицированной команды.
14. Способ по п.8, в котором идентифицирование адреса, по которому процессор переключает первый режим обработки набора команд на второй режим обработки набора команд, содержит идентифицирование адреса, только если он находится в пределах предопределенного адресного интервала.
15. Процессор, выполненный с возможностью выполнять команды согласно двум или более кодированиям набора команд, каждый - в отличном режиме обработки набора команд, содержащий:
индикатор текущего режима обработки набора команд;
место хранения данных, выполненное с возможностью хранить индикатор целевого режима обработки набора команд;
исполнительный блок, выполненный с возможностью выполнения команд согласно текущему режиму обработки набора команд; и
схему сравнения, выполненную с возможностью сравнивать текущий режим обработки набора команд и целевой режим обработки набора команд при выполнении каждой команды и выводить индикацию, если текущий режим обработки набора команд соответствует целевому режиму обработки набора команд.
индикатор текущего режима обработки набора команд;
место хранения данных, выполненное с возможностью хранить индикатор целевого режима обработки набора команд;
исполнительный блок, выполненный с возможностью выполнения команд согласно текущему режиму обработки набора команд; и
схему сравнения, выполненную с возможностью сравнивать текущий режим обработки набора команд и целевой режим обработки набора команд при выполнении каждой команды и выводить индикацию, если текущий режим обработки набора команд соответствует целевому режиму обработки набора команд.
16. Процессор по п.15, в котором индикация содержит сигнал, служащий для остановки выполнения команды.
17. Процессор по п.15, в котором индикация содержит сигнал, служащий для управления трассировочной операцией.
18. Процессор по п.15, в котором индикация содержит сигнал, служащий для вызова исключительной ситуации.
19. Процессор по п.15, в котором индикация содержит сигнал, указывающий, что текущий режим обработки набора команд соответствует целевому режиму обработки набора команд.
20. Процессор по п.15, в котором индикация содержит адрес выполняемой команды, когда соответствие обнаружено между текущим режимом обработки набора команд и целевым режимом обработки набора команд.
21. Процессор по п.15, дополнительно содержащий местоположение хранения данных, выполненное с возможностью хранения целевого адресного интервала, и причем схема сравнения выполнена с возможностью выводить индикацию, только если текущий режим обработки набора команд соответствует целевому режиму обработки набора команд, и адрес команды, которая выполняется в текущий момент, находится в пределах целевого адресного интервала.
22. Процессор, выполненный с возможностью выполнять два или более кодирований набора команд, каждый - в отличном режиме обработки набора команд, содержащий:
схему сравнения, выполненную с возможностью обнаруживать изменение в режиме обработки набора команд и выводить индикацию относительно изменения режима обработки набора команд, и адрес команды, в которой происходит изменение, в ответ на обнаружение.
схему сравнения, выполненную с возможностью обнаруживать изменение в режиме обработки набора команд и выводить индикацию относительно изменения режима обработки набора команд, и адрес команды, в которой происходит изменение, в ответ на обнаружение.
23. Процессор по п.22, в котором индикация содержит сигнал, служащий для остановки выполнения команды.
24. Процессор по п.22, в котором индикация содержит сигнал, служащий для управления трассировочной операцией.
25. Процессор по п.22, в котором индикация содержит сигнал, служащий для вызова исключительной ситуации.
26. Процессор по п.22, в котором индикация содержит сигнал, указывающий изменения в режиме обработки набора команд.
27. Процессор по п.22, в котором индикация содержит измененный адрес режима обработки набора команд.
28. Процессор по п.22, в котором схема сравнения обнаруживает изменение в режиме обработки набора команд, только когда адрес команды, по которому происходит изменение, находится в пределах предопределенного адресного интервала.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/463,379 US8352713B2 (en) | 2006-08-09 | 2006-08-09 | Debug circuit comparing processor instruction set operating mode |
US11/463,379 | 2006-08-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2009108321A RU2009108321A (ru) | 2010-09-20 |
RU2429525C2 true RU2429525C2 (ru) | 2011-09-20 |
Family
ID=38891045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2009108321/08A RU2429525C2 (ru) | 2006-08-09 | 2007-08-03 | Схема отладки, сравнивающая режим обработки набора команд процессора |
Country Status (13)
Country | Link |
---|---|
US (1) | US8352713B2 (ru) |
EP (2) | EP2054808B1 (ru) |
JP (2) | JP5546859B2 (ru) |
KR (1) | KR101019278B1 (ru) |
CN (2) | CN106909501B (ru) |
BR (1) | BRPI0715163B1 (ru) |
CA (1) | CA2658829C (ru) |
ES (1) | ES2588185T3 (ru) |
HU (1) | HUE029441T2 (ru) |
IN (1) | IN2014MN01895A (ru) |
MX (1) | MX2009001458A (ru) |
RU (1) | RU2429525C2 (ru) |
WO (1) | WO2008021763A1 (ru) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2635044C2 (ru) * | 2013-06-27 | 2017-11-08 | Интел Корпорейшн | Режим слежения в устройстве обработки в системах трассировки команд |
RU2769785C1 (ru) * | 2018-06-27 | 2022-04-06 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Точки останова воспроизведения трассировки на основе кэша, использующие зарезервированные биты поля тега |
RU2773437C2 (ru) * | 2018-02-23 | 2022-06-03 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Запись трассировки посредством регистрации входящих потоков в кэш нижнего уровня на основе элементов в кэше верхнего уровня |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2864655B1 (fr) * | 2003-12-31 | 2006-03-24 | Trusted Logic | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
US7555605B2 (en) * | 2006-09-28 | 2009-06-30 | Freescale Semiconductor, Inc. | Data processing system having cache memory debugging support and method therefor |
US20080162900A1 (en) * | 2006-12-29 | 2008-07-03 | Andre Rolfsmeier | System, Method and Apparatus for Observing a Control Device |
CN101777021B (zh) * | 2010-01-21 | 2012-07-04 | 龙芯中科技术有限公司 | 微处理器中精确数据断点的实现装置及其方法 |
US9639451B2 (en) | 2010-01-25 | 2017-05-02 | Nxp Usa, Inc. | Debugger system, method and computer program product for utilizing hardware breakpoints for debugging instructions |
GB2482701C (en) | 2010-08-11 | 2018-12-26 | Advanced Risc Mach Ltd | Illegal mode change handling |
GB2483906C (en) * | 2010-09-24 | 2019-10-09 | Advanced Risc Mach Ltd | Selection of debug instruction set for debugging of a data processing apparatus |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
US9703950B2 (en) * | 2012-03-30 | 2017-07-11 | Irdeto B.V. | Method and system for preventing and detecting security threats |
KR102013582B1 (ko) | 2012-09-07 | 2019-08-23 | 삼성전자 주식회사 | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 |
JP2014085859A (ja) * | 2012-10-24 | 2014-05-12 | Renesas Electronics Corp | 半導体集積回路装置 |
US9268563B2 (en) * | 2012-11-12 | 2016-02-23 | International Business Machines Corporation | Verification of a vector execution unit design |
GB2527088B (en) * | 2014-06-11 | 2021-07-14 | Advanced Risc Mach Ltd | Executing debug program instructions on a target apparatus processing pipeline |
US9626267B2 (en) * | 2015-01-30 | 2017-04-18 | International Business Machines Corporation | Test generation using expected mode of the target hardware device |
US11269640B2 (en) * | 2017-02-13 | 2022-03-08 | Qualcomm Incorporated | Speculative transitions among modes with different privilege levels in a block-based microarchitecture |
US10169196B2 (en) * | 2017-03-20 | 2019-01-01 | Microsoft Technology Licensing, Llc | Enabling breakpoints on entire data structures |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
US11468199B2 (en) | 2020-07-22 | 2022-10-11 | Apple Inc. | Authenticated debug for computing systems |
US11436187B2 (en) * | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
CN113127285B (zh) * | 2021-06-17 | 2021-10-08 | 北京燧原智能科技有限公司 | 一种错误数据调试方法、装置、芯片及计算机设备 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06202907A (ja) | 1993-01-06 | 1994-07-22 | Hitachi Ltd | デバッグ支援装置 |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5781750A (en) * | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
US5774686A (en) * | 1995-06-07 | 1998-06-30 | Intel Corporation | Method and apparatus for providing two system architectures in a processor |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
US5680620A (en) * | 1995-06-30 | 1997-10-21 | Dell Usa, L.P. | System and method for detecting access to a peripheral device using a debug register |
JP3623840B2 (ja) * | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US5963737A (en) * | 1996-04-18 | 1999-10-05 | International Business Machines Corporation | Interupt vectoring for trace exception facility in computer systems |
DE19701166A1 (de) | 1997-01-15 | 1998-07-23 | Siemens Ag | Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen |
US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
JPH11338710A (ja) | 1998-05-28 | 1999-12-10 | Toshiba Corp | 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体 |
US6480818B1 (en) * | 1998-11-13 | 2002-11-12 | Cray Inc. | Debugging techniques in a multithreaded environment |
US6430674B1 (en) * | 1998-12-30 | 2002-08-06 | Intel Corporation | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time |
US7013456B1 (en) * | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
US6826748B1 (en) * | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US7275246B1 (en) * | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US7793261B1 (en) * | 1999-10-01 | 2010-09-07 | Stmicroelectronics Limited | Interface for transferring debug information |
US6449712B1 (en) * | 1999-10-01 | 2002-09-10 | Hitachi, Ltd. | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6609247B1 (en) * | 2000-02-18 | 2003-08-19 | Hewlett-Packard Development Company | Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US7093108B2 (en) | 2001-02-01 | 2006-08-15 | Arm Limited | Apparatus and method for efficiently incorporating instruction set information with instruction addresses |
US6760864B2 (en) * | 2001-02-21 | 2004-07-06 | Freescale Semiconductor, Inc. | Data processing system with on-chip FIFO for storing debug information and method therefor |
US6901583B1 (en) * | 2001-07-19 | 2005-05-31 | Hewlett-Packard Development Company, L.P. | Method for testing of a software emulator while executing the software emulator on a target machine architecture |
US7865948B1 (en) | 2001-12-03 | 2011-01-04 | Advanced Micro Devices, Inc. | Method and apparatus for restricted execution of security sensitive instructions |
US7017030B2 (en) | 2002-02-20 | 2006-03-21 | Arm Limited | Prediction of instructions in a data processing apparatus |
JP2003256237A (ja) | 2002-02-27 | 2003-09-10 | Toshiba Corp | 割り込み発生装置、割り込み発生方法および割り込み発生プログラム |
GB0225649D0 (en) * | 2002-11-04 | 2002-12-11 | Transitive Technologies Ltd | Incremental validation |
WO2004049152A1 (en) | 2002-11-26 | 2004-06-10 | Mplicity Ltd. | A processor capable of multi-threaded execution of a plurality of instruction-sets |
CN1216327C (zh) * | 2003-05-15 | 2005-08-24 | 复旦大学 | 采用双指令集的32位嵌入式微处理器 |
EP1628235A1 (en) * | 2004-07-01 | 2006-02-22 | Texas Instruments Incorporated | Method and system of ensuring integrity of a secure mode entry sequence |
US7958335B2 (en) * | 2005-08-05 | 2011-06-07 | Arm Limited | Multiple instruction set decoding |
US7757221B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
-
2006
- 2006-08-09 US US11/463,379 patent/US8352713B2/en active Active
-
2007
- 2007-08-03 EP EP07813770.0A patent/EP2054808B1/en active Active
- 2007-08-03 CA CA2658829A patent/CA2658829C/en active Active
- 2007-08-03 EP EP15194129.1A patent/EP3009936A1/en not_active Ceased
- 2007-08-03 BR BRPI0715163-2A patent/BRPI0715163B1/pt active IP Right Grant
- 2007-08-03 HU HUE07813770A patent/HUE029441T2/en unknown
- 2007-08-03 CN CN201611183722.0A patent/CN106909501B/zh active Active
- 2007-08-03 KR KR1020097004853A patent/KR101019278B1/ko active IP Right Grant
- 2007-08-03 MX MX2009001458A patent/MX2009001458A/es active IP Right Grant
- 2007-08-03 CN CN200780029330.1A patent/CN101501650B/zh active Active
- 2007-08-03 ES ES07813770.0T patent/ES2588185T3/es active Active
- 2007-08-03 WO PCT/US2007/075194 patent/WO2008021763A1/en active Application Filing
- 2007-08-03 JP JP2009523924A patent/JP5546859B2/ja active Active
- 2007-08-03 RU RU2009108321/08A patent/RU2429525C2/ru active
- 2007-08-03 IN IN1895MUN2014 patent/IN2014MN01895A/en unknown
-
2012
- 2012-10-12 JP JP2012227313A patent/JP5788370B2/ja active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2635044C2 (ru) * | 2013-06-27 | 2017-11-08 | Интел Корпорейшн | Режим слежения в устройстве обработки в системах трассировки команд |
US10331452B2 (en) | 2013-06-27 | 2019-06-25 | Intel Corporation | Tracking mode of a processing device in instruction tracing systems |
RU2773437C2 (ru) * | 2018-02-23 | 2022-06-03 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Запись трассировки посредством регистрации входящих потоков в кэш нижнего уровня на основе элементов в кэше верхнего уровня |
RU2769785C1 (ru) * | 2018-06-27 | 2022-04-06 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Точки останова воспроизведения трассировки на основе кэша, использующие зарезервированные биты поля тега |
US12007873B2 (en) | 2021-09-13 | 2024-06-11 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
Also Published As
Publication number | Publication date |
---|---|
RU2009108321A (ru) | 2010-09-20 |
JP5788370B2 (ja) | 2015-09-30 |
EP2054808A1 (en) | 2009-05-06 |
WO2008021763A1 (en) | 2008-02-21 |
ES2588185T3 (es) | 2016-10-31 |
IN2014MN01895A (ru) | 2015-07-10 |
JP5546859B2 (ja) | 2014-07-09 |
CA2658829C (en) | 2016-01-05 |
KR20090051205A (ko) | 2009-05-21 |
KR101019278B1 (ko) | 2011-03-07 |
CA2658829A1 (en) | 2008-02-21 |
EP3009936A1 (en) | 2016-04-20 |
HUE029441T2 (en) | 2017-02-28 |
US8352713B2 (en) | 2013-01-08 |
BRPI0715163B1 (pt) | 2023-05-09 |
EP2054808B1 (en) | 2016-05-25 |
BRPI0715163A2 (pt) | 2013-06-11 |
CN101501650A (zh) | 2009-08-05 |
CN101501650B (zh) | 2016-12-07 |
JP2010500661A (ja) | 2010-01-07 |
JP2013058217A (ja) | 2013-03-28 |
CN106909501B (zh) | 2021-02-05 |
US20080040587A1 (en) | 2008-02-14 |
CN106909501A (zh) | 2017-06-30 |
MX2009001458A (es) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2429525C2 (ru) | Схема отладки, сравнивающая режим обработки набора команд процессора | |
US8261047B2 (en) | Qualification of conditional debug instructions based on address | |
US8266608B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US7334161B2 (en) | Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus | |
US9152531B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US8261130B2 (en) | Program code trace signature | |
US6754856B2 (en) | Memory access debug facility | |
US7043416B1 (en) | System and method for state restoration in a diagnostic module for a high-speed microprocessor | |
US9003376B2 (en) | Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems | |
JP2002512396A (ja) | 組込みシステムのためのリアルタイムデバッガインターフェース | |
US20030097613A1 (en) | Software debugger, system-level debugger, debugging method, and debugging program | |
US10795685B2 (en) | Operating a pipeline flattener in order to track instructions for complex | |
US6990569B2 (en) | Handling problematic events in a data processing apparatus | |
GB2380831A (en) | Debug exception handler and registers | |
WO2003034224A2 (en) | Debug exception registers |