Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений



Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений
Управление в режиме низких привилегий работой средства сбора сведений о ходе вычислений

 


Владельцы патента RU 2585969:

ИНТЕРНЭШНЛ БИЗНЕС МАШИНЗ КОРПОРЕЙШН (US)

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

 

Область техники, к которой относится изобретение

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

Уровень техники

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

Раскрытие изобретения

Техническая проблема

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

Решение технической проблемы

Варианты осуществления содержат компьютерный программный продукт, способ и систему для активации и деактивации в процессоре сбора сведений о ходе вычислений. Для выполнения процессор производит выборку команды в режиме низких привилегий. Процессор определяет, что средство сбора сведений о ходе вычислений разрешает выполнение команды в режиме низких привилегий и что корректны значения управляющих параметров, связанных со средством сбора сведений о ходе вычислений. Средство сбора сведений о ходе вычислений деактивируется на основе команды RIOFF (от англ. Run-time Instrumentation Facility OFF - отключение средства сбора сведений о ходе вычислений). Деактивация содержит обновление значения разряда в слове состояния программы (ССП) процессора для указания того, что процессор не должен собирать данные для средства сбора сведений о ходе вычислений. Средство сбора сведений о ходе вычислений активируется на основе команды RION (от англ. Run-time Instrumentation Facility ON - включение средства сбора сведений о ходе вычислений). Активация содержит обновление значения разряда в ССП для указания того, что процессор должен собирать данные для средства сбора сведений о ходе вычислений.

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

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

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

На чертежах показано:

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

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

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

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

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

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

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

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

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

на фиг. 6 - схема фрагмента управляющего блока управляющих параметров средства сбора сведений о ходе вычислений (от англ.: Run-time-instrumentation Controls Control Block, аббревиатура RICCB) согласно варианту осуществления изобретения, содержащая управляющие параметры, значения которых могут устанавливаться в привилегированном режиме,

на фиг. 7 - схема фрагмента блока параметров RICCB согласно варианту осуществления изобретения в случае, когда значение разряда “K” режима частичных привилегий установлено равным единице,

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

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

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

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

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

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

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

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

Осуществление изобретения

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

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

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

Вариант осуществления настоящего изобретения представляет собой основанное на аппаратном обеспечении средство сбора сведений о ходе вычислений для сред выполнения задач. В данном случае термин “среда выполнения задач” относится к среде, которая инкапсулирует состояние и управляет ресурсами, используемыми для выполнения программы или приложения (например, виртуальная машина Java®, операционная система, программное обеспечение промежуточного слоя и т.д.). Варианты осуществления средства сбора сведений о ходе вычислений позволяют некоторой программе собирать информацию о ходе выполнения команд программного обеспечения, в том числе собирать данные центрального процессорного устройства (ЦПУ). Собранная информация позволяет среде выполнения задач отслеживать внутренние процессы, связанные с исполняемым программным обеспечением. Варианты осуществления средства сбора сведений о ходе вычислений содержат аппаратное средство для сбора сведений о последовательностях событий (например, переходы при ветвлениях, значения регистров и т.д.) в накопительном буфере. Содержимое накопительного буфера (или части накопительного буфера, содержащей наиболее свежие записи) копируется в программный буфер в пространстве адресов приложения (например, в пространстве адресов виртуальной машины Java) при возникновении программируемого набора типовых инициирующих событий, таких как (но не ограничиваясь): директива программного обеспечения в форме команды, вставленной в поток команд; завершение выполнения некоторого числа команд; окончание заданного интервала времени после последней выборки; заданное событие в аппаратном обеспечении, такое как возникновение промаха кэш-памяти данных или промаха кэш-памяти команд (т.е. отсутствие требуемых данных или команд в кэш-памяти).

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

На фиг. 1А показаны характерные компоненты хост-компьютерной системы 50 согласно варианту осуществления изобретения. В компьютерной системе могут также использоваться другие варианты конфигурации компонентов. Пример хост-компьютерной системы 50 содержит один или более процессоров 1, связанных с главным запоминающим устройством 2 компьютера (компьютерной памятью), а также через интерфейсы ввода-вывода с запоминающими устройствами 11 и сетями 10 для обмена информацией с другими компьютерами или сетями хранения данных и т.п. Процессор 1 совместим с архитектурой, имеющей собственный набор команд и собственную функциональность. Процессор 1 может использовать динамическую трансляцию адресов для преобразования программных адресов (виртуальных адресов) в реальные адреса запоминающего устройства. Как правило, средство 3 динамической трансляции адресов (СДТА) содержит буфер 7 быстрого преобразования адреса (БПА) для кэширования преобразований, благодаря чему последние обращения к запоминающему устройству 2 не приводят к задержке, вызываемой трансляцией адреса. Как правило, между запоминающим устройством 2 и процессором 1 размещается кэш-память (быстродействующее буферное запоминающее устройство) 9. Кэш-память 9 может быть организована по иерархическому принципу, т.е. содержать больший объем кэш-памяти, доступный для двух и более ЦПУ, и также меньшие, более быстродействующие (низкоуровневые) объемы кэш-памяти, размещенные между большим объемом кэш-памяти и каждым ЦПУ. В некоторых вариантах осуществления кэш-память низкого уровня разделяется на низкоуровневую кэш-память для выборки команд и низкоуровневую кэш-память для обращения к данным. Согласно варианту осуществления изобретения, команда выбирается из запоминающего устройства 2 устройством 4 выборки команд через кэш-память 9. Команда декодируется в устройстве 6 декодирования команд и направляется (в некоторых вариантах осуществления - совместно с другими командами) в устройства 8 выполнения команд. Как правило, используются различные типы устройств 8 выполнения команд, например, арифметическое выполняющее устройство, устройство выполнения команд с плавающей запятой и устройство выполнения команд ветвления. Команда выполняется устройством 8 выполнения команд, обращаясь при необходимости к операндам, находящимся в определяемых командой регистрах или в запоминающем устройстве 2 компьютера. Если требуется доступ к операнду (загруженному или хранящемуся) из запоминающего устройства 2 компьютера, то доступ контролируется устройством 5 загрузки-хранения под управлением выполняемой команды. Команды могут выполняться в схемах аппаратного обеспечения или во внутреннем микрокоде (входящем в состав встроенного программного обеспечения) или комбинацией указанных способов.

На фиг. 1Б показана схема хост-компьютерной системы 21 с эмуляцией, которая эмулирует хост-компьютерную систему, построенную по хост-архитектуре, такую как хост-компьютерная система 50, схема которой показана на фиг. 1А. В хост-компьютерной системе 21 с эмуляцией хост-процессор (ЦПУ) 1 является эмулируемым хост-процессором 29 (или виртуальным хост-процессором), в его состав входит собственный процессор 27, построенный по архитектуре с собственным набором команд, отличной от архитектуры процессора 1 хост-компьютерной системы 50. Эмулируемая хост-компьютерная система 21 обладает запоминающим устройством 22, доступным собственному процессору 27. Согласно варианту осуществления изобретения, запоминающее устройство 22 разделено на части: часть, служащую запоминающим устройством 2 компьютера, и часть, служащую запоминающим устройством 23 процедур эмуляции. В соответствии с архитектурой хост-компьютера, запоминающее устройство 2 компьютера доступно программам эмулируемой хост-компьютерной системы 21. Собственный процессор 27 выполняет собственные команды из набора команд собственной архитектуры, отличной от архитектуры эмулируемого процессора 29, причем собственные команды поступают из запоминающего устройства 23 процедур эмуляции. Собственный процессор 27 может обратиться к хост-команде из состава программы, располагающейся в запоминающем устройстве 2 компьютера, для ее исполнения путем выполнения одной или более команд, получаемых подряд, а также с использованием процедуры доступа-декодирования, которая может декодировать хост-команду (хост-команды), к которым происходит обращение, для определения процедуры в рамках собственной архитектуры для выполнения хост-команды и эмулирования функций хост-команды, к которой происходит обращение. Собственными процедурами могут эмулироваться другие возможности, определенные для архитектуры хост-компьютерной системы 50, например, такие как регистры общего назначения, управляющие регистры, динамическая трансляция адресов, поддержка подсистемы ввода-вывода и кэш-память процессора. Для повышения производительности процедуры эмуляции могут также пользоваться преимуществами функций, предоставляемыми хост-процессором 27, такими как регистры общего назначения и динамическая трансляция виртуальных адресов. Для содействия процессору 27 в эмуляции функций хост-компьютерной системы 50 могут предоставляться специальные аппаратные и разгружающие вычислительные ядра.

Команды, присущие архитектуре компьютеров-мейнфреймов, часто используются программистами (в настоящее время, как правило, пользующимися языком программирования “C”) через приложения-компиляторы. Указанные команды, хранящиеся в среде хранения информации, могут выполняться в собственной вычислительной среде на сервере, построенном по архитектуре корпорации IBM® z/Architecture, или же на вычислительных машинах, построенных по другим архитектурам. Эти команды могут эмулироваться на существующих и на будущих серверах-мейнфреймах корпорации IBM и на других вычислительных машинах IBM (например, на серверах типа pSeries® и xSystem®). Указанные команды могут выполняться на вычислительных машинах, работающих под управлением операционной системы Linux, и на обширном множестве вычислительных машин, использующих аппаратное обеспечение производства предприятий IBM®, Intel®, AMD™, Sun Microsystems и др. Помимо указанного аппаратного обеспечения с архитектурой z/Architecture, могут применяться вычислительные машины на основе операционной системы Linux, а также вычислительные машины с эмуляторами Hercules (программный эмулятор мейнфреймов IBM и совместимых), UMX, FSI (от англ. - Fundamental Software, Inc.), PSI (от англ. - Platform Solutions, Inc.), при этом выполнение обычно осуществляется в режиме эмуляции. В режиме эмуляции программа-эмулятор выполняется собственным (физическим) процессором вычислительной системы и имитирует архитектуру эмулируемого процессора.

Один или более компонентов эмулируемой хост-компьютерной системы 21 подробно описан в публикации IBM “z/Architecture Principles of Operation” (от англ. - “Принцип действия архитектуры z/Architecture”, публикация IBM № SA22-7832-08, 9-е издание, август 2010 г.), которая в качестве ссылки включена в настоящую заявку. IBM является зарегистрированным товарным знаком корпорации International Business Machines Corporation, Армонк, штат Нью-Йорк, США. Прочие наименования, используемые в настоящей заявке, могут также являться зарегистрированными или незарегистрированными товарными знаками или наименованиями товаров корпорации International Business Machines Corporation или других компаний.

Как правило, собственный процессор 27 выполняет программное обеспечение-эмулятор, хранящееся в запоминающем устройстве 23 процедур эмуляции. В состав указанного программного обеспечения-эмулятора входят программы из постоянного запоминающего устройства (ПЗУ) или собственная операционная система, необходимые для имитации эмулируемого процессора. Для архитектуры эмулируемого процессора программное обеспечение-эмулятор отвечает за выборку и выполнение команд. Программное обеспечение-эмулятор поддерживает эмулируемый программный счетчик для отслеживания границ команд. Программное обеспечение-эмулятор может в один момент времени выбирать одну или более команд в формате эмулируемой вычислительной машины и преобразовывать указанные одну или более команд в соответствующую группу команд в собственном формате хост-вычислительной машины для выполнения собственным процессором 27. Указанные преобразованные команды могут кэшироваться, благодаря чему преобразование может выполняться более быстро. Программное обеспечение-эмулятор поддерживает правила архитектуры эмулируемой процессорной архитектуры, чтобы обеспечить корректность выполнения операционной системы и приложений, предназначенных для эмулируемого процессора. Более того, программное обеспечение-эмулятор предоставляет вычислительные ресурсы, понятные для эмулируемой процессорной архитектуры, в том числе (но не ограничиваясь) управляющие регистры, регистры общего назначения, регистры с плавающей запятой, функцию динамической трансляции адресов (включая, например, таблицы сегментов и таблицы страниц), механизмы прерываний, механизмы переключения задач, часы времени суток, интерфейсы к подсистемам ввода-вывода, благодаря чему операционная система или прикладная программа, разработанные для выполнения на эмулируемом процессоре 29, могут быть выполнены на собственном (физическом) процессоре 27, оснащенном программным обеспечением-эмулятором.

