RU2429525C2 - Схема отладки, сравнивающая режим обработки набора команд процессора - Google Patents

Схема отладки, сравнивающая режим обработки набора команд процессора Download PDF

Info

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
Application number
RU2009108321/08A
Other languages
English (en)
Other versions
RU2009108321A (ru
Inventor
Кевин Чарльз БЕРК (US)
Кевин Чарльз БЕРК
Брайан Майкл СТЕМПЕЛ (US)
Брайан Майкл СТЕМПЕЛ
Дарен Юджин СТРИТТ (US)
Дарен Юджин СТРИТТ
Кевин Аллен САПП (US)
Кевин Аллен САПП
Лесли Марк ДЕБРЮЙН (US)
Лесли Марк ДЕБРЮЙН
Нэйбил Амир РИЗК (US)
Нэйбил Амир РИЗК
Томас Эндрю САРТОРИУС (US)
Томас Эндрю САРТОРИУС
Родни Уэйн СМИТ (US)
Родни Уэйн СМИТ
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2009108321A publication Critical patent/RU2009108321A/ru
Application granted granted Critical
Publication of RU2429525C2 publication Critical patent/RU2429525C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software 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, в котором схема сравнения обнаруживает изменение в режиме обработки набора команд, только когда адрес команды, по которому происходит изменение, находится в пределах предопределенного адресного интервала.
RU2009108321/08A 2006-08-09 2007-08-03 Схема отладки, сравнивающая режим обработки набора команд процессора RU2429525C2 (ru)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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