2019/03/25

コンピュータのチップセットを理解する

main boad cpu
2019 年 3 月 25 日 Emil Hozan 著

コンピュータの CPU(Central Processing Unit)がコンピュータの内部のほとんどのことを処理すると考えられていることが多いようです。ある意味、これは正しい考えとも言えますが、CPU に代わって処理を実行する要素が存在します。これらの要素はチップセットと呼ばれ、それぞれが特定のタスクを実行します。チップセットはそれぞれの役割と設置される場所によって、コンピュータの内部でさまざまな処理を実行し、情報を CPU に返します。そして、CPU は、中央処理装置(Central Processing Unit)という名前のとおり、その中央に位置する部分ということになります。

コンピュータのケースを開けたり、PC を組み立てたりしたことがある方であれば、すべてのコンポーネントを乗せる基盤であるマザーボードを観察したことがあるでしょう。マザーボードはサーキットボードとも呼ばれ、プラグイン可能なモジュールを保持し、統合されたスロットやポートで入出力装置を利用できるようにする役割を果たします。すべてのマザーボードが同じというわけではなく、利用できるスロットが異なるものがあります。

一般的なスロットとポートの概要

CPU ソケット以外の一般的なスロットやポートとしては、追加メモリアドレッシングに対する高速 CPU アクセスの目的で使用される RAM(Random Access Memory)モジュール、ゲームやグラフィック編集用のビデオカードに使用される AGP(Accelerated Graphics Port)、ファイルやプログラムの永続的保存に使用される SATA(Serial Advanced technology attachment)ポート、さらには、用途はさまざまではあるものの、コンピュータのマザーボードに 接続する Wi-Fi モジュールやその他の周辺機器を追加するための PCI(Peripheral Component Interconnect)ポートなどがあります。

これ以外の一般的なポートとして、USB(Universal Serial Bus)と呼ばれる、マウスやキーボードを接続できるポートがありますが、これは、古くはパンチカードであったものが発展したものです。

チップセットの連結

PC のマザーボードには、ノースブリッジとサウスブリッジと呼ばれる 2 つの主要チップセットがあります。ノースブリッジは CPU に直接接続されるため、CPU と高速を必要とするポートの間の高速転送が可能です。これには、RAM モジュールや PCI Express カード、さらには AGP が含まれます。

サウスブリッジは、Express ではない PCI バス、USB ポート、ハードディスクの接続を処理します。これらのコンポーネントは通常、ノースブリッジと通信するコンポーネントほど高速の通信を必要としません。このような違いには、意味があります。たとえば、RAM にレイテンシが発生すると、コンピュータが問題なく動作していたとしても、問題が発生する可能性があります。グラフィックスカードについても同様であり、ゲームを楽しんでいる時に画面が途切れると、非常に不快に感じるでしょう。

上記のコンポーネントはいずれも、バスと呼ばれるスロットに接続されます。もちろん、スクールバスでも乗り合いバスでもなく、接続されたコンポーネントをそれぞれのブリッジに接続するための回路です。そして、これらのバスは、ノースブリッジあるいはサウスブリッジのどちらに接続されているか、また、用途が何であるかによって、速度が異なります。

CPU と他のチップの通信はどのように処理されるのか

私も同じ疑問を持ったので、これは良い質問だと思います。このことを調べるにあたり、これを処理するための何らかの API(Application Programming Interface)があるはずだと考えました。そしてそれは、デバイスドライバと呼ばれているものであり、簡単に言えば、プラグイン可能な周辺機器モジュールであれば複数の方法でプログラミングが可能であるはずであり、コンピュータの CPU と通信するための標準化された何らかのフォーマットが必要です。

この件について調べてみたところ、私の考えていたことが大筋として正しいことがわかったため、その仕組みの技術的な詳細をここでまとめておくことにしました。ただし、すべての手順を説明することがこの記事の主旨ではないため、詳細については、この記事の末尾に挙げる、調査にあたって私自身も参考にした資料をお読みになることをお勧めします。

このプロセスを簡単に説明すると、CPU は、ノースブリッジとサウスブリッジを経由して、接続されている他のコンポーネントと会話します。デバイスドライバは、この CPU の会話を可能にする抽象レイヤとして、接続されているデバイスとの間の通信をそれぞれの通信方式に変換します。

セキュリティに関する問題はあるか

チップセットはシステムに組み込まれたものであり、直接やり取りすることはなく、少なくともやり取りする確実な方法ではないことから、問題や心配はないものと考えられますが、実際には、チップセットやチップ全般にもセキュリティの問題が存在します。Spectre および Meltdown の脆弱性、さらには、インテル固有の Foreshadow の脆弱性の例でもわかるように、セキュリティの問題は存在し、ハードウェアのハッキングであるため、ソフトウェアのハッキングとは少し異なるものの、Supermicro が製造段階でサーバのマザーボードの小型のチップを埋め込んだと報道されたことで、この問題が注目を集めるようことになりました。

チップやチップセットへのこれ以外の攻撃について調べてみたところ、CLKscrew と呼ばれる攻撃があることがわかりました。コンピュータサイクルの仕組みを理解するようになると、このような攻撃が可能である理由がわかるようになりますが、この件については現段階では私自身の調査が不十分であるため、今後の記事で取り上げたいと思います。これらのすべての点を考慮すると、潜在的な攻撃対象が予想より広いことは明白です。

まとめ

この記事の目的は、コンピュータのチップセットのいくつかの異なる役割と利用できるさまざまなコンポーネントを明確にすることであり、PC、Arduino、あるいは Raspberry Pi といった、さまざまな異なるチップセットが存在します。したがって、それらのチップセットが攻撃の標的になったり、攻撃の手段として悪用されたりする可能性もあるということです。

この記事で説明した内容を前提に、今後は、マイクロコントローラ、さらには、Arduino や Raspberry Pi も含めて、いくつかの記事をお届けできるかもしれません(IoT のセキュリティについては、大きな問題として検証が必要でしょう)。PC のチップとこれら 2 つのデバイスのチップの大きな違いの 1 つは、特定のデバイスを何らかの用途のためにプログラミングするために利用できるパブリックライブラリが存在することです。マイクロチップを使って、たくさんの LED ライトの列を制御したり、無線周波数を活用したりしている方もいらっしゃるかもしれません。愛好家と開発者がさまざまな形でコンピュータの世界を探求し、楽しむのは、何と素晴らしいことでしょうか!

参考資料