IP Library Granted Patent US 7,487,271
Granted Patent B2
US 7,487,271 · App. 11/233,597 · Granted Feb 3, 2009

Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system

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,487,271
App. No.
11/233,597
Granted
Feb 3, 2009
Kind
B2
Abstract

A multiprocessor system ( 100 ) for sharing memory has a memory ( 102 ), and two or more processors ( 104 ). The processors are programmed to establish ( 202 ) memory buffer pools between the processors, and for each memory buffer pool, establish ( 204 ) an array of buffer pointers that point to corresponding memory buffers. The processors are further programmed to, for each array of buffer pointers, establish ( 206 ) a consumption pointer for the processor owning the memory buffer pool, and a release pointer for another processor sharing said memory buffer pool, each pointer initially pointing to a predetermined location of the array, and adjust ( 208 - 236 ) the consumption and release pointers according to buffers consumed and released.

Claims (82)

1. A method for sharing memory in a multiprocessor system, comprising the steps of:

establishing memory buffer pools for two or more processors;

for each memory buffer pool, establishing an array of buffer pointers that point to corresponding memory buffers;

for each array of buffer pointers, establishing a consumption pointer for the processor owning the memory buffer pool, and a release pointer for another processor sharing said memory buffer pool, each pointer initially pointing to a predetermined location of the array; and

adjusting the consumption and release pointers according to buffers consumed and released.

2. The method of claim 1 , consuming and releasing buffer pointers and corresponding memory buffers between processors according to the steps of:

reading a buffer pointer pointed to by the consumption pointer;

nullifying the buffer pointer;

incrementing the consumption pointer to the next buffer pointer;

sharing the consumed buffer pointer and its associated memory buffer between processors;

replacing the null pointed to by the release pointer with the shared buffer pointer; and

incrementing the release pointer.

3. The method of claim 2 , comprising the steps of:

validating prior to the reading step that the consumption pointer does not point to a null; and

if a null is detected, ceasing the consumption operation until the consumption pointer points to an available buffer pointer.

4. The method of claim 1 , consuming and releasing buffer pointers and corresponding memory buffers by a processor controlling said memory according to the steps of:

reading a buffer pointer pointed to by the consumption pointer;

nullifying the buffer pointer;

incrementing the consumption pointer to the next buffer pointer;

consuming the memory buffer associated with the consumed buffer pointer;

decrementing the consumption pointer; and

replacing the null pointed to by the decremented consumption pointer with the consumed buffer pointer, thereby releasing said pointer and its associated memory buffer.

5. The method of claim 4 , comprising the steps of:

validating prior to the reading step that the consumption pointer does not point to a null; and

if a null is detected, ceasing the consumption operation until the consumption pointer points to an available buffer pointer.

6. The method of claim 1 , comprising step of establishing for each memory buffer pool at least one among a buffer size corresponding to each of the memory buffers and a buffer count.

7. The method of claim 1 , comprising step of adjusting at a processor its memory buffer pools and corresponding consumption and release pointers to accommodate memory sharing with additional processors.

8. A multiprocessor system having computer-readable storage mediums for sharing memory, each of the storage mediums comprising computer instructions for:

establishing memory buffer pools between the processors;

for each memory buffer pool, establishing an array of buffer pointers that point to corresponding memory buffers;

for each array of buffer pointers, establishing a consumption pointer for the processor owning the memory buffer pool, and a release pointer for another processor sharing said memory buffer pool, each pointer initially pointing to a predetermined location of the array; and

adjusting the consumption and release pointers according to buffers consumed and released.

9. The storage mediums of claim 8 , comprising computer instructions for:

reading a buffer pointer pointed to by the consumption pointer;

nullifying the buffer pointer;

incrementing the consumption pointer to the next buffer pointer;

sharing the consumed buffer pointer and its associated memory buffer between processors;

replacing the null pointed to by the release pointer with the shared buffer pointer; and

incrementing the release pointer.

10. The storage mediums of claim 9 , comprising computer instructions for:

validating prior to the reading step that the consumption pointer does not point to a null; and

if a null is detected, ceasing the consumption operation until the consumption pointer points to an available buffer pointer.

11. The storage mediums of claim 8 , comprising computer instructions for:

reading a buffer pointer pointed to by the consumption pointer;

nullifying the buffer pointer;

incrementing the consumption pointer to the next buffer pointer;

consuming the memory buffer associated with the consumed buffer pointer;

decrementing the consumption pointer; and

replacing the null pointed to by the decremented consumption pointer with the consumed buffer pointer, thereby releasing said pointer and its associated memory buffer.

12. The storage mediums of claim 11 , comprising computer instructions for:

validating prior to the reading step that the consumption pointer does not point to a null; and

if a null is detected, ceasing the consumption operation until the consumption pointer points to an available buffer pointer.

13. The storage mediums of claim 8 , comprising computer instructions for establishing for each memory buffer pool at least one among a buffer size corresponding to each of the memory buffers and a buffer count.

14. The storage mediums of claim 8 , comprising computer instructions for adjusting at a processor its memory buffer pools and corresponding consumption and release pointers to accommodate memory sharing with additional processors.

15. A multiprocessor system for sharing memory, comprising:

a memory; and

two or more processors, each processor programmed to:

establish memory buffer pools between the processors;

for each memory buffer pool, establish an array of buffer pointers that point to corresponding memory buffers;

for each array of buffer pointers, establish a consumption pointer for the processor owning the memory buffer pool, and a release pointer for another processor sharing said memory buffer pool, each pointer initially pointing to a predetermined location of the array; and

adjust the consumption and release pointers according to buffers consumed and released.

16. The multiprocessor system of claim 15 , wherein the processors are programmed to:

read a buffer pointer pointed to by the consumption pointer;

nullify the buffer pointer;

increment the consumption pointer to the next buffer pointer;

share the consumed buffer pointer and its associated memory buffer between processors;

replace the null pointed to by the release pointer with the shared buffer pointer; and

increment the release pointer.

17. The multiprocessor system of claim 16 , wherein the processors are programmed to:

validate prior to the reading step that the consumption pointer does not point to a null; and

if a null is detected, cease the consumption operation until the consumption pointer points to an available buffer pointer.

18. The multiprocessor system of claim 15 , wherein the processors are programmed to:

read a buffer pointer pointed to by the consumption pointer;

nullify the buffer pointer;

increment the consumption pointer to the next buffer pointer;

consume the memory buffer associated with the consumed buffer pointer;

decrement the consumption pointer; and

replace the null pointed to by the decremented consumption pointer with the consumed buffer pointer, thereby releasing said pointer and its associated memory buffer.

19. The multiprocessor system of claim 18 , wherein the processors are programmed to:

validate prior to the reading step that the consumption pointer does not point to a null; and

if a null is detected, cease the consumption operation until the consumption pointer points to an available buffer pointer.

20. The multiprocessor system of claim 15 , wherein the processors are programmed to adjust at a processor its memory buffer pools and corresponding consumption and release pointers to accommodate memory sharing with additional processors.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2014
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 034343/0001 →
CHANGE OF NAME Recorded Oct 2, 2012
From: MOTOROLA MOBILITY, INC.
To: MOTOROLA MOBILITY LLC
Reel/Frame 029216/0282 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2010
From: MOTOROLA, INC
To: MOTOROLA MOBILITY, INC
Reel/Frame 025673/0558 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2005
From: KHAWAND, CHARBEL; KHAWAND, JEAN; LIU, BIN
To: MOTOROLA, INC.
Reel/Frame 017037/0775 →