multiple registers? (can compilers always benefit from it?)
Adding registers is an architectural change that require recompilation, so is quite rare. But it was done in the x86 -> x64 migration, and the APX proposal might increase the register count in the future. It also includes various other improvements that should give some benefit.
SIMD? (do compilers use SIMD without code annotation?)
They could, but automatic vectorization is rather difficult to do well without manual intervention, and many compilers do not bother.
does a larger cache always speed up execution speed?
No. Latency is also a very important, and larger caches often result in higher latency. The working set and access patterns of the application is also important. If everything fits in the cache already there will be no benefit.
Is branch prediction faster with more transistors?
A higher transistor budget can help improve branch prediction and therefore performance. But some branches are almost impossible to predict, and some can be predicted well with even a simple predictor. So results will vary.
How can CPU designers go around frequency limitations to increase single thread speed?
The vast majority of improvements are a result of improved parallelization, from implicit instruction level parallelism to the massive explicit parallelism of GPUs. Most workloads have plenty of possible parallelism to be exploited, both implicitly and explicitly.
This will likely continue, with CPUs keeping more and more instructions in flight, as well as improvements on the software side to better use the available resources. It will also favor software that can scale well. Much of the advancement in AI has been enabled by the availability fairly cheap GPUs as an example.