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

Иллюстрации

Показать все

Изобретение относится к способам и устройствам, предназначенным для мониторинга производительности многопоточного процессора, выполняющего команды из двух или более потоков одновременно. Техническим результатом является возможность определения потока и уровня привилегий, на котором происходит событие, характеризующее производительность процессора. Указанный результат достигается за счет того, что устройство для мониторинга производительности многопоточного процессора содержит процессор, приспособленный для выполнения множества потоков одновременно, совокупность программируемых счетчиков событий, регистры для управления работой счетчиков событий, ячейку доступа, предназначенную для предоставления доступа к счетчикам событий с целью определения текущего результата подсчета. События классифицируют в соответствии с идентификатором их потока и текущим уровнем привилегий потока. Каждое событие, которое классифицировано, подсчитывается с помощью одного из нескольких программируемых счетчиков событий, которые отслеживают все события процессора, мониторинг которых выполняется. 3 н. и 18 з.п.ф-лы, 1 табл., 2 ил.

Реферат

Область изобретения

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

Предшествующий и связанный уровень техники

В типичной процессорной системе выполняется одно или более приложений (т.е. выполняются процессором). Как известно в данной области техники, код приложения можно разделить на множество процессов, а каждый процесс можно разделить на множество потоков. Следовательно, поток может быть последовательностью команд, которые выполняются процессором для того, чтобы выполнить данную задачу (например, подпрограмму). Процессоры часто переключаются между потоками процесса и между процессами одного или более приложений (например, в многозадачной среде), но эти однопоточные процессоры в том виде, в каком они известны в настоящее время в данной области техники, в каждый момент времени способны поддерживать только один поток выполнения. Иначе говоря, однопоточные процессоры не могут одновременно выполнять команды двух или более потоков, и для использования множества потоков требуется, чтобы эти процессоры постоянно переключались туда и обратно между потоками. Однако недавние достижения в процессорной технологии дали возможность разработки многопоточных процессоров, которые могут поддерживать два или более потоков выполнения одновременно.

Перед разработкой одновременной обработки множества потоков разработчики архитектуры компьютеров могли бы дополнительно улучшить производительность своих вычислительных машин с помощью измерения и мониторинга различных параметров, которые влияют на производительность процессора. Например, с помощью измерения системной производительности вычислительной машины, когда она выполняет предназначенные для нее приложения, разработчик архитектуры компьютеров получает большее содействие в его или ее усилии спроектировать сбалансированную компьютерную систему. Мониторинг системной производительности обычно выполняется с использованием встроенных регистров производительности, которые могут постоянно отслеживать определенные события процессора, которые могут характеризовать производительность процессора. Например, в нескольких моделях процессора Pentium компании Intel в самой микросхеме процессора предоставлены следующие регистры производительности: 64-разрядный счетчик временных меток (СВМ, TSC), два программируемых счетчика событий (CTR0, CTR1) и регистр управления и выбора событий (РУВС, CESR). РУВС можно запрограммировать для того, чтобы дать возможность счетчикам событий (СТR0, CTR1) подсчитывать появление специфических событий или подсчитывать тактовые сигналы пока присутствует или отсутствует состояние события. Например, с помощью помещения соответствующих значений даты в РУВС первый счетчик CTR0 может быть установлен так, чтобы подсчитывать число раз, которое операция чтения данных выполняется процессором. Когда CTR0 установлен для выполнения этой задачи, каждый раз, когда процессор выполняет операцию чтения данных, CTR0 дает приращение своему внутреннему счету. Аналогично РУВС можно запрограммировать так, чтобы дать возможность второму счетчику CTR1 одновременно подсчитывать другое событие. К результатам подсчетов событий, которые в конечном счете сохраняют в регистрах счетчиков событий (CTR0, CTR1), пользователь может получить доступ для того, чтобы обнаруживать события, которые характеризуют производительность процессора. Имеются многочисленные события, которые могут постоянно отслеживаться с использованием этой системы, такие как неудачные попытки чтения/записи данных кэш-памяти, загрузка регистров сегментов и т. д.

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

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

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

Краткое изложение изобретения

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

Перечень фигур чертежей

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

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

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

Подробное описание

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

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

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

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

