1. A system having a processor comprising: circuitry for implementing an instruction set of the processor; and circuitry for implementing a register file; wherein the register file provides operand inputs for instructions of the instruction set; wherein the instruction set comprises a profiling instruction that receives a first input and a second input from the register file and a third input either from the register file or from a special register whose value was set by a previous instruction; wherein the profiling instruction further causes the processor to: add a number of cycles required for a memory read operation to an accumulating value of the total amount of waiting that a given memory operation in the program code is responsible for incurring, wherein the number of cycles is either the actual number of cycles or the actual number of cycles minus one; and wherein the accumulating value is only added-to in the case that the memory read operation requires two or more cycles; wherein the profiling instruction is executed immediately after initiation of the memory operation instruction; and wherein the output to the register file that updates the accumulating value occurs during the waiting cycle in which the memory read data returns so as to not require an additional output to the register file during memory read operations that take only one cycle.