1. A method of performing multi-level indirect data prefetching, comprising: determining a first memory address of a pointer associated with a data prefetch instruction; fetching a first data block that includes content at the first memory address; determining a second memory address from the content at the first memory address; fetching a second data block that includes content at the second memory address; determining a third memory address from the content at the second memory address; and fetching a third data block that includes another pointer or data at the third memory address.