RU2574815C2 - Method of providing communication in communication environment, computer system and nonvolatile computer-readable data medium - Google Patents

Method of providing communication in communication environment, computer system and nonvolatile computer-readable data medium Download PDF

Info

Publication number
RU2574815C2
RU2574815C2 RU2012148579/08A RU2012148579A RU2574815C2 RU 2574815 C2 RU2574815 C2 RU 2574815C2 RU 2012148579/08 A RU2012148579/08 A RU 2012148579/08A RU 2012148579 A RU2012148579 A RU 2012148579A RU 2574815 C2 RU2574815 C2 RU 2574815C2
Authority
RU
Russia
Prior art keywords
data transfer
data
recipient
sender
processor
Prior art date
Application number
RU2012148579/08A
Other languages
Russian (ru)
Other versions
RU2012148579A (en
Inventor
МАККЬЯНО Анджело
ТАРЧА Ричард
ВИНТЕР Александра
ЗИТТМАНН Густав III
СТИВЕНС Джерри
Original Assignee
Интернэшнл Бизнес Машинз Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/172,978 external-priority patent/US8549094B2/en
Application filed by Интернэшнл Бизнес Машинз Корпорейшн filed Critical Интернэшнл Бизнес Машинз Корпорейшн
Publication of RU2012148579A publication Critical patent/RU2012148579A/en
Application granted granted Critical
Publication of RU2574815C2 publication Critical patent/RU2574815C2/en

Links

Images

Abstract

FIELD: radio engineering, communication.
SUBSTANCE: invention relates to communication in a communication environment. Disclosed is a method of providing communication in a communication environment, which includes: receiving, by a communication environment processor from a communication environment sender, a preliminary permit to convert a synchronous data transfer into an asynchronous data transfer, wherein the preliminary permit includes obtaining a memory unit indication to monitor asynchronous data transfer; receiving, by the processor from the sender, a request to transmit data to a communication environment user; initiating, by the processor, data transmission to a recipient, performed using synchronous data transfer; establishing, by the processor, the need to convert synchronous data transfer into asynchronous data transfer; and, performed upon said establishment, automatic conversion, by the processor, of synchronous data transfer into asynchronous data transfer to complete data transmission to the recipient, wherein the automatic conversion is independent of any actions of the sender, except the preliminary permit.
EFFECT: high efficiency of transmitting data in a communication environment.
31 cl, 15 dwg

Description

Настоящее изобретение согласно одной из его особенностей относится в целом к поддержанию связи в коммуникационной среде, точнее, к облегчению обмена данными между изолированными областями памяти коммуникационной среды.According to one of its features, the present invention relates generally to maintaining communication in a communication medium, more specifically, to facilitating the exchange of data between isolated memory areas of a communication medium.

Для обмена данными между изолированными областями памяти коммуникационной среды обычно применяются сетевые технические средства и протоколы. В частности, данные могут передаваться от одной изолированной области памяти другой изолированной области памяти с использованием протокола управления передачей/протокола IP (TCP/IP) по каналу сети Ethernet. Существующие сетевые технические средства позволяют передавать данные синхронно или асинхронно. Выбор осуществляется исключительно отправителем.For the exchange of data between isolated memory areas of a communication medium, network hardware and protocols are typically used. In particular, data can be transferred from one isolated memory area to another isolated memory area using the Transmission Control Protocol / IP protocol (TCP / IP) over an Ethernet network channel. Existing network technology allows you to transfer data synchronously or asynchronously. The selection is made solely by the sender.

При синхронной пересылке данных работа отправителя приостанавливается до завершения пересылки данных. С другой стороны, при асинхронной пересылке данных отправитель может продолжать действовать.With synchronous data transfer, the sender's work is suspended until the data transfer is completed. On the other hand, when sending data asynchronously, the sender can continue to act.

Преодоление недостатков известного уровня техники и достижение преимуществ обеспечивается в способе обеспечения связи в коммуникационной среде, включающему: получение процессором коммуникационной среды от отправителя коммуникационной среды предварительного разрешения на преобразование синхронной пересылки данных в асинхронную пересылку данных, причем предварительное разрешение включает получение указания блока памяти для слежения за асинхронной пересылкой данных; получение процессором от отправителя запроса на передачу данных получателю коммуникационной среды; инициирование процессором передачи данных получателю, выполняемой с использованием синхронной пересылки данных; установление процессором необходимости преобразования синхронной пересылки данных в асинхронную пересылку данных; и выполняемое при указанном установлении автоматическое преобразование процессором синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных получателю, при этом автоматическое преобразование является независимым от любых действий отправителя, кроме предварительного разрешения.Overcoming the drawbacks of the prior art and achieving advantages is provided in a method for providing communication in a communication medium, including: obtaining, by the processor of the communication medium from the sender of the communication medium, prior permission to convert the synchronous data transfer to the asynchronous data transfer, the preliminary permission including receiving an indication of the memory unit for asynchronous data transfer; receipt by the processor from the sender of a request for data transmission to the recipient of a communication medium; initiation by the processor of data transmission to the recipient using synchronous data transfer; the establishment by the processor of the need to convert synchronous data transfer to asynchronous data transfer; and the automatic conversion performed by the processor for synchronously transferring data to asynchronous data transfer to complete the data transfer to the recipient, with the automatic conversion being independent of any actions of the sender, except for prior permission.

Объектами изобретения являются также компьютерная система, сконфигурированная для осуществления описанного выше способа, а также энергонезависимый машиночитаемый носитель данных, в котором хранятся команды, считываемые и выполняемые устройством обработки данных для осуществления описанного выше способа.Objects of the invention are also a computer system configured to implement the method described above, as well as a non-volatile computer-readable storage medium that stores instructions read and executed by a data processing device for implementing the method described above.

Технический результат, достигаемый при осуществлении изобретения, заключается в облегчении передачи данных в коммуникационной среде за счет указания блока памяти для слежения за асинхронной пересылкой данных, что, в частности, позволяет отправителю регулировать максимальное число не выполненных запросов асинхронной пересылки и автоматизирует асинхронную пересылку данных.The technical result achieved by the implementation of the invention is to facilitate the transfer of data in a communication environment by indicating a memory unit for tracking asynchronous data transfer, which, in particular, allows the sender to adjust the maximum number of outstanding asynchronous transfer requests and automates asynchronous data transfer.

Дополнительные признаки и преимущества изобретения реализованы посредством приемов, раскрытых в описанных вариантах осуществления. В описании подробно рассмотрены другие варианты осуществления и особенности, считающиеся частью заявленного изобретения.Additional features and advantages of the invention are realized by the methods disclosed in the described embodiments. The description describes in detail other embodiments and features that are considered part of the claimed invention.

Одна или несколько особенностей настоящего изобретения конкретно охарактеризованы и отдельно заявлены в формуле изобретения, следующей за описанием. Перечисленные выше и другие задачи, признаки и преимущества изобретения станут ясны из следующего далее подробного описания в сочетании с сопровождающими его чего чертежами, на которых:One or more features of the present invention are specifically characterized and separately claimed in the claims following the description. The above and other objectives, features and advantages of the invention will become apparent from the following further detailed description in combination with the accompanying drawings, in which:

на фиг. 1 проиллюстрирован один из примеров коммуникационной среды, в которой содержится и/или используется одна или несколько особенностей настоящего изобретения,in FIG. 1 illustrates one example of a communication medium in which one or more features of the present invention are contained and / or used,

на фиг. 2 - примеры областей памяти, связанных с проиллюстрированными на фиг. 1 логическими разделами согласно одной из особенностей настоящего изобретения,in FIG. 2 illustrates examples of memory areas associated with those illustrated in FIG. 1 logical partitions according to one of the features of the present invention,

на фиг. 3 - один из примеров исходящей синхронной пересылки данных, используемой согласно одной из особенностей настоящего изобретения,in FIG. 3 is one example of an outgoing synchronous data transfer used according to one aspect of the present invention,

на фиг. 4 - примеры структур управления, используемых для автоматического преобразования синхронной пересылки данных в асинхронную пересылку данных, согласно одной из особенностей настоящего изобретения,in FIG. 4 illustrates examples of control structures used to automatically convert a synchronous data transfer to an asynchronous data transfer, according to one aspect of the present invention,

на фиг. 5А - один из вариантов осуществления логики автоматического преобразования синхронной пересылки данных в асинхронную пересылку данных согласно одной из особенностей настоящего изобретения;in FIG. 5A is an embodiment of a logic for automatically converting synchronous data transfer to asynchronous data transfer according to one aspect of the present invention;

на фиг. 5Б - один из наглядных примеров успешного завершения асинхронной пересылки данных согласно одной из особенностей настоящего изобретения;in FIG. 5B is one illustrative example of the successful completion of asynchronous data transfer according to one of the features of the present invention;

на фиг. 6 - один из вариантов осуществления компьютерного программного продукта, в котором содержится одна или несколько особенностей настоящего изобретения,in FIG. 6 is one embodiment of a computer program product that contains one or more features of the present invention,

на фиг. 7 - один из вариантов осуществления главной компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,in FIG. 7 is one embodiment of a host computer system that contains and uses one or more features of the present invention,

на фиг. 8 - дополнительный пример компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,in FIG. 8 is an additional example of a computer system that contains and uses one or more features of the present invention,

на фиг. 9 - другой пример компьютерной системы, содержащей компьютерную сеть, в которой содержится и используется одна или несколько особенностей настоящего изобретения,in FIG. 9 is another example of a computer system comprising a computer network in which one or more features of the present invention are contained and used,

на фиг. 10 - один из вариантов осуществления различных элементов компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,in FIG. 10 is one embodiment of various elements of a computer system in which one or more features of the present invention are contained and used,

на фиг. 11А - один из вариантов осуществления блока выполнения проиллюстрированной на фиг. 10 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,in FIG. 11A is one embodiment of a block of execution illustrated in FIG. 10 of a computer system in which one or more features of the present invention are contained and used,

на фиг. 11Б - один из вариантов осуществления блока выполнения команд перехода проиллюстрированной на фиг. 10 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,in FIG. 11B is one embodiment of a transition instruction execution unit illustrated in FIG. 10 of a computer system in which one or more features of the present invention are contained and used,

на фиг. 11В - один из вариантов осуществления блока выполнения команд загрузки/сохранения проиллюстрированной на фиг. 10 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения, иin FIG. 11B is one embodiment of a block for executing load / save instructions illustrated in FIG. 10 a computer system that contains and uses one or more features of the present invention, and

на фиг. 12 - один из вариантов осуществления главной компьютерной системы эмуляции, в которой содержится и используется одна или несколько особенностей настоящего изобретения.in FIG. 12 is one embodiment of a host computer emulation system that contains and uses one or more features of the present invention.

Согласно одной из особенностей настоящего изобретения предложено средство автоматического преобразования синхронной пересылки данных в асинхронную пересылку данных. Например, синхронная пересылка данных автоматически преобразуется в асинхронную пересылку данных, если определено, что завершение пересылки данных задерживается, например, получатель данных не способен принять данные во время пересылки. Преобразование синхронной пересылки данных в асинхронную пересылку данных является автоматическим в том смысле, что оно осуществляется не по запросу отправителя (или получателя), а отправителю (или получателю) не известно о преобразовании в момент его инициации. Кроме того, в момент преобразования отправителю (или получателю) не требуется предпринимать какое-либо действие или вмешиваться в преобразование.According to one aspect of the present invention, there is provided a means for automatically converting synchronous data transfer to asynchronous data transfer. For example, synchronous data transfer is automatically converted to asynchronous data transfer if it is determined that the completion of data transfer is delayed, for example, the data recipient is not able to receive data during the transfer. Converting synchronous data transfer to asynchronous data transfer is automatic in the sense that it is not performed at the request of the sender (or recipient), and the sender (or recipient) is not aware of the conversion at the time of its initiation. In addition, at the time of conversion, the sender (or recipient) is not required to take any action or interfere with the conversion.

Один из вариантов осуществления коммуникационной среды, в которой содержится и/или используется одна или несколько особенностей настоящего изобретения, описан со ссылкой на фиг.1. В одном из примеров коммуникационная среда 100 содержит комплекс 102 центральных процессоров (CPC), который основан на системе z/Architecture®, предлагаемой International Business Machines Corporation (IBM®). Особенности системы z/Architecture® описаны в публикации № SA 22-7832-08 "IBM® z/Architecture Principles of Operation" (август 2010 г.), которая в порядке ссылки во всей полноте включена в настоящую заявку. Одной из систем, в которых может содержаться комплекс 102 центральных процессоров, является система zEnterprise 196 (z196), предлагаемая International Business Machines Corporation (Армонк, штат Нью-Йорк, США). IBM® и z/Architecture® являются зарегистрированными товарными знаками, а zEnterprise 196 и z196 являются товарными знаками International Business Machines Corporation (Армонк, штат Нью-Йорк, США). Названия других продуктов, используемые в описании, могут являться зарегистрированными товарными знаками, товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.One embodiment of a communication medium in which one or more features of the present invention is contained and / or used is described with reference to FIG. In one example, communications environment 100 comprises a central processing unit (CPC) complex 102, which is based on the z / Architecture ® system offered by International Business Machines Corporation (IBM ® ). The features of the z / Architecture ® system are described in publication No. SA 22-7832-08 "IBM ® z / Architecture Principles of Operation" (August 2010), which is hereby incorporated by reference in its entirety. One of the systems that can contain a complex of 102 central processors is the zEnterprise 196 (z196) system, offered by International Business Machines Corporation (Armonk, New York, USA). IBM ® and z / Architecture ® are registered trademarks, and zEnterprise 196 and z196 are trademarks of International Business Machines Corporation (Armonk, New York, USA). Other product names used in the description may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.

Комплекс 102 центральных процессоров содержит, например, один или несколько разделов 104, гипервизор 106, один или несколько центральных процессоров 108 и один или несколько компонентов подсистемы 110 ввода-вывода. В этом примере одним или несколькими разделами 104 являются логические разделы (также известные как LPAR), в которых содержится набор аппаратных ресурсов системы в форме отдельной виртуальной системы.The complex 102 of the Central processors contains, for example, one or more partitions 104, a hypervisor 106, one or more central processors 108 and one or more components of the I / O subsystem 110. In this example, one or more partitions 104 are logical partitions (also known as LPARs) that contain a set of system hardware resources in the form of a separate virtual system.

Каждый логический раздел 104 способен функционировать как отдельная система. Иными словами, каждый логический раздел может независимо возвращаться в исходное состояние, если желательно, в него может осуществляться начальная загрузка операционной системы 120, и он может оперировать различными программами. Операционная система или прикладная программа, выполняемая в логическом разделе, выглядит как имеющая доступ ко всей системе в целом, но, в действительности, для нее доступна только ее часть. За счет сочетания аппаратного обеспечения и лицензионного внутреннего кода (LIC) также называемого аппаратно-программным обеспечением, предотвращается взаимное влияние программы в одном логическом разделе и программы в другом логическом разделе. Это позволяет нескольким различным логическим разделам использовать один или множество физических процессоров в режиме квантования времени. В этом примере несколько логических разделов имеют резидентную операционную систему 120, которая может различаться в одном или нескольких логических разделах. В одном из вариантов осуществления операционной системой 120 является операционная система z/OS®, предлагаемая компанией International Business Machines Corporation (Армонк, штат Нью-Йорк, США).Each logical partition 104 is able to function as a separate system. In other words, each logical partition can independently return to its original state, if desired, it can bootstrap the operating system 120, and it can operate with various programs. An operating system or application running in a logical partition looks like it has access to the entire system as a whole, but, in reality, only part of it is available to it. By combining hardware and licensed internal code (LIC), also called hardware-software, the mutual influence of a program in one logical partition and a program in another logical partition is prevented. This allows several different logical partitions to use one or many physical processors in a time slicing mode. In this example, several logical partitions have a resident operating system 120, which may vary in one or more logical partitions. In one embodiment, operating system 120 is the operating system z / OS ®, offered by International Business Machines Corporation (Armonk, NY, USA).

В контексте настоящего изобретения аппаратно-программное обеспечение содержит, например, микрокод, милликод и/или макрокод процессора. Оно содержит, например, команды аппаратного уровня и/или структуры данных, используемые при реализации высокоуровневого машинного кода. В одном из вариантов осуществления оно содержит, например, собственный код, который обычно представляет собой микрокод, содержащий выверенное программное обеспечение или характерный для базового аппаратного обеспечения и управляющий доступом операционной системы к аппаратному обеспечению системы.In the context of the present invention, the firmware contains, for example, microcode, millicode and / or macrocode of the processor. It contains, for example, hardware-level instructions and / or data structures used in the implementation of high-level machine code. In one embodiment, it comprises, for example, native code, which is typically microcode containing verified software or specific to the underlying hardware and controlling the access of the operating system to the system hardware.

Логическими разделами 104 управляет гипервизор 106, который реализован посредством аппаратно-программного, обеспечения действующего в центральных процессорах 108. Одним из примеров гипервизора 106 является администратор ресурсов процессора/системы (Processor Resource/Systems Manager (PR/SM™)), предлагаемый компанией International Business Machines Corporation (Армонк, штат Нью-Йорк, США).The logical partitions 104 are controlled by a hypervisor 106, which is implemented through hardware and software running on central processors 108. One example of a hypervisor 106 is the Processor Resource / Systems Manager (PR / SM ™), offered by International Business Machines Corporation (Armonk, New York, USA).

Центральные процессоры 108 являются физическими ресурсами процессора, которые выделяются логическим разделам. Например, логический раздел 104 содержит один или несколько логических процессоров, при этом каждый из них отображает все или часть физических ресурсов 108 процессора, выделенных разделу. Логические процессоры конкретного раздела 104 могут быть закреплены за разделом, и в этом случае ресурсы базового процессора резервируются за этим разделом; или могут использоваться совместно с другим разделом, и в этом случае ресурсы базового процессора потенциально доступны для другого раздела.Central processors 108 are the physical resources of a processor that are allocated to logical partitions. For example, a logical partition 104 contains one or more logical processors, each of which displays all or part of the physical resources 108 of the processor allocated to the partition. The logical processors of a particular partition 104 may be assigned to a partition, in which case the core processor resources are reserved for that partition; or can be used in conjunction with another partition, in which case the core processor resources are potentially available for another partition.

Логические разделы 104 и гипервизор 106 в каждом случае могут содержать одну или несколько программ, постоянно хранящихся в соответствующих частях основной памяти 150, связанной с центральными процессорами. В одном из примеров каждому логическому разделу выделена часть основной памяти, именуемая областью памяти, как подробнее описано далее со ссылкой на фиг.2.The logical partitions 104 and the hypervisor 106 in each case may contain one or more programs permanently stored in the corresponding parts of the main memory 150 associated with the central processors. In one example, each logical partition is allocated a portion of main memory, referred to as a memory region, as described in more detail below with reference to FIG.

Как показано на фиг.2, в одном из вариантов осуществления основная память 150 содержит множество областей памяти, каждая из которых имеет диапазон адресов в основной памяти. Область памяти может быть выделена какому-либо объекту, такому как логический раздел, или другому объекту. В примере, проиллюстрированном на фиг.2, две области памяти выделены, соответственно, двум логическим разделам. Одна область памяти именуется областью 202 памяти отправителя, а другая область памяти именуется областью 204 памяти получателя, поскольку далее дополнительно описана связь между отправителем и получателем. В области 202 памяти отправителя содержится, например, одна или несколько входных очередей 210, одна или несколько выходных очередей 212 и один или несколько буферов 214. Аналогичным образом, в области 204 памяти получателя одна или несколько входных очередей 220, одна или несколько выходных очередей 222 и один или несколько буферов 224. Использование очередей и буферов дополнительно описано далее.As shown in FIG. 2, in one embodiment, the main memory 150 comprises a plurality of memory areas, each of which has a range of addresses in the main memory. A memory area can be allocated to any object, such as a logical partition, or to another object. In the example illustrated in FIG. 2, two memory areas are allocated, respectively, to two logical partitions. One memory region is referred to as the sender's memory region 202, and another memory region is referred to as the recipient's memory region 204, since the relationship between the sender and the receiver is further described. The sender’s memory region 202 contains, for example, one or more input queues 210, one or more output queues 212, and one or more buffers 214. Similarly, in the recipient’s memory region 204, one or more input queues 220, one or more output queues 222 and one or more buffers 224. The use of queues and buffers is further described below.

Отдельные области памяти являются изолированными друг от друга в том смысле, что данные не могут записываться непосредственно из одной области памяти в другую область памяти без контроля со стороны аппаратно-программного обеспечения. В одном из примеров для пересылки данных из одной области памяти в другую область памяти применяется сетевая пересылка с использованием, например, протокола TCP/IP по каналам сети Ethernet. В одном из конкретных примеров для осуществления пересылки применяется предлагаемая компанией International Business Machines Corporation технология под названием HiperSockets™.Separate memory areas are isolated from each other in the sense that data cannot be written directly from one memory area to another memory area without control by hardware and software. In one example, network transfer using, for example, TCP / IP over Ethernet channels, is used to transfer data from one memory area to another memory area. In one specific example, a technology called HiperSockets ™ is proposed by the International Business Machines Corporation for forwarding.

HiperSockets™ обеспечивает возможность установления высокоскоростной связи по протоколу TCP/IP в комплексе центральных процессоров. При этом исключается потребность в какой-либо физической кабельной сети или внешних сетевых соединениях между серверами, действующими в различных логических разделах. Вместо этого связь осуществляется посредством системной памяти процессора. HiperSockets™ реализована на основе протокола OSA-Express прямого ввода-вывода с организацией очередей (QDIO). Аппаратно-программное обеспечение эмулирует уровень управления каналом интерфейса OSA-Express QDIO.HiperSockets ™ provides the ability to establish high-speed TCP / IP communications in a complex of central processors. This eliminates the need for any physical cable network or external network connections between servers operating in different logical partitions. Instead, communication is via the processor system memory. HiperSockets ™ is based on the OSA-Express Direct Queued Queuing (QDIO) protocol. The firmware emulates the OSA-Express QDIO interface channel control layer.

Пересылка данных из одной области памяти в другую область памяти с использованием сетевых технических средств является, например, синхронным, и в этом случае после инициации пересылки данных работа отправителя приостанавливается до завершения пересылки. Один из примеров синхронной пересылки данных из одной области памяти в другую описан ссылкой на фиг.3.Forwarding data from one memory area to another memory area using network technology is, for example, synchronous, and in this case, after the initiation of data transfer, the sender's work is suspended until the transfer is completed. One example of the synchronous transfer of data from one memory area to another is described with reference to FIG. 3.

Как показано на фиг.3, отправитель 300, такой как стек протоколов TCP/IP или программа, действующая в области памяти отправителя, инициирует запрос на передачу данных получателю 310, такому как другой стек протоколов TCP/IP или программа, например в области памяти получателя. Поскольку в этом примере область памяти получателя изолирована от области памяти отправителя, для осуществления синхронной передачи данных от отправителя получателю используется протокол сетевой связи. Использование синхронной пересылки данных обеспечивает канал высокоскоростной прямой связи с малым временем ожидания между отправителем и получателем путем пересылки данных из одной области памяти в другую под управлением аппаратно-программного обеспечения. В одном из примеров пересылка данных из одной области памяти в другую осуществляется посредством HiperSockets™. Этот механизм пересылки является очень эффективным, поскольку получатель может принимать данные с той же или более высокой скоростью, чем скорость передачи данных отправителем.As shown in FIG. 3, a sender 300, such as a TCP / IP protocol stack or a program operating in the memory area of the sender, initiates a data transfer request to a recipient 310, such as another TCP / IP protocol stack or program, such as a receiver memory . Since in this example the recipient’s memory area is isolated from the sender’s memory area, the network communication protocol is used to synchronously transfer data from the sender to the receiver. The use of synchronous data transfer provides a high-speed direct communication channel with a low latency between the sender and receiver by transferring data from one memory area to another under the control of hardware and software. In one example, data is transferred from one memory area to another using HiperSockets ™. This forwarding mechanism is very efficient because the receiver can receive data at the same or higher speed than the sender's data rate.

Для пересылки данных отправитель извлекает данные, которые содержатся в выбранном буфере 320 данных, и помещает их в выходную очередь 330 отправителя (OUTQ). Например, в выходную очередь помещается указатель 332 выбранного буфера данных. Затем отправитель 300 передает процессору сигнал 340 осуществления пересылки данных получателю 310. В одном из примеров сигнал передается аппаратно-программному обеспечению 350 процессора, которое собирается осуществлять пересылку; тем не менее, в других примерах сигнал передается не аппаратно-программному обеспечению, а другому коду и/или аппаратному обеспечению процессора.To forward data, the sender retrieves the data that is contained in the selected data buffer 320 and places it in the sender's output queue 330 (OUTQ). For example, a pointer 332 of the selected data buffer is placed in the output queue. Then, the sender 300 transmits to the processor a signal 340 for sending data to the recipient 310. In one example, the signal is transmitted to the hardware and software of the processor 350, which is about to transfer; however, in other examples, the signal is transmitted not to the firmware, but to another code and / or hardware of the processor.

В ответ на прием сигнала с запросом пересылки данных от отправителя получателю аппаратно-программное обеспечение копирует данные из выходной очереди отправителя и помещает их во входную очередь 360 получателя (INQ). Например, данные копируются в пустой буфер 370, а указатель 372 этих данных помещается во входную очередь 360. После завершения пересылки данных аппаратно-программное обеспечение передает отправителю сигнал завершения пересылки. Пока отправитель не примет этот сигнал завершения, его работа приостанавливается, и он не может выполнять какие-либо другие операции.In response to receiving a signal requesting data to be sent from the sender to the recipient, the hardware and software copies the data from the sender's output queue and places it in the receiver's 360 input queue (INQ). For example, the data is copied to an empty buffer 370, and the pointer 372 of this data is placed in the input queue 360. After the data transfer is complete, the firmware transmits the transfer completion signal to the sender. Until the sender receives this completion signal, its operation is suspended and it cannot perform any other operations.

В качестве одного из конкретных примеров, чтобы передать сигнал процессору, отправитель передает команду адаптера сигналов (SIGA, от английского - Signal Adapter) с указанием функции записи (SIGA-w), которая сообщает процессору о том, что в одной или нескольких выходных очередях содержатся данные для передачи получателю. Функция записи задана в виде кода функции, содержащегося в первом общем регистре общего назначения, используемом командой, а во втором регистре общего назначения, используемом командой, указан адрес сетевого соединения (например, идентификатор подсистемы) функции записи. Кроме того, в еще одном, третьем регистре общего назначения, используемом командой, заданы выходные очереди.As one of the specific examples, in order to transmit a signal to the processor, the sender transmits a signal adapter command (SIGA, from English - Signal Adapter) indicating the recording function (SIGA-w), which tells the processor that one or more output queues contains data to be transmitted to the recipient. The recording function is defined as a function code contained in the first general general register used by the command, and the second general purpose register used by the command indicates the network connection address (for example, subsystem identifier) of the recording function. In addition, in another, third general purpose register used by the command, output queues are defined.

В этом конкретном примере очереди реализованы в виде очередей прямого доступа с организацией очередей (QDIO), при этом каждая очередь имеет множество связанных с ней буферов, а также различную управляющую информацию. В одном из вариантов осуществления очередь QDIO содержит структуры данных, описывающие очередь, а также блоки буферных запоминающих устройств, которые используются для пересылки данных. В качестве одного из примеров, структуры данных множества запоминающих устройств, называемые компонентами очереди, которые собирательно описывают характеристики очереди и обеспечивают средства управления для обмена данными, включают, например:In this particular example, the queues are implemented as direct access queues with queuing (QDIO), with each queue having many buffers associated with it, as well as various control information. In one embodiment, the QDIO queue comprises data structures describing the queue, as well as blocks of buffer storage devices that are used to transfer data. As one example, data structures of a plurality of storage devices, called queue components, which collectively describe the characteristics of a queue and provide control tools for exchanging data, include, for example:

блок информации очереди (QIB), в котором содержится информация о совокупности входных и выходных очередей QDIO. В QIB содержится адрес блока информации из списка запоминающих устройств (SLIB) для входных очередей и адрес SLIB для выходных очередей.a queue information block (QIB), which contains information about the totality of the input and output QDIO queues. The QIB contains the address of the storage unit information block list (SLIB) for input queues and the SLIB address for output queues.

Для каждой очереди существует один SLIB, и в каждом SLIB содержится информация об очереди и о каждом буфере очереди. Каждый SLIB имеет заголовок и один или несколько элементов, называемых элементами блока информации из списка запоминающих устройств (SLIBE), в которых содержится информация о каждом из буферов очереди. В одном из примеров каждый блок информации из списка запоминающих устройств содержит адрес следующего блока информации из списка запоминающих устройств, адрес списка запоминающих устройств (SL) и адрес блока состояния списка запоминающих устройств (SLSB).There is one SLIB for each queue, and each SLIB contains information about the queue and about each queue buffer. Each SLIB has a header and one or more elements, called elements of a block of information from the list of storage devices (SLIBE), which contain information about each of the queue buffers. In one example, each block of information from the list of storage devices contains the address of the next block of information from the list of storage devices, the address of the list of storage devices (SL), and the address of the status block of the list of storage devices (SLSB).

Для каждой очереди определен один список запоминающих устройств, который содержит, например, 128 записей, по одной на каждый из буферов очереди. Список запоминающих устройств содержит информацию о местоположениях буферов ввода-вывода в основной памяти. В каждой записи содержится абсолютный адрес списка адресов блоков запоминающих устройств (SBAL). Каждый список адресов блоков запоминающих устройств содержит список абсолютных адресов блоков запоминающих устройств, которые в совокупности образуют один из буферов данных, связанных с каждой очередью.For each queue, one list of storage devices is defined, which contains, for example, 128 entries, one for each of the queue buffers. The list of storage devices contains information about the locations of the I / O buffers in the main memory. Each record contains the absolute address of the list of addresses of blocks of storage devices (SBAL). Each list of addresses of blocks of storage devices contains a list of absolute addresses of blocks of storage devices, which together form one of the data buffers associated with each queue.

В состав каждого SBAL входит запись из списка блоков запоминающих устройств (SBALE). В каждом SBALE содержится абсолютный адрес блока запоминающего устройства. В совокупности блоки запоминающих устройств, адресуемые всеми записями отдельного SBAL, образуют один из множества возможных буферов QDIO очереди QDIO. В одном из примеров очередь QDIO может содержать 128 связанных с ней буферов QDIO.Each SBAL includes an entry from the list of memory blocks (SBALE). Each SBALE contains the absolute address of the storage unit. Collectively, the blocks of storage devices addressed by all records of a single SBAL form one of the many possible QDIO buffers of the QDIO queue. In one example, a QDIO queue may contain 128 associated QDIO buffers.

В SLSB содержатся индикаторы состояния, которые обеспечивают информацию о состоянии буферов, которые образуют очередь.The SLSB contains status indicators that provide information about the status of the buffers that make up the queue.

Дополнительные подробности, касающиеся SIGA, очередей QDIO и соответствующих структур управления, описаны в патенте US 6332171 B1 под названием "Self-Contained Queues With Associated Control Information For Receipt And Transfer Of Incoming And Outgoing Data Using A Queued Direct Input-Output Device" на имя Baskey и др., выданном 18 декабря 2001 г.; патенте US 6345241 B1 под названием "Method And Apparatus For Simulation Of Data In a Virtual Environment Using A Queued Direct Input-Output Device" на имя Brice и др., выданном 5 февраля 2002 г.; патенте US 6519645 B2 под названием "Method And Apparatus For Providing Configuration Information Using A Queued Direct Input-Output Device" на имя Markos и др., выданном 11 февраля 2003 г.; и патенте US 7941799 B2 под названием "Interpreting I/O Operation Requests From Pageable Guests Without Host Intervention" на имя Easton и др., выданном 10 мая 2011 г.Further details regarding SIGA, QDIO queues, and associated control structures are described in US Pat. No. 6,332,171 B1 entitled "Self-Contained Queues With Associated Control Information For Receipt And Transfer Of Incoming And Outgoing Data Using A Queued Direct Input-Output Device" in the name Baskey et al., Issued December 18, 2001; US patent 6345241 B1 entitled "Method And Apparatus For Simulation Of Data In a Virtual Environment Using A Queued Direct Input-Output Device" in the name of Brice et al., issued February 5, 2002; US 6,519,645 B2, entitled "Method And Apparatus For Providing Configuration Information Using A Queued Direct Input-Output Device" to Markos et al., issued February 11, 2003; and U.S. Pat. No. 7,941,799 B2 entitled "Interpreting I / O Operation Requests From Pageable Guests Without Host Intervention" to Easton et al., issued May 10, 2011.

Когда при описанной обработке получатель не способен использовать пустые буферы с такой же скоростью, с которой отправитель передает данные, на стороне отправителя увеличивается время ожидания и затраты ресурсов ЦП в силу синхронной природы протокола. Когда пустой буфер недоступен для получателя, у отправителя существует два варианта. Он может пойти на затраты ресурсов на постановку в очередь невыполненной операции и последующую повторную передачу данных тому же получателю или отбросить данные, чтобы протокол связи более высокого уровня, такой как TCP/IP, мог снова привести в действие операцию. Сложности постановки в очередь и повторной передачи данных заключаются в том, что для этого не только требуется восстановление дополнительных циклов ЦП, но потенциально могут блокироваться или задерживаться последующие передачи отправителем данных другим адресатам, которые могут быть способны принимать поступающие данные.When the receiver is not able to use empty buffers at the same speed as the sender transmits data during the described processing, on the sender side the waiting time and CPU resources are increased due to the synchronous nature of the protocol. When an empty buffer is not available to the recipient, the sender has two options. It can take the cost of resources to queue the failed operation and then retransmit the data to the same recipient, or discard the data so that a higher-level communication protocol such as TCP / IP can trigger the operation again. The difficulty with queuing and retransmission of data lies in the fact that this not only requires the restoration of additional CPU cycles, but the subsequent transfer of data by the sender to other destinations that may be able to receive incoming data can potentially be blocked or delayed.

В виртуальных средах, в которых множество серверов (например, отправители, получатели) могут совместно использовать ресурсы ЦП, с большей вероятностью возникают ситуации, в которых получатель может быть не способен поддерживать скорость, с которой различные отправителю передают ему данные. Это обычно происходит, когда гипервизор, такой как PR/SM управляет диспетчеризацией серверов в различных доступных совместно используемых процессорах. Задача решается, когда между отправителем и совместно используемым ресурсом ЦП имеются гипервизоры множества уровней. Это имеет место, например, когда отправитель действует в виртуальной машине под управлением z/VM®, которая также действует в логическом разделе. В данном случае два гипервизора должны осуществлять диспетчеризацию сервера таким образом, чтобы он своевременно восполнял пустые буферы.In virtual environments in which multiple servers (for example, senders, recipients) can share CPU resources, it is more likely that situations arise in which the recipient may not be able to maintain the speed at which different senders transmit data to him. This usually happens when a hypervisor such as PR / SM manages server scheduling in the various shared processors available. The problem is solved when there are hypervisors of many levels between the sender and the shared CPU resource. This is the case, for example, when the sender acts in a virtual machine running z / VM ® , which also acts in a logical partition. In this case, two hypervisors must dispatch the server in such a way that it promptly replenishes empty buffers.

Своевременная диспетчеризация получателя не создает затруднений при наличии достаточных доступных ресурсов ЦП. Синхронная пересылка данных прерывается только при ограниченности ресурсов ЦП в течение короткого или длительного времени. Так, согласно одной из особенностей настоящего изобретения отправитель способен использовать синхронную передачу данных с малым временем ожидания в среде без ограничения ресурсов ЦП с одновременным устранением сопутствующих трудностей и затрат, когда ресурсы ЦП становятся ограниченными. Это достигается путем преобразования протокола синхронного обмена в протокол асинхронного обмена, когда получатель не способен поддерживать скорость передачи данных отправителем. В одном из вариантов осуществления протокол синхронного обмена преобразуется в протокол асинхронного обмена автоматически без какого-либо уведомления отправителя (т.е. отправителю не требуется совершать какое-либо действие в момент преобразования). Тем самым отправитель освобождается от необходимости выполнять восстановление какого-либо типа или блокировать или замедлять передачу данных другим получателям, когда ресурсы ЦП становятся ограниченными для конкретного получателя. Кроме того, синхронная передача данных получателю с ранее ограниченными ресурсами может возобновляться автоматически.Timely scheduling of the recipient does not create difficulties if there are sufficient available CPU resources. Synchronous data transfer is interrupted only when the CPU resources are limited for a short or long time. So, according to one of the features of the present invention, the sender is able to use synchronous data transmission with low latency in the environment without limiting CPU resources while eliminating the associated difficulties and costs when CPU resources become limited. This is achieved by converting the synchronous exchange protocol into an asynchronous exchange protocol, when the receiver is not able to maintain the data rate of the sender. In one embodiment, the synchronous exchange protocol is automatically converted to the asynchronous exchange protocol without any notification to the sender (i.e., the sender does not need to perform any action at the time of conversion). Thus, the sender is freed from the need to perform some type of recovery or to block or slow down data transfer to other recipients when CPU resources become limited for a particular recipient. In addition, synchronous data transfer to a recipient with previously limited resources may resume automatically.

Согласно одной из особенностей настоящего изобретения предложено средство организации отправителем очереди данных в своей памяти, пока получатель не обеспечит пустые буферы, которые могут принять данные. С целью облегчения этого используется одна или несколько структур управления, описанных со ссылкой на фиг.4. Например, отправитель выделяет пустой блок 400 в своей каждой незавершенной асихронной пересылке. В одном из примеров число этих блоков в любой момент времени может составлять X, при этом X является зависящей от модели и конфигурируемой величиной. X отображает число одновременных запросов асинхронной пересылки, разрешенных отправителем. Этот блок памяти, именуемый блоком асинхронных операций QDIO (прямого ввода-вывода с организацией очередей) (QAOB), используется, чтобы следить за асинхронной пересылкой данных, пока аппаратно-программное обеспечение не завершит операцию. В этом примере в QAOB содержится только управляющая информация, а не сами данные. Отправитель использует этот блок при инициировании пересылки данных для запросов, которые он асинхронное выполнение которых он необязательно разрешит; в противном случае ему не требуется обеспечивать блок управления. Это позволяет отправителю регулировать максимальное число не выполненных запросов асинхронной пересылки. QAOB как таковой используется и инициализируется только аппаратно-программным обеспечением, когда оно определяет, что пересылка данных должна осуществляться асинхронно. От отправителя не требуется каких-либо действий для пересылки данных помимо обеспечения памяти для QAOB, если пересылка данных должна осуществляться асинхронно.According to one aspect of the present invention, there is provided a means of organizing a data queue in a memory by a sender until a receiver provides empty buffers that can receive data. In order to facilitate this, one or more of the control structures described with reference to FIG. 4 is used. For example, the sender allocates an empty block 400 in its each incomplete asynchronous transfer. In one example, the number of these blocks at any given time can be X, with X being a model dependent and configurable quantity. X displays the number of simultaneous asynchronous forwarding requests allowed by the sender. This memory block, called the QDIO (Direct I / O Queuing) (QAOB), is used to monitor asynchronous data transfers until the firmware completes the operation. In this example, the QAOB contains only control information, not the data itself. The sender uses this block when initiating the transfer of data for requests that he does not necessarily allow asynchronous execution; otherwise, it does not need to provide a control unit. This allows the sender to adjust the maximum number of failed asynchronous forwarding requests. The QAOB as such is used and initialized only by the firmware when it determines that the data transfer should be asynchronous. No action is required from the sender to transfer data other than providing memory for the QAOB if the transfer of data should be asynchronous.

В одном из конкретных примеров QAOB включен в команду SIGA, в которой содержится запрос. Отправитель передает команду записи SIGA с QAOB (SIGA-wq) с указанием выбранного кода функции в первом регистре общего назначения, в котором указана функция записи с QAOB. В четвертом регистре общего назначения, используемом командой, указан адрес QAOB. Этот регистр общего назначения имеет значение 0, когда QAOB не указан, или содержит абсолютный адрес QAOB (например, 256-байтового QAOB). В ответ на заданный код функция записи с QAOB аппаратно-программное обеспечение определяет, указан ли в четвертом регистре общего назначения QAOB, который может использоваться при асинхронной пересылке данных.In one specific example, QAOB is included in the SIGA command that contains the request. The sender transmits a SIGA write command with QAOB (SIGA-wq) indicating the selected function code in the first general register in which the write function with QAOB is indicated. The fourth general-purpose register used by the command indicates the QAOB address. This general-purpose register is set to 0 when no QAOB is specified, or contains an absolute QAOB address (for example, a 256-byte QAOB). In response to the specified code, the QAOB recording function determines whether the QAOB is specified in the fourth general purpose register, which can be used for asynchronous data transfer.

Когда аппаратно-программное обеспечение изменяет протокол пересылки данных на асинхронный, оно использует QAOB для слежения за данными, постоянно хранящимися в памяти отправителя, связанной с пересылкой исходящих данных. В примере, в котором для передачи используется HiperSockets™, QAOB следит за адресами и средствами управления, указанными отправителем в списке адресов блоков запоминающих устройств (SBAL), связанном с пересылкой данных. Примеры полей, извлекаемых из SBAL и помещаемых в QAOB, включают, например:When the firmware changes the data transfer protocol to asynchronous, it uses the QAOB to monitor data permanently stored in the sender's memory associated with the transfer of outgoing data. In an example in which HiperSockets ™ are used for transmission, the QAOB monitors the addresses and controls indicated by the sender in the SBAL list associated with the data transfer. Examples of fields retrieved from SBAL and placed in a QAOB include, for example:

все значащие SBALE из SBAL (например, первый SBALE для SBALE с установленным разрядом последней записи). Они содержат абсолютный адрес буфера данных и счет байтов;all significant SBALEs from SBAL (for example, the first SBALE for SBALE with the last bit set). They contain the absolute address of the data buffer and the byte count;

номер выходной очереди SBAL,SBAL output queue number,

номер буфера (например, 1-27) SBAL, инициирующего запрос,buffer number (e.g. 1-27) of the SBAL initiating the request,

число значащих записей SBALE иthe number of significant SBALE entries and

ключ хранения, используемый для доступа к блокам запоминающего устройства, указанным каждым значащим SBALE.a storage key used to access the storage units indicated by each significant SBALE.

Помимо QAOB используется другая управляющая структура, именуемая очередью 410 завершения (CQ). Иными словами, в одном из примеров помимо обеспечения QAOB отправитель также выделяет в своей памяти очередь нового типа, а именно, очередь завершения при формировании очереди передаваемых данных. В случае HiperSockets™ ей является входная очередь QDIO с SBAL, но без буферов, связанных с SBALE. Эта новая входная очередь используется не для пересылки данных, а используется аппаратно-программным обеспечением для сообщения о событиях завершения, чтобы уведомить отправителя о завершении асинхронной пересылки данных. Когда поступление в очередь помечается как "входящее", информация о событии завершения находится в самих SBALE, которые включены в очередь завершения. Аппаратно-программное обеспечение сообщает адрес QAOB, связанного с завершенной асинхронной пересылкой данных в CQ, и при необходимости генерирует прерывание, чтобы уведомить отправителя о завершенной пересылке данных. На этом этапе отправитель может повторно использовать в других целях память, связанную с завершенной операцией. (В одном из вариантов осуществления для сообщения об одном событии завершения используется SBALE. Поскольку SBAL содержит, например, 16 SBALE, аппаратно-программное обеспечение может сообщать о вплоть до 16 событиях завершения (QAOB) в одном SBAL.)In addition to QAOB, another control structure is used, referred to as completion queue 410 (CQ). In other words, in one example, in addition to providing QAOB, the sender also selects a new type of queue in its memory, namely, the completion queue when forming the queue of transmitted data. In the case of HiperSockets ™, it is the QDIO input queue with SBAL, but without the buffers associated with SBALE. This new input queue is not used to send data, but is used by the hardware and software to report completion events to notify the sender of the completion of asynchronous data transfer. When a queue entry is marked as "incoming", the completion event information is in the SBALEs themselves, which are included in the completion queue. The firmware reports the QAOB address associated with the completed asynchronous data transfer to CQ, and generates an interrupt if necessary to notify the sender of the completed data transfer. At this point, the sender can reuse for other purposes the memory associated with the completed operation. (In one embodiment, SBALE is used to report one completion event. Since SBAL contains, for example, 16 SBALEs, the firmware can report up to 16 completion events (QAOBs) in one SBAL.)

Кроме того, в одном из вариантов осуществления аппаратно-программное обеспечение формирует для предполагаемого получателя другую очередь TPQ 420, которая используется, чтобы запоминать, что имеется невыполненный запрос пересылки данных.In addition, in one embodiment, the firmware generates another TPQ 420 queue for the intended recipient, which is used to remember that there is an outstanding data transfer request.

Дополнительные подробности преобразования синхронной пересылки данных в асинхронную пересылку данных описаны со ссылкой на фиг.5А-5Б. На фиг.5А проиллюстрирован один из вариантов осуществления логики, используемой аппаратно-программным обеспечением для выполнения преобразования, а на фиг.5Б наглядно проиллюстрирован один из примеров преобразования. Обе фигуры рассмотрены далее в описании.Further details of converting synchronous data transfer to asynchronous data transfer are described with reference to FIGS. 5A-5B. FIG. 5A illustrates one embodiment of the logic used by the firmware to perform the conversion, and FIG. 5B illustrates one example of the conversion. Both figures are discussed further in the description.

Как показано на фиг.5А-5Б, сначала на шаге 500 аппаратно-программное обеспечение 350 принимает указание QAOB (например, адрес блока запоминающего устройства, который может использоваться для асинхронной пересылки данных). Соответственно, ему известно, что при необходимости (или при желании) оно может асинхронно выполнить запрошенную пересылку данных. В одном из вариантов осуществления аппаратно-программное обеспечение может принимать множество QAOB, указывающих, что оно может выполнить вплоть до указанного числа асинхронных пересылок данных. Предоставление QAOB отправителем является предварительным разрешением аппаратно-программному обеспечению на выполнение асинхронной пересылки данных, если она выбрана аппаратно-программным обеспечением.As shown in FIGS. 5A-5B, first in step 500, the firmware 350 receives the QAOB indication (for example, the address of a storage unit that can be used to transfer data asynchronously). Accordingly, he knows that if necessary (or if desired), it can asynchronously perform the requested data transfer. In one embodiment, the firmware may receive multiple QAOBs indicating that it can execute up to a specified number of asynchronous data transfers. Providing the QAOB by the sender is a preliminary permission for the hardware and software to perform asynchronous data transfer, if selected by the hardware and software.

В одном из конкретных примеров QAOB включен в состав запроса пересылки данных, который аппаратно-программное обеспечение принимает на шаге 502 от отправителя 300. В ответ на прием запроса пересылки данных на шаге 504 аппаратно-программное обеспечение пытается передать данные получателю. Если на шаге 506 запроса установлено, что получатель способен принять данные (например, у получателя имеется пустой буфер), данные синхронно пересылаются на шаге 508, и пересылка данных завершается. После этого, отправитель может выполнить другую пересылку данных, а, если отправителем разрешена асинхронная обработка, он может включить QAOB в новый запрос.In one specific example, the QAOB is included in the data transfer request, which the firmware receives at step 502 from the sender 300. In response to receiving the data transfer request at step 504, the firmware tries to transfer data to the recipient. If it is determined in step 506 of the request that the recipient is able to receive data (for example, the recipient has an empty buffer), the data is synchronously transferred in step 508, and the data transfer is completed. After that, the sender can perform another data transfer, and if the sender allows asynchronous processing, it can include QAOB in a new request.

Тем не менее, если получатель не способен в данный момент принять данные (например, как определено состоянием буферов, у получателя отсутствует пустой буфер, и, соответственно, прием данных получателем задерживается), запрос пересылки данных автоматически преобразуется аппаратно-программным обеспечением из синхронного в асинхронный при условии, что в запросе содержится QAOB. Запрос сохраняется в QAOB на шаге 510, и QAOB помещается в очередь TPQ 420 планируемого пункта назначения, например, путем помещения указателя QAOB в TPQ на шаге 512. Теперь в QAOB входит содержимое SBAL, и, соответственно, SBAL может использоваться для другой обработки.Nevertheless, if the receiver is not able to receive data at the moment (for example, as determined by the state of the buffers, the receiver does not have an empty buffer, and, accordingly, the receiver does not receive data), the data transfer request is automatically converted by the firmware from synchronous to asynchronous provided that the request contains a QAOB. The request is stored in the QAOB at step 510, and the QAOB is placed in the TPQ 420 queue of the planned destination, for example, by placing the QAOB pointer in the TPQ in step 512. Now the contents of SBAL are included in the QAOB, and, accordingly, SBAL can be used for other processing.

В одном из вариантов осуществления, если QAOB не указан, запрос не выполняется или ожидает возможности синхронной передачи.In one embodiment, if no QAOB is specified, the request is not executed or is waiting for synchronous transmission.

В одном из примеров в ответ на постановку QAOB в очередь управление передается серверу-отправителю с указанием того, что для этой асинхронной пересылки данных используется заданный QAOB. Затем сервер-отправитель может немедленно настроиться на свою следующую пересылку данных и необязательно выделить другой QAOB, если он необходим для следующей пересылки данных.In one example, in response to queuing a QAOB, control is transferred to the sending server indicating that the specified QAOB is used for this asynchronous data transfer. Then, the sending server can immediately tune in to its next data transfer, and it is not necessary to allocate another QAOB if it is necessary for the next data transfer.

Затем на шаге 514 запроса определяется, способен ли получатель принять данные. Например, определяется, приняло ли аппаратно-программное обеспечение от получателя сигнал, указывающий, что получатель в настоящее время способен принять данные (например, имеются доступные пустые буферы), или установило ли аппаратно-программное обеспечение, что имеется доступный буфер путем проверки состояния буферов. В одном из конкретных примеров получатель использует команду SIGA для передачи аппаратно-программному обеспечению сигнала, указывающего, что получатель поместил пустые буферы в свои входные очереди. В первом регистре общего назначения указан код функции чтения SIGA (SIGA-r). Функция чтения SIGA побуждает аппаратно-программное обеспечение к пересылке любых ожидающих пакетов из очереди TPQ получателя во входные буферы целевого объекта.Then, in step 514 of the request, it is determined whether the recipient is able to receive data. For example, it is determined whether the firmware received a signal from the receiver indicating that the receiver is currently able to receive data (for example, there are empty buffers available), or whether the firmware has established that a buffer is available by checking the status of the buffers. In one specific example, the receiver uses the SIGA command to send a signal to the firmware indicating that the receiver has placed empty buffers in its input queues. The first general-purpose register contains the SIGA Read Function Code (SIGA-r). The SIGA read function encourages the firmware to forward any pending packets from the receiver's TPQ queue to the input buffers of the target.

Если получатель не способен принять данные, аппаратно-программное обеспечение переходит к ожиданию. В противном случае, если получатель способен принять данные (например, имеется по меньшей мере один пустой буфер), аппаратно-программное обеспечение на шаге 518 запроса определяет, имеет ли оно указатель QAOB в очереди TPQ получателя. Если это не так, обработка завершается. В противном случае аппаратно-программное обеспечение использует QAOB для пересылки данных. В частности, оно пересылает получателю данные, указанные QAOB, помещая данные в пустой буфер и помещая указатель теперь заполненного буфера во входную очередь получателя.If the recipient is not able to receive the data, the firmware goes to wait. Otherwise, if the receiver is capable of receiving data (for example, there is at least one empty buffer), the firmware determines in step 518 whether it has a QAOB pointer in the receiver's TPQ queue. If this is not the case, processing ends. Otherwise, the firmware uses QAOB to send data. In particular, it sends the data specified by QAOB to the recipient, placing the data in an empty buffer and placing the pointer of the now full buffer in the input queue of the recipient.

После этого аппаратно-программное обеспечение на шаге 520 указывает отправителю, что пересылка данных завершена. В одном из примеров в этом указании сообщается адрес QAOB, связанного с завершенной асинхронной пересылкой данных, в очереди 410 завершения (фиг.5Б) отправителя, и при необходимости генерируется прерывание 550, чтобы сообщить отправителю о завершенной пересылке данных. На этом этапе отправитель может повторно использовать в других целях память, связанную с завершенной операцией. QAOB, указанный в CQ, содержит информацию, касающуюся асинхронной обработки, включая, например, информацию о состоянии, коды завершения, коды ошибок и т.д.After that, the firmware in step 520 indicates to the sender that the data transfer has been completed. In one example, this indication reports the QAOB address associated with the completed asynchronous data transfer in the completion queue 410 (FIG. 5B) of the sender, and an interrupt 550 is generated if necessary to inform the sender of the completed data transfer. At this point, the sender can reuse for other purposes the memory associated with the completed operation. The QAOB indicated in the CQ contains information regarding asynchronous processing, including, for example, status information, termination codes, error codes, etc.

В одном из конкретных примеров, когда в поступлении в очередь завершения указан адрес QAOB (т.е. адрес QAOB включен в SBALE в одно из поступлений в очередь завершения), аппаратно-программное обеспечение возвращает программе в QAOB следующую информацию, например:In one specific example, when the QAOB address is specified in the receipt in the completion queue (i.e., the QAOB address is included in SBALE in one of the entries in the completion queue), the firmware returns the following information to the QAOB program, for example:

код причин, отражающий результаты асинхронной операции ввода-вывода,a reason code that reflects the results of an asynchronous I / O operation,

состояние буферов: "состояние очереди - буфера N (SQBN)" для асинхронной пересылки данных. Оно имеет такое же значение, которое было бы помещено в SLSB для синхронной пересылки данных. В SQBN содержится значение, указывающее текущее состояние QAOB. Значение переменной состояния содержит, например, две части: в первой части указано, принадлежит ли буфер аппаратно-программному обеспечению, а во второй части, указано текущее состояние процесса QAOB.Buffer status: "Queue - Buffer Status N (SQBN)" for asynchronous data transfer. It has the same value that would be placed in the SLSB for synchronous data transfer. SQBN contains a value indicating the current state of the QAOB. The value of the state variable contains, for example, two parts: the first part indicates whether the buffer belongs to the hardware and software, and the second part indicates the current state of the QAOB process.

Хотя конкретный запрос выполняется асинхронно, другие запросы отправителя, адресованные другим получателям, могут выполняться синхронно, если только, например, прием данных конкретным получателем не задерживается. Кроме того, другие запросы, адресованные получателю отправителем, автоматически преобразуются в синхронные, если только снова не установлено, что прием данных получателем задерживается. Например, аппаратно-программное обеспечение пытается передать данные получателю, как описано выше, и, если получатель способен принять данные, они передаются синхронно. В одном из вариантов осуществления даже при взаимном преобразовании синхронной и асинхронной передачи, обработка данных осуществляется в порядке поступления как при передаче. Аппаратно-программное обеспечение переносит все ожидающие обслуживания QAOB в очередь TPQ 420 получателя до приема каких-либо будущих синхронных запросов от этого или любого другого отправителя. При попытке другой синхронной пересылки данных получателю, у которого QAOB уже помещены в его TPQ 420, она будет автоматически преобразована в асинхронный запрос аппаратно-программным обеспечением (если это разрешено отправителем) или окажется неудачной, и будет получен ответ "отсутствуют доступные буферы". Сохранение порядка позволяет избегать дорогостоящей обработки с целью переупорядочения, повышать эффективность стека протоколов TCP/IP получателя и общего использования ЦП.Although a particular request is executed asynchronously, other sender requests addressed to other recipients can be executed synchronously, unless, for example, the reception of data by a specific recipient is delayed. In addition, other requests addressed to the receiver by the sender are automatically converted to synchronous, unless it is again established that the reception of data by the receiver is delayed. For example, the firmware attempts to transfer data to the recipient as described above, and if the recipient is able to receive data, they are transmitted synchronously. In one embodiment, even when the synchronous and asynchronous transmission are mutually converted, the data is processed in the order of receipt as in the transmission. The firmware transfers all pending QAOB services to the recipient's TPQ 420 queue before receiving any future synchronous requests from this or any other sender. If you try another synchronous transfer of data to a recipient whose QAOB has already been placed in its TPQ 420, it will be automatically converted to an asynchronous request by the hardware-software (if allowed by the sender) or it will fail, and the answer will be "no available buffers". Preserving order avoids costly processing for reordering, improves the efficiency of the receiver's TCP / IP protocol stack, and overall CPU utilization.

Выше было подробное описано средство автоматического преобразования синхронной пересылки данных в асинхронную пересылку данных в ответ на установление процессором (например, аппаратно-программным обеспечением) того, что такое преобразование должно произойти. Например, преобразование осуществляется, если задерживается прием данных получателем (например, из-за отсутствия доступного буфера, медленного реагирования и т.д.). Кроме того, средство автоматически позволяет синхронно осуществлять другие пересылки данных тому же получателю.The means for automatically converting synchronous data transfer to asynchronous data transfer in response to a processor (for example, hardware and software) that such a conversion should occur have been described in detail above. For example, the conversion is carried out if the data reception by the receiver is delayed (for example, due to the lack of an available buffer, slow response, etc.). In addition, the tool automatically allows you to synchronously perform other data transfers to the same recipient.

Одна или несколько особенностей этого средства позволяет настраиваться на транзитную или более долговременную передачу данных без дорогостоящих повторных передач с поддержанием связи с целевым адресатом и минимальным или отсутствующим влиянием на других действующих адресатов в сети. Согласно одной из особенностей предложено средство переключения между синхронной и асинхронной пересылкой данных без уведомления программы-отправителя. В одном из конкретных примеров с использованием очереди завершения (CQ) на основе HiperSockets драйвер устройства не приостанавливает операцию ввода-вывода (SIGA не блокирует процесс). При использовании CQ процесс записи не прерывается, и отправитель может продолжать передавать дополнительные команды записи (SIGA) тому же адресату или другим адресатам, при этом некоторые из них могут выполняться синхронно, а другие - асинхронно. Это отсутствие блокирования делает CQ асинхронной.One or more of the features of this tool allows you to configure for transit or longer-term data transmission without costly retransmissions while maintaining communication with the target destination and with minimal or no effect on other existing destinations in the network. According to one of the features, a means of switching between synchronous and asynchronous data transfer without notifying the sending program is proposed. In one specific example using the HiperSockets-based completion queue (CQ), the device driver does not suspend the I / O operation (SIGA does not block the process). When using CQ, the recording process is not interrupted, and the sender can continue to transmit additional write commands (SIGA) to the same destination or other destinations, while some of them can be executed synchronously and others asynchronously. This lack of blocking makes CQ asynchronous.

Согласно одной из особенностей настоящего изобретения данные копируются только один раз от отправителя получателю (без внутреннего буфера) независимо от того, является ли пересылка синхронной или асинхронной.According to one aspect of the present invention, data is only copied once from the sender to the recipient (without an internal buffer), regardless of whether the transfer is synchronous or asynchronous.

Как учтут специалисты в данной области техники, одна или несколько особенностей настоящего изобретения могут быть воплощены в виде системы, способа или компьютерного программного продукта. Соответственно, одна или несколько особенностей настоящего изобретения могут принимать форму целиком аппаратного варианта осуществления, целиком программного варианта осуществления (содержащего аппаратно-программное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, сочетающего программные и аппаратные особенности, которые все могут в целом именоваться в описании "схемой", "модулем" или "системой". Кроме того, одна или несколько особенностей настоящего изобретения могут принимать форму компьютерного программного продукта, воплощенного в одной или нескольких машиночитаемых средах, в которых записан машиночитаемый программный код.As those skilled in the art will appreciate, one or more of the features of the present invention may be embodied as a system, method, or computer program product. Accordingly, one or more features of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (comprising hardware and software, resident software, microcode, etc.) or an embodiment combining software and hardware features that are all may generally be referred to in the description as a “circuit”, “module” or “system”. In addition, one or more features of the present invention may take the form of a computer program product embodied in one or more computer-readable environments in which computer-readable program code is recorded.

Может использоваться любое сочетание одной или нескольких постоянных машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда. Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, устройство или прибор или любое применимое сочетание перечисленного. Более конкретные примеры (неисчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой может содержаться или храниться программа для использования системой выполнения команд, устройством или прибором или применительно к ним.Any combination of one or more permanent computer readable media may be used. The computer-readable medium may be a computer-readable storage medium. A computer-readable storage medium may be, for example, without limitation, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, device or device, or any applicable combination of the above. More specific examples (non-exhaustive list) of a machine-readable storage medium include: an electrical connection containing one or more wires, a portable computer disk, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable read-only memory device on compact disc (CD-ROM), optical storage device, magnetic storage device Do any applicable combination of these. In the context of this document, a computer-readable storage medium may be any material medium in which a program may be contained or stored for use by, or with reference to, a command execution system, device or device.

Как показано на фиг.6, в одном из примеров компьютерный программный продукт 600 содержит, например, одну или несколько постоянных машиночитаемых запоминающих сред 602 для хранения в них машиночитаемого программного кода или логики 604 для обеспечения и реализации одной или нескольких особенностей настоящего изобретения.As shown in FIG. 6, in one example, a computer program product 600 includes, for example, one or more permanent computer-readable storage media 602 for storing computer-readable program code or logic 604 therein to provide and implement one or more aspects of the present invention.

Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную среду, оптоволоконный кабель, ВЧ-среду и т.д. или любое применимое сочетание перечисленного.The program code embodied in a machine-readable medium may be transmitted using an appropriate medium, including, without limitation, a wireless, wired medium, fiber optic cable, RF environment, etc. or any applicable combination of the above.

Компьютерный программный код для выполнения операций, обеспечивающих особенности настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "C" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).Computer program code for performing operations providing features of the present invention can be written in one or more programming languages in any combination, including an object-oriented programming language such as Java, Smalltalk, C ++, etc., and traditional procedural programming languages such as "C" and assembly languages or similar programming languages. The program code may be entirely executed on a user computer, partially on a user computer, as a stand-alone software package, partially on a user computer and partially on a remote computer or entirely on a remote computer or server. In the case of the latter scenario, the remote computer can be connected to the user computer via any type of network, including a local area network (LAN) or wide area network (WAN), or it can be connected to an external computer (for example, over the Internet using a service provider The Internet).

Особенности настоящего изобретения описаны со ссылкой на структурные схемы и/или блок-схемы способов, оборудования (систем) и компьютерных программных продуктов согласно вариантам осуществления изобретения. Подразумевается, что каждый блок на структурных схемах и/или блок-схемах и сочетания блоков на структурных схемах и/или блок-схемах могут быть реализованы посредством команд управления компьютерной программой. Эти команды управления компьютерной программой могут передаваться процессору универсального компьютера, специализированного компьютера или другой программируемого устройства для обработки данных с целью формирования механизма, в котором команды, выполняемые посредством процессора компьютера или другого программируемого оборудования обработки данных, создают средство реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.Features of the present invention are described with reference to block diagrams and / or block diagrams of methods, equipment (systems), and computer program products according to embodiments of the invention. It is understood that each block in the structural diagrams and / or block diagrams and combinations of blocks in the structural diagrams and / or block diagrams can be implemented by computer program control commands. These computer program control commands may be transmitted to a universal computer processor, specialized computer, or other programmable data processing device in order to form a mechanism in which instructions executed by a computer processor or other programmable data processing equipment provide a means for implementing functions / actions indicated by a block or blocks in structural diagrams and / or block diagrams.

Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая способна предписывать компьютеру, другому программируемому оборудованию обработки данных или другим устройствам действовать конкретным способом, в результате чего команды, хранящиеся на машиночитаемом носителе, формируют продукт, содержащий команды, в которых реализуется функция/действие, обозначенное блоком или блоками на структурных схемах и/или блок-схемах.These computer program control commands can also be stored in a machine-readable environment, which is capable of instructing a computer, other programmable data processing equipment or other devices to act in a specific way, as a result of which commands stored on a computer-readable medium form a product containing commands in which the / an action indicated by a block or blocks in structural diagrams and / or block diagrams.

Команды управления компьютерной программой также могут загружаться в компьютер, другое программируемое оборудование обработки данных или другие устройства, чтобы инициировать выполнение последовательности оперативных шагов компьютером, другим программируемым оборудованием или другими устройствами с целью формирования реализованного в компьютере процесса, при этом команды, выполняемые компьютером или другим программируемым оборудованием, обеспечивают процессы реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.Computer program control commands can also be downloaded to a computer, other programmable data processing equipment, or other devices to initiate the execution of a sequence of operational steps by a computer, other programmable equipment, or other devices in order to form a process implemented in the computer, while the commands executed by the computer or other programmable equipment, provide processes for the implementation of functions / actions indicated by a block or blocks on a string tural Schemes and / or block diagrams.

Приведенные на чертежах структурные схемы и блок-схемы иллюстрируют архитектуру, функциональные возможности и действие возможных вариантов реализации систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления одной или нескольких особенностей настоящего изобретения. В связи с этим каждым блоком на структурных схемах или блок-схемах может быть представлен определенный модуль, сегмент или часть кода, которая содержит одну или несколько выполняемых команд для реализации заданной логической функции(-й). Следует также отметить, что в некоторых альтернативных вариантах реализации указанные в блоке функции могут выполняться не в том порядке, в котором они представлены на чертежах. Например, функции, указанные двумя последовательно показанными блоками, в действительности, могут выполняться преимущественно одновременно, или функции иногда могут выполняться в обратном порядке в зависимости от соответствующих функциональных возможностей. Следует также отметить, что каждый блок на блок-схемах и/или структурных схемах и сочетания блоков на блок-схемах и/или структурных схемах могут быть реализованы посредством специализированных аппаратных систем, выполняющих заданные функции или действия, или посредством сочетаний специализированных аппаратных систем и компьютерных команд.The structural diagrams and block diagrams shown in the drawings illustrate the architecture, functionality, and operation of possible embodiments of systems, methods, and computer software products according to various embodiments of one or more aspects of the present invention. In this regard, each block on structural diagrams or block diagrams can be represented by a certain module, segment or part of the code, which contains one or more executable commands to implement a given logical function (s). It should also be noted that in some alternative implementations, the functions indicated in the block may not be performed in the order in which they are presented in the drawings. For example, the functions indicated by two sequentially shown blocks, in fact, can be performed mainly simultaneously, or the functions can sometimes be performed in the reverse order, depending on the corresponding functionality. It should also be noted that each block in the block diagrams and / or structural diagrams and combinations of blocks in the block diagrams and / or structural diagrams can be implemented using specialized hardware systems that perform specified functions or actions, or through combinations of specialized hardware systems and computer teams.

Помимо вышесказанного, одна или несколько особенностей настоящего изобретения может обеспечиваться, предлагаться, применяться, координироваться, обслуживаться и т.д. поставщиком услуг, который предлагает управление пользовательскими средами. Например, поставщик услуг способен создавать, вести, поддерживать и т.д. для одного или нескольких пользователей машинный код и/или вычислительную инфраструктуру, в которой выполняется одна или несколько особенностей настоящего изобретения. В ответ поставщик услуг может получать оплату от пользователя на основании соглашения о подписке и/или абонентской плате в качестве примеров. Дополнительно или в качестве альтернативы, поставщик услуг может получать плату за рекламное содержание, продаваемое одному или нескольким третьим лицам.In addition to the foregoing, one or more features of the present invention may be provided, proposed, applied, coordinated, maintained, etc. A service provider that offers user management. For example, a service provider is able to create, lead, maintain, etc. for one or more users, machine code and / or computing infrastructure in which one or more of the features of the present invention is executed. In response, the service provider may receive payment from the user based on a subscription agreement and / or monthly fee as examples. Additionally or alternatively, a service provider may receive payment for advertising content sold to one or more third parties.

Согласно одной из особенностей настоящего изобретения для выполнения одной или нескольких особенностей настоящего изобретения может быть развернуто приложение. В качестве одного из примеров, развертывание приложения включает использование вычислительной инфраструктуры, способной выполнять одну или несколько особенностей настоящего изобретения.According to one aspect of the present invention, an application may be deployed to perform one or more aspects of the present invention. As one example, application deployment includes the use of a computing infrastructure capable of performing one or more of the features of the present invention.

В качестве одной из дополнительных особенностей настоящего изобретения развертывание вычислительной инфраструктуры может включать интегрирование машиночитаемого кода в вычислительную систему, при этом код в сочетании с вычислительной системой способен выполнять одну или несколько особенностей особенности настоящего изобретения.As one of the additional features of the present invention, the deployment of a computing infrastructure may include integrating computer-readable code into a computing system, the code in combination with a computing system capable of performing one or more features of the features of the present invention.

В качестве еще одной дополнительной особенности настоящего изобретения может быть предложен способ интегрирования вычислительной инфраструктуры, включающий интегрирование машиночитаемого кода в компьютерную систему. Компьютерная система содержит машиночитаемую среду, содержащую одну или несколько особенностей настоящего изобретения. Код в сочетании с компьютерной системой способен выполнять одну или несколько особенностей настоящего изобретения.As another additional feature of the present invention, a method for integrating a computing infrastructure, comprising integrating computer-readable code into a computer system, can be proposed. A computer system comprises a computer-readable medium containing one or more features of the present invention. The code in combination with a computer system is capable of performing one or more of the features of the present invention.

Хотя выше описаны различные варианты осуществления, они являются лишь примерами. Например, одна или несколько особенностей настоящего изобретения могут содержаться и использоваться в вычислительных средах других архитектур. В качестве примера, одна или несколько особенностей настоящего изобретения могут содержаться, использоваться и/или выгодно применяться в серверах помимо серверов zEnterprise. Кроме того, при преобразовании синхронной передачи в асинхронную передачу могут учитываться другие критерии помимо того, доступен ли буфер. Помимо этого, одна или несколько особенностей настоящего изобретения могут использоваться для любых пересылок данных из одной изолированной области памяти в другую. Также возможно множество других разновидностей.Although various embodiments have been described above, they are merely examples. For example, one or more features of the present invention may be contained and used in computing environments of other architectures. As an example, one or more features of the present invention may be contained, used, and / or advantageously applied to servers other than zEnterprise servers. In addition, when converting a synchronous transmission to asynchronous transmission, other criteria may be considered in addition to whether a buffer is available. In addition, one or more of the features of the present invention can be used for any transfer of data from one isolated memory to another. Many other varieties are also possible.

Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, может использоваться система обработки данных, применимая для хранения и/или выполнения программного кода и содержащая по меньшей мере два процессора, прямо или косвенно связанных со средствами памяти посредством системной шины. Элементы памяти включают, например, локальную память, применяемую во время фактического выполнения программного кода, массовую память и кэш-память, которая обеспечивает временное хранение по меньшей мере части программного кода для уменьшения необходимого числа случаев извлечения кода из массовой памяти во время выполнения.In addition, one or more features of the present invention can be advantageously applied in other types of computing environments. As an example, a data processing system that is applicable for storing and / or executing program code and comprising at least two processors directly or indirectly connected to memory means via a system bus can be used. The memory elements include, for example, local memory used during the actual execution of the program code, mass memory and cache memory, which provides temporary storage of at least part of the program code to reduce the required number of cases of code extraction from the mass memory during execution.

С системой прямой или косвенно посредством промежуточных контроллеров ввода-вывода могут быть связаны устройства ввода-вывода (включая без ограничения, клавиатуры, дисплеи, координатно-указательные устройства, ЗУПД, накопители на магнитной ленте, на компакт-дисках, на многоцелевых компакт-дисках, портативные миниатюрные накопители на жестких дисках и другие запоминающие среды и т.д.). С системой также могут быть связаны сетевые адаптеры, позволяющие системе обработки данных устанавливать связь с другими системами обработки данных или удаленными принтерами или запоминающими устройствами посредством промежуточной частных или общедоступных сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь несколькими из сетевых адаптеров доступных типов.I / O devices (including, without limitation, keyboards, displays, pointing devices, RAMs, tape drives, compact discs, multi-purpose compact discs, can be connected directly or indirectly through intermediate input-output controllers to the system) portable miniature hard drives and other storage media, etc.). Network adapters may also be associated with the system, allowing the data processing system to communicate with other data processing systems or remote printers or storage devices through intermediate private or public networks. Modems, cable modems, and Ethernet network cards are just a few of the available network adapters.

Рассмотрим фиг.7, на которой представлены характерные компоненты главной компьютерной системы 5000 для реализации одной или нескольких особенностей настоящего изобретения. Характерный главный компьютер 5000 содержит один или несколько ЦП 5001, поддерживающих связь с памятью (т.е. центральной памятью) 5002 компьютера, а также интерфейсы ввода-вывода с запоминающими устройствами 5011 и сетями 5010 для связи с другими компьютерами или SAN и т.п. ЦП 5001 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. ЦП 5001 может выполнять динамическую трансляцию 5003 адреса (DAT) для трансляции адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрого преобразования адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш-память 5009. Кэш-память 5009 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 5004 выборки команд вызывает из памяти 5002 команду посредством кэш-памяти 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 5002, блок 5005 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.Consider figure 7, which presents the characteristic components of the main computer system 5000 for implementing one or more features of the present invention. A representative host computer 5000 includes one or more CPUs 5001 that communicate with a computer memory (i.e., central memory) 5002, as well as I / O interfaces with memory devices 5011 and networks 5010 for communicating with other computers or SANs, etc. . The 5001 CPU is compatible with an architecture that contains a structured instruction set and structured functionality. The CPU 5001 can perform dynamic translation of the address 5003 (DAT) to translate the program addresses (virtual addresses) into actual memory addresses. The DAT typically contains a fast address translation buffer (TLB) buffer 5007 for caching translations so that subsequent accesses to the computer's memory unit 5002 do not require a delay in address translation. Typically, cache 5009 is used between computer memory 5002 and processor 5001. Cache 5009 can be hierarchical and consists of a large capacity cache available for multiple CPUs and faster, lower-capacity caches (low level) between the large capacity cache and each CPU . In some cases, implementations of low-level caches are divided into separate low-level caches for fetching commands and accessing data. In one embodiment, an instruction fetching unit 5004 calls a command from memory 5002 via cache 5009. The instruction is decoded in instruction decoding unit 5006 and sent (with other instructions in some embodiments) to instruction execution unit or blocks 5008. Typically, several instruction execution units 5008 are used, for example, an arithmetic instruction execution unit, a floating point instruction execution unit, and a transition instruction execution unit. The command is executed by a block, which, depending on the need, accesses operands from registers or memory defined by commands. If access (loading or saving) to the operand is to be carried out from the memory 5002, the load / save block 5005 usually processes the access procedure under the control of the command being executed. Commands can be executed in hardware circuits or in the internal microcode (firmware) or using a combination of both.

Как было отмечено, в локальном (или основном) запоминающем устройстве компьютерной системы хранится информация, а также адресные, защитные, контрольные и корректирующие записи. Некоторые особенности адресации включают формат адресов, концепцию адресных пространств, различные типы адресов и то, каким образом адрес одного типа транслируется в адрес другого типа. Некоторые из основных запоминающих устройств имеют постоянно абонированные ячейки. Основное запоминающее устройство обеспечивает систему запоминающим устройством с прямой адресацией и быстрой выборкой данных. В основное запоминающее устройство должны загружаться (из устройств ввода) как данные, так и программы, после чего они могут обрабатываться.As noted, the local (or main) storage device of a computer system stores information, as well as address, security, control and correction records. Some features of addressing include the address format, the concept of address spaces, different types of addresses, and how an address of one type translates to an address of another type. Some of the main storage devices have permanently subscribed cells. The primary storage device provides the system with a direct addressable storage device and fast data retrieval. Both data and programs must be loaded into the main storage device (from input devices), after which they can be processed.

Основное запоминающее устройство может содержать одно или несколько буферных запоминающих устройств меньшей емкости с более быстрой выборкой, иногда называемых кэшами. Кэш обычно физически связан с ЦП или процессором ввода-вывода. Физическая конструкция и использование различных запоминающих сред в целом не сказывается на программе за исключением производительности.The main storage device may contain one or more buffer storage devices of lower capacity with faster sampling, sometimes called caches. A cache is usually physically connected to a CPU or I / O processor. The physical design and use of various storage media in general does not affect the program, with the exception of performance.

Для команд и операндов, хранимых в памяти, могу быть предусмотрены раздельные кэши. Информация содержится в кэше в форме непрерывных байтов на целочисленной границе, называемой блоком или строкой данных кэша (или для краткости строкой). Согласно одной из моделей может быть предусмотрена команда извлечения атрибута кэша (EXTRACT CACHE ATTRIBUTE), которая выдает размер строки кэша в байтах. Согласно одной из моделей также может быть предусмотрена команда упреждающей выборки данных (PREFETCH DATA) и команда упреждающей выборки данных относительно большой длины (PREFETCH DATA RELATIVE LONG) для упреждающей выборки данных из запоминающего устройства в кэш данных или команд или для высвобождения данных из кэша.Separate caches can be provided for instructions and operands stored in memory. The information is contained in the cache in the form of continuous bytes on an integer boundary called a block or line of cache data (or for short, a line). According to one of the models, a cache attribute retrieval command (EXTRACT CACHE ATTRIBUTE) can be provided, which gives the size of the cache line in bytes. According to one of the models, a prefetch data command (PREFETCH DATA) and a prefetch data command of relatively long length (PREFETCH DATA RELATIVE LONG) can also be provided to proactively select data from a storage device into a data or instruction cache or to free data from the cache.

Запоминающее устройство рассматривается как длинная горизонтальная битовая строка. В случае большинства операций доступ к запоминающему устройству последовательно осуществляется слева направо. Битовая строка подразделяется на блоки из восьми разрядов. Восьмиразрядный блок называется байтом и является базовым конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется однозначно определяемым неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют идущие подряд адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой двоичные целые числа без знака, содержащие 24, 31 или 64 разряда.The storage device is regarded as a long horizontal bit string. For most operations, the storage device is accessed sequentially from left to right. The bit string is divided into blocks of eight bits. The eight-bit block is called a byte and is the basic constructive block of all information presentation formats. The location of each byte in the storage device is identified by a uniquely determined non-negative integer, which is the location address of this byte or simply the address of the byte. Neighboring byte locations have consecutive addresses starting from left from 0 and sequentially following from left to right. Addresses are unsigned binary integers containing 24, 31, or 64 bits.

Обмен информацией между запоминающим устройством и ЦП или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, например, в системе z/Architecture® хранящаяся группа байтов адресуется посредством крайнего левого байта из группы. Число байтов в группе подразумевается или прямо оговаривается выполняемой операцией. Используемая в работе ЦП группа байтов называется полем. Разряды в каждой группе байтов, например, в системе z/Architecture® последовательно нумеруются слева направо. Крайние левые разряды в z/Architecture® иногда именуются "старшими" разрядами, а крайние правые разряды - "младшими" разрядами. Тем не менее, номера разрядов не являются адресами ячеек запоминающего устройства. Возможна только адресация байтов. Чтобы оперировать с отдельными разрядами хранящегося байта, осуществляется доступ ко всему байту. Разряды в байте пронумерованы слева направо от 0 до 7 (например, в системе z/Architecture®). Разряды в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-разрядных адресов или от 1 до 31 или от 33 до 63 в случае 31-разрядных адресов и от 0 до 63 в случае 64-разрядных адресов. В любом другом имеющем фиксированную длину формате из множества байтов разряды, образующие формат, последовательно пронумерованы, начиная с 0. В целях обнаружения ошибок и предпочтительно их исправления с каждым байтом или группой байтов может передаваться один или несколько контрольных разрядов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда кодом операций команды подразумевается длина хранящегося поля операнда, считается, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, считается, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или в случае некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.Information is exchanged between the storage device and the CPU or channel subsystem by transmitting one byte or group of bytes at a time. Unless otherwise specified, for example, in the z / Architecture ® system, a stored byte group is addressed by the leftmost byte from the group. The number of bytes in the group is implied or directly specified by the operation. The byte group used by the CPU is called a field. The bits in each byte group, for example, in the z / Architecture ® system , are sequentially numbered from left to right. The leftmost bits in z / Architecture ® are sometimes referred to as the "highest" bits, and the rightmost bits are referred to as the "lower" bits. However, the bit numbers are not cell addresses of the storage device. Only byte addressing is possible. To operate with individual bits of a stored byte, access to the entire byte is performed. The bits in the byte are numbered from left to right from 0 to 7 (for example, in the z / Architecture ® system ). The bits in the address can be numbered from 8 to 31 or from 40 to 63 in the case of 24-bit addresses, or from 1 to 31 or from 33 to 63 in the case of 31-bit addresses and from 0 to 63 in the case of 64-bit addresses. In any other fixed-length format of multiple bytes, the bits forming the format are sequentially numbered starting from 0. In order to detect errors and preferably correct them, one or more check bits can be transmitted with each byte or group of bytes. Such control bits are automatically generated by the machine and cannot be directly controlled by the program. Storage capacity is expressed in number of bytes. When the instruction operation code implies the length of the stored operand field, the field is considered to have a fixed length, which can be 1, 2, 4, 8, or 16 bytes. For some teams, longer fields may be implied. When the length of the stored field of the operand is not implied, but directly indicated, the field is considered to have a variable length. Variable length operands can vary in length in increments of 1 byte (or in the case of some instructions in increments of 2 bytes and other steps). When information is stored in the storage device, the contents of the locations of only those bytes that are included in the specified field are replaced, despite the fact that the width of the physical access path to the storage device may exceed the length of the stored field.

Некоторые хранящиеся единицы информации должны находиться на целочисленной границе. Применительно к единице информации граница называется целочисленной, когда адрес ее ячейки запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтам на целочисленной границе даются особые названия. Полуслово является группой из 2 идущих подряд байтов на двухбайтовой границе и представляет собой базовый конструктивный блок команд. Слово является группой из 4 идущих подряд байтов на четырехбайтовой границе. Двойное слово является группой из 8 идущих подряд байтов на 8-байтовой границе. Учетверенное слово является группой из 16 идущих подряд байтов на 16-байтовой границе. Когда в адресах ячеек запоминающего устройства указаны полуслова, слова, двойные слова и учетверенные слова, в двоичном представлении адреса содержится один, два, три или четыре крайних правых нулевых разряда, соответственно. Команды должны находиться на двухбайтовых целочисленных границах. Хранящиеся операнды большинства команд не содержат требования размещения на границах.Some stored units of information must be on an integer boundary. As applied to a unit of information, a boundary is called integer when the address of its storage cell is a multiple of the length of the unit of information in bytes. Fields of 2, 4, 8, and 16 bytes in length on the integer boundary are given special names. Absolutely, it is a group of 2 consecutive bytes on a double-byte boundary and represents a basic constructive block of commands. A word is a group of 4 consecutive bytes on a four-byte boundary. A double word is a group of 8 consecutive bytes on an 8-byte boundary. A quadruple word is a group of 16 consecutive bytes on a 16-byte boundary. When half-words, words, double words and quadruples are indicated in the addresses of the memory cells, the binary representation of the address contains one, two, three or four rightmost zero digits, respectively. Teams must be on double-byte integer boundaries. The stored operands of most commands do not contain the requirement of placement at the borders.

В устройствах, в которых реализованы раздельные кэши для команд и операндов, хранимых в памяти, могут происходить значительные задержки, если программа сохраняется в строке кэша, из которой впоследствии осуществляется выборка команд, независимо от того, изменяются ли при сохранении команды, выборка которых впоследствии осуществляется.In devices that implement separate caches for instructions and operands stored in memory, significant delays can occur if the program is stored in a cache line from which instructions are subsequently fetched, regardless of whether or not instructions that are subsequently fetched are saved when saved .

В одном из вариантов осуществления изобретение может быть реализовано на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с настоящим изобретением). Как показано на фиг.7, обычно процессор 5001 главной системы 5000, получает доступ к программному коду системы программного обеспечения, в котором воплощено настоящее изобретение, посредством долговременных запоминающих сред 5011, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 5002 компьютера или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для применения пользователями таких других систем.In one embodiment, the invention may be practiced by software (sometimes referred to as licensed internal code, firmware, microcode, millicode, picocode, etc., which is consistent with the present invention in all cases). As shown in FIG. 7, typically the processor 5001 of the main system 5000 gains access to the software code of the software system in which the present invention is embodied by means of long-term storage media 5011, such as a CD-ROM, a tape drive or a tape drive hard drives. The software system program code may be embodied in any of a variety of known environments for use with a data processing system, such as a floppy disk, hard disk drive, or CD ROM. The code may be distributed in such environments, or may be distributed to users from a computer memory 5002 or a storage device of one computer system over a network 5010 to other computer systems for use by users of such other systems.

