0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】CPU のアーキテクチャ【5分で読める】

Last updated at Posted at 2025-02-19

CPU のアーキテクチャ

理解のために小咄形式でまとめました。長くなってしまったので5分で読めないかも。

登場人物

  • 太郎(後輩):入社1年目の若手エンジニア。
  • 花子(先輩):システムエンジニア歴3年の先輩。

場面:オフィスの開発ルーム
太郎が CPU のアーキテクチャ に関する資料を見ながら、花子に質問する。

太郎:「花子先輩、CPU のアーキテクチャ って具体的に 何を指す のか、いまいちピンとこないんです…。」

花子:「なるほどね。CPU アーキテクチャ とは、 プロセッサの設計や動作の仕組み のことよ。 ハードウェアとソフトウェアの視点 から考えると分かりやすいわ。」


CPU アーキテクチャ

花子:「CPU のアーキテクチャ を理解するには、 2 つの主要な視点 から考えるといいわ。」

  1. ハードウェアアーキテクチャ
  2. ソフトウェアアーキテクチャ

1. ハードウェアアーキテクチャ

花子:「ハードウェアアーキテクチャ とは、 CPU の物理的な構造やコンポーネントの配置 のことよ。」

CPU コアとキャッシュ

  • CPU は 1 つ以上のコアを持つ(例: デュアルコア、クアッドコア、オクタコア)
  • 各コアは L1, L2, L3 のキャッシュを持つ
  • L1 は最速だが小さい、L3 は遅いが大容量

花子:「CPU のキャッシュとメモリの構造は、 レストランのキッチンの食材管理 にそっくりなの。」

  • L1 キャッシュ(最速・小容量) → シェフの手元にある調味料(塩・胡椒・オイル)
    すぐ使えるけど容量が少ない。シェフは頻繁に使うものだけを置いて、調理の効率を最大化する。

  • L2 キャッシュ(やや遅い・中容量) → キッチンの棚や冷蔵庫の食材(肉・野菜・牛乳)
    少し時間がかかるけど、すぐに取り出せる。手元の調味料が足りなくなったら、すぐ補充できるように準備されている。

  • L3 キャッシュ(最も遅いが大容量) → 店の裏にあるストック倉庫
    たくさん保管できるが、取りに行くのに時間がかかる。キッチンで足りなくなったら、スタッフが倉庫に行って補充する。

花子:「このように、 よく使うデータ(食材)は手元に、たまに使うものは少し遠くに、大量に保管するものは倉庫に という構造は、 CPU のキャッシュとメモリの階層構造と全く同じ考え方 なのよ。」


CPU のバスとインターコネクト

  • CPU 内部では、データをやり取りするための バス がある
  • コア同士は インターコネクト(リングバス、メッシュ) で通信
  • データの流れが詰まると スループット低下 の原因になる

花子:「これは 道路のネットワーク みたいなもので、 渋滞(ボトルネック) が発生すると データの流れが悪くなる のと同じね。」

CPU のバスとは?
高速道路と一般道路のネットワーク

花子:「CPU 内部のバスは、データをやり取りするための道路のようなもの なのよ。」

  • メインバス(フロントサイドバス)高速道路

    • CPU とメモリの間をつなぐ最重要ルート
    • 交通量(データ転送量)が多いので、十分な車線(帯域幅)が必要
  • 内部バス(データバス、アドレスバス)一般道路

    • 各町(CPU のコアやメモリ)をつなぐローカルな道。
    • 一般道路の数が少ないと、データの流れが詰まりやすくなる

花子:「CPU のバスが 広い道路(帯域幅が広い) なら、大量の車(データ)をスムーズに運べる わ。でも、道路が狭いと、渋滞(データ詰まり)が発生し、スループットが低下する のよ。」


コア同士のインターコネクト

花子:「CPU のコア同士は、データをやり取りするための インターコネクト で通信しているのよ。」

環状線(リングバス)とメッシュ型道路
  • リングバス(環状線)
    • 大都市の環状道路(例: 東京の首都高速環状線、大阪の阪神高速環状線)に似ている。
    • データは時計回りまたは反時計回りに流れる
    • ある地点が詰まると、その後のすべての車(データ)に影響が出る
    • メリット:設計がシンプルでコストが低い。
    • デメリット:混雑時にデータの流れが遅くなる(レイテンシ増加)。

