IP Library Granted Patent US 7,594,046
Granted Patent B2
US 7,594,046 · App. 10/552,778 · Granted Sep 22, 2009

Data processing in which concurrently executed processes communicate via a FIFO buffer

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 7,594,046
App. No.
10/552,778
Granted
Sep 22, 2009
Kind
B2
Abstract

A processing circuit executes a data producing process and a data consuming process. The data producing process produces a stream of data, the data consuming process consumes the stream of data concurrently with production of the stream. A first-in first-out buffer passes data from the stream between the data producing process and the data consuming process. The buffer comprises buffer memory, the buffer writes data-items from the stream in circular fashion into the buffer memory. A consuming process interface is arranged to process a command for making a data grain from the stream available to the data consuming process. The interface responds to the command by testing whether addresses of data within the grain to which access has to be gained wrap around in the circular FIFO buffer. The interface copies the grain from the FIFO buffer to the auxiliary memory region, on condition that the addresses wrap around, so that the wrap around is eliminated in the copied grain, The interface returns an indication to the consuming process to read the grain from the FIFO buffer when the addresses do not wrap around inside the grain, or an indication to read from the auxiliary memory region, when the addresses wrap around.

Claims (47)

1. A data processing apparatus, comprising:

a processing circuit arranged to execute a data producing process and a data consuming process, the data producing process producing a stream of data and the data consuming process consuming the stream of data concurrently with production of the stream;

processing memory accessible to the data consuming process;

a first-in first-out circular buffer unit for passing data from the stream between the data producing process and the data consuming process, the circular buffer unit comprising buffer memory and writing data-item from the stream in a circular fashion into the buffer memory; and

a consuming process application program interface (API) of the circular buffer unit, the consuming process API being arranged to:

access an auxiliary memory region accessible to the data consuming process,

process a command for making a data grain from the stream available to the data consuming process,

respond to the command by testing whether addresses of data within the grain to which access has to be gained wrap around in the buffer memory,

copy, in response to detection that the addresses wrap around, the entire grain from the buffer memory to the auxiliary memory region, so that the wrap around is eliminated in the copied grain, and

return a pointer to the consuming process indicating a location in the buffer memory from which to read the entire grain when the addresses do not wrap around inside the grain, or a pointer indicating a location of the auxiliary memory region from which to read the entire grain when the addresses wrap around.

2. A data processing apparatus according to claim 1 , wherein the consuming process is arranged to select an address of the auxiliary memory and a grain size as part of the command.

3. A data processing apparatus according to claim 1 , wherein the data producing process and the data consuming process are arranged to use a first and second grain size for sending data to and receiving data from circular buffer unit respectively, the first and second grain size differing from one another.

4. A data processing apparatus according to claim 1 , wherein the data producing process s arranged to use variable grain sizes for sending data.

5. A data processing apparatus according to claim 4 , wherein a first grain size and a size of the circular buffer unit are selected so that addresses of the data in the circular buffer unit always wrap around between successive grains of the first gain size.

6. a data processing apparatus according to claim 1 , further comprising:

a further processing memory accessible to the data producing process for producing the data stream; and

a producing process application program interface (API) of the circular buffer unit, arranged to:

receive a further auxiliary memory region selection for the data producing process,

process a further command for outputting an output data grain from the stream,

respond to the further command by testing whether addresses of data within the output grain will wrap around in the buffer memory,

return a pointer indicating a location in the buffer memory to which the producing process writes the entire grain when the addresses do not wrap around inside the grain, or a pointer indicating a location of the further auxiliary memory region to which the producing process writes the entire grain when the addresses wrap around, and

copy, in response to detection that the addresses wrap around, the entire grain from the further auxiliary memory region to the buffer memory so that the wrap around is created in the copied grain.

7. A data processing apparatus, comprising:

a processing circuit arranged to execute a data producing process and a data consuming process, the data producing process producing a stream of data and the data consuming process consuming the stream of data concurrently with production of the steam;

processing memory accessible to the data producing process;

a first-in first-out circular buffer unit for passing data the stream between the data producing process and the data consuming process, the circular buffer unit comprising buffer memory and writing data-items from the stream in a circular fashion into the buffer memory; and

a producing process application program interface (API) of the circular buffer unit, the producing process API being arranged to:

access an auxiliary memory region accessible to the data producing process,

process a command for making memory available to the data producing process for writing a produced grain, respond to the command by testing whether addresses of data within the grain for which memory has to be made available wrap around in the circular buffer memory, and

return a pointer to the producing process indicating a location in the buffer memory to which to write the entire grain when the addresses do not wrap around inside the grain, or a pointer indicating a location of auxiliary memory region to which to write the entire grain when the addresses wrap around.