Конкретная эмулируемая команда декодируется, и для выполнения функции конкретной отдельной команды вызывается соответствующая подпрограмма. Для имитации эмулируемого 29 процессора применяется функция программного обеспечения-эмулятора, например, в виде подпрограммы, написанной на языке программирования “C”, либо программа-драйвер, либо используется иной способ осуществления драйвера конкретного аппаратного обеспечения, о чем специалистам в данной области станет ясно после изучения описания предпочтительного варианта осуществления.

Согласно варианту осуществления изобретения, изобретение может быть осуществлено программным обеспечением (иногда называемым лицензионным внутренним кодом, содержимым ПЗУ, микрокодом, милликодом, пикокодом и т.п., причем каждый из терминов может относиться к одному или более аспектам настоящего изобретения). На фиг. 1А процессор 1 (ЦПУ) хост-компьютерной системы 50 может обращаться к коду программного обеспечения, содержащему настоящее изобретение и хранящемуся в запоминающем устройстве, таком как долговременное запоминающее устройство, привод CD-ROM (от англ. Compact Disc Read Only Memory - постоянное запоминающее устройство на компакт-диске), привод ленточного накопителя, накопитель на жестких дисках. Программный код может располагаться на любой из множества известных машиночитаемых сред, предназначенных для использования в системе обработки данных, таких как гибкий диск, накопитель на жестких дисках или CD-ROM. Код может распространяться на подобной машиночитаемой среде или поставляться пользователям из запоминающего устройства 2 компьютера или из запоминающего устройства одного компьютера через сеть 10 другим компьютерным системам для их пользователей.

Согласно другому варианту осуществления, программный код может находиться в запоминающем устройстве 2 компьютера, и доступ процессора 1 к нему может осуществляться по шине процессора (на чертеже шина процессора не показана). Подобный программный код содержит операционную систему, которая управляет функционированием и взаимодействием различных компонентов компьютера и одной или более прикладных программ. Программный код обычно передается из запоминающего устройства 11 большой емкости в запоминающее устройство 2 компьютера, из которого код доступен процессору 1 для обработки. Приемы и способы размещения кода программного обеспечения в пространстве памяти запоминающего устройства, на физической машиночитаемой среде и/или передача кода программного обеспечения через сети передачи данных достаточно хорошо известны и в настоящей заявке далее обсуждаться не будут. Программный код, созданный и размещенный на материальном носителе, в том числе (но не ограничиваясь) на электронных модулях памяти [в оперативном запоминающем устройстве (ОЗУ)], запоминающих устройствах флеш-памяти, CD-ROM, DVD-ROM (от англ. Digital Video Disc Read-Only Memory - постоянное запоминающее устройство на цифровом видеодиске), магнитной ленте и т.п. часто называют компьютерным программным продуктом. Информация со среды-носителя компьютерного программного продукта обычно считывается схемой обработки предпочтительно в компьютерной системе с целью выполнения программного кода схемой обработки.

На фиг. 1В показана схема примера рабочей станции или аппаратной части сервера, в которых может быть осуществлено настоящее изобретения. На фиг. 1В система 100 содержит типичную основную компьютерную систему 101, например, персональный компьютер, рабочую станцию или сервер, в состав которой, в свою очередь, могут входить периферийные устройства. Основная компьютерная система 101 содержит один или более процессоров 106 и шину передачи данных (на чертеже не показана), используемую для подключения и осуществления соединения между одним или более процессорами 106 и другими компонентами основной компьютерной системы 101 по хорошо известной методике. Шина соединяет процессор 106 с запоминающим устройством 105 и запоминающим устройством 107 длительного хранения, которое может содержать, например, дисковый накопитель (в том числе, например, любые магнитные среды хранения данных, CD-ROM, DVD-ROM или устройства флеш-памяти) или ленточный накопитель. Основная компьютерная система 101 может также содержать адаптер интерфейса пользователя, который соединяет один или более процессоров 106 через шину с одним или более интерфейсными устройствами, такими как клавиатура 104, мышь 103, принтер и/или сканер 110 и/или с устройствами интерфейса пользователя других типов, такими как сенсорный экран, устройство цифрового координатного ввода планшетного типа и т.п. Шина также обеспечивает подключение устройства 102 отображения, такого как жидкокристаллический экран или монитор, к одному или более процессорам 106 через адаптер дисплея.

Основная компьютерная система 101 может обмениваться данными с другими компьютерами или сетями компьютеров с помощью сетевого адаптера, способного осуществлять соединение 108 с сетью 109 передачи данных. Примерами сетевых адаптеров являются адаптеры сетей типа Token Ring (от англ. - маркерное кольцо) и Ethernet, а также модемы. Согласно другому варианту осуществления, основная компьютерная система 101 может обмениваться данными с использованием беспроводного интерфейса, такого как адаптер CDPD (от англ. Cellular Digital Packet Data - цифровая пакетная передача данных по сети сотовой связи). Основная компьютерная система 101 может быть соединена с другими компьютерами в локальную вычислительную сеть (ЛВС) или в глобальную вычислительную сеть, либо система 101 может выступать в качестве клиента в системе клиент-сервер вместе с другим компьютером и т.д.

На фиг. 2 показана схема сети 200 обработки данных, в которой может быть осуществлено настоящее изобретение. Сеть 200 обработки данных может содержать набор индивидуальных сетей, таких как беспроводные и проводные сети, в состав каждой из которых может входить множество индивидуальных рабочих станций 201, 202, 203, 204 и/или основная компьютерная система 101 (см. фиг. 1В). Кроме того, специалисты в данной области техники должны понимать, что может быть задействована одна или более ЛВС, причем ЛВС может содержать набор рабочих станций, соединенных с хост-процессором.

Код 111 программного обеспечения может располагаться в запоминающем устройстве 105, и процессор 106 может обращаться к этому коду по шине процессора. Такой код программного обеспечения содержит операционную систему, которая управляет функционированием и взаимодействием различных компонентов компьютера и одной или более прикладных программ 112. Код программного обеспечения обычно передается из запоминающего устройства 107 длительного хранения в быстродействующее запоминающее устройство 105, из которого этот код доступен процессору 106 для обработки. Приемы и способы размещения кода программного обеспечения в пространстве памяти запоминающего устройства, на физической машиночитаемой среде и/или передачи кода программного обеспечения через сети передачи данных достаточно хорошо известны и в настоящей заявке далее обсуждаться не будут. Программный код, созданный и размещенный на материальном носителе, в том числе (но не ограничиваясь) на электронных модулях памяти (ОЗУ), запоминающих устройствах флеш-памяти, CD-ROM, DVD-ROM, магнитной ленте и т.п., часто называют компьютерным программным продуктом. Информация со среды-носителя компьютерного программного продукта обычно считывается схемой обработки, предпочтительно в компьютерной системе, с целью выполнения схемой обработки.

Процессору наиболее доступна кэш-память низшего уровня (т.е. первого уровня; обозначение первого уровня - L1), которая обычно обладает наибольшим быстродействием н меньшим объемом по сравнению с процессорной кэш-памятью других уровней. Уровень основного запоминающего устройства считается наивысшим (уровень 3, обозначение L3, если всего предусмотрено три уровня). Кэш-память низшего уровня часто разделяется на кэш-память команд Ι-кэш (от англ. Instructions cache - кэш-память команд) для хранения предназначенных для исполнения команд и кэш-память данных D-кэш (от англ. Data cache - кэш-память данных), предназначенную для хранения операндов.

На фиг. 2 сети могут также содержать компьютеры-мейнфреймы или серверы, такие как компьютер-шлюз (клиентский сервер) 206 или сервер приложений (удаленный сервер) 208, который может обращаться к хранилищу данных и к которому может также осуществляться доступ непосредственно с рабочей станции 205. Компьютер-шлюз 206 служит точкой доступа в каждую индивидуальную сеть 207. Шлюз требуется при переходе от одного сетевого протокола на другой. Компьютер-шлюз 206 предпочтительно может быть подключен к другой сети (например, к сети 207 Интернет) с помощью канала передачи данных. Компьютер-шлюз 206 также может быть непосредственно соединен с одной или более рабочими станциями 101, 201, 202, 203 и 204 с использованием канала передачи данных. Компьютер-шлюз может быть реализован на основе сервера IBM eServer™ zSeries® z9®, предлагаемого корпорацией International Business Machines Corporation.

Согласно варианту осуществления изобретения, процессор 106 основной компьютерной системы 101 может обращаться к коду программного обеспечения, в котором может быть осуществлено настоящее изобретение и который располагается на запоминающем устройстве долговременного хранения, таком как запоминающее устройство 107 долговременного хранения, схема которого показана на фиг. 1В. Код программного обеспечения для его использования системой обработки данных может располагаться на любой из множества известных машиночитаемых сред, таких как гибкий диск, накопитель на жестких дисках или CD-ROM. Код может предоставляться на такой машиночитаемой среде или может предоставляться пользователям 210 и 211 компьютерных систем по сети передачи данных из запоминающих устройств другой компьютерной системы.

На фиг. 3 показан пример осуществления процессора 106. Как правило, для буферизации блоков информации запоминающего устройства используется одноуровневая или многоуровневая кэш-память 303, что позволяет увеличить производительность процессора 106. Кэш-память 303 представляет собой быстродействующее буферное запоминающее устройство, хранящее строки данных основного запоминающего устройства, которые, вероятно, должны использоваться в будущем. Как правило, длина строк данных в кэш-памяти составляет 64, 128 или 256 байтов. Согласно варианту осуществления изобретения, часто применяются отдельные функциональные узлы кэш-памяти для буферизации команд и данных. Для поддержания когерентности содержимого кэш-памяти (т.е. для синхронизации копий строк данных в основном запоминающем устройстве и в кэш-памяти) часто применяются различные хорошо известные снуп-алгоритмы (от англ. Snoop algorithm, специальный алгоритм поиска необходимых данных в кэш-памяти). Главное запоминающее устройство, такое как запоминающее устройство 105 вычислительной системы, часто также рассматривается как кэш-память. В вычислительной системе с четырьмя уровнями кэш-памяти 303 запоминающее устройство 105 иногда рассматривается как кэш-память пятого уровня (L5), поскольку оно обычно обладает более высоким быстродействием по сравнению с быстродействием большинства доступных вычислительной системе энергонезависимых запоминающих устройств (запоминающих устройств с прямым доступом, ленточных запоминающих устройств с последовательным доступом и т.п.) и хранит только часть данных указанных устройств. Основное запоминающее устройство 105 “кэширует” (буферизирует) страницы данных, которые загружаются и выгружаются из него операционной системой.

