1. A method for allocating a plurality of data streams, comprising: receiving, at an allocator, a first data stream comprising a first memory address and first data associated with the first memory address; examining, by the allocator, the first data stream to make a first determination that the first data stream is a soft allocating data stream; sending, from the allocator based on the first determination, a plurality of write probes to a plurality of caches, wherein each write probe of the plurality of write probes comprises at least part of the first memory address; receiving a second data stream at the allocator, wherein the second data stream comprises a second memory address and second data associated with the second memory address; examining, by the allocator, the second data stream to make a second determination that the second data stream is a second soft allocating data stream; sending from the allocator, based on the second determination, a second plurality of write probes to the plurality of caches, wherein each write probe of the second plurality of write probes comprises at least part of the second memory address; receiving, in response to the second plurality of write probes, a plurality of cache line present negative acknowledgements, wherein each cache of the plurality of caches responds with one cache line present negative acknowledgement of the plurality of cache line present negative acknowledgements; receiving, at the allocator in response to a first write probe of the plurality of write probes, a cache line present acknowledgement from a first cache of the plurality of caches; and directing, by the allocator in response to the cache line present acknowledgement, the first data of the first data stream to the first cache.