2017/09123456789101112131415161718192021222324252627282930312017/11
【CPU(Central Processing Unit)の構造について】

今回はCPUの内部について書こうと思います。



【CPUの構造】
従来型のCPU

大まかにいうとALU+FPU演算ユニットと、命令やデータを
一時的に貯めてCPUと速度の遅いメモリ間を橋渡しするキャ
ッシュメモリ
と言う記憶装置によって構成されています。
(今回はデコーダ等は省略)

尚、L3キャッシュまでがCPUです。



【ALUとは(Core)】
ALU(Arithmetic Logic Unit)とは論理演算ユニットの事
です。

論理演算では分かり難いので分かりやすく説明すると、1 +
2
3 × 4等の整数演算をする為の回路です。

以下で説明するFPUは現在ALUとセットになっていますが、
以前のFPUはCPUの外部に個別で搭載していた為、Intel
独立したALUの数Core数として定義しています。



【FPUとは】
FPU(Floating Point Unit)とは浮動少数点演算ユニット
事です。

簡単に説明すると、0.23514と言う様な小数点以下を含む演
をする為の回路です。

整数演算では出来ないより正確な演算が可能です。

尚、物理演算等の学術演算制御演算等に必要であり、ゲ
ーム等の座標計算にも使われています。



【キャッシュメモリ】
上記でも触れていますが、CPU側の演算能力に対してメイン
メモリから直接読み込むと速度が遅いので、演算ユニット
対して転送速度を補う為にCPUにはキャッシュメモリと言う
時記憶装置
が搭載されています。


【L1キャッシュ】
L1キャッシュは演算ユニットから一番初めにアクセスされる
キャッシュメモリで、一番アクセス速度が速い記憶領域です。

演算ユニットへの命令を格納するL1 I(instruction)キャッシ
ュとデータを格納するL1 D(data)キャッシュの二つが搭載さ
れており、プログラムとデータで干渉しない様になっています。


【L2キャッシュ】
L2キャッシュはL1 Dキャッシュに必要なデータが無い時に2
番目にアクセス
される記憶領域です。

L1 Dキャッシュよりも容量が大きいですが、速度は遅くなり
ます。


【L3キャッシュ】
L3キャッシュは更にL2キャッシュにも必要なデータが無い場
合に3番目にアクセスされる記憶領域です。

L2キャッシュよりも更に容量が大きく速度が劣りますが、この
キャッシュはCore毎搭載されているL1やL2と違い、Core
全体
共有しているキャッシュです。

一つのソフトを複数のCoreで処理(マルチスレッド処理)をス
ムーズにするには、共有キャッシュが必要に成ります。

尚、L3が搭載されていないCPUの場合、L2キャッシュが共
有キャッシュになっているか、メモリーコントローラの制御で
共有化
を補っています。



【CPU外のアクセス】
L3キャッシュにも必要なデータが無い場合は、メインメモリ
ストレージ(HDD,SSD)とアクセスしに行きます。

転送速度がキャッシュよりも可也落ちる為、処理の遅延の原
は基本的にメインメモリとストレージにあります。



【CPUで重要な部分とは】
上記で演算ユニットやキャッシュについて説明しましたが、
常用途
で使う様なソフトウェアでCPUの重要な部分とは、もっ
ぱら使われるALUです。

殆どのソフトは基本的に整数演算しか使っておらず、少数を
利用した演算
は殆どやっていませんので、FPUは殆ど使われ
ていません。

又、ゲームの様にFPUを使う事があっても、処理でFPU使
い続ける
様な一般的なソフトは殆どありませんので、

一般用途では重要な演算ユニットではありません。

だから、学術演算や制御演算等に使う専用のコンピュータ
性能なら兎も角、FPUだけの性能を計るスーパーπ線形台
数演算
をひたすら繰り返すだけのLINPACKの数値は、一般
用途
の参考には全くなりません。



【AMDのCPUの構造について】
AMD CPU(Piledriver)
AMDのCPUも以前はIntelと同じCore毎FPUを搭載したC
PUでしたが、現在は2個ALUにそれ毎のL1 Dキャッシュと、
1個FPUL2キャッシュ共有したCPUに変わりました。

上記の2ALU+1FPUの構成を1モジュールと呼んでいる為、
HTTと同様なものだと間違った主張をする者が居ますが、

ALUはL1 Dキャッシュ個別に搭載しており、ALU毎に独立
した演算
が可能なのでHTTとは違います。

つまり、1モジュール1Coreではなく、2Coreです。

又、FPU共有化したのは、上記した様に一般用途で殆ど使
われていないのと、使われていたとしてもCore毎に搭載する
必要があるほど負荷が掛からないからです。



(2014/6/5追記)
【Steamrollerの構造】
AMD CPU(Steamroller)
Ax-7xxxシリーズ(Kaveri)から1モジュール内にデコーダ2
基搭載
し、命令数を増やして処理をよりスムーズになる様に
改良されました。

尚、FetchとはキャッシュやメモリからCPU内命令コードを
呼び込む
為の回路で、DecodeとはFetchから送られてきた
命令をCore理解できる情報に変換する為の回路です。



(2017/8/9追記)
RyzenでALU + FPUの構成に戻りました。

但し4基のALUを1纏めにして4経路2系列で制御する方式
なので多少基本と違いますが。



CPUがどういうものなのか知っておくと、惑わされる事が無く
なるので覚えておくと良いでしょう。



このBlogはBlogランキングに参加しています。
役に立ったと思った方はクリックをお願いします。




総合情報に戻る

TOPに戻る
この記事へのコメント:
コメント:を投稿する
URL:
コメント:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
この記事のトラックバック URL
https://pcnomori.blog.fc2.com/tb.php/139-fcd5a5a7
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック:
成長因子