Программный счетчик (счетчик команд) 311 отслеживает адрес текущей подлежащей исполнению команды. Программный счетчик в процессоре, построенном по архитектуре z/Architecture, является 64-разрядным, его длина может быть сокращена до 31 или до 24 разрядов для поддержки предыдущих ограничений на длину адреса. Как правило, программный счетчик реализован в слове состояния программы (ССП) компьютера, так что при переключении задач его содержимое сохраняется. Так, выполнение программы при некотором значении программного счетчика может быть прервано, например, операционной системой (текущий “контекст” переключается от окружения программы к окружению операционной системы). В то время, пока программа неактивна, значение счетчика программ сохраняется в ССП программы, и при выполнении задачи операционной системы используется счетчик программ ССП операционной системы. Согласно варианту осуществления изобретения, программный счетчик увеличивается на величину, равную длине в байтах исполняемой в данный момент команды. Команды типа RISC (от англ. Reduced Instruction Set Computing - вычисления с сокращенным набором команд), как правило, имеют фиксированную длину, в то время как команды типа CISC (от англ. Complex Instruction Set Computing - вычисления со сложным набором команд), как правило, имеют переменную длину. Команды в архитектуре IBM z/Architecture относятся к типу CISC, их длина составляет два, четыре или шесть байтов. Значение в программном счетчике 311 изменяется либо операцией переключения задач, либо при выполнении операции ветвления, например, по команде ветвления. При операции переключения задачи текущее значение программного счетчика сохраняется в ССП вместе с другой информацией о состоянии выполнявшейся программы (такой как коды состояния), после чего загружается новое значение программного счетчика, указывающее на команду нового программного модуля, подлежащего исполнению. Операция ветвления, используемая в программе при принятии решений или выполнении циклов, исполняется путем загрузки в программный счетчик 311 результата команды ветвления.

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

Затем выбранные команды выполняются процессором 106. Согласно варианту осуществления изобретения, выбранная команда (команды) передаются на устройство 306 декодирования-диспетчеризации устройства 305 выборки команд. Устройство декодирования-диспетчеризации 306 декодирует команду (команды) и передает информацию о декодированной команде (командах) на соответствующие устройства 307, 308 и/или 310. Исполнительный блок 307 принимает информацию о декодированных арифметических операциях от устройства 305 выборки команд и выполняет арифметические операции над операндами согласно коду операции команды. Операнды передаются в исполнительное устройство 307 либо из запоминающего устройства 105, либо из собственных регистров 309, либо извлекаются из внутреннего поля выполняемой команды. Результаты выполнения команды, требующие сохранения, сохраняются либо в запоминающем устройстве 105, либо в собственных регистрах 309, либо в ином аппаратном обеспечении вычислительной системы (например, в управляющих регистрах, регистрах ССП и т.п.).

Как правило, процессор 106 снабжен одним или более исполнительными устройствами 307, 308 и 310, предназначенными для выполнения указанной командой функции. На схеме, показанной на фиг. 4А, исполнительное устройство 307 может обмениваться информацией с собственными регистрами 309 общего назначения, устройством 306 декодирования-диспетчеризации, устройством 310 загрузки-хранения и другими устройствами 401 процессора с помощью интерфейсной логики 407. В исполнительном устройстве 307 могут применяться различные схемы 403, 404 и 405 регистров для временного хранения информации, предназначенной для обработки арифметическологическим устройством (АЛУ) 402. АЛУ 402 выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические операции, такие как конъюнкция, дизъюнкция, сложение по модулю 2, сдвиг, циклический сдвиг. Согласно варианту осуществления изобретения, АЛУ поддерживает специализированные операции, зависящие от особенностей архитектуры. Прочие схемы могут реализовывать другие предусмотренные архитектурой процессора средства, в том числе например, работу с кодами условий и логику поддержки восстановления. Как правило, результат операции, выполненной АЛУ, сохраняется в схеме 406 выходного регистра, которая может передавать указанный результат набору других средств обработки. Существует множество других вариантов осуществления схем процессорных устройств, и настоящее описание предназначено исключительно для пояснения одного из вариантов осуществления.

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

Исполнительное устройство 307 выполняет арифметическое сложение двух операндов и сохраняет результат операции в третьем операнде, причем указанный третий операнд может располагаться в третьем регистре или в одном из регистров, в которых располагались исходные операнды. Исполнительное устройство 307 предпочтительно использует АЛУ 402, которое способно выполнять различные логические функции, такие как сдвиг, циклический сдвиг, конъюнкцию, дизъюнкцию, сложение по модулю 2, а также различные арифметические операции, в том числе сложение, вычитание, умножение, деление. Некоторые разновидности АЛУ 402 проектируются для скалярных операций, а некоторые - для операций с плавающей запятой. В зависимости от вариантов осуществления данные могут представляться в обратном порядке следования битов (т.е. наименее значимому биту соответствует наибольший адрес) или в прямом порядке следования битов (т.е. наименее значимому биту соответствует наименьший адрес). В архитектуре IBM z/Architecture для представления данных используется обратный порядок следования битов. Числа со знаком зависимости от архитектуры могут храниться в виде знака и значения числа, в виде дополнения числа до единицы или дополнения до двух. Представление чисел в виде дополнения до двух обладает преимуществом, поскольку в этом случае в АЛУ не требуется предусматривать отдельную функцию вычитания: для положительных и отрицательных чисел, представленных в форме дополнения до двух, в АЛУ требуется только операция сложения. Числа обычно описываются в сокращенной форме, как блоки длиной, например, 4 килобайта: 12-разрядное поле определяет адрес блока длиной 4096 байтов.

При выполнении команды ветвления информация о команде обычно передается в устройство 308 ветвления (см. схему на фиг. 4Б), которое использует алгоритм предсказания ветвления, такой как таблица 432 истории ветвления, для предсказания результата ветвления еще до того, как будут завершены другие условные операции. В этом случае ветвь алгоритма - возможный исход текущей команды ветвления будет загружена и спекулятивно выполнена до того, как будет завершено выполнение условных операций. Когда выполнение условных операций завершится, то спекулятивно выполненные команды ветви алгоритма либо будут использованы, либо будут отброшены в зависимости от условий операции принятия решения и результатов спекулятивно выполненных операций. Типичная команда ветвления может проверять коды условий, и если коды условий удовлетворяют требованию ветви команды ветвления, то переходить по адресу соответствующей ветви. Адрес перехода может быть рассчитан на основе различных значений, в том числе например, содержащихся в полях регистров или во внутренних полях команды. Согласно варианту осуществления изобретения, устройство 308 ветвления может использовать АЛУ 426, содержащее набор схем 427, 428 и 429 входных регистров и схему 430 выходного регистра. Устройство 308 ветвления может обмениваться информацией с регистрами общего назначения, устройством 306 декодирования-диспетчеризации или, например, с другими устройствами 425.

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

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

Процессор обращается к запоминающему устройству, используя устройство 310 загрузки-хранения, схема которого показана на фиг. 4В. Устройство 310 загрузки-хранения может выполнять операцию загрузки путем получения адреса требуемого операнда в запоминающем устройстве через интерфейс кэш-память - запоминающее устройство и собственно загрузки операнда в собственный регистр 309 или другую ячейку запоминающего устройства, либо может выполнять операцию сохранения путем получения адреса требуемого операнда в запоминающем устройстве и записи данных, полученных из собственного регистра 309 или другой ячейки запоминающего устройства, в соответствующую ячейку запоминающего устройства. Устройство 310 загрузки-хранения может действовать спекулятивно и может обращаться к запоминающему устройству в последовательности, не соответствующей той, которая определяется порядком следования команд. Однако устройство 310 загрузки-хранения должно предоставлять данные таким образом, чтобы команды выполнялись в установленном программой порядке. Устройство 310 загрузки-хранения может обмениваться данными с регистрами 309 общего назначения, устройством 306 декодирования-диспетчеризации, интерфейсом кэш-память - запоминающее устройство или другими устройствами 455 и содержать в своем составе различные схемы регистров, АЛУ 458 и управляющую логику 463 для вычисления адресов хранения и формирования конвейерной последовательности данных для обеспечения правильной очередности выполнения команд. В данной области техники хорошо известно, что некоторые операции могут выполняться в порядке, отличном от установленного, однако при этом устройство загрузки-хранения должно действовать таким образом, чтобы выполненные в ином порядке операции представлялись программе будто бы выполненными в правильном порядке.

Адреса, которыми оперирует прикладная программа, часто называют виртуальными. Для обозначения виртуальных адресов иногда используются термины “логические адреса” и “эффективные адреса”. Указанные виртуальные адреса виртуальны в том смысле, что они преобразуются в адресное пространство физической памяти с использованием одной из множества технологий трансляции динамических адресов, такой как реализованная в функциональном узле 312 (см. фиг. 3), в том числе (но не ограничиваясь) добавлением значения смещения как префикса к виртуальному адресу, преобразованием виртуальных адресов в соответствии с одной или более таблиц трансляции, причем таблицы трансляции предпочтительно состоят по меньшей мере из отдельной таблицы сегментов и отдельной таблицы страниц или из комбинации этих таблиц, предпочтительно такой, что таблица сегментов содержит запись, указывающую на таблицу страниц. В архитектуре z/Architecture предусмотрена иерархия трансляции, в том числе таблица первой области, таблица второй области, таблица третьей области, таблица сегментов и, опционально, таблица страниц. Производительность трансляции адресов часто повышается при использовании буфера быстрого преобразования адреса, который содержит записи, отображающие виртуальные адреса па адреса ячеек физической памяти. Записи создаются, когда процедура динамической трансляции адресов в функциональном узле 312 транслирует виртуальный адрес с использованием таблиц трансляции. При последующем обращении по виртуальному адресу вместо последовательных обращений к медленной таблице преобразования адреса может использоваться запись в буфере быстрого преобразования адреса. Содержимое буфера быстрого преобразования адреса может поддерживаться различными алгоритмами замены, в том числе алгоритмом удаления дольше всех неиспользовавшихся элементов.

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

Устройства 304 ввода-вывода (см. фиг. 3) дают процессору 106 возможность обмениваться данными с периферийными устройствами, например, с такими как ленточный накопитель, дисковый накопитель, принтеры, дисплеи, сетевое окружение. Устройства 304 ввода-вывода часто представляются компьютерной программе программами-драйверами. В компьютерах-мейнфреймах, таких как z/Series корпорации IBM, адаптеры каналов и адаптеры открытой системы являются устройствами ввода-вывода мейнфрейма, которые обеспечивают связь операционной системы с периферийными устройствами.

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

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

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

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

Средство сбора сведений о ходе вычислений может быть встроено в модели, использующие архитектуру z/Architecture. Если средство сбора сведений о ходе вычислений инсталлировано и активировано, то при выполнении программы в одном или более накопительных буферах в составе ЦПУ собираются сведения (т.е. данные), которые затем передаются в программный буфер. Каждая единица сохраненной информации называется отчетной группой. Отчетная группа состоит из набора записей, содержание которых описывает события, распознанные ЦПУ в ходе выполнения программы.

Если средство сбора сведений о ходе вычислений инсталлировано в вычислительной системе, то разрешением вести сбор сведений о ходе вычислений управляет специальное поле ССП, называемое разрядом RI (от англ. Run-time Instrumentation - средство сбора сведений о ходе вычислений). Возможность активации разряда RI зависит от корректности управляющих параметров средства сбора сведений о ходе вычислений, однако если значение разряда RI установлено равным единице, то управляющие параметры ЦПУ корректны и сбор сведений о ходе вычислений разрешен. Средство сбора сведений о ходе вычислений может содержать следующие команды: команду загрузки управляющих параметров средства сбора сведений о ходе вычислений; команду модификации значений управляющих параметров средства сбора сведений о ходе вычислений; команду извлечения средства сбора сведений о ходе вычислений; команду выборки следующей команды средства сбора сведений о ходе вычислений; команду отключения средства сбора сведений о ходе вычислений; команду включения средства сбора сведений о ходе вычислений; команду сохранения значений управляющих параметров средства сбора сведений о ходе вычислений; команду тестирования значений управляющих параметров средства сбора сведений о ходе вычислений.

