web page header logo


Managing RAM by Striping

Physically large, high resolution panels require a lot of pixels. How many? For a 600 x 600 mm panel at 50,800 DPI (2 pixels per micron) we calculate:


      600mm x 600mm x 2000px/mm x 2000px/mm = 144E10 pixels/8 = 180E9 Bytes

600 x 600 mm panel at 50,800 DPI

Since we can't access that amount of memory directly (and we would not want to use disk swapping ) we use a different strategy. We divide the image area into stripes1 and work on one stripe at a time. The bitmap for that stripe can be saved to disk. Then the memory is reused for the next stripe or tile.

Suppose we choose a stripe of height 120 mm and width of 300 mm. Our required memory is:


      120mm x 300mm x 2000px/mm x 2000px/mm = 144E9 pixels/8 = 18E9 Bytes

300 x 120 mm stripe at 50,800 DPI

So we have reduced the required memory from 180 GByte to 18 GByte. This should not be a problem in a workstation equipped with 32 GBytes of RAM2.

Of course there is a trade off. We must repeat the RIP 10X to cover the entire image and each time we complete a stripe we must write the bitmap to disk or otherwise dispose of it. This will certainly take more time that a single pass of the RIP.


Notes

1 The RIP has to insure that data crossing the stripe boundaries does not get corrupted or otherwise shifted.

2 To maintain throughput, we will actually need two image buffers - one for the RIP to use and a second to process the pixels from one stripe while the RIP is working on the next stripe.