IP Library Granted Patent US 7,924,456
Granted Patent B1
US 7,924,456 · App. 11/652,924 · Granted Apr 12, 2011

Data distribution and buffering

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,924,456
App. No.
11/652,924
Granted
Apr 12, 2011
Kind
B1
Abstract

An on-demand server system herein includes a memory controller that coordinates access to one or more flash-based memory devices. The flash devices store large amounts of video content that can be selectively viewed on-demand by each of multiple destinations over a respective network. In addition to having access to an array of flash memory devices, the memory controller has access to a corresponding read buffer and write buffer. Use of the read buffer and the write buffer enable the memory controller to switch between transferring data stored in the write buffer to the array of memory devices and transferring the data in the array of memory devices to the read buffer. The write buffer stores on-demand video content that can be selected for viewing by different users. The read buffer stores segments of the on-demand video content currently streamed to the users.

Claims (80)

1. A method comprising:

receiving a first request for a particular portion of a content stream;

in response to receiving the first request, initiating an access of a block of data from an array of memory devices, the block of data including the particular portion of the content stream as well as corresponding contiguous portions of the content stream, wherein initiating the access of the block of data from the array of memory devices includes retrieving more data from the array of memory devices than as specified by the first request;

storing at least a portion of the accessed block of data in a read buffer for on-demand streaming to a respective destination, wherein storing at least a portion of the block of data includes storing more data retrieved from the array of memory devices in the read buffer than as specified by the first request;

initiating transmission of the particular portion of the content stream to the respective destination;

receiving a second request for a different portion of the content stream; and

initiating transmission of the different portion of content from the read buffer, the different portion of the content stream included in the portion of the data block stored in the read buffer.

2. A method as in claim 1 , wherein initiating the access of the block of data from the array of memory devices includes:

initiating a read of the block of data from the array of memory devices;

after the block of data is available for retrieval from the array of memory devices, truncating a respective read to retrieve a portion of the block of data in lieu of retrieving all of the block of data; and

storing the portion of the block of data in the read buffer.

3. A method as in claim 1 , wherein initiating the access of the block of data from the array of memory devices includes:

initiating a read of the data block from the array of memory devices;

after the data block is available for retrieval from the array of memory devices, truncating the read to retrieve a portion of the block of data in lieu of retrieving all of the block of data; and

storing the portion of the block of data in a region of the read buffer allocated for the on-demand streaming of the portion of the block of data to the respective destination.

4. A method as in claims 1 further comprising:

while enabling transfers of data from the array of memory devices to the read buffer, maintaining a write buffer for temporarily storing received data for eventual storage in the array of memory devices; and

in response to detecting that the received data exceeds a threshold value:

i) disabling accesses of data from the array of memory devices to the read buffer,

ii) initiating a transfer of the received data stored in the write buffer to the array of memory devices,

iii) during the transfer, streaming the particular portion of the content stream in the read buffer to the respective destination, and

iv) after the transfer, enabling transfers of data stored in the array of memory devices to the read buffer again.

5. A method as in claims 1 further comprising:

in between enabling transfers of data from the array of memory devices to the read buffer, enabling a modification mode in which the data stored in the array of memory devices can be modified;

receiving a new page of data to be stored at a respective location in the array of memory devices;

retrieving a range of multiple pages including a current page stored at the location in the array of memory devices;

replacing the current page in the retrieved range of multiple pages with the new page; and

during the modification mode, initiating storage of the multiple pages including the new page to the array of memory devices such that the new page is stored at the respective location in the array of memory devices.

6. A method as in claim 5 , wherein initiating storage of the multiple pages including the new page to the array of memory devices includes erasing the multiple pages including the current page from the array of memory devices.

7. A method as in claim 1 , wherein initiating the access of the block of data includes accessing an array of flash memory devices supporting block accesses of multiple bytes of stored data.

8. A method as in claim 7 , wherein storing at least a portion of the accessed block of data includes storing the portion of the accessed block of data to RAM-based (Random Access Memory-based) storage.

9. A method as in claim 8 further comprising:

maintaining the array of flash memory devices to store at least one logical grouping of video data capable of playback in a contiguous manner; and

allocating portions of the RAM-based storage to store different corresponding segments of the at least one logical grouping of video data for streaming to different respective destinations over a network; and

updating the portions of the RAM-based storage to respective new segments of at least one logical grouping of video data as the different corresponding segments are streamed to the respective destinations.

10. A computer system that supports selection and paste operations, the computer system comprising:

a processor;

a memory unit that stores instructions associated with an application executed by the processor; and

an interconnect coupling the processor and the memory unit, enabling the computer system to execute the application and perform operations of:

receiving a first request for a particular portion of a content stream;

in response to receiving the first request, initiating an access of a block of data from an array of memory devices, the block of data including the particular portion of the content stream as well as corresponding contiguous portions of the content stream, wherein initiating the access of the block of data from the array of memory devices includes retrieving more data from the array of memory devices than as specified by the first request;

