1. A method for operating a computer processor comprising a first processor chip having a first processor, and a second processor chip having a second processor, wherein the first and second processor chips are connected in a stacked configuration with the first and second processors connected through vertical connections between the first and second processor chips, the method comprising: generating a first control signal to operate the computer processor in a first mode of operation wherein the first and second processors are logically configured as a single processor as seen by other entities, which is configured to implement a run-ahead function, wherein the first processor operates a primary thread of execution and the second processor operates a run-ahead thread of execution, wherein the primary thread and the run-ahead thread execute concurrently; and generating a second control signal to operate the computer processor in a second mode of operation wherein the first and second processors operate independently, wherein in the first mode of operation, program instructions of an executing program are fetched and stored in a shared memory, wherein the first processor executes the program instructions in the shared memory in program sequence, wherein the second processor speculatively runs ahead of the first processor by identifying and executing only data fetch instructions, data store instructions, and branch instructions of the program instructions, while disregarding all other program instructions, and wherein in the first mode of operation, the first processor maintains and modifies an architected state of the executing program and the second processor does not maintain and modify the architected state of the executing program but rather maintains a speculative state; wherein in the first mode of operation, the second processor is configured to identify an upcoming data store instruction stored in the shared memory, and to determine if a cache line exists in a cache storage for the upcoming date store instruction, wherein if it is determined that the cache line does not exist in the cache storage, the second processor is configured to (i) have a cache line allocated for the upcoming data store instruction and (ii) ensure that the allocated cache line is in a data store ready state which enables data to be stored in the allocated cache line, and wherein if it is determined that the cache line does exist in the cache storage, the second processor is configured to (i) determine if the existing cache line is in a data store ready state and (ii) proceed to place the existing cache line in a data store ready state, if the existing cache line is determined by the second processor to not be in a data store ready state.