花子:「片側1車線の環状線 だと、事故や渋滞が発生すると、後ろの車が進めなくなる(ボトルネック) わ。片側3車線の環状線 なら、渋滞を回避しやすく、スムーズに流れる(帯域幅が広い) のよ。」

  • メッシュ型インターコネクト(都市部の道路網)
    • 東京やニューヨークのような碁盤目状の道路ネットワーク に似ている。
    • 各コア(街)が 複数のルートを通じて接続されている
    • どこかの道が渋滞しても、別の道を通れば回避できる(耐障害性が高い)。
    • メリット:通信遅延が少なく、スループットが高い。
    • デメリット:設計が複雑でコストが高い。

花子:「リングバス(環状線)は、環状道路で一方通行に流れる道よ。メッシュ型(都市部の道路網)は複数の道があり、最適なルートを選べるわ。メッシュ型のほうが一般的に効率が良い のよ。」


バスの詰まりとスループットの低下

通勤ラッシュと渋滞

🚗 現実のイメージ

  • 朝の通勤ラッシュ時、電車やバスが混雑すると、駅や道路が詰まり、移動速度が落ちる
  • CPU でも バスの帯域幅が狭いと、データが渋滞して処理が遅くなる

💡 解決策

  • バスの帯域幅を広げる(高速道路の拡張) → より多くのデータを同時に流せる。
  • 別のルートを用意する(複数の鉄道路線を作る) → データの流れを分散し、混雑を避ける。

高性能 CPU での対策

データセンターの通信ネットワーク

データセンターでは、多数のサーバー(コア)が大量のデータをやり取りする

  • シンプルなネットワーク(リングバス)

    • 小規模なデータセンターでは効率的
    • しかし、大量のリクエストが来ると ボトルネックが発生しやすい
  • メッシュ型ネットワーク

    • 大規模なデータセンターは、高速通信のためにメッシュ型を採用
    • トラフィックが分散され、処理速度が向上

花子:「リングバスは小規模向け、メッシュ型は大規模向け なのよ。」


太郎:「つまり、CPU のバスは 道路のネットワーク みたいなもので、 リングバスは環状線、メッシュ型は都市部の碁盤目状の道路 ってことですね!」

花子:「その通りよ。だから、CPU の設計では、ボトルネックを避けるために適切なバス構成を選ぶことが大事 なの。」


マルチプロセッサと NUMA

  • マルチプロセッサ(SMP)複数の CPU が対等に動作
  • NUMA(非均一メモリアクセス)CPU に近いメモリが速い、遠いと遅い
  • NUMA は特に サーバーやデータセンター で重要

花子:「これは 複数のキッチンを持つレストラン みたいなもので、 近くの食材(メモリ)を使うと速い けど、 遠い場所にあると時間がかかる のよ。」

マルチプロセッサ(SMP)

複数のシェフがいるレストラン

花子:「マルチプロセッサ(SMP)は、複数の CPU が対等に動作し、並行して処理を行う仕組み なの。これは 複数のシェフがいるレストランのキッチン に例えられるわ。」

  • シングルプロセッサ(1人のシェフ)

    • シェフが 1人で料理をすべて作る
    • 1つの料理を作り終えるまで、次の料理に手をつけられない。
    • 混雑時に注文がたまると、処理速度が落ちる
  • マルチプロセッサ(複数のシェフ)

    • 複数のシェフが並行して料理を作る
    • 1人がメインディッシュ、1人がサイドメニュー、1人がデザートを担当すると、全体の調理速度が向上
    • 各シェフが 独立して働くが、同じキッチン(共有メモリ)を利用 するため、効率的に作業できる。

花子:「このように、 CPU が増えると、並行処理能力が向上し、全体の処理速度が上がる のよ。」


大規模なコールセンター

花子:コールセンターも マルチプロセッサの仕組み に似ているわ。」

  • シングルプロセッサ(1人のオペレーター)

    • 1人のオペレーターが全ての電話を対応する
    • 1つの電話を処理している間、他の電話は待たなければならない。
  • マルチプロセッサ(複数のオペレーター)

    • 複数のオペレーターが並行して対応 することで、待ち時間を減らし、全体の処理能力が向上
    • それぞれが 同じ顧客データベース(共有メモリ)を参照しながら対応する

花子:「こうすることで、一度に多くの問い合わせを処理できるようになる のね。」


NUMA(非均一メモリアクセス)

複数のキッチンを持つレストラン

花子:NUMA(Non-Uniform Memory Access)は、CPU に近いメモリほどアクセスが速く、遠いメモリにアクセスすると遅くなる という仕組みよ。これは 複数のキッチンを持つレストラン に例えられるの。」

理想的な環境(SMPに近い)
  • それぞれのシェフが 自分のキッチン(メモリ)で料理を作る
  • 材料が すぐ手の届く範囲 にあるため、最速で調理 できる。
