IP Library Granted Patent US 12,332,783
Granted Patent B2
US 12,332,783 · App. 17/962,829 · Granted Jun 17, 2025

Input/output (I/O) store protocol for pipelining coherent operations

Inventors: Ekaterina M. Ambroladze (Somers, NY); Matthias Klein (Poughkeepsie, NY); Sascha Junghans (Ammerbuch, DE); Kevin Lopes (Wallkill, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F12/0802G06F13/1668G06F2212/621
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,332,783
App. No.
17/962,829
Granted
Jun 17, 2025
Kind
B2
Abstract

A data processing system includes a system fabric coupling a coherence manager and an input/output (I/O) requestor. The I/O requestor issues a first snoop request of a first I/O store operation and a subsequent second snoop request of a second I/O store operation. Each of the first and second snoop requests specifies an update to a respective storage location identified by a coherent memory address. The I/O requestor receives respective ownership coherence responses for each of the first and second I/O store operations. The respective first and second ownership coherence responses indicate the coherence manager has concurrent coherence ownership of the memory address for both the first and second I/O store operations. In response to receipt of each of the ownership coherence responses, the I/O requestor issues respective first and second execute coherence responses to command the coherence manager to initiate updates to the respective storage locations.

Claims (67)

1. A method of data processing in a data processing system including a system fabric to which a coherence manager and an input/output (I/O) requestor are coupled, the method comprising:

the I/O requestor issuing on the system fabric a first snoop request of a first I/O store operation and a subsequent second snoop request of a second I/O store operation, wherein the first and second I/O store operations are within a same ordered I/O store stream, and wherein each of the first and second snoop requests specifies an update to a respective storage location identified by a coherent memory address;

the I/O requestor receiving, via the system fabric from the coherence manager, respective ownership coherence responses for each of the first and second I/O store operations, wherein the respective first and second ownership coherence responses indicate the coherence manager has concurrent coherence ownership of the memory address for both the first and second I/O store operations;

the I/O requestor sending, on the system fabric, store data of the first and second I/O store operations; and

based upon receipt of each of the ownership coherence responses, the I/O requestor issuing, via the system fabric, respective first and second execute coherence responses to command the coherence manager to initiate updates to the respective storage locations with the store data wherein:

the I/O requestor issues the first execute coherence response after sending the store data of the first I/O store operation on the system fabric;

the I/O requestor issues the second execute coherence response after sending the store data of the second I/O store operation on the system fabric;

the I/O requestor issuing a third snoop request of a third I/O operation in the ordered I/O store stream to the coherence manager; and

based on receiving a coherence response for the third I/O operation, the I/O requestor canceling a subsequent fourth I/O store operation in the ordered I/O store stream,

wherein the canceling includes:

based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address of the third snoop request a first number of times but not a greater second number of times, the I/O requestor canceling the fourth I/O store operation but not the third I/O operation; and

based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address at least the second number of times, the I/O requestor canceling both the third I/O store operation and the fourth I/O store operation.

2. The method of claim 1 , wherein the first snoop request and the second snoop request both specify a common memory address.

3. The method of claim 1 , wherein the I/O requestor issues the second execute coherence response based on receipt of both of the first and second ownership coherence responses.

4. The method of claim 1 , wherein the I/O requestor issuing the second snoop request comprises the I/O requestor issuing the second snoop request prior to receipt by the I/O requestor of the first ownership coherence response for the first I/O store operation.

5. The method of claim 1 , further comprising:

the I/O requestor sending store data of the second I/O store operation to the coherence manager via the system fabric based on receipt of an initial coherence response indicating acceptance of the second snoop request by the coherence manager and prior to receipt of the second ownership coherence response; and

the I/O requestor thereafter receiving, from the coherence manager via the system fabric, a release coherence response signaling completion of the first I/O store operation.

6. The method of claim 1 , wherein:

the I/O requestor sends the store data of the first I/O store operation on the system fabric prior to receipt by the I/O requestor of the ownership coherence response for the first I/O store operation;

the I/O requestor sends the store data of the first I/O store operation on the system fabric prior to receipt by the I/O requestor of the ownership coherence response for the second I/O store operation.

7. A data processing system, comprising:

a system fabric;

a coherence manager coupled to the system fabric; and

an input/output (I/O) requestor coupled to the system fabric, wherein the I/O requestor is configured to perform:

issuing on the system fabric a first snoop request of a first I/O store operation and a subsequent second snoop request of a second I/O store operation, wherein the first and second I/O store operations are within a same ordered I/O store stream, and wherein each of the first and second snoop requests specifies an update to a respective storage location identified by a coherent memory address;

receiving, via the system fabric from the coherence manager, respective ownership coherence responses for each of the first and second I/O store operations, wherein the respective first and second ownership coherence responses indicate the coherence manager has concurrent coherence ownership of the memory address for both the first and second I/O store operations;

issuing, on the system fabric, store data of the first and second I/O store operations;

based on receipt of each of the ownership coherence responses, issuing, via the system fabric, respective first and second execute coherence responses to command the coherence manager to initiate updates to the respective storage locations with the store data, wherein:

the I/O requestor issues the first execute coherence response after sending the store data of the first I/O store operation on the system fabric; and

the I/O requestor issues the second execute coherence response after sending the store data of the second I/O store operation on the system fabric

issuing a third snoop request of a third I/O operation in the ordered I/O store stream to the coherence manager; and

based on receiving a coherence response indicating retry of the third I/O operation, canceling a subsequent fourth I/O store operation in the ordered I/O store stream,

wherein the canceling includes:

based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address of the third snoop request a first number of times but not a greater second number of times, the I/O requestor canceling the fourth I/O store operation but not the third I/O operation; and

based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address at least the second number of times, the I/O requestor canceling both the third I/O store operation and the fourth I/O store operation.

8. The data processing system of claim 7 , wherein the first snoop request and the second snoop request both specify a common memory address.

9. The data processing system of claim 7 , wherein the I/O requestor is configured to issue the second execute coherence response based on receipt of both of the first and second ownership coherence responses.

10. The data processing system of claim 7 , wherein the I/O requestor is configured to issue the second snoop request prior to receipt by the I/O requestor of the first ownership coherence response for the first I/O store operation.

11. The data processing system of claim 7 , wherein the I/O requestor is further configured to perform:

sending store data of the second I/O store operation to the coherence manager via the system fabric based on receipt of an initial coherence response indicating acceptance of the second snoop request by the coherence manager and prior to receipt of the second ownership coherence response; and

thereafter receiving, from the coherence manager via the system fabric, a release coherence response signaling completion of the first I/O store operation.

12. The data processing system of claim 7 , wherein the I/O requestor is configured to:

send the store date of the first I/O store operation on the system fabric prior to receipt by the prior I/O requestor of the ownership coherence response for the first I/O store operation;

send the store date of the second I/O store operation on the system fabric prior to receipt by the prior I/O requestor of the ownership coherence response for the second I/O store operation.

13. A program product, comprising:

a storage device; and

program code stored within the storage device, wherein the program code, when executed by a I/O requestor, causes the I/O requestor to perform:

issuing on the system fabric a first snoop request of a first I/O store operation and a subsequent second snoop request of a second I/O store operation, wherein the first and second I/O store operations are within a same ordered I/O store stream, and wherein each of the first and second snoop requests specifies an update to a respective storage location identified by a coherent memory address;

receiving, via the system fabric from the coherence manager, respective ownership coherence responses for each of the first and second I/O store operations, wherein the respective first and second ownership coherence responses indicate the coherence manager has concurrent coherence ownership of the memory address for both the first and second I/O store operations;

issuing, on the system fabric, store data of the first and second I/O store operations;

based on receipt of each of the ownership coherence responses, issuing, via the system fabric, respective first and second execute coherence responses to command the coherence manager to initiate updates to the respective storage locations with the store data wherein:

the I/O requestor issues the first execute coherence response after sending the store data of the first I/O store operation on the system fabric; and

the I/O requestor issues the second execute coherence response after sending the store data of the second I/O store operation on the system fabric;

issuing a third snoop request of a third I/O operation in the ordered I/O store stream to the coherence manager; and

based on receiving a coherence response indicating retry of the third I/O operation, canceling a subsequent fourth I/O store operation in the ordered I/O store stream,

based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address of the third snoop request a first number of times but not a greater second number of times, the I/O requestor canceling the fourth I/O store operation but not the third I/O operation; and

based on the coherence response indicating failure of the coherence manager to obtain coherence ownership of a target address at least the second number of times, the I/O requestor canceling both the third I/O store operation and fourth I/O store operation.

14. The program product of claim 13 , wherein the first snoop request and the second snoop request both specify a common memory address.

15. The program product of claim 13 , wherein the program code causes the I/O requestor to issue the second execute coherence response based on receipt both of the first and second ownership coherence responses.

16. The program product of claim 13 , wherein the program code causes the I/O requestor to issue the second snoop request prior to receipt by the I/O requestor of the first ownership coherence response for the first I/O store operation.

17. The program product of claim 13 , wherein the program code causes the I/O requestor to perform:

sending store data of the second I/O store operation to the coherence manager via the system fabric based on receipt of an initial coherence response indicating acceptance of the second snoop request by the coherence manager and prior to receipt of the second ownership coherence response; and

thereafter receiving, from the coherence manager via the system fabric, a release coherence response signaling completion of the first I/O store operation.

18. The program product of claim 13 , wherein the program code, when executed causes the I/O requestor to:

send the store date of the first I/O store operation on the system fabric prior to receipt by the prior I/O requestor of the ownership coherence response for the first I/O store operation;

send the store date of the second I/O store operation on the system fabric prior to receipt by the prior I/O requestor of the ownership coherence response for the second I/O store operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2022
From: AMBROLADZE, EKATERINA M.; KLEIN, MATTHIAS; JUNGHANS, SASCHA; LOPES, KEVIN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 061368/0076 →
Continuity (1)
Related Publication 20240119000A1 · Apr 11, 2024
References Cited (29)
US 5887134A · Ebrahim · 1999 [cited by applicant]
US 10042554B2 · Ambroladze · 2018 [cited by applicant]
US 10528253B2 · Ambroladze · 2020 [cited by applicant]
US 10747688B2 · Jen · 2020 [cited by applicant]
US 10977197B2 · Tan · 2021 [cited by applicant]
US 11307873B2 · Halpern · 2022 [cited by examiner]
US 20030093657A1 · Mayfield · 2003 [cited by examiner]
US 20060129726A1 · Barrett · 2006 [cited by examiner]
US 20070022253A1 · Cypher · 2007 [cited by applicant]
US 20090276580A1 · Moyer · 2009 [cited by examiner]
US 20110320743A1 · Hagspiel · 2011 [cited by examiner]
US 20140310487A1 · Goodman · 2014 [cited by examiner]
US 20150012713A1 · Flanders · 2015 [cited by examiner]
US 20170351516A1 · Mekkat · 2017 [cited by examiner]
US 20180374522A1 · Ambroladze · 2018 [cited by applicant]
US 20220083472A1 · Vash · 2022 [cited by examiner]
US 20240119000A1 · Ambroladze · 2024 [cited by examiner]
WO 20050410472W · 2005 [cited by applicant]
WO 20191330841W · 2019 [cited by applicant]
U.S. Appl. No. 95/693,622, filed May 19, 2016, Sanzone Robert A. [cited by applicant]
U.S. Appl. No. 98/581,902, filed Jul. 28, 2016, Ambroladze Ekaterina M. [cited by applicant]
“Announcing IBM z16: Real-time AI for Transaction Processing at Scale and Industry's First Quantum-Safe System,” https://newsroom.ibm.com/2022-04-05-Announcing-IBM-z16-Real-time-AI-for-Transaction-Processing-at-Scale-an… [cited by applicant]
“Graph Aware Caching Policy for Distributed Graph Stores,” IPCOM000240727D, Feb. 23, 2015, 6 pages. [cited by applicant]
“Item Recommendations for Cache and Synchronization of Application Stores,” IPCOM000257131D, Jan. 15, 2019, 32 pages. [cited by applicant]
“Methodology for Optimizing Wan Caching Associated With Cloud Object Store Backend,” IPCOM000268803D, Mar. 1, 2022, 12 pages. [cited by applicant]
“Parallel Store Buffer With Chained Stores Capability,” IPCOM000184163D, Jun. 12, 2009, 5 pages. [cited by applicant]
Cortes, T. et al., “Avoiding The Cache-Coherence Problem in a Parallel/Distributed File System,” Lecture Notes in Computer Science, Jan. 1997, 18 pages. [cited by applicant]
Vankov, I. et al., “Do Arbitrary Input-Output Mappings in Parallel Distributed Processing Networks Require Localist Coding?” Language, Cognition and Neuroscience, Dec. 2, 2016, 9 pages. [cited by applicant]
Transmittal letter for Information Disclosure Statement. [cited by applicant]