Программный код включает операционную систему, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из запоминающей среды 5011 в относительно быстродействующее запоминающее устройство 5002, в котором он доступен для обработки процессором 5001. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.The program code includes an operating system that controls the function and interaction of various nodes of a computer and one or more application programs. Typically, pages of program code are paged from storage medium 5011 to a relatively high-speed storage device 5002, in which it is available for processing by processor 5001. Methods and methods for translating software system code into memory, in physical environments, and / or distributing program code via networks are good known and will not be further considered in the description. Program code created and stored in a material environment (including without limitation electronic memory (RAM) modules, flash memory, compact discs, universal digital disks, magnetic tape, etc.) is often referred to as a “computer program product”. A medium containing a computer program product can usually be read by a data processing device, preferably in a computer system, for execution by a data processing device.

На фиг.8 проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой может быть на практике реализовано настоящее изобретение. В показанную на фиг.8 систему 5020 входит характерная базовая компьютерная система 5021, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину для соединения процессора(-ов) 5026 и других компонентов системы 5021 и обеспечения связи между ними известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт-диск, универсальный цифровой диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 5021 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 5026 с одним или несколькими устройствами сопряжения, такими как клавиатура 5024, мышь 5023, принтер/сканер 5030 и/или другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 5022, такой как ЖК-дисплей или монитор с микропроцессором 5026.FIG. 8 illustrates a representative workstation or hardware server system in which the present invention may be practiced. The system 5020 shown in FIG. 8 includes a representative core computer system 5021, such as a personal computer, workstation, or server, including optional peripherals. Basic computer system 5021 has one or more processors 5026 and a bus for connecting processor (s) 5026 and other components of system 5021 and for communicating between them in known ways. A bus connects the processor 5026 with memory 5025 and long-term storage device 5027, which may contain a hard disk drive (for example, including any of the following: magnetic media, a compact disk, a universal digital disk and flash memory) or, for example, a magnetic drive tape. The system 5021 may also include a user interface adapter that connects the microprocessor 5026 to one or more interface devices via a bus, such as a keyboard 5024, a mouse 5023, a printer / scanner 5030, and / or other interface devices, which can be any user interface device, such as touch screen, optional numeric keypad, etc. The bus also connects a display 5022 through a display adapter, such as an LCD or a monitor with microprocessor 5026.

Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, система 5021 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или системой 5021 может являться клиент, связанный отношениями клиент/сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из техники.System 5021 can communicate with other computers or computer networks through a network adapter capable of communicating 5028 with network 5029. Examples of network adapters are communication channels, a ring network with a relay access, an Ethernet network, or modems. Alternatively, system 5021 may communicate using a wireless interface, such as a CDPD (Cellular Digital Packet Transmission System) card. System 5021 may be connected to other such computers on a local area network (LAN) or wide area network (WAN), or system 5021 may be a client connected by a client / server relationship with another computer, etc. All of these configurations, as well as associated communication equipment and software, are known from the art.