Команда LRIC (от англ. Load Run-time-instrumentation Controls - загрузить управляющие параметры средства сбора сведений о ходе вычислений) осуществляет инициализацию (т.е. присвоение начальных значений) управляющих параметров средства сбора сведений о ходе вычислений. Команда MRIC (от англ. - Modify Run-time-instrumentation Controls - модифицировать значения управляющих параметров средства сбора сведений о ходе вычислений) изменяет значение всех или некоторых управляющих параметров средства сбора сведений о ходе вычислений, исходное значение которым присваивается командой LRIC. Команда RIEMIT (от англ. Run-time-instrumentation Emit - [команда] извлечь [данные для] средства сбора сведений о ходе вычислений) извлекает значение регистра общего назначения и сохраняет его в накопительном буфере. Команда RINEXT (от англ. Run-time-instrumentation Next - следующая [команда] средства сбора сведений о ходе вычислений) предписывает считать выборочной команду, следующую по порядку за командой RINEXT. Команда RIOFF (от англ. Run-time-instrumentation OFF - отключить средство сбора сведений о ходе вычислений) деактивирует сбор сведений о ходе вычислений. Команда RION (от англ. Run-time-instrumentation ON - включить средство сбора сведений о ходе вычислений) активирует сбор сведений о ходе вычислений. Команда STRIC (от англ. Store Run-time-instrumentation Controls - сохранить значения управляющих параметров средства сбора сведений о ходе вычислений) помещает текущие значения управляющих параметров средства сбора сведений о ходе вычислений в определенную ячейку памяти запоминающего устройства. Команда TRIC (от англ. Test Run-time-instrumentation Controls - протестировать значения управляющих параметров средства сбора сведений о ходе вычислений) проверяет значения управляющих параметров средства сбора сведений о ходе вычислений: если критерий проверки выполняется, то устанавливается соответствующее состояние индикатора изменения управляющих параметров.

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

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

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

Типы записей, которые могут быть включены в состав сохраняемой отчетной группы: заполнитель (от англ.: filler); дополнительный (от англ.: extra); начальный (от англ.: begin); отметка времени (от англ.: timestamp); команда (от англ.: instruction); извлечение (от англ.: emit); останов режима выполнения транзакции (от англ.: transaction-execution mode abort); вызов (от англ.: call); возврат (от англ.: return); передача (от англ.: transfer). Запись типа заполнитель может использоваться в отчетной группе в случае, если число корректных записей в накопительном буфере недостаточно для формирования отчетной группы заданного используемого в текущий момент размера. Запись типа дополнительный может использоваться в дополнительной секции отчетной группы. Запись типа начало является первой записью первой отчетной группы. Запись типа отметка времени используется как запись ноль (т.е. первая по счету) каждой отчетной группы за исключением первой отчетной группы. Запись типа команда формируется, если отчетная группа сохраняется для выборочной команды как последняя запись отчетной группы. Запись типа извлечение формируется в результате успешного выполнения команды RIEMIT. Запись типа останов режима выполнения транзакции формируется либо при неявном останове, либо в результате выполнения команды останова транзакции. Запись типа вызов формируется при выполнении команды ветвления, которая относится к командам ветвления типа вызов. Запись типа возврат формируется при выполнении команды ветвления, которая относится к командам ветвления типа возврат. Запись типа передача формируется при выполнении команды ветвления, которая удовлетворяет определенному критерию кода условия.

На фиг. 5 показана схема системы для сбора сведений о ходе вычислений в процессоре, которая может быть применена согласно варианту осуществления изобретения. Согласно варианту осуществления изобретения, система 500 содержит ЦПУ, такой как процессор 106 (см. фиг. 1). Согласно варианту осуществления изобретения, процессор 106 является одиночным процессором. Согласно альтернативному варианту осуществления, процессор 106 является одиночным процессорным ядром многоядерного процессора. Согласно варианту осуществления изобретения, процессор 106 способен работать с изменяющейся скоростью.

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

Процессор 106 выполняет одну или более операционных систем 516 и одно или более приложений 518. Одна или более операционных систем 516 и одно или более приложений 518 хранятся в запоминающем устройстве 520, таком как накопитель на жестких дисках, CD-ROM, флеш-память и т.д., и загружаются в главное запоминающее устройство 514 в область 504 выполняемых программ, зарезервированную для хранения одного или более активных фрагментов выполняемой операционной системы и/или приложения, вызываемых страниц, которые загружаются по мере необходимости из запоминающего устройства 520 в область 504 выполняемых программ. Согласно варианту осуществления изобретения, каждая из операционных систем выполняется как виртуальная машина, управляемая гипервизором (на фигурах гипервизор не показан) и исполняемая процессором 106.

Согласно варианту осуществления изобретения, процессор 106 для исполняемой в текущий момент времени операционной системы или приложения загружает ССП в регистр 510 из области 512 данных ССП главного запоминающего устройства 514 и устанавливает один или более управляющих параметров процессора, например, в регистре 510. Согласно варианту осуществления изобретения, ССП в регистре 510 содержит один или более разрядов, предназначенных для активации и управления инструментальным модулем 506.

Одно или более приложений 518 включают программы-приложения, скомпилированные для выполнения на специфической операционной системе, интерпретируемый код, выполняемый на интерпретаторе (например, на интерпретаторе языка Java), или потоки поддержки операционной системы (например, менеджмент процессов, демоны и т.п.). Каждая из указанных одной или более операционных систем 516 и одного или более приложений 518 могут выполнить команду для указания инструментальному модулю 506 начать или остановить сбор данных о ходе вычислений.

Согласно варианту осуществления изобретения, одно из указанных приложений 518 выполняет команду, которая определяется как выборочная команда. По завершении выполнения выборочной команды создается точка выборки, в результате чего инструментальный модуль 506 перемещает собранные о работе приложения данные из накопительного буфера 508 в программный буфер 522, располагающийся в главном запоминающем устройстве 514, к которому возможен доступ приложению. Главным запоминающим устройством 514 может являться адресуемое запоминающее устройство любого известного типа. Согласно варианту осуществления изобретения, главное запоминающее устройство 514 может содержать быстродействующее буферное запоминающее устройство, называемое иногда кэш-памятью. Каждое ЦПУ может обладать связанной с ним кэш-памятью. Согласно дополнительному варианту осуществления, главное запоминающее устройство 514 является динамическим запоминающим устройством с произвольной выборкой (динамическим ОЗУ). Согласно другому варианту осуществления, главное запоминающее устройство является устройством хранения, таким как компьютерный накопитель на жестких дисках или флеш-память, к которым может обращаться приложение.

Для настройки значений управляющих параметров средства сбора сведений о ходе вычислений процессор 106 поддерживает команду загрузки управляющих параметров (команду LRIC). Следует учитывать, что помимо специфических полей, описание которых приводится далее, для осуществления дополнительных функций в команде LRIC могут быть определены дополнительные поля. Команда LRIC может использоваться для загрузки и начального конфигурирования средства сбора сведений о ходе вычислений, эта команда поддерживается инструментальным модулем 506. Согласно варианту осуществления изобретения, инструментальный модуль 506, который также называют инструментальным модулем 506 средства сбора сведений о ходе вычислений, использует управляющие параметры средства сбора сведений о ходе вычислений и управляющие параметры отчетной группы. Текущее состояние управляющих параметров средства сбора сведений о ходе вычислений может быть переписано из регистра 510 (см. фиг. 5) и сохранено в главном запоминающем устройстве 514 с использованием команды сохранения значений управляющих параметров (команда STRIC). Далее дается определение различных полей блока параметров RICCB, загружаемого как операнд команды LRIC, оно также используется в настоящей заявке для ссылки на состояние соответствующих управляющих параметров средства сбора сведений о ходе вычислений.

На фиг. 6 показана схема фрагмента 600 управляющего блока управляющих параметров средства сбора сведений о ходе вычислений (блока параметров RICCB) согласно варианту осуществления изобретения. Указанный фрагмент 600 блока параметров RICCB содержит управляющие параметры, значения которых согласно варианту осуществления изобретения могут устанавливаться в привилегированном режиме. Фрагмент 600 блока параметров RICCB может содержать дополнительные управляющие параметры (величины) помимо описываемых далее и показанных на фиг. 6. Во фрагмент 600 блока параметров RICCB командой LRIC могут вноситься изменения.

Фрагмент блока параметров RICCB содержит разряд 602 V корректности. Разряд 602 корректности отображает достоверность набора управляющих параметров средства сбора сведений о ходе вычислений в процессоре, в том виде, как они были ране установлены командой LRIC.

Блок параметров RICCB также содержит разряд 604 S, который используется для проверки, разрешается ли в режиме низких привилегий выполнять команду MRIC. Разряд 606 “K” указывает, разрешается ли выполнение программы с низкими привилегиями в режиме частичных привилегий с учетом управляющих параметров средства сбора сведений о состоянии вычислительной системы, таких как начальный адрес и конечный адрес. Разряд 608 Η определяет, относятся ли управляющие параметры адреса (т.е. начальный адрес, конечный адрес и текущий адрес) к основному виртуальному адресному пространству или к домашнему виртуальному адресному пространству. Разряд 610 “0” (ноль) игнорируется и обрабатывается как число ноль.

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

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

Управляющий разряд 616 Рс накопительного буфера режима низких привилегий управляет обновлением содержимого накопительного буфера 508 (см. фиг. 5). В режиме низких привилегий при равенстве нулю разряда 616 Рс и при активированном средстве сбора сведений о ходе вычислений управляющие параметры накопительного буфера из числа управляющих параметров средства сбора сведений о ходе вычислений игнорируются, и обновление накопительного буфера 508 запрещено. В режиме низких привилегий при равенстве значения разряда 616 Рс единице управляющие параметры накопительного буфера проверяются и используются согласно своему функциональному назначению.

Управляющий разряд 618 Qc накопительного буфера режима супервизора управляет обновлением содержимого накопительного буфера 508 (см. фиг. 5). В режиме супервизора при равенстве нулю разряда 618 Qc и при активированном средстве сбора сведений о ходе вычислений управляющие параметры накопительного буфера из числа управляющих параметров средства сбора сведений о ходе вычислений игнорируются, и обновление накопительного буфера 508 запрещено. В режиме супервизора при равенстве значения разряда 618 Qc единице управляющие параметры накопительного буфера проверяются и используются согласно своему функциональному назначению.

Разряд 620 G является управляющим параметром отсрочки (от англ.: pending) остановочного прерывания (от англ.: halted interruption) средства сбора сведений о ходе вычислений, называемого также остановочным прерыванием. Если значение разряда 620 G равняется нулю, то остановочное прерывание не откладывается. Если значение разряда 620 G равняется единице, то остановочное прерывание откладывается. Когда в программный буфер 522 записана первая отчетная группа, значение разряда 620 G устанавливается равным нулю. То есть если начальный адрес 702 ROA (от англ. Run-time-instrumentation program-buffer Origin Address - начальный адрес программного буфера средства сбора сведений о ходе вычислений) программного буфера средства сбора сведений о ходе вычислений совпадает с текущим адресом 706 RCA (от англ. Run-time-instrumentation program-buffer Current Address - текущий адрес программного буфера средства сбора сведений о ходе вычислений) программного буфера средства сбора сведений о ходе вычислений, то значение разряда 620 G устанавливается равным нулю (см. фиг. 7). Если условие остановочного прерывания средства сбора сведений о ходе вычислений не активно, то при попытке сохранения в программном буфере 522 любой отчетной группы кроме первой значение разряда 620 G устанавливается равным нулю и отчетная группа сохраняется. Если условие остановочного прерывания средства сбора сведений о ходе вычислений активно, то при попытке записи в программный буфер 522 любой отчетной группы кроме первой значение разряда 620 G устанавливается равным единице и отчетная группа не сохраняется.

Разряд 622 U (см. фиг. 6) является разрешающим управляющим параметром для прерывания по переполнению буфера и остановочного прерывания. Если разряд 622 U равен нулю, то формирование запроса на прерывание отключено, однако если прерывание уже отложено, то оно остается отложенным.