8. A machine implemented method for implementation of a signal processing task comprising concurrently executing processes between which a data stream is communicated via a circular buffer memory, the method comprising:

providing an application program interface (API) that provides for selectable definition of a grain size and an auxiliary memory region, the API including a function to be called by a data consuming one of the processing to gain access to a grain of data stored in the buffer memory, wherein the function is arranged to:

test whether addresses of the grain to which access has to be gained wrap around in the buffer memory,

copy the entire grain from the buffer memory to the auxiliary memory region when the addresses wrap around in the grain, so that the wrap around is eliminated in the copied grain, and

return, as a result of the call, a pointer to the consuming one of the processing indicating a location in the buffer memory from which to read the entire grain when the addresses do no wrap around inside the grain, or a pointer indicating a location of the auxiliary memory region from which to read the entire grain when the addresses wrap around in the grain;

receiving a specification of the signal processing task;

identifying a call to said function in the specification of the signal processing task; and

implementing the call using the function from the API.

9. A machine implemented method according to claim 8 wherein the API hides a distribution of processes over processing elements from the specification of the processing task, the implementation of the function being selected according to the distribution.

10. A machine implemented method according to claim 9 the method further comprising:

generating integrated circuit manufacturing control information for implementing the machine implementation; and

manufacturing an integrated circuit under control of the integrated circuit manufacturing control information.

11. A computer readable medium comprising an application program interface (API) for accessing a circular FIFO buffer, the API providing for selection of a grain size for an application program that accesses data from the circular FIFO buffer and for definition of an auxiliary memory region for the application program, the API comprising a function to be called from the application program for gaining access to a region from the circular FIFO buffer, the function being arranged to:

test whether addresses of data within the grain to which access has to be gained wrap around in the circular FIFO buffer;

copy the entire grain from the FIFO buffer to an auxiliary memory region when the addresses wrap around inside the grain, so that the wrap around is eliminated in the copied grain; and

return, as a result of the call, a pointer indicating a location in the FIFO buffer from which to read the entire grain when the addresses do not wrap around inside the grain, or a pointer indicating a location of the auxiliary memory region from which to read the entire grain when the addresses wrap around inside the grain.

12. a computer readable medium containing a program of instructions for executing the method of claim 7 .

Assignments (11)
SECURITY AGREEMENT Recorded Jul 9, 2021
From: MAXLINEAR, INC.; MAXLINEAR COMMUNICATIONS, LLC; EXAR CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 056816/0089 →
RELEASE OF SECURITY INTEREST Recorded Jun 23, 2021
From: MUFG UNION BANK, N.A.
To: MAXLINEAR, INC.; EXAR CORPORATION; MAXLINEAR COMMUNICATIONS LLC
Reel/Frame 056656/0204 →
SUCCESSION OF AGENCY (REEL 042453 / FRAME 0001) Recorded Jul 1, 2020
From: JPMORGAN CHASE BANK, N.A.
To: MUFG UNION BANK, N.A.
Reel/Frame 053115/0842 →
SECURITY AGREEMENT Recorded May 12, 2017
From: MAXLINEAR, INC.; ENTROPIC COMMUNICATIONS, LLC (F/K/A ENTROPIC COMMUNICATIONS, INC.); EXAR CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042453/0001 →
MERGER AND CHANGE OF NAME Recorded May 19, 2015
From: ENTROPIC COMMUNICATIONS, INC.; EXCALIBUR SUBSIDIARY, LLC; ENTROPIC COMMUNICATIONS, LLC
To: ENTROPIC COMMUNICATIONS, LLC
Reel/Frame 035717/0628 →
MERGER AND CHANGE OF NAME Recorded May 18, 2015
From: EXCALIBUR ACQUISITION CORPORATION; ENTROPIC COMMUNICATIONS, INC.; ENTROPIC COMMUNICATIONS, INC.
To: ENTROPIC COMMUNICATIONS, INC.
Reel/Frame 035706/0267 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2012
From: TRIDENT MICROSYSTEMS, INC.; TRIDENT MICROSYSTEMS (FAR EAST) LTD.
To: ENTROPIC COMMUNICATIONS, INC.
Reel/Frame 028153/0440 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2010
From: TRIDENT MICROSYSTEMS (EUROPE) B.V.; NXP HOLDING 1 B.V.
To: TRIDENT MICROSYSTEMS (FAR EAST) LTD.
Reel/Frame 023928/0552 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2010
From: NXP
To: NXP HOLDING 1 B.V.
Reel/Frame 023928/0489 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2007
From: KONINKLIJKE PHILIPS ELECTRONICS N.V.
To: NXP B.V.
Reel/Frame 019719/0843 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 12, 2005
From: GANGWAL, OM PRAKASH
To: KONINKLIJKE PHILIPS ELECTRONICS, N.V.
Reel/Frame 017887/0635 →