На фиг.9 проиллюстрирована сеть 5040 обработки данных, в которой может быть реализовано на практике настоящее изобретение. В сеть 5040 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с главным процессором.9, a data processing network 5040 is illustrated in which the present invention can be practiced. The data processing network 5040 may include many separate networks, such as a wireless network and a wired network, each of which may include many separate workstations 5041, 5042, 5043, 5044. In addition, as is well known to specialists in this field of technology, may include one or more LANs, which may include many intelligent workstations associated with the main processor.

На фиг.9 также показано, что в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюз 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 5046 предпочтительно может быть связан с другой сетью (например, сетью Интернет 5047) линией связи. Шлюз 5046 также может быть непосредственно связан с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ System z® производства International Business Machines Corporation.Figure 9 also shows that mainframes or servers, such as a gateway (client-server 5046) or application server (remote server 5048, which can access the data store, and can also be accessed directly from the working network, can also enter the network) station 5045). Gateway 5046 serves as an entry point to each individual network. A gateway is required when connecting one network protocol to another. Gateway 5046 may preferably be connected to another network (e.g., the Internet 5047) via a communication link. Gateway 5046 can also be directly connected to one or more workstations 5041, 5042, 5043, 5044 using a communication line. The gateway can be implemented using the IBM eServer ™ System z ® server manufactured by International Business Machines Corporation.

