ITエンジニアの豆知識 CPUのアーキテクチャって?
目次
こんにちは。
社内一のハードウェアオタク(自称)、のむしんです。
ITエンジニアの皆様はCPUのアーキテクチャって意識したことあるでしょうか。
WEBシステムを開発するためにアーキテクチャの知識は特に必要ないのですが、全てのプログラムはそのコンピュータのアーキテクチャの上で動作しています。
ゆえに頭の隅っこに知識として置いておいても損はありません。
事細かに話し出すと長くなるのでこの記事ではほんの触りの部分だけ。興味が湧いた人は深掘りして調べてみてくださいね。
そもそもCPUって何?
「あー。知ってる知ってる。あのゲジゲジのやつだろ」
はい。あなたはだいぶオジサンですね!イマドキのCPUはもうゲジゲジしていません。
ITエンジニアでCPUが何かを全く知らない人は居ないと思いますが、念のため。
CPUとは中央演算処理装置(Central Processing Unit)のことです。略してCPUですね。プロセッサーと呼ばれることもあります。
コンピュータにおける中心的な処理装置で、コンピュータの頭脳に例えられることが多いですね。
パソコン、スマホは元より、各種家電や電卓にいたるまですべての電子機器は(規模は大小異なるものの)CPUを搭載していると言ってよいでしょう。
※ ちなみにパソコン向けもスマホ向けも、純粋なCPU以外にGPU(グラフィックス機能)、AI処理専用チップ、通信用モデム、各種チップセット機能など諸々を1つのチップにまとめたSoC(System on a Chip)と呼べるようなものが主流ですが、細かいことは置いておいて本記事ではそのようなもののCPU部分だけを取り上げて「CPU」と呼称します。
CPUのアーキテクチャって何??
本題のアーキテクチャです。
「アーキテクチャ」という言葉が持つ意味は幅広いので、この記事では命令セットアーキテクチャ (instruction set architecture, 以下ISA)のことをアーキテクチャと呼びます。
architectureは直訳すると「建築」という意味の他に「設計」といった意味も持ち合わせますが、ISAは後者の意味ですね。
CPUは様々な処理を行うためのごく原始的な命令(論理/算術演算子やデータのコピーなど)を備えており、またそれら命令を実際に処理するためのレジスタ(CPU内で一時的にデータを記憶する領域)などの仕様が先述のISAにより決められています。
つまり同じISAのCPUであれば開発元がどの会社のCPUであったとしても、基本的には同じプログラムが動作します。
アーキテクチャの種類
アーキテクチャには様々な種類がありますが、今回は身近な所で以下の2つのアーキテクチャを紹介します。
- x86(Intel) ・・・はちろく
- ARM(ARM) ・・・あーむ
ARMに関しては開発元の会社名もARMであり、ニュースに取り上げられることもあるためIT系サイトを見ない人でも耳にしたことがあるかもしれません。
x86とは
- 米インテル社のアーキテクチャ
- 「Intel入ってる」PCはこれ。CPUの"ブランド"としてはXeon、Core、Pentium、Celeronなど
- パソコン、サーバ、スパコン等での採用が多い
- 高性能だが消費電力も高い
- インテルとライセンス契約を結んでいる米AMDも同じアーキテクチャのCPU(Ryzen、Athlon、Optelonなど)を開発
ARMとは
- 英ARM社のアーキテクチャ
- スマホはほぼこれ
- ルータ等の通信機器、エアコン・冷蔵庫・TVなどの家電、IoT機器など日常で接しているあらゆる機器にARMアーキテクチャのCPUが採用されている
- 省電力、低コストなCPUから高性能なものまで幅広い
- ARM社自身はCPUの製造は行っていない
- ソフトバンクに買われて(2016年)売られた(2020年)
※メモ① アーキテクチャの性能?
x86は「高性能だが消費電力も高い」、ARMは「省電力~」と上で書いていますが、Intelは近年省電力を重視しARMはPCやサーバなど高性能が要求される分野への進出を目指したこともあり、両社の性能面での特性は曖昧になってきています。
Intelはかつて(2012年)スマホ向けのCPUに参入しましたが、2016年に撤退しています。 ※そのためAndroid OSには「ARM版」「x86版」の2種類が存在します。
逆に今はARMがWindows向けCPUに参入(MicrosoftがARM向けのWindowsを開発したといった方が正確かもしれませんが…)しています。ARM CPUのWindwosPCはまだ普及していませんが、今後一般的に目にするようになるかもしれません。
また世界一速いスーパーコンピューターとして各種メディアで取り上げられた『富岳』のCPU「A64FX」は富士通が開発したARMアーキテクチャのCPUです。
そして2020年にはAppleがMacのCPUをIntelから自社開発のARMアーキテクチャCPUに切り替えると発表しました。これまた非常に高性能で話題になっています。
どうするIntel!?
※メモ② ARMのビジネスモデル
Intelは自社のx86アーキテクチャに基づいたCPUの設計・製造まで自社内で行っています(CPUの製造工場を保有しています)
これに対しARMはARMアーキテクチャCPUの「設計図」をライセンスする(売る)ビジネスです。ARMはこのライセンス事業で膨大な顧客を抱えており、この設計図を買ったメーカーはそれぞれ自社でこの設計をカスタマイズして(あるいはカスタマイズせずにそのまま)CPUを製造します。
また、このCPU製造を担う半導体工場の世界TOP3はIntel(アメリカ), Sumsung(韓国), TSMC(台湾)です。
国内で流通しているスマホCPUのほぼ100%がTSMCかSumsungで製造されています。
※メモ③ x86?x64?
x86とは別に「x64」という単語を目にしたことがある人もいるかもしれません。
x86は32bitアーキテクチャですが、x64はx86を64bitに拡張したアーキテクチャです。「x86-64」と書かれることもあります。
ものすごくざっくり説明するとx64の方が一度に扱えるデータサイズが大きくなり、データを効率よく・高速に処理できます。
x86とx64が並んでいるとx64の方が数字が小さいのに上位のアーキテクチャなので混乱する方がいるようですが、「x86-64」の略称としてのx64なのでご注意を。
ちなみにWindows10のブートドライブには"Program Files (x86)"と"Program Files"の2つのフォルダが作成されていると思いますが、前者にはx86(32bit)、後者にはx64(64bit)対応のアプリがインストールされます。
ただし今どきのx86CPUは両方のアーキテクチャに対応しており、Windows10自体も新しく購入できるのは(32bitアプリも動作する)64bit版だけなので、利用者として気にすることは無いかもしれません。
ARMにも同様に32bitと64bit両方のアーキテクチャが存在しますが、スマホなどの性能を求められる分野はx86同様既に64bitが主流です
アーキテクチャの採用動向(ゲーム機)
パソコンとスマホが分かったところで、ではそれ以外の分野ではどのようなところでそれぞれのアーキテクチャが使われているのでしょうか。
これまた身近なところでゲーム機を見てましょう。
ゲーム機は世代ごとに採用するアーキテクチャがバラバラだったりするのですが、SONYのPS4、PS5は一貫してx86それもIntelではなくライセンシー企業であるAMD社のCPUを採用しています。
また同世代のMicrosoft XboxもXbox One ⇒ XBOX SERIES X/Sと同様にAMD社のx86CPUを採用しています。
ですのでこれらゲーム機は兄弟機と言っていいほどハードウェアの構成が似ており、またPCとも非常に近い作りになっています。
一方の任天堂はSwitchでARMアーキテクチャを採用しました。こちらはAIやGPU(グラフィックス)分野で急成長しているNVIDIAのCPUです。
Switchはバッテリー駆動も可能な設計なので、性能至上主義の前2社のゲーム機とは異なり、性能と省電力のバランスを取た結果の選択だと考えられます。こちらの設計はPCではなくスマホに近いですね。
次世代Switchも同じ路線ではないかと予想しますが、任天堂は予想できないゲーム機を繰り出してくるので楽しみですね。
アーキテクチャの採用動向(クラウドサーバ)
現時点ではAWS、GCP、Azureなどいずれもインテルのx86CPUがほとんどの割合を占めています。
2018年からは同じx86アーキテクチャのAMD EPYCプロセッサ(Ryzenのサーバ向けCPU)の性能が評価され、AWS、GCPで相次いで採用されました。今勢いのあるメーカーなので今後も採用が増えていきそうです。
またAWSではAmazonが自社開発したARMアーキテクチャのCPU"Graviton"を採用したインスタンスがあり、更にはMicrosoftも自社でARM CPUを開発してAzureに採用するのではないかという話もあります。
Intel一強だったクラウドサーバにも戦国時代が訪れているという印象です。
ではユーザ視点でIntel CPU以外のサーバを使うメリットは何なのか、という点ですが
AWSでは各CPUインスタンスの特徴を以下のように説明しています。
- AMDのx86CPU(インスタンスは末尾が ”a”):Intelと同等性能で10%コストが安い
- 自社のARM GravitonCPU(インスタンスは末尾が ”g”):同世代のIntelインスタンスより価格性能比が最大40%UP
後者は若干抽象的で分かりづらいのですが…要はどちらも『(従来の)IntelCPUインスタンスよりコスパがいいよ!』ということでしょう。
ただしPHPなどで作られたWebシステムはミドルウェアやOSがアーキテクチャの違いを吸収しているので基本的にどのインスタンスでも同じように動作することが期待できますが、CPUアーキテクチャの違いにより動作しないソフトウェアというものも存在するため、その点は考慮しておく必要があります。
ただいずれもメリットがあるインスタンスなので、要件にマッチする場合は積極的に候補に入れて検討する価値はあるのではないでしょうか。
最後に
私が所属するシステム開発のサービスサイト「SEKARAKU Lab(セカラク ラボ)」を開設しました。
ビヨンドは、サーバーの設計・構築から運用までをワンストップでお任せいただけますので、サーバーサイド開発でお困りの方はお気軽にお問い合わせください。
SEKARAKU Lab:https://sekarakulab.beyondjapan.com/
最後まで読んで下さりありがとうございます。
ソフトウェアとハードウェアは切っても切れない関係ですが、ハードウェアにはあまり興味がないという方はプログラマにも結構居るような気がします。時代でしょうか…。
踏み込むと楽しい世界(たぶん)ですので、興味を持った方はぜひ色々と調べてみてください。