IP Library Granted Patent US 12,645,839
Granted Patent B2
US 12,645,839 · App. 17/945,750 · Granted Jun 2, 2026

Offset data integrity checks for latency reduction

Inventors: Shaofeng An (Markham, CA); Shiqi Sun (Newmarket, CA); Michael James Tresidder (Austin, TX); YanFeng Wang (Richmond hill, CA); Peter Malcolm Barnes (Mountain view, CA)
Assignees: Advanced Micro Devices, Inc.; ATI Technologies ULC
G06F21/64
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,645,839
App. No.
17/945,750
Granted
Jun 2, 2026
Kind
B2
Abstract

Data integrity checks for reducing communication latency is described. A transmitting endpoint transmits data to a receiving endpoint by generating an integrity tag for a first subset of data blocks and a second integrity tag for a second subset of data blocks. In implementations, the first and second integrity tags overlap at least one data block and are offset based on computational complexities of generating the integrity tags. A receiving endpoint generates comparison tags for each of the integrity tags and uses the comparison tags to validate an authenticity of received data. In response to validating the first and second integrity tags, data blocks covered by both the first and second integrity tags are released for use. Additional integrity tags are generated and validated for subsequent subsets of data blocks during data communication, thus reducing latency by offsetting times at which comparison tags are generated and validated.

Claims (41)

1 . A method comprising:

receiving a request for data from a receiving endpoint; and

transmitting the data to the receiving endpoint as a plurality of data blocks by:

generating a first integrity tag for a first subset of the plurality of data blocks;

generating a second integrity tag for a second subset of the plurality of data blocks, the second subset comprising at least one data block excluded from the first subset and at least one data block included in the first subset, wherein a number of data blocks included in both the first subset and the second subset is based on a data storage format of the data; and

sending the plurality of data blocks, the first integrity tag, and the second integrity tag to the receiving endpoint.

2 . The method of claim 1 , wherein the number of data blocks included in both the first subset and the second subset is further based on a computational complexity of generating the first integrity tag.

3 . The method of claim 1 , wherein the number of data blocks included in both the first subset and the second subset is further based on a computational complexity of generating the second integrity tag.

4 . The method of claim 1 , wherein sending the plurality of data blocks to the receiving endpoint is performed over a plurality of clock cycles and comprises sending one of the plurality of data blocks to the receiving endpoint during each of the plurality of clock cycles.

5 . The method of claim 1 , wherein sending the first integrity tag to the receiving endpoint is performed responsive to generating the first integrity tag.

6 . The method of claim 1 , wherein sending the second integrity tag to the receiving endpoint is performed responsive to generating the second integrity tag and is performed during a different clock cycle than sending the first integrity tag to the receiving endpoint.

7 . The method of claim 1 , wherein generating the first integrity tag is performed using a first data authentication calculation and generating the second integrity tag is performed using a second data authentication calculation that is different than the first data authentication calculation.

8 . The method of claim 1 , further comprising causing the receiving endpoint to generate a first comparison tag for the first subset of the plurality of data blocks upon receiving the first subset of the plurality of data blocks and compare the first integrity tag against the first comparison tag.

9 . The method of claim 8 , wherein the first integrity tag and the first comparison tag are computed using a common data authentication calculation.

10 . The method of claim 1 , further comprising causing the receiving endpoint to generate a second comparison tag for the second subset of the plurality of data blocks upon receiving the second subset of the plurality of data blocks and compare the second integrity tag against the second comparison tag.

11 . The method of claim 10 , wherein the second integrity tag and the second comparison tag are computed using a common data authentication calculation.

12 . The method of claim 1 , further comprising causing the receiving endpoint to release the at least one data block included in both the first subset and the second subset in response to validating both the first integrity tag and the second integrity tag; and maintain the at least one data block included in the second subset and excluded from the first subset in a data buffer in response to validating both the first integrity tag and the second integrity tag.

13 . A method comprising:

receiving a plurality of data blocks from a transmitting endpoint;

receiving a first integrity tag for a first subset of the plurality of data blocks, the first subset of the plurality of data blocks comprising at least one data block excluded from a second subset of the plurality of data blocks;

generating a first comparison tag for the first subset of the plurality of data blocks and validating an authenticity of the first subset of the plurality of data blocks by comparing the first integrity tag with the first comparison tag;

receiving a second integrity tag for the second subset of the plurality of data blocks, the second subset of the plurality of data blocks comprising at least one data block included in the first subset of the plurality of data blocks and at least one data block excluded from the first subset of the plurality of data blocks, wherein a number of data blocks included in both the first subset and the second subset is based on a data storage format of the plurality of data blocks;

