HPE Blog, Japan
1754706 メンバー
5278 オンライン
108823 解決策
新規ポスト
yoshihiko1989

【連載】導入前のアドバイス – プロセッサー①:Intel / AMD / プロセッサー技術

この記事は2020年12月に更新されました

 

連載記事「導入前のアドバイス」 - プロセッサー(Intel/AMD/プロセッサー技術)編です。

今回は、サーバーの中核を担うプロセッサーについて、各半導体メーカーの特徴と、プロセッサーが持つ構造や高速化させる機能などのプロセッサー技術をご紹介します。

プロセッサー.png

コンピューターにおいて、プログラムの実行により、データの処理などの演算処理を行う部品をプロセッサーと呼びます。x86サーバーの場合、プロセッサーは、主にサーバーの中核としてサーバーコンポーネントのすべての動作や演算を制御するCPU(Central Processing Unit中央演算処理装置)機能を持ったマイクロプロセッサーを指します。マイクロプロセッサーとは、複数の半導体で行われる CPU の処理を 1つの半導体チップに集積したものです。

HPE ProLiantサーバーでは、プロセッサーとして x86アーキテクチャーを採用しており、主に米Intel社製のXeonプロセッサーを採用したシステム(製品名の末尾が0で終わるサーバー 例:DL360ML350SY480など)と、米AMD社製のEPYCプロセッサーを採用したシステム(製品名の末尾が5で終わるサーバー 例:DL325DL385など)を幅広い製品レンジで提供しています。

Intel XeonもAMD EPYCも、32ビットアプリケーション資産との互換性を保つために、x86命令セットアーキテクチャーに準拠しています。従って、プログラミングレベルでは、どちらのプロセッサーも基本的には同じように動作します。

 

Intel社とAdvanced Micro Devices (AMD)社について

現在、HPEx86サーバーに搭載されているプロセッサーは、米Intel社製、または米Advanced Micro Devices(AMD)社製のものとなっています。

プロセッサー_pic1.png

Intel社は1968年設立の半導体メーカーで、現在のPCやサーバーで広く用いられている
x86
プロセッサーの元となった8086というプロセッサーを開発した会社です。8086以来x86のプロセッサーを発展させ、現在のCoreシリーズやXeonといったプロセッサーにつながっています。
Intel
社とHPEは、HPE Integrityサーバーで使用されているItaniumプロセッサーの共同開発や、Core Boosting と呼ばれるサーバーチューニング機能の開発など、長く協力関係を築いています。

HPEサーバーの機能では、Core BoostingHPE Persistent Memoryのサポートなど、Intel社製のプロセッサーでしかサポートしない機能も多くあり、AMD社製プロセッサーとの差別化につながっています。HPEのサーバーでは、DL360DL380など、末尾が0のサーバーでIntel社製のプロセッサーが採用されています。プロセッサー_pic2.png

一方のAdvanced Micro Devices(AMD)社は1969年設立の半導体メーカーで、長くIntel社のx86互換のプロセッサーを開発してきた会社です。2003年にx86互換の64ビット プロセッサーを初めて開発し、これが現在のPC・サーバーで利用される64ビット プロセッサーの標準となりました。現在ではPC用にRyzen、サーバー用にEPYCといったプロセッサーを提供しています。

HPEAMD社とも協力関係にあり、HPE製サーバーではDL325DL385など、末尾が5のサーバーにAMD製のプロセッサーが採用されています。AMD製のプロセッサーは、コア数が多く、かつコアやクロック当たりの性能はIntel社製のプロセッサーと同等性能を発揮するため、CPU単体のコストパフォーマンスだけでなく、CPUソケットや、物理サーバーに紐づくソフトウェアライセンスコストの削減効果も見込めます。

 

プロセッサーの中身について

現在のプロセッサーは一つの巨大なLSI(Large Scale Integrated circuit:大規模集積回路)ですが、その中には全体を制御するための制御装置、計算を行う演算装置、データを一時記憶するレジスタ、メモリなど記憶装置や、周辺機器とのインターフェース等から構成されています。