storing at least a portion of the accessed block of data in a read buffer for on-demand streaming to a respective destination, wherein storing at least a portion of the block of data includes storing more data retrieved from the array of memory devices in the read buffer than as specified by the first request;

initiating transmission of the particular portion of the content stream to the respective destination;

receiving a second request for a different portion of the content stream; and

initiating transmission of the different portion of content from the read buffer, the different portion of the content stream included in the portion of the data block stored in the read buffer.

11. A computer system as in claim 10 , wherein initiating the access of the block of data from the array of memory devices includes:

initiating a read of the block of data from the array of memory devices;

after the block of data is available for retrieval from the array of memory devices, truncating a respective read to retrieve a portion of the block of data in lieu of retrieving all of the block of data; and

storing the portion of the block of data in the read buffer.

12. A computer system as in claim 10 , wherein initiating the access of the block of data from the array of memory devices includes:

initiating a read of the data block from the array of memory devices;

after the data block is available for retrieval from the array of memory devices, truncating the read to retrieve a portion of the block of data in lieu of retrieving all of the block of data; and

storing the portion of the block of data in a region of the read buffer allocated for the on-demand streaming of the portion of the block of data to the respective destination.

13. A computer system as in claim 10 further supporting operations of:

while enabling transfers of data from the array of memory devices to the read buffer, maintaining a write buffer for temporarily storing received data for eventual storage in the array of memory devices; and

in response to detecting that the received data exceeds a threshold value:

i) disabling accesses of data from the array of memory devices to the read buffer,

ii) initiating a transfer of the received data stored in the write buffer to the array of memory devices,

iii) during the transfer, streaming the particular portion of the content stream in the read buffer to the respective destination, and

iv) after the transfer, enabling transfers of data stored in the array of memory devices to the read buffer again.

14. A computer system as in claim 10 further supporting operations of:

in between enabling transfers of data from the array of memory devices to the read buffer, enabling a modification mode in which the data stored in the array of memory devices can be modified;

receiving a new page of data to be stored at a respective location in the array of memory devices;

retrieving a range of multiple pages including a current page stored at the location in the array of memory devices;

replacing the current page in the retrieved range of multiple pages with the new page; and

during the modification mode, initiating storage of the multiple pages including the new page to the array of memory devices such that the new page is stored at the respective location in the array of memory devices.

15. A computer system as in claim 14 , wherein initiating storage of the multiple pages including the new page to the array of memory devices includes erasing the multiple pages including the current page from the array of memory devices.

16. A computer system as in claim 10 , wherein initiating the access of the block of data includes accessing an array of flash memory devices supporting block accesses of multiple bytes of stored data.

17. A computer system as in claim 16 , wherein storing at least a portion of the accessed block of data includes storing the portion of the accessed block of data to RAM-based (Random Access Memory-based) storage.

18. A computer system as in claim 17 further supporting operations of:

maintaining the array of flash memory devices to store at least one logical grouping of video data capable of playback in a contiguous manner; and

allocating portions of the RAM-based storage to store different corresponding segments of the at least one logical grouping of video data for streaming to different respective destinations over a network; and

updating the portions of the RAM-based storage to respective new segments of at least one logical grouping of video data as the different corresponding segments are streamed to the respective destinations.

19. A system comprising:

means for receiving a request for a particular portion of a content stream;

means for initiating an access of a block of data from an array of memory devices in response to receiving the request, the block of data including the particular portion of the content stream as well as corresponding contiguous portions of the content stream, wherein initiating the access of the block of data from the array of memory devices includes retrieving more data from the array of memory devices than as specified by the first request;

means for storing at least a portion of the accessed block of data in a read buffer for on-demand streaming to a respective destination, wherein storing at least a portion of the block of data includes storing more data retrieved from the array of memory devices in the read buffer than as specified by the first request; and

means for initiating transmission of the particular portion of the content stream to the respective destination;

means for receiving a second request for a different portion of the content stream; and

means for initiating transmission of the different portion of content from the read buffer, the different portion of the content stream included in the portion of the data block stored in the read buffer.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2014
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 034358/0264 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2013
From: GENERAL INSTRUMENT CORPORATION
To: GENERAL INSTRUMENT HOLDINGS, INC.
Reel/Frame 030764/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2013
From: GENERAL INSTRUMENT HOLDINGS, INC.
To: MOTOROLA MOBILITY LLC
Reel/Frame 030866/0113 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2013
From: GENERAL INSTRUMENT CORPORATION
To: GENERAL INSTRUMENT HOLDINGS, INC.
Reel/Frame 030725/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2013
From: GENERAL INSTRUMENT HOLDINGS, INC.
To: MOTOROLA MOBILITY LLC
Reel/Frame 030725/0642 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2013
From: BROADBUS TECHNOLOGIES, INC.
To: GENERAL INSTRUMENT CORPORATION
Reel/Frame 030605/0886 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2007
From: KAHN, MICHAEL A.; SARGEANT, MATTHEW G.; STIFTER, FRANCIS J., JR.
To: BROADBUS TECHNOLOGIES, INC.
Reel/Frame 018804/0643 →