Определение профиля пути, используя комбинацию аппаратных и программных средств

Изобретение относится к средствам определения профиля пути. Технический результат заключается в повышение оптимизации работы программы. Определяют, посредством процессора, соответствует ли первый идентификатор пути имеющемуся идентификатору пути из множества идентификаторов пути, при этом каждый идентификатор пути из множества идентификаторов пути содержит данные, указывающие путь выполнения, сигнатуру пути, идентифицирующую один или более блоков инструкций, и идентификатор инструкции, идентифицирующий первую инструкцию в первом блоке инструкции из одного или более блоков инструкций. Выполняют последовательное приращение счетчика, связанного с имеющимся идентификатором пути, когда первый идентификатор пути соответствует имеющемуся идентификатору пути. Добавляют, посредством процессора, первый идентификатор пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует имеющемуся идентификатору пути из множества идентификаторов пути. Удаляют по меньшей мере один идентификатор пути из множества идентификаторов пути на основе того, сколько раз путь выполнения, связанный с указанным по меньшей мере одним идентификатором, выполнен процессором. 6 н. и 19 з.п. ф-лы, 14 ил., 47 пр.

 

Варианты осуществления, описанные здесь, в общем, относятся к устройствам обработки и, более конкретно, относятся к определению профиля пути.

Системы могут использовать информацию определения профиля, такую как профиль пути, для генерирования лучшего исполнительного кода и/или инструкций. Например, компьютеры, единовременные компиляторы (JIT), динамические бинарные трансляторы и т.д., могут использовать профиль пути для более эффективного и/или быстрого генерирования кода и/или инструкции. Информация об определении профиля пути может быть очень полезной в нескольких сценариях. Например, совместно разработанные устройства, содержащие программные/аппаратные средства, могут включать в себя уровень программных средств, который эмулирует, транслирует и оптимизирует инструкции поверх простой аппаратной конструкции. В совместно разработанном устройстве точная информация определения профиля пути может быть полезной для агрессивной оптимизации, такой как спекулятивное установление версии управления, и/или может обеспечивать лучшее понимание того, какие области инструкций выбрать для оптимизации. Определение профиля пути также может быть полезным для компиляторов JIT, таких как виртуальная машина Java® Virtual Machine или Microsoft® Common Language Runtime (CLR). Компилятор JIT может представлять собой программный уровень, который эмулирует и оптимизирует инструкции из портативного ISA (байтового кода) в собственный ISA, на котором работает виртуальная машина. Компиляторы JIT могут выполнять оптимизацию на основе пути и планирования трассы, для которой можно использовать преимущество применения точной информации об определении профиля пути (например, благодаря наличию точных профилей пути). Обычные компиляторы также могут использовать профили пути для выполнения оптимизации, которые генерируют более компактные и эффективные бинарные коды. Например, компилятор может использовать определение профиля пути для удаления невыполняемого кода и удаления общего подвыражения. Другое использование информации определения профиля состоит в идентификации сложного для выполнения пути (например, блоков инструкций, которые постоянно выполняются процессором или "горячих путей") для настройки рабочей характеристики и оптимизации программы. Определение профиля пути может использоваться для получения точной информации о выполненных путях.

Краткое описание чертежей

Раскрытие будет более понятным из подробного описания изобретения, представленного ниже, и из приложенных чертежей для различных вариантов осуществления раскрытия. Чертежи, однако, не следует рассматривать, как ограничение раскрытия конкретными вариантами осуществления, но они предназначены только для пояснения и лучшего понимания.

На фиг. 1 показана блок-схема микроархитектуры процессора 200, которая включает в себя логические схемы для выполнения инструкций, в соответствии с одним вариантом осуществления настоящего изобретения.

На фиг. 2 показана блок-схема, поясняющая конвейер, работающий по порядку, и этап переименования регистра, конвейер проблемы/выполнения команд не по порядку.

На фиг. 3 показана блок-схема, поясняющая архитектуру ядра и логику переименования регистра, выполняемую не по порядку проблему/логику выполнения, которая должна быть включена в процессор в соответствии с, по меньшей мере, одним вариантом осуществления раскрытия.

На фиг. 4 показана блок-схема вычислительной системы в соответствии с одним вариантом выполнения.

На фиг. 5 показана блок-схема приложения, включающая в себя блоки многоадресной команды, в соответствии с одним вариантом осуществления раскрытия.

На фиг. 6 представлена таблица, поясняющая пример данных идентификатора пути, в соответствии с одним вариантом выполнения раскрытия.

На фиг. 7 показана блок-схема архитектуры системы для генерирования профиля пути, в соответствии с одним вариантом выполнения раскрытия.

На фиг. 8 показана блок-схема, поясняющая модуль определения профиля для генерирования профиля пути, в соответствии с вариантом осуществления раскрытия.

На фиг. 9 показана блок-схема, поясняющая модуль идентификатора пути для отслеживания пути выполнения, в соответствии с вариантом осуществления раскрытия.

На фиг. 10 показана блок-схема последовательности операций, поясняющая способ генерирования профиля пути, в соответствии с одним вариантом выполнения раскрытия.

На фиг. 11 показана блок-схема последовательности операций, поясняющая способ отслеживания путей выполнения, в соответствии с одним вариантом выполнения раскрытия.

На фиг. 12 показана блок-схема системы на кристалле (SoC), в соответствии с вариантом осуществления настоящего раскрытия.

На фиг. 13 показана блок-схема варианта осуществления системы на кристалле (SOC), в соответствии с вариантом осуществления настоящего раскрытия.

На фиг. 14 показано схематическое изображение устройства в форме примера вычислительной системы, в которой может быть выполнен ряд инструкций для обеспечения выполнения устройством любой одной или больше методологий, описанных здесь.

При работе современных платформ или систем для определения профиля пути могут возникать значительные потоки служебной информации, что делает их непригодными для использования во время работы систем, таких как динамические двоичные трансляторы и компиляторы JIT, и делает их непривлекательными для статических или регулярных компиляторов. При работе современных платформ могут возникать потоки вспомогательной информации, поскольку информация определения профиля может быть собрана, в основном, программным компонентом (например, приложением), в результате выполнения дополнительных инструкций. Такие дополнительные потоки данных могут оказывать отрицательное влияние, такое как: (i) использование простой модели определения профиля, или (ii) определение профиля в течение малого временного окна. Эти два решения могут привести к ухудшению точности определения профиля для уменьшения потока вспомогательных данных, для получения информации профиля. Многие из современных платформ могут определять профиль частоты выполнения блоков инструкций (например, группы инструкций) и мест назначения ответвления (определение профиля на границе).

Как описано выше, каждое определение профиля пути может быть полезным в различных ситуациях. Варианты осуществления раскрытия приводят к генерированию профиля пути. В одном варианте осуществления модуль определения профиля может вставлять инструкции определения профиля в блоки инструкции. Инструкции определения профиля могут генерировать идентификатор пути, по мере того, как процессор выполняет путь выполнения (например, выполняет последовательность или путь блоков инструкции). Модуль идентификатора пути может добавлять идентификаторы пути к данным идентификатора пути, таким как таблица, и может отслеживать количество раз выполнения пути выполнения, ассоциированного с идентификатором пути. Модуль определения профиля может периодически копировать и/или модифицировать данные идентификатора пути и может генерировать профиль пути на основе данных идентификатора пути.

В одном варианте осуществления, как аппаратные, так и программные средства используются для генерирования профиля пути. Модуль идентификатора пути может представлять собой более простой аппаратный компонент, который содержит идентификаторы пути и счетчики для каждого из идентификаторов пути. Модуль определения профиля может представлять собой программный компонент, который идентифицирует области кода для профиля, вставляет легковесные инструкции определения профиля, определяет, как идентификаторы пути и счетчики в модуле идентификатора пути следует обновлять, удалять и/или перезаписывать, и генерирует профиль пути. Это может оставить определение, для каких областей кода следует определять профиль и как определять профиль, для модуля определения профиля, и может привести к возникновению меньших потоков служебных данных, из-за легковесных инструкций определения профиля и простой аппаратной поддержки.

Хотя следующие варианты осуществления могут быть описаны со ссылкой на конкретные интегральные схемы, такие как вычислительные платформы или микропроцессоры, другие варианты осуществления применимы для других типов интегральных схем и логических устройств. Аналогичные технологии и описания вариантов осуществления, описанных здесь, могут применяться для других типов цепей или полупроводниковых устройств. Например, раскрытые варианты осуществления не ограничены настольными компьютерными системами или Ultrabooks™. И также могут использоваться в других устройствах, таких как портативные устройства, планшетные компьютеры, другие тонкие переносные компьютеры, устройства типа системы на микросхеме (SOC), и встраиваемые приложения. Некоторые примеры портативных устройств включают в себя сотовые телефоны, устройства с протоколом Интернет, цифровые камеры, персональные карманные компьютеры (PDA) и портативные ПК. Внедренные приложения обычно включают в себя микроконтроллер, цифровой сигнальный процессор (DSP), систему на микросхеме, сетевые компьютеры (NetPC), телевизионные приставки, сетевые концентраторы, переключатели глобальной сети (WAN) или любую другую систему, которая может выполнять функции и операции, описанные ниже.

Хотя следующие варианты осуществления описаны со ссылкой на процессор, другие варианты осуществления применимы для других типов интегральных цепей и логических устройств. Аналогичные технологии и описания вариантов осуществления настоящего изобретения могут применяться в других типах цепей или в полупроводниковых устройствах, которые могут с пользой применять более высокую пропускную способность конвейера и улучшенные рабочие характеристики. Описания вариантов осуществления настоящего изобретения применимы для любого процессора или устройства, которое выполняет манипулирование с данными. Однако настоящее изобретение не ограничено процессорами или устройствами, которые выполняют операции с данными длиной 512 битов, 256 битов, 128 битов, 64 бита, 32 бита или 16 битов, и могут применяться для любого процессора и устройства, в котором выполняется манипулирование с данными или администрирование данных. Кроме того, в следующем описании представлены примеры, и на приложенных чертежах показаны различные примеры с целью иллюстрации. Однако эти примеры не следует рассматривать в ограничительном смысле, поскольку они просто предназначены для представления примеров вариантов осуществления настоящего изобретения, а не для представления исчерпывающего списка всех возможных воплощений вариантов осуществления настоящего изобретения.

На фиг. 1 показана блок-схема микроархитектуры процессора 200, которая включает в себя логические схемы для выполнения инструкций в соответствии с одним вариантом осуществления настоящего изобретения. В некоторых вариантах осуществления инструкции, в соответствии с одним вариантом осуществления могут быть воплощены для выполнения операций с элементами данных, имеющими размеры байт, слово, двойное слово, учетверенное слово и т.д., а также к типам данных, таким как целые числа одиночной и двойной точности и типы данных с плавающей точкой. В одном варианте осуществления процессор 200 может выполнять модуль определения профиля (например, определения 330 профиля, представленного на фиг. 7). В одном варианте осуществления процессор 200 также может включать в себя модуль идентификатора пути (например, модуль 340 идентификатора пути, показанный на фиг. 7). Например, модуль идентификатора пути может представлять собой часть внешнего интерфейса 201 и/или механизм 203 выполнения команд с изменением порядка их очередности. В одном варианте осуществления внешний интерфейс 201, работающий по порядку, представляет собой часть процессора 200, который производит выборку инструкций для исполнения, и подготавливает их для последующего использования в конвейере процессора. Внешний интерфейс 201 может включать в себя несколько модулей. В одном варианте осуществления блок 226 опережающей выборки инструкции осуществляет выборку инструкций из памяти и подает их в декодер 228 инструкций, который, в свою очередь, декодирует или интерпретирует их. Например, в одном варианте осуществления, декодер декодирует принятую инструкцию в одну или больше операций, называемых "микроинструкциями" или "микрооперациями" (также называются micro op или uop), которые может выполнять устройство. В других вариантах осуществления декодер анализирует инструкцию, разделяя ее на ор код и соответствующие данные, и поля управления, которые используются микроархитектурой для выполнения операций в соответствии с одним вариантом осуществления. В одном варианте осуществления кэш 230 трассы принимает декодированные uop и собирает их в упорядоченные последовательности программы или трассы в очереди 234 uop для выполнения. Когда кэш 230 трассы сталкивается со сложной инструкцией, ROM 232 микрокода предоставляет uop, необходимые для завершения операции.

Некоторые инструкции преобразуют в одиночные micro-op, тогда как для других требуется несколько micro-op для завершения всей операции. В одном варианте осуществления, если больше чем четыре micro-op необходимы для завершения инструкции, декодер 228 обращается к ROM 232 микрокода для выполнения инструкции. В одном варианте осуществления инструкция может быть декодирована на малое количество микроопераций для обработки в декодере 228 инструкции. В другом варианте осуществления инструкция может быть сохранена в ROM 232 микрокода, в случае, когда множество micro-op потребуется для выполнения операции. Кэш 230 трассы обращается к входу в матрицу программируемой логики (PLA) для определения правильного указателя микроинструкции, для считывания последовательности микрокода, для выполнения одной или больше инструкций, в соответствии с одним вариантом осуществления, из ROM 232 микрокода. После того, как ROM 232 микрокода закончит установление последовательности микроопераций для инструкций, внешний интерфейс 201 устройства возобновляет выборку micro-op из кэш 230 трассы.

Механизм 203 выполнения не по порядку используется, когда инструкции подготавливают для выполнения. Логика выполнения не порядку имеет множество буферов для сглаживания и изменения порядка потока инструкций, для оптимизации рабочих характеристик, по мере того, как они выходят из конвейера, и их планируют для выполнения. Логика распределителя распределяет машинные буферы и ресурсы, которые требуются для выполнения каждой из uop. Логика изменения наименования регистра изменяет наименование логических регистров на запись в файле регистра. Распределитель также распределяет запись для каждой uop на одну из двух очередей uop, одна для операций с памятью и одна для операций без привлечения памяти, перед планировщиками инструкции: планировщик памяти, быстрый планировщик 202, медленный/общий планировщик 204 с плавающей точкой и простой планировщик 206 с плавающей точкой. Планировщики 202, 204, 206 uop определяют, когда uop готова для исполнения на основе готовности зависимых от нее источников операнда входного регистра и в зависимости от доступности исполнительных ресурсов, которые требуются uop для выполнения их операций. Быстрый планировщик 202 в одном варианте осуществления может выполнять планирование в течение каждой половины основного цикла тактовой частоты, в то время как другие планировщики выполняют планирования только один раз за цикл тактовой частоты основного процессора. Планировщики определяют порты отправления для планирования uop для выполнения.

Файлы 208, 210 регистра находятся между планировщиками 202, 204, 206, и исполнительными модулями 212, 214, 216, 218, 220, 222, 224 в исполнительном блоке 211. Существует отдельный файл 208, 210 регистра для операций с целыми числами и плавающей точкой, соответственно. Каждый файл 208, 210 регистра, в соответствии с одним вариантом осуществления, также включает в себя обходную сеть, которая позволяет обходить или направлять только что полученные результаты, которые еще не были записаны в файл регистра для новых зависимых uop. Файл 208 регистра для целого числа и файл 210 регистра для плавающей точки также позволяют выполнять обмен данными друг с другом. В одном варианте осуществления файл 208 регистра для целого числа разделяется на два отдельных файла регистра, один файл регистра для 32 битов младшего порядка данных и второй файл регистра для 32 битов старшего порядка данных. Файл 210 регистра с плавающей запятой в одном варианте осуществления имеет входы шириной 128 битов, поскольку инструкции с плавающей точкой обычно имеют операнды шириной от 64 до 128 битов.

Исполнительный блок 211 содержит исполнительные модули 212, 214, 216, 218, 220, 222, 224, где фактически выполняются инструкции. Этот блок включает в себя файлы 208, 210 регистра, которые содержат значения операндов в виде данных целых чисел и с плавающей точкой, которые требуются для выполнения микроинструкций. Процессор 200 в одном варианте осуществления состоит из множества исполнительных модулей: модуль 212 генерирования адресов (AGU), AGU 214, быстрый ALU 216, быстрый ALU 218, медленный ALU 220, ALU 222 с плавающей точкой, модуль 224 перемещения плавающей точки. В одном варианте осуществления исполнительные блоки 222, 224 с плавающей точкой выполняют операции с плавающей точкой, MMX, SIMD и SSE, или другие операции. ALU 222 с плавающей точкой в одном варианте осуществления включают в себя разделитель плавающей точки 64 бита на 64 бита, для выполнения деления, определения квадратного корня и остальных микроопераций. Для вариантов осуществления настоящего изобретения инструкции, обрабатывающие значение с плавающей точкой, могут обрабатываться с использованием аппаратных средств с плавающей точкой. В одном варианте осуществления операции ALU переходят к исполнительным модулям 216, 218 высокоскоростного ALU. Быстрые ALU 216, 218, в одном варианте осуществления, могут выполнять быстрые операции с эффективной задержкой половины цикла тактовой частоты. В одном варианте осуществления наиболее сложные операции со сложными числами выполняются в медленном ALU 220, поскольку медленный ALU 220 включает в себя аппаратные средства для обработки целых чисел в операциях с длительной задержкой, таких как умножитель, сдвиги, логика флагов и обработка разветвлений. Операции загрузки/сохранения в памяти выполняются AGU 212, 214. В одном варианте осуществления ALU 216, 218, 220 для обработки целых чисел описаны в контексте выполнения операций с целыми числами для операндов данных 64 бита. В альтернативных вариантах осуществления ALU 216, 218, 220 могут быть воплощены для поддержки различного количества битов данных, включающих в себя 16, 32, 128, 256 и т.д. битов. Аналогично, модули 222, 224 с плавающей точкой, могут быть воплощены для поддержки определенного диапазона операндов, имеющих различную ширину в битах. В одном варианте осуществления модули 222, 224 с плавающей точкой могут работать с операндам для пакетных данных шириной 128 битов совместно с SIMD и мультимедийными инструкциями.

