Обработка транзакций
Иллюстрации
Показать всеГруппа изобретений относится к многопроцессорным вычислительным средам и может быть использована для обработки транзакций в таких средах. Техническим результатом является повышение производительности. Способ содержит этапы, на которых транзакция инициируется посредством команды начала транзакции, во время выполнения она может прерваться. Если транзакция прерывается, определяют тип транзакции. В случае транзакции первого типа выполнение транзакции возобновляется с команды начала транзакции, а в случае транзакции второго типа выполнение транзакции возобновляется с команды, следующей за командой начала транзакции. При этом первым типом транзакции является ограниченная транзакция, вторым типом – неограниченная. 3 н. и 10 з.п. ф-лы, 29 ил., 1 табл.
Реферат
Уровень техники
Настоящее изобретения относятся в целом к многопроцессорным вычислительным средам, в частности к обработке транзакций в таких вычислительных средах.
Актуальной проблемой программирования в многопроцессорной среде является обновление содержимого одной и той же ячейки запоминающего устройства несколькими центральными процессорными устройствами (ЦПУ). Многие команды, обновляющие содержимое ячеек запоминающего устройства, в том числе даже такие простые логические команды, как конъюнкция (AND), требуют для этого много обращений к данным ячейкам. Например, сначала выполняется выборка содержимого ячейки запоминающего устройства, затем обновленный результат возвращается на хранение в запоминающее устройство.
Для того чтобы набор ЦПУ успешно обновлял содержимое одной и той же ячейки запоминающего устройства, доступ к данной ячейке сериализуется (т.е. организуется последовательный доступ). В прошлом корпорацией International Business Machines Corporation вместе с архитектурой S/360 была введена команда "Проверка и установка" (от англ.: TEST AND SET), обеспечивающая обновление содержимого ячейки запоминающего устройства со взаимной блокировкой. Обновление со взаимной блокировкой означает, что с точки зрения других ЦПУ и подсистемы ввода-вывода (например, канальной подсистемы) обращение команды к запоминающему устройству представляется атомарным (т.е. исполняется полностью или не исполняется вовсе). Позднее, вместе с архитектурой S/370, предложенной корпорацией International Business Machines Corporation, были введены команды "Сравнение с обменом" (от англ.: COMPARE AND SWAP) и "Двойное сравнение с обменом" (от англ.: COMPARE DOUBLE AND SWAP), позволяющие более аккуратно выполнять обновление со взаимным блокированием, а также позволяющие осуществить методику, известную как блокировочное слово (семафор). Добавленные недавно команды, включая "Сравнение с обменом и очистка" (от англ.: COMPARE AND SWAP AND PURGE) и "Сравнение с обменом и сохранение" (от англ.: COMPARE AND SWAP AND STORE), реализовали дополнительные возможности обновления со взаимным блокированием. Тем не менее, все указанные выше команды обеспечивают взаимное блокирование только одиночной ячейки запоминающего устройства.
Более сложные программные методики могут потребовать обновление со взаимным блокированием большого числа ячеек запоминающего устройства, например, в случае добавления элемента в дважды связанный список. В такой операции с точки зрения других ЦПУ и подсистемы ввода-вывода должны обновляться одновременно как прямой, так и обратный указатели. Чтобы добиться такого обновления множества ячеек запоминающего устройства, программа вынуждена использовать отдельную, единую точку сериализации, такую как блокировочное слово. Однако блокировочные слова могут обеспечить только значительно более грубый уровень сериализации, чем требуется; например, блокировочные слова могут сериализовать очередь из миллиона элементов целиком, хотя обновляются всего два элемента. Для более аккуратной сериализации программа может структурировать данные (например, организовать иерархию точек блокировки), однако это порождает дополнительные проблемы, такие как возможность возникновения ситуации взаимоблокировки, если происходит нарушение иерархии; восстановление происходит, если программа обнаруживает ошибку во время одной или более блокировок или если установка блокировки окажется невозможной.
В дополнение к изложенному выше существует множество сценариев, по которым программа может выполнить последовательность команд, приводящую или не приводящую к возбуждению условия исключения. Однако если исключение возбуждается, то программа может предпринять корректирующее действие для устранения условия исключения. Например, в среде Java подобное выполнение может использоваться, например, для спекулятивного выполнения, частичного последовательного выполнения функции и/или при повторной организации последовательности проверки нулевого указателя.
В классических операционных системах, таких как z/OS и ее предшественницах, предложенных корпорацией International Business Machines Corporation, программа задает среду восстановления для перехвата случаев возбуждения любого возможного условия программного исключения. Если программа не перехватывает некоторое исключение, к обработке которого и операционная система не была подготовлена, то в случае возбуждения такого исключения, как правило, выполнение программы аварийно прекращается операционной системой. Организация и эксплуатация подобной вычислительной среды затратна и связана с трудностями.
Сущность изобретения
Для преодоления недостатков уровня техники предложен способ управления выполнением транзакции в вычислительной среде, включающий инициирование процессором выполнения транзакции в режиме выполнения транзакции посредством команды начала транзакции, используемой для инициирования транзакции первого типа или транзакции второго типа, причем транзакция включает множество подлежащих выполнению команд, и команда начала транзакции посредством своего поля явно указывает на инициирование транзакции первого типа или транзакции второго типа. Предлагаемый в изобретении способ характеризуется тем, что: при выполнении транзакции второго типа устанавливают код условия на первое значение; в режиме выполнения транзакции эффективно задерживают фиксацию транзакционных сохранений в главном запоминающем устройстве до завершения выбранной транзакции; в случае прерывания транзакции определяют на основании поля команды начала транзакции, инициирована ли транзакция первого типа или второго типа; в случае прерывания транзакции первого типа выполнение транзакции возобновляют с команды начала транзакции; в случае прерывания транзакции второго типа устанавливают код условия на второе значение, которое указывает на получение управления командой, следующей по очереди после команды начала транзакции, в результате прерывания транзакции, и выполнение транзакции возобновляют с команды, непосредственно следующей за командой начала транзакции в порядке, заданном программой; причем первым типом транзакции является ограниченная транзакция, обладающая одним или несколькими связанными с ней ограничениями, а команда начала транзакции является командой начала ограниченной транзакции, при этом одно или несколько ограничений, связанных с ограниченной транзакцией, включают: доступность только части набора общих команд для включения в ограниченную транзакцию, возможность выполнения только определенного числа команд в ограниченной транзакции, возможность доступа только к определенному числу операндов запоминающего устройства в ограниченной транзакции или ограничение ограниченной транзакции единственным уровнем вложения, а вторым типом транзакции является неограниченная транзакция, не обладающая одним или несколькими ограничениями, связанными с ограниченной транзакцией.
Объектами изобретения являются также система для управления выполнением транзакции в вычислительной среде, содержащая средства, приспособленные для выполнения всех шагов описанного выше способа, а также машиночитаемый носитель данных, в котором хранится компьютерная программа, содержащая команды для выполнения всех шагов описанного выше способа при ее выполнении при ее выполнении в компьютерной системе.
В изобретении предлагается транзакционная среда, позволяющая использовать различные типы транзакций. Данная транзакционная среда предполагает возможность обработки прерывания транзакции с учетом различных типов транзакций и выполнение обработки в соответствии с типом транзакции. Таким образом, тип транзакции определяет то, каким образом должна вестись обработка транзакции, включая обработку прерываний. Соответственно, используется логический поток прерывания, который учитывает тип транзакции и ведет себя по-разному в зависимости от определенного типа транзакции.
Технический результат, достигаемый при осуществлении изобретения, заключается в повышении производительности обработки транзакций в вычислительной среде.
Краткое описание чертежей
В описании и формуле изобретения в качестве примеров один или более аспектов указываются и отдельно формулируются. Вышеупомянутые и прочие объекты, особенности и преимущества раскрываются в последующем подробном описании, которое сопровождается чертежами. На чертежах показано:
на фиг. 1 - схема варианта осуществления вычислительной среды,
на фиг. 2А - схема примера команды начала неограниченной транзакции [от англ.: Transaction Begin, мнемокод (т.е. мнемоническое обозначение) - TBEGIN],
на фиг. 2Б - более подробная схема варианта осуществления поля команды начала неограниченной транзакции, схема которой показана на фиг. 2А,
на фиг. 3А - схема примера команды начала ограниченной транзакции (от англ.: Transaction Begin Constrained, мнемокод - TBEGINC);
на фиг. 3Б - более подробная схема варианта осуществления поля команды начала ограниченной транзакции, схема которой показана на фиг. 3А,
на фиг. 4 - схема примера команды окончания транзакции (от англ.: Transaction End, мнемокод - TEND),
на фиг. 5 - схема примера команды прерывания транзакции (от англ.: Transaction Abort, мнемокод - TABORT),
на фиг. 6 - схема примера вложенных транзакций,
на фиг. 7 - схема примера команды нетранзакционного сохранения (от англ.: Nontransactional Store, мнемокод -NTSTG),
на фиг. 8 - схема примера команды извлечения глубины вложения транзакции (от англ.: Extract Transaction Nesting Depth, мнемокод - ETND),
на фиг. 9 - схема примера блока диагностики транзакции,
на фиг. 10 - перечень причин прерывания транзакции с указанием соответствующих значений кода прерывания транзакции и кода условия,
на фиг. 11 - схема варианта осуществления алгоритма, связанного с выполнением команды начала ограниченной транзакции,
на фиг. 12 - схема варианта осуществления алгоритма, связанного с выполнением команды начала неограниченной транзакции,
на фиг. 13 - схема варианта осуществления алгоритма, связанного с выполнением команды окончания транзакции,
на фиг. 14 - схема варианта осуществления алгоритма, связанного с выполнением команды прерывания транзакции,
на фиг. 15А - схема варианта осуществления алгоритма, связанного с обработкой транзакций,
на фиг. 15Б - схема варианта осуществления алгоритма, связанного с продолжением обработки после прерывания неограниченной транзакции,
на фиг. 16А и 16Б - схемы примера вставки элемента очереди в дважды связанный список элементов очереди,
на фиг. 17 - графическое представление варианта осуществления компьютерного программного продукта,
на фиг. 18 - схема варианта осуществления хост-компьютерной системы,
на фиг. 19 - схема другого варианта осуществления компьютерной системы,
на фиг. 20 - схема другого варианта осуществления компьютерной системы, содержащей вычислительную сеть,
на фиг. 21 - схема варианта осуществления различных узлов компьютерной системы,
на фиг. 22А - схема варианта осуществления исполнительного устройства из состава компьютерной системы, показанной на фиг. 21,
на фиг. 22Б - схема варианта осуществления устройства ветвления из состава компьютерной системы, показанной на фиг. 21,
на фиг. 22В - схема варианта осуществления устройства загрузки-хранения из состава компьютерной системы, показанной на фиг. 21,
на фиг. 23 - схема варианта осуществления эмулируемой (виртуальной) хост-компьютерной системы.
Подробное описание
В одном аспекте изобретения предлагается средство выполнения транзакций (ТХ). Данное средство обеспечивает обработку транзакций для команд и, в соответствии с нижеизложенным, в одном или более вариантах осуществления предоставляет различные режимы выполнения и уровни вложения обработки транзакций.
Средство обработки транзакций вводит состояние ЦПУ, называемое режимом выполнения транзакции (ТХ). После перезагрузки ЦПУ не входит в режим выполнения транзакции. ЦПУ переводится в режим выполнения транзакции по команде начала транзакции. ЦПУ выходит из режима выполнения транзакции или (а) по крайней внешней команде окончания транзакции (подробные сведения о внешних и внутренних командах приведено ниже), или (б) в случае прерывания транзакции. В режиме выполнения транзакции обращения ЦПУ к запоминающему устройству с точки зрения других ЦПУ и подсистемы ввода-вывода выглядят едиными (т.е. неделимыми) и одновременными. Обращения к запоминающему устройству или (а) фиксируются (т.е. выполняются целиком и успешно), если крайняя внешняя транзакция завершается без прерывания транзакции (т.е. в этом случае, например, обновления данных в кэш-памяти или в буфере, локальных для данного ЦПУ, передаются далее, сохраняются в реальном запоминающем устройстве и видны другим ЦПУ), или (б) отбрасываются, если транзакция прерывается.
Транзакции могут быть вложенными. Это означает, что пока ЦПУ находится в режиме выполнения транзакции, данное ЦПУ может выполнять другую команду начала транзакции. Команда, которая переводит ЦПУ в режим выполнения транзакции, называется крайней внешней командой начала транзакции; по аналогии о программе говорят, что она выполняет крайнюю внешнюю транзакцию. Последующие вызываемые команды начала транзакции называются внутренними командами, при этом программа выполняет внутреннюю транзакцию. Изложенная модель обеспечивает как минимальное значение глубины вложения транзакции, так и зависящее от модели максимальное (т.е. максимально допустимое) значение глубины вложения транзакции. Команда извлечения глубины вложения транзакции возвращает текущее значение глубины вложения транзакции, и, согласно другому варианту осуществления, может возвращать максимальное значение глубины вложения транзакции. Такая методика использует модель, называемую "уплощенным вложением", согласно которой условие прерывания транзакции на любом уровне вложения транзакции приводит к прерыванию всех уровней транзакции и возвращению управления команде, следующей за крайней внешней командой начала транзакции.
В ходе обработки транзакции транзакционное обращение, совершаемое некоторым ЦПУ, считается конфликтующим (а) с транзакционным или нетранзакционным обращением, совершаемым другим ЦПУ, или (б) с нетранзакционным обращением, совершаемым подсистемой ввода-вывода в случае, если оба обращения адресованы к любой ячейке памяти в составе одной и той же строки кэш-памяти и одно или оба этих обращения являются обращениями сохранения. Иными словами, для того, чтобы выполнение транзакций было продуктивным, ЦПУ не должно совершать транзакционные обращения во время фиксации. Изложенная модель программирования в определенных случаях может быть высокоэффективной, например, при обновлении двух элементов дважды связанного списка, состоящего из миллиона элементов. Однако указанная модель может быть и менее эффективна в случае транзакционных обращений к большому числу ячеек запоминающего устройства.
В одной из моделей выполнения транзакции (называемой в настоящей заявке неограниченной транзакцией) при прерывании транзакции программа может либо пытаться заново выполнить данную транзакцию в надежде, что условие прерывания транзакции будет деактивировано, либо программа может "прибегнуть" к переходу на эквивалентную (резервную) нетранзакционную ветвь. Согласно другой модели выполнения транзакции (называемой в настоящей заявке ограниченной транзакцией), прерванная транзакция автоматически повторно выполняется ЦПУ; если условие прерывания транзакции не останется возбужденным непрерывно, то ограниченной транзакции в конечном счете гарантируется успешное выполнение.
При инициировании транзакции программа может задавать различные управляющие параметры, такие как: (а) перечень регистров общего назначения, содержимое которых в случае прерывания транзакции следует восстановить по состоянию на момент начала транзакции; (б) разрешение транзакции изменять содержимое регистров с плавающей запятой, в том числе, например, самих регистров с плавающей запятой и управляющего регистра операций с плавающей запятой; (в) разрешение транзакции изменять содержимое регистров доступа; (г) указание блокировать возникновение прерывания при возбуждении определенных условий программных исключений. Если неограниченная транзакция прерывается, то может предоставляться различная диагностическая информация. Например, крайняя внешняя команда начала транзакции (TBEGIN), инициирующая неограниченную транзакцию, может назначать определяемый программой блок диагностики транзакции. Кроме того, также может использоваться блок диагностики транзакции в зоне префикса ЦПУ или назначенный описанием состояния хост-компьютера, если транзакция прервана соответственно из-за программного прерывания или возникновения условия, вызывающего прекращение интерпретационного выполнения.
Выше были упомянуты различные типы регистров. Далее приводится их более подробное описание. Регистры общего назначения могут использоваться в качестве аккумуляторов в общих арифметических и логических операциях. Согласно одному из вариантов осуществления, каждый регистр содержит 64 двоичных разряда, всего имеется 16 регистров общего назначения. Регистры общего назначения идентифицируются по номерам, от 0 до 15, и обозначаются четырехразрядным полем R в составе команды. В некоторых командах предусмотрена адресация набора регистров общего назначения благодаря наличию набора полей R. В некоторых командах вместо явного обозначения с использованием поля R предусмотрено использование жестко заданных регистров общего назначения.
В дополнение к использованию в качестве аккумуляторов в общих арифметических и логических операциях, пятнадцать из шестнадцати регистров общего назначения также используются при формировании адресов в качестве регистров базового адреса и индекса. В этих случаях регистры обозначаются четырехразрядными полями (соответственно поля В и X) в составе команды. Значение ноль в поле В или X предписывает, что база или индекс не должны использоваться, в связи с чем регистр общего назначения с обозначением 0 не должен указываться как содержащий базовый адрес или индекс.
Команды с плавающей запятой используют набор регистров с плавающей запятой. В варианте осуществления ЦПУ снабжено шестнадцатью регистрами с плавающей запятой. Регистры с плавающей запятой идентифицируются по номерам, с 0 до 15, и обозначаются четырехразрядным полем R в составе команды с плавающей запятой. Каждый регистр с плавающей запятой является 64-разрядным и может содержать короткий (32-разрядный) или длинный (64-разрядный) операнд с плавающей запятой.
Управляющий регистр операций с плавающей запятой представляет собой 32-разрядный регистр, который содержит разряды маски, разряды флагов, код исключения данных и разряды режима округления, данный регистр используется при обработке операций с плавающей запятой.
Кроме того, в одном из вариантов осуществления ЦПУ снабжено шестнадцатью управляющими регистрами длиной 64 разряда каждый. Разряды этих управляющих регистров назначены определенным средствам системы, таким как средство регистрации программных событий (от англ.: Program Event Recording, аббревиатура PER) (описание приводится ниже), и используются для указания того, что либо операция может выполняться, либо должна быть предоставлена специальная информация, необходимая данному средству. В одном из вариантов осуществления для средства выполнения транзакции в соответствии с нижеизложенным используются поля управляющих регистров 0 (разряды с номерами 8 и 9) и 2 (разряды 61-63).
ЦПУ снабжено, например, шестнадцатью регистрами доступа с номерами 0-15. Регистры доступа являются 32-разрядными, разряды содержат косвенную спецификацию управляющего элемента адресного пространства. Управляющий элемент адресного пространства представляет собой параметр, используемый средством динамической трансляции адреса для преобразования ссылок в соответствующее адресное пространство. Если ЦПУ находится в режиме, называемом режимом регистра доступа [управление осуществляется разрядами слова состояния программы (ССП)], то поле В команды, используемое для указания логического адреса для ссылки на операнд запоминающего устройства, указывает регистр доступа и средство динамической трансляции адреса для выполняемой ссылки использует управляющий элемент адресного пространства, определенный регистром доступа. Для некоторых команд вместо поля В используется поле R. Предусмотрены команды для загрузки и сохранения содержимого регистров доступа и для перемещения содержимого из одного регистра доступа в другой.
Каждый регистр доступа, с 1-го по 15-й, может указывать любое адресное пространство. Регистр доступа 0 указывает первичное пространство команд. Если для указания адресного пространства используется один из регистров доступа с 0-го по 15-й, то ЦПУ определяет, какое из адресных пространств указано, путем преобразования содержимого регистра доступа. Если для указания адресного пространства используется регистр 0, то ЦПУ воспринимает содержимое регистра доступа как обозначающее первичное пространство команд и не проверяет фактическое содержимое регистра доступа. В связи с этим 16 регистров доступа в любой момент времени могут обозначать первичное пространство команд и до 15-ти других пространств.
Согласно варианту осуществления, существует несколько типов адресных пространств. Адресное пространство представляет собой непрерывную последовательность целых чисел (виртуальных адресов) и специфические параметры преобразования, что в совокупности позволяет ассоциировать каждое число последовательности с местоположением байта в запоминающем устройстве. Указанная последовательность начинается с нуля и нумеруется в направлении слева направо.
Например, в архитектуре z/Architecture при использовании центральным процессорным устройством виртуального адреса для обращения к главному запоминающему устройству (которое также называют главной памятью) этот виртуальный адрес вначале преобразуются средством динамической трансляции адреса в реальный адрес, затем путем добавления префикса преобразуется в абсолютный адрес. Средство динамической трансляции адреса может использовать в качестве параметров преобразования от одного до пяти уровней таблиц (таблицы страниц, сегментов, третьего региона, второго региона, первого региона). Обозначение (начало и длина) таблицы наиболее высокого уровня для специфического адресного пространства называется управляющим элементом адресного пространства, и средство динамической трансляции адреса получает эти сведения из управляющего регистра или по указанию регистра доступа. Согласно другому варианту, управляющий элемент адресного пространства для некоторого адресного пространства может быть реальным обозначением пространства, и средство динамической трансляции адреса должно воспринимать виртуальный адрес как реальный адрес и не использовать для преобразования какие-либо таблицы.
Средство динамической трансляции адреса в различные моменты времени использует управляющие элементы адресного пространства из различных управляющих регистров или указываемые регистрами доступа. Выбор определяется режимом преобразования, заданным текущим ССП. Возможно использование одного из четырех режимов трансляции: режим первичного пространства, режим вторичного пространства, режим регистра доступа и режим домашнего пространства. Адресация различных адресных пространств зависит от режима трансляции.
В любой момент времени, когда ЦПУ находится в режиме первичного пространства или в режиме вторичного пространства, оно может транслировать виртуальные адреса, принадлежащие двум адресным пространствам - первичному адресному пространству и вторичному адресному пространству. В любой момент времени, когда ЦПУ находится в режиме регистра доступа, оно может транслировать виртуальные адреса вплоть до 16-ти адресных пространств: первичного адресного пространства и до 15-ти адресных пространств, задаваемых регистром доступа. В любой момент времени, когда ЦПУ находится в режиме домашнего адресного пространства, оно может транслировать виртуальные адреса домашнего адресного пространства.
Первичное адресное пространство идентифицируется как таковое, поскольку оно состоит из виртуальных адресов, которые транслируются посредством управляющего элемента первичного адресного пространства. Аналогично, вторичное адресное пространство состоит из вторичных виртуальных адресов, которые транслируются посредством управляющего элемента вторичного адресного пространства; адресные пространства, определяемые регистрами доступа, состоят из определяемых регистрами доступа виртуальных адресов, которые транслируются посредством управляющих элементов адресных пространств, определяемых регистрами доступа; домашние адресные пространства состоят из домашних виртуальных адресов, которые транслируются посредством управляющих элементов домашних адресных пространств. Управляющие элементы первичного и вторичного адресных пространств располагаются в управляющих регистрах 1 и 7 соответственно. Управляющие элементы адресных пространств, определяемых регистрами доступа, располагаются в записях второй таблицы номеров адресных пространств, эти записи идентифицируются с помощью процесса, называемого трансляцией регистра доступа, с использованием управляющих регистров 2, 5 и 8. Управляющий элемент домашнего адресного пространства располагается в управляющем регистре 13.
Вариант осуществления вычислительной среды, пригодной для внедрения и использования одного или нескольких аспектов средства выполнения транзакций, описывается в настоящей заявке с использованием схемы на фиг. 1.
В соответствии со схемой на фиг. 1, в одном из примеров вычислительная среда 100 основана на архитектуре z/Architecture, предложенной корпорацией International Business Machines Corporation (корпорацией IBM) Армонк, штат Нью-Йорк, США. Архитектура z/Architecture описана в публикации IBM "z/Architecture - Principles of Operation" (от англ.: "Принцип действия архитектуры z/Architecture", публикация IBM №SA22-7832-08, 9-е издание, август 2010 г.).
Z/ARCHITECTURE, IBM, Z/OS и Z/VM (упоминается ниже) являются зарегистрированными торговыми марками корпорации International Business Machines Corporation, Армонк, штат Нью-Йорк, США. Прочие наименования, используемые в настоящей заявке, могут также быть зарегистрированными торговыми марками, торговыми марками или наименованиями продуктов корпорации International Business Machines Corporation или других компаний.
В одном из примеров в состав вычислительной среды 100 входит центральный процессорный комплекс 102, соединенный с одним или более устройствами 106 ввода-вывода через одно или более управляющих устройств 108. В состав центрального процессорного комплекса 102 входят, например, одно или более ЦПУ 110, один или более разделов 112 (например, логических разделов), гипервизор 114 логических разделов, а также подсистема 115 ввода-вывода. Описание перечисленных функциональных узлов приводится ниже.
ЦПУ 110 являются физическими процессорными ресурсами, выделенными логическим разделам. В частности, каждому логическому разделу 112 выделен один или более логических процессоров, каждый из которых представляет собой физический процессор 110, выделенный указанному разделу, или совместно используемую часть физического процессора 110. Логические процессоры конкретного раздела 112 могут быть специально выделенными данному разделу, так что соответствующий процессорный ресурс 110 зарезервирован данному разделу, либо совместно используемыми с другим разделом, так что соответствующий процессорный ресурс потенциально доступен другому разделу.
Логический раздел действует как отдельная система, в его состав входят одно или более приложений (т.е. прикладных программ) и резидентная операционная система, которая может отличаться от операционных систем других логических разделов. В варианте осуществления операционной системой является операционная система z/OZ, операционная система z/VM, операционная система Linux или операционная система TPF, предложенные корпорацией International Business Machines Corporation, Армонк, штат Нью-Йорк, США. Логические разделы 112 управляются гипервизором 114 логических разделов, который используется встроенным программным обеспечением, выполняемым процессорами 110. В данном случае в состав встроенного программного обеспечения входит, например, микрокод и/или милликод процессора. Это программное обеспечение включает, например, команды уровня аппаратного обеспечения и/или структуры данных, используемые при задействовании машинного кода более высокого уровня. В варианте осуществления указанное программное обеспечение включает, например, проприетарный код, который обычно поставляется как микрокод, содержащий выверенное программное обеспечение, или микрокод, специфический для контролируемого аппаратного обеспечения, и управляет доступом операционной системы к аппаратному обеспечению системы.
В состав логических разделов и супервизора логических разделов входит одна или более программ, располагающихся в соответствующих разделах центрального запоминающего устройства, связанного с центральными процессорами. Примером гипервизора 114 логических разделов является Процессорный менеджер ресурсов/системы, предложенный корпорацией International Business Machines Corporation, Армонк, штат Нью-Йорк, США.
Подсистема 115 ввода-вывода контролирует поток информации между устройствами 106 ввода-вывода и главным запоминающим устройством (также используется термин главная память). Указанная подсистема соединяется с центральным процессорным комплексом, благодаря чему она может быть как частью центрального процессорного комплекса, так и отдельным функциональным узлом. Подсистема ввода-вывода содействует центральным процессорным устройствам в обмене данными непосредственно с устройствами ввода-вывода и позволяет вести обработку данных совместно с выполнением ввода-вывода. Для осуществления обмена данными подсистема ввода-вывода использует коммуникационные адаптеры ввода-вывода. Существует множество типов коммуникационных адаптеров, в том числе, например, каналы, адаптеры ввода-вывода, платы шины PCI (от английского Peripheral Component Interconnect - межсоединение периферийных компонентов), платы шины Ethernet, платы интерфейса SCSI (от английского Small Computer Storage Interface - интерфейс малых вычислительных систем) и т.д. В конкретном примере, описываемом в данной заявке, коммуникационные адаптеры ввода-вывода относятся к типу каналов, в связи с чем подсистема ввода-вывода в данной заявке называется канальной подсистемой. Однако это лишь один из примеров, могут использоваться подсистемы ввода-вывода других типов.
При работе с потоком информации, поступающей от или к устройствам 106 ввода-вывода, подсистема ввода-вывода в качестве коммуникационных соединений использует один или более трактов ввода-вывода. В данном конкретном примере указанные тракты называются канальными тактами, поскольку коммуникационные адаптеры относятся к канальному типу.
Вычислительная среда, описанная выше, является лишь одним из примеров вычислительных сред, которые могут применяться. Могут использоваться другие среды, в том числе (но не ограничиваясь) среды без разбиения на разделы, среды с иной организацией разделов и/или эмулируемые среды; варианты осуществления не ограничиваются какой-либо одной средой.
Согласно одному или более аспектам, средство выполнения транзакций расширяет возможности ЦПУ, что позволяет ЦПУ выполнять последовательность команд, известную как транзакция, которая может обращаться к большому числу ячеек запоминающего устройства, в том числе, обновлять содержимое этих ячеек. С точки зрения других ЦПУ и подсистемы ввода-вывода транзакция является (а) полностью завершенной как одиночная атомарная операция или (б) прерванной, возможно, с неопределенностью относительно того, будет ли такая транзакция когда-либо выполнена (за исключением ряда условий, описанных в данной заявке). Таким образом, в результате успешно выполненной транзакции может быть обновлено значение набора ячеек запоминающего устройства без какого-либо специального блокирования, требуемого в классической многопроцессорной модели.
В состав средства выполнения транзакций входят, например: один или более управляющих параметров; одна или более команд; обработка транзакций, включая выполнение ограниченных и неограниченных транзакций а также обработку прерывания транзакций; все перечисленные составляющие описаны ниже.
В одном из вариантов осуществления для управления средством выполнения транзакций используются: три управляющих параметра специального назначения, включая ССП прерывания транзакции, адрес блока диагностики транзакции и глубину вложения транзакции; пять двоичных разрядов управляющего регистра; шесть общих команд, включая команды начала транзакции (ограниченной и неограниченной), команду окончания транзакции, команду извлечения глубины вложения транзакции, команду прерывания транзакции и команду нетранзакционного сохранения. Если указанное средство инсталлируется, то оно устанавливается, например, во всех ЦПУ в конфигурации. В одном из вариантов осуществления индикатором указанного средства является 73-й двоичный разряд: значение единица указывает, что средство выполнения транзакций инсталлировано.
Если средство выполнения транзакций инсталлировано, то конфигурация предоставляет средство выполнения неограниченных транзакций и, опционально, средство выполнения ограниченных транзакций, каждое из которых описывается ниже. Если значения индикаторов средства, например, разрядов 50 и 73, оба равны единице, то инсталлировано средство выполнения ограниченных транзакций. Оба индикатора указанного средства хранятся в определенных ячейках запоминающего устройства.
В соответствии с используемыми в настоящей заявке обозначениями, наименование "команда начала транзакции" обозначает команды с мнемокодами TBEGIN (команда начала неограниченной транзакции) и TBEGINC (команда начала ограниченной транзакции). При описании какой-либо конкретной команды из этих двух команд указывается наименование команды, за которым в круглых или квадратных скобках следует мнемокод, или же для краткости указывается только мнемокод.
Вариант осуществления формата команды начала транзакции (TBEGIN) показан на фиг. 2А и 2Б. Согласно примеру, в состав команды 200 TBEGIN входят: поле 202 кода операции, которое содержит код операции, определяющий операцию начала неограниченной транзакции; поле 204 базы (обозначение поля - B1); поле 206 смещения (D1); примыкающее поле 208 (I2). Если значение поля B1 отлично от нуля, то для формирования адреса первого операнда содержимое регистра общего назначения, определенного полем 204 B1 добавляется к полю 206 D1.
Если значение поля B1 отлично от нуля, что справедливо следующее:
- Если значение глубины вложения транзакции первоначально равно нулю, то адрес первого операнда обозначает местоположение блока диагностики транзакции длиной 256 байт, называемого блоком диагностики транзакции, определенным командой начала транзакции (TBEGIN) (описание приводится ниже), по которому в случае прерывания транзакции может быть сохранена различная диагностическая информация. Если ЦПУ находится в режиме первичного пространства или в режиме регистра доступа, то адрес первого операнда обозначает местоположение в первичном адресном пространстве. Если ЦПУ находится в режиме вторичного пространства или в режиме домашнего пространства, то адрес первого операнда обозначает местоположение соответственно во вторичном или в домашнем адресном пространстве. Если средство динамической трансляции адреса деактивировано, то адрес блока диагностики транзакции указывает местоположение в реальном запоминающем устройстве.
Определяется возможность сохранения первого операнда. Если сохранение возможно, то логический адрес указанного операнда помещается в адрес блока диагностики транзакции и адрес блока диагностики транзакции становится корректным.
- Если ЦПУ уже находится в режиме выполнения неограниченной транзак