A data processing apparatus comprising:
- a plurality of registers for storing items of architectural state;
- a plurality of functional units, each functional unit for performing a processing operation with reference to at least one of said items of architectural state;
- at least one of said functional units having a register cache associated therewith having one or more cache entries, each cache entry for storing a copy of one of said items of architectural state and a register identifier identifying the register containing that item of architectural state;
- control logic means for determining a subset of said items of architectural state to be copied in said register cache, said subset comprising at least one item of architectural state which, having regard to the processing operation of the functional unit with which said register cache is associated, is likely to be referred to multiple times, wherein the at least one of said functional units comprises a prefetch unit, the processing operation is a branch prediction operation for an indirect branch instruction, and the subset of said items of architectural state to be copied in said register cache comprises the value of one or more registers within said plurality of registers operable to store data from which a target address can be derived, wherein the prefetch unit is operable to issue an instruction address for an instruction to be prefetched, the prefetch unit further comprising a tagged lookup structure for storing, for a number of instruction addresses, an indication as to whether the instruction at that instruction address is an indirect branch instruction and one or more source registers for that instruction, the prefetch unit being operable to reference that tagged lookup structure for each issued instruction address, and in the event that that issued instruction address is identified in the lookup structure as being the instruction address of an indirect branch instruction, to cause the register cache to be referenced to determine if it contains an entry for any of the one or more source registers.