Existem duas coisas que podem limitar o desempenho entre as CPUs: os fatores internos e os fatores externos.
Basicamente, os fatores internos são o que é intrínseco à arquitetura interna do núcleo da CPU. A primeira coisa a notar é o número de ciclos por instrução que sua CPU requer. Por exemplo, em operações de ponto flutuante, passou de 50 ou 60 ciclos nas CPUs antigas para algo como 3 ou 4 agora. Isso também é sem considerar novas instruções que podem, por exemplo, realizar 4 multiplicações ao mesmo tempo em um núcleo.
Depois vem a segunda grande diferença entre muitas arquiteturas é o pipelining. Como uma instrução leva tempo para ser executada, as arquiteturas modernas tentam executar mais de uma instrução ao mesmo tempo, se forem independentes e usarem partes diferentes da CPU. As CPUs mais inteligentes também podem solicitar o acesso à memória antecipadamente e obter menos atrasos. O Atom é, por design e fora dos últimos designs, bastante ruim, porque um pipeline complexo usa muita energia. Você pode se lembrar da arquitetura do Netburst como um exemplo terrível do que acontece quando você tenta fazer um pipeline muito grande.
Nos fatores externos, a memória e o tamanho e a arquitetura dos caches afetam muito o desempenho, dependendo do código. Se eu assumir que meu código de teste de benchmark se encaixa no cache do i7, mas não no Atom, você pode imaginar que o Atom perderá muito por causa disso. O Atom usa caches menores e tem uma latência maior quando requer acesso à memória. É por isso que ele terá um desempenho muito ruim comparado a um i7 quando há muitos acessos à memória: as CPUs precisam buscar a memória principal o tempo todo e isso é lento.