В одном варианте осуществления планировщики 202, 204, 206 uop вырабатывают зависимые операции перед окончанием обработки из родительской загрузки. Поскольку uop планируют спекулятивно и выполняют в процессоре 200, процессор 200 также включает в себя логику для обработки потерь в памяти. Если загрузка данных теряется в кэш данных, могут существовать зависимые операции, выполняемые в данный момент времени в конвейере, которые оставили в планировщике неправильные по времени данные. Механизм повторной обработки отслеживает и повторно выполняет инструкции, которые используют неправильные данные. Только зависимые операции требуют повторной обработки, и независимые операции могут быть закончены. Планировщики и механизм повторной обработки в одном варианте осуществления процессора также разработаны для захвата последовательности инструкций для операций сравнения текстовой строки.

Термин "регистры" может относиться к местам сохранения для процессора, установленного на борту, которые используются как часть инструкций, для идентификации операндом. Другими словами, регистры могут представлять собой те, которые используются за пределами процессора (с точки зрения программиста). Однако регистры, в соответствии с вариантом осуществления, не должны быть ограничены значением определенного типа цепи. Скорее, регистр, в соответствии с вариантом осуществления, позволяет сохранять и предоставлять данные, и выполнять функции, описанные здесь. Регистры, описанные здесь, могут быть воплощены с использованием схемы в процессоре, используя любое количество разных технологий, таких как специализированные физические регистры, динамически выделенные физические регистры, используя изменение наименования регистра, комбинации выделенных и динамически распределенных физических регистров, и т.д. В одном варианте осуществления регистры для целого числа содержат данные в виде целых чисел длиной тридцать два бита. Файл регистра, в соответствии с одним вариантом осуществления, также содержит восемь мультимедийных регистров SIMD для пакетных данных. Что касается представленного ниже описания, под регистрами также понимают регистры данных, предназначенные для содержания пакетных данных, такие как регистры MMXTM шириной 64 бита (также называются регистрами 'mm' в некоторых случаях) в микропроцессорах, в которых используется технология MMX Intel Corporation Санта-Клара, Калифорния. Эти регистры MMX, доступные как в форме регистров для целого числа, так и для плавающей точки, могут работать с элементами пакетных данных, которые сопровождают инструкции SIMD и SSE. Аналогично регистры XMM шириной 128 битов, относящиеся к технологии SSE2, SSE3, SSE4 или дальше (называется, в общем, "SSEx"), также могут использоваться для содержания таких операндов пакетных данных. В одном варианте осуществления, при сохранении пакетных данных и данных целого числа, регистрам не требуется различать эти два типа данных. В одном варианте осуществления целые числа и числа с плавающей запятой, либо содержатся в одном и том же файле регистра или в разных файлах регистра. Кроме того, в одном варианте осуществления, данные с плавающей запятой и целочисленные данные могут быть сохранены в разных регистрах или в одних и тех же регистрах.

На фиг. 2 показана блок-схема, иллюстрирующая конвейер, работающий по порядку, и этап переименования регистра, конвейер проблемы/выполнения не по порядку, воплощенный устройством 1500 обработки по фиг. 3. На фиг. 2 показана блок-схема, иллюстрирующая ядро архитектуры, работающей по порядку, и логику переименования регистра, логику проблемы/выполнения не по порядку, которая должна быть включена в процессор, в соответствии с, по меньшей мере, одним вариантом осуществления изобретения. Прямоугольники, представленные сплошными линиями на фиг. 2, иллюстрируют конвейер, работающий по порядку, в то время как прямоугольники, показанные пунктирными линиями, иллюстрируют переименование регистров, конвейер проблемы/выполнения не по порядку. Аналогично, прямоугольники, представленные сплошными линиями на фиг. 2, иллюстрируют логику архитектуры, работающей по порядку, в то время, как прямоугольники, представленные пунктирными линиями, иллюстрируют логику переименования регистра и логику проблемы/выполнения не по порядку. На фиг. 2, конвейер 1400 процессора включает в себя этап 1402 выборки, этап 1404 декодирования длины, этап 1406 декодирования, этап 1408 выделения, этап 1410 переименования, этап 1412 планирования (также известный как этап отправки или проблемы), этап 1414 считывания регистра/считывания памяти, исполнительный этап 1416, этап 1418 обратной записи стороны/записи в память, этап 1422 обработки исключения и этап 1424 завершения.

На фиг. 3 показана блок-схема, иллюстрирующая ядро архитектуры, работающей по порядку, и логику переименования регистра, логику проблемы/выполнения не по порядку, которая должна быть включена в процессор, в соответствии с, по меньшей мере, одним вариантом осуществления раскрытия. На фиг. 3 стрелки обозначают соединение между двумя или больше модулями, и направление стрелки обозначает направление потока данных между этими модулями. На фиг. 3 показано ядро 1590 процессора, включающее в себя модуль 1530 внешнего интерфейса, соединенный с модулем 1550 исполнительного механизма, и оба они соединены с модулем 1570 памяти. В одном варианте осуществления данные идентификатора пути (например, в таблице 290, показанной на фиг. 6) могут быть сохранены в модуле 1570 памяти.

Ядро 1590 может представлять собой вычислительное ядро с сокращенным набором команд (RISC), вычислительное ядро со сложным набором команд (CISC), вычислительное ядро со словом инструкции очень большой длины (VLIW), или ядро гибридного или альтернативного типа. В качестве еще другого варианта, ядро 1590 может представляет собой ядро специального назначения, такое как, например, сеть или ядро передачи данных, механизм сжатия, графическое ядро и т.п. В одном варианте осуществления ядро 1590 может выполнять модуль определения профиля (например, модуль 330 определения профиля, представленный на фиг. 7). В другом варианте осуществления модуль идентификатора пути (например, идентификатор 340 пути, показанный на фиг. 7), может быть включен в или может составлять часть ядра 1590. Например, модуль идентификатора пути может представлять собой часть модуль 1530 внешнего интерфейса и/или модуль 1550 исполнительного механизма.

Модуль 1530 внешнего интерфейса включает в себя модуль 1532 прогнозирования ответвления, соединенный с модулем 1534 кэш- инструкции, который соединен с буфером 1536 сохранения трансляции инструкции (TLB), который соединен с модулем 1538 выборки инструкции, который соединен с модулем 1540 декодирования. Модуль декодирования или декодер могут декодировать инструкции и генерировать, в качестве выхода, одну или больше микроопераций, точек входа микрокода, микроинструкций, других инструкций или других сигналов управления, которые декодируют из или которые по-другому отражают, или которые выводят из оригинальных инструкций. Декодер может быть воплощен, используя всевозможные механизмы. Примеры соответствующих механизмов включают в себя, но не ограничены этим, справочные таблицы, аппаратное воплощение, матрицы программируемой логики (PLA), постоянное запоминающее устройство (ROM) микрокода и т.д. Модуль 1534 кэш инструкции дополнительно соединен с модулем 1576 кэш уровня 2 (L2) в модуле 1570 памяти. Модуль 1540 декодирования соединен с модулем 1552 переименования/распределителя в модуле 1550 исполнительного механизма.

Модуль 1550 исполнительного механизма включает в себя модуль 1552 переименования/распределителя, соединенный с модулем 1554 прекращения выполнения инструкции и набор из одного или больше модуля (модулей) 1556 планировщика. Модуль (модули) 1556 планировщика представляет собой любое количество разных планировщиков, включая в себя станции резервирования, окно центральной инструкции и т.д. Модуль (модули) 1556 планировщика соединен с модулем (модулями) файла (файлов) 1558 физического регистра. Каждый из модулей 1558 файла (файлов) физического регистра представляет собой один или больше файлов физического регистра, разные файлы из которых содержат один или больше разных типов данных, таких как скалярное целое число, скалярное число с плавающей точкой, пакетное целое число, пакетное число с плавающей точкой, векторное целое число, векторное число с плавающей точкой и т.д., статус (например, указатель инструкции, который представляет собой адрес следующей инструкции, предназначенной для выполнения), и т.д. Модуль (модули) 1558 файла (файлов) физического регистра частично перекрывается модулем 1554 прекращения инструкции, для иллюстрации различных способов, с помощью которых может быть воплощено переименование регистра и выполнение не по порядку (например, используя буфер (буферы) изменения порядка и файл (файлы) регистра прекращения инструкции, используя будущий файл (файлы), буфер (буферы) предистории, и файл (файлы) регистра прекращения инструкции; использование карты регистров и области регистров; и т.д.). В общем, архитектурные регистры являются видимыми снаружи от процессора или из перспективы программиста. Регистры не ограничены каким-либо известным конкретным типом цепи. Пригодны всевозможные типы регистров, если только они позволяют сохранять и предоставлять данные, как описано здесь. Примеры соответствующих регистров включают в себя, но без ограничений, специализированные физические регистры, динамически выделенные физические регистры с использованием переименования регистра, комбинации специализированных и динамически выделенных физических регистров и т.д. Модуль 1554 прекращения операции инструкции и модуль (модули) 1558 файла (файлов) физического регистра соединены с исполнительным кластером (кластерами) 1560. Исполнительный кластер (кластеры) 1560 включает в себя набор из одного или больше исполнительных модулей 162 и набор из одного или больше модулей 1564 доступа к памяти. Исполнительные модули 1562 могут выполнять различные операции (например, сдвиг, суммирование, вычитание, умножение) и для различных типов данных (например, скалярное число с плавающей точкой, пакетное целое число, пакетное число с плавающей точкой, векторное целое число, векторное число с плавающей точкой). В то время как некоторые варианты осуществления могут включать в себя множество исполнительных модулей, специально выделенных для конкретных функций или наборов функций, другие варианты осуществления могут включать в себя только один исполнительный модуль или множество исполнительных модулей, все из которых выполняют свои функции. Модуль (модули) 1556 планировщика, модуль (модули) 1558 файла (файлов) физического регистра и исполнительный кластер (кластеры) 1560 показаны, как возможно представленные во множественном числе, поскольку в определенных вариантах осуществления формируются отдельные конвейеры для определенных типов данных/операций (например, конвейер для скалярного целого числа, конвейер для скалярного числа с плавающей точкой/пакетного целого числа/пакетного числа с плавающей точкой/векторного целого числа/векторного конвейера с плавающей точкой, и/или конвейер для доступа к памяти, каждый из которых имеет свой собственный модуль планировщика, модуль файла (файлов) физического регистра и/или исполнительный кластер, и, в случае отдельного конвейера доступа к памяти, воплощены определенные варианты осуществления, в которых только исполнительный кластер такого конвейера имеет модуль (модули) 1564 доступа к памяти). Следует также понимать, что в случае, когда используются отдельные конвейеры, один или больше из этих конвейеров могут представлять собой конвейер для проблемы/выполнения не по порядку, а остальные работают по порядку.

Набор модулей 1564 доступа к памяти соединен с модулем 1570 памяти, который включает в себя модуль 1572 TLB данных, соединенный с модулем 1574 кэш-данных, соединенный с модулем 1576 кэш уровня 2 (L2). В одном примерном варианте осуществления модуль 1564 доступа к памяти может включать в себя модуль загрузки, модуль сохранения адреса и модуль сохранения данных, каждый из которых соединен с модулем 1572 TLB данных в модуле 1570 памяти. Модуль 1576 кэш уровня L2 соединен с одним или больше другими уровням кэш и, в конечном итоге, с основной памятью.

В качестве примера, примерное переименование регистра, архитектуру ядра проблемы/выполнения не по порядку может воплощать конвейер 1400 следующим образом: 1) выборка 1538 инструкции выполняет этапы 1402 и 1404 выборки и декодирования длины; 2) модуль 1540 декодирования выполняет этап 1406 декодирования; 3) модуль 1552 переименования/распределения выполняет этап 1408 распределения и этап 1410 переименования; 4) модуль (модули) 1556 планировщика выполняет этап 1412 планирования; 5) модуль (модули) 1558 файла (файлов) физического регистра и модуль 1570 памяти выполняет этап 1414 считывания регистра/считывания памяти; исполнительный кластер 1560 выполняет этап 1416 исполнения; 6) модуль 1570 памяти и модуль (модули) 1558 файла (файлов) физического регистра выполняют этап 1418 обратной записи/записи в память; 7) различные модули могут быть вовлечены в выполнение этапа 1422 обработки исключений; и 8) модуль 1554 прекращения инструкции и модуль (модули) 1558 файла (файлов) физического регистра выполняет этап 1424 завершения.

Ядро 1590 может поддерживать один или больше наборов инструкций (например, набор инструкций х86 (с некоторыми исключениями (??удлинениями), которые были добавлены в более новых версиях); набор инструкций MIPS MIPS Technologies, Саннивейл, Калифорния; набор инструкций ARM (с необязательными дополнительными расширениями, такими как HEOH) разработки ARM Holdings, Саннивейл, Калифорния).

Следует понимать, что ядро может поддерживать многопотоковую обработку (выполнение двух или больше параллельных наборов операций или потоков), и может выполнять ее различными способами, включая в себя слоистую многопотоковую обработку, одновременную многопотоковую обработку (когда одно физическое ядро предусматривает логическое ядро для каждого из потоков, и физическое ядро одновременно выполняет многопотоковую обработку), или их комбинацию (например, выборку с расслоением по времени и декодирование и одновременную многопотоковую обработку, такую как в технологии Intel® Hyperthreading).

В то время как переименование регистра описано в контексте выполнения не по порядку, следует понимать, что переименование регистра может использоваться в архитектуре, работающей по порядку. В то время как представленный вариант осуществления процессора также включает в себя отдельные модули 1534/1574 инструкции и кэш-данных, и модуль 1576 совместно используемой кэш L2, альтернативные варианты осуществления могут иметь один внутренний кэш, как для инструкций, так и для данных, такой как, например, внутренний кэш уровня 1 (LI), или множество уровней внутреннего кэш. В некоторых вариантах осуществления система может включать в себя комбинацию внутреннего кэш и внешнего кэш, который является внешним для ядра и/или процессора. В качестве альтернативы, все кэш могут быть внешними для ядра и/или процессора.

На фиг. 4 показана блок-схема многопроцессорной системы 1300, в соответствии с вариантом осуществления. Как показано на фиг. 4, многопроцессорная система 1300 представляет собой систему взаимного соединения из точки в точку, и включает в себя первый процессор 1370 и второй процессор 1380, соединенные через взаимное соединение 1350 из точки в точку. Каждый из процессоров 1370 и 1380 может представлять собой определенную версию устройства 602 обработки по фиг. 6. Как показано на фиг. 4, каждый из процессоров 1370 и 1380 представляет собой многоядерный процессор, включающий в себя первое и второе ядра процессора (то есть, ядра 1374а и 1374b процессора и ядра 1384а и 1384b процессора), хотя потенциально гораздо больше ядер могут присутствовать в процессорах. Ядро процессора также может называться исполнительным ядром. Каждый процессор может включать в себя гибридную логику режима записи в соответствии с настоящим вариантом осуществления. В одном варианте осуществления один или больше процессоров 1370 и 1380 могут выполнять модуль определения профиля (например, модуль 330 определения профиля, представленный на фиг. 7). В другом варианте осуществления модуль идентификатора пути (например, модуль 340 идентификатора пути, представленный на фиг. 7) может быть включен в или может представлять собой часть одного или больше из процессоров 1370 и 1380.

В то время, как показана схема с двумя процессорами 1370, 1380, следует понимать, что объем настоящего раскрытия не ограничен этим. В других вариантах осуществления один или больше дополнительных процессоров могут присутствовать в данном процессоре.

Показаны процессоры 1370 и 1380, включающие в себя интегрированные модули 1372 и 1382 контроллера памяти, соответственно. Процессор 1370 также включает в себя часть своих интерфейсов 1376 и 1378 модулей контроллера шины из точки в точку (P-P); аналогично, второй процессор 1380 включает в себя интерфейсы 1386 и 1388 Р-Р. Процессоры 1370, 1380 могут выполнять обмен информацией через интерфейс 1350 "из точки в точку" (P-P), используя схемы 1378, 1388 интерфейсов Р-Р. Как показано на фиг. 4, IMC 1372 и 1382 соединяют процессоры с соответствующими запоминающими устройствам, а именно, с памятью 1332 и памятью 1334, которые могут представлять собой части основной памяти, локально соединенной с соответствующими процессорами. В одном варианте осуществления часть данных идентификатора (например, таблицы 290, представленные на фиг. 6) могут быть сохранены в одной или больше памяти 1332 и 1334.

Каждый процессор 1370, 1380 могут выполнять обмен информацией с набором 1390 микросхем через индивидуальные интерфейсы 1352, 1354 Р-Р, используя схемы 1376, 1394, 1386 и 1398 интерфейса из точки в точку. Набор 1390 микросхем также может выполнять обмен информацией с высокоэффективной графической схемой 1338 через высокоэффективной графический интерфейс 1339.

Совместно используемый кэш (не показан) может быть включен в любой из процессоров или может быть включен за пределами обоих процессоров, но соединен с процессорами через взаимное соединение Р-Р, таким образом, что информация из локального кэш любого или обоих процессоров может быть сохранена в совместно используемом кэш, если процессор установлен в режим малого потребления энергии.

