並列計算
一方で、マイクロプロセッサの消費電力は P = C × V 2 × F {\displaystyle P=C\times V^{2}\times F} という式で与えられる。ここで、P は消費電力、C はクロックサイクル毎に切り替えられる静電容量(入力が変化するトランジスタの総数に比例)、V は電圧、F はプロセッサの周波数(正確には1秒あたりのサイクル数)である。従って、クロック周波数が高くなると、プロセッサの消費電力も増大する。プロセッサの消費電力の増大は、インテルが2004年5月に開発中だったプロセッサをキャンセルした最大の理由であり、この時点がクロック周波数向上が性能向上の主たる要因となっていた時代の終焉であった 。
ムーアの法則は、マイクロプロセッサでのトランジスタの実装密度が18ヶ月から24ヶ月毎に倍になるという経験則である。消費電力の問題は以前から指摘されていたが、ムーアの法則は未だに有効である。クロック周波数向上の時代が終わると共に、増大したトランジスタ数は周波数向上以外に利用されることになり、並列計算をマイクロプロセッサ上で実装する時代が到来した。
並列型コンピュータでのプログラミング向けに、プログラミング言語、ライブラリ、API、並列プログラミングモデルが生み出されてきた。
それらは、前提とするメモリアーキテクチャ(共有メモリ、分散メモリ、分散共有メモリ)によって分類できる。共有メモリ型プログラミング言語は、共有メモリ上の変数を更新することで相互の通信を実現している。分散メモリ型ではメッセージパッシングが使われる。共有メモリ型APIとしては、POSIXスレッドとOpenMPが広く使われている。一方メッセージパッシング型のAPIとしては、Message Passing Interface (MPI) がよく使われている。
マルチコアプロセッサは、複数の実行ユニット(コア)を持つプロセッサである。マルチコアとスーパースケーラは異なる概念である。どちらも複数の命令を同時並列的に実行可能だが、スーパースケーラが1つの命令ストリーム(スレッド)から複数の命令を取り出して実行するのに対して、マルチコアでは複数の命令ストリームから複数の命令を取り出して実行する。マルチコアの個々のコアがスーパースケーラになっていることもある。
初期の擬似マルチコア方式として同時マルチスレッディングがあった。この場合のプロセッサにはコア(実行ユニット)は1つしかないが、キャッシュミス時などコアが待ち状態になったときに、別のスレッドを実行できる。
インテルのマルチコアアーキテクチャは Core と Core 2 プロセッサから始まった。別の有名なマルチコアプロセッサとしては、ソニー・コンピュータエンタテインメントのPlayStation 3用に設計されたIBMのCellがある。