Пример архитектуры компьютера, включающей в себя вариант осуществления настоящего изобретения, изображен на фиг.1. Фиг.1 иллюстрирует интегральную схему, содержащую многопоточный процессор 10, имеющий центральный процессор (ЦП, CPU), который может выполнять последовательность команд. В интегральную схему включено устройство, предназначенное для мониторинга производительности многопоточного процессора, в частности, различных параметров и событий, связанных с нормальной работой процессора. В одном варианте осуществления изобретения многопоточный процессор 10 разделен на четыре локальные области, а каждая локальная область дополнительно разделена на локальные подобласти. Общее число подобластей в процессоре 10 равно двадцати четырем, а число подобластей в каждой области изменяется от трех до восьми. Каждая локальная подобласть содержит два регистра управления выбором событий (РУВС). Каждый РУВС может управлять обнаружением событий, сгенерированных в соответствующей ему локальной подобласти. Процессор 10 также содержит счетчики 70 событий, которые включают в себя в общей сложности восемнадцать 40-битовых программируемых счетчиков событий. Кроме того, каждая из четырех вышеупомянутых локальных областей содержит от четырех до шести счетчиков событий. Каждый РУВС процессора 10 может соединяться с отдельным счетчиком событий, если только этот счетчик событий содержится в той локальной области, которая соответствует этому РУВС. Например, РУВС 30 является одним из многих РУВС, используемых для управления частями счетчиков 70 событий. Как видно на фиг.1, РУВС 30 может соединяться с программируемым счетчиком 1 или программируемым счетчиком 2, так как они содержатся в той же самой локальной области, что и РУВС 30; однако РУВС 30 не может соединяться с программируемым счетчиком 18, так как он не содержится в одной с РУВС 30 локальной области.

РУВС 30 управляет выбором, маскированием и классификацией событий. РУВС 30 выполняет эти задачи посредством нескольких полей программируемых битов. Как проиллюстрировано на фиг.2, эти поля включают в себя 6-битовое поле выбора событий (ЕС), 16-битовое поле маски событий (ЕМ) и четыре дополнительных бита классификации событий (EQ) (TO_USR, TO_OS, T1_USR, T1_OS). Как упомянуто ранее, РУВС 30 может соединяться с несколькими программируемыми счетчиками событий, представленными счетчиками 70 событий. Содержимое каждого счетчика событий из состава счетчиков 70 событий может быть запрограммировано с помощью команды из процессора 10, и программирование счетчика событий будет инициировать его соединение с РУВС таким образом, что он может начать подсчет выбранного события. Следует понимать, что количество либо счетчиков событий, либо регистров РУВС может быть другим в альтернативных вариантах осуществления без последствий для практической реализации настоящего изобретения.

Мониторинг событий начинается, когда сигналы событий передаются детекторами событий, содержащимися в многопоточном процессоре 10. Эти сигналы событий включают в себя такие события как обращение к кэш-памяти, тактовые импульсы, взаимные блокировки генерирования адресов. В одном варианте осуществления изобретения процессор 10 содержит от сорока до пятидесяти детекторов событий, и каждый детектор может обнаруживать появление конкретного события в течение одновременного выполнения одного или более потоков (Т0, Т1, ..., ТХ). При обнаружении событий будет запускаться передача сигналов 20 событий из процессора 10 в набор из двух мультиплексоров, соединенных последовательно (МП 40 и МП 50). Первый этап обнаружения событий происходит, когда поле ES РУВС 30 инструктирует МП 40 выбрать класс событий из сигналов 20 событий, дополнительно мультиплексируемых с помощью МП 50. Затем поле EM РУВС 30 инструктирует МП 50 выбрать подкласс маскируемых событий, оставляя, в конечном счете, единый сигнал событий, передаваемый в логический блок 60.

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

После выбора события и маскирования событие должно быть классифицировано при дополнительном множестве условий перед тем, как оно будет подсчитано счетчиком событий. Классификация события происходит в логическом блоке 60 и управляется с помощью набора значений в четырех битах EQ (T0_USR, T0_OS, T1_USR, T1_OS) РУВС 30. Функции этих битов изображены в таблице 1 ниже. Эти биты установлены в определенном порядке, чтобы классифицировать событие с помощью ИД потока и текущего уровня привилегий (ТУП) потока. ИД потока служит индикатором источника события, т.е. потока, в котором произошло событие. ТУП потока служит индикатором уровня привилегий, на котором работал поток в момент, когда произошло событие. ТУП, равный 0, служит индикатором того, что поток выполнял команду уровня приложения, а ТУП, равный 1, 2 или 3, служит индикатором того, что поток выполнял команду уровня супервизора. Например, классификация ТУП делает возможным проведение различия между частотами неуспешных попыток обращения к кэш-памяти системного уровня (OS) и частотами неуспешных попыток обращения к кэш-памяти уровня пользователя (USR).