Набор 1390 микросхем может быть соединен с первой шиной 1316 через интерфейс 1396. В одном варианте осуществления, первая шина 1316 может представлять собой шину межсоединения периферийных компонентов (PCI) или такую шину, как шина PCI Express или другую шину межсоединения I/O третьего поколения, хотя объем настоящего раскрытия не ограничен этим.

Как показано на фиг. 4, различные устройства 1314 I/O могут быть соединены с первой шиной 1316, вместе с мостом 1318 шины, который соединяет первую шину 1316 со второй шиной 1320. В одном варианте осуществления вторая шина 1320 может представлять собой шину с малым количество выводов (LPC). Различные устройства могут быть соединены со второй шиной 1320, включая в себя, например, клавиатуру и/или "мышь" 1322, устройства 1327 передачи данных и модуль 1328 сохранения, такой как привод диска или другое устройство сохранения с большим объемом, которое может включать в себя инструкции/код и данные 1330, в одном варианте осуществления. Кроме того, I/O 1324 для аудиоданных может быть соединен со второй шиной 1320. Следует отметить, что возможны другие архитектуры. Например, вместо архитектуры "из точки-в-точку", показанной на фиг. 4, система может воплощать многоотводную шину или другую такую архитектуру.

На фиг. 5 показана блок-схема приложения 100, включающая в себя множество блоков 105-150 инструкций, в соответствии с одним вариантом осуществления раскрытия. Приложение 100 может представлять собой программу, программный модуль, программный компонент и/или другой программный элемент, который может быть выполнен модулем обработки (например, модулем 350 обработки, как представлено на фиг. 8). Приложение 100 может включать в себя множество инструкций. Инструкции могут включать в себя программный код, для обеспечения выполнения модулем обработки (например, процессором) действий, таких как, но без ограничений, считывание данных, запись данных, обработка данных, формулирование данных, конвертирование данных, преобразование данных и т.д. Например, приложение 100 может представлять собой двоичный файл и/или исполнительный файл, который включает в себя инструкции, обеспечивающие выполнение модулем обработки мультимедийного плейера для воспроизведения мультимедийных элементов данных (таких как цифровые видеоизображения, цифровая музыка) или для обеспечения выполнения модулем обработки сетевого браузера. Инструкции в приложении 100 могут быть разделены на блоки инструкций (например, последовательность или группа инструкций), такие как блоки 105-150 инструкций. Следует отметить, что блоки 105-150 инструкций представляют собой просто один пример различных инструкций и/или блоков инструкций, которые могут быть включены в приложение. В других вариантах осуществления приложение 100 может включать в себя больше или меньше блоков инструкций, и каждый блок инструкций может вести к одному или больше разным блокам инструкции. Например, первый блок инструкции может разветвляться на один из четырех блоков инструкции назначения (не показан на чертежах) на основе условия для инструкции BRANCH в первом блоке инструкции.

Блоки 105-150 инструкции могут включать в себя множество различных инструкций (например, программные инструкции). Например, блоки 105-150 инструкции могут включать в себя инструкцию ADD (для суммирования двух или больше значений), инструкцию MULT (для умножения двух или больше значений), инструкцию исключающее ИЛИ (XOR) (для выполнения операции исключающее или для двух или больше значений), и инструкцию AND (для побитного выполнения для двух или больше значений), инструкцию сохранения (для сохранения значения в определенном местоположении в памяти, таком как регистр), инструкцию JUMP (для направления потока выполнения инструкций к определенной инструкции), инструкцию BRANCH (для направления потока выполнения инструкций к определенной инструкции на основе одного или больше условий, и т.д.). В одном варианте осуществления блоки 105-150 инструкции могут представлять собой основные блоки. В одном варианте осуществления основной блок может представлять собой группу (например, блок) инструкций, которая имеет одну точку входа (например, одна инструкция в основном блоке представляет собой место назначения инструкции JUMP и/или BRANCH) и одну выходную точку (например, последняя инструкция может представлять собой инструкцию JUMP или BRANCH к другому основному блоку).

Как описано выше, приложение, такое как приложение 100, может включать в себя множество разных путей выполнения. В одном варианте осуществления путь выполнения может представлять собой последовательность (например, путь) инструкций и/или блоков инструкций в приложении 100, которое выполняется модулем обработки, когда модуль обработки выполняет инструкции приложения 100. Например, путь выполнения (например, последовательность инструкций и/или блоков инструкций, выполняемых модулем обработки), может начинаться в блоке 105 инструкции (например, в блоке начальной инструкции), переходить к блоку 110 инструкции, переходить к блоку 115 инструкции, переходить к блоку 130 инструкции, переходить к блоку 140 инструкции, переходить к блоку 145 инструкции и переходить к блоку 150 инструкции. В другом примере путь выполнения может начинаться в блоке 105 инструкции, переходить к блоку 110 инструкции, переходить к блоку 120 инструкции, переходить к блоку 130 инструкции, переходить к блоку 140 инструкции, переходить к блоку 145 инструкции и переходить к блоку 150 инструкции. Получение профиля пути приложением 100 может позволить модулю обработки обращаться к компилятору и/или модулю обработки для выполнения оптимизации, которая может обеспечить более эффективную, более быструю работу приложения, и/или с использованием меньшего пространства памяти (например, с меньшим размером двоичного файла для приложения).

Как представлено на фиг. 5, блоки 105, 115, 120, 135, 140 и 150 инструкции включают в себя инструкции определения профиля. Инструкция определения профиля может представлять собой любую инструкцию, которая может использоваться для отслеживания пути выполнения. Например, блок 105 инструкции включает в себя инструкцию PSTART определения профиля (например, инструкцию запуска), блок 115 инструкции включает в себя инструкцию PMARK1 определения профиля, блок 120 инструкции включает в себя инструкцию PMARK2 определения профиля, блок 135 инструкции включает в себя инструкцию PMARK3 определения профиля, блок 140 инструкции включает в себя инструкцию PMARK4 определения профиля и блок 150 инструкции включает в себя инструкцию END определения профиля (например, инструкцию окончания). В одном варианте осуществления инструкция определения профиля может представлять собой инструкцию, которая может представлять собой часть блока инструкции, может быть выполнена модулем обработки и может использоваться для отслеживания пути выполнения приложения (например, приложения 100).

В одном варианте осуществления инструкции определения профиля могут быть вставлены и/или добавлены к инструкциям приложения 100 модулем определения профиля (более подробно описан ниже со ссылкой на фиг. 7 и 8). Модуль определения профиля может идентифицировать область инструкций (например, один или больше блоков инструкций) в приложении 100 для профиля. Например, модуль определения профиля может определять, что профиль пути должен генерироваться для блоков инструкции 105-150. Модуль определения профиля может вставлять инструкцию PSTART (например, инструкцию запуска) в первом и/или начальном блок инструкции для области (например, в блоке запуска инструкции). Например, как представлено на фиг. 5, модуль определения профиля может вставлять инструкцию PSTART в блок 105 инструкции. Модуль определения профиля может также вставлять инструкцию PMARK в последний и/или завершающий блок инструкции для области (инструкций), для профиля. Например, как представлено на фиг. 5, модуль определения профиля может вставлять инструкцию PSTART в блок 150 инструкции. Модуль определения профиля также может вставлять инструкции PMARK в блоки инструкции места назначения. Например, как представлено на фиг. 5, блок 115 и 120 инструкции может представлять собой возможные блоки места назначения инструкций из блока 110 инструкции. Модуль определения профиля может вставлять инструкцию PMARK1 в блок 115 инструкции, и инструкцию PMARK2 в блок 120 инструкции.

Когда модуль обработки выполняет инструкции приложения 100, инструкции профиля могут обеспечивать генерирование модулем обработки идентификатора пути для пути выполнения, выполняемого модулем обработки. Как описано выше, путь выполнения может представлять собой последовательность инструкций и/или блоков инструкций, выполняемых модулем обработки. Идентификатор пути может включать в себя данные, обозначающие блоки инструкции, выполняемые модулем обработки. Например, путь выполнения может начинаться в блоке 105 инструкции, переходить к блоку 110 инструкции, переходить к блоку 120 инструкции, переходить к блоку 135 инструкции, переходить к блоку 140 инструкции, переходить к блоку 145 инструкции и переходить к блоку 150 инструкции. Когда модуль обработки выполняет инструкцию PSTART в блоке 105 инструкции, модуль обработки может начинать генерировать идентификатор пути. Например, как описано ниже со ссылкой на фиг. 9, модуль обработки может добавлять идентификатор (например, счетчик программы, адрес, и/или местоположение) для первой инструкции (например, начальной инструкции) в блок 105 инструкции, к идентификатору пути, который сохранен в модуле памяти (например, в регистре, кэш, и/или в любом устройстве или компоненте, который может сохранять данные). Когда выполняется инструкция PMARK, модуль обработки может обновлять идентификатор пути для обозначения, что блок инструкции, который содержит инструкцию PMARK, был выполнен. Например, по мере того, как модуль обработки выполняет блок 120 инструкции, модуль обработки может выполнять инструкцию PMARK2. Инструкция PMARK2 может обеспечивать обновление модулем обработки сигнатуры пути для обозначения, что блок 120 инструкции был выполнен. Когда модуль обработки выполняет инструкцию P-END, модуль обработки может обозначать для модуля идентификатора пути (описан ниже со ссылкой на фиг. 7 и 9), что окончание области инструкций для профиля было достигнуто. Модуль идентификатора пути может определить, как обрабатывать идентификатор пути и следует ли добавлять идентификатор пути к существующим данным идентификатора пути.

На фиг. 6 показана таблица 290, иллюстрирующая примерные данные идентификатора пути, в соответствии с одним вариантом осуществления раскрытия. Как описано выше, модуль обработки может генерировать идентификаторы пути, когда модуль обработки выполняет инструкции определения профиля. Модуль идентификатора пути может сохранять данные идентификатора пути, которые включают в себя множество идентификаторов пути, и информацию, ассоциированную с каждым из идентификаторов пути, такую как количество раз возникновения исполнительного пути, ассоциированного с идентификатором пути. Данные идентификатора пути могут быть сохранены в модуле памяти (например, в регистре, в оперативном запоминающем устройстве, кэш и т.д.). Хотя данные идентификатора пути представлены в форме таблицы (например, таблицы 290), следует понимать, что данные идентификатора пути могут быть представлены, используя различные другие структуры и/или представления данных. Например, данные идентификатора пути могут быть представлены, используя граф, дерево, список и т.д. В других вариантах осуществления таблица 290 может включать в себя любое количество записей. Например, таблица 290 может включать в себя четыре записи, восемь записей, 16 входов, тридцать две записи, шестьдесят четыре записи и т.д.

Таблица 290 включает в себя пять столбцов. Первый столбец помечен, как "Идентификатор инструкции", и включает в себя идентификаторы для начальной инструкции и/или инструкции запуска (например, счетчик программы для первой инструкции) на пути выполнения. Следует понимать, что в других вариантах осуществления, идентификатор инструкции может представлять собой число, цифро-буквенное значение, строку, шестнадцатиричное значение, двоичное значение и/или любое другое значение, которое может использоваться для идентификации инструкции запуска и/или инструкции начала на пути выполнения. Второй столбец помечен "Сигнатура пути" и включает в себя данные и/или значения, которые могут использоваться для идентификации блоков инструкций на пути выполнения, которые выполняются модулем обработки. В одном варианте осуществления сигнатура пути может представлять собой строку битов (например, последовательность битовых значений). Например, сигнатура пути может представлять собой 16-битное значение или 32-битное значение или 64-битное значение, и т.д. Следует понимать, что в других вариантах осуществления, сигнатура пути может представлять собой число, цифро-буквенное значение, строку, шестнадцатиричное значение, двоичное значение и/или любое другое значение, которое может использоваться для идентификации пути выполнения. Идентификатор инструкции и сигнатура пути для записи могут формировать идентификатор пути для записи. В одном варианте осуществления идентификатор пути может использоваться для идентификации пути выполнения, путем идентификации первой инструкции на пути выполнения и блоков инструкции (после первой инструкции), которые выполнялись устройством обработки.

Третий столбец обозначен "Счетчик" и включает в себя значения и/или данные, обозначающие количество раз выполнения исполнительного пути (идентифицируется идентификатором инструкций и сигнатурой пути) модулем обработки. Например, первая запись имеет значение счетчика "2", обозначающее, что путь выполнения, идентифицированный идентификатором пути (например, идентификатором инструкции и сигнатурой пути) для первой записи, был выполнен дважды модулем обработки. В одном варианте осуществления значение счетчика может последовательно увеличиваться на определенную величину (например, на 1) каждый раз, когда выполняется путь выполнения модулем обработки. Следует понимать, что в других вариантах осуществления счетчик может представлять собой число, цифро-буквенное значение, строку, шестнадцатиричное значение, двоичное значение и/или любое другое значение, которое может использоваться, для представления количества раз выполнения модулем обработки. Четвертый столбец обозначен "Насыщенный" и включает в себя значения и/или данные, которые обозначают, достиг или нет счетчик исполнительного пути максимального значения (например, является ли счетчик насыщенным). Например, вторая запись имеет насыщенное значение "1", обозначающее, что счетчик для второго входа достиг максимального значения (например, 16). В одном варианте осуществления насыщенное значение может представлять собой однобитное значение. Это может позволить модулю идентификатора пути быстро определять, является ли счетчик насыщенным. Например, счетчик для идентификатора пути может представлять собой 15-битное значение. Модулю идентификатора пути может потребоваться более длительное время для сравнения счетчика с максимальным значением счетчика, чем при последующей проверке однобайтного насыщенного значения, для определения, достиг ли счетчик максимального значения. Следует понимать, что в других вариантах осуществления, насыщенное значение может представлять собой число, цифро-буквенное значение, строку, шестнадцатиричное значение, двоичное значение и/или любое другое значение. В одном варианте осуществления четвертый столбец может быть оптимальным, поскольку модуль идентификатора пути может сравнивать значение счетчика с максимальным значением счетчика для определения, является ли счетчик насыщенным.

Пятая столбец обозначен "Действительный" и включает в себя значения и/или данные, обозначающие, является ли запись (например, строка) в таблице 290 действительной. Например, действительное значение может обозначать, используется ли все еще запись, можно ли удалить запись из таблицы 290, и/или может ли запись быть перезаписана в таблице 290. В одном варианте осуществления значение может представлять собой однобитное значение. Следует понимать, что в других вариантах осуществления, действительное значение может представлять собой число, цифро-буквенное значение, строку, шестнадцатиричное значение, двоичное значение и/или любое другое значение для обозначения, является ли все еще запись действительной. В одном варианте осуществления модуль идентификатора пути (описан ниже со ссылкой на фиг. 9) может перезаписывать вход (например, строки) в таблице 290, когда таблица 290 больше не содержит свободных записей. Модуль идентификатора пути может использовать входы, которые не обозначены действительными. Например, действительное значение для третьей записи равно "0", что обозначает, что запись больше не является действительной и может быть перезаписана.

Каждая запись (например, строка) в таблице 290 включает в себя идентификатор пути и ассоциированную информацию для исполнительного пути. В одном варианте осуществления идентификатор пути включает в себя идентификатор инструкции и сигнатуру пути для исполнительного пути. Например, четвертая строка включает в себя идентификатор пути, который включает в себя идентификатор инструкции "65381452" и сигнатуру "1001" пути. Идентификатор пути для четвертой строки может представлять собой "65381452/1001". Обращаясь снова к фиг. 5, можно видеть, что идентификатор "65381452" инструкции может представлять собой счетчик программы (например, адрес) для первой инструкции в блоке 105 инструкции. Как описано выше, сигнатура пути включает в себя данные и/или значения, которые могут использоваться для идентификации блоков инструкций на исполнительном пути, которые были выполнены устройством обработки. Обращаясь снова к фиг. 5, можно видеть, что сигнатура пути для четвертой записи включает в себя четыре битовых значения, первое битовое значение, обозначающее, был ли выполнен блок 115 инструкции, второе битовое значение, обозначающее, был ли выполнен блок 120 инструкции, третье битовое значение, обозначающее, был ли выполнен блок 135 инструкции, и четвертое битовое значение, обозначающее, был ли выполнен блок 140 инструкции. Как показано на фиг. 6, битовое значение "1001" обозначает, что блок 115 инструкции был выполнен, блок 120 инструкции не был выполнен, блок 135 инструкции не был выполнен, и блок 140 инструкции был выполнен. В другом примере пятая строка включает в себя идентификатор пути, который включает в себя идентификатор "65381452" инструкции и сигнатуру "1010" пути. Обращаясь снова к фиг. 5, можно видеть, что идентификатор "65381452" инструкции может представлять собой счетчик программы для первой инструкции в блоке 105 инструкции. Сигнатура пути для четвертой записи включает в себя четырехбитные значения, при этом первое битовое значение обозначает, был ли выполнен блок 115 инструкции, второе битовое значение обозначает, был ли выполнен блок 120 инструкции, третье битовое значение обозначает, был ли выполнен блок 135 инструкции, и четвертое битовое значение обозначает, был ли выполнен блок 140 инструкции. Как показано на фиг. 6, битовое значение "1010" обозначает, что блок 115 инструкции был выполнен, блок 120 инструкции не был выполнен, блок 135 инструкции был выполнен, и блок 140 инструкции не был выполнен. Хотя четвертая и пятая записи показывают, что пример таблицы 290 включает в себя тот же идентификатор инструкции, сигнатуры пути для четвертой и пятой записей являются разными. Таким образом, идентификатор пути (например, комбинация идентификатора инструкции и сигнатуры пути) для четвертой записи отличается от идентификатора пути для пятой записи.