Разряд 624 L является управляющим параметром отсрочки для прерывания по переполнению буфера. Если разряд 624 L равен нулю, то прерывание по заполнению буфера не откладывается. Если разряд 624 L равен единице, то прерывание по заполнению буфера откладывается.

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

На фиг. 7 показана схема фрагмента блока параметров RICCB в случае, когда в режиме частичных привилегий (т.е. в случае, когда значение разряда “K” равно единице) разрешается использование команды MRIC. Блок 700 параметров RICCB может также являться операндом команды LRIC и использоваться для инициализации управляющих параметров средства сбора сведений о ходе вычислений. Блок 700 параметров RICCB может содержать дополнительные управляющие параметры помимо описываемых далее и показанных на фиг. 7. Согласно варианту осуществления изобретения, программа в режиме низких привилегий не имеет доступа к тем фрагментам операнда команды MRIC, которые не обозначены. Если разрешен режим частичных привилегий, то начальный адрес 702 ROA и конченый адрес 704 RLA устанавливаются программой режима низких привилегий с помощью команды командой MRIC. Начальный адрес 702 ROA средства сбора сведений о ходе вычислений указывает на местоположение первого байта программного буфера 522 (см. фиг. 5). Конечный адрес 704 RLA указывает на местоположение последнего байта программного буфера 522.

Согласно варианту осуществления изобретения, текущий адрес 706 RCA программного буфера средства сбора сведений о ходе вычислений может обновляться командой MRIC. Текущий адрес 706 RCA указывает местоположение в программном буфере 522 следующей отчетной группы, подлежащей сохранению. Текущий адрес 706 RCA учитывает значение поля 744 RGS (от англ. Reporting Group Size - длина отчетной группы) и влияет на число значащих разрядов, используемых для формирования адреса программного буфера 522. Текущий адрес 706 RCA длиной 64 разряда занимает слово с порядковым номером ноль, разряды с нулевого по 26-й - RGS слова 1 и RGS+5 двоичных нулей, которые добавляются справа. Это начальное местоположение в программном буфере 522 (см. фиг. 5) последующей отчетной группы, которая будет сохранена в программном буфере 522. Отчетная группа - это единица информации, которая формируется инструментальным модулем 506 и сохраняется в программном буфере 522. Согласно варианту осуществления изобретения, если значение в поле 744 длины отчетной группы, определенное текущим адресом 706 RCA, не равно текущей длине отчетной группы средства сбора сведений о ходе вычислений (т.е. текущий адрес 706 RCA должен изменить значение поля 744 RGS длины отчетной группы), то текущий адрес 706 RCA устанавливается равным начальному адресу 702 ROA.

Значение поля 742 RSIC (от англ. Remaining Sample Interval Count - число оставшихся интервалов выборок) может обновляться программой режима низких привилегий с использованием команды MRIC. Поле 742 RSIC содержит 64-разрядное беззнаковое целое число, которое отражает счет оставшихся интервалов выборок. Если значение поля 742 RSIC равняется нулю или равно значению поля 740 SF (от англ. Scaling Factor - коэффициент масштабирования) и средство сбора сведений о ходе вычислений активировано, то следующий интервал выборки является полным интервалом, определяемым значениями поля 708 Μ режима выборок и поля 740 SF коэффициента масштабирования. Если значение поля 742 RSIC 742 отлично от нуля и меньше, чем значение поля 740 SF коэффициента масштабирования, и средство сбора сведений о ходе вычислений активировано, то следующий интервал выборки является частичным интервалом. Если значение поля 742 RSIC 742 отлично от нуля и больше, чем значение поля 740 SF коэффициента масштабирования, и средство сбора сведений о ходе вычислений активировано, то следующий интервал выборки является расширенным интервалом. Если расширенный интервал завершается, то продолжительность следующего интервала определяется значением поля 740 SF коэффициента масштабирования. Если значение поля 742 RSIC установлено отличным от нуля, то оно ограничивается тем же зависящим от типа модели пределом, которым ограничено значение поля 740 SF коэффициента масштабирования. Если исходное значение поля 742 RSIC равно нулю, то режим выборок будет определять, устанавливается ли значение поля 742 RSIC равным значению поля 740 SF при выполнении команд LRIC и MRIC, или же оно будет оставаться равным нулю до тех пор, пока активно средство сбора сведений о ходе вычислений.

Поле 740 SF коэффициента масштабирования содержит 64-разрядное беззнаковое целое число, которое является счетчиком единиц коэффициента масштабирования. Размерность единиц определяется значением поля 708 режима выборок. Если значение поля 742 RSIC равно нулю, то поле 740 SF коэффициента масштабирования определяет начальное значение поля 742 RSIC 742, которое в процессе счета уменьшается до нуля. В этот момент текущая команда распознается как выборочная и счетчик интервалов обновляется значением поля 740 SF коэффициента масштабирования. Корректное значение поля 740 SF коэффициента масштабирования находится в пределах от единицы до 264 - 1. Если значение коэффициента масштабирования равняется нулю, то подразумевается значение единица. Тем не менее, в каждой модели может существовать свое минимальное и максимальное значения поля 740 SF коэффициента масштабирования. Минимальные и максимальные значения могут также различаться в зависимости от значения поля 708 режима выборок. Если указано значение, меньшее минимального, то загружается значение, минимальное для данной модели. Если указано значение, превышающее максимальное, то загружается значение, максимальное для данной модели.

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

Поле 734 IC представляет собой четырехразрядное беззнаковое целое число, значение которого обозначает уровень латентности кэш-памяти, связанный с промахом кэш-памяти команд. Имеется в виду обращение за выборочной командой, приводящее к промаху кэш-памяти команд. И для поля 734 IC, и для управляющего поля 736 DC уровень латентности кэш-памяти является обобщенным показателем того, как далеко от рассматриваемого процессора распространяется обращение к кэш-памяти определенного уровня. Уровень латентности зависит как от числа уровней вложенной кэш-памяти между данным процессором и главным запоминающим устройством, так и от того, как эти уровни кэш-памяти распределяются между множеством процессоров. В общем случае больший уровень латентности соответствует большей продолжительности доступа. Значения полей 734 IC и 736 DC могут рассматриваться как отсчитываемые с нуля показатели уровня латентности кэшпамяти. Например, значение ноль соответствует уровню L1 кэш-памяти, т.е. кэш-памяти, располагающейся наиболее близко к процессору. Соответственно, за кэш-памятью первого уровня (за значением единица) следует кэш-память уровня L2 или даже в некоторых вычислительных машинах кэш-память уровня L1.5. Значения от 2 до 15 соответствуют продвижению по дополнительным уровням латентности кэш-памяти до тех пор, пока не будет достигнут уровень главного запоминающего устройства, причем сам уровень главного запоминающего устройства в указанный интервал не включается. В общем случае структуры кэш-памяти не занимают более пятнадцати уровней. В связи с этим значение 15 поля 734 IC и управляющего поля 736 DC воспринимается как особый случай, означающий, что промах кэш-памяти соответственно при выборке команды или при обращении к данным независимо от уровня латентности кэш-памяти не распознан для целей формирования отчетной группы. Если сохранение отчетной группы не запрещено каким-либо другим управляющим параметром средства сбора сведений о ходе вычислений, то делается попытка сохранения отчетной группы, отражающей выборочную команду, чья выборка из кэш-памяти рассматривается как промах с уровнем латентности кэш-памяти, численно равным или превышающим уровень, установленный значением поля 734 IC. Структура кэш-памяти и уровень латентности кэш-памяти для выборки команд зависит от типа модели. Вообще действия, зависящие от типа модели, могут игнорировать значение поля 734 IC, и значение этого поля может не использоваться в качестве критерия сохранения отчетной группы.

Управляющий разряд 732 F учета уровня латентности обращений к кэш-памяти применяется к командам, не относящимся к командам ветвления, а также к управляющим параметрам отчетных групп о результатах предсказания ветвления. Если значение разряда 732 F в составе управляющих параметров средства сбора сведений о ходе вычислений равно нулю, то значения управляющих параметров отчетной группы об обращении к кэш-памяти (поле 734 IC и управляющее поле 736 DC) проверяются и используются согласно их функциональному назначению. В этом случае значения управляющих параметров, относящихся к отчету о предсказании ветвления (разряды 722 BPxn, 724 BPxt, 726 BPti и 728 BPni) в составе управляющих параметров средства сбора сведений о ходе вычислений, также проверяются и используются согласно их функциональному назначению. Если значение разряда 732 F в составе управляющих параметров средства сбора сведений о ходе вычислений равно единице, то значения указанных управляющих параметров отчетных групп игнорируются, и если это не запрещено каким-либо другим управляющим параметром, то отчетная группа сохраняется.

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

Команда MRIC содержит управляющие параметры BP (от англ. Branch Prediction - предсказание ветвления) отчетных групп о предсказании ветвления: разряды 722 BPxn, 724 BPxt, 726 BPti и 728 BPni. Если значение управляющего разряда BP отчетной группы равно нулю, то соответствующее условие не проверяется. Если значение управляющего разряда BP отчетной группы равно единице и соответствующее условие предсказания ветвления активно, то отчетная группа сохраняется.

Если значение разряда 722 BPxn равно единице, то разрешена проверка информации о предсказании ветвлений. В частности, если ветвление ложно предсказано и в реальности не произошло, то отчетная группа сохраняется.

Если значение разряда 724 BPxt равняется единице, то разрешена проверка информации о предсказании ветвлений. В частности, если ложно предсказано отсутствие ветвления, но в реальности ветвление произошло, то отчетная группа сохраняется.

Если значение разряда 726 BPti равняется единице, то разрешена проверка информации о предсказании ветвлений. В частности, если ветвление предсказано верно, в реальности ветвление произошло, однако точка назначения предсказана неверно, то отчетная группа сохраняется.

Если значение разряда 728 BPni равняется единице, то разрешена проверка информации о предсказании ветвлений. В частности, если отсутствие ветвления предсказано верно, в реальности ветвление не произошло, однако точка назначения предсказана неверно, то отчетная группа сохраняется.

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

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

Значение разряда 746 J, равное нулю, определяет, что команда ВС (от англ. Branch on Condition - ветвление по условию) находится в категории ветвления другого типа вне зависимости от значения маски. Если значение разряда 746 J равняется единице, то команда ВС, которая определяет значение маски 15, находится в категории ветвления типа возврат. Если команда ВС ветвления по условию определяет значение маски от 1 до 14, то на команду не влияет значение разряда 746 J и команда всегда находится в категории ветвления другого типа. Если тип категории ветвления - возврат, то разряд 716 R управляет включением в накопительный буфер 508 (см. фиг. 5). Если тип категории ветвления иной, то включением в накопительный буфер 508 управляет разряд 748 В. В качестве иного типа категории может также быть указана категория типа передача.

Разряд 714 C кода адреса команды управляет разрешением регистрации ветвлений типа вызов. Если значение разряда 714 C в составе управляющих параметров средства сбора сведений о ходе вычислений равно единице и команда - ветвление типа вызов, то содержимое накопительного буфера 508 обновляется. Если модель предписывает распознавать оба типа ветвления (тип вызов и тип возврат) как единый тип, то значение разряда 714 C применяется к обоим типам ветвления, а значение разряда 716 R игнорируется.

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

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

Значение разряда 712 МАЕ превышения максимального адреса, равное единице, указывает, что в одной или более сохраненных отчетных группах значение разряда 714 “C” кода адреса команды установлено равным единице. Если значение разряда 712 МАЕ установлено равным единице, то при дальнейшем действии средства сбора сведений о ходе вычислений значение этого разряда не изменяется обратно на ноль. Значение разряда 712 МАЕ обнуляется в результате выполнения команды LRIC или команды MRIC, которые устанавливают значение МАЕ разряда 712 МАЕ равным нулю.

