1. A method for ordering memory requests requiring ordered memory accesses, the method comprising: splitting a stream of memory requests from a single source according to an address attribute into two or more streams of memory requests; identifying a memory request that requires ordered memory accesses in one of the two or more streams of memory requests, the memory request having a first address attribute; and stalling the memory request that requires ordered memory accesses upon determining a previous memory request from a different one of the two or more streams of memory requests is pending and has a second address attribute.