измерительное средство для функций адаптера
Классы МПК: | G06F11/34 запись (регистрация) или статистическая оценка рабочего времени вычислительного устройства, например длительности простоя, операций ввода-вывода |
Автор(ы): | Питер Кеннет ШВЕД (US), Дейвид КРАДДОК (US), Томас ГРЕГГ (US), Бет ГЛЕНДЕННИНГ (US), Эрик Норман ЛЕЙС (US), Стивен Гленн УИЛКИНС (US), Фрэнк Уилльям БРАЙС Джр. (US) |
Патентообладатель(и): | ИНТЕРНЭШНЛ БИЗНЕС МАШИНЗ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2010-11-08 публикация патента:
20.07.2014 |
Изобретение относится к области измерения использования ресурсов, которое связано с обработкой ввода-вывода. Техническим результатом является предоставление измерительного средства для сбора и представления мелкоструктурной информации об использовании для функций адаптера в подсистеме ввода/вывода. Поток данных ввода-вывода, характерный для адаптера, отслеживается на основе отдельных функций, и результаты динамически представляются пользователю. Эта информация полезна, например, для настройки производительности, выравнивания нагрузки и выставления счетов на основании использования. 2 н. и 8 з.п. ф-лы, 37 ил.
Формула изобретения
1. Компьютерная система для измерения использования ресурсов в вычислительной среде, где указанная компьютерная система содержит:
память; и
процессор, связанный с памятью, причем компьютерная система сконфигурирована
выполнять способ, причем указанный способ включает:
выборочную регистрацию функции PCI для измерения, причем выборочная регистрация включает выполнение команды изменения управления функцией шины PCI (Modify PCI Function Controls, MPFC) для регистрации функции PCI для измерения, при этом функция PCI идентифицируется в команде MPFC дескриптором функции, при этом дескриптор функции содержит номер функции, идентифицирующий функцию PCI, причем номер функции сконфигурирован адресовать функцию PCI и служить индексом в таблице функций, которая содержит один или более признаков функции PCI, и причем команда MPFC определяет местоположение в памяти для информации слежения для функции PCI;
определение того, что (a) к функции PCI осуществляется доступ посредством команды, или того, что (b) функция PCI запрашивает доступ к системной памяти, связанной с функцией PCI;
отслеживание информации, характерной для функции PCI, причем информация слежения включает подсчет определенных осуществляющих доступ команд или подсчет определенных запрошенных операций доступа к памяти, и причем информация отслеживается на основе отдельных функций; и
сохранение информации слежения в местоположении в памяти.
2. Компьютерная система по п.1, отличающаяся тем, что при указанном определении определяют, что к функции PCI осуществляется доступ посредством команды, при этом отслеживание дополнительно включает:
определение типа команды; и
обновление счетчика, предназначенного исключительно для этого типа команды и для функции PCI.
3. Компьютерная система по п.1, отличающаяся тем, что при указанном определении определяют, что функция PCI запрашивает операцию доступа к памяти, при этом отслеживание дополнительно включает:
определение типа операции доступа к памяти; и
обновление счетчика, предназначенного исключительно для функции PCI и этого типа операции доступа к памяти.
4. Компьютерная система по п.3, отличающаяся тем, что функция PCI имеет множество адресных пространств, приписанных к ней, при этом счетчик является отдельным для одного адресного пространства из множества адресных пространств.
5. Компьютерная система по п.1, отличающаяся тем, что способ дополнительно включает автоматическое представление отслеживаемой информации пользователю.
6. Компьютерная система по п.5, отличающаяся тем, что отслеживание включает обновление одного или более счетчиков, при этом автоматическое представление включает периодическое обновление блока управления, доступного пользователю, значениями из одного или более счетчиков.
7. Компьютерная система по п.1, отличающаяся тем, что способ дополнительно включает определение того, должно ли быть выполнено отслеживание для функции PCI, при этом отслеживание активировано на основе отдельных адаптерных функций, и выполнение отслеживания на основании определения того, что отслеживание должно быть выполнено.
8. Способ измерения использования ресурсов в вычислительной среде, причем указанный способ включает:
выборочную регистрацию функции PCI для измерения, при этом выборочная регистрация включает выполнение компонентом вычислительной среды команды изменения управления функцией шины PCI (Modify PCI Function Controls, MPFC) для регистрации функции PCI для измерения, при этом функция PCI идентифицируется в команде MPFC дескриптором функции, причем дескриптор функции содержит номер функции, идентифицирующий функцию PCI, при этом номер функции сконфигурирован адресовать функцию PCI и служить индексом в таблице функций, которая содержит один или более признаков функции PCI, и причем команда MPFC определяет местоположение в памяти для информации слежения для функции PCI;
определение компонентом того, что (а) к функции PCI осуществляется доступ посредством команды, или того, что (b) функция PCI запрашивает доступ к системной памяти, связанной с функцией PCI;
отслеживание компонентом информации, характерной для функции PCI, причем информация слежения включает подсчет определенных осуществляющих доступ команд или подсчет определенных запрошенных операций доступа к памяти, и причем информация отслеживается на основе отдельных функций; и
сохранение информации слежения в местоположении в памяти.
9. Способ по п.8, отличающийся тем, что компонент является процессором, и указанный процессор определяет, что к функции PCI осуществляется доступ посредством команды, при этом отслеживание дополнительно включает:
определение типа команды; и
обновление счетчика, предназначенного исключительно для этого типа команды и для функции PCI.
10. Способ по п.8, отличающийся тем, что компонент является концентратором ввода-вывода вычислительной среды, где указанный концентратор ввода-вывода определяет, что функция PCI запрашивает операцию доступа к памяти, при этом отслеживание дополнительно включает:
определение типа операции доступа к памяти; и
обновление счетчика, предназначенного исключительно для функции PCI и этого типа операции доступа к памяти.
Описание изобретения к патенту
Предшествующий уровень техники
Это изобретение в целом относится к обработке ввода/вывода и, в частности, к измерению использования ресурсов, которое связано с обработкой ввода-вывода.
В крупных вычислительных системах часто доступно измерительное средство, которое предоставляет информацию о потоке данных через инфраструктуру ввода-вывода. Такая информация полезна для настройки производительности программ, выравнивания нагрузки и выставления счетов пользователям на основании использования ресурсов.
В качестве одного конкретного примера, в машинах System z®, поставляемых International Business Machines Corporation, предоставляются утилиты для получения информации о потоке данных, проходящем через инфраструктуру ввода-вывода, которая называется канальной подсистемой. Канальная подсистема обеспечивает согласованный интерфейс для канального доступа через канальные типы и различные средства передачи данных подсистемы ввода-вывода. Этот интерфейс, называемый командой вызова запуска субканала (Start Subchannel Call), исполняется встроенным программным обеспечением от имени пользователя. Встроенное программное обеспечение скрывает подробности физического канала от пользователя и снабжено утилитами, такими как утилита измерения, чтобы отслеживать использование ресурса.
Однако в других инфраструктурах ввода-вывода подробности физического канала открыты пользователю, а средства, предоставляемые этими инфраструктурами, которые скрывают подробности, являются недоступными.
Публикация США № 2009/0125666 A1, опубликованная 14 мая 2009, под авторством Freking et al., "Dynamically Scalable Queues For Performance Driven PCI Express Memory Traffic", описывает компьютерный программный продукт для реализации способа в системе обработки данных и протокол PCI Express для осуществления высокопроизводительной передачи данных ввода-вывода для большого числа разнообразных конфигураций ввода-вывода, которые включают переменные размеры пакетов и/или переменные/различные количества транзакций на соединении ввода-вывода. Протокол PCI Express усовершенствован для поддержки использования счетчиков и динамически изменяемых размеров очередей. В добавок к стандартным записям очереди, предоставляются/резервируются несколько (или выбранное число) динамически изменяемых записей очереди, и в усовершенствованном протоколе PCI Express предоставляется утилита динамической модификации очереди (dynamic queue modification, DQM), чтобы отслеживать происходящую текущую передачу данных и регулировать, когда размер(ы) записей очереди изменяется (увеличивается или уменьшается) на основании текущего потока данных, передающегося по соединению ввода-вывода PCI Express. Усовершенствованный протокол PCI Express предоставляет точку равновесия, в которой многие крупные пакеты данных передаются эффективно, одновременно устанавливая ограничение на число каждого размера крупных пакетов.
В патенте США № 7600053, выданном 6 октября 2009 на имя Carlson et al., "Emulation of Extended Input/Output Measurement Block Facilities", эмулируется средство блока расширенного измерения ввода-вывода. Средство предусматривает сбор соответствующих данных измерения ввода-вывода и сохранение для последующего эффективного извлечения этих данных в блоке расширенного измерения. Сохраненные данные относятся к производительности субканала ввода-вывода.
Патент США № 7631097, выданный 8 декабря 2009 на имя Moch et al., "Method and Apparatus for Optimizing the Responsiveness and Throughput of a System Performing Packetized Data Transfers Using a Transfer Count Mark", описывает механизм для управления пакетной передачей данных в системе, содержащей передающее и приемное устройства. Передающее устройство может передавать данные на приемное устройство в большом количестве пакетов, каждый пакет имеет размер, равный предопределенному числу байтов данных. Передающее устройство может содержать блок подсчета передачи, чтобы вести подсчет передачи данных на основании числа передаваемых байтов данных. Приемное устройство может программировать передающее устройство посредством отметки подсчета передачи, которая может быть числом, которое соответствует определенному подсчету подсчета передачи данных. Передающее устройство может рассчитывать разницу между подсчетом передачи данных и отметкой подсчета передачи. Если разница между подсчетом передачи и отметкой подсчета передачи меньше, чем предопределенное число, передающее устройство может передавать на приемное устройство короткий пакет данных, содержащий меньше предопределенного числа байтов данных.
Краткое изложение сущности изобретения
Определенные инфраструктуры ввода-вывода, такие как PCI Express, не определяют стандартный интерфейс для измерения активности подсистемы. Однако способность измерять поток данных ввода-вывода является желательной функцией. Следовательно, в соответствии с одной особенностью настоящего изобретения, предоставляется измерительное средство для функций адаптера, таких как функции PCI.
Недостатки имеющегося уровня техники преодолеваются, а преимущества обеспечиваются, посредством компьютерного программного продукта для измерения использования ресурсов в вычислительной среде. Компьютерный программный продукт содержит машиночитаемую запоминающую среду, считываемую устройством обработки данных и хранящую команды для выполнения устройством обработки данных с целью осуществления способа. Способ включает, например, выполнение команды изменения управления функцией шины PCI (Modify PCI Function Controls, MPFC), содержащей дескриптор функции для идентификации адаптера, причем MPFC определяет место в памяти для информации слежения; определение, что доступ к функции адаптера вычислительной среды осуществляется посредством команды или запросом доступа к системной памяти, связанной с функцией адаптера; отслеживание информации, характерной для функции адаптера, причем отслеживание информации включает подсчет определенных осуществляющих доступ команд или подсчет определенных запрошенных доступов к памяти, причем информация отслеживается на основе отдельных адаптерных функций; и сохранение информации слежения в местоположении в памяти.
В изобретении также описаны и заявлены способы и системы, в которых применяют одну или несколько особенностей настоящего изобретения.
Дополнительные признаки и преимущества реализуются посредством методик согласно настоящему изобретению. Другие варианты осуществления и признаки изобретения подробно описаны в настоящем изобретении и считаются частью заявленного изобретения.
Краткое описание чертежей
Одна или несколько особенностей настоящего изобретения конкретно охарактеризованы и отдельно заявлены в формуле изобретения, следующей за описанием. Перечисленные выше и другие задачи, признаки и преимущества изобретения станут ясны из следующего далее подробного описания в сочетании с сопровождающими его чертежами, на которых:
ФИГ.1 представляет собой изображение одного варианта осуществления вычислительной среды, которая должна включать и использовать одну или более особенностей настоящего изобретения;
ФИГ.2 представляет собой изображение одного варианта осуществления логической схемы, которая должна отслеживать команды, в соответствии с одной особенностью настоящего изобретения;
ФИГ.3 представляет собой изображение одного варианта осуществления счетчиков, связанных с функцией, в соответствии с одной особенностью настоящего изобретения;
ФИГ.4А представляет собой изображение одного варианта осуществления счетчиков передачи, используемых, чтобы отслеживать считывания и записи DMA из функций адаптера, в соответствии с одной особенностью настоящего изобретения;
ФИГ.4Б представляет собой изображение одного варианта осуществления логической схемы, которая должна отслеживать операции DMA, в соответствии с одной особенностью настоящего изобретения;
ФИГ.5 представляет собой изображение одного варианта осуществления измерительного блока управления для функции адаптера, в соответствии с одной особенностью настоящего изобретения;
ФИГ.6А - один из вариантов осуществления команды Modify PCI Function Controls, используемой согласно одной из особенностей настоящего изобретения;
ФИГ.6Б - один из вариантов осуществления поля, используемого командой Modify PCI Function Controls, проиллюстрированной на ФИГ.6А согласно одной из особенностей настоящего изобретения;
ФИГ.6В представляет собой изображение одного варианта осуществления другого поля, используемого командой Modify PCI Function Controls, представленной на ФИГ.6А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.6Г представляет собой изображение одного варианта осуществления содержимого блока информации о функциях (FIB) в соответствии с одной особенностью настоящего изобретения;
ФИГ.7 - один из вариантов осуществления общего представления логики команды Modify PCI Function Controls согласно одной из особенностей настоящего изобретения;
ФИГ.8 представляет собой изображение одного варианта осуществления логической схемы операции установки параметров измерения функций PCI, которая может быть определена командой Modify PCI Function Controls, в соответствии с одной особенностью настоящего изобретения;
ФИГ.9А представляет собой изображение одного варианта осуществления команды загрузки PCI (PCI Load), используемой в соответствии с одной особенностью настоящего изобретения;
ФИГ.9Б представляет собой изображение одного варианта осуществления поля, используемого командой PCI Load, представленной на ФИГ.9А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.9В представляет собой изображение одного варианта осуществления другого поля, используемого командой PCI Load, представленной на ФИГ.9А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.10А-10Б представляют собой изображения одного варианта осуществления логической схемы, которая должна выполнять операцию PCI Load, в соответствии с одной особенностью настоящего изобретения;
ФИГ.11А представляет собой изображение одного варианта осуществления команды сохранения PCI (PCI Store), используемой в соответствии с одной особенностью настоящего изобретения;
ФИГ.11Б представляет собой изображение одного варианта осуществления поля, используемого командой PCI Store, представленной на ФИГ.11А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.11В представляет собой изображение одного варианта осуществления другого поля, используемого командой PCI Store, представленной на ФИГ.11А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.12А-12Б представляют собой изображения одного варианта осуществления логической схемы, которая должна выполнять операцию PCI Store, в соответствии с одной особенностью настоящего изобретения;
ФИГ.13А представляет собой изображение одного варианта осуществления команды PCI Store Block, используемой в соответствии с одной особенностью настоящего изобретения;
ФИГ.13Б представляет собой изображение одного варианта осуществления поля, используемого командой PCI Store Block, представленной на ФИГ.13А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.13В представляет собой изображение одного варианта осуществления другого поля, используемого командой PCI Store Block, представленной на ФИГ.13А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.13Г представляет собой изображение одного варианта осуществления еще одного поля, используемого командой PCI Store Block, представленной на ФИГ.13А, в соответствии с одной особенностью настоящего изобретения;
ФИГ.14А-14Б представляют собой изображения одного варианта осуществления логической схемы, которая должна выполнять операцию PCI Store Block, в соответствии с одной особенностью настоящего изобретения;
ФИГ.15 иллюстрирует один вариант осуществления компьютерного программного продукта, в котором содержится одна или несколько особенностей настоящего изобретения;
ФИГ.16 иллюстрирует один вариант осуществления хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения;
ФИГ.17 иллюстрирует дополнительный пример компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения;
ФИГ.18 иллюстрирует другой пример компьютерной системы, содержащей компьютерную сеть, в которой содержится и используется одна или несколько особенностей настоящего изобретения;
ФИГ.19 иллюстрирует один вариант осуществления различных элементов компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения;
ФИГ.20А иллюстрирует один вариант осуществления исполнительного устройства компьютерной системы по ФИГ.19, в которой содержится и используется одна или несколько особенностей настоящего изобретения;
ФИГ.20Б иллюстрирует один вариант осуществления устройства перехода компьютерной системы по ФИГ.19, в котором содержится и используется одна или несколько особенностей настоящего изобретения;
ФИГ.20В представляет собой изображение одного варианта осуществления блока загрузки/сохранения компьютерной системы, представленной на ФИГ.19, в которой содержится и используется одна или несколько особенностей настоящего изобретения; и
ФИГ.21 иллюстрирует один вариант осуществления эмулированной хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения.
Подробное описание
В соответствии с одной особенностью настоящего изобретения, предоставляется измерительное средство для сбора и представления мелкоструктурной информации об использовании для подсистемы ввода/вывода, которая содержит адаптеры, такие как адаптеры PCI Express. Эта информация полезна, например, для настройки производительности, выравнивания нагрузки и выставления счетов на основании использования. В одном конкретном примере, характерный для адаптера поток данных ввода-вывода отслеживается на основе отдельных адаптерных функций, и результаты динамически представляются пользователю. Например, на основе отдельных адаптерных функций, отслеживаются команды доступа к адаптеру, и подсчитывается поток данных прямого доступа к памяти. Команды доступа отслеживаются, например, встроенным программным обеспечением процессора, а поток данных прямого доступа к памяти подсчитывается, например, аппаратными счетчиками. Подсистема ввода-вывода динамически представляет значения измерений пользователю путем обновления блока управления в определенном пользователем местоположении в памяти. Измерения являются независимыми от устройства в том понимании, что типы устройств (например, адаптеров) нет необходимости знать заранее.
Как используется в данном документе, термин "адаптер" включает любой тип адаптера (например, адаптер запоминающего устройства, сетевой адаптер, обрабатывающий адаптер, адаптер PCI, криптографический адаптер, другой тип адаптеров ввода-вывода, и т.п.) В одном из вариантов осуществления адаптер содержит одну функцию. Тем не менее, в других вариантах осуществления адаптер может содержать множество функций. В зависимости от того, содержит ли адаптер одну функцию или множество функций, применима одна или несколько особенностей настоящего изобретения. Кроме того, в примерах, представленных в данном документе, адаптер используется взаимозаменяемо с функцией адаптера (например, функцией PCI), если не указано иное.
Далее будет описан один из вариантов осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения согласно ФИГ.1, изображены различные режимы. В одном из примеров вычислительной средой 100 является сервер System z®, предлагаемый International Business Machines Corporation. Основой сервера System z® является z/Architecture®, предлагаемая International Business Machines Corporation. Подробности, касающиеся z/Architecture®, описаны в публикации IBM® под названием "z/Architecture-Principles of Operation", публикация IBM № SA22-7832-07 (февраль 2009 г.). IBM®, System z® и z/Architecture являются зарегистрированными товарными знаками International Business Machines Corporation (Армонк, штат Нью-Йорк, США). Другие названия, используемые в заявке, могут являться зарегистрированными товарными знаками, товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.
В одном из примеров вычислительная среда 100 содержит один или несколько центральных процессоров (ЦП) 102, связанных с системной памятью 104 (иначе называемой основной памятью) посредством контроллера 106 памяти. Для доступа к системной памяти 104 центральный процессор 102 выдает запрос чтения или записи, в котором содержится адрес, используемый для доступа к системной памяти. Поскольку адрес, содержащийся в запросе, обычно не может непосредственно использоваться для доступа к системной памяти, он транслируется в адрес, который может непосредственно использоваться для доступа к системной памяти. Адрес транслируется посредством механизма 108 трансляции (XLATE). Например, адрес транслируется из виртуального адреса в действительный или абсолютный адрес с использованием, например, динамической трансляции адресов (DAT).
Запрос, содержащий транслированный адрес, принимается контроллером 106 памяти. В одном из примеров контроллер 106 памяти состоит из аппаратного обеспечения и используется для арбитража при доступе к системной памяти и для обеспечения непротиворечивости памяти. Этот арбитраж осуществляется применительно к запросам, принимаемым от ЦП 102, а также запросам, принимаемым от одного или нескольких адаптеров 110. Подобно центральным процессорам адаптеры выдают в системную память 104 запросы на получение доступа к системной памяти.
В одном примере, адаптер 110 является адаптером взаимосвязи периферийных компонентов (PCI) или PCI Express (PCIe), который содержит одну или более функций 111 PCI. Функция PCI выдает запрос, который маршрутизируется в концентратор 112 ввода-вывода (например, концентратор PCI) посредством одного или нескольких коммутаторов (например, коммутаторов PCIe) 114. В одном примере, концентратор ввода-вывода состоит из аппаратного обеспечения, включая один или более конечных автоматов, и соединен с контроллером 106 памяти посредством шины 120 ввод-ввывод-память.
Концентратор ввода-вывода содержит, например, корневой комплекс 116, который принимает запрос от коммутатора. Запрос содержит адрес ввода-вывода, который подается на блок 118 защиты и трансляции адреса, который осуществляет доступ к информации, используемой для запроса. В качестве примеров, запрос может содержать адрес ввода-вывода, используемый для выполнения операции прямого доступа к памяти (DMA) или для запроса инициируемого сообщениями прерывания (MSI). Блок 118 защиты и трансляции адреса осуществляет доступ к информации, используемой для запроса DMA или MSI. В качестве конкретного пример, для операции DMA, информация может быть получена, чтобы транслировать адрес. Транслированный адрес затем направляется на контроллер памяти, чтобы осуществлять доступ к системной памяти.
В одном примере, информация, используемая для запроса DMA или MSI, подаваемого функцией адаптера, получается из записи таблицы устройств, расположенной в концентраторе ввода-вывода (например, в блоке защиты и трансляции адреса). Запись таблицы устройств содержит информацию для функции адаптера, и с каждой функцией адаптера связана по меньшей мере одна запись таблицы устройств. Например, имеется одна запись таблицы устройств на адресное пространство, приписанное к функции адаптера. Для запросов, подаваемых от функций адаптера, запись таблицы устройств находится с помощью ID реквестора (определяющего, например, номер шины, номер устройства и номер функции), предоставляемого в запросе.
В дополнение к адаптерам, и особенно функциям адаптера, подающим запросы, доступ к адаптерам, в частности функциям адаптера, может осуществляться процессорами 102. Этот доступ осуществляется посредством команд, подаваемых процессорами. В этом примере команды являются характерными для инфраструктуры ввода/вывода. То есть, поскольку инфраструктура ввода-вывода основана на PCI или PCIe, команды являются командами PCI. В качестве некоторых примеров команд PCI можно назвать PCI Load (Загрузить), PCI Store (Сохранить), PCI Store Block (Сохранить), PCI Modify (Изменить) и PCI Refresh Translations (Обновить трансляции). Хотя в этом примере инфраструктура ввода-вывода и команды основаны на PCI, в других вариантах осуществления могут использоваться другие инфраструктуры и соответствующие команды.
Для запросов, которые подаются процессорами на функции адаптера, производится ссылка на запись таблицы функций, связанную с функцией адаптера. Запись таблицы функций, которая хранится в защищенной памяти и отыскивается с помощью дескриптора функции, содержит признаки функции адаптера. В одном примере дескриптор функции содержит индикатор активации, указывающий, активирован ли дескриптор; номер функции, который идентифицирует функцию (это статический идентификатор и может использоваться в качестве индекса в таблице функций); и номер экземпляра, определяющий конкретный экземпляр этого дескриптора функции.
В соответствии с одной особенностью настоящего изобретения, предоставляется функциональная возможность, в которой на основе отдельных функций (в данном документе функция адаптера и функция используются взаимозаменяемо) автоматически подсчитывается выполнение одной или более характерных для PCI команд, и измеряется объем данных, передаваемых в системную память и из нее функцией адаптера. Кроме того, предоставляется функциональная возможность для периодического динамического обновления системной памяти текущими значениями измерений.
Один вариант осуществления логической схемы для отслеживания команд доступа PCI описывается со ссылкой на ФИГ.2. Команда доступа - это команда, которая осуществляет доступ к функции адаптера (например, адресному пространству функции адаптера) или выполняет действие от имени функции адаптера (например, заполняет или изменяет запись таблицы устройств). В одном примере эти команды реализуются с использованием встроенного программного обеспечения процессора, а следовательно отслеживание команд выполняет встроенное программное обеспечение. В контексте настоящего изобретения аппаратно-программное обеспечение содержит, например, микрокод, милликод и/или макрокод процессора. Оно содержит, например, команды аппаратного уровня и/или структуры данных, используемые при реализации высокоуровневого машинного кода. В одном варианте осуществления изобретения оно содержит, например, собственный код, который, как правило, поставляют как микрокод, который содержит выверенное программное обеспечение, или микрокод, характерный для базового аппаратного обеспечения, и управляет доступом операционной системы к аппаратному обеспечению системы.
Обращаясь к ФИГ.2, сначала завершается выполнение основной части команды, шаг 200. То есть, команда PCI, такая как команда Загрузить (Load), Сохранить (Store), Сохранить блок (Store Block), Изменить (Modify) или Обновить трансляции (Refresh Translations), поданная процессором, чтобы выполнить операцию для определенной функции адаптера, выполняется, и основная часть этой команды завершается.
После этого осуществляется определение, было ли выполнение основной части команды успешным, запрос 202. Это определение производится, например, проверкой состояния, связанного с командой (например, возвращаемого концентратором ввода-вывода). Если выполнение не было успешным, то выполнение команды завершается, шаг 204, и, в этом варианте осуществления, отслеживание для этой команды не обеспечивается. (В других вариантах осуществления неудавшиеся команды также могут учитываться). Однако, если выполнение было успешным, то осуществляется дальнейшее определение, активировано ли измерение для этой функции адаптера, запрос 206. То есть, в одном примере, измерение может быть активировано на основе отдельных функций адаптера путем установки индикатор активации измерения в блоке управления, связанном с функцией адаптера. Если измерение не активировано, то выполнение команды снова завершается без какого-либо отслеживания, шаг 204.
Однако, если измерение активировано для функции, то счетчик использования команды извлекается для функции из защищенной памяти, шаг 208. Например, в одном варианте осуществления, имеется множество счетчиков для каждой функции. Как показано на ФИГ.3, функция А содержит множество счетчиков, таких как, например, счетчик 310 загрузки, счетчик 312 сохранения, счетчик 314 сохранения блока, счетчик 316 изменения функции и счетчик 318 обновления трансляций. Каждый из этих счетчиков соответствует типу команды PCI, который может использоваться для доступа к функции PCI и для которого требуется отслеживание. Осуществляется определение, какой тип команды был выполнен, и извлекается счетчик, соответствующий команде, которая только что была успешно выполнена. Например, если была выполнена команда загрузки, то из безопасной памяти извлекается счетчик 310 загрузки. В других вариантах осуществления могут использоваться и/или отслеживаться больше, меньше или другие счетчики и/или команды управления.
Согласно ФИГ.2, после извлечения надлежащего счетчика использования команд, он увеличивается (например, на единицу) и сохраняется обратно в безопасной памяти, шаг 210. Это завершает выполнение команды, шаг 204.
В дополнение к отслеживанию команды, в соответствии с одной особенностью настоящего изобретения, также отслеживаются операции DMA. В частности, подсчитываются объемы передачи данных на основе отдельных функции. Как правило, операции DMA являются невидимыми для ЦП, использующего ранее описанные способы подсчета команд, поэтому используется альтернативный способ. Например, как показано на ФИГ.4А, когда функция 110 PCI запускает операцию записи или чтения DMA, она принимается на концентраторе 112 ввода-вывода через один или более коммутаторов 114. С учетом получения пакета чтения или записи PCI на концентраторе ввода-вывода от данной функции PCI, счетчик 400 передачи данных в концентраторе, и, в частности, в корневом комплексе 116, увеличивается в соответствии с размером передачи данных. В одном конкретном примере, для каждой функции PCI поддерживается уникальный набор счетчиков передачи данных чтения и записи. Эти счетчики отслеживают, например, число передаваемых байтов. Если, например, операция DMA является операцией чтения, то счетчик чтения обновляется числом считанных байтов. Аналогично, если операция DMA является операцией записи, то счетчик записи обновляется числом записанных байтов. В одном примере счетчики являются аппаратными счетчиками (например, 32-битными счетчиками на 32-байтной глубине детализации).
Дальнейшие подробности относительно отслеживания операций DMA описываются со ссылкой на ФИГ.4Б. В одном примере эту логическую схему выполняет концентратор ввода-вывода. Как показано на ФИГ.4Б, сначала запрос DMA принимается на концентраторе ввода-вывода от функции PCI, шаг 450. Осуществляется определение, активировано ли измерение для функции PCI, запрос 452. То есть, измерение активировано для конкретной функции адаптера. Это определение осуществляется посредством проверки индикатора, связанного с функцией. Если индикатор активации измерения не установлен, то отслеживание операции DMA завершено. Однако, если измерение активировано для этой конкретной функции PCI, то осуществляется определение типа обрабатываемого запроса, шаг 454. То есть, является ли запрос запросом чтения или записи. Кроме того, могут подсчитываться и другие типы операций, такие как инициируемые сообщениями прерывания или другие.
На основании типа запроса счетчик для этого типа и для этой функции выбирается и обновляется, шаг 458. В одном примере это происходит одновременно с обработкой DMA. Это завершает отслеживание запроса DMA.
В дополнение к вышеуказанному, в соответствии с одной особенностью настоящего изобретения, имеется блок управления измерением в системной памяти для каждой функции PCI, который периодически (например, каждые четыре секунды) динамически обновляется. Например, встроенное программное обеспечение автоматически обновляет один или более блоков управления для одной или более функций адаптера периодической выборкой значений измерений для функций. Например, встроенное программное обеспечение периодически считывает счетчики из концентратора ввода-вывода и добавляет их к накопленному подсчету в блоке управления измерением.
Один вариант осуществления блока 500 управления измерением представлен на ФИГ.5. Как показано, в этом примере блок 500 управления измерением содержит различные параметры, включая, например:
Подсчет 502 выборки: Это поле увеличивается каждый раз, когда подсистема ввода-вывода обновляет блок управления измерением;
Поле 504 операций сохранения: Это поле представляет собой обновляемое значение команд сохранения, которые были выполнены для функции PCI, связанной с этим блоком управления. Это поле обновляется путем добавления значения в счетчике 312 сохранения к значению этого поля.
Поля в этом блоке управления (исключая поле подсчета выборки) могут накапливаться в течение заданного периода времени или переустанавливаться после каждого периода выборки, так что значение отражает подсчеты для одного периода выборки. Период накопления определяется на основании политики и может перестраиваться;
Поле 506 операций загрузки: Это поле содержит подсчет операций загрузки для этой функции PCI. Это поле обновляется путем добавления значения в счетчике 310 загрузки к значению этого поля;
Поле 508 операций сохранения блока: Это поле содержит подсчет для операций сохранения блока для этой функции PCI. Это поле обновляется путем добавления значения в счетчике 314 сохранения блока к значению этого поля;
Поле 510 операций обновления трансляции: Это поле содержит подсчет команд обновления трансляций для этой функции PCI. Это поле обновляется путем добавления значения в счетчике 318 обновления трансляций к значению этого поля. Команда обновления трансляций используется, чтобы обновлять информацию трансляции, используемую адаптером; и
Счетчик(и) 512 чтения/записи DMA: Это поле также содержит обновленную информацию счетчиков чтения и записи для этой функции PCI. В этом примере эти счетчики являются 64-битными счетчиками. Например, счетчики 400 передачи периодически извлекаются из концентратора ввода/вывода и используются, чтобы обновлять счетчики 512 чтения/записи DMA.
К тому же, каждое из полей в блоке измерения динамически обновляется в определенные отрезки времени. Поле подсчета выборки увеличивается, и каждое из других полей обновляется путем добавления или замены значения в блоке управления его соответствующим счетчиком в защищенной памяти. В одном конкретном примере функция PCI может обладать одним или более адресными пространствами, определенными для нее, а следовательно корневой комплекс тогда содержит пару счетчиков чтения/записи для каждого адресного пространства функции. Аналогично, блок измерения этой функции PCI включает пары чтения/записи счетчиков для каждого из адресных пространств.
Чтобы активировать измерительное средство для функции, в одном примере операционная система выполняет команду регистрации измерения, называемую командой изменения управления функции шины PCI (Modify PCI Function Controls). Выполнение этой команды используется, чтобы информировать подсистему ввода-вывода об адресах в системной памяти для блока управления измерением, а также о ключе, используемом для доступа к этому местоположению. В одном конкретном примере эта команда также может отслеживаться, и поэтому в таком случае для этой команды управления в блоке управления измерения будет иметься поле, а также счетчик в защищенной памяти (см., например, счетчик 316 изменения функции).
Дальнейшие подробности относительно команды Modify PCI Function Controls описываются в данном документе. Обращаясь к ФИГ.6А, команда 600 Modify PCI Function Controls содержит, например, код 602 операции, указывающий команду Modify PCI Function Controls; первое поле 604, указывающее местоположение, в котором находится различная информация, касающаяся функции адаптера, для которой устанавливаются рабочие параметры; и второе поле 606, указывающее местоположение, из которого извлекается блок информации о функциях PCI (FIB). Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.
В одном из вариантов осуществления в поле 1 указан регистр общего назначения, в котором содержится различная информация. Как показано на ФИГ.6Б, в содержимом регистре содержится, например, дескриптор 610 функции, который идентифицирует дескриптор функции адаптера, от имени которого выполняется команда изменения;
адресное пространство 612, указывающее адресное пространство в системной памяти, соответствующее функции адаптера, указанной дескриптором функции; управление 614 операцией, которое определяет операцию, выполняемую для функции адаптера; и указатель 616 состояния, который указывает состояние команды при ее выполнении с использованием заданного кода.
В одном из вариантов осуществления дескриптор функции содержит, например, разрешающий индикатор, указывающий, активирован ли дескриптор, номер функции, указывающий функцию адаптера (это статический идентификатор, который может использоваться для индексации в таблице функций); и номер экземпляра, указывающий конкретный экземпляр этого дескриптора функции. Для каждой функции адаптера предусмотрен один дескриптор функции, который используется для определения местоположения записи в таблице функций (FTE). Каждая запись в таблице функций содержит рабочие параметры и/или другую информацию, связанную с функцией адаптера. В качестве одного из примеров, запись в таблице функций содержит: номер экземпляра: в этом поле указан конкретный экземпляр дескриптора функции адаптера, соответствующий записи в таблице функций;
индекс 1 n записи в таблице устройств (DTE): может существовать один или несколько индексов таблицы устройств, каждым из которых является индекс в таблице устройств для определения местоположения записи в таблице устройств (DTE). Для каждой функции адаптера существует одна или несколько записей в таблице устройств, каждая из которых содержит информацию, связанную с функцией адаптера, включая информацию, используемую для обработки запросов функции адаптера (например, запросов DMA, запросов MSI), и информацию, касающуюся запросов, связанных с функцией адаптера (например, команд шины PCI). Каждой записи в таблице устройств соответствует одно адресное пространство в системной памяти, присвоенное функции адаптера. Функция адаптера может иметь одно или несколько адресных пространств в системной памяти, присвоенных функции адаптера.
индикатор занятости: в этом поле указано, занята ли функция адаптера;
индикатор состояния постоянной ошибки: в этом поле указано, находится ли функция адаптера в состоянии постоянной ошибки;
индикатор инициированного восстановления: в этом поле указано, инициировано ли восстановление для функции адаптера;
индикатор полномочий: в этом поле указано, имеет ли операционная система, пытающаяся управлять функцией адаптера, полномочия для этого;
разрешающий индикатор: в этом поле указано, разрешена ли функция адаптера (например, 1 = разрешена, 0 = заблокирована);
идентификатор реквестора (RID): это идентификатор функции адаптера, содержащий, например, номер шины, номер устройства и номер функции.
В одном из примеров это поле используется для доступа к конфигурационному пространству функции адаптера. (Память адаптера может быть определена как адресные пространства, включая, например, конфигурационное пространство, пространство ввода-вывода и/или одно или более пространств памяти.) В одном из примеров доступ к конфигурационному пространству может осуществляться путем указания конфигурационного пространства в команде, которую операционная система (или другая конфигурация) передает функции адаптера. В команде указан сдвиг в конфигурационном пространстве и дескриптор функции, используемый для определения местоположения соответствующей записи в таблице функций, которая содержит RID. Аппаратно-программное обеспечение принимает команду и определяет, что она предназначена для конфигурационного пространства. Соответственно, для генерирования запроса концентратору ввода-вывода используется RID, а концентратора ввода-вывода создает запрос для доступа к адаптеру. Местоположение функции адаптера определяется на основании RID, а смещение определяет смещение в конфигурационном пространстве функции адаптера.
Индексный регистр (BAR) (1-n): в этом поле содержится множество целых чисел без знака, обозначаемых как BAR0 -BARn и соответствующих первоначально заданной функции адаптера, при этом их значения также хранятся в индексных регистрах, соответствующих функции адаптера. В каждом BAR указан начальный адрес области памяти или области ввода-вывода в функции адаптера, а также указан тип адресного пространства, то есть, является ли оно, например, 64- или 32-битной областью памяти или 32-битной областью ввода-вывода.
В одном из примеров он используется для доступа к области памяти и/или области ввода-вывода функции адаптера. Например, смещение, указанное в команде доступа функции адаптера, суммируется со значением в индексном регистре, соответствующем адресному пространству, указанному в команде, чтобы получить адрес для использования с целью доступа к функции адаптера. Идентификатор адресного пространства, содержащийся в команде, идентифицирует адресное пространство в функции адаптера для доступа и соответствующий BAR для использования. Размер 1 n: в этом поле содержится множество целых чисел без знака, обозначаемых как SIZE0-SIZEn. Значение поля размера, когда оно является ненулевым, отображает размер каждого адресного пространства, при этом каждая запись соответствует ранее описанному BAR.
Дополнительные подробности относительно BAR и Size описаны ниже.
1. Когда BAR не применяется для функции адаптера, поле BAR и его соответствующее поле размера оба хранятся как нули.
2. Когда поле BAR представляет или адресное пространство ввода-вывода, или 32-битное адресное пространство памяти, соответствующее поле размера является ненулевым и представляет размер адресного пространства.
3. Когда поле BAR представляет 64-битное адресное пространство памяти,
a. Поле BARn представляет младшие адресные биты.
b. Следующее по порядку поле BARn+1 представляет старшие адресные биты.
c. Соответствующее поле SIZEn является ненулевым и представляет размер адресного пространства.
d. Соответствующее поле SIZEn+1 является незначащим и хранится как нулевое.
Информация внутренней маршрутизации: эта информация используется для выполнения конкретной маршрутизации к адаптеру. Она включает, например, информацию адресации узла, схемы процессора и концентратора.
Указание состояния: Она предоставляет указание, например, того, блокированы ли операции загрузки/сохранения или находится ли адаптер в состоянии ошибки, а также другие указания.
В одном примере указатель занятости, указатель состояния постоянной ошибки и указатель инициированного восстановления устанавливаются на основании текущего контроля, выполняемого встроенным программным обеспечением. Кроме того, указатель разрешения устанавливается, например, на основании алгоритма; и информация BAR основывается на конфигурационной информации, обнаруженной процессором (например, встроенным программным обеспечением процессора) во время обхода шины. Другие поля могут устанавливаться на основании конфигурации, инициализации и/или событий. В других вариантах осуществления запись таблицы функций может содержать больше или меньше информации, или другую информацию. Содержащаяся информация может зависеть от операций, поддерживаемых функцией адаптера или доступной для нее.
Согласно ФИГ.6В, в одном примере, поле 2 указывает логический адрес 620 блока (FIB) информации о функциях PCI, который содержит информацию относительно связанной функции адаптера. Информационный блок функции используется для обновления записи таблицы устройств и/или записи таблицы функций (или другого местоположения), связанной с функцией адаптера. Информация сохраняется в FIB во время инициализации и/или конфигурации адаптера, и/или с учетом конкретных событий.
Дополнительные подробности относительно информационного блока (FIB) функции описываются со ссылкой на ФИГ.6Г. В одном варианте осуществления информационный блок 650 функции содержит следующие поля: формат 651: Это поле определяет формат FIB.
Управление 652 перехватом: это поле используется для указания того, приводит ли гостевое выполнение конкретных команд управления гостем страничного режима к перехвату команд управления.
Указание 654 ошибки: это поле содержит указание состояния ошибки для прямого доступа к памяти и прерываний адаптера. Когда бит установлен (например, 1), во время выполнения прямого доступа к памяти или прерывания адаптера для функции адаптера были обнаружены одна или более ошибок.
Загрузка/сохранение блокирована 656: это поле указывает, блокированы ли операции загрузки/сохранения.
Достоверность 658 функции PCI: это поле включает управление активацией функции адаптера. Когда бит установлен (например, 1), считается, что функция адаптера для операций ввода-вывода активирована.
Адресное пространство зарегистрировано 660: это поле включает управление активацией прямого доступа к памяти для функции адаптера. Когда поле установлено (например, 1), прямой доступ к памяти активирован. Размер 661 страницы: это поле указывает размер страницы или другого блока памяти для обращения посредством обращения к памяти DMA. Базовый адрес 662 PCI (РВА): это поле представляет собой базовый адрес для адресного пространства в системной памяти, назначенного для функции адаптера. Он представляет младший виртуальный адрес, который позволено использовать функции адаптера для прямого доступа к памяти к определенному адресному пространству DMA.
Адресное ограничение PCI (PAL) 664: это поле представляет старший виртуальный адрес, который позволено использовать функции адаптера для доступа в пределах определенного адресного пространства DMA.
Указатель (IOAT) 666 трансляции адресов ввода-вывода: указатель трансляции адресов ввода-вывода указывает первую из любых таблиц трансляции, используемых трансляцией виртуальных адресов PCI, или он может прямо указывать абсолютный адрес кадра памяти, который является результатом трансляции.
Подкласс 668 прерывания (ISC): это поле содержит подкласс прерывания, используемый для того, чтобы представлять прерывания адаптера для функции адаптера.
Число прерываний (N01) 670: это поле указывает число отличных кодов прерываний, принятых для функции адаптера. Это поле также определяет размер, в битах, битового вектора прерываний адаптера, указанного полями адреса битового вектора прерываний адаптера и сдвига битового вектора прерываний адаптера.
Адрес 672 битового вектора прерываний адаптера (AIBV): это поле определяет адрес битового вектора прерываний адаптера для функции адаптера. Этот вектор используется при обработке прерываний.
Сдвиг 674 битового вектора прерываний адаптера: это поле определяет сдвиг первого бита битового вектора прерываний адаптера для функции адаптера.
Адрес 676 суммарного бита прерываний адаптера (AISB): это поле предоставляет адрес, указывающий суммарный бит прерываний адаптера, который необязательно используется при обработке прерываний.
Сдвиг 678 суммарного бита прерываний адаптера: это поле предоставляет сдвиг в суммарном битовом векторе прерываний адаптера.
Адрес 680 блока (FMB) измерения функции: это поле предоставляет адрес блока измерения функции, используемого для того, чтобы собирать измерения относительно функции адаптера.
Ключ 682 блока измерения функции: это поле содержит ключ доступа для доступа к блоку измерения функции.
Управление 684 уведомления суммарного бита: это поле указывает, используется ли суммарный битовый вектор.
Маркер 686 авторизации команд: Это поле используется, чтобы определять, авторизирован ли гость постраничного режима сохранения выполнять команды PCI без вмешательства хоста.
В одном из примеров в системе z/Architecture® посредством команды Start Interpretive Execution (SIE) в режиме интерпретации на уровне 2 выполняется гость со страничной организацией. Например, гипервизор логического разбиения (LPAR) выполняет команду SIE, чтобы начать логическое разбиение в физической постоянной памяти. Если операционной системой при этом логическом разбиении является z/VM®, она передает команду SIE для выполнения своих гостевых (виртуальных) машин в своем V=V (виртуальном) запоминающем устройстве. Следовательно, гипервизор LPAR использует уровень-1 SIE, а гипервизор z/VM® использует уровень-2 SIE; и
формат 687 трансляции адреса: Это поле указывает выбранный формат для трансляции адреса таблицы трансляции наивысшего уровня, которая должна использоваться в трансляции (например, указание таблицы наивысшего уровня (например, таблицы сегментов, области 3rd, и т.п.) и указание выбранного формата (например, CPU DAT совместимый, расширенный формат трансляции адреса ввода-вывода, формат обхода, формат без извлечения)). Оно также может указывать формат.
Информационный блок функции, указанный в команде Modify PCI Function Controls используется для того, чтобы изменять выбранную запись таблицы устройств, запись таблицы функций и/или другие элементы управления встроенного программного обеспечения, связанные с функцией адаптера, указанной в команде. Путем изменения записи таблицы устройств, записи таблицы функций и/или других элементов управления встроенного программного обеспечения адаптеру предоставлены определенные сервисы. Эти сервисы включают, например, прерывания адаптера; трансляции адреса; переустановку состояния ошибки; переустановку блокирования загрузки/сохранения; установку параметров измерения функции; и установку управления перехвата.
Один вариант осуществления логики, связанной с командой Modify PCI Function Controls описывается со ссылкой на ФИГ.7. В одном примере команда подается операционной системой (или другой конфигурацией) и выполняется процессором (например, встроенным программным обеспечением), выполняющим операционную систему. В примерах, приведенных в данном документе, команда и функции адаптера основаны на PCI. Однако в других примерах может использоваться другая архитектура адаптера и соответствующие команды управления.
В одном примере операционная система предоставляет команде (например, в одном или более регистрах, указанных командой) следующие операнды: дескриптор функции PCI; идентификатор адресного пространства DMA; управление операцией; и адрес информационного блока функции.
Согласно ФИГ.7 в начале на этапе запроса 700 осуществляется определение, установлено ли средство, допускающее команду Modify PCI Function Controls. Это определение осуществляется, например, путем проверки указателя, хранящегося, например, в блоке управления. Если средство не установлено, на этапе 702 предоставляется исключительная ситуация. В противном случае на этапе запроса 704 осуществляется определение, была ли команда выдана гостем страничного режима сохранения (или другим гостем). Если да, на этапе 706 операционная система хоста эмулирует операцию для этого гостя.
В противном случае на этапе запроса 708 осуществляется определение, точно ли выровнены один или несколько операндов. Например, осуществляется определение, находится ли адрес информационного блока функции на границе двойного слова. В одном примере это необязательно. Если операнды не выровнены, то на этапе 710 предоставляется исключительная ситуация. В противном случае на этапе 712 осуществляется определение, доступен ли информационный блок функции. Если нет, то на этапе 714 предоставляется исключительная ситуация. В противном случае на этапе 716 осуществляется определение, активирован ли дескриптор, предоставленный в операндах команды Modify PCI Function Controls. В одном примере это определение осуществляется путем проверки указателя активации в дескрипторе. Если дескриптор не активирован, то на этапе 718 предоставляется исключительная ситуация.
Если дескриптор активирован, то на этапе 720 дескриптор используется для того, чтобы определить положение записи таблицы функций. То есть, по меньшей мере, часть дескриптора используется в качестве индекса в таблице функций, чтобы определять положение записи таблицы функций, соответствующей функции адаптера, для которой должны быть установлены рабочие параметры.
На этапе запроса 722 осуществляется определение, была ли найдена запись таблицы функций. Если нет, то на этапе 724 предоставляется исключительная ситуация. В противном случае, если на этапе запроса 726 конфигурация, выдающая команду, является гостем, на этапе 728 предоставляется исключительная ситуация (например, перехват на хост). Этот запрос может быть проигнорирован, если конфигурация не является гостем, или могут проверяться другие разрешения, если указаны.
Затем на этапе запроса 730 осуществляется определение, активирована ли функция. В одном примере это определение осуществляется путем проверки указателя активации в записи таблицы функций. Если он не активирован, то на этапе 732 предоставляется исключительная ситуация.
Если функция активирована, то на этапе запроса 734 осуществляется определение того, активно ли восстановление. Если восстановление активно, как определяется указателем восстановления в записи таблицы функций, то на этапе 736 предоставляется исключительная ситуация. Однако, если восстановление не активно, то на этапе запроса 738 осуществляется дальнейшее определение того, занята ли функция. Это определение осуществляется путем проверки указателя занятости в записи таблицы функций. Если функция занята, то на этапе 740 предоставляется ситуация занятости. В случае ситуации занятости команда может быть повторена, а не прекращена.
Если функция не занята, то на этапе запроса 742 осуществляется дополнительное определение того, является ли достоверным формат информационного блока функции. Например, поле формата FIB проверяется для того, чтобы определить, поддерживается ли этот формат системой. Если он недостоверный, то на этапе 744 предоставляется исключительная ситуация. Если формат информационного блока функции достоверный, то на этапе запроса 746 осуществляется следующее определение того, является ли достоверным управление операцией, определенное в операндах команды. То есть, является ли управление операцией одним из управлений операций, определенных для этой команды. Если оно недостоверно, то на этапе 748 предоставляется исключительная ситуация. Однако, если управление операцией достоверно, то обработка продолжается с конкретным определяемым управлением операцией.
Одна операция, которая может быть определена управлением операцией, - это операция установки параметров измерения функции PCI, используемая для поддержки измерений. Этой операцией параметры функции PCI, соответствующие измерению функции PCI, устанавливаются из информационного блока функции. Если поле адреса блока измерения функции содержит ненулевой адрес, то измерение функции PCI активировано. Однако, если поле адреса блока измерения функции содержит ноли, то измерение функции PCI отключено. В одном примере операнды для этой операции, получаемые из информационного блока функции, включают адрес блока измерения функции и ключ блока измерения функции. Подразумеваемые операнды включают число адресных пространств DMA, которое получается из записи таблицы функций.
Один вариант осуществления логики, связанной с этой операцией, описывается со ссылкой на ФИГ.8. В одном примере, на этапе запроса 800, производится определение, равен ли нолю адрес блока измерения функции. Если да, то на этапе 802 параметры измерения функции в записи таблицы функций переустанавливаются в ноль. Кроме того, счетчики DMA в концентраторе ввода-вывода сбрасываются и отключаются, и измерение отключается.
Возвращаясь к этапу запроса 800, если адрес блока измерения функции ненулевой, то на этапе запроса 806 производится дальнейшее определение, охватывает ли блок измерения функции для всех записей таблицы устройств границу 4 килобит. В одном примере охват блока 4 кбит определяется путем сложения адреса блока измерения функции, фиксированного размера блока измерения функции плюс специальных расширений адресного пространства DMA для каждого адресного пространства DMA. Если блок измерения функции охватывает границу 4 кбит, то на этапе 808 предоставляется исключительная ситуация. Иначе на этапе 812 параметры измерения функции в записи таблицы функций (например, FMBA и FMBK) устанавливаются из параметров адреса блока измерения функции и ключа блока измерения функции информационного блока функции. Кроме того, счетчики DMA в концентраторе ввода-вывода сбрасываются и активируются, и измерение активируется.
Дополнительно, предоставляются дальнейшие подробности относительно PCI Load, PCI Store и PCI Store Block.
В начале, согласно ФИГ.9А, описывается один вариант осуществления команды PCI Load. Как показано, команда 900 PCI Load включает, например, код 902 операции, указывающий команду PCI Load; первое поле 904, определяющее местоположение, в которое будут загружены данные, извлеченные из функции адаптера; и второе поле 906, определяющее местоположение, в котором содержится различная информация относительно функции адаптера, из которой должны быть загружены данные. Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.
В одном примере, поле Field 1 указывает регистр общего назначения, и, как показано на ФИГ.9Б, содержимое 904 этого регистра включает непрерывный диапазон одного или более байтов, загруженных из местоположения функции адаптера, определенной в команде. В одном примере данные загружаются в младшие байтовые позиции регистра.
В одном варианте осуществления, поле Field 2 указывает пару регистров общего назначения, которые содержат различную информацию. Как показано на ФИГ.9Б, содержимое регистров включает, например:
активированный дескриптор 910: Это поле представляет собой активированный дескриптор функции адаптера, из которой должны быть загружены данные;
адресное пространство 912: Это поле идентифицирует адресное пространство в функции адаптера, из которого должны быть загружены данные;
смещение 914 в адресном пространстве: Это поле определяет смещение в определенном адресном пространстве, из которого должны быть загружены данные;
поле 916 длины: Это поле определяет длину операции загрузки (например, число байтов, подлежащих загрузке); и
поле 918 состояния: Это поле предоставляет код состояния, который применяется, когда команда завершается с предопределенным кодом ситуации.
В одном варианте осуществления байты, загружаемые из функции адаптера, должны содержаться в пределах целочисленной границы в указанном адресном пространстве PCI функции адаптера. Когда поле адресного пространства указывает адресное пространство памяти, размер целочисленной границы составляет, например, двойное слово. Когда поле адресного пространства указывает адресное пространство ввода-вывода, размер целочисленной границы составляет, например, слово.
Один вариант осуществления логики, связанной с командой PCI Load, описывается со ссылкой на ФИГ.10А-10Б. В одном примере команда подается операционной системой (или другой конфигурацией) и выполняется процессором (например, встроенным программным обеспечением), выполняющим операционную систему. В примерах настоящего описания команды и функции адаптера основаны на PCI. Однако в других примерах может использоваться другая архитектура адаптера и соответствующие команды управления.
Чтобы подать команду, операционная система предоставляет команде следующие операнды (например, в одном или более регистрах, указанных командой): дескриптор функции PCI, адресное пространство PCI (PCIAS), смещение в адресном пространстве PCI, и длину данных, подлежащих загрузке. При успешном завершении команды PCI Load, данные загружаются в местоположение (например, регистр), указанное командой.
Обращаясь к ФИГ.10А, сначала на этапе запроса 1000 осуществляется определение, установлено ли средство, обеспечивающее команду PCI Load. Это определение осуществляется, например, путем проверки указателя, хранящегося, например, в блоке управления. Если средство не установлено, на этапе 1002 предоставляется исключительная ситуация. Иначе на этапе запроса 1004 осуществляется определение, выровнены ли операнды. Например, если определенные операнды должны быть в четных/нечетных парах регистров, осуществляется определение, выполняются ли эти требования. Если операнды не выровнены, то на этапе 1006 предоставляется исключительная ситуация. Иначе, если средство установлено, и операнды выровнены, на этапе запроса 1008 осуществляется определение, активирован ли дескриптор, предоставленный в операндах команды PCI Load. В одном примере это определение осуществляется путем проверки указателя активации в дескрипторе. Если дескриптор не активирован, то на этапе 1010 предоставляется исключительная ситуация.
Если дескриптор активирован, то на этапе 1012 дескриптор используется для того, чтобы определить положение записи таблицы функций. То есть, по меньшей мере часть дескриптора используется в качестве индекса в таблице функций, чтобы определять положение записи таблицы функций, соответствующей функции адаптера, из которой должны быть загружены данные.
После этого, если конфигурация, подающая команду, является гостем, на этапе запроса 1014 осуществляется определение, приспособлена ли функция для использования гостем. Если это не разрешено, то на этапе 1016 предоставляется исключительная ситуация. Этот запрос может быть проигнорирован, если конфигурация не является гостем, или могут проверяться другие разрешения, если указаны.
Затем на этапе запроса 1018 осуществляется определение, активирована ли функция. В одном примере это определение осуществляется путем проверки указателя активации в записи таблицы функций. Если она не активирована, то на этапе 1020 предоставляется исключительная ситуация.
Если функция активирована, то на этапе запроса 1022 осуществляется определение, достоверно ли адресное пространство. Например, является ли определенное адресное пространство указанным адресным пространством функции адаптера и соответствующим для этой команды. Если адресное пространство недостоверно, то на этапе 1024 предоставляется исключительная ситуация. Иначе на этапе запроса 1026 осуществляется определение, блокированы ли загрузка/сохранение. В одном примере это определение осуществляется путем проверки индикатора состояния в записи таблицы функций. Если загрузка/сохранение блокированы, то на этапе 1028 предоставляется исключительная ситуация.
Однако если загрузка/сохранение не блокированы, то на этапе запроса 1030 осуществляется определение, активно ли восстановление. В одном примере это определение осуществляется путем проверки индикатора инициированного восстановления в записи таблицы функций. Если восстановление активно, то на этапе 1032 предоставляется исключительная ситуация. Иначе на этапе запроса 1034 осуществляется определение, занята ли функция. Это определение осуществляется путем проверки указателя занятости в записи таблицы функций. Если функция занята, то на этапе 1036 предоставляется ситуация занятости. В случае ситуации занятости команда может быть повторена, а не прекращена.
Если функция не занята, то на этапе запроса 1038 осуществляется дальнейшее определение, является ли достоверным смещение, определенное в команде. То есть, находится ли смещение вместе с длиной операции в пределах базы и длины адресного пространства, как определено в записи таблицы функций. Если нет, то на этапе 1040 предоставляется исключительная ситуация. Однако, если смещение достоверно, то на этапе запроса 1042 осуществляется определение, достоверна ли длина. То есть, является ли длина достоверной при условиях типа адресного пространства, смещения в пределах адресного пространства и размера целочисленной границы. Если нет, то на этапе 1044 предоставляется исключительная ситуация. Иначе обработка продолжается с командой загрузки. (В одном варианте осуществления вышеуказанные проверки выполняет встроенное программное обеспечение.)
Переходя к ФИГ.10Б, на этапе запроса 1050 встроенным программным обеспечением осуществляется определение, предназначена ли загрузка для конфигурационного адресного пространства функции адаптера. То есть, на основании конфигурации памяти функции адаптера, является ли определенное адресное пространство, предоставленное в команде, конфигурационным пространством. Если да, то на этапе 1052 встроенное программное обеспечение выполняет различную обработку, чтобы предоставить запрос на концентратор, соединенный с функцией адаптера;
концентратор затем направляет запрос на функцию.
Например, встроенное программное обеспечение получает ID реквестора из записи таблицы функций, на которую указывает дескриптор функции, предоставленный в операндах команды. Кроме того, встроенное программное обеспечение на основании информации в записи таблицы функций (например, информации внутренней маршрутизации) определяет концентратор для получения запроса. То есть, среда может содержать один или более концентраторов, и встроенное программное обеспечение определяет концентратор, связанный с функцией адаптера. Оно затем направляет запрос на концентратор. Концентратор генерирует пакет запроса чтения конфигурации, который выходит по шине PCI на функцию адаптера, идентифицированную RID в записи таблицы функций. Запрос чтения конфигурации включает RID и смещение (т.е., адрес данных), которые используются, чтобы извлекать данные, как описано ниже.
Возвращаясь к этапу запроса 1050, если указанное адресное пространство не является конфигурационным пространством, то на этапе 1054 встроенное программное обеспечение снова выполняет различную обработку, чтобы предоставить запрос на концентратор. Встроенное программное обеспечение использует дескриптор, чтобы выбирать запись таблицы функций, и из этой записи оно получает информацию для определения местонахождения соответствующего концентратора. Оно также вычисляет адрес данных для использования в операции загрузки. Этот адрес вычисляется путем добавления начального адреса BAR (причем, BAR является тем, который связан с идентификатором адресного пространства, предоставленным в команде), полученного из записи таблицы функций, к смещению, предоставленному в команде. Этот вычисленный адрес данных предоставляется на концентратор. Концентратор затем берет этот адрес и включает его в пакет запроса, такой как пакет запроса чтения DMA, который выходит по шине PCI на функцию адаптера.
С учетом получения запроса либо посредством этапа 1052, либо этапа 1054, функция адаптера извлекает запрашиваемые данные из определенного местоположения (т.е., по адресу данных) и на этапе 1056 возвращает эти данные в ответе на запрос. Ответ направляется от функции адаптера на концентратор ввода-вывода. С учетом получения ответа, концентратор направляет ответ на инициирующий процессор. Инициирующий процессор затем берет данные из пакета ответа и загружает их в указанное местоположение, определенное в команде (например, поле 1). Операция PCI Load завершается указанием успеха (например, установкой нулевого кода ситуации).
В дополнение к команде загрузки, которая извлекает данные из функции адаптера и сохраняет их в указанном местоположении, другой командой, которая может быть выполнена, является команда сохранения. Команда сохранения сохраняет данные в определенном местоположении в функции адаптера. Один вариант осуществления команды сохранения (PCI Store) описывается со ссылкой на ФИГ.11А. Как показано, команда 1100 PCI Store включает, например, код операции 1102, указывающий команду PCI Store; первое поле 1104, определяющее местоположение, которое содержит данные, подлежащие сохранению в функции адаптера; и второе поле 1106, определяющее местоположение, в котором содержится различная информация относительно функции адаптера, в которую надлежит сохранить данные. Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.
В одном примере поле Field 1 указывает регистр общего назначения, и как показано на ФИГ.11Б, содержимое 1104 этого регистра включает непрерывный диапазон одного или более байтов данных, которые должны быть сохранены в определенном местоположении функции адаптера. В одном примере сохраняются данные в младших байтовых позициях.
В одном варианте осуществления поле Field 2 указывает пару регистров общего назначения, которые содержат различную информацию. Как показано на ФИГ.11В, содержимое регистра включает, например:
активированный дескриптор 1110: Это поле представляет собой активированный дескриптор функции адаптера, в которую должны быть сохранены данные;
адресное пространство 1112: Это поле идентифицирует адресное пространство в функции адаптера, в которое должны быть сохранены данные;
смещение 1114 в адресном пространстве: Это поле определяет смещение в адресном пространстве, в которое должны быть сохранены данные;
поле 1116 длины: Это поле определяет длину операции сохранения (например, число байтов, которые должны быть сохранены); и
поле 1118 состояния: Это поле предоставляет код состояния, который применяется, когда команда завершается с предопределенным кодом ситуации.
Один вариант осуществления логики, связанной с командой PCI Store, описывается со ссылкой на ФИГ.12А-12Б. В одном примере команда подается операционной системой и выполняется процессором (например, встроенным программным обеспечением), выполняющим операционную систему.
Чтобы подать команду, операционная система предоставляет команде следующие операнды (например, в одном или более регистрах, указанных командой): дескриптор функции PCI, адресное пространство PCI (PCIAS), смещение в адресном пространстве PCI, длину данных, которые подлежат сохранению, и указатель на данные, подлежащие сохранению. При успешном завершении команды PCI Store, данные сохраняются в местоположении, указанном командой.
Обращаясь к ФИГ.12А, сначала на этапе запроса 1200 осуществляется определение, установлено ли средство, обеспечивающее команду PCI Store. Это определение осуществляется, например, путем проверки указателя, хранящегося, например, в блоке управления. Если средство не установлено, на этапе 1202 предоставляется исключительная ситуация. Иначе на этапе запроса 1204 осуществляется определение, выровнены ли операнды. Например, если определенные операнды должны быть в четных/нечетных парах регистров, осуществляется определение, выполняются ли эти требования. Если операнды не выровнены, то на этапе 1206 предоставляется исключительная ситуация. Иначе, если средство установлено, и операнды выровнены, на этапе запроса 1208 осуществляется определение, активирован ли дескриптор, предоставленный в операндах команды PCI Store. В одном примере это определение осуществляется путем проверки указателя активации в дескрипторе. Если дескриптор не активирован, то на этапе 1210 предоставляется исключительная ситуация.
Если дескриптор активирован, то на этапе 1212 дескриптор используется для того, чтобы определить положение записи таблицы функций. То есть, по меньшей мере часть дескриптора используется в качестве индекса в таблице функций, чтобы определить положение записи таблицы функций, соответствующей функции адаптера, в которой должны быть сохранены данные.
После этого, если конфигурация, подающая команду, является гостем, на этапе запроса 1214 осуществляется определение, приспособлена ли функция для использования гостем. Если это не разрешено, то на этапе 1216 предоставляется исключительная ситуация. Этот запрос может быть проигнорирован, если конфигурация не является гостем, или могут проверяться другие разрешения, если указаны.
Затем на этапе запроса 1218 осуществляется определение, активирована ли функция. В одном примере это определение осуществляется путем проверки указателя активации в записи таблицы функций. Если она не активирована, то на этапе 1220 предоставляется исключительная ситуация.
Если функция активирована, то на этапе запроса 1222 осуществляется определение, является ли достоверным адресное пространство. Например, является ли определенное адресное пространство указанным адресным пространством функции адаптера и соответствующим для этой команды. Если адресное пространство недостоверное, то на этапе 1224 предоставляется исключительная ситуация. Иначе на этапе запроса 1226 осуществляется определение, блокированы ли загрузка/сохранение. В одном примере это определение осуществляется путем проверки индикатора состояния в записи таблицы функций. Если загрузка/сохранение блокированы, то на этапе 1228 предоставляется исключительная ситуация.
Однако, если загрузка/сохранение не блокированы, на этапе запроса 1230 осуществляется определение, является ли активным восстановление. В одном примере это определение осуществляется путем проверки индикатора инициированного восстановления в записи таблицы функций. Если восстановление активно, то на этапе 1232 предоставляется исключительная ситуация. Иначе на этапе запроса 1234 осуществляется определение, занята ли функция. Это определение осуществляется путем проверки указателя занятости в записи таблицы функций. Если функция занята, то на этапе 1236 предоставляется ситуация занятости. В случае ситуации занятости команда может быть повторена, а не прекращена.
Если функция не занята, то на этапе запроса 1238 осуществляется дальнейшее определение, является ли достоверным смещение, определенное в команде. То есть, находится ли смещение вместе с длиной операции в пределах базы и длины адресного пространства, как определено в записи таблицы функций. Если нет, то на этапе 1240 предоставляется исключительная ситуация. Однако если смещение является достоверным, то на этапе запроса 1242 осуществляется определение, является ли достоверной длина. То есть, является ли длина достоверной при условиях типа адресного пространства, смещения в пределах адресного пространства и размера целочисленной границы. Если нет, то на этапе 1244 предоставляется исключительная ситуация. Иначе обработка продолжается с командой сохранения. (В одном варианте осуществления вышеуказанные проверки выполняет встроенное программное обеспечение.)
Переходя к ФИГ.12Б, на этапе запроса 1250 встроенным программным обеспечением осуществляется определение, предназначено ли сохранение для конфигурационного адресного пространства функции адаптера. То есть, на основании конфигурации памяти функции адаптера, является ли определенное адресное пространство, предоставленное в команде, конфигурационным пространством. Если да, то на этапе 1252 встроенное программное обеспечение выполняет различную обработку, чтобы подать запрос на концентратор, связанный с функцией адаптера; концентратор затем направляет запрос на функцию.
Например, встроенное программное обеспечение получает ID реквестора из записи таблицы функций, на которую указывает дескриптор функции, предоставленный в операндах команды. Кроме того, встроенное программное обеспечение на основании информации в записи таблицы функций (например, внутренней информации маршрутизации) определяет концентратор для получения этого запроса. То есть, среда может содержать один или более концентраторов, и встроенное программное обеспечение определяет концентратор, соединенный с функцией адаптера. Оно затем направляет запрос на концентратор. Концентратор генерирует пакет запроса записи конфигурации, который выходит по шине PCI на функцию адаптера, идентифицированную RID в записи таблицы функций. Запрос записи конфигурации включает RID и смещение (т.е., адрес данных), которые используются, чтобы сохранять данные, как описано ниже.
Возвращаясь к этапу запроса 1250, если указанное адресное пространство не является конфигурационным пространством, то на этапе 1254 встроенное программное обеспечение снова выполняет различную обработку, чтобы предоставить запрос на концентратор. Встроенное программное обеспечение использует дескриптор, чтобы выбирать запись таблицы функций, и из этой записи оно получает информацию для определения местоположения соответствующего концентратора. Оно также вычисляет адрес данных, который должен использоваться в операции сохранения. Этот адрес вычисляется путем добавления начального адреса BAR, полученного из записи таблицы функций, к смещению, предоставленному в команде. Этот вычисленный адрес данных предоставляется на концентратор. Концентратор затем берет этот адрес и включает его в пакет запроса, такой как пакет запроса записи DMA, который выходит по шине PCI на функцию адаптера.
С учетом получения запроса либо посредством этапа 1252, либо этапа 1254, на этапе 1256 функция адаптера сохраняет запрошенные данные в определенном местоположении (т.е., по адресу данных). Операция PCI Store завершается указанием успеха (например, установкой нулевого кода ситуации).
В дополнение к командам загрузки и сохранения, которые обычно загружают или сохраняют максимум, например, 8 байт, другой командой, которая может быть выполнена, является команда сохранения блока. Команда сохранения блока сохраняет более крупные блоки данных (например, 16, 32, 64, 128 или 256 байт) в определенном местоположении в функции адаптера; размеры блока по размеру не обязательно ограничиваются степенями двух.
В одном примере определенное местоположение находится в пространстве памяти функции адаптера (не конфигурационном пространстве ввода-вывода).
Один вариант осуществления команды PCI Store Block описывается со ссылкой на ФИГ.13А. Как показано, команда 1300 PCI Store Block включает, например, код операции 1302, указывающий команду PCI Store Block; первое поле 1304, определяющее местоположение, в котором содержится различная информация относительно функции адаптера, в которую необходимо сохранить данные; второе поле 1306, определяющее местоположение, которое содержит смещение в определенном адресном пространстве, в которое надлежит сохранить данные; и третье поле 1308, определяющее местоположение, которое содержит адрес системной памяти данных, которые надлежит сохранить в функции адаптера. Содержимое местоположений, указанных полями Fields 1, 2 и 3, подробно описываются ниже.
В одном из вариантов осуществления в поле 1 указан регистр общего назначения, в котором содержится различная информация. Как показано на ФИГ.13Б, содержимое регистра включает, например:
Активированный дескриптор 1310: Это поле представляет собой активированный дескриптор функции адаптера, в которую необходимо сохранить данные;
Адресное пространство 1312: Это поле идентифицирует адресное пространство в функции адаптера, в которое должны быть сохранены данные;
поле 1314 длины: Это поле определяет длину операции сохранения (например, число байт, подлежащих сохранению); и
поле 1316 состояния: Это поле предоставляет код состояния, который применяется, когда команда завершается с предопределенным кодом ситуации.
В одном примере поле Field 2 указывает регистр общего назначения, и, как представлено на ФИГ.13В, содержимое регистра включает значение (например, 64-битное беззнаковое целое), которое определяет смещение в определенном адресном пространстве, в которое должны быть сохранены данные.
В одном примере поле Field 3, как показано на ФИГ.13Г, содержит логический адрес 1322 первого байта данных в системной памяти, которые должны быть сохранены в функции адаптера.
Один вариант осуществления логики, связанной с командой PCI Store Block, описывается со ссылкой на ФИГ.14А-14Б. В одном примере команда подается операционной системой и выполняется процессором (например, встроенным программным обеспечением), выполняющим операционную систему.
Чтобы подать команду, операционная система предоставляет команде следующие операнды (например, в одном или более регистрах, указанных командой): дескриптор функции PCI, адресное пространство PCI (PCIAS), смещение в адресном пространстве PCI, длину данных, подлежащих сохранению, и указатель на данные, подлежащие сохранению. Операнд указателя может содержать и регистр, и знаковое или беззнаковое смещение. При успешном завершении команды PCI Store Block, данные сохраняются в местоположении в адаптере, указанном командой.
Обращаясь к ФИГ.14А, сначала на этапе запроса 1400 осуществляется определение, установлено ли средство, обеспечивающее команду PCI Store Block. Это определение осуществляется, например, путем проверки указателя, хранящегося, например, в блоке управления. Если средство не установлено, на этапе 1402 предоставляется исключительная ситуация. Иначе, если средство установлено, на этапе запроса 1404 осуществляется определение, активирован ли дескриптор, предоставленный в операндах команды PCI Store Block. В одном примере это определение осуществляется путем проверки указателя активации в дескрипторе. Если дескриптор не активирован, то на этапе 1406 предоставляется исключительная ситуация.
Если дескриптор активирован, то на этапе 1412 дескриптор используется для того, чтобы определить положение записи таблицы функций. То есть, по меньшей мере часть дескриптора используется как индекс в таблице функций, чтобы определять положение записи таблицы функций, соответствующей функции адаптера, в которой должны быть сохранены данные.
После этого, если конфигурация, подающая команду, является гостем, на этапе запроса 1414 осуществляется определение, приспособлена ли функция для использования гостем. Если это не разрешено, то на этапе 1416 предоставляется исключительная ситуация. Этот запрос может быть проигнорирован, если конфигурация не является гостем, или могут проверяться другие разрешения, если указаны.
Затем на этапе запроса 1418 осуществляется определение, активирована ли функция. В одном примере это определение осуществляется путем проверки указателя активации в записи таблицы функций. Если она не активирована, то на этапе 1420 предоставляется исключительная ситуация.
Если функция активирована, то на этапе запроса 1422 осуществляется определение, является ли достоверным адресное пространство. Например, является ли определенное адресное пространство указанным адресным пространством функции адаптера и соответствующим для этой команды (т.е., пространством памяти). Если адресное пространство является недостоверным, то на этапе 1424 предоставляется исключительная ситуация. Иначе на этапе запроса 1426 осуществляется определение, блокированы ли загрузка/сохранение. В одном примере это определение осуществляется путем проверки индикатора состояния в записи таблицы функций. Если загрузка/сохранение блокированы, то на этапе 1428 предоставляется исключительная ситуация.
Однако, если загрузка/сохранение не блокированы, на этапе запроса 1430 осуществляется определение, активно ли восстановление. В одном примере это определение осуществляется путем проверки индикатора инициированного восстановления в записи таблицы функций. Если восстановление активно, то на этапе 1432 предоставляется исключительная ситуация. Иначе на этапе запроса 1434 осуществляется определение, занята ли функция. Это определение осуществляется путем проверки указателя занятости в записи таблицы функций. Если функция занята, то на этапе 1436 предоставляется ситуация занятости. В случае ситуации занятости команда может быть повторена, а не прекращена.
Если функция не занята, то на этапе запроса 1438 осуществляется дальнейшее определение, является ли достоверным смещение, определенное в команде. То есть, находится ли смещение вместе с длиной операции в пределах базы и длины адресного пространства, как определено в записи таблицы функций. Если нет, то на этапе 1440 предоставляется исключительная ситуация. Однако, если смещение достоверно, то на этапе запроса 1442 осуществляется определение, является ли достоверной длина. То есть, является ли длина достоверной при условиях типа адресного пространства, смещения в пределах адресного пространства и размера целочисленной границы. Если нет, то на этапе 1444 предоставляется исключительная ситуация. Иначе обработка продолжается с командой сохранения блока. (В одном варианте осуществления вышеуказанные проверки выполняет встроенное программное обеспечение.)
Переходя к ФИГ.14Б, на этапе 1450 встроенным программным обеспечением осуществляется определение, является ли доступным запоминающее устройство, которое содержит данные, которые необходимо сохранить. Если нет, на этапе 1452 предоставляется исключительная ситуация. Если да, то на этапе 1454 встроенное программное обеспечение выполняет различную обработку, чтобы предоставить запрос на концентратор, соединенный с функцией адаптера; концентратор затем направляет запрос на функцию.
Например, встроенное программное обеспечение использует дескриптор, чтобы выбрать запись таблицы функций, и из этой записи оно получает информацию для определения положения соответствующего концентратора. Оно также вычисляет адрес данных для использования в операции сохранения блока. Этот адрес вычисляется путем добавления начального адреса BAR (причем BAR идентифицируется идентификатором адресного пространства), полученного из записи таблицы функций, к смещению, предоставленному в команде. Этот вычисленный адрес данных предоставляется на концентратор. Кроме того, данные, на которые ссылается адрес, предоставленный в команде, извлекаются из системной памяти и предоставляются на концентратор ввода-вывода. Концентратор затем берет этот адрес и данные и включает их в пакет запроса, такой как пакет запроса записи DMA, который выходит по шине PCI на функцию адаптера.
С учетом получения запроса, на этапе 1456 функция адаптера сохраняет запрошенные данные в определенном местоположении (т.е., по адресу данных). Операция PCI Store Block завершается с указанием успеха (например, установкой нулевого кода ситуации).
Выше подробно описано измерительное средство, в котором характерный для PCI поток данных ввода-вывода отслеживается на основе отдельных функций, и результаты динамически представляются пользователю (например, операционной системе, драйверу устройства операционной системы, другой программе, и т.п.). А именно, на основе отдельных функций отслеживаются команды доступа и подсчитывается поток данных прямого доступа к памяти. Измерения являются независимыми от устройства в том понимании, что типы устройств нет необходимости знать заранее.
Средство измерения, раскрываемое в данном документе, позволяет отслеживать использование ресурсов в подсистемах ввода-вывода, предоставляющих команды, позволяющие программе (например, операционной системе) прямой доступ к функциям адаптера. Использование ресурсов отслеживается без использования средств отладки и без записи такого использования операционной системой или измерительным кодом приложения. Средство, раскрываемое в данном документе, интегрировано в процессор, таким образом является общим для всех операционных систем и позволяет иметь динамический доступ к результатам. Аналогично, для измерения объемов передачи данных функциональная возможность интегрирована в инфраструктуру ввода-вывода с динамическим доступом к результатам.
В одном примере измерительное средство доступно на основе отдельных функций. Кроме того, значения измерений динамически подаются в пространство пользователя на основе отдельных функций, а не вынуждая пользовательские программы запрашивать такую информацию.
В описанных в данном документе вариантах осуществления адаптеры являются адаптерами PCI. PCI, как используется в данном документе, относится к любым адаптерам, реализованным в соответствии со спецификацией на основе PCI, как определяется организацией Peripheral Component Interconnect Special Interest Group (PCI-SIG), включая, без ограничения, PCI или PCIe. В одном конкретном примере Peripheral Component Interconnect Express (PCIe) представляет собой стандарт взаимосвязи на уровне компонентов, который определяет двунаправленный протокол связи для транзакций между адаптерами ввода-вывода и хост-системами. Осуществление связи PCIe инкапсулируется в пакетах в соответствии со стандартом PCIe для передачи по шине PCIe. Транзакции, возникающие в адаптерах ввода-вывода и завершающиеся в хост-системах, называются направленными вверх транзакциями. Транзакции, возникающие в хост-системах и завершающиеся в адаптерах ввода-вывода, называются направленными вниз транзакциями. Топология PCIe основана на однонаправленных соединениях точка-точка, которые соединяются попарно (например, одно направленное вверх соединение, одно направленное вниз соединение), чтобы образовывать шину PCIe. Стандарт PCIe поддерживается и обнародуется организацией PCI-SIG.
Как будет понятно специалисту в данной области техники, особенности настоящего изобретения могут быть реализованы системой, способом или компьютерным программным продуктом. Соответственно, особенности настоящего изобретения могут иметь форму полностью аппаратного варианта осуществления, полностью программного варианта осуществления (включая встроенное программное обеспечение, резидентное программное обеспечение, микрокод и т.п.) или варианта осуществления, сочетающего программные и аппаратные особенности, которые все в данном документе в целом могут называться "контуром", "модулем" или "системой". Кроме того, особенности настоящего изобретения могут иметь форму компьютерного программного продукта, реализованного в одной или нескольких машиночитаемой среде(-ах), с реализованным на них машиночитаемым программным кодом. Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемая среда может быть машиночитаемой запоминающей средой. Машиночитаемая запоминающая среда может быть, например, без ограничения, электронной, магнитной, оптической, электромагнитной, инфракрасной или полупроводниковой системой, аппаратом или устройством, или любым подходящим сочетанием вышеуказанного. Более конкретные примеры (не исчерпывающий список) машиночитаемых запоминающих сред включают следующее: электрическое соединение, имеющее один или несколько проводов, съемную дискету для компьютера, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СПЗУ или флэш-память), оптоволокно, постоянное запоминающее устройство на съемном диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое подходящее сочетание вышеуказанного. В контексте этого документа машиночитаемая запоминающая среда может быть любой материальной средой, которая может содержать или хранить программу для использования посредством системы, аппарата или устройства выполнения команд или в связи с ними.
Как показано на ФИГ.15, в одном примере компьютерный программный продукт 1500 содержит, например, одну или более машиночитаемых запоминающих сред 1502 для хранения в них машиночитаемых средств или логики 1504 программного кода, чтобы обеспечивать и продвигать одну или более особенностей настоящего изобретения. Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную линию, оптоволоконный кабель, ВЧ-среду и т.д. или любое подходящее сочетание вышеупомянутого.
Компьютерный программный код для выполнения операций, обеспечивающих особенности настоящего изобретения, может быть написан на любом сочетании одного или нескольких языков программирования, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционные процедурные языки программирования, такие как язык программирования С, ассемблер или подобные языки программирования. Программный код может полностью выполняться на компьютере пользователя, частично на компьютере пользователя, в качестве автономного пакета программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью удаленном компьютере или сервере. В последнем случае удаленный компьютер может быть соединен с компьютером пользователя посредством сети любого типа, включая локальную вычислительную сеть (LAN) или глобальную вычислительную сеть (WAN), или соединение может осуществляться с внешним компьютером (например, по сети Интернет с помощью Интернет-провайдера).
Особенности настоящего изобретения описаны в данном документе со ссылкой на структурные схемы и/или блок-схемы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления изобретения. Будет понятно, что каждый блок на структурных схемах и/или блок-схемах и сочетания блоков на структурных схемах и/или блок-схемах могут быть реализованы посредством команд управления компьютерных программ. Эти команды управления компьютерной программой могут подаваться на процессор компьютера общего назначения, компьютера специального назначения или другого программируемого устройства для обработки данных с целью создания машины, в которой команды, которые выполняются посредством процессора компьютера или другого программируемого устройства для обработки данных, создают средство для реализации функций/действий, определенных блоком или блоками на структурных схемах и/или блок-схемах.
Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая может предписывать компьютеру, другому программируемому устройству обработки данных или другим устройствам действовать конкретным образом, так что команды, хранящиеся в машиночитаемой среде, образуют изделие обработки, содержащее команды, которые реализуют функцию/действие, определенные блоком или блоками на структурных схемах и/или блок-схемах. Команды управления компьютерной программой также могут загружаться в компьютер, другое программируемое устройство обработки данных или другие устройства, чтобы вызывать выполнение последовательности оперативных этапов компьютером, другим программируемым устройством или другими устройствами, чтобы создавать компьютерно-реализованный процесс, так что команды, которые выполняются на компьютере или другом программируемом устройстве, обеспечивают процессы для реализации функций/действий, заданных блоком или блоками на структурных схемах и/или блок-схемах.
Приведенные на чертежах структурные схемы и блок-схемы иллюстрируют архитектуру, функциональные возможности и работу возможных осуществлений систем, способов и компьютерных программных продуктов в соответствии с различными вариантами осуществления настоящего изобретения. В связи с этим каждый блок на структурных схемах или блок-схемах может представлять модуль, сегмент или часть кода, которая содержит одну или несколько выполняемых команд для реализации заданной логической функции(-й). Следует также отметить, что в некоторых альтернативных осуществлениях указанные в блоке функции могут происходить не в том порядке, в котором они представлены на графических материалах. Например, два блока, показанные последовательно, на самом деле могут выполняться в значительной мере одновременно, или блоки могут иногда выполняться в обратном порядке, в зависимости от связанных функциональных возможностей. Следует также отметить, что каждый блок на блок-схемах и/или структурных схемах и сочетания блоков на блок-схемах и/или структурных схемах могут быть реализованы посредством специализированных аппаратных систем, которые выполняют заданные функции или действия, или сочетаний специализированного аппаратного обеспечения и компьютерных команд.
В придачу к вышесказанному, одна или несколько особенностей настоящего изобретения может предоставляться, предлагаться, вводиться, управляться, обслуживаться и т.п. поставщиком услуг, который предлагает управление пользовательскими средами. Например, поставщик услуг может создавать, поддерживать, обслуживать и т.п. компьютерный код и/или вычислительную инфраструктуру, которая выполняет одну или несколько особенностей настоящего изобретения для одного или нескольких пользователей. В ответ поставщик услуг может получать оплату от пользователя, например, согласно подписке и/или соглашению. Дополнительно или в качестве альтернативы, поставщик услуг может получать плату за продажу рекламы одной или нескольким третьим сторонам.
Согласно одной из особенностей настоящего изобретения для выполнения одной или нескольких особенностей настоящего изобретения может быть развернуто приложение. В качестве одного из примеров, разворачивание приложения включает предоставление вычислительной инфраструктуры, способной выполнять одну или несколько особенностей настоящего изобретения.
В качестве еще одной особенности настоящего изобретения, разворачивание вычислительной инфраструктуры может включать интегрирование машиночитаемого кода в вычислительную систему, в которой код в сочетании с вычислительной системой способен выполнять одну или несколько особенностей настоящего изобретения.
В качестве еще одной особенности настоящего изобретения может быть представлен способ интегрирования вычислительной инфраструктуры, включающий интегрирование машиночитаемого кода в компьютерную систему. Компьютерная система содержит машиночитаемую среду, причем машиночитаемая среда содержит одну или несколько особенностей настоящего изобретения. Код в сочетании с компьютерной системой способен выполнять одну или несколько особенностей настоящего изобретения.
Хотя выше описаны различные варианты осуществления, они являются лишь примерами. Например, вычислительные среды других архитектур могут содержать и использовать одну или несколько особенностей настоящего изобретения. В качестве примеров, серверы, отличающиеся от серверов System z®, такие как серверы Power Systems или другие серверы, поставляемые International Business Machines Corporation, или серверы других компаний могут включать, использовать или получать преимущества от одной или более особенностей настоящего изобретения. Кроме того, хотя в приведенном в данном документе примере адаптеры и концентратор PCI рассматриваются как часть сервера, в других вариантах осуществления они не обязательно должны рассматриваться как часть сервера, а могут просто рассматриваться как соединенные с системной памятью и/или другими компонентами вычислительной среды. Не требуется, чтобы вычислительная среда была сервером. Кроме того, в других примерах, вычислительная среда может быть логически разделена, и в таком примере счетчики связаны с конкретным логическим разделом. Кроме того, хотя адаптеры и основаны на PCI, одна или более особенностей настоящего изобретения могут использоваться с другими адаптерами или другими компонентами ввода-вывода. Адаптер и адаптер PCI являются лишь примерами. Кроме того, может отслеживаться меньше или больше информации, или другая информация. Возможны многие варианты.
Кроме того, другие типы вычислительных сред могут получать преимущества от одной или нескольких особенностей настоящего изобретения. Например, может применяться система обработки данных, подходящая для хранения и/или выполнения программного кода, которая содержит по меньшей мере два процессора, прямо или непрямо соединенных с элементами памяти через системную шину. Элементы памяти содержат, например, локальную память, используемую во время фактического выполнения программного кода, устройство массовой памяти и кэш-память, которая обеспечивает временное хранение по меньшей мере некоторого программного кода с целью уменьшения количества извлечений кода из устройства массовой памяти во время выполнения.
Устройства ввода-вывода или I/O устройства (включая без ограничения клавиатуры, экраны, устройства указания, DASD (устройства памяти с прямым доступом), ленту, CD диски, DVD диски, флэш-устройства и другие среды памяти, и т.п.) могут подключаться к системе или прямо, или посредством промежуточных контроллеров ввода-вывода. Сетевые адаптеры также могут подключаться к системе, чтобы. позволять системе обработки данных соединяться с другими системами обработки данных или удаленным принтерам или запоминающим устройствам посредством промежуточных частных или общих сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь некоторыми из доступных типов сетевых адаптеров.
ФИГ.16 представляет собой изображение характерных компонентов хост-компьютерной системы 5000 для реализации одной или нескольких особенностей настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько ЦП 5001, связанных с памятью 5002 (т.е. центральным запоминающим устройством) компьютера, а также интерфейсы ввода-вывода к запоминающим устройствам 5011 и сети 5010 для связи с другими компьютерами или SAN и т.п. ЦП 5001 совместим с архитектурой, имеющей структурированный набор команд и структурированные функциональные возможности. ЦП 5001 может иметь динамическую трансляцию 5003 адреса (DAT) для преобразования программных адресов (виртуальных адресов) в достоверные адреса памяти. DAT обычно содержит буфер 5007 быстрого преобразования адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш 5009. Кэш 5009 может быть иерархическим, имеющим кэш большой емкости, доступный для более чем одного ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых осуществлениях кэши низкого уровня разделяются, чтобы предоставлять отдельные кэши низкого уровня для извлечения команд и доступа к данным. В одном варианте осуществления команда извлекается из памяти 5002 блоком 5004 извлечения команд посредством кэша 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения, например, блок выполнения арифметических команд, блок выполнения с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком выполнения, который осуществляет доступ к операндам из определяемых командами регистров или памяти по мере необходимости. Если доступ (загрузку или сохранение) к операнду необходимо осуществлять из памяти 5002, блок 5005 загрузки/сохранения обычно осуществляет доступ под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении), или с использованием их сочетания.
Как указано, компьютерная система содержит информацию в локальном (или основном) запоминающем устройстве, а также адресные, защитные, контрольные и корректирующие записи. Некоторые особенности адресации включают формат адресов, концепцию адресных пространств, различные типы адресов и способ, которым адрес одного типа транслируется в адрес другого типа. Некоторые из основных запоминающих устройств содержат постоянно назначенные местоположения в запоминающем устройстве. Основное запоминающее устройство обеспечивает систему с запоминающим устройством с прямой адресацией и быстрым доступом к данным. В основное запоминающее устройство должны загружаться (из устройств ввода) и данные, и программы, до того как они могут быть обработаны.
Основное запоминающее устройство может содержать одно или несколько буферных запоминающих устройств меньшей емкости более быстрого доступа, иногда называемых кэшами. Кэш обычно физически связан с ЦП или процессором ввода-вывода. Физическая структура и использование различных запоминающих сред, как правило, невидимы программой, за исключением производительности.
Для команд и операндов, хранимых в памяти, могу быть предусмотрены отдельные кэши. Информация в кэше содержится в форме непрерывных байтов на целочисленной границе, называемой блоком кэша или строкой кэша (или для краткости строкой). Одна модель может предоставлять команду EXTRACT CACHE ATTRIBUTE, которая возвращает размер строки кэша в байтах. Одна модель также может предоставлять команду PREFETCH DATA и команду PREFETCH DATA RELATIVE LONG для предварительного извлечения данных из запоминающего устройства в кэш данных или команд или для освобождения данных из кэша.
Запоминающее устройство рассматривается как длинная горизонтальная строка битов. Для большинства операций доступ к запоминающему устройству осуществляется последовательно слева направо. Строка битов подразделяется на блоки из восьми битов. Восьмибитный блок называется байтом, который является основным конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется уникальным неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют последовательные адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой беззнаковые двоичные целые числа, содержащие 24, 31 или 64 бита.
Информацией между запоминающим устройством и ЦП или канальной подсистемой передается по одному байту или группой байтов за один раз. Если не оговорено иное, например, в архитектуре z/Architecture® группа байтов в запоминающем устройстве адресуется посредством крайнего левого байта группы. Число байтов в группе подразумевается или прямо определяется операцией, которую необходимо выполнить. Используемая в работе ЦП группа байтов называется полем. В каждой группе байтов, например, в z/Architecture®, биты последовательно нумеруются слева направо. В z/Architecture® крайние левые биты иногда именуются "старшими" битами, а крайние правые биты - "младшими" битами. Однако номера битов не являются адресами запоминающего устройства. Обращаться по адресу можно только к байтам. Чтобы работать с отдельными битами байта в запоминающем устройстве, осуществляется доступ ко всему байту. Биты в байте пронумерованы слева направо от 0 до 7 (например, в z/Architecture®). Биты в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-битных адресов или от 1 до 31 или от 33 до 63 в случае 31-битных адресов и от 0 до 63 в случае 64-битных адресов. В любом другом формате фиксированной длины из множества байтов биты, образующие формат, последовательно нумеруются, начиная с 0. В целях обнаружения ошибок, и предпочтительно их исправления, с каждым байтом или группой байтов может передаваться один или несколько контрольных битов. Такие контрольные биты генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда длина хранящегося поля операнда подразумевается кодом операций команды, говорят, что поле имеет фиксированную длину, которая может составлять один, два, четыре, восемь или шестнадцать байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, говорят, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине приращениями в один байт (или для некоторых команд с шагом в два байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути к запоминающему устройству может быть больше длины сохраняемого поля.
Некоторые единицы информации должны находиться на целочисленной границе в запоминающем устройстве. Применительно к единице информации граница называется целочисленной, когда адрес запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтов на целочисленной границе даются особые названия. Полуслово представляет собой группу из 2 идущих подряд байтов на двухбайтной границе и является основным структурным блоком команд. Слово представляет собой группу из 4 идущих подряд байтов на четырехбайтной границе. Двойное слово представляет собой группу из 8 идущих подряд байтов на восьмибайтной границе. Учетверенное слово представляет собой группу из 16 идущих подряд байтов на 16-байтной границе. Когда адреса запоминающего устройства обозначают полуслова, слова, двойные слова и учетверенные слова, двоичное представление адреса содержит один, два, три или четыре крайних правых нулевых бита, соответственно. Команды должны находиться на двухбайтных целочисленных границах. Хранящиеся операнды большинства команд не содержат требования выравнивания на границах.
В устройствах, в которых реализованы раздельные кэши для команд и операндов данных, могут происходить значительные задержки, если программа сохраняется в строке кэша, из которой впоследствии осуществляется извлечение команд, независимо от того, изменяются ли при сохранении команды, извлечение которых осуществляется впоследствии.
В одном варианте осуществления изобретение может быть реализовано на практике программным обеспечением (иногда называемым лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., любое из чего будет согласоваться с настоящим изобретением). Как показано на ФИГ.16, к программному коду программного обеспечения, которое воплощает настоящее изобретение, обычно получает доступ процессор 5001 хост-системы 5000 из запоминающих устройств 5011 долговременной памяти, таких накопитель на CD-диске, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код программного обеспечения может быть воплощен в любой из множества известных сред для использования с системой обработки данных, такой как дискета, накопитель на жестких дисках или CD-диск. Код может распределяться в таких средах или может распределяться пользователям из компьютерной памяти 5002 или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для использования пользователями таких других систем.
Программный код включает операционную систему, которая управляет функцией и взаимодействием различных компонентов компьютера и одной или нескольких прикладных программ. Обычно программный код подкачивается по частям из запоминающего устройства 5011 в относительно более быстродействующее запоминающее устройство 5002 компьютера, где он доступен для обработки процессором 5001. Методы и способы для воплощения программного кода в памяти, в физических средах и/или распределения программного кода через сети хорошо известны, и более подробно в данном документе обсуждаться не будут. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD, магнитную ленту и т.п.) часто называют "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.
ФИГ.17 представляет собой изображение характерной рабочей станции или серверной аппаратной системы, в которой настоящее изобретение может быть реализовано на практике. Система 5020, представленная на ФИГ.17, содержит характерную базовую компьютерную систему 5021, такую как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину, используемую для соединения и связи процессора(-ов) 5026 и других компонентов системы 5021 в соответствии с известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включающий любое из магнитного накопителя, CD-диска, DVD-диска и флэш-памяти) или, например, накопитель на магнитной ленте. Система 5021 также может содержать адаптер пользовательского интерфейса, который соединяет микропроцессор 5026 через шину с одним или несколькими интерфейсными устройствами, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие интерфейсные устройства, которые могут быть любыми устройствами пользовательского интерфейса, такими как сенсорный экран, клавиатура цифрового ввода и т.п. Шина также соединяет устройство 5022 отображения, такое как ЖК-экран или монитор, с микропроцессором 5026 посредством адаптера устройства отображения.
Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с маркерным доступом, сеть Ethernet или модемы. Альтернативно система 5021 может поддерживать связь с помощью беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (LAN) или глобальной вычислительной сети (WAN), или система 5021 может быть клиентом в клиент/серверной распределенной системе с другим компьютером, и т.п. Все эти конфигурации, а также соответствующее коммуникационное аппаратное и программное обеспечение, известны в данной области техники.
ФИГ.18 представляет собой изображение сети 5040 обработки данных, в которой настоящее изобретение может быть реализовано на практике. Сеть 5040 обработки данных может содержать множество отдельных сетей, таких как беспроводная сеть и проводная сеть, каждая из которых может содержать множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, она может содержать одну или несколько сетей LAN, где LAN может содержать множество интеллектуальных рабочих станций, соединенных с хост-процессором.
Все еще обращаясь к ФИГ.18, сети также могут содержать мэйнфреймы или серверы, такие как шлюзовый компьютер (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюзовый компьютер 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при соединении одного сетевого протокола с другим. Шлюз 5046 предпочтительно может быть соединен линией связи с другой сетью (например, сетью Интернет 5047). Шлюз 5046 также может быть прямо соединен с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 посредством линии связи. Шлюзовый компьютер может быть реализован с использованием сервера IBM eServer System z®, поставляемым на рынок International Business Machines Corporation.
Одновременно на ФИГ.17 и ФИГ.18 представлен программный код программного обеспечения, который может реализовывать настоящее изобретение, может быть доступен процессору 5026 системы 5020 из долговременных запоминающих сред 5027, таких накопитель на CD-дисках или накопитель на жестких дисках. Программный код программного обеспечения может быть воплощен в любой из множества известных сред для использования с системой обработки данных, такой как дискета, жесткий диск или CD-диск. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для использования пользователями таких других систем.
Альтернативно программный код может быть осуществлен в памяти 5025 с доступом к нему процессором 5026 с применением процессорной шины. Такой программный код содержит операционную систему, которая управляет функцией и взаимодействием различных компонентов компьютера и одной или нескольких прикладных программ 5032. Программный код обычно подкачивается по частям из запоминающих сред 5027 в быстродействующую память 5025, где он доступен для обработки процессором 5026. Методы и способы осуществления программного кода программного обеспечения в памяти, в физических средах и/или распределения кода программного обеспечения посредством сетей хорошо известны и в данном документе подробнее обсуждаться не будут. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD-диски, магнитную ленту и т.п.) часто называют "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.
Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующий и менее объемный, чем другие кэши процессора), представляет собой низший (L1 или уровень один) кэш, а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3, если имеется 3 уровня). Кэш низшего уровня часто делится на кэш команд (I-Cache), хранящий машинные команды, подлежащие выполнению, и кэш данных (D-Cache), содержащий операнды, хранимые в памяти.
ФИГ.19 представляет собой изображение иллюстративного варианта осуществления процессора для процессора 5026. Обычно, чтобы буферизировать блоки памяти с целью повышения производительности процессора, используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, хранящий строки кэша данных памяти, которые предположительно будут использоваться. Типичные строки кэша содержат 64, 128 или 256 байтов данных памяти. Отдельные кэши используются часто для кэширования команд, а не кэширования данных. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения, хорошо известными в данной области техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, содержащей 4 уровня кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем 5 уровня (L5), поскольку оно обычно является более быстродействующими и содержит лишь часть энергонезависимого запоминающего устройства (DASD, лента и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые постранично перемещаются в основное запоминающее устройство 5025 и из него операционной системой. Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды, подлежащей выполнению. Счетчик команд в процессоре z/Architecture® является 64-битным и может быть усечен до 31 или 24 битов с целью поддержки предыдущих ограничений адресации. Счетчик команд обычно воплощен в PSW (слове статуса программы) компьютера, так что он сохраняется при переключении контекста. Таким образом, работающая программа, имеющая значение счетчика команд, может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы сохраняет значение счетчика команд, пока программа неактивна, и программный счетчик (в PSW) операционной системы используется, пока выполняется операционная система. Обычно счетчик команд увеличивается на величину, равную числу байтов текущей команды. RISC-команды (вычисления с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (вычисления со сложным набором команд) обычно имеют переменную длину. Команды IBM z/Architecture® являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Счетчик 5061 команд изменяется, например, или операцией переключения контекста, или операцией выбранного перехода команды перехода. В операции переключения контекста текущее значение счетчика команд сохраняется в слове статуса программы вместе с другой информацией о состоянии выполняемой программы (такой как коды состояний), и загружается новое значение счетчика команд, указывающее на команду нового программного модуля, который необходимо выполнить. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения или выполнять цикл в программе путем загрузки результата команды перехода в счетчик 5061 команд.
Обычно для извлечения команд от имени процессора 5026 используется блок 5055 извлечения команд. Блок извлечения или извлекает "следующие последовательные команды", целевые команды команд выбранного перехода, или первые команды программы, следующей за переключением контекста. В современных блоках извлечения команд часто применяют методы предварительного извлечения, чтобы эмпирически осуществлять предварительное извлечение команд на основании вероятности того, что предварительно извлеченные команды могли бы быть использованы. Например, блок извлечения может осуществлять извлечение 16 байтов команды, которая содержит следующую последовательную команду, и дополнительных байтов других последовательных команд.
Затем извлеченные команды выполняются процессором 5026. В одном варианте осуществления извлеченная команда(-ы) передается блоку 5056 диспетчеризации блока извлечения. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 извлечения команд и выполняет арифметические операции с операндами в соответствии с кодом операции команды. Операнды подаются на блок 5057 выполнения предпочтительно или из памяти 5025, структурированных регистров 5059 или из ближайшего поля выполняемой команды. Сохраненные результаты выполнения хранятся или в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).
Процессор 5026 обычно имеет один или несколько блоков 5057, 5058, 5060 для выполнения функции команды. Обращаясь к ФИГ.20А, блок 5057 выполнения может сообщаться со структурированными регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065 посредством интерфейсной логики 5071. Блок 5057 выполнения может применять несколько регистровых схем 5067, 5068, 5069, чтобы хранить информацию, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ (XOR), циклический сдвиг и смещение. ALU предпочтительно поддерживает специализированные операции, зависящие от структуры. Другие схемы могут обеспечивать другие структурированные средства 5072, содержащие, например, коды ситуаций и логику поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, которая может направлять результат ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание предназначено лишь обеспечить характерное понимание одного варианта осуществления.
Например, команда ADD выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, тогда как, например, команда с плавающей точкой выполняется блоком выполнения с плавающей точкой, обладающим специальными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения функции, определенной кодом операции, на операндах. Например, команда ADD может выполняться блоком 5057 выполнения на операндах, находящихся в двух регистрах 5059, указанных в регистровых полях команды.
Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, где третий операнд может быть третьим регистром или одним из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (ALU) 5066, способное выполнять ряд логических функций, таких как смещение, циклический сдвиг. И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любую из сложения, вычитания, умножения, деления. Некоторые ALU 5066 разработаны для скалярных операций, а некоторые - для плавающей точки. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). IBM z/Arcmtecture® имеет обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до 1 или дополнения до 2. Число в форме дополнения до 2 выгодно в том смысле, что ALU не нужно поддерживать процедуру вычитания, поскольку и отрицательное, и положительное значение в форме дополнения до 2 в АЛU требует только сложения. Числа обычно описаны в сокращенном виде, в котором 12-битное поле определяет адрес блока из 4096 байтов и обычно описывается, например, как 4 кбайтный (килобайтный) блок.
Обращаясь к ФИГ.20Б, информация команды перехода для выполнения команды перехода обычно передается блоку 5058 перехода, который часто применяет алгоритм предсказания переходов, такой как таблица 5082 истории переходов, чтобы предсказывать исход перехода до завершения других условных операций. Цель текущей команды перехода извлекается и выполняется по предположению до завершения условных операций. Когда условные операции завершаются, выполненные по предположению команды перехода или завершаются, или отбрасываются на основании ситуаций условной операции и предположенного исхода. Типичная команда перехода может проверять коды ситуаций и переход к целевому адресу, если коды ситуаций отвечают требованию перехода команды перехода, причем целевой адрес может рассчитываться на основании нескольких чисел, включая, например, числа из полей регистра или непосредственного поля команды. Блок 5058 перехода может применят ALU 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода может поддерживать связь, например, с регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации или другими схемами 5073.
Выполнение группы команд может прерываться по ряду причин, включая, например, переключение контекста, инициированное операционной системой, исключительную ситуацию или ошибку программы, приводящую к переключению контекста, сигнал прерывания ввода-вывода, приводящий к переключению контекста, или многопоточную деятельность множества программ (в многопоточной среде). Предпочтительно переключение контекста сохраняет информации о состоянии выполняемой в данный момент программы, а затем загружает информацию о состоянии другой запускаемой программы. Информация о состоянии может сохраняться, например, в аппаратных регистрах или в памяти. Информация о состоянии предпочтительно содержит значение счетчика команд, указывающее на очередную команду, которую необходимо выполнить, коды ситуаций, информацию о трансляции памяти и содержимое структурированного регистра. Деятельность по переключению контекста может осуществляться аппаратными схемами, прикладными программами, программами операционной системы или аппаратно-программным кодом (микрокодом, пикокодом или лицензионным внутренним кодом (LIC) по отдельности или в сочетании).
Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может предоставлять непосредственный операнд, использующий значение части команды, может предоставлять одно или несколько регистровых полей, прямо указывающих или на регистры общего назначения или на регистры особого назначения (например, регистры с плавающей точкой). Команда может использовать подразумеваемые регистры, идентифицируемые полем кода операции как операнды. Команда может использовать для операндов ячейки памяти. Ячейка памяти операнда может предоставляться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения z/Architecture®, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются, чтобы предоставлять, например, адрес операнда в памяти. Под местоположением в данном документе понимается местоположение в основной памяти (основном запоминающем устройстве), если не указано иное.
Обращаясь к ФИГ.20В процессор осуществляет доступ к запоминающему устройству с помощью блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая по порядку не соответствует последовательности команд, однако блок 5060 загрузки/сохранения должен поддерживать для программ видимость того, что команды выполнялись по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, устройства ALU 5085 и управляющую логику 5090, чтобы вычислять адреса памяти и обеспечивать формирование последовательности конвейера для сохранения порядка операций. Некоторые операции могут не сохранять порядок, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы операции с нарушенным порядком казались программе выполненными по порядку, как хорошо известно в данной области техники.
Предпочтительно адреса, которые "видит" прикладная программа, часто называют виртуальными адресами. Виртуальные адреса иногда называют "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что они перенаправляются в местоположение в физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простую префиксацию виртуального адреса величиной сдвига, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, причем таблицы трансляции предпочтительно содержат, по меньшей мере, таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись, указывающую на таблицу страниц. В z/Architecture® предоставляется иерархия трансляции, включающая первую таблицу области, вторую таблицу области, третью таблицу области, таблицу сегментов и необязательную таблицу страниц. Эффективность трансляции адресов часто повышается за счет использования буфера (TLB) ассоциативной трансляции, который содержит записи, отображающие виртуальный адрес для соответствующего местоположения в физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с помощью таблиц трансляции. Последующее использование виртуального адреса может затем использовать запись быстродействующего TLB, а не медленный последовательный доступ к таблице трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения, включая LRU (наиболее давней по использованию).
В том случае, когда процессор является процессором многопроцессорной системы, каждый процессор отвечает за сохранение совместно используемых ресурсов, таких как средства ввода-вывода, кэши, TLB и память, взаимно заблокированных для обеспечения непротиворечивости. Обычно для поддержания непротиворечивости кэшей используются технологии "слежения". Чтобы облегчать совместное использование, в среде слежения каждая строка кэша может отмечаться как находящаяся в любом состоянии из состояния совместного использования, состояния монопольного использования, измененного состояния, недостоверного состояния и т.п. Блоки 5054 ввода-вывода (ФИГ.19) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, диски, принтеры, устройства отображения и сети. Блоки ввода-вывода часто представляются компьютерной программе драйверами программного обеспечения. В мэйнфреймах, таких как System z® производства IBM®, канальные адаптеры и адаптеры открытых систем являются блоками ввода-вывода мэйнфрейма, которые обеспечивают связь между операционной системой и периферийными устройствами.
Выгоду от одной или нескольких особенностей настоящего изобретения могут получать и другие типы вычислительных сред. Например, среда может содержать эмулятор (например, программные или другие механизмы эмуляции), в котором эмулируется конкретная архитектура (включая, например, выполнение команд, структурированные функции, такие как трансляция адреса, и структурированные регистры) или ее подмножество (например, в частной компьютерной системе, имеющей процессор и память). В такой среде одна или несколько функций эмуляции эмулятора могут осуществлять одну или несколько особенностей настоящего изобретения, даже если компьютер, на котором работает эмулятор, может иметь архитектуру, отличающуюся от эмулируемых средств. Например, в режиме эмуляции декодируется конкретная эмулируемая команда или операция, и для реализации отдельной команды или операции создается соответствующая функция эмуляции.
В эмулирующей среде хост-компьютер содержит, например, память для хранения команд и данных; блок извлечения команд для извлечения команд из памяти и необязательно обеспечения локальной буферизации извлеченной команды; блок декодирования команд для приема извлеченных команд и определения типа команд, которые были извлечены; и блок выполнения команд для выполнения команд. Выполнение может включать загрузку данных из памяти в регистр; сохранение данных обратно в память из регистра; или выполнение арифметической или логической операции некоторого типа, как определяется блоком декодирования. В одном примере каждый блок реализован в программном обеспечении. Например, выполняемые блоками операции реализуются в виде одной или нескольких подпрограмм в программном обеспечении эмулятора.
Более конкретно, в мэйнфрейме структурированные машинные команды используются программистами, сегодня, как правило, программистами, работающими на языке С, часто посредством приложения-компилятора. Эти команды, хранящиеся в запоминающей среде, могут выполняться в исходном формате на сервере z/Architecture® IBM® или в другом случае в машинах, реализующих другие архитектуры. Они могут эмулироваться в существующих и будущих мэйнфрейм серверах IBM® и на других машинах IBM® (например, серверах Power Systems и серверах System x). Они могут выполняться в машинах, работающих на Linux на широком ряде машин, использующих аппаратное обеспечение производства IBM®, Intel®, AMD и других. Кроме выполнения на этом аппаратном обеспечении под z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию посредством TurboHercules (www.turbohercules.com/), Hercules (www.hercules-390.org/) или FSI (Fundamental Software, Inc) (www.runsoft.com/), где выполнение производится в основном в режиме эмуляции. В режиме эмуляции программное обеспечение эмуляции выполняется собственным процессором, чтобы эмулировать архитектуру эмулируемого процессора.
Собственный процессор, чтобы выполнять эмуляцию эмулируемого процессора, как правило, выполняет программное обеспечение эмуляции, содержащее или аппаратно-программное обеспечение или собственную операционную систему. Программное обеспечение эмуляции отвечает за извлечение и выполнение команд архитектуры эмулируемого процессора. Программное обеспечение эмуляции поддерживает счетчик эмулируемых программ, чтобы отслеживать границы команд. Программное обеспечение эмуляции может извлекать одну или несколько эмулируемых машинных команд за раз и преобразовывать одну или несколько эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором. Эти преобразованные команды могут кэшироваться, так что можно добиться более быстрого преобразования. Тем не менее, программное обеспечение эмуляции должно поддерживать правила архитектуры эмулируемого процессора, чтобы обеспечивать корректную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, программное обеспечение эмуляции должно обеспечивать ресурсы, определенные архитектурой эмулируемого процессора, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамической трансляции адреса, включая, например, таблицы сегментов и таблицы страниц, механизмы прерывания, механизмы переключения контекста, часы истинного времени (TOD) и структурированные интерфейсы к подсистемам ввода-вывода, чтобы операционная система или прикладная программа, созданная для работы на эмулируемом процессоре, могла запускаться на собственном процессоре, имеющем программное обеспечение эмуляции.
Конкретная эмулируемая команда декодируется, и для выполнения функции отдельной команды вызывается подпрограмма. Функция программного обеспечения эмуляции, эмулирующая функцию эмулируемого процессора, реализуется, например, в подпрограмме или драйвере на языке С или каким-либо другим способом предоставления драйвера для конкретного аппаратного обеспечения, который будет доступен специалистам в данной области техники после понимания описания предпочтительного варианта осуществления. Различные патенты, относящиеся к эмуляции программного и аппаратного обеспечения, включая, без ограничения, патент США на изобретение № 5551013 под названием "Multiprocessor for Hardware Emulation", Beausoleil et al.; и патент США на изобретение № 6009261 под названием "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", Scaizi et al.; и патент США на изобретение № 5574873 под названием "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", Davidian et al.; и патент США на изобретение № 6308255 под названием "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", Gorishek et al.; и патент США на изобретение № 6463582 под названием "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", Lethin et al.; и патент США на изобретение № 5790825 под названием "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", Eric Traut; и многие другие представляют ряд известных способов осуществления эмуляции формата команд управления, разработанного для другой машины, для целевой машины, доступной специалисту в данной области техники.
ФИГ.21 представляет собой изображение примера эмулируемой компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000' хост-архитектуры. В эмулируемой компьютерной хост-системе 5092 хост-процессор (ЦП) 5091 является эмулируемым хост-процессором (или виртуальным хост-процессором) и содержит процессор 5093 эмуляции, имеющий другую собственную архитектуру набора команд, чем у процессора 5091 хост-компьютера 5000'. Эмулируемая компьютерная хост-система 5092 содержит память 5094, доступную для процессора 5093 эмуляции. В иллюстративном варианте осуществления память 5094 разделена на часть памяти 5096 хост-компьютера и часть 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в соответствии с архитектурой хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированного набора команд, имеющих структуру, отличную от структуры команд эмулируемого процессора 5091, собственные команды извлекаются из памяти 5097 подпрограмм эмуляции, и может осуществлять доступ к хост-команде для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд, полученных в подпрограмме последовательности и доступа/декодирования, которая может декодировать хост-команду(-ы), к которой осуществляется доступ, чтобы определять подпрограмму выполнения собственных команд для эмуляции функции хост-команды, к которой осуществляется доступ. Другие средства, которые определены для архитектуры компьютерной хост-системы 5000', могут эмулироваться подпрограммами структурированных средств, включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамического преобразования адреса и ввода-вывода и кэш процессора. Подпрограммы эмуляции также могут получать преимущество от функций, доступных в процессоре 5093 эмуляции (таких как регистры общего назначения и динамическая трансляция виртуальных адресов), чтобы улучшать производительность подпрограмм эмуляции. Также может предоставляться специальное аппаратное обеспечение и механизмы разгрузки, чтобы помогать процессору 5093 эмулировать функции хост-компьютера 5000'.
Используемая в данном документе терминология имеет целью описание лишь конкретных вариантов осуществления и не предназначена ограничивать изобретение. Как используются в данном документе, формы единственного числа также включают формы множественного числа, если иное прямо не следует из контекста. Также будет понятно, что термины "содержит" и/или "содержащий", когда используются в этом описании, определяют наличие указанных признаков, чисел, этапов, операций, элементов и/или компонентов, но не исключают наличия или добавления одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.
Подразумевается, что соответствующие структуры, материалы, действия и эквиваленты всех элементов "средство или этап плюс функция" в предоставленной ниже формуле изобретения, если таковые имеются, включают любую структуру, материал или действие для выполнения функции в сочетании с другими заявленными элементами, как заявлено конкретным образом. Описание настоящего изобретения было представлено с целью демонстрации и описания, и не подразумевается полным или ограниченным изобретением в раскрытой форме. Множество модификаций и изменений будут очевидны специалисту обыкновенной квалификации в данной области техники, без отхода от объема изобретения. Вариант осуществления был выбран и описан для того, чтобы наилучшим образом объяснить принципы изобретения и применение на практике и чтобы позволить другим специалистам обыкновенной квалификации в данной области техники понять изобретение для различных вариантов осуществления с различными модификациями, которые подходят для конкретного рассматриваемого применения.
Класс G06F11/34 запись (регистрация) или статистическая оценка рабочего времени вычислительного устройства, например длительности простоя, операций ввода-вывода