Разряд 710 N управляет действием команды RINEXT средства сбора сведений о ходе вычислений, которая, в свою очередь, указывает выборочную команду. Если значение разряда 710 N в составе управляющих параметров средства сбора сведений о ходе вычислений равно нулю или игнорируется (принимается равным нулю), то команда RINEXT не выполняет действий. Если значение разряда 710 N равно единице и не игнорируется, то команда RINEXT действует согласно ее функциональному назначению.

Поле 708 Μ режима представляет собой четырехразрядное беззнаковое целое число, значение которого определяет режим выборок для средства сбора сведений о ходе вычислений. Перечень поддерживаемых режимов выборок может содержать: режим выборок на основе подсчета циклов ЦПУ; режим выборок на основе подсчета числа команд; режим по указанию команды на выполнение выборки, такой как команда RINEXT.

Поле 744 RGS размера отчетной группы представляет собой трехзначное беззнаковое целое число, значение которого определяет число RRG записей в отчетной группе. Число записей в отчетной группе может составлять от двух и более, включая запись типа начало или отметка времени и запись типа команда (последняя запись) до 256. Согласно варианту осуществления изобретения, значение верхней границы может зависеть от типа модели. Число 16-байтных записей, размещаемых в отчетной группе, составляет 2RGS+1.

Для общего обозначения управляющего разряда 738 Υ блокировки первичного по производительности ЦПУ и управляющего разряда 739 Ζ блокировки вторичного по производительности ЦПУ используется термин управление блокировкой. Блокировка сохранения отчетной группы означает, что попытка сохранения не выполняется. Управление блокировкой игнорируется и блокировка не действует, если производительность всех ЦПУ в данной конфигурации одинакова. Если конфигурация такова, что производительность одного ЦПУ отличается от производительности другого ЦПУ, то управление блокировкой действует, и, по меньшей мере, одно ЦПУ считается первичным по производительности, и, по меньшей мере, одно ЦПУ считается вторичным по производительности. Первичное и вторичное по производительности ЦПУ различаются быстродействием. Если значения обоих разрядов 738 Υ и 739 Ζ равны нулю, то блокировки не происходит. Если значение разряда 738 Υ равно нулю и значение разряда 739 Ζ равно единице, и если ЦПУ, например, процессор 106, работает как вторичное по производительности ЦПУ, то происходит блокировка. Если значение разряда 738 Υ равно единице и значение разряда 739 Ζ равно нулю, и если ЦПУ, например, процессор 106, работает как первичное по производительности ЦПУ, то также происходит блокировка. Если значения обоих разрядов 738 Υ и 739 Ζ равны единице, то происходит блокировка.

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

Если средство сбора сведений о ходе вычислений инсталлировано и активировано, то в накопительный буфер 508 может быть собраны сведения о некотором числе событий, а также данные. Накопительный буфер 508 используется для сбора записей, содержание которых отражает события, распознанные процессором 106 в ходе выполнения программы. Например: выполнение одной или более операций ветвления; события останова выполнения транзакции; промахи кэш-памяти; операнд команды типа RIEMIT. Управляющие поля 734 IC и 736 DC устанавливают уровень, при котором может быть целесообразно вносить коррективы для улучшений в части выполнения команд или упреждающей выборки данных. При выполнении команды RIEMIT производится сохранение значений регистров общего назначения в накопительном буфере 508. Дополнительные данные могут собираться и/или сохраняться в других буферах, таких как буфер IDB (от англ. Instruction-Data Buffer - буфер данных команд), используемый для сбора зависящих от типа модели данных о выборочной команде для формирования записи типа команда средства сбора сведений о ходе вычислений (на чертежах буфер IDB не показан).

Отчет о собранной средством сбора сведений о ходе вычислений информации выдается на основе выборок. Из потока команд выбирается команда, такая выбранная команда называется выборочной командой. Режимы определения выборочных команд при активированном средстве сбора сведений о ходе вычислений определяются следующим образом. В режиме подсчета числа циклов начальным значением счетчика, которое служит для формирования текущего интервала, служит число циклов ЦПУ, определенное либо полем 740 SF, либо полем 742 RSIC. Это число корректируется при возникновении события, связанного с режимом выборок. Например, это число может быть уменьшено, если процессор 106 находится в оперативном состоянии (т.е. задействован). Если значение счетчика циклов уменьшилось до порогового значения, такого как ноль, то текущая команда считается выборочной командой, а значение счетчика вновь инициализируется значением, определяемым полем 740 SF, и далее вновь начинает уменьшаться каждым с очередным циклом. Если ничто не препятствует, то по завершении выполнения выборочной команды формируется отчетная группа.

В режиме подсчета команд начальным значением счетчика, которое служит для формирования текущего интервала, служит число, определенное либо полем 740 SF, либо полем 742 RSIC. В случае выполнения команды, состоящей из одиночной операции, значение счетчика уменьшается по завершении команды, факт завершения служит событием для изменения значения счетчика. Команда считается выборочной командой, если значение счетчика снизится до порогового значения, такого как ноль. Если команда состоит из набора одиночных операций, то значение счетчика может снижаться одним из следующих способов.

A. В случае прерываемой команды все одиночные операции вплоть до частичного завершения команды считаются единым элементом, уменьшающим значение счетчика.

Б. В случае прерываемой команды все одиночные операции начиная с последнего частичного завершения до полного завершения команды считаются единым элементом, уменьшающим значение счетчика.

B. В случае команды, которая завершается после выполнения определяемой ЦПУ части обработки, зависящей от параметров этой команды, завершающая часть обработки считается единым элементом, уменьшающим значение счетчика.

Г. В случае команды, которая завершается после выполнения набора одиночных операций и не относится к командам по пп. А-В, значения счетчика уменьшается по завершении последней одиночной операции команды.

Команда является выборочной командой в случае, если значение счетчика уменьшается до нуля при выполнении любого одиночного элемента этой команды. Если достигается пороговое значение, такое как ноль, то значение счетчика вновь инициализируется значением поля 740 SF и начинается обратный счет с соблюдением правил, изложенных выше в перечислении А-Г. Во всех вариантах режимов подсчета формирование отчета выполняется после завершения последней одиночной операции выборочной команды.

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

Если выборочная команда определяется в результате выполнения команды RINEXT, то вне зависимости от режима выборок отчетная группа сохраняется. Однако управляющие параметры 738 Υ, 739 Ζ, 614 Qs и 612 Ps средства сбора сведений о ходе вычислений продолжают действовать.

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

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

В режиме выполнения транзакций сохранение отчетной группы задерживается до окончания выполнения выборочной команды. В этом режиме по завершении выполнения выборочной команды сохранение отчетной группы откладывается до окончания транзакции, после чего ставится на ожидание. Если сохранение отчетной группы откладывается или ставится на ожидание, то оно может быть отменено, если возникнет любое из следующих прерываний: 1) программное прерывание; 2) срочное аппаратное прерывание; 3) прерывание рестарта; 4) прерывание по обращению супервизора.

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

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

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

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

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

1. Значения параметров средства сбора сведений о ходе вычислений некорректны.

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

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

4. Значение разряда 710 N из состава управляющих параметров средства сбора сведений о ходе вычислений равняется нулю, что указывает на запрет выполнения команды RINEXT.

5. Сохранение запрещено.

6. Соответствующее поле в действующем ССП указывает, что средство сбора сведений о ходе вычислений деактивировано.

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

8. Программный буфер переполнен.

9. Активно условие остановочного прерывания сбора сведений о ходе вычислений.

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

11. Следующая по порядку команда является командой обращения к супервизору.

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

Накопительный буфер 508 можно считать “аппаратным накопительным буфером”, поскольку накопительный буфер 508 находится в процессоре и в варианте осуществления выполнен в виде массива пар регистров, представляющих для данного события адрес 802 команды и метаданные 804 события. Согласно варианту осуществления изобретения, буфер данных команд также выполнен в виде пар регистров. Примером события является переход по ветвлению, для такого события пара регистров может сохранить адрес команды ветвления, а метаданные могут содержать точку назначения, а также информацию о предыстории данного ветвления. Согласно варианту осуществления изобретения, пары регистров назначаются и обновляются последовательно по мере возникновения событий в ходе выполнения потока команд. Для указания индекса последней обновленной записи в массиве используется счетчик. Согласно варианту осуществления изобретения, накопительный буфер 508 является кольцевым буфером: в случае полного заполнения накопительного буфера сведения об очередном событии записываются поверх первой записи в массиве, и по мере возникновения новых событий последовательное обновление содержимого пар регистров массива продолжается. Например, пусть имеется массив СВ, его элементы - от СВ[0] до CB[N-1], а также имеется счетчик I, указывающий индекс самого последнего обновленного элемента. Последовательность регистрируемых событий будет представлена последовательностью CB[i], CB[i-1], …, СВ[1], CB[0], CB[N-1], CB[N-2], …, CB[i+1]. Согласно другому варианту осуществления, используются два указателя: указатель начала, указывающий на наиболее давнюю запись в буфере, и текущий (хвостовой) указатель, указывающий на наиболее свежую запись в буфере.

События, представляющие состояние процессора 106 в любой заданной точке вычислительного процесса, регистрируются последовательно в накопительном буфере 508. Накопительный буфер 508 используется для регистрации набора записей, содержимое которых является отчетом о событиях, идентифицированных процессором 106 в ходе выполнения программы (например, один или более переходов по ветвлению, события останова выполнения транзакции, операнд команды RIEMIT и т.д.). Согласно варианту осуществления изобретения, идентифицируемые события зависят от блока параметров RICCB (см. фиг. 7). Записи в варианте осуществления показанного накопительного буфера 508 содержат адрес 802 команды, вызвавшей событие, и другие связанные с событием метаданные 804. Примеры метаданных 804 события включают (но не ограничиваются перечисленным): адрес команды ветвления и адрес точки назначения, в том числе некоторую информацию о предыстории ветвления; адрес команды RIEMIT и соответствующее значение регистра; адрес команды останова транзакции и соответствующую точку входа возобновления транзакции.

Вариант осуществления накопительного буера 508, схема которого показана на фиг.8, способен хранить до 32 записей (т.е. информацию о 32 событиях), каждая из которых содержит адрес 802 команды, определяемый 64-разрядным числом (например, разрядами с нулевого по 63-й), а также метаданные 804 события, определяемые 64 разрядами (например, разрядами с 64-го по 127-й). Длина RCB накопительного буфера зависит от типа модели и представляет число записей. В варианте осуществления накопительного буфера 508, схема которого показана на фиг. 8, длина накопительного буфера в байтах кратна длине записи в байтах, т.е. кратна шестнадцати байтам. В варианте осуществления длина накопительного буфера - это число записей, большее или равное разности между числом RRG записей в наибольшей отчетной группе в данной модели и числом RNC записей в отчетной группе, которые не были извлечены из накопительного буфера. Иными словами, в варианте осуществления длина накопительного буфера определяется условием

RCB>RRG-RNC

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

В варианте осуществления, таком как эмулируемая хост-компьютерная система, схема которой показана на фиг. 1Б, накопительный буфер 508 реализуется с использованием регистров и/или запоминающего устройства. Если в этом варианте осуществления применяется опциональный буфер данных команд, то он реализуется также с использованием регистров и/или запоминающего устройства.

В вариантах осуществления могут присутствовать дополнительные возможности, оказывающие влияние на сбор данных, действие которых проявляется в создании дополнительных точек сбора данных при несущественном изменении регулярного порядка следования выборок, обеспечиваемого механизмами подсчета числа команд и подсчета числа циклов, описанными ранее. К указанным дополнительным возможностям относится выполнение команды RIEMIT, которая осуществляет выборку значения регистра общего назначения путем его сохранения в накопительном буфере 508. Кроме того, могут использоваться управляющие разряды сбора данных в составе средства сбора сведений о ходе вычислений, описанные ранее, в целях более детального указания типов регистрируемых данных (например, управляющие разряды E, C, R и В). Благодаря этому тип собираемых данных является программируемым.

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