ТАБЛИЦА 1
0Т1_USRесли (поток=T1) и (T1_CPL=1|2|3), вывести результат подсчета события
1T1_OSесли (поток=T1) и (T1_CPL=0), вывести результат подсчета события
2TO_USRесли (поток=T0) и (T0_CPL=1|2|3), вывести результат подсчета события
3TO_OSесли (поток=T0) и (T0_CPL=0), вывести результат подсчета события

Будет понятно, что использование настоящего изобретения не ограничивается многопоточными процессорами, содержащими только два потока (Т0 и Т1). Настоящее изобретение может быть использовано с процессорами, использующими множество потоков, и это достигается с помощью расширения числа битов EQ, используемых в регистрах управления выбором событий.

Следует оценить тот факт, что с помощью объединения классификации событий с помощью ИД потока с классификацией событий с помощью текущего уровня привилегий (ТУП) потока обеспечивается более точная степень классификации чем была бы доступна, если вместо двух наборов битов были бы определены: один набор для классификации с помощью ИД потока и один набор классификации с помощью ТУП (например, четыре бита Т0, Т1, OS и USR). Например, нет способа получения результата от задания битов T0_USR и T1_OS, используя биты T0, Т1, OS и USR отдельно.

Логический блок 60 классифицирует событие с помощью логической проверки его ИД потока и ТУП потока в отношении условий, заданных с помощью битов EQ. Например, если заданы как Т0_OS, так и T1_OS, то только события, сгенерированные Т0 (потоком 0) или Т1 (потоком 1), при условии, что соответствующие им значения ТУП равны нулю, будут обнаружены и о них будет сообщено счетчикам 70 событий. Аналогично, если заданы только биты Т0_USR и T0_OS, то только о событиях, сгенерированных Т0 на любом уровне привилегий, будет сообщено счетчикам 70 событий. Если заданы все из вышеупомянутых битов, то, по существу, не выполняется никакая классификация относительно ИД или ТУП потока и обо всех обнаруженных событиях будет сообщено счетчикам 70 событий. Любое событие, которое не классифицировано логическим блоком 60, отбрасывается и никогда не подсчитывается.

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

Устройство мониторинга производительности дополнительно содержит счетчик 90 временных меток, который получает приращение на каждом тактовом цикле многопоточного процессора 10. В одном варианте осуществления счетчик 90 временных меток является выделенным автономным 64-битовым счетчиком, который продолжает подсчет до тех пор, пока не будет специально сброшен, предварительно установлен или выключен процессором 10. Один способ, с помощью которого можно осуществить доступ к счетчикам 70 событий, состоит в использовании команды считывания временной метки счетчика уровня пользователя. Эта команда предоставляется для того, чтобы дать возможность программе любого уровня привилегий сделать выборку значения счетчика событий. Это происходит без нарушения счета или работы процессора. Операционная система может также заблокировать отличительный признак, связанный со счетчиком временной метки, в защищенных средах.

Программа режима супервизора может быть использована для осуществления доступа к содержимому любого из восемнадцати счетчиков событий из состава счетчиков 70 событий и выборки этого содержимого в любой момент, используя команду считывания из регистра конкретной модели (RDMSR), предоставленную в одном варианте осуществления. Программа режима супервизора может также сбрасывать или предварительно устанавливать счетчик событий, используя команду записи, в регистр конкретной модели (WRMSR). Либо команда RDMSR, либо WRMSR копирует содержимое конкретных счетчиков в пару регистров. Каждый из этих счетчиков событий может быть также запрограммирован для подсчета любого события из заранее определенного списка событий. События, подсчитываемые счетчиками 70 событий, выбираются с помощью программирования одного из РУВС, такого как РУВС 30. Каждый счетчик событий управляется независимо одним из сорока восьми регистров управления событиями. Это означает, что помимо программирования каждый счетчик событий по фиг.1 может быть либо включен, либо выключен одновременно с другими счетчиками. Этот отличительный признак дает возможность счетчикам событий работать во взаимодействии друг с другом, тем самым поддерживая синхронное подсчитывание как функцию времени. Следует оценить тот факт, что этот отличительный признак является критичным в многопоточных процессорах, где множество потоков работает одновременно и, следовательно, может одновременно генерировать события. Кроме того, так как мониторинг конкретных аспектов производительности процессора иногда требует вычисления конкретных частот (например, частот неуспешных попыток обращения к кэш-памяти, частот попыток обращения, тактовых импульсов на команду и т. д.), оказывается критичным, чтобы сохранялась синхронная работа счетчиков событий.

