The processor will try to do write-combining to fill entire cache lines, so it doesn't need to do a memory read. GCC already has a number of intrinsics to help with streaming data directly to RAM (helps to keep from evicting more important data from the cache).
The cache can be bypassed when doing a lot of writes. See section "Bypassing the cache" of [0].
That article says that memset() already uses cache bypassing instructions for large blocks.