Как показано на фиг.8 и 9, доступ к программному коду системы программного обеспечения, в котором может быть воплощено настоящее изобретение, может осуществлять процессор 5026 системы 5020 посредством долговременных запоминающих сред 5027, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.As shown in FIGS. 8 and 9, access to the software code of a software system in which the present invention may be implemented may be provided by processor 5026 of system 5020 via long-term storage media 5027, such as a ROM on a CD, or a hard disk drive . The software system program code may be embodied in any of a variety of known environments for use with a data processing system, such as a floppy disk, hard disk drive, or CD ROM. The code may be distributed in such environments, or may be distributed to users 5050, 5051 from the computer memory or storage device of one computer system over a network to other computer systems for use by users of such other systems.

В качестве альтернативы, программный код может быть воплощен в памяти 5025 с возможностью доступа к нему для процессора 5026 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 5032. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 5027 в быстродействующее запоминающее устройство 5025, в котором он доступен для обработки процессором 5026. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.Alternatively, the program code may be embodied in memory 5025 with access to it for processor 5026 using the processor bus. Such program code implements an operating system that controls the function and interaction of various nodes of a computer and one or more application programs 5032. Typically, pages of program code are paged from storage media 5027 to high-speed storage device 5025, in which it is available for processing by processor 5026. Methods and methods for translating program code of a software system into memory, in physical environments, and / or distributing program code through networks x well known and will not be further considered in the description. Program code created and stored in a material environment (including without limitation electronic memory (RAM) modules, flash memory, compact discs, universal digital disks, magnetic tape, etc.) is often referred to as a “computer program product”. A medium containing a computer program product can usually be read by a data processing device, preferably in a computer system, for execution by a data processing device.

Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен кэш команд (I-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.The cache that is most readily available to the processor (usually faster and less voluminous than other processor caches) is the lower level cache (L1 or level 1), and the main storage device (main memory) is the highest level cache (L3 in case of 3 levels). The lower level cache is often divided by the instruction cache (I-cache), which stores the machine instructions for execution, and the data cache (D-cache), which stores the operands stored in memory.

На фиг.10 проиллюстрирован один из примеров осуществления процессора 5026. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые вероятно будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, имеющей уровня 4 кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующими и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые подкачиваются в основное запоминающее устройство 5025 и откачиваются из него операционной системой.10 illustrates one embodiment of a processor 5026. Typically, one or more levels of cache 5053 are used to buffer memory blocks and improve processor performance. Cache 5053 is a high-speed buffer in which data lines are stored in memory in cache lines, which will probably be used. Typical cache data lines contain 64, 128, or 256 bytes of data in memory. Separate caches are often used for command caching and data caching. The consistency of caches (synchronization of copies of lines in memory and in caches) is often ensured by various tracking algorithms ("snoop"), well known in the art. The main storage device 5025 of the processor system is often referred to as a cache. In a processor system having a level 4 cache 5053, the main storage device 5025 is sometimes called a level 5 cache (L5), because it is usually faster and is only part of a non-volatile memory device (RAM, tape memory, etc.), which is available for a computer system. The main storage device 5025 "caches" data pages that are pumped into and pumped out from the main storage device 5025 by the operating system.

Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды для выполнения. Счетчиком команд в процессоре на основе z/Architecture является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (PSW) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в PSW) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. RISC-команды (на основе вычислений с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (на основе вычислений с полным набором команд) обычно имеют переменную длину. Команды, используемые в системе IBM z/Architecture, являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Показание счетчика 5061 команд изменяется, например, в результате операции переключения контекста или операции выбранного перехода согласно команде перехода. При операции переключения контекста в слове состояния программы сохраняется текущее показание счетчика команд вместе с другой информацией о состоянии выполняемой программы (такой как коды условий), и загружается новое показание счетчика команд, указывающее на команду нового программного модуля для выполнения. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения, или чтобы выполнять программный цикл путем загрузки в счетчик 5061 команд результата команды перехода.A software counter (instruction counter) 5061 tracks the address of the current command to execute. The instruction counter on a z / Architecture-based processor is 64-bit, and it can be truncated to 31 or 24 bits in order to support pre-existing addressing restrictions. Since the command counter is usually embodied in the program status word (PSW) of the computer, it is saved when the context switches. Accordingly, an executable program with a command counter can be interrupted, for example, by the operating system (when switching context from the software environment to the operating system environment). The PSW of the program supports reading the command counter while the program is inactive, and the command counter (in PSW) of the operating system is used at runtime. Typically, the instruction counter is incremented by the number of bytes of the current instruction. RISC commands (based on calculations with a reduced set of instructions) usually have a fixed length, while CISC commands (based on calculations with a full set of instructions) usually have a variable length. The commands used in the IBM z / Architecture system are CISC commands that are 2, 4, or 6 bytes long. The counter 5061 of the instruction is changed, for example, as a result of a context switching operation or a selected transition operation according to a transition command. During the context switching operation, the current instruction counter reading is stored in the program status word along with other information about the status of the program being executed (such as condition codes), and a new instruction counter reading is loaded, indicating the command of the new program module to execute. The operation of the selected transition is performed to allow the program to make decisions, or to execute a program cycle by loading the result of the transition command into the counter 5061 of the instructions.

Обычно для выборки команд от имени процессора 5026 применяется блок 5055 выборки команд. Блок выборки осуществляет выборку "очередных последовательных команд", целевых команд из команд выбранного перехода или первых команд программы, следующей за переключением контекста. В современных блоках выборки команд часто применяют методы выборки с целью предварительной выборки команд по предположению, исходя из вероятности использования команд, предварительная выборка которых была осуществлена. Например, блок выборки может осуществлять выборку 16 байтов команды, содержащих очередную последовательную команду, и дополнительных байтов следующих далее команд.Typically, instruction fetch unit 5055 is used to fetch instructions on behalf of processor 5026. The fetch unit selects the "next consecutive commands", target commands from the commands of the selected transition or the first commands of the program following the context switch. In modern teams sampling units, sampling methods are often used to pre-select teams by assumption, based on the likelihood of using teams that were pre-sampled. For example, a fetch unit can fetch 16 bytes of a command containing the next sequential command and additional bytes of the following commands.

Затем вызванные команды выполняются процессором 5026. В одном из вариантов осуществления вызванная команда(-ы) передаются блоку 5056 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 выборки команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 5057 выполнения предпочтительно из памяти 5025, структурированных регистров 5059 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).Then, the called instructions are executed by the processor 5026. In one embodiment, the called command (s) are transmitted to the block 505 scheduling unit. The scheduling unit decodes the instruction (s) and sends information about the decoded instruction (s) to the corresponding units 5057, 5058, 5060. The execution unit 5057 usually receives information about the decoded arithmetic instructions from the instruction selection unit 5055 and performs arithmetic operations with the operands in accordance with the operation code contained in the command. The operands are provided to execution unit 5057, preferably from memory 5025, structured registers 5059, or from the immediate field of an executable instruction. The stored execution results are stored in memory 5025, registers 5059, or in other machine hardware (such as control registers, PSW registers, etc.).

