1. A method comprising: in at least one core processor, running a plurality of software threads on respective hardware threads, each hardware thread generating memory access requests using a first addressing scheme that ignores the other hardware threads; and in a prefetch unit and/or cache, using addresses relating to the memory requests according to a second addressing scheme that is responsive to the first addressing scheme and identification of which hardware thread generated a given request.