IP Library Granted Patent US 10,346,049
Granted Patent B2
US 10,346,049 · App. 15/143,215 · Granted Jul 9, 2019

Distributed contiguous reads in a network on a chip architecture

Inventors: Andrew White (Austin, TX); Douglas B. Meyer (San Diego, CA)
Assignee: Friday Harbor LLC
G06F3/061G06F3/067G06F3/0629
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 10,346,049
App. No.
15/143,215
Granted
Jul 9, 2019
Kind
B2
Abstract

Systems and techniques for network on a chip based computer architectures and distributing data without shared pointers therein are described. A described system includes computing resources; and a memory resource configured to maintain a dedicated memory region of the memory resource for distributed read operations requested by the computing resources. The computing resources can generate a packet to fetch data from the dedicated memory region without using memory addresses of respective data elements. The memory resource can receive the first packet, determine whether the first packet indicates the distributed read operation, and determine that the dedicated memory region is non-empty. Further, the memory resource can fetch one or more data elements from the dedicated memory region based on the first packet indicating the distributed read operation and the dedicated memory region being non-empty, and send a packet that includes the one or more fetched data elements.

Claims (64)

1. A method comprising:

maintaining, at a memory resource of a computer system, a dedicated memory region of the memory resource for distributed read operations requested by a plurality of computing resources of the computer system;

generating, from a first computing resource of the plurality of computing resources, a first packet to fetch data from the memory resource, wherein the first packet lacks memory addresses of respective data elements stored within the dedicated memory region of the memory resource, wherein the first packet comprises (i) a destination address that comprises an identifier to route the first packet to the memory resource and (ii) an opcode that specifies an operation to be performed by the memory resource;

sending the first packet from the first computing resource to the memory resource;

receiving, at the memory resource, the first packet;

determining, at the memory resource, whether the first packet indicates a distributed read operation, the determining comprising:

extracting the opcode;

determining whether the opcode indicates the distributed read operation or a nominal read operation;

responsive to determining the first packet indicates the nominal read operation, determining, at the memory resource, whether a memory address portion of the destination address is associated with distributed read operations;

responsive to determining the memory address portion of the destination address is not associated with distributed read operations, performing, at the memory resource, the nominal operation;

responsive to determining the first packet indicates the distributed read operation, determining, at the memory resource, that the dedicated memory region is non-empty;

fetching one or more data elements from the dedicated memory region based on the first packet indicating the distributed read operation and the dedicated memory region being non-empty; and

sending, by the memory resource, a second packet that includes the one or more data elements.

2. The method of claim 1 , wherein the memory resource comprises a first pointer, a second pointer, and a current read pointer, wherein the first pointer and the second pointer define an area of a memory structure that corresponds to the dedicated memory region, and wherein fetching the one or more data elements comprises:

fetching the one or more data elements based on the first pointer, the second pointer, and the current read pointer; and

advancing the current read pointer such that the one or more data elements will not be fetched again by a subsequent distributed read operation on the dedicated memory region.

3. The method of claim 2 , wherein the memory resource comprises a third pointer, and wherein determining whether the dedicated memory region is non-empty comprises making a comparison based on the current read pointer and the third pointer.

4. The method of claim 2 , comprising:

modifying the current read pointer based on a determination of whether to allow data elements in the dedicated memory region to be read again.

5. The method of claim 1 , wherein fetching the one or more data elements comprises:

fetching the one or more data elements based on a counter associated with the dedicated memory region; and

modifying the counter such that the one or more data elements will not be fetched again by a subsequent distributed read operation on the dedicated memory region.

6. The method of claim 1 , wherein the memory resource comprises a plurality of dedicated memory regions, and wherein the destination address comprises information to specify a specific one of the plurality of dedicated memory regions.

7. The method of claim 1 , wherein the first packet comprises a read size field and wherein fetching the one or more data elements is based on a value of the read size field.

8. The method of claim 1 , comprising:

causing the one or more data elements to not be fetched again by a subsequent distributed read operation on the dedicated memory region;

receiving, at the memory resource, a third packet that indicates a distributed read operation;

determining, at the memory resource, that the dedicated memory region is empty; and

sending an empty notification packet to a destination computing resource associated with the third packet based on the dedicated memory region being empty.

9. The method of claim 1 , comprising:

causing the one or more data elements to not be fetched again by a subsequent distributed read operation on the dedicated memory region;

receiving, at the memory resource, a third packet that indicates a distributed read operation;

determining, at the memory resource, that the dedicated memory region is empty; and

holding the third packet at the memory resource while the dedicated memory region is empty; and