Процессор 5026 обычно имеет один или несколько блоков 5057, 5058, 5060, выполнения функции команды. Как показано на фиг.11А, блок 5057 выполнения посредством интерфейсной логической схемы 5071 может поддерживать связь со структурированными общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065. В блоке 5057 выполнения может применяться несколько регистровых схем 5067, 5068, 5069 для хранения информации, с которой будет работать арифметическое логическое устройство (АЛУ) 5066. АЛУ выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ, поворот и смещение. АЛУ предпочтительно поддерживает зависящие от конструкции специализированные операции. В других схемах могут обеспечиваться другие структурированные средства 5072, включающие, например, коды условия и логическую схему поддержки восстановления. Обычно результат операции АЛУ хранится в схеме 5070 выходного регистра, из которой он может пересылаться целому ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание имеет целью лишь обеспечить понимание одного из вариантов осуществления.The processor 5026 typically has one or more blocks 5057, 5058, 5060, performing the function of the command. As shown in FIG. 11A, the execution unit 5057, through the interface logic 5071, can communicate with structured shared registers 5059, the decoding / scheduling unit 5056, the load / save unit 5060, and other processor units 5065. Several register circuits may be used in the execution unit 5057 5067, 5068, 5069 for storing information that the arithmetic logic device (ALU) 5066 will work with. ALU performs arithmetic operations such as addition, subtraction, multiplication and division, as well as logs RP G functions such as AND, OR and XOR, rotation and displacement. ALU preferably supports design-specific specialized operations. In other schemes, other structured means 5072 may be provided, including, for example, condition codes and a recovery support logic. Typically, the result of an ALU operation is stored in an output register circuit 5070, from which it can be transferred to a number of other processing functions. Although there are many designs of processors, the present description is intended only to provide an understanding of one embodiment.

