Claims
- 1. A checkerboard buffer page system, comprising:
a data source, providing data elements in a first order; a data destination, receiving data elements in a second order; at least two memory devices, each memory device having a plurality of memory pages including a plurality of memory locations, each memory location having an address, where data elements are stored in parallel to the memory devices and retrieved in parallel from the memory devices; and where each data element corresponds to an entry in one of a plurality of buffer pages, each buffer page having a plurality of entries along a first dimension corresponding to the first order and a plurality of entries along a second dimension corresponding to the second order, where data elements are stored according to the first order using blocks of buffer pages, each block having a number of buffer pages equal to a power of 2, where data elements are stored to the memory devices in the first order and retrieved from the memory devices in the second order, and where at least one memory page stores data elements in multiple locations according to the first order and stores data elements in multiple locations according to the second order, where at least two data elements that are consecutive in the first order are stored in parallel to the memory devices, and where at least two data elements that are consecutive in the second order are retrieved in parallel from the memory devices.
- 2. The checkerboard buffer page system of claim 1, where each memory page corresponds to a respective buffer page.
- 3. The checkerboard buffer page system of claim 1, where at least one buffer page does not include any data elements.
- 4. The checkerboard buffer page system of claim 1, where a data element is pixel data corresponding to a pixel in a frame of pixels, the frame having horizontal rows of pixels and vertical columns of pixels.
- 5. The checkerboard buffer page system of claim 4, where each row of the frame includes 1920 pixels and each column of the frame includes 1080 pixels.
- 6. The checkerboard buffer page system of claim 4, where each pixel has 32 bits of pixel data.
- 7. The checkerboard buffer page system of claim 4, where the buffer pages are pixel pages, each pixel page having a plurality of pixel page rows and a plurality of pixel page columns.
- 8. The checkerboard buffer page system of claim 7, where:
a first number of pixel pages are allocated horizontally to include all of the pixels in a horizontal row of pixels in the frame, and the first number is a power of 2, a second number of pixel pages are allocated vertically to include all of the pixels in a vertical column of pixels in the frame, and a total number of pixel pages are allocated to include all of the pixels in the frame, and the total number is equal to the product of the first number and the second number.
- 9. The checkerboard buffer page system of claim 8, where the first number is 128.
- 10. The checkerboard buffer page system of claim 8, where the first number is 64.
- 11. The checkerboard buffer page system of claim 8, where the second number is a power of 2.
- 12. The checkerboard buffer page system of claim 11, where the second number is 128.
- 13. The checkerboard buffer page system of claim 7, further comprising a counter for generating addresses for storing and retrieving pixel data.
- 14. The checkerboard buffer page system of claim 13, where the counter counts pixels.
- 15. The checkerboard buffer page system of claim 13, where addresses are generated by rearranging bit fields of the counter.
- 16. The checkerboard buffer page system of claim 15, where:
bits 0-3 of an address are bits 1-4 of the counter, bits 4-7 of the address are bits 11-14 of the counter, bits 8-13 of the address are bits 5-10 of the counter, and bits 14-20 of the address are bits 15-21 of the counter.
- 17. The checkerboard buffer page system of claim 7, further comprising a source counter for generating addresses for storing pixel data, and a destination counter for generating addresses for retrieving pixel data.
- 18. The checkerboard buffer page system of claim 7, further comprising a memory controller for generating addresses for storing and retrieving data elements.
- 19. The checkerboard buffer page system of claim 18, where:
the at least two memory devices comprises a first memory device and a second memory device, the memory controller has two states for storing data for a horizontal pixel pair, where a first pixel in the horizontal pixel pair is horizontally adjacent and to the left of a second pixel in the horizontal pixel pair: a first state where pixel data for the first pixel in the horizontal pixel pair is stored to the first memory device and pixel data for the second pixel in the horizontal pixel pair is stored to the second memory device; and a second state where pixel data for the first pixel in the horizontal pixel pair is stored to the second memory device and pixel data for the second pixel in the horizontal pixel pair is stored to the first memory device, and the memory controller changes states for storing data after storing pixel data for one horizontal row of pixels.
- 20. The checkerboard buffer page system of claim 18, where:
the at least two memory devices comprises a first memory device and a second memory device, the memory controller has two states for retrieving data for a vertical pixel pair, where a first pixel in the vertical pixel pair is vertically adjacent and above a second pixel in the vertical pixel pair: a first state where pixel data for the first pixel in the vertical pixel pair is retrieved from the first memory device and pixel data for the second pixel in the vertical pixel pair is retrieved from the second memory device; and a second state where pixel data for the first pixel in the vertical pixel pair is retrieved from the second memory device and pixel data for the second pixel in the vertical pixel pair is retrieved from the first memory device, and the memory controller changes states for retrieving data after retrieving pixel data for one vertical column of pixels.
- 21. The checkerboard buffer page system of claim 20, where:
pixel data for the first pixel in the vertical pixel pair is retrieved using a first address, pixel data for the second pixel in the vertical pixel pair is retrieved using a second address, in the first state for retrieving data, the first address is provided to the first memory device and the second address is provided to the second memory device, and in the second state for retrieving data, the first address is provided to the second memory device and the second address is provided to the first memory device.
- 22. A checkerboard pixel page system, comprising:
a video source providing pixel data for pixels in a frame, the frame having rows of pixels and columns of pixels; a video destination; a first memory having a plurality of memory locations; a second memory having a plurality of memory locations; a memory controller connected to the first memory and the second memory; a first data bus connected to the video source and the memory controller; a second data bus connected to the video source and the memory controller; a third data bus connected to the video destination and the memory controller; a fourth data bus connected to the video destination and the memory controller; a source address line connected to the video source and the memory controller; a destination address line connected to the video destination and the memory controller; and where each pixel corresponds to an entry in one of a plurality of pixel pages, and at least one pixel page includes multiple pixels from a row in the frame and multiple pixels from a column in the frame, where pixel data is stored according to horizontal rows of pixels using blocks of pixel pages, each block having a number of pixel pages equal to a power of 2, where each entry in a pixel page corresponds to a memory location, where pixel data for at least two pixels that are horizontally adjacent is stored in parallel to the memories, and where pixel data for at least two pixels that are vertically adjacent is retrieved in parallel from the memories.
- 23. The checkerboard pixel page system of claim 22, where the memory controller generates addresses for storing and retrieving pixel data.
- 24. The checkerboard pixel page system of claim 23, where:
the memory controller has two states for storing data for a horizontal pixel pair, where a first pixel in the horizontal pixel pair is horizontally adjacent and to the left of a second pixel in the horizontal pixel pair: a first state where pixel data for the first pixel in the horizontal pixel pair is stored to the first memory and pixel data for the second pixel in the horizontal pixel pair is stored to the second memory; and a second state where pixel data for the first pixel in the horizontal pixel pair is stored to the second memory and pixel data for the second pixel in the horizontal pixel pair is stored to the first memory, and the memory controller changes states for storing data after storing pixel data for one horizontal row of pixels.
- 25. The checkerboard pixel page system of claim 23, where:
the memory controller has two states for retrieving data for a vertical pixel pair, where a first pixel in the vertical pixel pair is vertically adjacent and above a second pixel in the vertical pixel pair: a first state where pixel data for the first pixel in the vertical pixel pair is retrieved from the first memory and pixel data for the second pixel in the vertical pixel pair is retrieved from the second memory; and a second state where pixel data for the first pixel in the vertical pixel pair is retrieved from the second memory and pixel data for the second pixel in the vertical pixel pair is retrieved from the first memory, and the memory controller changes states for retrieving data after retrieving pixel data for one vertical column of pixels.
- 26. The checkerboard pixel page system of claim 25, where:
pixel data for the first pixel in the vertical pixel pair is retrieved using a first address, pixel data for the second pixel in the vertical pixel pair is retrieved using a second address, in the first state for retrieving data, the first address is provided to the first memory and the second address is provided to the second memory, and in the second state for retrieving data, the first address is provided to the second memory and the second address is provided to the first memory.
- 27. The checkerboard pixel page system of claim 22, where:
a first number of pixel pages are allocated horizontally to include all of the pixels in a horizontal row of pixels in the frame, and the first number is a power of 2, a second number of pixel pages are allocated vertically to include all of the pixels in a vertical column of pixels in the frame, and the second number is a power of 2, a total number of pixel pages are allocated to include all of the pixels in the frame, and the total number is equal to the product of the first number and the second number.
- 28. The checkerboard pixel page system of claim 22, further comprising a counter for generating addresses for storing and retrieving pixel data.
- 29. The checkerboard pixel page system of claim 28, where addresses are generated by rearranging bit fields of the counter.
- 30. A method of storing pixel data, comprising:
receiving pixel data for a frame of pixels, where the frame includes multiple horizontal rows of pixels; and storing the pixel data in a memory system according to pixel pages, where each pixel page corresponds to a respective page of memory, where at least one pixel page includes pixels from multiple horizontal rows of pixels, and where pixel data is stored according to horizontal rows of pixels using blocks of pixel pages, each block having a number of pixel pages equal to a power of 2, where pixel data for at least two pixels that are horizontally adjacent is stored in parallel to the memory system, and where pixel data for neighboring pixels horizontally and vertically adjacent to a reference pixel, within the same pixel page as the reference pixel, is stored in a different memory than pixel data for the reference pixel.
- 31. The method of claim 30, where:
a first number of pixel pages are allocated horizontally to include all of the pixels in a horizontal row of pixels in the frame, and the first number is a power of 2, a second number of pixel pages are allocated vertically to include all of the pixels in a vertical column of pixels in the frame, and the second number is a power of 2, a total number of pixel pages are allocated to include all of the pixels in the frame, and the total number is equal to the product of the first number and the second number.
- 32. The method of claim 30, further comprising a counter for generating addresses for storing and retrieving pixel data.
- 33. The method of claim 32, further comprising:
generating an address; providing the address to a memory bus; incrementing the counter by 1; checking for the end of the frame of pixels; checking for the end of a row of pixels; and incrementing the counter by 128.
- 34. The method of claim 32, where addresses are generated by rearranging bit fields of the counter.
- 35. The method of claim 30, further comprising:
providing pixel data from a video source to a memory controller; generating a source address in the memory controller, where the source address is a memory address for storing the pixel data; providing the pixel data to the memory system; providing the source address to the memory system; and storing the pixel data in the memory system at the source address.
- 36. A method of retrieving pixel data, comprising:
generating addresses for retrieving from a memory system pixel data for a frame of pixels according to pixel pages, where the frame includes multiple horizontal rows of pixels, where each pixel page corresponds to a respective page of memory, where at least one pixel page includes pixels from multiple horizontal rows of pixels, and where pixel data is stored in the memory system according to horizontal rows of pixels using blocks of pixel pages, each block having a number of pixel pages equal to a power of 2; and retrieving the pixel data from the memory system using the generated addresses, where pixel data for at least two pixels that are vertically adjacent is retrieved in parallel from the memory system, and where pixel data for neighboring pixels horizontally and vertically adjacent to a reference pixel, within the same pixel page as the reference pixel, is retrieved from a different memory than pixel data for the reference pixel.
- 37. The method of claim 36, where:
a first number of pixel pages are allocated horizontally to include all of the pixels in a horizontal row of pixels in the frame, and the first number is a power of 2, a second number of pixel pages are allocated vertically to include all of the pixels in a vertical column of pixels in the frame, and the second number is a power of 2, a total number of pixel pages are allocated to include all of the pixels in the frame, and the total number is equal to the product of the first number and the second number.
- 38. The method of claim 36, further comprising a counter for generating addresses for storing and retrieving pixel data.
- 39. The method of claim 38, where the counter includes a row counter and a column counter.
- 40. The method of claim 39, further comprising:
generating an address; providing the address to a memory bus; incrementing the row counter by 1; checking for the end of a column of pixels; incrementing the column counter by 1; checking for the end of the frame of pixels; and resetting the row counter.
- 41. The method of claim 38, where addresses are generated by rearranging bit fields of the counter.
- 42. The method of claim 36, further comprising:
generating two destination addresses in a memory controller, where the destination addresses are memory addresses for retrieving pixel data; providing the two destination addresses to the memory system; providing pixel data from the memory system stored at the destination addresses to the memory controller.
- 43. A system for storing pixel data, comprising:
means for receiving pixel data for a frame of pixels, where the frame includes multiple horizontal rows of pixels; and means for storing the pixel data in a memory system according to pixel pages, where each pixel page corresponds to a respective page of memory, where at least one pixel page includes pixels from multiple horizontal rows of pixels, and where pixel data is stored according to horizontal rows of pixels using blocks of pixel pages, each block having a number of pixel pages equal to a power of 2, where pixel data for at least two pixels that are horizontally adjacent is stored in parallel to the memory system, and where pixel data for neighboring pixels horizontally and vertically adjacent to a reference pixel, within the same pixel page as the reference pixel, is stored in a different memory than pixel data for the reference pixel.
- 44. A system for retrieving pixel data, comprising:
means for generating addresses for retrieving from a memory system pixel data for a frame of pixels according to pixel pages, where the frame includes multiple horizontal rows of pixels, where each pixel page corresponds to a respective page of memory, where at least one pixel page includes pixels from multiple horizontal rows of pixels, and where pixel data is stored in the memory system according to horizontal rows of pixels using blocks of pixel pages, each block having a number of pixel pages equal to a power of 2; and means for retrieving the pixel data from the memory system using the generated addresses, where pixel data for at least two pixels that are vertically adjacent is retrieved in parallel from the memory system, and where pixel data for neighboring pixels horizontally and vertically adjacent to a reference pixel, within the same pixel page as the reference pixel, is retrieved from a different memory than pixel data for the reference pixel.
RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/269,784 filed Feb. 15, 2001, of U.S. Provisional Application No. 60/269,783 filed Feb. 15, 2001, and of U.S. Provisional Application No. 60/324,498 filed Sep. 24,2001, the disclosures of which are incorporated herein by reference.
[0002] This application is related to the following co-pending and commonly assigned patent applications: U.S. application Ser. No. 09/908,295, filed Jul. 17, 2001 (Docket No. 70673); U.S. application Ser. No. 09/907,852, filed Jul. 17, 2001 (Docket No. 70674); U.S. application Ser. No. 09/907,854, filed Jul. 17, 2001 (Docket No. 70675); U.S. application Ser. No. 09/908,301, filed Jul. 17, 2001 (Docket No. 70676); U.S. application Ser. No. 10/051,538, filed Jan. 16, 2002 (Docket No. 71743); U.S. application Ser. No. 10/051,680, filed Jan. 16, 2002 (Docket No. 71744); U.S. application Ser. No. 10/052,074, filed Jan. 16, 2002 (Docket No. 71745); U.S. application Ser. No. 10/051,541, filed Jan. 16, 2002 (Docket No. 71746); U.S. application Ser. No. ______, entitled CHECKERBOARD BUFFER USING TWO-DIMENSIONAL BUFFER PAGES, filed herewith (Docket No. 72705); U.S. application Ser. No. ______, entitled CHECKERBOARD BUFFER USING TWO-DIMENSIONAL BUFFER PAGES AND USING STATE ADDRESSING, filed herewith (Docket No. 72706); and U.S. application Ser. No. ______, entitled CHECKERBOARD BUFFER USING TWO-DIMENSIONAL BUFFER PAGES AND USING MEMORY BANK ALTERNATION, filed herewith (Docket No. 72708), the disclosures of which are incorporated herein by reference.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60269784 |
Feb 2001 |
US |
|
60269783 |
Feb 2001 |
US |
|
60324498 |
Sep 2001 |
US |