В любой момент времени в течение процесса мониторинга системное программное обеспечение может программировать/делать выборки содержимого каждого из регистров счетчиков 70 событий посредством выполнения одной команды: команды WRMSR для программирования и команды RDMSR для выборки. Акт считывания счетчиков не должен нарушать работу самих счетчиков; то есть доступ к содержимому регистров счетчиков 70 событий может осуществляться в неагрессивной манере с помощью использования команды RDMSR. Кроме того, счетчики 70 событий являются неагрессивными по отношению к многопоточному процессору 10; то есть подсчет определенных событий не изменяет поведения или не замедляет работу процессора.

В качестве примера универсальности настоящего изобретения рассмотрим пример ситуации, в которой три потока процессора работают одновременно, и желательно отслеживать частоты неуспешных попыток обращения к кэш-памяти на уровне пользователя со стороны первого потока по сравнению с частотами неуспешных попыток обращения к кэш-памяти на уровне пользователя со стороны как второго, так и третьего потоков. Для этой ситуации один счетчик события может быть запрограммирован для подсчета операций чтения/записи, которые происходят в первом потоке, работающем при ТУП, равном 1, 2 или 3. Другой счетчик может быть запрограммирован для подсчета неудачных попыток. Вместе эти два счетчика событий могут быть использованы для получения частоты неуспешных попыток обращения к кэш-памяти в первом потоке (число считываний/записей деленное на число неудачных попыток). Аналогично этот способ может быть применен ко второму и третьему потокам, и настоящее изобретение дает возможность подсчитывать события, генерируемые всеми тремя потоками, работающими одновременно. В общем, отличительный признак, связанный с монитором производительности, может быть использован для того, чтобы отслеживать несколько ключевых событий, которые затем можно объединить для того, чтобы сгенерировать статистику работы процессора.

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

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

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

3. Компьютерная система по п.2, в которой каждый регистр содержит первое поле битов, предназначенное для выбора одного или более подсчитываемых событий.

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

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

6. Компьютерная система по п.5, в которой упомянутое третье поле битов позволяет дополнительно выбирать, из какого потока из упомянутого множества потоков должно подсчитываться событие в соответствии с текущим уровнем привилегий (ТУП) каждого потока.

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

8. Компьютерная система по п.7, в которой упомянутые счетчики могут быть предварительно установлены в определенное состояние.

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

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

11. Устройство по п.10, в котором упомянутое средство подсчета содержит множество программируемых счетчиков.

12. Устройство по п.11, в котором упомянутое средство управления содержит один или более регистров, причем каждый регистр включает в себя первое поле битов, предназначенное для выбора одного или более подсчитываемых событий.

13. Устройство по п.12, в котором каждый регистр дополнительно содержит второе поле битов, предназначенное для выбора одного или более маскируемых и неподсчитываемых событий.

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

15. Устройство по п.14, в котором упомянутое третье поле битов может дополнительно выбирать, из какого потока из упомянутого множества потоков должно подсчитываться событие в соответствии с текущим уровнем привилегий (ТУП) каждого потока.

16. Устройство по п.15, в котором упомянутое средство доступа содержит средство команд в упомянутом процессоре, предназначенное для считывания результата подсчета из каждого из упомянутых счетчиков.

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

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

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

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

21. Способ по п.20, в котором упомянутая классификация дополнительно включает в себя этап, на котором требуют, чтобы упомянутое множество событий имело заранее выбранный текущий уровень привилегий (ТУП) потока.