Например, команда сложения выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, а, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специализированными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения заданной кодом операции функции применительно к операндам. Например, команда сложения может выполняться блоком 5057 выполнения применительно к операндам, обнаруженным в двух регистрах 5059, указанных в регистровых полях команды.For example, the addition command is executed by the execution unit 5057, which has arithmetic and logical functionality, and, for example, the floating-point command is executed by the floating-point unit, which has specialized floating-point capabilities. The execution unit preferably works with the operands indicated by the command by executing a function specified by the operation code as applied to the operands. For example, an addition instruction may be executed by execution unit 5057 in relation to operands found in two registers 5059 indicated in register fields of the instruction.

Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, которым может являться третий регистр или один из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (АЛУ) 5066, способное выполнять ряд логических функций, таких как смещение, поворот. И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любые из следующих функций: сложение, вычитание, умножение, деление. Некоторые АЛУ 5066 рассчитаны на скалярные операции, а некоторые - на операции с плавающей точкой. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). В системе IBM z/Architecture используется обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что АЛУ не требуется поддерживать возможность вычитания, поскольку при отрицательной или положительной величине дополнения до двух в АЛУ требуется только сложение. Числа обычно описаны в сокращенном виде, в котором 12-разрядное поле определяет адрес блока из 4096 байтов и обычно описано, например, в виде 4-х килобайтового блока.Block 5057 execution performs arithmetic addition of two operands and stores the result in the third operand, which may be a third register or one of two source registers. The execution unit preferably uses an arithmetic logic device (ALU) 5066, capable of performing a number of logical functions, such as offset, rotation. AND, OR, and exclusive OR, as well as a number of algebraic functions, including any of the following functions: addition, subtraction, multiplication, division. Some ALU 5066 are designed for scalar operations, and some - for floating point operations. Depending on the architecture, the data may have a reverse byte order (when the least significant byte corresponds to the most significant byte address) or a direct byte order (when the least significant byte corresponds to the lower byte address). IBM z / Architecture uses reverse byte ordering. Depending on the architecture, the field of signed numbers can be represented as a direct code, additions to one, or additions to two. A number in the form of an addition to two is advantageous in the sense that the ALU does not need to support the possibility of subtraction, since with a negative or positive addition to two in the ALU, only addition is required. Numbers are usually described in abbreviated form, in which a 12-bit field determines the address of a block of 4096 bytes and is usually described, for example, in the form of a 4 kilobyte block.

Как показано на фиг.11Б, содержащаяся в команде перехода информация для выполнения команды перехода обычно передается блоку 5058 перехода, в котором часто применяется алгоритм предсказания переходов, такой как таблица 5082 предыстории переходов (ТПП), для предсказания исхода перехода до завершения других условных операций. Целевой объект текущей команды перехода вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды перехода завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда перехода может предусматривать проверку кодов условий и переход к целевому адресу, если коды условий отвечают требованию команды перехода, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 перехода может применяться АЛУ 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчеризации или другие схемы 5073.As shown in FIG. 11B, the information contained in the transition instruction for executing the transition instruction is typically transmitted to the transition unit 5058, which often uses a transition prediction algorithm, such as transition history table (TPI) 5082, to predict the outcome of the transition before other conditional operations are completed. The target of the current branch instruction is invoked and executed by assumption until conditional operations are completed. When the conditional operations are completed, the assumptions made transition instructions are completed or discarded based on the conditional operation and the expected outcome. A typical transition instruction may include checking condition codes and moving to the destination address if the condition codes meet the requirements of the transition instruction, and the destination address may be calculated based on several numbers, including, for example, numbers from register fields or the direct instruction field. At transition block 5058, an ALU 5074 may be applied having a plurality of input register circuits 5075, 5076, 5077 and an output register circuit 5080. Transition unit 5058, for example, may communicate with common registers 5059, decode scheduling unit 5056, or other schemes 5073.

Выполнение группы команд может прерываться по ряду причин, включая, например, переключение контекста, инициированное операционной системой, исключительную ситуацию или ошибку в процессе выполнения программы, приводящую к переключению контекста, сигнал прерывания ввода-вывода, приводящий к переключению контекста, или многопоточный режим работы множества программ (в многопоточной среде). Переключение контекста предпочтительно служит для сохранения информации о состоянии выполняемой в данный момент программы и затем для загрузки информации о состоянии другой вызываемой программы. Информация о состоянии может сохраняться, например, в аппаратных регистрах или в памяти. Информация о состоянии предпочтительно содержит показание счетчика команд, указывающее очередную команду для выполнения, коды условий, сведения о преобразовании данных памяти и содержимое структурированного регистра. Переключение контекста может осуществляться аппаратными схемами, прикладными программами, программами операционной системы или аппаратно-программным кодом (микрокодом, пикокодом или лицензионным внутренним кодом (LIC) по отдельности или в сочетании).The execution of a group of commands may be interrupted for a number of reasons, including, for example, a context switch initiated by the operating system, an exception or an error during program execution leading to a context switch, an I / O interrupt signal leading to a context switch, or multi-threaded operation programs (in a multi-threaded environment). The context switch is preferably used to save information about the status of the currently executing program and then to download information about the status of another called program. Status information may be stored, for example, in hardware registers or in memory. The status information preferably includes a command counter reading indicating the next command to execute, condition codes, information about converting memory data, and contents of a structured register. Context switching may be performed by hardware circuits, application programs, operating system programs, or hardware-software code (microcode, picocode, or licensed internal code (LIC), individually or in combination).

Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может содержать непосредственный операнд, в котором используется значение части команды, может содержать одно или несколько регистровых полей, прямо указывающих регистры общего назначения или регистры особо назначения (например, регистры с плавающей точкой). В команде могут использоваться подразумеваемые регистры, обозначаемые полем кода операции как операнды. В команде могут использоваться ячейки памяти для операндов. Ячейка памяти для операнда может обеспечиваться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения на основе системы z/Architecture, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются с целью получения, например, адреса операнда в памяти. Под ячейкой в данном случае подразумевается ячейка основной памяти (основного запоминающего устройства), если не указано иное.The processor accesses the operands in accordance with methods defined by the instructions. A command may contain an immediate operand that uses the value of a part of the command, may contain one or more register fields that directly indicate general purpose registers or special purpose registers (for example, floating point registers). The command may use implied registers, denoted by the operation code field as operands. The command can use memory cells for operands. The memory cell for the operand can be provided with a register, direct field, or a combination of registers and direct field, an example of which is a long-range offset tool based on the z / Architecture system, in which the command determines the base register, index register and direct field (offset field), which are summed with the purpose of obtaining, for example, the address of the operand in memory. A cell in this case means a cell of the main memory (main storage device), unless otherwise indicated.