servicing the third packet when the dedicated memory region becomes non-empty.

10. A system comprising:

computing resources; and

a memory resource configured to maintain a dedicated memory region of the memory resource for distributed read operations requested by the computing resources,

wherein the computing resources are configured to (i) generate a first packet to fetch data from the memory resource, wherein the first packet lacks memory addresses of respective data elements stored within the dedicated memory region of the memory resource, and (ii) send the first packet to the memory resource,

wherein the first packet comprises (i) a destination address that comprises an identifier to route the first packet to the memory resource and (ii) an opcode that specifies an operation to be performed by the memory resource, and

wherein the memory resource is configured to (i) receive the first packet, (ii) extract the opcode, (iii) determine whether the opcode indicates a distributed read operation or a nominal read operation, (iv) responsive to determining the opcode indicates a nominal read operation determine whether a memory address portion of the destination address is associated with distributed read operations, (v) responsive to determining the memory address portion of the destination address is not associated with distributed read operations, perform the nominal operation, (vi) responsive to determining the opcode indicates the distributed read operation, determine that the dedicated memory region is non-empty, (vii) fetch one or more data elements from the dedicated memory region based on the first packet indicating the distributed read operation and the dedicated memory region being non-empty, and (viii) send a second packet that includes the one or more data elements.

11. The system of claim 10 , wherein the first packet comprises a read size field and wherein the memory resource is configured to fetch the one or more data elements based on a value of the read size field.

12. The system of claim 10 , wherein the memory resource comprises a first pointer, a second pointer, and a current read pointer, wherein the first pointer and the second pointer define an area of a memory structure that corresponds to the dedicated memory region, and wherein the memory resource is configured to (i) fetch the one or more data elements based on the first pointer, the second pointer, and the current read pointer, and (ii) advance the current read pointer such that the one or more data elements will not be fetched against by a subsequent distributed read operation on the dedicated memory region.

13. The system of claim 12 , wherein the memory resource comprises a third pointer, and wherein the memory resource is configured to determine whether the dedicated memory region is non-empty by making a comparison based on the current read pointer and the third pointer.

14. The system of claim 12 , wherein the memory resource is configured to modify the current read pointer based on a determination of whether to allow data elements in the dedicated memory region to be read again.

15. The system of claim 10 , wherein the memory resource is configured to:

fetch the one or more data elements based on a counter associated with the dedicated memory region, and

modify the counter such that the one or more data elements will not be fetched against by a subsequent distributed read operation on the dedicated memory region.

16. The system of claim 10 , wherein the memory resource comprises a plurality of dedicated memory regions, and wherein the destination address comprises information to specify a specific one of the plurality of dedicated memory regions.

17. The system of claim 10 , wherein the second packet comprises two of more second packets, and where the one or more data elements are distributed among the two or more second packets.

18. The system of claim 10 , wherein the memory resource comprises a distributed read queue to handle packets from the computing resources for the dedicated memory region.

19. The system of claim 10 , wherein the memory resource is configured to:

cause the one or more data elements to not be fetched again by a subsequent distributed read operation on the dedicated memory region,

receive a third packet that indicates a distributed read operation,

determine that the dedicated memory region is empty, and

send an empty notification packet to a destination computing resource associated with the third packet based on the dedicated memory region being empty.

20. The system of claim 10 , wherein the memory resource is configured to:

cause the one or more data elements to not be fetched again by a subsequent distributed read operation on the dedicated memory region;

receive a third packet that indicates a distributed read operation;

determine that the dedicated memory region is empty; and

hold the third packet at the memory resource white the dedicated memory region is empty; and

service the third packet when the dedicated memory region becomes non-empty;

computing scaled frequency locations for each frame of the sequence of frames by dividing the frequency locations of the peaks for a frame by the pitch template for the frame; and

computing the scale factor using the scaled frequency locations.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2018
From: KNUEDGE, INC.
To: FRIDAY HARBOR LLC
Reel/Frame 047156/0582 →
SECURITY INTEREST Recorded Oct 27, 2017
From: KNUEDGE INCORPORATED
To: XL INNOVATE FUND, LP
Reel/Frame 044637/0011 →
SECURITY INTEREST Recorded Nov 11, 2016
From: KNUEDGE INCORPORATED
To: XL INNOVATE FUND, L.P.
Reel/Frame 040601/0917 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2016
From: WHITE, ANDREW; MEYER, DOUGLAS B.
To: KNUEDGE INCORPORATED
Reel/Frame 038769/0306 →
Continuity (1)
Related Publication 20170315726A1 · Nov 2, 2017