はじめに
本稿は,主に「CPU アーキテクチャについてざっくり知りたい」という方を想定して書いています.そこんところご理解の上,読み進めてください.
私はあくまでも趣味柄仕事柄様々なアーキテクチャに触れており,そこでの経験や勘所などが若干ある程度で,専門家という程でもありません.知識の整理がてら書いているということをご了承願います.
自己紹介
一応身分としては大学生で,専攻は電気電子工学です.その傍らで様々なデバイスを企画・設計・開発しています.
専門分野は低レイヤに寄っており,電気回路の設計や基板設計,組み込みソフトウェアの開発が主です.
宇宙開発の現場にも顔を出しているらしく,とあるベンチャー企業でお小遣い稼ぎをしています.
アーキテクチャの分類①
まずは CPU アーキテクチャを分類してみましょう.といっても分類の仕方はいくつかある訳ですが,まずは設計思想の面から分類してみます.
これ以降,CPU アーキテクチャを ISA と呼称します.
RISC / CISC
CPU は当然計算をするわけですが,それを実現するため,特定の演算のためのロジックを実装した回路を色々寄せ集めて一つの CPU を構成しています.そこにどのような機能を詰め込むかという思想の面で大きく二分することができ,それらは RISC と CISC という名前が付いています.
それぞれの意味について簡単に説明しておきましょう.
RISC とは
大方予想が付くかもしれませんがこれは頭字語で,Reduced Instruction Set Computer の頭文字から成っています.
日本語にすると縮小命令セット計算機みたいな感じです.
設計思想としては,命令セットをシンプルに最小限に抑え,それらの組み合わせで複雑な処理も実現することを見据えていて,世のアーキテクチャの大半はこっちです.
RISC-V なんかは有名ですが,これは当然ながら名前にもある通り RISC の一種です.
CISC とは
RISC に対する概念で,これも頭字語です.Complex Instruction Set Computer の頭文字で,こちらは複雑命令セット計算機みたいな雰囲気.
こちらは RISC の裏返しで,複雑な処理も少ない命令数で実現できるようにリッチな命令セットを作るというものになります.複雑な分肥大化しがちで,ISA の世界では少数派です.
RISC に該当する ISA
先に挙げた RISC-V の他には ARM があります.ARM は Acorn RISC Machine から来ていて,Arm ホールディングスがライセンスを持っています.Arm 自体は CPU を作っておらず,設計を販売しています.それを各社が購入し,カスタムしたりしなかったりして使用しています.
組み込み系はほぼ RISC で,Arduino UNO / NANO などに採用されていることで有名な Atmel AVR や ESP8266 / ESP32 シリーズに使われていることでお馴染みの Tensilica Xtensa,日立(今は Renesas)の SuperH,他には PowerPC や MIPS,SPARC あたりですかね.PIC はやや微妙で,RISC ライクと表現されます.
余談をしておくと,ARM は RISC ではあるものの RISC / CISC 双方の思想を柔軟に取り入れており,RISC の割には高機能で,CISC に比べれはシンプルな設計となっています.
CISC に該当する ISA
x86 や x64 が現時点で事実上唯一の CISC です.他は x86 / x64 互換システムくらいです.
昔は VAX もありましたが,今生きてるんですかね?
その他
細かいことを言うと VLIW や EPIC といった超複雑な構造のアーキテクチャもあるんですが,製品化されたのなんて Intel Itanium(ISA としては IA-64)くらいなもんなので省きました.これを知っても対してメリットないのでね.
アーキテクチャの分類②
お次は用途で分類してみます. いくつか思い浮かびますが,主に汎用と組み込み,HPC(High Performance Computing)ですが,一部重複もありつついい感じに使い分けられている雰囲気なので,上の方で出てきたヤツらを分類してみましょう.
汎用
いわゆる「コンピュータ」に使われているものという理解でいいです.
これは x86 / x64 と ARM が該当します.
組み込み
「組み込み」というのを言葉で説明するのは難しいもんですが,ざっくりいえば特定の処理を繰り返し行っているものです.
例を挙げると,身近なものだと洗濯機・掃除機・電子レンジ・冷蔵庫・冷凍庫・エアコン・テレビといった家電製品やキーボード・マウス・リモコンなどのガジェット類,制御機器などです.
一般にマイコンと呼ばれるものはみんなこれです.ARM・Xtensa・SuperH・AVR などなど.最近 RISC-V が流行りだしましたね.
HPC
PowerPC や SPARC,RISC-V あたりが該当します.
個人的に気になっている / 気に入っている ISA
私は主にマイコンばかり触っている訳ですが,そうすると必然と様々なアーキテクチャに触れることになります.
いままで使ったことあるのだと,AVR・ARM・Xtensa・SuperH・RISC-V です.結局はコンパイラがいい感じにしてくれるので基本的な処理ではあまり違いを意識しませんが,たまにそのアーキテクチャないしはマイコンに特有のコードを書くことがあり,そのときは結構違いを感じます.AVR をメインで扱っていた時代は直接レジスタを操作することが多く,データシートとにらめっこしていました.
昔話はさておき,気になっているのは RISC-V です.最近ちらほら製品が現れ出し,手元にあるのだと CH32V003 と Milk-V Duo です.CH32V003 はめちゃくちゃ安く(40 円とか 50 円)そこそこ高性能で,ちょっと将来性を感じています.Milk-V は ARM と RISC-V を両方乗せるというなかなかイカしたヤツで,Linux が動くのでなにかに使えないかなと買ってみました.が,積んでいます.
締め
高度に情報化が進んだ現代において,これらの技術の恩恵を受けることなく生活するのは不可能です.とはいえ,必ずしも知っていないといけないという訳でもありません.
ですが,こういった技術を学ぶというのもまた一興.今回は CPU アーキテクチャの種類にしか触れていませんが,例えば歴史や進化の過程などを調べてみるというのも面白いと思います.
では.