A method of prefetching memory blocks in a processor system handling accesses to memory according to a relative order between accesses, the method comprising: processing each of the accesses being handled in the relative order, said processing including performing an iteration process with each iteration including: capturing the access being currently handled by the processor system, identifying , from the captured access, a memory block to which the captured access refers, determining whether the memory block identified in current iteration is either coincident or contiguous or non-contiguous with respect to memory block identified in immediately previous iteration, and quitting (204, Y) the iteration process when a predefined number of iterations have been performed or non-contiguity has been determined; and verifying, once the iteration process has been quitted, whether one or more contiguities and zero non-contiguities have been determined in the performed iterations and, in said case (205, Y), instructing a cache controller to prefetch a number of next contiguous memory blocks with respect to the memory block identified in last iteration of the iteration process; the method being characterized in that the number of next contiguous memory blocks corresponds to all the next contiguous memory blocks from the memory block identified in last iteration to either the end or beyond the end of memory page, whenever the determined one or more contiguities follow a direction from beginning to end of the memory page, or the beginning or beyond the beginning of memory page, whenever the determined one or more contiguities follow a direction from end to beginning of the memory page. processing each of the accesses being handled in the relative order, said processing including performing an iteration process with each iteration including: capturing the access being currently handled by the processor system, identifying , from the captured access, a memory block to which the captured access refers, determining whether the memory block identified in current iteration is either coincident or contiguous or non-contiguous with respect to memory block identified in immediately previous iteration, and quitting (204, Y) the iteration process when a predefined number of iterations have been performed or non-contiguity has been determined; and capturing the access being currently handled by the processor system, identifying , from the captured access, a memory block to which the captured access refers, determining whether the memory block identified in current iteration is either coincident or contiguous or non-contiguous with respect to memory block identified in immediately previous iteration, and quitting (204, Y) the iteration process when a predefined number of iterations have been performed or non-contiguity has been determined; and verifying, once the iteration process has been quitted, whether one or more contiguities and zero non-contiguities have been determined in the performed iterations and, in said case (205, Y), instructing a cache controller to prefetch a number of next contiguous memory blocks with respect to the memory block identified in last iteration of the iteration process; the method being characterized in that the number of next contiguous memory blocks corresponds to all the next contiguous memory blocks from the memory block identified in last iteration to either the end or beyond the end of memory page, whenever the determined one or more contiguities follow a direction from beginning to end of the memory page, or the beginning or beyond the beginning of memory page, whenever the determined one or more contiguities follow a direction from end to beginning of the memory page. <EOS>