I used it in undergrad to run benchmarks with different cache sizes and cache coherence strategies to see which were more effective. I'm sure Intel and AMD have much more advanced simulation tools though. Most likely multiple, or at least multiple levels of granularity (so you could do stuff like, simulate these potential branch predictor designs at a gate level, and then turn around and simulate the entire CPU at a higher level of abstraction.)
It's also important to note that decisions like this are hugely workload-specific. There's no single best processor for all applications. In extreme examples: almost every transistor on a vector SIMD unit is wasted when trying to optimize for a client Javascript benchmark; streaming symmetric encryption gets no benefit from L3 cache (which is like half the chip these days!); etc...
One optimized for node.js tasks, one for databases, ...
On the other side of the computing spectrum, there were a couple of papers in 2010s about offloading most common mobile tasks (like CSS layouting) to the specialized mobile CPU subsystems. Maybe this should have been implemented if Google made their own mobile CPU.
At least two different tasks, audio and graphics, have special application specific processors. Networking and crypto are also often offloaded.
as a DB guy, there's no 'one task' for DBs . The only thing I can think that is nearly characteristic of DBs I've worked on is that they're IO bound.
That's possibly true of most things except Floating point and graphics.
*which I swear every company has their own version of