Согласно варианту осуществления изобретения, могут регистрироваться другие данные, поступающие не из накопительного буфера 508 и не из буфера данных команд, например, могут использоваться данные, состоящие из следующих частей: часть 1 - первая запись отчетной группы: запись типа отметка времени или запись типа начало; часть 2 - записи прочих типов, такие записи могут создаваться для каждой отчетной группы, в связи с чем такие записи не хранятся в накопительном буфере 508, и если они присутствуют, то могут размещаться в дополнительной или машинно-зависимой части отчетной группы. В настоящей заявке для обозначения указанных записей используется термин “записи системной информации”.

На фиг. 9 показана высокоуровневая схема примера отчетной группы 900, хранящейся в программном буфере 522 на момент выборки. Размер RRG отчетной группы, выраженный в числе записей, составляет 2RGS+1, где RGS в показателе степени - размер отчетной группы. При использовании в отчетной группе зависящих от типа модели записей, число которых составляет RNC, они копируются из иной области хранения, чем накопительный буфер 508, их разрешается или же не разрешается копировать с потерей части информации. Согласно примеру на фиг. 9, RRG=8, RGS=2, RNC=4. Пример отчетной группы 900, показанный на фиг. 9, содержит область 902 заголовка, область 904 тела, область 906 дополнительных записей и область 908 окончания.

Область 902 заголовка может содержать запись типа начало или запись типа отметка времени для хранения информации о статусе, трекинге и/или времени. Запись типа начало хранится в области 902 заголовка первой отчетной группы, сохраненной в программном буфере (т.е. при равенстве значений полей адресов RCA 706 и ROA 702). Согласно варианту осуществления изобретения, запись типа начало содержит: поле типа записи со значением “02”; поле числа отчетных групп, которое служит для указания числа отчетных групп, хранящихся в данный момент в программном буфере; поле RGS, которое служит для указания размера отчетных групп; поле S, значение которого служит признаком того, заполнен или незаполнен программный буфер 522; поле Н, значение которого служит признаком остановки средства сбора сведений о ходе вычислений; поле часов времени суток, которое служит для указания того, когда была внесена запись типа начало. Согласно варианту осуществления изобретения, источником значений по меньшей мере части полей записи типа начало является блок параметров RICCB. Вариант осуществления записи типа отметка времени содержит поле типа записи со значением “03” и поле часов времени суток, которое служит для указания того, когда была внесена запись. Согласно варианту осуществления изобретения, запись типа отметка времени хранится в области 902 заголовка каждой отчетной группы за исключением первой отчетной группы.

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

Согласно варианту осуществления изобретения, запись типа извлечение формируется и хранится в накопительном буфере 508 в результате успешного выполнения команды RIEMIT. Согласно варианту осуществления изобретения, запись типа извлечение содержит: поле типа записи со значением “10”; поле кода адреса команды, которое служит для указания того, как в записи типа извлечение представлены позиции разрядов адреса команды текущего ССП; поле адреса команды, структура которого зависит от режима адресации (т.е. 64-, 31-или 24-разрядная адресация), а само поле содержит адрес команды RIEMIT или команды исполнимого типа в случае, если команда RIEMIT была точкой назначения команды исполнимого типа; поле извлеченных данных, предназначенное для хранения данных из регистров общего назначения, указанных командой RIEMIT.

Согласно варианту осуществления изобретения, запись типа останов режима выполнения транзакции (запись типа останов) формируется и хранится в накопительном буфере 508 либо неявным остановом, либо выполнением команды останова транзакции. Вариант осуществления записи типа останов содержит: поле типа записи со значением “11”; поле кода адреса команды, которое служит для указания того, как в записи типа останов представлены позиции разрядов адреса команды текущего ССП; поле адреса команды, структура которого зависит от режима адресации (т.е. 64-, 31- или 24-разрядная адресация), а само поле содержит адрес остановленной команды или команды исполнимого типа в случае, если остановленная команда была точкой назначения команды исполнимого типа; поле для любых данных, зависящих от типа модели, связанных с остановом.

Согласно варианту осуществления изобретения, запись типа вызов создается при выполнении команды ветвления типа вызов, такой как: BRANCH AND SAVE (от англ.: ветвление и сохранение, аббревиатура BASR), если значение поля R2 не равно нулю; BRANCH AND SAVE (аббревиатура BAS); BRANCH RELATIVE AND SAVE LONG (от англ.: ветвление относительное и сохранение длинное); BRANCH RELATIVE AND SAVE (от англ.: ветвление относительное и сохранение); BRANCH AND LINK (от англ.: ветвление и связь, аббревиатура BALR), если значение поля R2 отлично от нуля; BRANCH AND LINK (аббревиатура BAL); BRANCH AND SAVE AND SET MODE (от англ.: ветвление и сохранение и установка режима), если значение поля R2 отлично от нуля. Вариант осуществления записи типа вызов содержит поле типа записи со значением “12”; поле кода адреса команды, которое служит для указания того, как в записи типа вызов представлены позиции разрядов адреса команды текущего ССП; поле адреса команды, структура которого зависит от режима адресации (т.е. 64-, 31- или 24-разрядная адресация), а само поле содержит адрес команды ветвления или команды исполнимого типа в случае, если команда ветвления была точкой назначения команды исполнимого типа; поле результативности предсказания ветвления, которое служит для указания того, было ли ветвление предсказано корректно; поле адреса точки назначения, которое содержит адрес точки назначения ветвления (также используется термин “вызываемое местоположение”).

Формат записей типа возврат и типа передача может быть тем же, что и у записи типа вызов. Согласно варианту осуществления изобретения, запись типа возврат содержит поле типа записи со значением “13” и создается в результате выполнения команды ветвления типа возврат, такой как BRANCH ON CONDITION (от англ.: возврат по условию, аббревиатура BCR), если значение поля R2 отлично от нуля и значение маски равно 15. В записи типа возврат поле адреса команды содержит адрес команды ветвления или команды исполнимого типа в случае, если команда ветвления была точкой назначения команды исполнимого типа; поле адреса точки назначения содержит местоположение точки возврата.

Согласно варианту осуществления изобретения, запись типа передача содержит поле типа записи, в котором указано значение “14”, эта запись формируется при выполнении команды ветвления типа возврат, такой как: (а) BRANCH ON CONDITION (BCR), если значение поля R2 отлично от нуля и значение маски лежит в интервале от 1 до 14; (б) BRANCH ON CONDITION (ВС), если значение разряда J равно нулю и значение маски лежит в интервале от 1 до 14; (в) BRANCH ON COUNT (ВСТ, BCTR, BCTG, BCTGR); (г) BRANCH ON INDEX HIGH (BXH, BXHG); (д) BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); (e) BRANCH RELATIVE ON CONDITION (BRC); (ж) BRANCH RELATIVE ON CONDITION LONG (BRCL); (з) BRANCH RELATIVE ON COUNT (BRCT, BRCTG); (и) BRANCH RELATIVE ON COUNT HIGH (BRCTH); (к) BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); (л) BRANCH RELATIVE ON INDEX LOW OREQUAL (BRXLE, BRXLG); (м) COMPARE AND BRANCH (CRB, CGRB); (н) COMPARE AND BRANCH RELATIVE (CRJ, CGRJ); (o) COMPARE IMMEDIATE AND BRANCH(CIB, CGIB); (п) COMPARE IMMEDIATE AND BRANCH RELATIVE (CD, CGIJ); (p) COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); (c) COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); (т) COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); (у) COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ). Запись типа передача создается, если происходит ветвление. Для записи типа передача поле адреса команды содержит адрес команды ветвления или адрес команды исполнимого типа, если команда ветвления является точкой назначения команды исполнимого типа. Для записи типа передача поле адреса точки назначения содержит местоположение точки возврата.

Запись типа заполнитель используется в отчетной группе в случае, если число содержательных записей в накопительном буфере 508 недостаточно для заполнения отчетной группы при текущем значении параметра RGS. Согласно варианту осуществления изобретения, запись типа заполнитель содержит поле типа записи, в котором указано значение “00”, которое означает, что данная запись является записью типа заполнитель. Значение прочих байтов записи не специфицировано.

Если присутствует область 906 дополнительных записей, то в этой области могут содержаться записи, зависящие от типа модели. Согласно варианту осуществления изобретения, формат записи типа дополнительный аналогичен формату записи типа заполнитель за исключением того, что значение кода типа записи устанавливается равным “01”, что указывает на то, что данная запись является записью типа дополнительный, а прочие байты записи типа дополнительный могут содержать данные, зависящие от типа модели.

Область 908 окончания может содержать запись типа команда, содержащую информацию о выполнении выборочной команды. Запись типа команда создается, если отчетная группа сохраняется для выборочной команды. Согласно варианту осуществления изобретения, запись типа заполнитель содержит: поле типа записи, в котором указано значение “04”; поле кода адреса команды, которое служит для указания того, как в записи типа вызов представлены позиции разрядов адреса команды текущего ССП; поле адреса команды, структура которого зависит от режима адресации (т.е. 64-, 31- или 24-разрядная адресация), а само поле содержит адрес команды ветвления или команды исполнимого типа в случае, если команда ветвления была точкой назначения команды исполнимого типа; поле буфера данных команд, которое содержит данные, зависящие от типа модели, полученные из буфера данных команд.

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

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

На фиг. 11 показана схема команды RIOFF согласно варианту осуществления изобретения. В соответствии с фиг. 11, команда 1100 RIOFF содержит поля 1102 и 1104 кода операции (для обозначения кода операции используется термин “опкод”, причем в данном случае - “разделенный опкод”). Значение полей 1102 и 1104 идентифицируют команду 1100 RIOFF для процессора, такого как процессор 106 (см. фиг. 5). Показанный на фиг. 11 в виде схемы вариант команды RIOFF является одним из возможных, и специалистам в данной области должно быть понятно, что иные варианты осуществления команды RIOFF могут иметь иной формат и/или содержать иные операнды и/или код операции.

На фиг. 12 показана схема алгоритма команды RIOFF согласно варианту осуществления изобретения. Согласно варианту осуществления изобретения, алгоритм, схема которого показана на фиг. 12, выполняется инструментальным модулем 506 (см. фиг. 5). На шаге 1202 производится выборка команды RIOFF программы, выполняющейся в режиме низких привилегий (например, приложения 518, исполняющегося в режиме задач), например, из потока команд. Согласно варианту осуществления изобретения, проверяется разряд ССП (например, разряд номер 15) для определения того, выполняется ли программа в супервизорном режиме или в режиме низких привилегий (для обозначения режима низких привилегий в данной заявке также используется термин “режим задач”). На шаге 1204 определяется, разрешается ли выполнение команды RIOFF. То, разрешается ли программе, работающей в режиме низких привилегий, выполнять команду RIOFF, зависит от значения управляющего разряда S блока параметров RICCB (управляется только командой LRIC). Согласно варианту осуществления изобретения, если значение разряда S (например, содержащегося в блоке параметров RICCB) средства сбора сведений о ходе вычислений равняется единице, то программе, работающей в режиме низких привилегий, разрешается выполнять команду RIOFF, и алгоритм переходит к шагу 1208. В противном случае если значение разряда S равняется нулю, то программе, работающей в режиме низких привилегий, не разрешается выполнять команду RIOFF, и алгоритм переходит к шагу 1206. На шаге 1206 команда RIOFF не изменяет первоначальные значения параметров, и значения управляющих параметров выполнения и ССП остаются без изменений. Согласно варианту осуществления изобретения, на шаге 1206 значение кода условия устанавливается равным двум, что указывает на запрет выполнения в режиме низких привилегий.