さらに、最近のプロセッサーは、以前はプロセッサー本体とは別に設けられていたレジスタより多くの情報を記録し処理を高速化させるためのキャッシュメモリ、浮動小数点演算を行うための浮動小数点演算ユニット、PCI Expressのインターフェース、メモリを制御するメモリコントローラー、グラフィックを表示するためのGPUまで1つのプロセッサーのLSIの中に含まれています。

また、以前は、1つのプロセッサーのLSIには、1つ分のプロセッサーのコアしか入っていませんでした。しかし近年は1つのLSIの中にプロセッサーコアを複数搭載したマルチコアとなっており、多いものでは64個ものコアが入っている製品もあります。

キャッシュメモリについて

キャッシュメモリとは、プロセッサー内部に存在する、メインメモリよりはるかに高速に動作するメモリです。最近のプロセッサーは、一次(L1)キャッシュ、二次(L2)キャッシュ、三次(L3)キャッシュという3段階に分かれたキャッシュメモリを持っています。
一次キャッシュは一番高速ですが容量が少なく、三次キャッシュは一番低速ですが容量が大きいものです。二次キャッシュはその中間となります。

プロセッサーは、必要なデータをまず一番高速な一次キャッシュに探しに行き、無ければ二次キャッシュ、三次キャッシュと探し、最後にメインメモリに探しに行きます。キャッシュメモリにデータがあればプロセッサーの動作を高速化できるため、キャッシュメモリの容量は多いほどプロセッサーの動作は速くなります。また、現在のプロセッサーは、三次キャッシュは複数のコアでデータを共有できるような仕組みになっています。

 

プロセッサーのマルチコア化

マルチコアとは、1つの物理的なプロセッサーの中に、複数のプロセッサー コアを搭載する技術の事です。外見的には1つのプロセッサーですが、論理的にはコアの数だけプロセッサーがあるものとして認識されます。

後に説明するハイパースレッディング(Intel) / SMT (Simultaneous Multi-Threading) (AMD)は、1つのプロセッサー コアを複数に見せかける技術でしたが、マルチコアは実際にコアが複数あります。

2000年代前半頃までは、1つの物理的なプロセッサーには、CPUコアは1つしか無いのが当然でした(シングルコア)。そのため、複数スレッドを同時に処理しようとすると、物理的なプロセッサーを複数搭載するしかありませんでした。

しかし、後に1つの物理的なプロセッサー内部にコアを複数搭載する技術が開発され、現在では1つの物理的なプロセッサーの中に2個以上のプロセッサー コアを搭載するのが当たり前になっています。多いものでは64個ものプロセッサー コアを1つの物理的なプロセッサーの中に搭載したものもあります。プロセッサー_pic3.png

 

ハイパースレッディング(Intel) / SMT (Simultaneous Multi-Threading) (AMD)

Intel社のハイパースレッディング、米AMD社のSMT (Simultaneous Multi-Threading)は、基本的には同じ技術で、プロセッサーの1つの物理的なコアを、疑似的に2つあるように見せかける技術です。これにより、本来は1つのコアでは1つの命令の流れ(スレッド)しか実行できなかったものが、並行して2つの命令の流れが実行可能になります。尚、疑似的に見せかけたコアを論理コアと言います。

現在のプロセッサーは、内部にパイプラインという、流れ作業的に命令を処理する仕組みを持っています。プロセッサーが処理を行う際、場合によって流れ作業のラインに空きが出来てしまったり、エラーを起こしてパイプライン上にある処理を全て破棄する必要が起きたりすることがあります。

こういった場合でも論理コアを複数にして命令を並列実行させると効率よく処理を行うことが出来るようになるために、この技術が開発されました。

プロセッサー_pic4.png

上の図はプロセッサーのHT無しの場合とありの場合の概念図です。
ハイパースレッディング / SMT (Simultaneous Multi-Threading)なし無しの場合、1つのコアには1つのスレッドしか実行できませんが、ハイパースレッディング / SMT (Simultaneous Multi-Threading)ありの場合は、1つのコアで2つのスレッドを同時に実行可能です。

ハイパースレッディング / SMT (Simultaneous Multi-Threading)はプロセッサーによっては対応していないものもありますので、詳細はシステム構成図を参照するか、Intel社・AMD社にお問い合わせください。