В одном варианте осуществления данные и/или информация в таблице 290 (например, идентификаторы пути, счетчики и т.д.) могут использоваться модулем определения профиля для генерирования профиля пути (как описано дополнительно ниже со ссылкой на фиг. 7 и 8). Модуль определения профиля может также обновлять одно или больше значений счетчика, насыщенного значения и/или значения действительности для записи в таблице 290 (как описано дополнительно ниже со ссылкой на фиг. 7 и 8).

На фиг. 7 показана блок-схема системной архитектуры 300 для генерирования профиля пути, в соответствии с одним вариантом осуществления раскрытия. Системная архитектура включает в себя компилятор 310, приложение 100 (как представлено на фиг. 5), модуль 330 определения профиля, модуль 340 идентификатора пути, модуль 350 обработки и модуль 360 памяти.

Модуль 360 памяти может включать в себя оперативное запоминающее устройство (RAM) или постоянное запоминающее устройство (ROM) в фиксированном или съемном формате. RAM может включать в себя память для содержания информации во время выполнения операции модулем 350 обработки, такую как, например, статическая RAM (SRAM) или динамическая RAM (DRAM). ROM может включать в себя запоминающие устройства, такие как запоминающее устройство BIOS вычислительного устройства, для предоставления инструкции, когда включают вычислительное устройство, программируемые запоминающие устройства, такие как электронное программируемое ROM (EPROM), Flash и т.д. Другие фиксированные и/или съемные запоминающие устройства могут включать в себя магнитную память, такие как гибкие диски, приводы жесткого диска и т.д., электронные запоминающие устройства, такие как твердотельная память флэш (например, eMMC и т.д.), съемные карты памяти или карты памяти типа memory sticks (например, USB, micro-SD и т.д.), оптическое запоминающее устройство, такое как ROM на основе компакт диска (CD-ROM), голографические устройства и т.д.

Как описано выше, приложение 100 может представлять собой программу, программный модуль, программный компонент и/или другой программный элемент, который может выполняться модулем 350 обработки. Приложение 100 может включать в себя множество инструкций, обеспечивающих выполнение модулем 350 обработки таких действий, как, но без ограничений, считывание данных, запись данных, обработка данных, формулирование данных, конвертирование данных, преобразование данных и т.д. Инструкции в приложении 100 могут быть разделены на блоки инструкций (например, последовательность или группа инструкций), такие как блоки 105-150 инструкции. В одном варианте осуществления блоки 105-150 инструкции могут представлять собой основные блоки. Основной блок может представлять собой группу (например, блок) инструкций, которая имеет одну точку входа (например, одна инструкция в основном блоке представляет собой место назначения инструкции JUMP и/или BRANCH) и одну точку выхода (например, последняя инструкция может представлять собой инструкцию JUMP или инструкцию BRANCH в другой основной блок).

Модуль 350 обработки может выполнять инструкции приложения 100. Инструкции могут включать в себя программный код для обеспечения выполнения модулем 350 действий, таких как, но без ограничений, считывание данных, запись данных, обработка данных, формулирование данных, конвертирование данных, преобразование данных и т.д. Модуль 350 обработки, в качестве одного иллюстративного примера, может включать в себя микропроцессор типа компьютера со сложным набором команд (CISC), микропроцессор типа компьютера с сокращенным набором команд (RISC), микропроцессор со словом инструкции очень большой длины (VLIW), многоядерный процессор, многопоточный процессор, процессор с ультранизким напряжением питания, встроенный процессор, процессор, воплощающий комбинацию набора инструкций, и/или любое другое устройство процессора, такое как, например, цифровой сигнальный процессор. Модуль 350 обработки может представлять собой процессор общего назначения, такой как процессор Core™ i3, i5, i7, 2 Duo и Quad, Xeon™, Itanium™, XScale™ или StrongARM™, которые доступны в компании Intel Corporation, Санта-Клара, Калифорния. В качестве альтернативы, модуль 350 обработки может поставляться другой компанией, такой как ARM Holdings, Ltd, MIPS и т.д. Модуль 350 обработки может представлять собой процессор специального назначения, такой как, например, сетевой процессор или процессор передачи данных, механизм сжатия, графический процессор, сопроцессор, встроенный процессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), цифровой сигнальный процессор (DSP) и т.п. Модуль 350 обработки может быть воплощен на одной или больше микросхем. Модуль 350 обработки может представлять собой часть и/или может быть воплощен на одной или больше подложках, используя любое количество технологических обработок, таких как, например, BiCMOS, CMOS или NMOS.

В одном варианте осуществления компилятор 310 может генерировать приложение 100 на основе исходного кода. Исходный код может представлять собой одну или больше компьютерных инструкций, записанных с использованием некоторого читаемого человеком языка (например, языка программирования, такого как JAVA, С++, С, С# и т.д.). Компилятор 310 может представлять собой любую логику обработки, которая может содержать аппаратные средства (например, схему, специализированную логику, программируемую логику, микрокод и т.д.), программное обеспечение (такое как инструкции, работающие в устройстве обработки), встроенное программное обеспечение или их комбинацию, которые могут генерировать инструкции (например, двоичный код, объектный код, программные инструкции и т.д.), с использованием или без дополнительной подключаемой обработки, могут быть выполнены модулем 350 обработки. В другом варианте осуществления компилятор 310 может представлять собой единовременный компилятор (JIT). Компилятор JIT может представлять собой компилятор, который генерирует байтовый код из исходного кода. Байтовый код может представлять собой промежуточное представление, которое транслируют и/или интерпретируют с помощью виртуальной машины в инструкции (например, двоичный код, объектный код, программные инструкции и т.д.), которые могут выполняться модулем 350 обработки. Байтовый код, генерируемый компилятором JIT, может быть портативным среди разных компьютерных архитектур. Виртуальная машина, ассоциированная с каждой из разных компьютерных архитектур, может транслировать и/или интерпретировать байтовый код в инструкции, используемые компьютерной архитектурой.

В одном варианте осуществления модуль 330 определения профиля может анализировать приложение 100 и может идентифицировать область инструкций, для которой должен быть определен профиль (например, идентифицировать область инструкций, для которой требуется сгенерировать профиль пути). Модуль 330 определения профиля может принимать входные команды пользователя, обозначающие область инструкций, для определения профиля. Модуль 330 определения профиля может также анализировать приложение 100 для определения, для какой области инструкций в приложении требуется определить профиль. В одном варианте осуществления модуль 330 определения профиля может применять эвристический подход, параметры, условия и/или правила для определения, следует ли определить профиль для определенной области инструкций. Например, модуль 330 определения профиля может определять, что для устройства, одновременно разработанного с использованием аппаратных/программных средств, профиль должен быть определен для некоторых транслируемых областей кода и/или определенных участков внутри транслируемых областей кода.

Модуль 330 определения профиля также может вставлять и/или добавлять инструкции определения профиля (например, инструкции PSTART, P-END и PMARK, показанные на фиг. 5). Как описано выше со ссылкой на фиг. 5, инструкции определения профиля могут генерировать идентификатор пути (например, могут генерировать идентификатор инструкции и/или сигнатуру пути) для исполнительного пути, когда модуль 350 обработки выполняет инструкции определения профиля. Например, после идентификации области инструкций для профиля, модуль 330 определения может добавлять инструкцию PSTART (например, инструкцию запуска) в первый блок инструкции в области. Модуль 330 определения профиля также может добавлять инструкцию P-END (например, инструкцию окончания) в каждый блок инструкций, который выполняет ответвление и/или выполняет переход из области (например, добавлять инструкцию P-END в каждый заканчивающийся блок инструкции для области). Модуль 330 определения профиля также может добавлять инструкцию PMARK для каждого блока инструкции, который представляет собой место назначения (например, цель) инструкции ответвления и/или перехода (например, блок инструкции места назначения) внутри области.

В одном варианте осуществления инструкции определения профиля могут представлять собой инструкции, которые составляют часть архитектуры набора инструкций (ISA) для модуля 350 обработки. ISA может включать в себя собственные типы данных, инструкции, регистры, режимы адресации, архитектуру памяти, прерывания и обработку исключений, и внешние интерфейсы ввода-вывода, используемые модулем обработки. ISA также может включать в себя списки кодов операции (например, ор кодов) и собственных команд, воплощенных в определенном модуле обработки. В одном варианте осуществления ISA может представлять собой общедоступную ISA (например, ISA, которая открыта для приложений и/или программных средств, которые выполняются в модуле обработки. В другом варианте осуществления ISA может представлять собой частную ISA (например, ISA, которая не открыта для приложений и/или программных средств, которые выполняются в модуле обработки). Например, ISA хост устройства для устройства, разработанного для одновременного использования аппаратных средств/программных средств, может представлять собой частную ISA. Когда используется частная ISA, приложения могут быть компилированы в общедоступную ISA (например, ISA х86). Аппаратные средства (например, процессор) и/или программный слой в процессоре динамически транслирует инструкции в общедоступной ISA в частную ISA, которая выполняется в аппаратных средствах. В одном варианте осуществления частные инструкции ISA могут работать более эффективно в аппаратных средствах, и используемые аппаратные воплощения могут не быть связаны с общедоступной ISA. В одном варианте осуществления ISA уже может воплощать существующие инструкции, которые могут использоваться для отметки начала и окончания областей инструкций. Инструкции PSTART (например, инструкция запуска), и P-END могут расширять функциональность существующих инструкций, для работы совместно с модулем 340 идентификатора пути, для генерирования идентификаторов пути.

В другом варианте осуществления модуль 330 определения профиля может разрешать и может запрещать определение профиля, путем обозначения для модуля 340 идентификатора пути, следует ли модулю 340 идентификатора пути обновлять данные 345 идентификатора пути (например, таблицу 290, как представлено на фиг. 6). Например, даже при том, что область инструкций может включать в себя инструкции определения профиля, модуль 340 идентификатора пути может определять, что для области кода не следует определять профиль (например, профиль пути не должен быть сгенерирован для этой области кода). Модуль 330 определения профиля может устанавливать разрешающие биты и/или разрешающую линию модуля 340 идентификатора пути в значение "0" для обозначения того, что модулю идентификатора пути не следует сохранять и/или обрабатывать идентификаторы пути, генерируемые инструкциями определения профиля.

В одном варианте осуществления модуль 330 определения профиля может периодически обновлять и/или модифицировать данные 345 идентификатора пути (например, обновлять содержание таблицы 290). Например, как представлено на фиг. 6, модуль 330 определения профиля может выполнять сброс счетчика для записи в таблице 290 (который достиг максимального значения счетчика) в "0", и может устанавливать насыщенное значение в "0" для обозначения, что счетчик больше не насыщен. В другом примере модуль 330 определения профиля может определять, что запись больше не используется и/или может использоваться, и может устанавливать действительное значение в таблице 290 в "0" для обозначения, что запись может быть удалена и/или перезаписана. В другом варианте осуществления модуль 330 определения профиля может также копировать данные 345 идентификатора пути в модуль 360 памяти. Это может обеспечить возможность для модуля 330 определения профиля выполнять сброс одного или больше значений в данных идентификатора пути (например, выполнять сброс значения счетчика и/или насыщенных значений), но все еще отслеживать данные, которые были первоначально в данных 345 идентификатора пути. Например, копирование записи в данных 345 идентификатора пути в модуле 360 памяти может обеспечить для модуля 330 определения профиля возможность отслеживать общее количество раз исполнений пути исполнения, ассоциированного с записью, даже при том, что модуль 330 определения профиля может сбрасывать значение счетчика для записи, для обеспечения возможности для модуля 340 идентификатора пути продолжить последовательное приращение значения счетчика.

В одном варианте осуществления модуль 330 определения профиля может генерировать профиль пути на основе данных 345 идентификатора пути и/или данных в модуле 360 памяти (например, записи, которые копируют в модуль 360 памяти). Профиль пути может включать в себя данные и/или информацию о выполнении инструкций приложения 100. Профиль пути может включать в себя такие данные, как места расположения инструкций BRANCH и/или JUMP количество раз выполнения каждого пути инструкции BRANCH, места расположения в памяти (например, регистры) используемые и/или доступные для инструкций, типы инструкций и т.д. В одном варианте осуществления профиль пути может представлять собой данные, которые обозначают, как выполнялись инструкции приложения 100 и/или ресурсы (например, регистры памяти, схемы и/или компоненты модуля 350 обработки), которые используются инструкциями приложения 100. Профиль пути также может включать в себя данные, обозначающие количество раз выполнения модулем 350 обработки инструкций и/или выполнения действий или операции. В одном варианте осуществления профиль пути также может включать в себя данные, обозначающие один или больше путей выполнения (например, последовательности и/или пути блоков инструкций), выполняемых модулем обработки, и количество раз выполнения путей выполнения модулем обработки.

В одном варианте осуществления модуль 330 определения профиля может связываться (например, передавать данные в и/или принимать данные из) с компилятором 310, при вставке инструкции определения профиля. Например, модуль 330 определения профиля может вставлять инструкции, по мере того, как компилятор 310 компилирует исходные коды для генерирования инструкций для приложения 100. В другом варианте осуществления модуль 330 определения профиля может быть включен как компонент и/или как часть компилятора 310. Например, модуль 330 определения профиля может представлять собой программные модули и/или компоненты, используемые компилятором 310, когда компилятор 310 генерирует инструкции для приложения 100. В одном варианте осуществления модуль 330 определения профиля может представлять собой логику обработки, которая может содержать программное средство (такое как инструкции, работающие в устройстве обработки), аппаратные средства (например, схему, специализированную логику, программируемую логику, микрокод и т.д.) встроенное программное обеспечение или их комбинацию. В одном варианте осуществления модуль 330 определения профиля может представлять собой часть компилятора 310.

В одном варианте осуществления модуль 340 идентификатора пути может администрировать, обновлять и/или модифицировать данные 345 идентификатора пути (например, таблицу 290, представленную на фиг. 6). Например, модуль 340 идентификатора пути может вставлять новый идентификатор пути в данные 345 идентификатора пути и обновлять значения счетчика для нового идентификатора пути. Модуль 340 идентификатора пути может принимать запрос и/или данные из модуля 330 определения профиля, обозначающего, что модуль 340 идентификатора пути должен отслеживать и/или администрировать идентификаторы пути и счетчики для идентификаторов пути. Например, модуль 330 определения профиля может устанавливать разрешающий бит в модуле 340 идентификатора пути в "1", что обозначает, что модуль 340 идентификатора пути должен отслеживать и/или администрировать идентификаторы пути (например, разрешено определение профиля).

Модуль 340 идентификатора пути соединен с возможностью обмена данными с модулем 350 обработки. В одном варианте осуществления, по мере того, как модуль 350 обработки выполняет инструкции определения профиля, инструкции определения профиля могут генерировать идентификатор пути. Когда модуль 350 обработки выполняет инструкцию P-END, модуль 340 идентификатора пути может проверять, находится ли идентификатор инструкции в идентификаторе пути в пределах определенного диапазона (например, находится ли счетчик программы в пределах определенного диапазона), и может проверять, разрешено ли определение профиля. Если идентификатор инструкции находится в пределах диапазона, и определение профиля включено, модуль 340 идентификатора пути может определять, присутствует ли существующая запись для идентификатора пути. Если существующая запись отсутствует, модуль 340 идентификатора пути определяет, имеется ли место в данных 345 идентификатора пути (например, имеется ли место в таблице 290). Если больше нет места, модуль 340 идентификатора пути может не предпринимать дальнейшие действия с идентификатором пути. Если присутствует свободное место, модуль 340 идентификатора пути добавляет идентификатор пути к данным идентификатора пути.

Если запись присутствует, модуль 340 идентификатора пути может определять, является ли счетчик, ассоциированный с записью, насыщенным (например, достиг ли счетчик максимального значения). Если счетчик является насыщенным, модуль 340 идентификатора пути может больше не предпринимать дальнейшие меры в отношении идентификатора пути. Если счетчик не насыщен, модуль 340 идентификатора пути может выполнять последовательное приращение значения счетчика. После последовательного приращения значения счетчика модуль 340 идентификатора пути может определять, достигло ли значение счетчика максимального значения после последовательного приращения. Если значение счетчика достигло максимального значения, модуль 340 идентификатора пути может обновлять насыщенное значение в записи для обозначения, что счетчик достиг максимального значения.

На фиг. 8 показана блок-схема, иллюстрирующая модуль 330 определения профиля, для генерирования профиля пути, в соответствии с вариантом осуществления раскрытия. Модуль 330 определения профиля включает в себя модуль 405 инструкции, инструмент определения профиля и инструмент 415 данных идентификатора пути. В одном варианте осуществления модуль 330 определения профиля может представлять собой логику обработки, содержащую программное обеспечение (такую как инструкции, работающие в устройстве обработки). В другом варианте осуществления модуль 330 определения профиля может представлять собой логику обработки, которая может содержать аппаратные средства (например, схему, специализированную логику, программируемую логику, микрокод и т.д.) программное обеспечение, встроенное программное обеспечение или их комбинацию. Большее или меньшее количество компонентов может быть включено в модуль 330 определения профиля без потери общности. Например, два из модулей могут быть скомбинированы в один модуль, или один из модулей может быть разделен на два или больше модуля. Модуль 305 определения профиля может быть соединен с модулем 360 памяти. Модуль 360 памяти может включать в себя RAM, ROM), электронное программируемое ROM (EPROM), магнитные запоминающие устройства, такие как гибкие диски, приводы жестких дисков и т.д., электронную память, такую как твердотельная память флэш (например, eMMC и т.д.), съемные карты памяти или карты памяти типа memory sticks (например, USB, micro-SD и т.д.), оптическое запоминающее устройство, такое как ROM на основе компакт диска (CD-ROM), голографический и/или любой компонент, который может сохранять данные и/или информацию.

В одном варианте осуществления модуль 405 инструкции может вставлять и/или добавлять инструкции определения профиля (например, инструкции ΡSTART, P-END и PMARK, показанные на фиг. 5). Как описано выше со ссылкой на фиг. 5, инструкции определения профиля могут генерировать идентификатор пути (например, генерировать идентификатор инструкции и/или сигнатуру пути) для исполнительного пути, когда модуль 330 обработки выполняет инструкции определения профиля. Модуль 405 инструкции может вставлять инструкцию ΡSTART (например, инструкцию запуска) в начале области инструкций (например, в блок инструкции запуска, который находится в передней и/или верхней области инструкций), инструкцию P-END (например, инструкцию окончания) в каждом блоке инструкции, который разветвляется и/или выполняет переход из области инструкций (например, в каждом блоке заканчивающейся инструкции), и инструкцию PMARK для каждого блока инструкций, которая представляет собой место назначения инструкций BRANCH и/или JUMP внутри области инструкций.

В одном варианте осуществления инструмент 410 определения профиля может анализировать приложение 100 и может идентифицировать область инструкций, для которых требуется определить профиль (например, идентифицировать область инструкции, для которой требуется сгенерировать профиль пути). Например, инструмент 410 определения профиля может идентифицировать область инструкций, где инструкции определения профиля должны быть вставлены и/или добавлены. В другом примере инструмент 410 определения профиля может идентифицировать диапазоны идентификаторов инструкции (например, диапазоны значений счетчика программы и/или адресов памяти) для обозначения, для каких инструкций и/или блоков инструкции должен быть определен профиль. В другом варианте осуществления инструмент 410 определения профиля может разрешать и может отключать определение профиля путем обозначения модуля идентификатора пути (например, как представлено на фиг. 7), в случае, когда модуль идентификатора пути должен отслеживать идентификаторы пути. Например, инструмент 410 определения профиля может устанавливать разрешающий бит в модуле идентификатора пути в "1" для обозначения того, что идентификаторы пути следует отслеживать и/или требуется им администрировать. В одном варианте осуществления инструмент 410 определения профиля также может генерировать профиль пути на основе данных идентификатора пути и/или данных в модуле памяти. Например, инструмент 410 определения профиля может обрабатывать идентификаторы пути и/или счетчики, ассоциированные с идентификаторами пути, для генерирования профиля пути, обозначающего пути выполнения, выполняемые устройством обработки, и частоту, с которой пути выполнения выполнялись устройством обработки.

В одном варианте осуществления инструмент 415 данных идентификатора пути может периодически обновлять и/или модифицировать данные идентификатора пути (например, идентификаторы пути, счетчики, ассоциированные с идентификаторами пути, и т.д.). Например, инструмент 415 данных идентификатора пути может периодически обновлять и/или изменять значение счетчика, ассоциированное с идентификатором пути, или насыщенное значение, ассоциированное с идентификатором пути. В другом варианте осуществления модуль 330 определения профиля также может копировать данные 345 идентификатора пути в модуль 360 памяти. Например, как описано выше, модуль 330 определения профиля может копировать идентификаторы пути и их ассоциированные значения счетчика в модуль 360 памяти. Инструмент 415 данных идентификатора пути может выполнять сброс счетчиков для идентификаторов пути и обеспечивать возможность для модуля идентификатора пути продолжить отслеживание идентификаторов пути.

На фиг. 9 показана блок-схема, иллюстрирующая модуль 340 идентификатора пути, для отслеживания путей выполнения, в соответствии с вариантом осуществления раскрытия. Модуль идентификатора пути включает в себя регистр 510 ID пути, блок 520 фильтрации и блок 530 определения профиля. В одном варианте осуществления модуль 340 идентификатора пути может представлять собой логику обработки, которая может содержать аппаратные средства (например, схему, специализированную логику, программируемую логику, микрокод, запоминающее устройство и т.д.). В другом варианте осуществления модуль 330 определения профиля может представлять собой логику обработки, содержащую аппаратные средства, программное средство (такое как инструкции, работающие в устройстве процессора), программное средство, встроенное программное средство или их комбинацию. Больше или меньше компонентов может быть включено в модуль 340 идентификатора пути без потери общности. Например, два из модулей могут быть скомбинированы в один модуль, или один из модулей может быть разделен на два или больше модулей. Модуль 340 идентификатора пути может быть соединен с модулем 360 памяти. Модуль 360 памяти может включать в себя RAM, ROM), электронное программируемое ROM (EPROM), магнитную память, такую как гибкие диски, приводы жестких дисков и т.д., электронную память, такую как твердотельная память флэш (например, eMMC и т.д.), съемные карты памяти или карты памяти типа memory stiock (например, USB, micro-SD и т.д.), оптическое запоминающее устройство, такое как ROM на основе компакт диска (CD-ROM), голографический и/или любой компонент, который может сохранять данные и/или информацию.