generating a second comparison tag for the second subset of the plurality of data blocks and validating an authenticity of the second subset of the plurality of data blocks by comparing the second integrity tag with the second comparison tag; and

releasing the at least one data block included in the first subset and the second subset of the plurality of data blocks responsive to validating the authenticity of the first subset and the second subset of the plurality of data blocks.

14 . The method of claim 13 , wherein receiving the plurality of data blocks is performed over a plurality of clock cycles and comprises receiving one of the plurality of data blocks during each of the plurality of clock cycles.

15 . The method of claim 13 , wherein generating the first comparison tag is performed using a data authentication calculation used by the transmitting endpoint to generate the first integrity tag.

16 . The method of claim 13 , wherein generating the second comparison tag is performed using a data authentication calculation used by the transmitting endpoint to generate the second integrity tag.

17 . The method of claim 13 , wherein generating the first comparison tag is performed using a first data authentication calculation and generating the second comparison tag is performed using a second data authentication calculation that is different than the first data authentication calculation.

18 . The method of claim 13 , further comprising maintaining the at least one data block included in the second subset and excluded from the first subset in a data buffer in response to validating both the first integrity tag and the second integrity tag.

19 . A system comprising:

a transmitting endpoint implemented in hardware and configured to transmit data to a receiving endpoint implemented in hardware as a plurality of data blocks by:

generating a first integrity tag for a first subset of the plurality of data blocks, the first subset of the plurality of data blocks comprising at least one data block excluded from a second subset of the plurality of data blocks;

generating a second integrity tag for the second subset of the plurality of data blocks, the second subset comprising at least one data block included in the first subset and at least one data block excluded from the first subset, wherein a number of data blocks included in both the first subset and the second subset is based on a data storage format of the data; and

sending the plurality of data blocks, the first integrity tag, and the second integrity tag to the receiving endpoint; and

receiving endpoint configured to conditionally release the plurality of data blocks by:

generating a first comparison tag for the first subset of the plurality of data blocks and validating an authenticity of the first subset of the plurality of data blocks by comparing the first integrity tag with the first comparison tag;

generating a second comparison tag for the second subset of the plurality of data blocks and validating an authenticity of the second subset of the plurality of data blocks by comparing the second integrity tag with the second comparison tag; and

releasing the at least one data block included in the first subset and the second subset of the plurality of data blocks responsive to validating the authenticity of the first subset and the second subset of the plurality of data blocks.

20 . The system of claim 19 , wherein the transmitting endpoint is configured to generate the plurality of data blocks such that a number of data blocks included in the first subset and the second subset is further based on at least one of:

a computational complexity of generating the first integrity tag; or

a computational complexity of generating the second integrity tag.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2022
From: TRESIDDER, MICHAEL JAMES; BARNES, PETER MALCOLM
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 061122/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2022
From: AN, SHAOFENG; SUN, SHIQI; WANG, YANFENG
To: ATI TECHNOLOGIES ULC
Reel/Frame 061123/0001 →
Continuity (1)
Related Publication 20240095404A1 · Mar 21, 2024
References Cited (17)
US 7991750B1 · Xavier · 2011 [cited by examiner]
US 8761324B1 · Rosen · 2014 [cited by examiner]
US 11616597B1 · Kutz · 2023 [cited by examiner]
US 20070097817A1 · Ling · 2007 [cited by examiner]
US 20090019337A1 · Pi · 2009 [cited by examiner]
US 20150280741A1 · Bryant · 2015 [cited by examiner]
US 20180004443A1 · Carter · 2018 [cited by examiner]
US 20180129826A1 · Kim · 2018 [cited by examiner]
US 20190220721A1 · Chhabra et al. · 2019 [cited by applicant]
US 20200213331A1 · Li et al. · 2020 [cited by applicant]
US 20210350028A1 · Yu · 2021 [cited by applicant]
US 20240095404A1 · An et al. · 2024 [cited by applicant]
KR 1020210103455A · 2021 [cited by applicant]
KR 102389139B1 · 2022 [cited by applicant]
WO 2024059691A1 · 2024 [cited by applicant]
Harran, Martin, William Farrelly, and Kevin Curran. “A method for verifying integrity & authenticating digital media.” Applied computing and informatics 14.2 (2018): 145-158. (Year: 2018). [cited by examiner]
PCT/US2023/074162 , “International Seach Report and Written Opinion”, PCT Application No. PCT/US2023/074162, Jan. 5, 2024, 6 pages. [cited by applicant]