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
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
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.
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.