В одном варианте осуществления регистр 510 ID пути может представлять собой временное местоположение в памяти, в котором содержится идентификатор пути, который включает в себя сигнатуру 511 пути и идентификатор 512 инструкции. В другом варианте осуществления регистр 510 ID пути может представлять собой специализированный регистр внутри модуля обработки или внутри исполнительного ядра модуля обработки. Регистр 510 ID пути может быть инициализирован, когда модуль обработки выполняет инструкцию PSTART (например, инструкцию определения профиля). Инструкция PSTART может обеспечивать выполнение модулем обработки обновления идентификатора 512 инструкции с адресом и/или местоположением (например, программного счетчика и/или адреса в памяти) начальной инструкции в блоке инструкции, который содержит инструкцию PSTART. В другом варианте осуществления, по мере того, как модуль обработки выполняет инструкции и/или блоки инструкций, инструкции ΡMARK могут обновлять сигнатуру 511 пути для обозначения, какие блоки инструкции были выполнены модулем обработки. Например, как описано выше со ссылкой на фиг. 5 и 6, когда устройство обработки выполняет блок 115 и 135 инструкции, инструкции PMARK (например, PMARK1 и PMARK3) могут генерировать сигнатуру пути "1010". В одном варианте осуществления, когда модуль обработки выполняет инструкцию P-END, инструкция P-END может обеспечить установку индикатора 513 окончания пути в значение (например, "1" или "true"), обозначающее, что был достигнут конец области инструкций, профиль которых должен быть определен.

