view paper/multicore.tex @ 6:d5c4d4a47f10

*** empty log message ***
author akira
date Sat, 16 Feb 2008 13:28:37 +0900
parents 3f96fdc6d522
children 5ed3b4005142
line wrap: on
line source

\chapter{マルチコアプログラミング}

マルチコアプログラミングは一つのマシン内で複数のコアを扱うプログラミング
である。本性ではマルチコアプログラミングの難しい点を挙げ、それを解決する
のに必要な要素を説明する。
%\section{マルチコアプログラミングとは}

\section{マルチコアプログラミングの難しさ}
マルチコアプロセッサでは、各プロセッサコアは基本的に独立しているため、それぞれのプロセッサコアは他のプロセッサコアに影響されることなく動作することができ、原理は複数のプロセッサコアで処理を分担し、性能をあげることである。\\
しかし、単純にコアの数に性能が比例することはない。それは各プロセッサコアで行う処理の依存関係が存在し、複数のプロセッサを活用するアルゴリズムが非常に難しい現状があるからである。\\
実際、多くのアプリケーションはシングルコアだけを使用し、マルチコアコンピュータで実行しても処理の向上はみられない。このため、独自のプログラムを新しい方法で作成する必要がある。\\
また、一概にマルチコアといってもさまざまなマルチコアがある。簡単に分別するとホモジニアスマルチコア(図\ref{fig:homogeneous})とヘテロジニアスマルチコア(図\ref{fig:heterogeneous})がある。ホモジニアスマルチコアとはすべてのコアが同じコアで構成され、プログラマ側はCPUコアや命令セットの違いを意識する必要がないが、汎用的なコアですべての処理をこなすため、処理効率が悪いという特徴がある。それに対して、ヘテロジニアスマルチコアには二種類の構造があり、単一命令セットで構成されたマルチコアと異種命令セットで構成されたマルチコアがある。単一命令セットで構成されたマルチコアはCPUコアをタスクに合わせて、最適化することで、効率の高いCPUを作ることができる。しかし、異種命令セットのヘテロジニアスマルチコアはそれだけでなく、命令セットアーキテクチャーレベルからタスクを最適化する必要がある。
\\
それだけではなくcellのような特殊な拡張が施されたマルチコアも存在する。\\
必然的にシングルコアでは限られていたアルゴリズムがマルチコアの種類や並列化を考慮しアルゴリズムを考え直さなければならない。\\
\begin{figure}[htb]
\begin{center}
\includegraphics[height=6cm]{./fig/homogeneous.eps}
\end{center}
\caption{ホモジニアスマルチコア}
\label{fig:homogeneous}
\end{figure}
\begin{figure}[htb]
\begin{center}
\includegraphics[height=6cm]{./fig/heterogeneous.eps}
\end{center}
\caption{ヘテロジニアスマルチコア}
\label{fig:heterogeneous}
\end{figure}
%マルチコアプログラミングではほとんどの場合、次の3つのうちのいずれかのパターンで並列化することができる。
%\begin{itemize}
%\item データ分割による並列化
%\item 仕事を振り分ける方法による並列化
%\item 流れ作業で振り分ける方法による並列化
%\end{itemize}
\section{Tukwila}
TuksilaとはIntelが開発している次世代CPUである。(図\ref{fig:tuksila})\\
\begin{figure}
\begin{center}
\includegraphics{./fig/tuksila.eps}
\end{center}
\caption{tukwila}
\label{fig:tuksila}
\end{figure}
Tuksilaプロセッサはクアットコアデザインを採用し、クロック周波数は最大2Ghzで、統合メモリコントローラ付きのQuickPath Interconncectシステムアーキテクチャになっている。フルインターフェースのQPIがCPU間の接続に、ハーフ幅のQPIをI/Oチップなどとの接続に使われ、それぞれのQPIが4.8Gtpsで1リンクのピーク帯域は19.2GB/secで、4+2リンクで96GB/secの帯域となる。しかし、これはホモジニアスマルチコアとなりへテロジニアスマルチコアほど複雑ではない。しかし、これからIntelはヘテロジニアスマルチコアを採用すると言われている。
\subsection{これからのマルチコアプログラミング}
前述した通り、これからのマルチコアはヘテロジニアスマルチコアがくると言われている。そこで汎用のヘテロジニアスマルチコアプロセッサであるcellを基にどこが難しいのかを述べる。\\
cellでは各コアにそれぞれメモリを保持している。そのため、一種の閉じた分散プログラミングが要求されているといえる。しかもそれぞれのコアに付属しているメモリがとても小さい。その小さなメモリ環境の中でいかにプログラムとデータを収束させながら、それぞれのコアを同時に動作させるかというのが肝となる。それと同時にアーキテクチャの進化にテスト環境やデバッグ環境が追いついていない実態がある。