Как показано на фиг.11В, процессор осуществляет доступ к памяти с использованием блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая не соответствует последовательности команд, тем не менее, блок 5060 загрузки/сохранения должен обеспечивать для программ видимость выполнения команды по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, АЛУ 5085 и управляющую логику 5090 для вычисления адресов ячеек запоминающего устройства и обеспечения последовательного потока для сохранения порядка следования операций. Некоторые операции могут выполняться не по порядку, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы выполняемые не по порядку операции выглядели для программы выполненными по порядку, как хорошо известно из техники.As shown in FIG. 11B, the processor accesses the memory using the load / save unit 5060. The load / save unit 5060 may perform a load operation by obtaining the address of the target operand in memory 5053 and load the operand into register 5059 or another memory location 5053, or may perform a save operation by obtaining the address of the target operand in memory 5053 and store data obtained from register 5059 or another memory cell 5053, in the target operand cell in the memory 5053. The load / save block 5060 can act on the assumption and access the memory in a sequence that does not match the sequence Most of the commands, however, the load / save block 5060 should provide for programs the visibility of command execution in order. The load / save unit 5060 can communicate with the general registers 5059, the decoding / scheduling unit 5056, the cache / memory interface 5053, or other elements 5083 and contains various register circuits, ALU 5085, and control logic 5090 for calculating the addresses of the memory cells and providing a serial stream to maintain the order of operations. Some operations may be performed out of order, but the load / save unit provides functionality so that the out-of-order operations appear for the program to be completed in order, as is well known in the art.

Адреса, которые "видит" прикладная программа, предпочтительно часто именуются виртуальными адресами. Иногда виртуальные адреса именуются "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что их перенаправляют в ячейку физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простое приписывание величины смещения к виртуальному адресу, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, которые предпочтительно содержат по меньшей мере таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись с указанием таблицы страниц. В системе z/Architecture предусмотрена иерархия трансляции, в которую входит первая таблица региона, вторая таблица региона, третья таблица региона, таблица сегментов и необязательная таблица страниц. Эффективность трансляции адресов часто повышается за счет использования буфера быстрого преобразования адреса (TLB), который содержит записи, отображающие виртуальный адрес соответствующей ячейки физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с использованием таблиц перевода. Затем при последующем использовании виртуального адреса может использоваться запись из быстродействующего TLB вместо доступа к таблицам медленной последовательной трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).The addresses that the application “sees” are preferably often referred to as virtual addresses. Sometimes virtual addresses are referred to as “logical addresses” and “executive addresses”. These virtual addresses are virtual in the sense that they are redirected to a physical memory cell using one of a number of dynamic address translation (DAT) technologies, including, without limitation, simply assigning an offset value to a virtual address, translating a virtual address through one or more translation tables, which preferably comprise at least a segment table and a page table individually or in combination, preferably a segment table containing a record indicating the table tzu page. The z / Architecture system provides a translation hierarchy that includes the first region table, the second region table, the third region table, the segment table, and the optional page table. Address translation efficiency is often improved by using the Fast Address Translation (TLB) buffer, which contains entries that map the virtual address of the corresponding physical memory location. Entries are created when the DAT translates a virtual address using translation tables. Then, upon subsequent use of the virtual address, an entry from the high-speed TLB can be used instead of accessing the slow sequential translation tables. A number of substitution algorithms can manage the contents of a TLB, including the oldest used page replacement algorithm (LRU).

В том случае, когда процессором является процессор мультипроцессорной системы, каждый процессор отвечает за сохранение совместно используемых ресурсов, таких как средства ввода-вывода, кэши, TLB и память, взаимно заблокированных для обеспечения непротиворечивости. Обычно для поддержания непротиворечивости кэшей используются технологии "слежения". Для облегчения совместного использования каждая строка кэша может помечаться в среде слежения как находящаяся в одном из следующих состояний, включающих состояние совместного использования, состояние монопольного использования, измененное состояние, недействительное состояние и т.п.In the case where the processor is a processor of a multiprocessor system, each processor is responsible for maintaining shared resources, such as I / O, caches, TLBs and memory, mutually locked to ensure consistency. Typically, tracking technologies are used to maintain cache consistency. To facilitate sharing, each cache line can be marked in the tracking environment as being in one of the following states, including the sharing state, exclusive state, changed state, invalid state, etc.

Блоки 5054 ввода-вывода (фиг.10) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, накопители на дисках, принтеры, дисплеи и сети. Блоки ввода-вывода представлены в компьютерной программе программными драйверами. В мэйнфреймах, таких как System z® производства IBM®, блоки ввода-вывода мэйнфрейма являются адаптерами каналов и адаптерами открытых систем и обеспечивают связь между операционной системой и периферийными устройствами.The input / output units 5054 (FIG. 10) provide the processor with means for connecting to peripheral devices, including, for example, tape drives, disk drives, printers, displays, and networks. I / O blocks are represented in a computer program by software drivers. On mainframes, such as System z ® manufactured by IBM ® , mainframe I / O units are channel adapters and adapters of open systems and provide communication between the operating system and peripheral devices.

Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, среда может содержать эмулятор (например, программные или другие механизмы эмуляции), в которых эмулируется конкретная архитектура (включая, например, выполнение команд, структурированные функции, такие как трансляция адреса, и структурированные регистры) или ее сокращенная версия (например, в собственной компьютерной системе, имеющей процессор и память). В такой среде за счет одной или нескольких эмулирующих функций эмулятора может быть реализована одна или несколько особенностей настоящего изобретения, несмотря на то, что компьютер, в котором выполняется эмулятор, может иметь архитектуру, отличающуюся от эмулируемых возможностей. В качестве одного из примеров в режиме эмуляции декодируется конкретная эмулируемая команда или операция, и создается соответствующая эмулирующая функция с целью реализации отдельной команды или операции.In addition, one or more features of the present invention can be advantageously applied in other types of computing environments. As an example, an environment may contain an emulator (for example, software or other emulation mechanisms) in which a specific architecture is emulated (including, for example, executing commands, structured functions such as address translation, and structured registers) or its abridged version (for example, in your own computer system having a processor and memory). In such an environment, one or more features of the present invention may be implemented due to one or more emulating functions of the emulator, despite the fact that the computer on which the emulator is running may have an architecture that is different from the emulated capabilities. As one example, in emulation mode, a specific emulated command or operation is decoded, and a corresponding emulating function is created in order to implement a separate command or operation.

В эмулирующей среде главный компьютер содержит, например, память для хранения команд и данных; блок выборки команд для выборки команд из памяти и необязательно локальной буферизации выбранных команд; блок декодирования команд для приема команд от блока выборки команд и определения типа команд, которые были выбраны; и блок выполнения команд для выполнения команд. Выполнение может предусматривать загрузку данных из памяти в регистр; сохранение данных из регистра в памяти; или выполнение арифметической или логической операции какого-либо типа, определяемой блоком декодирования. В одном из примеров каждый блок реализован посредством программного обеспечения. Например, выполняемые блоками операции реализованы в виде одной или нескольких подпрограмм в программном обеспечении эмулятора.In an emulating environment, the host computer contains, for example, memory for storing instructions and data; a command fetch unit for fetching commands from memory and optionally local buffering selected commands; an instruction decoding unit for receiving instructions from an instruction fetching unit and determining the type of instructions that have been selected; and a command execution unit for executing instructions. Execution may include loading data from memory into a register; saving data from the register in memory; or performing an arithmetic or logical operation of any type determined by the decoding unit. In one example, each block is implemented by software. For example, the operations performed by blocks are implemented as one or more subprograms in the emulator software.

В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "C" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architectwe® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™ и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию Hercules, UMX или FSI (Fundamental Software, Inc), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.In the mainframe, in particular, structured machine instructions are used by programmers, usually modern “C” programmers, through a compiling application. These instructions stored in the storage medium may be executed in its own server IBM ® System commands based on the z / Architectwe ® or alternatively in other architectures based machines. They can be emulated in existing and future IBM ® mainframe servers and in other IBM ® machines (for example, Power Systems servers and System x ® servers). They can run on a Linux operating system, a variety of machines using hardware production IBM ®, Intel ®, AMD ™, and others. In addition to running this hardware based on Z / Architecture ® , Linux can also be used, as well as machines using Hercules, UMX or FSI emulation (Fundamental Software, Inc), when the execution usually takes place in emulation mode. In emulation mode, the emulating software is executed by its own processor, which emulates the architecture of the emulated processor.

Собственный процессор обычно выполняет эмулирующее программное обеспечение, представляющее собой аппаратно-программное обеспечение или собственную операционную систему для эмуляции эмулируемого процессора. Эмулирующее программное обеспечение отвечает за выборку и выполнение команд архитектуры эмулируемого процессора. Эмулирующее программное обеспечение поддерживает счетчик эмулируемых команд для слежения за границами команд. Эмулирующее программное обеспечение может осуществлять выборку одной или нескольких эмулируемых машинных команд за один раз и преобразование одной или нескольких эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором. Эти преобразованные команды могут помещаться в кэш, что позволяет ускорять преобразование. Тем не менее, эмулирующее программное обеспечение должно поддерживать правила архитектуры эмулируемого процессора с тем, чтобы обеспечивать правильную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, эмулирующее программное обеспечение должно обеспечивать ресурсы, указанные архитектурой эмулируемого процессора, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамической трансляции адреса, включая таблицы сегментов и таблицы страниц, например, механизмы прерывания, механизмы переключения контекста, часы истинного времени (TOD) и структурированные интерфейсы с подсистемами ввода-вывода с тем, чтобы операционная система или прикладная программа, рассчитанная на работу в эмулируемом процессоре, могла быть запущена в собственном процессоре, имеющем эмулирующее программное обеспечение.A proprietary processor typically runs emulation software, which is firmware or its own operating system, to emulate an emulated processor. The emulation software is responsible for fetching and executing the architecture commands of the emulated processor. The emulation software maintains a counter of emulated instructions for tracking the boundaries of instructions. Emulating software can sample one or more emulated machine instructions at a time and convert one or more emulated machine instructions into the corresponding group of its own machine instructions for execution by its own processor. These converted commands can be cached, which speeds up the conversion. However, emulation software must support the rules of the architecture of the emulated processor in order to ensure the correct operation of operating systems and applications written for the emulated processor. In addition, the emulation software must provide the resources indicated by the architecture of the emulated processor, including without limitation control registers, general registers, floating point registers, dynamic address translation function, including segment tables and page tables, for example, interrupt mechanisms, context switching mechanisms , True Time Clock (TOD), and structured interfaces with I / O subsystems so that the operating system or application is designed to work in the emulated processor, it can be run in its own processor that emulates the software.

Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "С" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scalzi и др.; патент US 5574873 под названием "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", выданный на имя Davidian и др.; патент US 6308255 под названием "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", выданный на имя Gorishek и др.; патент US 6463582 под названием "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", выданный на имя Lethin и др.; патент US 5790825 под названием "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", выданный на имя Eric Traut; и многие другие, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.The particular emulated command is decoded, and a subroutine is called to perform the function of a separate command. The function of emulating software that emulates the function of an emulated processor is implemented in a subroutine or driver in the "C" language or in some other way to provide a driver for specific hardware, available to specialists in this field of technology who have read the description of the preferred embodiment. In various patents that offer software and hardware emulation, including, but not limited to, US Pat. instructions on a target processor "issued to Scalzi et al .; US patent 5574873 entitled "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", issued in the name of Davidian and others; US 6308255, entitled "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", issued in the name of Gorishek et al .; US patent 6463582 entitled "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", issued in the name of Lethin and others; US patent 5790825 entitled "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", issued in the name of Eric Traut; and many others, various well-known methods of emulating a command format structured for a different machine in a target machine are illustrated, available to those skilled in the art.