В одном варианте осуществления блок 520 фильтрации может определять, следует ли представлять идентификатор пути в блок 530 определения профиля. Как описано, модуль обработки может генерировать идентификатор пути (который сохранен в регистре 510 ID пути), когда модуль обработки выполняет инструкции определения профиля. Блок 520 фильтрации включает в себя модуль 522 диапазона, который определяет, находится ли идентификатор 512 инструкции в пределах диапазона идентификаторов инструкции. Например, модуль 522 диапазона может определять, находится ли идентификатор 512 инструкции в пределах диапазона счетчиков программы. Модуль 522 диапазона может предоставлять результат определения диапазона в логический элемент 523 AND. Блок 520 фильтрации также включает в себя разрешающий бит 521. Разрешающий бит 521 может быть установлен модулем определения профиля для обозначения, следует ли выполнять определение профиля (например, для обозначения, следует ли генерировать профиль пути. Разрешающий бит 521 также предоставляют в логический элемент 523 AND. Как описано выше, индикатор 513 окончания пути может быть установлен, когда устройство обработки выполняет инструкцию P-END. В одном варианте осуществления, когда разрешающий бит 521 установлен в значение, обозначающее, что должно быть выполнено определение профиля (например, "true" или "1"), модуль 522 диапазона определяет, что идентификатор 512 инструкции находится в пределах диапазона идентификаторов инструкции, и что индикатор 513 окончания пути установлен в значение, обозначающее, что был достигнут конец области инструкций, для которых должен быть определен профиль, логический элемент 523 AND может передавать сигнал STORE_PATH_ID в блок 530 определения профиля. Сигнал STORE_PATH_ID может обозначать для блока 530 определение профиля, что блок 530 определения профиля должен попытаться сохранить идентификатор пути в регистре 510 идентификатора пути. В других вариантах осуществления сигнал STORE_PATH_ID может представлять собой любое значение, данные, информацию и/или сообщения, обозначающие, что блок 520 определения профиля должен сохранять идентификатор пути в регистре 510 ID пути.

В одном варианте осуществления блок 530 определения профиля может администрировать, обновлять и/или модифицировать данные 345 идентификатора пути (например, таблицу 290, представленную на фиг. 6). Блок 530 определения профиля может определять, присутствует ли существующая запись для идентификатора пути, принятого из регистра 510 ID пути. Если существующая запись отсутствует, блок 530 определения профиля определяет, имеется ли какое-либо место среди данных 345 идентификатора пути (например, имеется ли место в таблице 290). Например, блок 530 определения профиля может определять, присутствуют ли неиспользуемые записи, или записи, которые могут быть перезаписаны (например, записи, которые имеют разрешенные значения, установленные в "0"). Если больше нет места, блок 530 определения профиля может не предпринимать дополнительные действия с идентификатором пути. Если присутствует свободное место, то блок 530 определения профиля добавляет идентификатор пути к данным 345 идентификатора пути (например, добавляет новую запись в таблицу 290 или перезаписывает существующую запись в таблице 290).

Если имеется существующая запись, блок 530 определения профиля может определять, является ли насыщенным счетчик, ассоциированный с записью. Если счетчик является насыщенным, блок 530 определения профиля может не предпринимать дополнительные действия с идентификатором пути. Если счетчик не насыщен, блок 530 определения профиля может выполнять последовательное приращение счетчика и может определять, достиг ли счетчик максимального значения, после последовательного приращения. Если счетчик достиг максимального значения, блок 530 определения профиля может обновить насыщенное значение в записи, для обозначения, что счетчик достиг максимального значения. В другом варианте осуществления блок 530 определения профиля также может копировать данные 345 идентификатора пути в модуль 360 памяти. Например, как описано выше, блок 530 определения профиля может копировать идентификаторы пути и их соответствующие значения счетчика в модуль 360 памяти. Блок 530 определения профиля может выполнять сброс счетчиков для идентификаторов пути и обеспечивать возможность для блока 530 определения профиля продолжить отслеживать идентификаторы пути.

На фиг. 10-11 показаны блок-схемы последовательности операций, иллюстрирующие способы для генерирования профиля пути. Для простоты пояснения способы представлены и описаны, как последовательность действий. Однако, действия, в соответствии с этим раскрытием, могут возникать в различных порядках и/или одновременно с другими действиями, которые не представлены и не описаны здесь. Кроме того, не все представленные действия могут потребоваться для воплощения способов, в соответствии с раскрытым предметом изобретения. Кроме того, для специалиста в данной области техники будет понятно, что могут быть представлены альтернативные способы, как последовательность взаимосвязанных состояний через диаграмму состояний или события. Кроме того, следует понимать, что способы, раскрытые в данном описании, могут быть сохранены в изделии, для того, чтобы способствовать транспортированию и передаче таких способов в вычислительные устройства. Термин изделие, используемый здесь, предназначен для охвата компьютерной программы, доступ к которой может осуществляться через любое считываемое компьютером устройство или носители информации. В одном варианте осуществления способы могут быть выполнены устройством сервера (например, серверным компьютером). В качестве альтернативы, способы могут быть выполнены с использованием комбинации устройства сервера и устройства клиента. Например, операции способов могут быть разделены между устройством клиента и устройством сервера.

На фиг. 10 показана блок-схема последовательности операций, иллюстрирующая способ 600, генерирующий профиль пути, в соответствии с одним вариантом осуществления раскрытия. Способ 600 может выполняться логикой обработки, которая может содержать аппаратные средства (например, схему, специализированную логику, программируемую логику, микрокод и т.д.), программное средство (такое как инструкции, работающие в устройстве обработки), встроенное программное обеспечение или их комбинацию. В одном варианте осуществления способ 600 может выполняться в модуле определения профиля, как представлено на фиг. 7 и 8.

Как показано на фиг. 10, способ 600 начинается в блоке 605, где способ 600 идентифицирует область инструкций для профиля. В одном варианте осуществления способ 600 может идентифицировать множество областей для профиля. Область и/или области инструкций могут быть идентифицированы на основе входной команды пользователя и/или эвристически на основе условий и/или правил. В блоке 610, способ 600 может идентифицировать начальный блок инструкций, один или больше конечных блоков инструкций и один или больше блоков места назначения инструкций. Способ 600 может вставлять инструкции определения профиля в блок 615. Например, способ 600 может вставлять начальную инструкцию (например, PSTART) в начальный блок инструкции, инструкцию окончания (например, P-END) в конечные блоки инструкции, и инструкцию маркировки (например, PMARK) в блоки места назначения инструкций. В блоке 620, способ 600 может принимать множество идентификаторов пути. Например, способ 600 может запрашивать множество идентификаторов пути из модуля идентификатора пути, и модуль идентификатора пути может предоставлять множество идентификаторов пути. В случае необходимости, в блоке 625, способ 600 может предоставлять данные, обозначающие один или больше идентификаторов пути, в модуль идентификатора пути. Модуль идентификатора пути может обновлять счетчики и/или насыщенные значения для одного или больше идентификаторов пути. Способ 600 может копировать множество идентификаторов пути в память (например, в модуль 360 памяти, представленный на фиг. 7) в блоке 630. Например, способ 600 может передавать в модуль идентификатора пути данные, обозначающие, что множество идентификаторов пути должны быть скопированы в модуль памяти. Модуль идентификатора пути может копировать идентификаторы пути в модуль памяти и/или предоставлять идентификаторы пути в модуль определения профиля таким образом, что модуль определения профиля может копировать идентификаторы пути в модуль памяти. В блоке 635 способ 600 может генерировать профиль пути на основе идентификаторов пути, сохраненных в модуле идентификатора пути и/или идентификаторах пути, которые были скопированы в память.

На фиг. 11 показана блок-схема последовательности операций, иллюстрирующая способ отслеживания путей выполнения, в соответствии с одним вариантом осуществления раскрытия. Способ 700 может быть выполнен логикой обработки, которая может содержать аппаратные средства (например, схему, специализированную логику, программируемую логику, микрокод и т.д.), программное обеспечение (такое как инструкции, работающие устройстве обработки), встроенное программное обеспечение или их комбинацию. В одном варианте осуществления способ 700 может быть выполнен модулем идентификатора пути, как представлено на фиг. 7 и 9.

Как показано на фиг. 11, способ 700 начинается в блоке 705, где способ 700 принимает идентификатор пути. В одном варианте осуществления идентификатор пути может быть сгенерирован, когда модуль обработки выполняет инструкции определения профиля (например, PSTART, P-END, PMARK и т.д.), вставленные в блоки инструкции. В блоке 710, способ 700 определяет, существует ли уже идентификатор пути в данных идентификатора пути (например, таблица 290, представленная на фиг. 6), сохраненный в модуле идентификатора пути. Если запись с идентификатором пути существует в данных идентификатора пути, модуль идентификатора пути определяет, является ли эта запись насыщенной (например, достиг ли счетчик для этой записи максимального значения). Если запись не является насыщенным, способ 700 переходит к блоку 720, где способ 700 обновляет счетчик для записи. Способ затем обновляет насыщенное значение, если счетчик с последовательным приращением достигает максимального значения (в блоке 725). Если вход не является насыщенным, способ 700 переходит в блок 745.

Если не существует запись с идентификатором пути в данных идентификатора пути, способ 700 переходит к блоку 730, где модуль идентификатора пути определяет, присутствуют ли свободные записи (например, свободное пространство) в данных идентификатора пути. Например, способ 700 может определять, существуют ли неиспользуемые записи и/или записи, которые могут быть перезаписаны (например, путем проверки действительного бита). Если присутствуют свободные записи, способ 700 формирует запись для идентификатора пути (блок 735). В блоке 740, способ инициализирует другие значения для записей. Например, способ 700 может устанавливать счетчик для записи в "1" (для обозначения того, что путь выполнения, идентифицированный идентификатором пути, был однажды выполнен), действительный бит в "1" (для обозначения того, что запись все еще является действительной), и насыщенное значение в "0" (для обозначения того, что запись не является насыщенной). Если не существуют свободные записи, способ 700 переходит к блоку 745.

В блоке 745, способ 700 может, в случае необходимости, принимать данные, обозначающие один или больше идентификаторов пути. Например, способ 700 может принимать данные, обозначающие один или больше идентификаторов пути из модуля определения профиля. В блоке 750 способ 700 может обновлять значения счетчика для одного или больше идентификаторов пути, обновлять насыщенные значения для одного или больше идентификаторов пути и/или копировать один или больше идентификаторов пути (и их соответствующие значения счетчика) в модуль памяти (например, модуль 360 памяти, показанный на фиг. 7).

На фиг. 12 показана блок-схема SoC 800, в соответствии с вариантом осуществления настоящего раскрытия. Прямоугольники, представленные пунктирными линиями, представляют собой необязательные свойства, используемые для более усовершенствованных SoC. На фиг. 8, модуль (модули) 812 взаимно соединен с: процессором 820 приложения, который включает в себя набор для одного или больше ядер 802A-N и модуля (модулей) 806 совместно используемого кэш; модуль 810 системного агента; модуль (модули) 816 контроллера шины; модуль (модули) 814 интегрированного контроллера памяти; набор из одного или больше мультимедийных процессоров 818, которые могут включать в себя интегрированную графическую логику 808, процессор 824 изображения для предоставления всех функций фотокамеры и/или функций видеокамеры, процессор 826 аудиоданных для обеспечения аппаратного ускорения аудиоданных, и видеопроцессор 828 для обеспечения ускорения кодирования/декодирования видеоданных; модуль 830 статического оперативного запоминающего устройства (SRAM); модуль 832 памяти с прямым доступом (DMA); и модуль 840 дисплея для соединения с одним или больше внешними дисплеями.

Иерархия памяти включает в себя один или больше уровней кэш в пределах ядер, набор из одного или больше модулей 806 совместно используемого кэш, и внешнюю память (не показана), соединенную с набором интегрированных модулей 814 контроллера памяти. Набор модулей 806 совместно используемых кэш может включать в себя один или больше кэш среднего уровня, таких как уровень 2 (L2), уровень 3 (L3), уровень 4 (L4) или кэш других уровней, кэш последнего уровня (LLC) и/или их комбинации.

В некоторых вариантах осуществления одно или больше ядер 802A-N выполнены с возможностью многопотоковой обработки.

Модуль 810 системного агента включает в себя те компоненты, которые координируют работу и управляют ядрами 802A-N. Модуль 810 системного агента может включать в себя, например, модуль (PCU) управления питанием и модуль дисплея. PCU может представлять собой или может включать в себя логику и компоненты, необходимые для регулирования состояния питания ядер 802A-N и интегрированной графической логики 808. Модуль дисплея предназначен для управления одним или больше внешними подключаемыми дисплеями.

Ядра 802A-N могут быть гомогенными или гетерогенными с точки зрения архитектуры и/или набора инструкций. Например, некоторые из ядер 802A-N могут работать по порядку, в то время как другие могут работать не по порядку. В качестве другого примера, два или больше из ядер 802A-N могут быть выполнены с возможностью выполнения одного набора инструкций, в то время как другие могут быть выполнены с возможностью выполнения только поднабора этого набора инструкций или другого набора инструкций.

Процессор 820 приложения может представлять собой процессор общего назначения, такой как процессор Core™ i3, i5, i7, 2Duo и Quad, Xeon™, Itanium™, XScale™ или StrongARM™, которые доступны в компании Intel Corporation, Санта-Клара, Калифорния. В качестве альтернативы, процессор 820 приложения может поставляться другой компанией, такой как ARM Holdings, Ltd, MIPS и т.д. Процессор 820 приложения может представлять собой процессор специального назначения, такой как, например, сетевой процессор или процессор передачи данных, механизм сжатия, графический процессор, сопроцессор, встроенный процессор и т.п. Процессор 820 приложения может быть воплощен на одной или больше микросхемах. Процессор 820 приложения может представлять собой часть и/или может быть воплощен на одной или больше подложках, используя любое количество технологий обработки, таких как, например, BiCMOS, CMOS или NMOS.

На фиг. 13 показана блок-схема варианта осуществления конструкции системы на микросхеме (SOC), в соответствии с настоящим раскрытием. В качестве конкретного иллюстративного примера, SOC 900 включена в оборудование (UE) пользователя. В одном варианте осуществления UE относится к любому устройству, которое используется конечным пользователем, для передачи данных, такому как портативный телефон, смартфон, планшетный компьютер, ультратонкий ноутбук, ноутбук с широкополосным адаптером или любое другое аналогичное устройство для передачи данных. Часто UE соединяется с базовой станцией или узлом, который потенциально соответствует по своей сути мобильной станции (MS) в сети GSM.

Здесь SOC 900 включает в себя 2 ядра 906 и 907. Ядра 906 и 907 могут соответствовать архитектуре набора инструкций, такой как в процессоре на основе ядра архитектуры Intel®™, в процессоре компании Advanced Micro Devices, Inc. (AMD), в процессоре на основе MIPS, в процессоре на основе ARM или на основе специализированного процессора, а также на основе их лицензиатов или правопреемников. Ядра 906 и 907 соединены с управлением 909 кэш, которое ассоциировано с модулем 909 интерфейса шины и кэш 910 L2 для связи с другими частями системы 900. Взаимное соединение 911 включает в себя взаимное соединение на кристалле, такое как IOSF, AMBA или другое взаимное соединение, описанное выше, в котором потенциально воплощен один или больше аспектов описанного раскрытия.

Взаимное соединение 911 обеспечивает каналы передачи данных с другими компонентами, таким как модуль 930 идентичности абонента (SIM), для обеспечения интерфейса с SIM картой, rom 935 загрузки, для содержания кода загрузки, для выполнения ядрами 906 и 907 при инициализации и SOC 900 загрузки, контроллер 940 SDRAM для формирования интерфейса с внешней памятью (например, DRAM 960), контроллер 945 флеш, для формирования интерфейса с энергонезависимой памятью (например, Flash 965), периферийным управлением 950 (например, последовательным периферийным интерфейсом) для формирования интерфейса с периферийными устройствами, видеокодеками 920 и видеоинтерфейсом 925, для отображения и приема входных данных (например, входных данных через сенсорный экран), GPU 915, для выполнения расчетов, связанных с графическими изображениями, и т.д. Любой из этих интерфейсов может содержать аспекты описанного здесь раскрытия.

Кроме того, SOC 900 иллюстрирует периферийные устройства для передачи данных, такие как модуль 970 Bluetooth, модем 975 3G, GPS 980 и Wi-Fi 985. Следует отметить, что, как указано выше, UE включает в себя радиоблок для передачи данных. В результате, требуются не все из этих периферийных модулей передачи данных. Однако, в UE должна быть включена некоторая форма радиоблока для внешней передачи данных.

На фиг. 14 иллюстрируется схематичное представление устройства в примерной форме компьютерной системы 1000, в которой может выполняться набор инструкций, обеспечивающих выполнение устройством любой одной или больше из методологий, описанных здесь. В альтернативных вариантах осуществления устройство может быть соединено (например, через сеть) с другими устройствами в LAN, интранет, экстранет или Интернет. Устройство может работать вместо сервера или устройства - клиента в сетевой среде клиент-сервер, или как устройство в пиринговой (или распределенной) сетевой среде. Устройство может представлять собой персональный компьютер (PC), планшетный ПК, телевизионную приставку (STB), карманный персональный компьютер (PDA), сотовый телефон, сетевое устройство, сервер, сетевой маршрутизатор, коммутатор или мост, или любое устройство, выполненное с возможностью выполнения набора инструкций (последовательно или по-другому), которые устанавливают действия, которые должны быть выполнены устройством. Кроме того, в то время, как только одно устройство представлено на чертеже, термин "устройство" также следует понимать, как включающее в себя любое соединение с устройством, которые по-отдельности или совместно выполняют набор (или множество наборов) инструкций, для выполнения любой одной или больше из методологий, описанных здесь.

Компьютерная система 1000 включает в себя устройство 1002 обработки, основную память 1004 (например, постоянное запоминающее устройство (ROM), память типа флэш, динамическое оперативное запоминающее устройство (DRAM) (такое как синхронное DRAM (SDRAM) или DRAM (RDRAM), и т.д.), статическое запоминающее устройство 1006 (например, запоминающее устройство типа флэш, статическое оперативное запоминающее устройство (SRAM) и т.д.), и устройство 1018 сохранения данных, которые сообщаются друг с другом через шину 1030.

Устройство 1002 обработки представляет собой одно или больше устройств обработки общего назначения, такие как микропроцессор, центральное процессорное устройство и т.п. Более конкретно, устройство обработки может представлять собой микропроцессор компьютера со сложным набором команд (CISC), микропроцессор компьютера с сокращенным набором команд (RISC), микропроцессор со словом инструкции очень большой длины (VLIW) или процессор, воплощающий другие наборы инструкций, или процессоры, воплощающие комбинацию набора инструкций. Устройство 1002 обработки также может представлять собой одно или больше устройств обработки специального назначения, таких как специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), цифровой сигнальный процессор (DSP), сетевой процессор и т.п. В одном варианте осуществления устройство 1002 обработки может включать в себя одно или больше ядер обработки. Устройство 1002 обработки выполнено с возможностью выполнения инструкции 1026, для выполнения описанных здесь операций.

Компьютерная система 1000 может дополнительно включать в себя устройство 1008 сетевого интерфейса, соединенное с возможностью передачи данных в сеть 1020. Компьютерная система 1000 также может включать в себя модуль 1008 видеодисплея (например, жидкокристаллический дисплей (LCD) или электронно-лучевую трубку (CRT)), устройство 1012 цифро-буквенного ввода (например, клавиатуру), устройство 1014 управления курсором (например, "мышь"), устройство 1016 генерирования сигнала (например, громкоговоритель), или другие периферийные устройства. Кроме того, компьютерная система 1000 может включать в себя модуль 1022 графической обработки, модуль 1028 обработки видеоданных и модуль 1032 обработки аудиоданных. В другом варианте осуществления компьютерная система 1000 может включать в себя набор микросхем (не показан), который обозначает группу интегральных микросхем или кристаллов, которые разработаны для работы с устройством 1002 обработки, и управляют обменом данными между устройством 1002 обработки и внешними устройствами. Например, набор микросхем может представлять собой набор микросхем на материнской плате, которая соединяет устройство 1002 обработки с устройствами, работающими с очень высокой скоростью, такими как основное запоминающее устройство 1004 и графические контроллеры, а также соединяет устройства 1002 обработки с периферийными шинами, работающими с более низкой скоростью, такими как шины USB, PCI или ISA.

Устройство 1018 - накопитель данных включает в себя считываемый компьютером носитель 1024 информации, на котором сохраняют инструкции 1026, воплощающие одну или больше из методологий функций, описанных здесь. Инструкции 1026 также могут находиться полностью или, по меньшей мере, частично, в основном запоминающем устройстве 1004 и/или в устройстве 1002 обработки во время их выполнения компьютерной системой 1000; основное запоминающее устройство 1004 и устройство 1002 обработки также составляют считываемый компьютером носитель информации.

Считываемый компьютером носитель 1024 информации также может использоваться для сохранения инструкций 1026, использующих модуль 330 определения профиля и/или модуль 340 идентификатора пути, таких как описаны со ссылкой на фиг. 7, 8 и 9, и/или к способам, содержащим библиотеку программных средств, которые вызывают описанные выше приложения. В то время как считываемый компьютером носитель 1024 информации показан в примерном варианте осуществления, как одиночный носитель информации, термин "считываемый компьютером носитель информации" следует рассматривать, как включающий в себя одиночный носитель информации или множество носителей информации (например, централизованную или распределенную базу данных, и/или ассоциированный кэш и услуги), которые содержат один или больше наборов инструкций. Термин "считываемый компьютером носитель информации" также следует рассматривать, как включающий в себя любую среду, которая позволяет сохранять, кодировать или выполнять набор инструкций для выполнения устройством, и которые обеспечивают выполнение устройством любой одной или больше из методологий настоящих вариантов осуществления. Термин "считываемый компьютером носитель информации", соответственно, следует рассматривать, как включающий в себя, но не ограниченный этим, твердотельное запоминающее устройство, оптический и магнитный носители информации.

Следующие примеры относятся к дополнительным вариантам осуществления.

Пример 1 направлен на устройство, содержащее память, для сохранения множества идентификаторов пути, в котором каждый идентификатор пути среди множестве идентификаторов пути содержит данные, обозначающие путь выполнения, сигнатуру пути, которая идентифицирует один или больше блоков инструкций, и идентификатор инструкции, который идентифицирует первую инструкцию в первом блоке инструкции одного или больше блоков инструкций, и процессор, соединенный с возможностью обмена данными с памятью. Процессор выполнен с возможностью принимать первый идентификатор пути, определять, соответствует ли этот первый идентификатор пути существующему идентификатору пути среди множества идентификаторов пути, выполнять последовательное приращение счетчика, ассоциированного с существующим идентификатором пути, когда первый идентификатор пути соответствует существующему идентификатору пути, и добавлять первый идентификатор пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует существующему идентификатору пути среди множества идентификаторов пути.

Пример 2 может, в случае необходимости, расширять предмет изобретения примера 1. В Примере 2 процессор дополнительно выполнен с возможностью определения, находится ли идентификатор инструкции в пределах диапазона идентификаторов инструкции.

Пример 3 может, в случае необходимости, расширять предмет изобретения любого одного из примеров 1-2. В примере 3, первый идентификатор пути генерируется, когда процессор завершает выполнение пути выполнения.

Пример 4, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1-3. В примере 3 процессор дополнительно выполнен с возможностью выполнения множества инструкций, в котором множество инструкций содержит одну или больше инструкций определения профиля, которые обеспечивают генерирование процессором первого идентификатора пути, когда процессор выполняет одну или больше инструкций определения профиля.

Пример 5, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 1-4. В примере 5, процессор выполняет последовательное приращение счетчика путем определения, достиг ли счетчик максимального значения, и когда счетчик не достиг максимального значения, выполнять последовательное приращение счетчика и обновлять насыщенное значение, когда счетчик достигает максимального значения после последовательного приращения счетчика.

Пример 6, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1-5. В примере 6 процессор добавляет первый идентификатор пути к множеству идентификаторов пути путем определения, имеется ли место среди множества идентификаторов пути, для добавления первого идентификатора пути, и добавлять первый идентификатор пути, когда имеется место среди множества идентификаторов пути.

Пример 7, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1-6. В примере 7 процессор содержит запоминающее устройство.

Пример 8, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1-7. В примере 8 первый идентификатор принимают из регистра в процессоре.

Пример 9, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1-8. В примере 9 процессор дополнительно выполнен с возможностью принимать данные, обозначающие один или больше идентификаторов пути, и удалять один или больше идентификаторов пути из множества идентификаторов пути на основе этих данных.

Пример 10, в случае необходимости, может расширить предмет изобретения любого одного из примеров 1-9. В примере 10 процессор дополнительно выполнен с возможностью принимать данные, обозначающие один или больше идентификаторов пути, и выполнять сброс одного или больше счетчиков, или одного или больше насыщенных значений для одного или больше идентификаторов пути, на основе этих данных.

Пример 11, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1-10. В примере 11 процессор дополнительно выполнен с возможностью принимать данные, обозначающие один или больше идентификаторов пути, и копировать один или больше идентификаторов пути во вторую память.

Пример 12 представляет собой способ, содержащий: принимают первый идентификатор пути, определяют, соответствует ли первый идентификатор пути существующему идентификатору пути среди множества идентификаторов пути, в котором каждый идентификатор пути среди множества идентификаторов пути содержит данные, обозначающие путь выполнения, сигнатуру пути, которая идентифицирует один или больше блоков инструкций, и идентификатор инструкции, который идентифицирует первую инструкцию в первом блоке инструкции одного или больше блоков инструкций, выполняют последовательное приращение счетчика, ассоциированного с существующим идентификатором пути, когда первый идентификатор пути соответствует существующему идентификатору пути, и добавляют первый идентификатор пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует существующему идентификатору пути среди множества идентификаторов пути.

Пример 13, в случае необходимости, может расширять предмет изобретения примера 12. В примере 14 способ дополнительно содержит: определяют, находится ли идентификатор инструкции в пределах диапазона идентификаторов инструкций.

Пример 14, в случае необходимости, может расширять предмет изобретения любого одного из примеров 12-13. В примере 14 первый идентификатор пути генерируют, когда процессор завершает выполнение пути выполнения.

Пример 15, в случае необходимости, может расширять предмет изобретения любого одного из примеров 12-14. В примере 15, способ дополнительно содержит: выполняют множество инструкций, в котором множество инструкций содержит одну или больше инструкций определения профиля, которые обеспечивают генерирование процессором первого идентификатора пути, когда процессор выполняет одну или больше инструкций определения профиля.

Пример 16, в случае необходимости, может расширять предмет изобретения любого одного из примеров 1222-15. В примере 16 последовательное приращение счетчика содержит: определяют, достиг ли счетчик максимального значения, и когда счетчик еще не достиг максимального значения, выполняют последовательное приращение значения счетчика и обновляют насыщенное значение, когда счетчик достигает максимального значения после последовательного приращения счетчика.

Пример 17, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 12-16. В примере 17 добавление первого идентификатора пути к множеству идентификаторов пути содержит: определяют, имеется ли место среди множества идентификаторов пути для добавления первого идентификатора пути, и добавляют первый идентификатор пути, когда имеется место среди множества идентификаторов пути.

Пример 18, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 12-17. В примере 18, первый идентификатор принимают из регистра в процессоре.

Пример 19, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 1222-18. В примере 19 способ дополнительно содержит: принимают данные, обозначающие один или больше идентификаторов пути, и удаляют один или больше идентификаторов пути из множества идентификаторов пути на основе этих данных.

Пример 20, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 12-19. В примере 20 способ дополнительно содержит: принимают данные, обозначающие один или больше идентификаторов пути, и выполняют сброс одного или больше счетчиков, или одного или больше насыщенных значений для одного или больше идентификаторов пути на основе этих данных.

Пример 21, в случае необходимости, может расширять предмет изобретения любого одного из примеров 12-20. В примере 21 способ дополнительно содержит: принимают данные, обозначающие один или больше идентификаторов пути, и копируют один или больше идентификаторов пути во вторую память.

Пример 22 представляет собой энергонезависимый, считываемый устройством носитель информации, включающий в себя данные, которые, когда к ним обращается процессор, обеспечивают выполнение процессором операций, содержащих прием первого идентификатора пути, определение, соответствует ли первый идентификатор пути существующему идентификатору пути среди множества идентификаторов пути, в котором каждый идентификатор пути среди множества идентификаторов пути содержит данные, обозначающие путь выполнения, сигнатуру пути, которая идентифицирует один или больше блоков инструкций, и идентификатор инструкции, который идентифицирует первую инструкцию в первом блоке инструкции одного или больше блоков инструкций, последовательное приращение счетчика, ассоциированного с существующим идентификатором пути, когда первый идентификатор пути соответствует существующему идентификатору пути, и добавление первого идентификатора пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует существующему идентификатору пути среди множества идентификаторов пути.

Пример 23, в случае необходимости, может расширять предмет изобретения примера 22. В Примере 23 операции дополнительно содержат: определяют, находится ли идентификатор инструкции в пределах диапазона идентификаторов инструкции.

Пример 24, в случае необходимости, может расширять предмет изобретения любого одного из примеров 24-23. В примере 24 первый идентификатор пути генерируют, когда процессор завершает выполнение исполнительного пути.

Пример 25, в случае необходимости, может расширять предмет изобретения любого одного из примеров 22-24. В примере 25 операции дополнительно содержат выполнение множества инструкций, в котором множество инструкций содержит одну или больше инструкций определения профиля, которые обеспечивают генерирование процессором первого идентификатора пути, когда процессор выполняет одну или больше инструкций определения профиля.

Пример 26, в случае необходимости, может расширить предмет изобретения любого одного из примеров 24-25. В примере 26 последовательное приращение счетчика содержит: определяют, достиг ли счетчик максимального значения, и когда счетчик не достиг максимального значения, выполняют последовательное приращение счетчика, и обновляют насыщенное значение, когда счетчик достигает максимального значения после последовательного приращения счетчика.

Пример 27, в случае необходимости, может расширять предмет изобретения любого одного из примеров 22-26. В примере 27 добавление первого идентификатора пути к множеству идентификаторов пути содержит: определяют, имеется ли место среди множества идентификаторов пути для добавления первого идентификатора пути, и добавляют первый идентификатор пути, когда имеется место среди множества идентификаторов пути.

Пример 28, в случае необходимости, может расширять предмет изобретения любого одного из примеров 22-27. В примере 28 первый идентификатор принимают из регистра в процессоре.

Пример 29, в случае необходимости, может расширять предмет изобретения любого одного из примеров 22-28. В примере 29 операции дополнительно содержат: принимают данные, обозначающие один или больше идентификаторов пути, и удаляют один или больше идентификаторов пути из множества идентификаторов пути на основе этих данных.

Пример 30, в случае необходимости, может расширять предмет изобретения любого одного из примеров 22-31. В примере 30 операции дополнительно содержат: принимают данные, обозначающие один или больше идентификаторов пути, и выполняют сброс одного или больше счетчиков, или одного или больше насыщенных значений для одного или больше идентификаторов пути на основе этих данных.

Пример 31, в случае необходимости, может расширять предмет изобретения любого одного из примеров 22-30. В примере 31 операции дополнительно содержат: принимают данные, обозначающие один или больше идентификаторов пути, и копируют один или больше идентификаторов пути во вторую память.

Пример 32 представляет собой устройство, содержащее средство для приема первого идентификатора пути, средство для определения, соответствует ли первый идентификатор пути существующему идентификатору пути среди множества идентификаторов пути, в котором каждый идентификатор пути среди множества идентификаторов пути содержит данные, обозначающие путь выполнения, сигнатуру пути, которая идентифицирует один или больше блоков инструкций, и идентификатор инструкции, который идентифицирует первую инструкцию в первом блоке инструкции одного или больше блоков инструкций, средство для последовательного приращения счетчика, ассоциированного с существующим идентификатором пути, когда первый идентификатор пути соответствует существующему идентификатору пути, и средство для добавления первого идентификатора пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует существующему идентификатору пути среди множества идентификаторов пути.

Пример 33, в случае необходимости, может расширять предмет изобретения по примеру 32. В Примере 33 устройство дополнительно выполнено с возможностью выполнения, в соответствии с любым из пп. 12-21.

Пример 34 представляет собой способ, содержащий: идентифицируют область инструкций, для профиля, вставляют инструкции определения профиля в эту область инструкций, принимают множество идентификаторов пути, в котором каждый идентификатор пути среди множества идентификаторов пути содержит данные, обозначающие путь выполнения, сигнатуру пути, которая идентифицирует один или больше блоков инструкций, и идентификатор инструкции, который идентифицирует первую инструкцию в первом блоке инструкции одного или больше блоков инструкций, и в котором множество идентификаторов пути генерируют, когда процессор выполняет инструкции определения профиля и генерирует профиль пути на основе множества идентификаторов пути.

Пример 35, в случае необходимости, может расширять предмет изобретения примера 34. В Примере 35 способ дополнительно содержит: предоставляют данные, обозначающие, что один или больше из идентификаторов пути, в котором должны быть изменены одно или больше значений счетчика или насыщенных значений, ассоциированных с одним или больше идентификаторами пути.

Пример 36, в случае необходимости, может расширять предмет изобретения любого одного из примеров 34-35. В примере 36 вставка инструкций определения профиля содержит идентификацию множества блоков инструкций места назначения в области инструкций, и вставку маркирующих инструкций в множество блоков инструкции места назначения.

Пример 37, в случае необходимости, может расширять предмет изобретения любого одного из примеров 34-36. В примере 37 вставка инструкций определения профиля содержит: идентифицируют начальный блок инструкции и один или больше конечных блоков инструкции в области инструкций, и вставляют начальную инструкцию в начальный блок инструкции, и одну или больше конечных инструкций в один или больше конечные блоки инструкции.

Пример 38, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 34-37. В примере 38 способ дополнительно содержит: копируют множество идентификаторов пути в память.

Пример 39, в случае необходимости, может расширять предмет изобретения любого одного из примеров 34-39. В примере 39 область инструкций для профиля идентифицируют на основе одной или больше входных команд пользователя, используя эвристический подход, ассоциированный с областью инструкций, или правила, ассоциированные с областью инструкций.

Пример 40 представляет собой устройство, содержащее память, для сохранения множества идентификаторов пути, в котором каждый идентификатор пути среди множества идентификаторов пути, содержит данные, обозначающие путь выполнения, сигнатуру пути, которая идентифицирует один или больше блоков инструкций, и идентификатор инструкции, который идентифицирует первую инструкцию в первом блоке инструкции одного или больше блоков инструкции, и в котором множество идентификаторов пути генерируют, когда процессор выполняет инструкции определения профиля, процессор соединяется с возможностью передачи данных с памятью, процессор, предназначенный для идентификации области инструкций, для определения профиля вставки инструкции, определения профиля в области инструкций, приема множества идентификаторов пути и генерирования профиля пути на основе множества идентификаторов пути.

Пример 41, в случае необходимости, может расширять предмет изобретения по примеру 40. В Примере 41, процессор дополнительно выполнен с возможностью предоставлять данные, обозначающие, что один или больше идентификаторов пути, в котором должны быть изменены одно или больше значений счетчика или насыщенных значений, ассоциированных с одним или больше идентификаторов пути.

Пример 42, в случае необходимости, может расширять предмет изобретения по любому из примеров 40-41. В примере 42 вставка инструкций определения профиля содержит: идентифицируют множество блоков инструкций места назначения в области инструкций, и вставляют инструкции маркировки в множество блоков инструкции назначения.

Пример 43, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 40-42. В примере 43 вставка инструкций определения профиля содержит: идентифицируют начальный блок инструкций и один или больше конечных блоков инструкций в области инструкций, и вставляют инструкцию запуска в начальный блок инструкций, и одну или больше инструкций окончания в один или больше конечных блоков инструкции.

Пример 44, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 40-43. В примере 44 процессор дополнительно выполнен с возможностью копирования множества идентификаторов пути в память.

Пример 45, в случае необходимости, может расширять предмет изобретения по любому одному из примеров 40-44. В примере 45 область инструкций, для профиля идентифицируют на основе одной или больше входных команд пользователя, эвристических правил, ассоциированных с областью инструкций, или правил, ассоциированных с областью инструкций.

Пример 46 направлен на энергонезависимый, считываемый устройством носитель информации, включающий в себя данные, которые при обращении к ним процессора, обеспечивают выполнение процессором способа в соответствии с любым одним из примеров 34-39.

Пример 47 направлен на устройство, содержащее средство для выполнения способа, в соответствии с любым одним из примеров 34-39.

Некоторые части подробного описания изобретения представлены в виде алгоритмов и символьных представлений операций, выполняемых для битов данных в памяти компьютера. Эти алгоритмические описания и представления представляют собой средство, используемое специалистами в области обработки данных для наиболее эффективного представления сущности своей работы другим специалистам в данной области техники. Алгоритм здесь и, в общем, рассматривается, как самостоятельная последовательность операций, ведущая к требуемому результату. Операции представляют собой такие операции, которые требуют физических манипуляций с физическими величинами. Обычно, хотя и не обязательно, такие величины принимают форму электрических или магнитных сигналов, которые можно сохранять, передавать, комбинировать, сравнивать и выполнять с ними другие манипуляции. Иногда оказывается удобным, преимущественно, по причинам общего использования, называть эти сигналы битами, значениями, элементами, символами, цифрами, элементами, числами и т.п. Блоки, описанные здесь, могут представлять аппаратные средства, программные средства, встроенное программное обеспечение или их комбинацию.

Следует учитывать, однако, что все эти и аналогичные термины должны быть ассоциированы с соответствующими физическими величинами, и они представляют собой просто удобные метки, применяемые для этих величин. Если только не будет, в частности, заявлено другое, как очевидно из представлено выше описания, следует понимать, что во всем описании использование таких терминов, как "прием", "идентификация", "определение", "выполнение", "последовательное приращение", "суммирование", "исполнение", "обновление", "удаление", "сброс", "копирование", "вставка", "генерирование", "предоставление" и т.п., относятся к действиям и обработке компьютерной системы, или аналогичного электронного вычислительного устройства, которое манипулирует и преобразует данные, представленные, как физические (например, электронные) величины в регистрах и в памяти компьютерной системы в другие данные, аналогично представленные, как физические величины в памяти или в регистрах компьютерной системы или в других таких накопителях информации, устройствах передачи или отображения.

Слова "пример" или "примерный" используются здесь для обозначения использующегося как пример, экземпляр или иллюстрации. Любой аспект или конструкцию, описанные здесь, как "пример" или "примерный", не обязательно следует рассматривать, как предпочтительные или преимущественные по сравнению с другими аспектами или конструкциями. Скорее, использование слов "пример" или "примерный" предназначено для представления концепций в конкретном виде. Используемый в данной заявке термин "или" предназначен для обозначения включительного "или", а не исключительного "или". Таким образом, если другое не будет указано или не будет ясно из контекста, "X включает в себя А или В" предназначено для обозначения любых из естественных включительных перестановок. Таким образом, если X включает в себя А; X включает в себя В; или X включает в себя, как А, так и В, тогда "X включает в себя А или В" удовлетворяется для любого из представленных выше случаев. Кроме того, артикли "a", "an", используемые в данной заявке и в приложенной формуле изобретения, в общем, следует рассматривать, как обозначающие "один или больше", если только не будет указано другое или из контекста не будет ясно, что они направлены на форму единственного числа. Кроме того, использование термина "вариант осуществления" или "один вариант осуществления", или "осуществление", или "одно осуществление" во всем тексте не предназначено для обозначения того же варианта осуществления или воплощения, если это только не будет указано. Кроме того, термины "первый", "второй", "третий", "четвертый" и т.д., используемые здесь, подразумеваются, как метки, для различия между различными элементами и не обязательно могут иметь обычное значение, в соответствии с их цифровым обозначением.

Варианты осуществления, описанные здесь, могут также относиться к устройству для выполнения описанных здесь операций. Данное устройство может, в частности, быть построено с требуемым назначением, или оно может содержать компьютер общего назначения, избирательно активируемый или реконфигурируемый компьютерной программой, сохраненной в компьютере. Такая компьютерная программа может быть сохранена на энергонезависимом, считываемом в компьютере носителе информации, таком как, но без ограничений, любой тип диска, включающий в себя гибкие диски, оптические диски, CD-ROM и магнитные оптические диски, постоянное запоминающее устройство (ROM), оперативное запоминающее устройство (RAM), EPROM, EEPROM, магнитные или оптические карты, память типа флэш или любой тип носителя, пригодный для сохранения электронных инструкций. Термин "считываемый компьютером носитель информации" следует рассматривать, как включающий в себя один носитель или множество носителей (например, централизованную или распределенную базу данных, и/или ассоциированные кэш и серверы), которые содержат один или больше наборов инструкций. Термин "считываемый компьютером носитель информации" также следует рассматривать, как включающий в себя любой носитель информации, который выполнен с возможностью сохранения, кодирования или переноса набора инструкций для выполнения в устройстве, и который обеспечивает выполнение устройством любой одной или больше методологий настоящих вариантов осуществления. Термин "считываемый компьютером носитель информации" должен, соответственно, рассматриваться, как включающий в себя, но без ограничения этим, твердотельное запоминающее устройство, оптические носители, магнитные носители, любой носитель информации, который выполнен с возможностью сохранения набора инструкций для выполнения устройством и который обеспечивает выполнение устройством любой одной или больше методологий настоящих вариантов осуществления.

Алгоритмы и дисплеи, представленные здесь, по существу, не относятся к какому-либо конкретному компьютеру или другому устройству. Различные системы общего назначения могут использоваться с программами, в соответствии с представленным здесь описанием, или может оказаться удобным построить более специализированное устройство для выполнения этих операций. Требуемая структура для различных таких систем будет понятна из представленного ниже описания. Кроме того, настоящие варианты осуществления не описаны со ссылкой ни любой конкретный язык программирования. Следует понимать, что различные языки программирования могут использоваться для воплощения описания вариантов осуществления, как описано здесь.

Представленное выше описание представляет различные конкретные детали, такие как примеры конкретных систем, компонентов, способов и т.д. для предоставления хорошего понимания нескольких вариантов осуществления. Для специалиста в данной области техники должно быть понятно, однако, что, по меньшей мере, некоторые варианты осуществления могут быть выполнены на практике без этих конкретных деталей. В других случаях хорошо известные компоненты или способы не описаны подробно или представлены в формате одиночной блок-схемы для исключения ненужного усложнения представленных вариантов осуществления. Таким образом, конкретные детали, описанные выше, представляют собой просто примеры. Конкретные варианты воплощения могут отличаться от этих примерных деталей и все еще должны рассматриваться, как находящиеся в пределах объема настоящих вариантов осуществления.

Следует понимать, что представленное выше описание предназначено для иллюстрации, а не для ограничения. Множество других вариантов осуществления будут понятны для специалистов в данной области техники при чтении и понимании представленного выше описания. Объем настоящих вариантов осуществления, поэтому, должен определяться со ссылкой на приложенную формулу изобретения, вместе с полным объемом эквивалентов, которые названы в пунктах формулы изобретения.

1. Устройство для определения профиля пути, содержащее:

память для хранения множества идентификаторов пути, при этом каждый идентификатор пути из множества идентификаторов пути содержит данные, указывающие путь выполнения, сигнатуру пути, идентифицирующую один или более блоков инструкций, и идентификатор инструкции, идентифицирующий первую инструкцию в первом блоке инструкции из одного или более блоков инструкций;

процессор, соединенный с возможностью обмена данными с памятью, причем процессор выполнен с возможностью:

принимать первый идентификатор пути;

определять, соответствует ли первый идентификатор пути имеющемуся идентификатору пути из множества идентификаторов пути;

выполнять последовательное приращение счетчика, связанного с имеющимся идентификатором пути, когда первый идентификатор пути соответствует имеющемуся идентификатору пути;

добавлять первый идентификатор пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует имеющемуся идентификатору пути из множества идентификаторов пути; и

удалять по меньшей мере один идентификатор пути из множества идентификаторов пути на основе того, сколько раз путь выполнения, связанный с указанным по меньшей мере одним идентификатором, выполнен процессором.

2. Устройство по п. 1, в котором процессор дополнительно выполнен с возможностью:

определять, находится ли идентификатор инструкции в пределах диапазона идентификаторов инструкций.

3. Устройство по п. 1, в котором процессор выполнен с возможностью выполнять последовательное приращение счетчика путем определения, достиг ли счетчик максимального значения; и

если счетчик не достиг максимального значения, выполнять последовательное приращение счетчика; и

обновлять насыщенное значение, когда счетчик достигает максимального значения после последовательного приращения счетчика.

4. Устройство по п. 1, в котором процессор выполнен с возможностью добавлять первый идентификатор пути к множеству идентификаторов пути путем:

определения, имеется ли место среди множества идентификаторов пути для добавления первого идентификатора пути; и

добавления первого идентификатора пути, когда имеется место среди множества идентификаторов пути.

5. Устройство по п. 1, в котором процессор содержит упомянутое запоминающее устройство.

6. Устройство по п. 1, в котором процессор дополнительно выполнен с возможностью:

принимать данные, указывающие один или более идентификаторов пути; и

удалять упомянутые один или более идентификаторов пути из множества идентификаторов пути на основе упомянутых данных.

7. Устройство по п. 1, в котором процессор дополнительно выполнен с возможностью:

принимать данные, указывающие один или более идентификаторов пути; и

выполнять сброс одного или более счетчиков или одного или более насыщенных значений для упомянутого одного или более идентификаторов пути на основе упомянутых данных.

8. Устройство по п. 1, в котором процессор дополнительно выполнен с возможностью:

принимать данные, указывающие один или более идентификаторов пути; и

копировать упомянутый один или более идентификаторов пути во вторую память.

9. Способ определения профиля пути, содержащий этапы, на которых:

принимают первый идентификатор пути;

определяют, посредством процессора, соответствует ли первый идентификатор пути имеющемуся идентификатору пути из множества идентификаторов пути, при этом каждый идентификатор пути из множества идентификаторов пути содержит данные, указывающие путь выполнения, сигнатуру пути, идентифицирующую один или более блоков инструкций, и идентификатор инструкции, идентифицирующий первую инструкцию в первом блоке инструкции из одного или более блоков инструкций;

выполняют последовательное приращение счетчика, связанного с имеющимся идентификатором пути, когда первый идентификатор пути соответствует имеющемуся идентификатору пути;

добавляют, посредством процессора, первый идентификатор пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует имеющемуся идентификатору пути из множества идентификаторов пути, и

удаляют по меньшей мере один идентификатор пути из множества идентификаторов пути на основе того, сколько раз путь выполнения, связанный с указанным по меньшей мере одним идентификатором, выполнен процессором.

10. Способ по п. 9, дополнительно содержащий этап, на котором:

определяют, находится ли идентификатор инструкции в пределах диапазона идентификаторов инструкций.

11. Способ по п. 9, в котором на этапе последовательного приращения счетчика:

определяют, достиг ли счетчик максимального значения, и

если счетчик не достиг максимального значения, выполняют последовательное приращение значения счетчика, и

обновляют насыщенное значение, когда счетчик достигает максимального значения после последовательного приращения счетчика.

12. Способ по п. 9, в котором на этапе добавления первого идентификатора пути к множеству идентификаторов пути:

определяют, имеется ли место среди множества идентификаторов пути для добавления первого идентификатора пути; и

добавляют первый идентификатор пути, когда имеется место среди множества идентификаторов пути.

13. Способ по п. 9, дополнительно содержащий этапы, на которых:

принимают данные, указывающие один или более идентификаторов пути; и

выполняют один или более этапов из следующих этапов:

копируют упомянутый один или более идентификаторов пути во вторую память;

удаляют упомянутый один или более идентификаторов пути из множества идентификаторов пути на основе упомянутых данных; или

выполняют сброс одного или более счетчиков или одного или более насыщенных значений для упомянутого одного или более идентификаторов пути на основе упомянутых данных.

14. Энергонезависимый машиночитаемый носитель информации, содержащий данные, которые при обращении к ним процессора вызывают выполнение процессором операций, содержащих:

прием первого идентификатора пути;

определение, посредством процессора, соответствует ли первый идентификатор пути имеющемуся идентификатору пути из множества идентификаторов пути, при этом каждый идентификатор пути из множества идентификаторов пути содержит данные, указывающие путь выполнения, сигнатуру пути, идентифицирующую один или более блоков инструкций, и идентификатор инструкции, идентифицирующий первую инструкцию в первом блоке инструкции из одного или более блоков инструкций;

последовательное приращение счетчика, связанного с имеющимся идентификатором пути, когда первый идентификатор пути соответствует имеющемуся идентификатору пути;

добавление, посредством процессора, первого идентификатора пути к множеству идентификаторов пути, когда первый идентификатор пути не соответствует имеющемуся идентификатору пути из множества идентификаторов пути; и

удаление по меньшей мере одного идентификатора пути из множества идентификаторов пути на основе того, сколько раз путь выполнения, связанный с указанным по меньшей мере одним идентификатором, выполнен процессором.

15. Энергонезависимый машиночитаемый носитель информации по п. 14, в котором операции дополнительно содержат:

определение, находится ли идентификатор инструкции в пределах диапазона идентификаторов инструкций.

16. Энергонезависимый машиночитаемый носитель информации по п. 14, в котором последовательное приращение счетчика содержит:

определение, достиг ли счетчик максимального значения, и

если счетчик не достиг максимального значения, выполнение последовательного приращения счетчика; и

обновление насыщенного значения, когда счетчик достигает максимального значения после последовательного приращения счетчика.

17. Энергонезависимый машиночитаемый носитель информации по п. 14, в котором добавление первого идентификатора пути к множеству идентификаторов пути содержит:

определение, имеется ли место среди множества идентификаторов пути для добавления первого идентификатора пути; и

добавление первого идентификатора пути, когда имеется место среди множества идентификаторов пути.

18. Энергонезависимый машиночитаемый носитель информации по п. 14, в котором операции дополнительно содержат:

прием данных, указывающих один или более идентификаторов пути; и

выполнение одной или более операций из следующих операций:

копирование упомянутого одного или более идентификаторов пути во вторую память;

удаление упомянутого одного или более идентификаторов пути из множества идентификаторов пути на основе упомянутых данных; или

выполнение сброса одного или более счетчиков или одного или более насыщенных значений для упомянутого одного или более идентификаторов пути на основе упомянутых данных.

19. Устройство для определения профиля пути, содержащее:

средство для выполнения способа по любому из пп. 9-13.

20. Способ определения профиля пути, содержащий этапы, на которых:

идентифицируют, посредством процессора, область инструкций для определения профиля;

вставляют, посредством процессора, инструкции определения профиля в упомянутую область инструкций;

принимают множество идентификаторов пути, причем каждый идентификатор пути из множества идентификаторов пути содержит данные, указывающие путь выполнения, сигнатуру пути, идентифицирующую один или более блоков инструкций, и идентификатор инструкции, идентифицирующий первую инструкцию в первом блоке инструкции из одного или более блоков инструкций, при этом упомянутое множество идентификаторов пути генерируют при выполнении процессором инструкций определения профиля;

удаляют, посредством процессора, по меньшей мере один идентификатор пути из множества идентификаторов пути на основе того, сколько раз путь выполнения, связанный с указанным по меньшей мере одним идентификатором, выполнен процессором; и

генерируют профиль пути на основе множества идентификаторов пути.

21. Способ по п. 20, дополнительно содержащий этап, на котором:

предоставляют данные, указывающие один или более идентификаторов пути, при этом одно или более значений счетчика или насыщенных значений, связанных с упомянутым одним или более идентификаторами пути, подлежат изменению.

22. Способ по п. 20, в котором на этапе вставки инструкций определения профиля:

идентифицируют в области инструкций множество блоков инструкций места назначения, и

вставляют маркирующие инструкции в упомянутое множество блоков инструкций места назначения.

23. Способ по п. 20, в котором на этапе вставки инструкций определения профиля:

идентифицируют блок начальной инструкции и один или более блоков конечных инструкций в области инструкций; и

вставляют начальную инструкцию в упомянутый блок начальной инструкции и одну или более конечных инструкций в упомянутый один или более блоков конечных инструкций.

24. Способ по п. 20, дополнительно содержащий этап, на котором

копируют упомянутое множество идентификаторов пути в память.

25. Устройство для определения профиля пути, содержащее средство для выполнения способа по любому из пп. 20-24.



 

Похожие патенты:

Изобретение относится к технологии интеллектуального терминала и, в частности, к способу и системе для управления интеллектуальным терминалом. Технический результат заключается в повышении срока службы механической части гарнитуры и экономии электроэнергии интеллектуального терминального устройства.

Изобретение относится к области компьютерной безопасности. Технический результат заключается в обеспечении выполнения кода в режиме гипервизора.

Изобретение относится к технологиям описания интерфейсов прикладного программирования. Техническим результатом является автоматизация описания интерфейса прикладного программирования.

Изобретение относится к компьютерной безопасности. Технический результат заключается в снижении общего времени антивирусной проверки идентичных объектов, размещенных на виртуальных машинах.

Изобретение относится к виртуализации. Технический результат заключается в обеспечении постоянного выполнения одного из гипервизоров в компьютерной системе.

Изобретение относится к области обработки информации. Технический результат - обеспечение возможности внесения исправлений в конкретные инструкции ассемблирования или их группы без увеличения объема кода или замедления выполнения программы, когда исправления не внесены.

Изобретение относится к средствам для регулировки канала I/O на виртуальной платформе, которые применяются в области виртуальной технологии. Технический результат заключается в повышении эффективности распределения ресурсов.

Изобретение относится к обработке виртуализации в компьютерной системе. Технический результат заключается в обеспечении совместимости средств виртуализации с устройствами, использующимися в компьютерной системе.

Изобретение относится к средствам управления виртуализацией для управления аппаратными ресурсами устройства связи. Технический результат заключается в повышении эффективности использования физических ресурсов.

Изобретение относится к области команд процесса компьютерной системы. Техническим результатом является оптимизация выполнения многофункциональных команд в разных машинах.

Изобретение относится к методикам для масштабирования вычислительных ресурсов. Технический результат заключается в том, чтобы позволить экземпляру виртуальной машины наращиваться или сокращаться в размере и функциональных возможностях по требованию или согласно фактическому спросу на ресурсы, которые предоставляет виртуальная машина. Для этого используется служба масштабирования, которая выделяет дополнительные вычислительные ресурсы (например, процессоры, память и т.д.) экземпляра виртуальной машины (или другого вычислительного экземпляра) и/или освобождает вычислительные ресурсы из экземпляра виртуальной машины согласно запросам и/или пороговым величинам. 2 з.п. ф-лы, 7 ил.

Изобретение относится к области компьютерной техники, в частности к дублированию хранилища данных. Технический результат заключается в обеспечении корректности и исключении ошибок при сохранении дублированных данных. Технический результат достигается за счет управления дублированием, которое включает в себя размещение принятых копий разностных дисков относительно дублированного базового виртуального диска, при этом принятые копии разностных дисков упомянутого множества типов копии организованы в цепочку, первый разностный диск из принятых копий, организованных в цепочку, содержит согласованный с приложениями тип копии, основанный на данных приложения, которые были подготовлены к созданию копии, а второй разностный диск из принятых копий, организованных в цепочку, содержит соответствующий отказу тип моментального снимка, основанный на данных приложения, которые не были подготовлены к созданию копии. 3 н. и 17 з.п. ф-лы, 19 ил.

Изобретение относится к области компьютерной техники и, в частности, к устройству виртуальной машины, выполняющему принятую последовательность инструкций. Технический результат заключается в повышении уровня конфиденциальности и безопасности в выполнении операционных процедур в виртуальных машинах, встроенных в электронное устройство. Технический результат достигается за счет принятия закодированной инструкции, причем закодированная инструкция получается посредством кодирования открытой инструкции с помощью кодирования кода, выбора и активации соответствующей операционной процедуры из множества операционных процедур, причем соответствующая операционная процедура выполнена с возможностью выполнять открытую инструкцию, соответствующую закодированной инструкции, и поиска закодированной инструкции, чтобы выбирать соответствующую операционную процедуру. 4 н. и 10 з.п. ф-лы, 14 ил.

Изобретение относится к области компьютерной безопасности. Технический результат заключается в повышении безопасности компьютерных систем. Предложен способ признания вредоносным исполняемого файла, содержащего интерпретатор языка сценариев, по которому: передают исполняемый файл, содержащий интерпретатор языка сценариев и сценарий, связанный с упомянутым интерпретатором, анализатору; преобразуют с помощью анализатора команды из упомянутого сценария в псевдокод; производят эмуляцию выполнения псевдокода с помощью эмулятора сценариев и записывают результат в журнал работы эмуляторов; обнаруживают в процессе эмуляции по меньшей мере один переход из псевдокода в машинный код и переключают с помощью анализатора процесс эмуляции на эмулятор машинного кода; для каждого обнаруженного перехода производят эмуляцию выполнения машинного кода посредством эмулятора машинного кода и записывают результат в журнал работы эмуляторов, а при окончании процесса эмуляции выполнения машинного кода переключают с помощью анализатора процесс эмуляции на эмулятор сценариев; признают упомянутый исполняемый файл вредоносным при обнаружении вредоносного поведения в результате анализа журнала работы эмуляторов с помощью анализатора. 4 з.п. ф-лы, 4 ил.

Изобретение относится к программируемому логическому контроллеру, в частности к событийно-управляемому программируемому логическому контроллеру. Технический результат заключается в повышении скорости отклика на программное событие. Технический результат достигается за счет регистрации события, сохранения программной секции обработки события, соответствующей событию, обнаружения возникновения события, добавления события в очередь событий, извлечения события из очереди событий и исполнения программной секции обработки события, соответствующей извлеченному событию, причем регистрация события включает в себя регистрацию события, выбранного из предопределенного события пользователем, и регистрацию настраиваемого пользователем события, вводимого пользователем, а регистрация настраиваемого пользователем события включает в себя регистрацию логической комбинации множества предопределенных событий, включая упомянутое предопределенное событие. 2 н. и 12 з.п. ф-лы, 4 ил.

Изобретение относится к области выполнения кода интерпретатором. Техническим результатом является улучшение качества выполнения интерпретатором исследуемого программного кода путем интерпретации вспомогательного программного кода и обеспечение выполнения интерпретатором инструкций исследуемого программного кода, для которых у интерпретатора отсутствует правило интерпретации, без изменения самого интерпретатора путем интерпретации вспомогательного программного кода. Раскрыт реализуемый компьютером способ выполнения программного кода интерпретатором, в котором: а) последовательно выполняют каждую инструкцию исследуемого кода; б) когда интерпретатор переходит к выполнению инструкции исследуемого кода, содержащей неизвестный объект, для которого у интерпретатора отсутствует правило интерпретации, приостанавливают дальнейшее выполнение исследуемого кода, при этом объект является одним из: процедурой; экземпляром класса; методом или переменной экземпляра класса; сценарием; файлом; в) получают вспомогательный код, результат выполнения которого соответствует результату выполнения упомянутого неизвестного объекта, при этом вспомогательный код содержит известные объекты, для которых в интерпретаторе присутствует правило интерпретации; г) последовательно выполняют каждую инструкцию вспомогательного кода; и д) после завершения выполнения вспомогательного кода возобновляют выполнение исследуемого кода на шаге б) со следующей инструкции исследуемого кода, пока не будет выполнена последняя инструкция исследуемого кода. 7 з.п. ф-лы, 4 ил., 6 табл.

