A processor, comprising: a programmable prefetcher for prefetching information from an external memory, comprising: a load monitor that tracks a plurality of load requests issued by the processor to retrieve information from the external memory; a programmable prefetch engine that is configured to be programmed by at least one prefetch program to operate as a programmed prefetcher, wherein during operation of the processor, said programmed prefetcher generates at least one prefetch address based on said plurality of load requests, wherein said programmable prefetch engine comprises a plurality of programmable logic elements and a plurality of programmable interconnectors; a prefetch requester that submits said at least one prefetch address to prefetch information from the external memory; and a prefetch memory, comprising: a random-access memory, wherein the processor is responsive to a write command that commands the processor to write said at least one prefetch program from said external memory into said random-access memory; and a read only memory that stores at least one predetermined prefetch program for programming said programmable prefetch engine to operate according to a predetermined prefetch definition, wherein at least one of said at least one predetermined prefetch program comprises a default prefetch program; characterized in that when the programmable prefetch engine does not have sufficient available space to load a next prefetch program, at least one prefetch program currently within the programmable prefetch engine is overwritten, wherein if any prefetch program being overwritten is not stored within the read only memory or the random-access memory, and if the random-access memory has sufficient available storage, the prefetch program is copied from the programmable prefetch engine into the random-access memory before it is overwritten in the programmable prefetch engine. a load monitor that tracks a plurality of load requests issued by the processor to retrieve information from the external memory; a programmable prefetch engine that is configured to be programmed by at least one prefetch program to operate as a programmed prefetcher, wherein during operation of the processor, said programmed prefetcher generates at least one prefetch address based on said plurality of load requests, wherein said programmable prefetch engine comprises a plurality of programmable logic elements and a plurality of programmable interconnectors; a prefetch requester that submits said at least one prefetch address to prefetch information from the external memory; and a prefetch memory, comprising: a random-access memory, wherein the processor is responsive to a write command that commands the processor to write said at least one prefetch program from said external memory into said random-access memory; and a read only memory that stores at least one predetermined prefetch program for programming said programmable prefetch engine to operate according to a predetermined prefetch definition, wherein at least one of said at least one predetermined prefetch program comprises a default prefetch program; characterized in that when the programmable prefetch engine does not have sufficient available space to load a next prefetch program, at least one prefetch program currently within the programmable prefetch engine is overwritten, wherein if any prefetch program being overwritten is not stored within the read only memory or the random-access memory, and if the random-access memory has sufficient available storage, the prefetch program is copied from the programmable prefetch engine into the random-access memory before it is overwritten in the programmable prefetch engine. a random-access memory, wherein the processor is responsive to a write command that commands the processor to write said at least one prefetch program from said external memory into said random-access memory; and a read only memory that stores at least one predetermined prefetch program for programming said programmable prefetch engine to operate according to a predetermined prefetch definition, wherein at least one of said at least one predetermined prefetch program comprises a default prefetch program; characterized in that when the programmable prefetch engine does not have sufficient available space to load a next prefetch program, at least one prefetch program currently within the programmable prefetch engine is overwritten, wherein if any prefetch program being overwritten is not stored within the read only memory or the random-access memory, and if the random-access memory has sufficient available storage, the prefetch program is copied from the programmable prefetch engine into the random-access memory before it is overwritten in the programmable prefetch engine.