システム構成図では、Overviewのプロセッサーの項目に、対応についての記載があります。

 

クロック周波数について

プロセッサーの性能の一つの重要な指標として、クロック周波数(動作周波数)があります。プロセッサーはその動作のタイミングを合わせるために、クロック信号という電圧が高い→電圧が低いを周期的に繰り返す信号を利用しています。一度電圧が高くなった時から次にまた電圧が高くなる時までが1クロックです。

プロセッサー_pic5.png

プロセッサーはクロック信号に合わせて動作しますので、この1クロックの時間が短ければ短いほど、プロセッサーは高速に動作することになります。1秒を1クロックの時間で割ると、1秒当たりのクロック数を求めることが出来ます。これをクロック周波数といい、1秒に1クロック動作することを1Hz(ヘルツ)という単位として表されます。クロック周波数が高い=CPUは高速で動作することになります。

プロセッサーの処理能力はその構造そのものの違いにもよるので、構造の異なるプロセッサー同士の処理能力をクロック周波数の速度のみで測ることは出来ませんが、同じ構造のプロセッサー同士であればクロック周波数が高い方が高速となります。そのため、クロック周波数はプロセッサーの処理能力を見る上での重要な一つの判断材料となります。

昔のプロセッサーでは、このクロック周波数は常に固定であり、例えば2.0GHzのプロセッサーであれば動作は常に2.0GHzでした。しかし、クロック周波数が上がるとそれに比例して消費電力や発熱も増大します。そのため、プロセッサーがあまり働いていないときにもその速度を維持するのは無駄という事で、最近のプロセッサーはクロック周波数が可変になりました。これにより、あまり働いていないときにはクロック周波数を落として消費電力や発熱を抑えることが出来るようになりました。

従って、現在は「2.0GHzのプロセッサー」というと、プロセッサーの定格のクロック周波数が2.0GHzである、という意味となります。

 

Intelターボ ブースト テクノロジー / AMD Turbo Coreテクノロジー

Intelターボ ブースト テクノロジー、AMD Turbo Coreテクノロジーは、若干の違いはありますがどちらもほぼ同じ技術で、プロセッサーのクロック周波数を定格より速く動作させる技術です。

プロセッサー_pic6.png

例えば、上図のような、プロセッサーコアが4個ある、定格のクロック周波数が2.0GHzのプロセッサーがあったとします。
現在、4個あるコアのうち1個だけは負荷が多くかかり、定格一杯の2.0GHzで動作していますが、他の3個のコアは負荷が少ないので定格より低い0.5GHzで動作しています。

この場合、負荷がかかっているコアの仕事を他に分散できればいいのですが、行っている処理によっては必ずしもそれが出来るとは限りません。そういった場合、「負荷がかかっているコアは確かに定格一杯だが、プロセッサー全体としての発熱(消費電力)はまだ余裕がある。負荷を他に分散できないのだったら、今定格一杯で動いているコアに定格を超えて出来る限り速く動いてくれた方が良いのではないか」ということで、プロセッサー_pic7.png

集中して負荷がかかっているプロセッサー コアを、本来の定格をオーバーしてクロック周波数を高く動作させる機能を設けました。これがIntelターボ ブースト テクノロジー / AMD Turbo Coreテクノロジーです。

実際にいくつのコアを同時にどのくらいまで速くできるのかは、プロセッサーやメーカーによって異なります。製品によっては、プロセッサーの全てのコアを、発熱量や温度が許す限り同時に定格オーバーで動作させられるといった製品もあります。

Intel ターボ ブースト テクノロジー / AMD Turbo Coreテクノロジーの搭載の有無や、定格を超えて最大どのくらいまでクロック周波数を上げることが出来るかについては、各社の個別の製品によって異なりますので、詳細はIntel / AMD社にご確認ください。

次回は、プロセッサーに関するHPE独自技術やプロセッサーの選定・名称に関してご紹介します。

 

「導入前のアドバイス」まとめリンク

 

0 感謝
作者について

yoshihiko1989

日本ヒューレット・パッカード株式会社で Server Solution / CloudNative関連のプリセールスを担当しています。