I have a Radeon 5870 with 2GB of memory and was surprised to find that allocating a float4 8192x8192 image returned no errors. This image should use 1GB of memory which is far larger than you could create using global memory. Do images not have the same restrictions allocation that global memory has? I seem to remember allocating huge images on a Firestream 9170 4GB back in the day in CAL and could allocate big streams in Brook+, but I didn't know if this carried over to OpenCL.
OpenCL read-only images are nothing more than CAL images. Depending on the sampler, there might be extra code to gaurantee correctness, but otherwise it is almost a 1-1 mapping. OpenCL write-only images are the same as type UAV's in CAL.