IP Library › Granted Patent US 12,737,140
Granted Patent B2
US 12,737,140 · App. 19/020,163 · Granted Sep 15, 2026

Out-of-order read-return equalization

Inventors: Marianne Michel Faltas (Ottawa, CA); Peter Andreas Meyer (Almonte, CA); Mark Stephen Wight (Ottawa, CA)
Assignee: CIENA CORPORATION
G06F3/0659G06F3/061G06F3/0673
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,737,140
App. No.
19/020,163
Granted
Sep 15, 2026
Kind
B2
Abstract

Aspects of the subject disclosure may include, for example, generating a group of ordered identification tags that are appended to a group of pending read-request operations generated by a leader process and requesting a return of read data from a group of follower processes. A group of read-return operations including the group of ordered identification tags is intercepted and includes, in no particular order, read data obtained from the group of follower processes responsive to the group of pending read-request operations. The group of read-return operations is arranged according to the group of ordered identification tags to obtain a group of ordered, read-return operations including ordered read data obtained from the group of follower processes and provided to the leader process. Other embodiments are disclosed.

Claims (55)

1 . A method of managing read returns, comprising:

generating, by a processing system including a processor, a plurality of reference tags, the plurality of reference tags appended to a plurality of pending read-request operations generated according to an ordered arrangement by a leader process and requesting a return of read data from a plurality of follower processes;

intercepting, by the processing system, a plurality of read-return operations comprising the plurality of reference tags, wherein the plurality of read-return operations further comprises returned read data obtained in no particular order from the plurality of follower processes responsive to the plurality of pending read-request operations;

arranging, by the processing system, the returned read data obtained in no particular order via the plurality of read-return operations according to the plurality of reference tags to obtain ordered returned read data according to the ordered arrangement; and

providing, by the processing system, the ordered returned read data to the leader process,

wherein the arranging comprises:

determining that (i) a pop stage buffer is empty or being popped, (ii) a pending read-request operation remains pending according to a post queue, and (iii) a next ordered portion of the returned read data corresponding to an oldest pending read-request operation is present in a push queue;

responsive to determining (i)-(iii), popping user information associated with the oldest pending read-request operation from the post queue and popping the next ordered portion of the returned read data from the push queue;

assembling read-return information comprising the user information and the next ordered portion of the returned read data into the pop stage buffer; and

asserting an active indicator indicating availability of the read-return information in the pop stage buffer for output to the leader process.

2 . The method of claim 1 , further comprising:

storing, by the processing system, a plurality of user information in the post queue to obtain a stored plurality of user information, wherein the plurality of user information corresponds to the plurality of pending read-request operations.

3 . The method of claim 2 , wherein each reference tag of the plurality of reference tags corresponds to a respective write location value configured to reference a respective register of the post queue.

4 . The method of claim 3 , wherein the arranging the returned read data obtained in no particular order further comprises:

pushing the returned read data obtained from the plurality of follower processes onto the push queue comprising a plurality of push queue registers addressable via push queue indexes, wherein the returned read data is pushed into the push queue registers via the push queue indexes according to the reference tags to obtain ordered, returned read data.

5 . The method of claim 4 , wherein the post queue comprises a first-in-first-out (FIFO) queue.

6 . The method of claim 4 , wherein the post queue comprises a predetermined post queue depth corresponding to a number of available push queue registers.

7 . The method of claim 6 , wherein a push queue depth of the push queue equates to the predetermined post queue depth.

8 . The method of claim 3 , further comprising:

comparing, by the processing system, the respective write location value to a post queue depth to obtain a comparison result;

determining, by the processing system, a post-queue-full status based on the comparison result; and

inhibiting, by the processing system, issuance of a read-request operation of the plurality of pending read-request operations to the plurality of follower processes responsive to the post-queue-full status.

9 . The method of claim 2 , wherein the plurality of read-return operations is configured according to a first protocol.

10 . The method of claim 9 , wherein the plurality of user information corresponds to one of the first protocol, a second protocol, or a combination thereof.

11 . The method of claim 10 , further comprising:

performing, by the processing system, a protocol conversion between the first protocol and the second protocol.

12 . The method of claim 1 , wherein the plurality of pending read-request operations comprises pipelined read-request operations, wherein the plurality of pending read-request operations is asserted to the plurality of follower processes before intercepting a first read-return operation of the plurality of read-return operations.

13 . The method of claim 1 , wherein the plurality of pending read-request operations comprises a burst-read request operation configured to obtain read return data from more than one return operation of the plurality of read-return operations.

14 . The method of claim 13 , further comprising:

storing, by the processing system, a plurality of user information in the post queue to obtain a stored plurality of user information corresponding to the plurality of pending read-request operations; and

storing, by the processing system, ordered read data of the plurality of read-return operations in the push queue, wherein a queue size of the push queue is larger than a queue size of the post queue.

15 . A read-return management system, comprising:

a post process module configured to generate a plurality of reference tags, the plurality of reference tags appended to a plurality of pending read-request operations generated by a leader process, requesting read data from a plurality of follower processes;

a push process module configured to:

intercept a plurality of read-return operations comprising, in no particular order, a plurality of returned read data segments obtained from the plurality of follower processes responsive to the plurality of pending read-request operations, wherein the plurality of returned read data segments comprise the plurality of reference tags corresponding to the plurality of pending read data operations; and