На шаге 1208 проверяется, установлено ли значение разряда корректности (также для этого разряда используется обозначение “V”) в составе управляющих параметров (например, блока параметров RICCB) средства сбора сведений о ходе вычислений равным единице. Разряд V отображает корректность значений набора управляющих параметров средства сбора сведений о ходе вычислений в процессоре, ранее загруженных командой LRIC. Если текущие значения управляющих параметров средства сбора сведений о ходе вычислений некорректны (т.е. выполненная ранее команда LRIC была некорректна), то алгоритм переходит к шагу 1210. Согласно варианту осуществления изобретения, на шаге 1210 значение кода условия устанавливается равным трем, что указывает на некорректность текущих значений управляющих параметров средства сбора сведений о ходе вычислений.

Если значение разряда V установлено равным единице, что указывает на корректность значений управляющих параметров средства сбора сведений о ходе вычислений, то алгоритм переходит на шаг 1212, на котором приостанавливается уменьшение текущего значения поля RSIC, текущее значение поля RSIC сохраняется в ожидании последующей команды RION. Выполнение алгоритма переходит на шаг 1214, на котором значение разряда RI в ССП (например, разряда номер 24) устанавливается равным нулю. Согласно варианту осуществления изобретения, если значение разряда номер 24 ССП уже равняется нулю, то выполнение команды RIOFF завершается и значение кода условия устанавливается равным нулю. Согласно варианту осуществления изобретения, для определения текущего значения разряда номер 24 ССП выполняется команда EXTRACT PSW (от англ.: извлечь значение слова состояния программы).

На фиг. 13 показана схема команды RION согласно варианту осуществления изобретения. В соответствии с фиг. 13, команда 1300 RION содержит поля 1302 и 1304 кода операции (для обозначения кода операции используется термин “опкод”, причем в данном случае - “разделенный опкод”). Значение полей 1302 и 1304 идентифицируют команду 1300 RION для процессора, такого как процессор 106 (см. фиг. 5). Показанный на фиг. 13 в виде схемы вариант команды RION является одним из возможных, и специалистам в данной области должно быть понятно, что иные варианты осуществления команды RION могут иметь иной формат и/или содержать иные операнды и/или код операции.

На фиг. 14 показана схема алгоритма команды RION согласно варианту осуществления изобретения. Согласно варианту осуществления изобретения, алгоритм, схема которого показана на фиг. 14, выполняется инструментальным модулем 506 (см. фиг. 5). На шаге 1402 производится выборка команды RION программы, выполняющейся в режиме низких привилегий (например, приложения 518, исполняющегося в режиме задач), например, из потока команд. Согласно варианту осуществления изобретения, проверяется разряд ССП (например, разряд номер 15) для определения того, выполняется ли программа в супервизорном режиме или в режиме низких привилегий (для обозначения режима низких привилегий в настоящей заявке также используется термин “режим задач”). На шаге 1404 определяется, разрешается ли выполнение команды RION. То, разрешается ли программе, работающей в режиме низких привилегий, выполнять команду RION, зависит от значения управляющего разряда S блока параметров RICCB (управляется только командой LRIC). Согласно варианту осуществления изобретения, если значение разряда S (например, содержащегося в блоке параметров RICCB) средства сбора сведений о ходе вычислений равняется единице, то программе, работающей в режиме низких привилегий, разрешается выполнять команду RION и алгоритм переходит к шагу 1408. В противном случае если значение разряда S равняется нулю, то программе, работающей в режиме низких привилегий, не разрешается выполнять команду RION и алгоритм переходит к шагу 1406. Согласно варианту осуществления изобретения, на шаге 1406 команда RION не изменяет первоначальные значения параметров, и значения управляющих параметров выполнения и ССП остаются без изменений. Согласно варианту осуществления изобретения, на шаге 1406 значение кода условия устанавливается равным двум, что указывает на запрет выполнения в режиме низких привилегий.

На шаге 1408 проверяется, установлено ли значение разряда корректности (также для этого разряда используется обозначение “V”) в составе управляющих параметров (например, блока параметров RICCB) средства сбора сведений о ходе вычислений равным единице. Разряд V отображает корректность значений набора управляющих параметров средства сбора сведений о ходе вычислений в процессоре, ранее загруженных командой LRIC. Если текущие значения управляющих параметров средства сбора сведений о ходе вычислений некорректны (т.е. выполненная ранее команда LRIC была некорректна), то алгоритм переходит к шагу 1410. Согласно варианту осуществления изобретения, на шаге 1410 значение кода условия устанавливается равным трем, что указывает на некорректность текущих значений управляющих параметров средства сбора сведений о ходе вычислений.

Если значение разряда V установлено равным единице, что указывает на корректность значений управляющих параметров средства сбора сведений о ходе вычислений, то алгоритм переходит на шаг 1412, на котором накопительный буфер и буфер данных команд (если буфер данных команд присутствует) очищаются от содержимого. Согласно варианту осуществления изобретения, буферы очищаются на шаге 1412 только в том случае, если текущее значение разряда RI в ССП установлено равным нулю. Затем выполнение алгоритма переходит на шаг 1414, на котором значение разряда RI в ССП (например, разряда номер 24) устанавливается равным единице. Согласно варианту осуществления изобретения, если значение разряда номер 24 ССП уже равняется единице, то выполнение команды RION завершается и значение кода условия устанавливается равным нулю. Согласно варианту осуществления изобретения, для определения текущего значения разряда номер 24 ССП выполняется команда EXTRACT PSW.

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

В соответствии с вышеизложенным, варианты изобретения могут быть осуществлены в форме компьютерных процедур и аппаратных средств реализации этих процедур. Вариант осуществления может включать компьютерный программный продукт 1500 (см. фиг. 15) в виде изделия, выполненный на машиночитаемой и пригодной для использования компьютером среде 1502 с логикой 1504 компьютерного программного кода, содержащей команды, хранящиеся на материальном носителе. Примеры изделий в виде машиночитаемой и пригодной для использования компьютером среды 1502 могут включать гибкие диски (дискеты), CD-ROM, накопители на жестких дисках, твердотельные флеш-диски, подключаемые по интерфейсу USB (от англ. Universal Serial Bus - универсальная последовательная шина) или иную машиночитаемую среду хранения данных, в случае, когда логика 1504 компьютерного программного кода, будучи загруженной и выполняемой компьютером, делает компьютер средством для осуществления данного изобретения. Варианты осуществления содержат логику 1504 компьютерного программного кода, например, хранящуюся в среде хранения информации, загруженную в компьютер и/или выполняемую компьютером, либо переданную по некоторой среде передачи информации, такой как электрические провода или кабели, волоконно-оптические линии связи, электромагнитное излучение, в случае, когда логика 1504 компьютерного программного кода, будучи загруженной и выполняемой компьютером, делает компьютер средством для осуществления данного изобретения. При применении в микропроцессоре общего назначения сегменты логики 1504 компьютерного программного кода конфигурируют данный микропроцессор для формирования специфических логических схем.

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

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

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

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

Может использоваться любая комбинация одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая среда передачи данных или машиночитаемая среда хранения данных. Машиночитаемой средой хранения данных может быть, например (но не ограничиваясь): электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, средство или устройство или любая работоспособная комбинация перечисленных сред. Более специфическими примерами машиночитаемых сред хранения данных могут быть, в том числе (но не ограничиваясь): электрическое соединение, содержащее один или более проводников; портативная компьютерная дискета (накопитель на гибких дисках); накопитель на жестких дисках; ОЗУ; ПЗУ; стираемое программируемое постоянное запоминающее устройство (СППЗУ) или флэш-память; оптоволокно; CD-ROM; оптическое запоминающее устройство; магнитное запоминающее устройство; любая работоспособная комбинация вышеперечисленных сред. Применительно к настоящей заявке машиночитаемой средой хранения данных может являться любая материальная среда, которая может содержать или хранить программу для использования или коммуникационное соединение с системой, средством или устройством, выполняющим команды.

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

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

Компьютерный программный код для выполнения операций одного или более аспектов настоящего изобретения может быть написан на одном или любой комбинации нескольких языков программирования, в том числе на языках объектно-ориентированного программирования, таких как Java, Smalltalk, C++ или подобных, и на обычных языках процедурного программирования, таких как язык “C” или подобных языках программирования. Программный код может выполняться: полностью на компьютере пользователя; частично на компьютере пользователя как автономный программный пакет; частично на компьютере пользователя и частично на удаленном компьютере; полностью на удаленном компьютере или сервере. В последнем случае удаленный компьютер может быть соединен с компьютером пользователя через коммуникационную сеть любого типа, в том числе через ЛВС или глобальную вычислительную сеть, либо может быть реализовано соединение с внешним компьютером (например, через сеть Интернет при посредничестве поставщика услуг Интернет).

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

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

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

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

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

1. Машиночитаемый носитель данных с хранящимся на нем компьютерным программным продуктом для активации и деактивации средства сбора сведений о ходе вычислений в процессоре, содержащим команды, предназначенные для выполнения схемой обработки с целью осуществления способа, включающего:
выборку процессором команды для выполнения указанным процессором в режиме низких привилегий, причем указанная команда является командой деактивации средства сбора сведений о ходе вычислений (командой RIOFF) или командой активации средства сбора сведений о ходе вычислений (командой RION);
на основе определения процессором того, что средство сбора сведений о ходе вычислений разрешает выполнение указанной команды в режиме низких привилегий, а также того, что значения управляющих параметров, связанных со средством сбора сведений о ходе вычислений, корректны, выполнение указанной команды, включающее одно из следующего:
если указанная команда является командой RIOFF, то деактивацию средства сбора сведений о ходе вычислений, включающую обновление значения разряда в слове состояния программы (ССП) процессора для указания того, что процессор не должен собирать данные для средства сбора сведений о ходе вычислений,
а если указанная команда является командой RION, то активацию средства сбора сведений о ходе вычислений, включающую обновление значения разряда в ССП процессора для указания того, что процессор должен собирать данные для средства сбора сведений о ходе вычислений.

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

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

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

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

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

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

8. Машиночитаемый носитель данных по п. 1, в котором указанный способ также включает:
сохранение значения поля числа оставшихся интервалов выборок (поля RSIC), основанное на указанной деактивации;
выборку процессором команды RION;
восстановление значения поля RSIC.

9. Способ активации и деактивации средства сбора сведений о ходе вычислений в процессоре, включающий:
выборку процессором команды для выполнения указанным процессором в режиме низких привилегий, причем указанная команда является командой деактивации средства сбора сведений о ходе вычислений (командой RIOFF) или командой активации средства сбора сведений о ходе вычислений (командой RION);
на основе определения процессором того, что средство сбора сведений о ходе вычислений разрешает выполнение указанной команды в режиме низких привилегий, а также того, что значения управляющих параметров, связанных со средством сбора сведений о ходе вычислений, корректны, выполнение указанной команды, включающее одно из следующего:
если указанная команда является командой RIOFF, то деактивацию средства сбора сведений о ходе вычислений, включающую обновление значения разряда в слове состояния программы (ССП) процессора для указания того, что процессор не должен собирать данные для средства сбора сведений о ходе вычислений,
а если указанная команда является командой RION, то активацию средства сбора сведений о ходе вычислений, включающую обновление значения разряда в ССП процессора для указания того, что процессор должен собирать данные для средства сбора сведений о ходе вычислений.

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

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

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

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

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

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

16. Способ по п. 9, также включающий:
сохранение значения поля числа оставшихся интервалов выборок (поля RSIC), основанное на указанной деактивации;
выборку процессором команды RION;
восстановление значения поля RSIC.

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

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

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

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



 

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

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

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

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

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

Изобретение относится к устройству контроля цифровой обработки. .

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

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

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

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