Изобретение относится к области защиты компьютерных систем от вредоносных программ. Техническим результатом является помещение компонента, обнаруживающего запуски процесса, за пределами соответствующей виртуальной машины на более высокий уровень привилегий процессора, чем уровень привилегий операционной системы, что обеспечивает возможность предотвращать сокрытие вредоносного программного обеспечения от компонентов защиты от вредоносных программ. Описанные системы и способы обеспечивают возможность защиты компьютерной системы от вредоносных программ, в частности от вирусов и руткитов. Антивредоносный компонент выполняется внутри виртуальной машины (VM), предоставленной гипервизором. Модуль самоанализа памяти выполняется вне виртуальной машины на уровне гипервизора привилегии процессора и защищает процесс, выполняющийся внутри виртуальной машины посредством защиты от записи страницы памяти соответствующего процесса. Посредством комбинирования антивредоносных компонентов, выполняющихся внутри и снаружи соответствующей VM, некоторые варианты осуществления изобретения могут использовать множество данных поведения, к которым имеют доступ компоненты внутри VM, с обеспечением при этом целостности этих компонент снаружи соответствующей VM. 3 н. и 18 з.п. ф-лы, 11 ил.

Изобретение относится к системам и способам обнаружения вредоносного кода в файле. Технический результат заключается в улучшении обнаружения вредоносного кода в файле в сравнении с существующими методами обнаружения вредоносного кода. Способ обнаружения вредоносного кода в файле включает: исполнение процесса, запущенного из файла, с использованием песочницы; перехват вызовов API-функций; последовательное внесение записей о перехваченных вызовах API-функций в первый журнал, сохранение дампа памяти процесса в базу дампов; повторение предыдущих операций до выполнения условия выхода; выявление в первом журнале по меньшей мере одной сигнатуры первого типа из числа сигнатур первого типа; после выявления сигнатуры первого типа передачу на исполнение в эмулятор по меньшей мере одного дампа памяти, сохраненного в базе дампов; во время исполнения процесса в эмуляторе последовательное внесение во второй журнал записей, содержащих информацию о вызове API-функции; определение вредоносного кода в файле при условии выявления во втором журнале по меньшей мере одной сигнатуры второго типа из базы данных сигнатур второго типа. 2 н. и 52 з.п. ф-лы, 4 ил.

Изобретение относится к области антивредоносных систем, использующих технологию аппаратной виртуализации. Техническим результатом является защита компьютерных систем от вредоносных программ. Раскрыта хостовая система, содержащая по меньшей мере один процессор, конфигурированный с возможностью выполнять: операционную систему, конфигурированную с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе, при этом виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы; и модуль подготовки защиты, конфигурированный с возможностью, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет этому критерию выбора, изменять выделение памяти целевого объекта, при этом изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта. 3 н. и 26 з.п. ф-лы, 10 ил.

Изобретение относится к области антивредоносных систем, использующих технологию аппаратной виртуализации. Техническим результатом является защита компьютерных систем от вредоносных программ. Раскрыта хостовая система, содержащая по меньшей мере один процессор, конфигурированный с возможностью выполнять: операционную систему, конфигурированную с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе, при этом виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы; и модуль подготовки защиты, конфигурированный с возможностью, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет этому критерию выбора, изменять выделение памяти целевого объекта, при этом изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта. 3 н. и 26 з.п. ф-лы, 10 ил.
Наверх