arrange the plurality of returned read data segments according to the plurality of reference tags to obtain a plurality of ordered, returned read data segments; and

a pop process module in communication with the post process module and the push process module and configured to provide the plurality of ordered, returned read data segments to the leader process responsive to information obtained from the post process module and information obtained from the push process module,

wherein the push process module is configured to obtain the plurality of ordered, returned read data segments by:

determining that (i) a pop stage buffer is empty or being popped, (ii) a pending read-request operation remains pending according to a post queue, and (iii) a next ordered portion of the returned read data corresponding to an oldest pending read-request operation is present in a push queue;

responsive to determining (i)-(iii), popping user information associated with the oldest pending read-request operation from the post queue and popping the next ordered portion of the returned read data from the push queue;

assembling read-return information comprising the user information and the next ordered portion of the returned read data into the pop stage buffer; and

asserting an active indicator indicating availability of the read-return information in the pop stage buffer for output to the leader process.

16 . The read-return management system of claim 15 , wherein the post process module comprises the post queue, the post queue comprising a plurality of post queue storage locations configured to store a plurality of user information corresponding to the plurality of pending read-request operations, and wherein the plurality of reference tags comprises a plurality of unique reference tag values configured to reference the plurality of post queue storage locations.

17 . The read-return management system of claim 16 , wherein the plurality of unique reference tag values are based on write location values, and wherein the push process module comprises the push queue, the push queue comprising a plurality of indexed push queue storage locations configured to store a plurality of read-return data at index locations of the plurality of indexed push queue storage locations that correspond to the plurality of reference tags.

18 . The read-return management system of claim 17 , wherein the information obtained from the post process module comprises user information of the plurality of user information.

19 . The read-return management system of claim 17 , wherein the information obtained from the push process module comprises the plurality of ordered, returned read data segments.

20 . A read-return management system, comprising:

a post queue comprising a plurality of post queue storage locations accessible via a post write location indicator, wherein the post queue, responsive to a posted read command of a plurality of posted read commands issued by a leader process, is configured to obtain a post reference value corresponding to an ordering of the plurality of posted read commands, and to provide the post reference value to the leader process, permitting an appending of the post reference value to the posted read command to obtain an order-referenced posted read command;

a push queue comprising a plurality of push queue storage locations accessible via a push write location indicator, wherein the push queue, responsive to interception of an order-referenced read-return, stores the order-referenced read-return at a push queue storage location corresponding to a push reference value of the push write location indicator, wherein the push reference value further corresponds to the post reference value; and

a pop process module in communication with the post queue and the push queue, wherein the pop process module is configured to detect a presence of ordered, read-return data within the push queue, ordered according to the ordering of posted read commands of the plurality of posted read commands issued by a leader process, and to provide the ordered, read-return data to the leader process,

wherein the pop process module is configured to provide the ordered, read-return data by:

determining that (i) a pop stage buffer is empty or being popped, (ii) a pending read-request operation remains pending according to the post queue, and (iii) a next ordered portion of the returned read data corresponding to an oldest pending read-request operation is present in the push queue;

responsive to determining (i)-(iii), popping user information associated with the oldest pending read-request operation from the post queue and popping the next ordered portion of the returned read data from the push queue;

assembling read-return information comprising the user information and the next ordered portion of the returned read data into the pop stage buffer; and

asserting an active indicator indicating availability of the read-return information in the pop stage buffer for output to the leader process.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2025
From: FALTAS, MARIANNE MICHEL; MEYER, PETER ANDREAS; WIGHT, MARK STEPHEN
To: CIENA CORPORATION
Reel/Frame 070103/0481 →
Continuity (1)
Related Publication 20260202992A1 · Jul 16, 2026
References Cited (22)
US 5059975A · Nakatsuka · 1991 [cited by applicant]
US 9563579B2 · Cutter · 2017 [cited by examiner]
US 10819647B2 · Zemach · 2020 [cited by examiner]
US 11405327B2 · Zemach · 2022 [cited by examiner]
US 11550982B2 · Giaconi · 2023 [cited by examiner]
US 11568115B2 · Giaconi · 2023 [cited by examiner]
US 11586566B2 · Walker · 2023 [cited by examiner]
US 20010037445A1 · Mukherjee · 2001 [cited by examiner]
US 20050188064A1 · Schoinas · 2005 [cited by examiner]
US 20060112385A1 · Jeong · 2006 [cited by examiner]
US 20080282031A1 · Tanoue · 2008 [cited by examiner]
US 20110185102A1 · Deogharia · 2011 [cited by examiner]
US 20140240326A1 · Cutter · 2014 [cited by examiner]
US 20160011930A1 · Yeh · 2016 [cited by examiner]
US 20190173769A1 · Zemach · 2019 [cited by examiner]
US 20200050366A1 · Bavishi · 2020 [cited by examiner]
US 20210029054A1 · Zemach · 2021 [cited by examiner]
US 20220101939A1 · Ohyama et al. · 2022 [cited by applicant]
US 20230120184A1 · Kachare · 2023 [cited by examiner]
US 20240142954A1 · Minamida et al. · 2024 [cited by applicant]
US 20240171520A1 · Friedman · 2024 [cited by examiner]
“What does the “posted” mean in posted PCIE transaction?”, https://electronics.stackexchange.com/questions/15129/what-does-the-posted-mean-in-posted-pcie-transaction, Jun. 10, 2011, 3 pgs. [cited by applicant]