1. A method comprising: obtaining an instruction address; and encoding the instruction address; wherein said encoding comprises: identifying the instruction address as belonging to a particular one of a plurality of groups of instruction addresses associated with respective distinct program constructs, wherein identifying the instruction address as belonging to the particular one of the plurality of groups of instruction addresses associated with the respective distinct program constructs further comprises classifying the instruction address as being one of a sequential address and a non-sequential address; and encoding the instruction address based on the identified group, wherein encoding the instruction address based on the identified group comprises, for a given instruction address classified as a non-sequential address, storing a corresponding branch target address in a multi-stage memory bank in which the branch target address is initially placed in a first stage of the multi-stage memory bank upon an initial occurrence of the branch target address and the branch target address is advanced to a subsequent stage of the multi-stage memory bank if the branch target address occurs a threshold number of times.