NUMA環境(大規模レストラン)
  • あるキッチンで材料が足りなくなると、別のキッチン(遠くのメモリ)から取り寄せる必要がある
  • 近くにある材料ならすぐに使えるが、遠くの倉庫から取りに行くと時間がかかる。
  • そのため、各キッチンは できるだけ自分のエリアの食材を使うほうが効率がいい

花子:「これが NUMA の基本概念で、CPU が自分に近いメモリを使うと速く、遠くのメモリにアクセスすると遅くなるという仕組みなの。」


分散オフィスのプリンター利用

花子:「NUMA の概念は、会社のプリンター利用 にも似ているわ。」

SMP(均一メモリアクセス)の場合
  • オフィスのどこにいても、すべての人が同じ速度でプリンターを使える
NUMA(非均一メモリアクセス)の場合
  • 各部署ごとに 専用のプリンター(ローカルメモリ) を持っている。
  • 自分の部署のプリンターを使う方が速い(CPU が近いメモリを使う)。
  • しかし、別の部署のプリンターを使うと、ネットワークを経由するため印刷に時間がかかる(遠いメモリにアクセスすると遅くなる)。

花子:「このように、NUMA 環境では できるだけ近くのリソースを利用することが重要 なのよ。」


シェアオフィスのコーヒーマシン

花子:「大きなシェアオフィスに、各フロアごとにコーヒーマシンが設置 されていると考えてみて。」

  • 各フロアの人が自分のフロアのコーヒーマシンを使う(最適なNUMA環境)

    • すぐにコーヒーを入れられる(メモリアクセスが速い)。
  • 違うフロアのコーヒーマシンを使う(NUMAの遅延)

    • 他のフロアまで行く必要があり、時間がかかる(メモリアクセスが遅い)。

花子:「CPU も近くのメモリを使うほど高速で、遠くのメモリにアクセスすると遅くなるのよ。」


太郎:「なるほど!マルチプロセッサ(SMP)は 複数のシェフが並行して料理を作る仕組み で、NUMA は 遠くの食材を取りに行くと遅くなるレストランみたいなもの なんですね!」

花子:「そうよ。だから、NUMA のシステムでは、できるだけ近くのメモリを活用するように設計することが重要 なの。」


2. ソフトウェアアーキテクチャ

花子:「ソフトウェアアーキテクチャ では、 CPU がどのように命令を処理するか を考えるの。」

CISC vs RISC

  • CISC(Complex Instruction Set Computer)
    • 複雑な命令を 1 つで処理できる
    • x86(Intel, AMD)が代表例
  • RISC(Reduced Instruction Set Computer)
    • シンプルな命令を高速に実行
    • ARM(スマホ、組み込み機器)、RISC-V などが代表例

花子:「これは オートマ車(CISC)マニュアル車(RISC) の違いみたいなもので、 CISC は一つの操作で多くを処理 し、 RISC はシンプルな操作を素早く繰り返す のよ。」


仮想化とコンテナ

  • 仮想 CPU(vCPU)仮想マシン(VM)内でエミュレーションされる CPU
  • コンテナOS レベルの仮想化で、CPU リソースを分割

花子:「これは シェアオフィス みたいなもので、 仮想マシンは完全に独立したオフィスコンテナは仕切りがあるだけのデスクスペース なのよ。」


命令セットとシステムコール

  • CPU は 決められた命令セット に従って動作
  • アプリケーションが OS にリクエストを出すと システムコール を通じて CPU が動作
  • 例: read(), write(), fork(), exec() など

花子:「これは レストランの注文システム みたいなもので、 お客さん(アプリ)が店員(OS)に注文し、シェフ(CPU)が料理を作る のと同じね。」


花子:「CPU のアーキテクチャ高速道路のネットワーク に例えると、こんな感じね。」

  1. ハードウェアアーキテクチャ道路の設計

    • コア = 走行車線
    • キャッシュ = 近場の駐車場
    • バスとインターコネクト = 高速道路
  2. ソフトウェアアーキテクチャ交通ルール

    • RISC = シンプルな標識でスムーズに進む
    • CISC = 複雑な信号制御で高度な動きができる
    • システムコール = 交通整理員(OS)が指示を出す

太郎:「すごく分かりやすいです! ハードウェアとソフトウェアの両方の観点 で CPU のアーキテクチャを考えるのが重要なんですね!」


花子:「CPU のアーキテクチャ を理解すると、 プロセッサの設計やパフォーマンスの最適化 に役立つわ。」

太郎:「ありがとうございます! NUMA の影響を調べるために lscpu コマンドで CPU アーキテクチャを確認 してみます!」

参考リンク

システムパフォーマンス関連記事の目次

システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?