На фиг.12 проиллюстрирован один из примеров известной из техники эмулирующей главной компьютерной системы 5092, которая эмулирует главную компьютерную систему 5000′, имеющую главную архитектуру. Главным процессором (ЦП) 5091 в главной компьютерной системе 5092 эмуляции является главный процессор (или виртуальный главный процессор) эмуляции, представляющий собой процессор 5093 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 5091 главного компьютера 5000'. Главная компьютерная система 5092 эмуляции имеет память 5094, доступную для процессора 5093 эмуляции. В примере осуществления память 5094 разделена на память 5096 главного компьютера и память 5097 программ эмуляции. Память 5096 главного компьютера доступна для программ эмулируемого главного компьютера 5092 в зависимости от архитектуры главного компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 5091 и которые извлекаются из памяти 5097 программ эмуляции, и может осуществлять выборку главной команды для выполнения из программы в памяти 5096 главного компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования, которая может декодировать выбранную главную команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной главной команды. Другие средства, которые предусмотрены в архитектуре главной компьютерной системы 5000', могут эмулироваться программами структурированных средств, включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 5093 эмуляции (такие как общие регистры и динамическое преобразование виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 5093 эмуляцию функции главного компьютера 5000′.12 illustrates one example of a prior art emulating host computer system 5092 that emulates a host computer system 5000 ′ having a host architecture. The main processor (CPU) 5091 in the main computer system 5092 emulation is the main processor (or virtual main processor) emulation, which is a processor 5093 emulation with the structure of its own teams, different from the command structure of the processor 5091 of the main computer 5000 '. The host computer system 5092 emulation has a memory 5094, available for the processor 5093 emulation. In an embodiment, the memory 5094 is divided into a memory 5096 of the host computer and a memory 5097 of emulation programs. Memory 5096 of the host computer is available for programs of the emulated host computer 5092, depending on the architecture of the host computer. The emulation processor 5093 executes its own instructions of a structured instruction system, the structure of which is different from the instruction structure of the emulated processor 5091 and which are extracted from the memory 5097 of the emulation programs, and can select the main command for execution from the program in the memory of the main computer 5096 by applying one or more commands from sequence control programs and sampling / decoding, which can decode the selected main command (s) and determine the program A team emulate the function of the selected main team. Other tools that are provided for in the architecture of the host computer system 5000 'can be emulated by structured software programs, including tools such as general purpose registers, control registers, support for dynamic address and input / output translation subsystems, and processor cache. Emulation programs can also use the features available in the emulation processor 5093 (such as general registers and dynamic virtual address translation) to improve the performance of emulation programs. Special software and unloading mechanisms may also be provided to facilitate the 5093 processor emulating the function of the host computer 5000 ′.

Используемая в описании терминология имеет целью описание лишь частных вариантов осуществления, а не ограничение изобретения. Подразумевается, что используемые в описании формы единственного числа включают также формы множественного числа, если из контекста ясно не следует иное. Дополнительно подразумевается, что термины "содержит" и/или "содержащий", используемые в описании, означают присутствие указанных признаков, чисел, шагов, операций, элементов и/или компонентов, но не исключают присутствие или добавление одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.The terminology used in the description is intended to describe only particular embodiments, and not to limit the invention. It is understood that the singular forms used in the description also include the plural, unless the context clearly dictates otherwise. Additionally, it is understood that the terms “comprises” and / or “comprising” used in the description mean the presence of the indicated features, numbers, steps, operations, elements and / or components, but do not exclude the presence or addition of one or more other features, numbers, steps, operations, elements, components and / or groups thereof.

Подразумевается, что соответствующие структуры, материалы, действия и эквиваленты всех элементов "средство или шаг плюс функция" следующей далее формулы изобретения, если таковые существуют, включают любую структуру, материал или действие для выполнения функции в сочетании с другими конкретно заявленными средствами. Описание одной или нескольких особенностей настоящего изобретения представлено в качестве иллюстрации и не имеет целью исчерпать или ограничить изобретение раскрытой формой. Для специалистов в данной области техники бесспорны многочисленные модификации и разновидности, не выходящие за пределы объема и существа изобретения. Выбранный и описанный вариант осуществления имеет целью наилучшим образом пояснить принципы изобретения и его практическое применение, а также позволить специалистам в данной области техники понять изобретение, поскольку предусмотрены различные варианты осуществления с различными модификациями, рассчитанными на конкретное применение.It is intended that the corresponding structures, materials, actions and equivalents of all elements of the “means or step plus function” of the following claims, if any, include any structure, material or action to perform a function in combination with other specifically claimed means. The description of one or more features of the present invention is presented as an illustration and is not intended to exhaust or limit the invention to the disclosed form. Numerous modifications and variations are indisputable for those skilled in the art without departing from the scope and spirit of the invention. The selected and described embodiment is intended to best explain the principles of the invention and its practical application, as well as to enable those skilled in the art to understand the invention, as various embodiments are provided with various modifications designed for a particular application.

Claims (31)

1. Энергонезависимый машиночитаемый носитель данных, в котором хранятся команды, считываемые и выполняемые устройством обработки данных для осуществления способа обеспечения связи в коммуникационной среде, включающего:
получение процессором коммуникационной среды от отправителя коммуникационной среды предварительного разрешения на преобразование синхронной пересылки данных в асинхронную пересылку данных, причем предварительное разрешение включает получение указания блока памяти для слежения за асинхронной пересылкой данных,
получение процессором от отправителя запроса на передачу данных получателю коммуникационной среды,
инициирование процессором передачи данных получателю, выполняемой с использованием синхронной пересылки данных,
установление процессором необходимости преобразования синхронной пересылки данных в асинхронную пересылку данных, и
выполняемое при указанном установлении автоматическое преобразование процессором синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных получателю, при этом автоматическое преобразование является независимым от любых действий отправителя, кроме предварительного разрешения.
1. Non-volatile computer-readable storage medium that stores instructions read and executed by a data processing device for implementing a method for providing communication in a communication environment, including:
obtaining, by the processor of the communication medium, from the sender of the communication medium, prior permission for converting the synchronous data transfer to asynchronous data transfer, the preliminary permission including obtaining an indication of a memory unit for monitoring the asynchronous data transfer,
receipt by the processor from the sender of a request for data transmission to the recipient of a communication medium,
initiation by the processor of data transmission to the recipient using synchronous data transfer,
the establishment by the processor of the need to convert synchronous data transfer to asynchronous data transfer, and
the automatic conversion performed by the processor at the specified setting by the synchronous data transfer to the asynchronous data transfer to complete the data transfer to the recipient, while the automatic conversion is independent of any actions of the sender, except for prior permission.
2. Машиночитаемый носитель данных по п. 1, в котором указанное установление включает установление задержки приема данных получателем в то время, когда данные передаются, и выполняемое в этом случае автоматическое преобразование синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных в то время, когда получатель способен принять данные.2. The computer-readable storage medium according to claim 1, wherein said establishment includes setting a delay in receiving data by the recipient while the data is being transmitted, and the automatic conversion of the synchronous data transfer to the asynchronous data transfer in this case, to complete the data transfer at that time, when the recipient is able to receive data. 3. Машиночитаемый носитель данных по п. 2, в котором автоматическое преобразование включает:
сохранение запроса в блоке памяти,
постановку блока памяти в очередь получателя,
установление способности получателя принять данные, и
передачу данных получателю с использованием блока памяти.
3. The computer-readable storage medium according to claim 2, in which the automatic conversion includes:
saving the request in the memory block,
queuing a memory block,
establishing the ability of the recipient to receive data, and
data transfer to the recipient using a memory block.
4. Машиночитаемый носитель данных по п. 3, в котором установление способности получателя принять данные включает установление наличия у получателя пустого буфера для приема данных.4. The computer-readable storage medium according to claim 3, wherein establishing the ability of the recipient to receive data includes determining whether the recipient has an empty buffer for receiving data. 5. Машиночитаемый носитель данных по п. 3, в котором способ дополнительно включает уведомление отправителя о завершении передачи.5. The computer-readable storage medium of claim 3, wherein the method further includes notifying the sender of the completion of the transmission. 6. Машиночитаемый носитель данных по п. 5, в котором уведомление о завершении передачи включает сообщение адреса блока памяти в очереди завершения в памяти, доступной для отправителя.6. The computer-readable storage medium according to claim 5, in which the notification of completion of the transfer includes a message of the address of the memory block in the completion queue in the memory available to the sender. 7. Машиночитаемый носитель данных по п. 6, в котором способ дополнительно включает генерирование прерывания для отправителя при сообщении адреса в очереди завершения.7. The computer-readable storage medium according to claim 6, wherein the method further includes generating an interrupt for the sender when the address in the completion queue is reported. 8. Машиночитаемый носитель данных по п. 2, в котором установление задержки приема данных получателем включает установление недоступности приемного буфера для приема данных.8. The computer-readable storage medium according to claim 2, in which the establishment of a delay in receiving data by the recipient includes establishing the inaccessibility of the receive buffer for receiving data. 9. Машиночитаемый носитель данных по п. 1, в котором способ дополнительно включает получение другого запроса от отправителя, при этом другой запрос подлежит синхронной передаче другому получателю до завершения асинхронной передачи запроса получателю.9. The computer-readable storage medium according to claim 1, wherein the method further comprises receiving another request from the sender, wherein the other request is to be transmitted synchronously to another recipient until completion of the asynchronous transfer of the request to the recipient. 10. Машиночитаемый носитель данных по п. 1, в котором способ дополнительно включает прием одного или нескольких дополнительных запросов от отправителя до завершения асинхронной передачи данных получателю, при этом данные одного или нескольких дополнительных запросов могут передаваться синхронно или асинхронно одному или нескольким получателям.10. The computer-readable storage medium according to claim 1, in which the method further includes receiving one or more additional requests from the sender to complete the asynchronous transfer of data to the recipient, while the data of one or more additional requests can be transmitted synchronously or asynchronously to one or more recipients. 11. Машиночитаемый носитель данных по п. 1, в котором способ дополнительно включает поддержание порядка поступления данных получателю при преобразовании синхронной пересылки данных в асинхронную пересылку данных.11. The computer-readable storage medium according to claim 1, wherein the method further includes maintaining the order of receipt of data by the recipient when converting synchronous data transfer to asynchronous data transfer. 12. Компьютерная система для обеспечения связи в коммуникационной среде, содержащая память и процессор, поддерживающий связь с памятью, при этом компьютерная система сконфигурирована для осуществления способа, включающего:
получение процессором коммуникационной среды от отправителя коммуникационной среды предварительного разрешения на преобразование синхронной пересылки данных в асинхронную пересылку данных, причем предварительное разрешение включает получение указания блока памяти для слежения за асинхронной пересылкой данных,
получение процессором от отправителя запроса на передачу данных получателю коммуникационной среды,
инициирование процессором передачи данных получателю, выполняемой с использованием синхронной пересылки данных,
установление процессором необходимости преобразования синхронной пересылки данных в асинхронную пересылку данных, и
выполняемое при указанном установлении автоматическое преобразование процессором синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных получателю, при этом автоматическое преобразование является независимым от любых действий отправителя, кроме предварительного разрешения.
12. A computer system for providing communication in a communication environment, comprising a memory and a processor communicating with the memory, wherein the computer system is configured to implement a method including:
obtaining, by the processor of the communication medium, from the sender of the communication medium, prior permission for converting the synchronous data transfer to asynchronous data transfer, the preliminary permission including obtaining an indication of a memory unit for monitoring the asynchronous data transfer,
receipt by the processor from the sender of a request for data transmission to the recipient of a communication medium,
initiation by the processor of data transmission to the recipient using synchronous data transfer,
the establishment by the processor of the need to convert synchronous data transfer to asynchronous data transfer, and
the automatic conversion performed by the processor at the specified setting by the synchronous data transfer to the asynchronous data transfer to complete the data transfer to the recipient, while the automatic conversion is independent of any actions of the sender, except for prior permission.
13. Компьютерная система по п. 12, в которой указанное установление включает установление задержки приема данных получателем в то время, когда данные передаются, и выполняемое в этом случае автоматическое преобразование синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных в то время, когда получатель способен принять данные.13. The computer system of claim 12, wherein said establishment includes setting a delay in receiving data by the recipient while the data is being transmitted, and the automatic conversion of the synchronous data transfer to the asynchronous data transfer to complete the data transfer at the time when the receiver is able to receive data. 14. Компьютерная система по п. 13, в которой автоматическое преобразование включает:
сохранение запроса в блоке памяти, постановку блока памяти в очередь получателя, установление способности получателя принять данные, и передачу данных получателю с использованием блока памяти.
14. The computer system of claim 13, wherein the automatic conversion includes:
storing the request in the memory block, placing the memory block in the queue of the receiver, establishing the ability of the receiver to receive data, and transmitting data to the receiver using the memory block.
15. Компьютерная система по п. 14, в которой установление способности получателя принять данные включает установление наличия у получателя пустого буфера для приема данных.15. The computer system of claim 14, wherein determining the recipient's ability to receive data includes determining whether the recipient has an empty buffer for receiving data. 16. Компьютерная система по п. 14, в которой способ дополнительно включает уведомление отправителя о завершении передачи.16. The computer system of claim 14, wherein the method further includes notifying the sender of the completion of the transmission. 17. Компьютерная система по п. 16, в которой уведомление о завершении передачи включает сообщение адреса блока памяти в очереди завершения в памяти, доступной для отправителя.17. The computer system according to claim 16, in which the notification of completion of the transmission includes the message address of the memory block in the completion queue in the memory available to the sender. 18. Компьютерная система по п. 17, в которой способ дополнительно включает генерирование прерывания для отправителя при сообщении адреса в очереди завершения.18. The computer system according to claim 17, in which the method further includes generating an interrupt for the sender when the address in the completion queue is reported. 19. Компьютерная система по п. 12, в которой способ дополнительно включает получение другого запроса от отправителя, при этом другой запрос подлежит синхронной передаче другому получателю до завершения асинхронной передачи запроса получателю.19. The computer system according to p. 12, in which the method further includes receiving another request from the sender, while the other request is subject to synchronous transmission to another recipient until completion of the asynchronous transfer of the request to the recipient. 20. Компьютерная система по п. 12, в которой способ дополнительно включает прием одного или нескольких дополнительных запросов от отправителя до завершения асинхронной передачи данных получателю, при этом данные одного или нескольких дополнительных запросов могут передаваться синхронно или асинхронно одному или нескольким получателям.20. The computer system according to p. 12, in which the method further includes receiving one or more additional requests from the sender to complete the asynchronous data transfer to the recipient, while the data of one or more additional requests can be transmitted synchronously or asynchronously to one or more recipients. 21. Способ обеспечения связи в коммуникационной среде, включающий:
получение процессором коммуникационной среды от отправителя коммуникационной среды предварительного разрешения на преобразование синхронной пересылки данных в асинхронную пересылку данных, причем предварительное разрешение включает получение указания блока памяти для слежения за асинхронной пересылкой данных,
получение процессором от отправителя запроса на передачу данных получателю коммуникационной среды,
инициирование процессором передачи данных получателю, выполняемой с использованием синхронной пересылки данных,
установление процессором необходимости преобразования синхронной пересылки данных в асинхронную пересылку данных, и
выполняемое при указанном установлении автоматическое преобразование процессором синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных получателю, при этом автоматическое преобразование является независимым от любых действий отправителя, кроме предварительного разрешения.
21. A method of providing communication in a communication environment, including:
obtaining, by the processor of the communication medium, from the sender of the communication medium, prior permission for converting the synchronous data transfer to asynchronous data transfer, the preliminary permission including obtaining an indication of a memory unit for monitoring the asynchronous data transfer,
receipt by the processor from the sender of a request for data transmission to the recipient of a communication medium,
initiation by the processor of data transmission to the recipient using synchronous data transfer,
the establishment by the processor of the need to convert synchronous data transfer to asynchronous data transfer, and
the automatic conversion performed by the processor at the specified setting by the synchronous data transfer to the asynchronous data transfer to complete the data transfer to the recipient, while the automatic conversion is independent of any actions of the sender, except for prior permission.
22. Способ по п. 21, в котором указанное установление включает установление задержки приема данных получателем в то время, когда данные передаются, и выполняемое в этом случае автоматическое преобразование синхронной пересылки данных в асинхронную пересылку данных для завершения передачи данных в то время, когда получатель способен принять данные.22. The method according to p. 21, wherein said establishment includes setting a delay in receiving data by the recipient while the data is being transmitted, and the automatic conversion of the synchronous data transfer to the asynchronous data transfer in this case, to complete the data transfer at the time the recipient able to receive data. 23. Способ по п. 22, в котором автоматическое преобразование включает:
сохранение запроса в блоке памяти,
постановку блока памяти в очередь получателя, установление способности получателя принять данные, и
передачу данных получателю с использованием блока памяти.
23. The method according to p. 22, in which the automatic conversion includes:
saving the request in the memory block,
placing the memory block in the queue of the recipient, establishing the ability of the recipient to receive data, and
data transfer to the recipient using a memory block.
24. Способ по п. 23, в котором установление способности получателя принять данные включает установление наличия у получателя пустого буфера для приема данных.24. The method of claim 23, wherein determining the recipient's ability to receive data includes determining if the recipient has an empty buffer for receiving data. 25. Способ по п. 23, дополнительно включающий уведомление отправителя о завершении передачи.25. The method of claim 23, further comprising notifying the sender of the completion of the transmission. 26. Способ по п. 25, в котором уведомление о завершении передачи включает сообщение адреса блока памяти в очереди завершения в памяти, доступной для отправителя.26. The method according to p. 25, in which the notification of the completion of the transmission includes the message address of the memory block in the completion queue in the memory available to the sender. 27. Способ по п. 26, дополнительно включающий генерирование прерывания для отправителя при сообщении адреса в очереди завершения.27. The method of claim 26, further comprising generating an interrupt for the sender when the address in the completion queue is reported. 28. Способ по п. 22, в котором установление задержки приема данных получателем включает установление недоступности приемного буфера для приема данных.28. The method according to p. 22, in which the establishment of a delay in receiving data by the recipient includes establishing the inaccessibility of the receiving buffer for receiving data. 29. Способ по п. 21, дополнительно включающий получение другого запроса от отправителя, при этом другой запрос подлежит синхронной передаче другому получателю до завершения асинхронной передачи запроса получателю.29. The method according to p. 21, further comprising receiving another request from the sender, the other request being synchronously transmitted to another recipient until completion of the asynchronous transfer of the request to the recipient. 30. Способ по п. 21, дополнительно включающий прием одного или нескольких дополнительных запросов от отправителя до завершения асинхронной передачи данных получателю, при этом данные одного или нескольких дополнительных запросов могут передаваться синхронно или асинхронно одному или нескольким получателям.30. The method according to p. 21, further comprising receiving one or more additional requests from the sender to complete the asynchronous transfer of data to the recipient, while the data of one or more additional requests can be transmitted synchronously or asynchronously to one or more recipients. 31. Способ по п. 21, дополнительно включающий поддержание порядка поступления данных получателю при преобразовании синхронной пересылки данных в асинхронную пересылку данных. 31. The method according to p. 21, further comprising maintaining the order of receipt of data by the recipient when converting synchronous data transfer to asynchronous data transfer.
RU2012148579/08A 2011-06-30 2012-05-10 Method of providing communication in communication environment, computer system and nonvolatile computer-readable data medium RU2574815C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/172,978 2011-06-30
US13/172,978 US8549094B2 (en) 2011-06-30 2011-06-30 Facilitating communication between isolated memory spaces of a communications environment
PCT/EP2012/058687 WO2013000616A2 (en) 2011-06-30 2012-05-10 Facilitating communication between isolated memory spaces of a communications environment

Publications (2)

Publication Number Publication Date
RU2012148579A RU2012148579A (en) 2014-05-20
RU2574815C2 true RU2574815C2 (en) 2016-02-10

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625637B1 (en) * 1999-12-09 2003-09-23 Koninklijke Philips Electronics N.V. Method and apparatus for synthesizing communication support based on communication types of application
RU2369033C2 (en) * 2003-09-10 2009-09-27 Квэлкомм Инкорпорейтед High-speed data transmission interface
US7739351B2 (en) * 2004-03-23 2010-06-15 Salesforce.Com, Inc. Synchronous interface to asynchronous processes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625637B1 (en) * 1999-12-09 2003-09-23 Koninklijke Philips Electronics N.V. Method and apparatus for synthesizing communication support based on communication types of application
RU2369033C2 (en) * 2003-09-10 2009-09-27 Квэлкомм Инкорпорейтед High-speed data transmission interface
US7739351B2 (en) * 2004-03-23 2010-06-15 Salesforce.Com, Inc. Synchronous interface to asynchronous processes

Similar Documents

Publication Publication Date Title
RU2546561C2 (en) Converting message-initiated interruption into input/output adapter-generated event notification
US9313139B2 (en) Physical port sharing in a link aggregation group
RU2547705C2 (en) Translation of input/output addresses to memory addresses
RU2568241C2 (en) Transformation of instruction discrete identifiers into continuous instruction identifiers
US9565095B2 (en) Take-over of network frame handling in a computing environment
RU2577470C2 (en) Interruption warning means
RU2565496C2 (en) Instruction to load data up to specified memory boundary indicated by said instruction
RU2568920C2 (en) Method of executing machine instruction, computer system and machine-readable medium facilitating calculation of distance from position in main memory to main memory block boundary
RU2526287C2 (en) Controlling rate of processing adapter interruption requests
RU2523194C2 (en) Measuring tool for adapter functions
RU2522314C1 (en) Data unit storage/storage instructions for communication with adapters
RU2542953C2 (en) Means for key setting without switching to passive state
KR101522489B1 (en) Managing operator message buffers in a coupling facility
RU2565495C2 (en) Application of warning interruption means by programme
CN113454590A (en) Directed interrupt virtualization
KR101572341B1 (en) Operator message commands for testing a coupling facility
CN113454589A (en) Directed interrupts for multi-level virtualization
KR101572342B1 (en) Executing a start operator message command
RU2563454C2 (en) Granting of access by one programme to another programme to warning tracking means
KR101547751B1 (en) Processing operator message commands
KR101507665B1 (en) Facilitating communication between isolated memory spaces of a communication environment
RU2574815C2 (en) Method of providing communication in communication environment, computer system and nonvolatile computer-readable data medium