『日経研月報』特集より

AI処理向けアーキテクチャとAIを用いたチップ制御

2025年6-7月号

山﨑 信行 (やまさき のぶゆき)

慶應義塾大学理工学部情報工学科 教授

1. はじめに

本稿では、AIと半導体の双方に関わるテーマとして、AI処理向けプロセッサ/アクセラレータに関して、まずは現在主流となっているアーキテクチャをいくつか紹介する。さらに、プロセッサ自身や半導体自身もAIによって制御しようという試みがなされているので、AIによるプロセッサや半導体デバイス制御に関する研究もいくつか紹介する。
現在、さまざまなAI処理のために、多くの種類のAI処理向けプロセッサ/アクセラレータが研究開発されている。一般的にAI処理に必要な演算を効率よく行うには、大量のデータに対して同様の演算を一度に行う。そのためのシンプルなアプローチは、できるだけ多くの演算器をチップ内に集積し、大量のデータを一度に演算できるようにすればよい。そこで、AI処理向けプロセッサ/アクセラレータでは、内部に多くのSingle Instruction Multiple Data stream:SIMD(以下、SIMD)演算器やVector演算器を集積することによって大量のデータに対する演算(積和演算等)を並列に一度に行えるようにしている。例えばSIMD演算器の場合は、長い幅のSIMDレジスタに複数のデータを格納し、1命令でそれら複数データを同時に演算する。レジスタ長が512bitの場合、64-bitデータ×8要素、32-bitデータ×16要素、16-bitデータ×32要素、8-bitデータ×64要素の演算のどれかを1度に行うことができる。
ここで、AI処理(特に推論)に必要な演算は、精度を下げてでもできるだけ大量に処理を行い演算速度を上げたいという要求がある。ユーザタスクを実行する推論では精度より速度が重要であり、計算精度を上げても推論の精度はあまり向上せず、逆に計算精度を落としても推論の精度は下がらない傾向にある。
そのため、従来のマイクロプロセッサでは、整数演算の場合は1byte(8bit integer)、浮動小数点演算の場合は4byte(32bit FP)が演算の最小単位であることが多かったが、AI処理向けプロセッサ/アクセラレータでは、整数の場合は4bit(INT4)、場合によっては1bit(INT1)、浮動小数の場合は16bit FP、さらに仮数部を7bitに減らし指数部を8bitに増やしたBFloat16等の低精度の演算を行うことで、より大量のデータを一度に演算して演算速度を上げようとする。

2. AI処理向けGPUベースアクセラレータ/NPUとメモリ

AI処理向けアクセラレータとしては、Graphic Processing Unit:GPU(以下、GPU)をAI処理向けに拡張したアクセラレータをNVIDIA、AMD、Intel等の企業が積極的に研究開発している。NVIDIAは他社に先駆けてGPU向けの汎用並列コンピューティングプラットフォームであるCUDAを提供し、互換性を維持しつつ発展させてきたことで事実上の標準となり、現在のAI向けアクセラレータにおいても非常に大きなシェアを有している。
GPUベースのAI処理向けアクセラレータでは、大量のスレッドを生成しSingle Instruction Multiple Threads:SIMT(以下、SIMT)演算を用いて大量のデータを一度に演算して演算速度を向上させようとする。ここで、一般的なマルチスレッドプロセッサでは、複数の独立したスレッド(独立したプログラムカウンタやレジスタセットを持つハードウェアスレッド(論理コア))が演算器を共有して同時に動作する。一方、SIMTでは、各スレッドは完全に独立しているわけではなく複数のスレッドの塊が同じ命令で同時に実行されるが、一つのスレッドはあたかもSIMD演算器の1レーンを用いて演算を行っているかのようにふるまう。
GPUベースのAI処理向けアクセラレータでは一度に大量のスレッドが生成されるが、それらのスレッドにデータを供給するためには、非常に広いメモリバンド幅が要求される。ここで、AI処理向け演算器をどんなに1チップに集積したとしても演算すべきデータはメモリ中に存在しているので、それらの演算器に演算データをメモリから転送する必要がある。同様に大量の演算結果をメモリに対して書き込む(転送する)必要もある。従って、AI処理向けアクセラレータにおいては、メモリから一度にどれだけデータを持ってこられるか(単位時間当たりどれだけのデータを転送できるか)というメモリバンド幅も非常に重要となる。
メモリバンド幅を上げるために、近年のAI処理向けアクセラレータのほとんどがメモリとしてHigh Bandwidth Memory:HBM(以下、HBM)を採用している。HBMの規格はJEDEC(国際半導体技術協会)で標準化されているが、現行のHBM3Eの最大帯域幅は1.2TB/sec、次世代のHBM4の最大帯域幅は2TB/secと、一般のDDR系DRAMと比較するとバンド幅が非常に大きなものとなっている。HBMの研究開発においてはSKハイニクスが先行し、現行のHBM3E世代ではトップシェアとなっているが、HBM4世代ではマイクロンやサムスンも研究開発に力を入れている。
前述したように、推論は演算精度が低くてもあまり問題にならないので、浮動小数点演算を行わなくても低精度の整数演算のみで十分な場合が多い。そこで、最近のCPU(Intel, AMD, Qualcomm等)はGPU以外にも低精度の整数演算を同時に大量に行うことが可能な演算ユニットであるNeural Processing Unit:NPUを搭載し、低消費電力で高効率なAI演算(主に推論)をCPUで可能としている。

3. AI処理におけるメモリ中のデータ配置

AI処理で問題となるのは、AI演算に必要なデータは、メモリ上に連続的に配置されていないということにある。例えば、SIMDを用いた並列演算では、幅の広いSIMDレジスタに複数のデータをパックする必要ある。そのために、まずメモリ上に散っている演算に必要なデータを集めてSIMD演算器が演算できるようにSIMDレジスタに配置する。SIMD演算自体は一つのSIMD命令で複数データを同時に1clockで演算(例えば512-bit SIMDでは64要素の8bit演算を同時に演算)することができる。
この時、有効データがどれだけレジスタに入っているかを示すグッドプットという指標があり、64要素のうち全ての要素が有効な演算データであればグッドプットは100%となり、64要素のうち1要素だけが有効な演算データであればグッドプットは1/64=1.56%となる。従って、グッドプットの良し悪しによって、最大64倍のスループットの差になりうる。そのため、演算に必要なデータをどれだけ効率的にSIMDレジスタにパックできるかが演算性能を大きく左右することになる。同様に、演算後のデータをアンパックし、メモリ上に散っているターゲットアドレスに対して演算結果を書き戻す必要がある。
Vector演算器の場合にもレジスタの幅方向ではなくレジスタの深さ方向という違いはあるが、同様な処理が必要となる。SIMD演算器やVector演算器を用いる場合、演算性能を向上させるためにはSIMDレジスタやVectorレジスタにどれだけ有効データが入っているか(グッドプットが大きいか)ということが重要となる。また、演算そのものに必要な時間よりも、演算に必要なデータを集めてくる前処理や、演算結果をターゲットアドレスが散っているメモリに書き戻す後処理に、より多くの時間がかかることになる。SIMD演算器やVector演算器等の並列演算器を増やしたりスレッド数を増やすだけでは、演算が非効率なまま(演算密度が低いまま)となる。

4. データ整形ユニット

この問題を解決するためにData Rearrangement Unit:DRU(以下、DRU)という新たな独立した機能ユニット(装置)が提案されている(参考文献[1])。DRUは、メモリ中に散っている演算に必要なデータを並列演算器が演算しやすいように整形(有効データを集めてパック)したり、逆に並列演算器の演算結果を散っているメモリアドレスに対して書き込んだりすることのできる独立したユニットである(図1)。

具体的には、DRUはまずデータ転送を独立して行う機能であるDynamic Memory Access:DMA (以下、DMA)を用いて演算に必要なデータをメモリから内部のワーキングメモリに一度に連続的に転送(バースト転送)する。次にワーキングメモリを使用してデータを並列演算器(SIMD演算器やベクトル演算器等)がそのまま演算するだけでよいように並べ替え整形する。次に、整形したデータをワーキングメモリからメモリもしくは演算器のレジスタに直接バースト転送を行う。メモリに転送する場合は汎用性があり各種演算器を修正することなくDRUを利用することができるが、再度、メモリからSIMDレジスタやベクトルレジスタにロードしてから演算を行う必要がある。
一方、演算器のレジスタに直接転送する場合には、各演算器のレジスタにDRUからのデータ転送用ポートを付け加える(各演算器を修正する)必要があるが、データ転送後に演算器は直ちに演算を開始することができ非常に大きな性能向上が見込める。いずれの手法にしても、演算器がそのまま演算するだけで良いようにデータが並べ替えられているので、演算器は高効率に演算を行うことができる。演算結果はレジスタからメモリに書き込む必要があるが、この際にも連続的ではないメモリアドレスに対してDRUを用いて逆方向に高効率にデータ転送を行う。
例えばベクトル演算器のベクトルレジスタにDRU用ポートを追加し、畳み込み演算をベクトル演算器とDRUと共に用いてベクトル演算を行うと、一般的に使用されているストライドアクセス付きベクトルロードストアを用いたベクトル演算と比較し、演算速度が100倍程度高速になる。
DRUは独立したユニットなので、CPU、SIMDユニット、Vectorユニット、GPU等、さまざまな並列演算器と組み合わせて使用することができ、演算効率(グッドプット)を上げることで、演算性能を改善することができる。

5. リアルタイムAI

エッジ側ではAI処理(主に推論)においてもリアルタイム処理を行わなければならない場合が多い。特にAIを何らかの制御に用いたい場合には必須の機能となる。リアルタイムAI処理では、時間制約内に最適ではないかもしれないがほぼ正しい答えを出力する必要がある。つまり、長時間をかけて最適解(時間制約がない場合の最も良い解)を出力するよりも、時間制約内での最も精度の高い解(最適解ではないかもしれない)を出す方が望ましい。
ここで、リアルタイム処理はタスクの時間制約(デッドラインや周期等)を優先度に変換し、タスクは優先度に従って実行される。これらの用途に使用できるリアルタイム処理用プロセッサであるResponsive Multithreaded Processor:RMTP(以下、RMTP)が研究開発されている(参考文献[2])。

RMTPはリアルタイム処理をハードウェアレベルでサポートできるように設計された優先度付き同時マルチスレッドプロセッサであり、ソフトウェア命令で動的にハードウェアスレッド(論理コア)を生成・消滅したりスレッドの優先度を変更することができる。RMTPは、スレッド(論理コア)自体をキャッシュすることができるコンテキストキャッシュ、個々のスレッドの実行速度Instruction Per Clock cycle:IPC(以下、IPC)を一定に制御可能なIPC制御機構、割り込みによるスレッドの起床機能等のリアルタイム処理を強力にサポートするハードウェア機構を有している。RMTPの1物理コアには8ハードウェアスレッド(論理コア)、低精度演算をサポートするSIMD演算器で構成されたベクトル演算器、SIMD演算器(スカラー)を集積し、さらにはエッジ側でのAI処理の複雑さに応じてのマルチコア構成が可能で、リアルタイムAIをハードウェアレベルでサポートする。

6. AI制御のマイクロプロセッサ

AI処理向けプロセッサ/アクセラレータの処理対象はもちろんAIアプリケーションであるが、プロセッサの内部でもAI(機械学習)は用いられている。例えば、マイクロプロセッサの分岐予測器にはニューラルネットワーク系の機械学習が用いられている。プログラム(C言語等の高級言語)の中でif文等の条件文があると、マシン語の分岐命令に変換されてプロセッサで実行される。この分岐命令を実行する際に、分岐条件を演算し終わる前に分岐するかしないか(条件式が真か偽か)を予測するのが分岐予測器である。
現代のマイクロプロセッサは、分岐予測が正しいという仮定の下に分岐先の命令を投機的に実行することで性能を高めているので、分岐予測の精度はプロセッサの性能を大きく左右し、非常に重要である。分岐予測はtaken(飛ぶ)かuntaken(飛ばない)の二択であるのでパーセプトロンと相性がよい。さらにはハードウェア化する際に重要なのは面積効率でありパーセプトロンの面積効率は他のニューラルネットワークと比較して優れているので、パーセプトロン系の分岐予測器は実際に商用プロセッサでも用いられている。例えばAMD Ryzenプロセッサではパーセプトロン系の分岐予測を1次分岐予測器として実際に使用している。
分岐予測器に留まっていたプロセッサ内の機械学習の利用をさらに推し進め、マイクロプロセッサの制御部を機械学習を用いて制御しようという研究開発が行われている(図3)。現代の高性能のマイクロプロセッサでは、複数の異なる種類の演算器を用い、命令順ではなくても演算に必要なデータが揃ったら実行が可能なアウトオブオーダー実行や、分岐予測を用いて分岐予測先の命令を実行していく投機実行、複数のハードウェアスレッド(論理コア)を同時に実行するマルチスレッド実行等を行うことにより、高性能を実現している。

ここで、従来のマイクロプロセッサにおいては、これらの機能ユニットから構成されるマイクロプロセッサの制御部は、いわゆるステートマシン(状態遷移機械)で構成・制御されている。このマイクロプロセッサ(具体的には前述のRMTP)の制御部を機械学習ベースの制御に置き換え、ブログラムを実行しているとオンライン学習して徐々に高効率・高性能に処理を行うことができるようなマイクロプロセッサが研究開発されている(参考文献[3])(参考文献[4])。
マイクロプロセッサは、命令フェッチ、命令デコード、命令解析、命令発行、メモリアクセス、命令コミット等のパイプランで構成されている。マイクロプロセッサの性能は単位時間(1clock cycle)当たりの命令数であるIPCで表されるが、プロセッサ内で単位時間当たりの命令実行数を計測することでリアルタイムにその時点でのマイクロプロセッサの性能(実行速度に相当)を得ることができる。
時々刻々、マイクロプロセッサ内の命令流は変化しその組み合わせによって性能も変化するが、各パイプラインステージのバッファや演算器の使用率、それら使用率の変化率等を用いて、IPCが高くなるようにオンライン学習を行い、各スレッドの優先度を制御することによって、マイクロプロセッサの性能(IPC)ができるだけ高くなるようにAI制御を行う。学習器としてはハードウェア化が可能なように多層パーセプトロンが用いられている。AI制御されるマイクロプロセッサでは、実行しているプログラムがコンテキストスイッチ等で切り替わっても、時間と共に徐々に性能(IPC)が向上していく。

7. ノンストッププロセッサと不揮発半導体デバイスのAI制御

マイクロプロセッサ等で主に用いられている記憶素子は、アクセス速度が速い順(容量が小さい順)に、Flip-Flop:FF(以下、FF )、Static Random Access Memory:SRAM(以下、SRAM)、Dynamic Random Access Memory:DRAM(以下、DRAM)、Flash memoryとなる。ここで、FF、SRAM、DRAMは揮発性メモリであり、電源を落とすと記憶している内容が消えてしまう。ノートPC等ではサスペンド機能を有しているが、サスペンド中にもバッテリでこれらの揮発性デバイスの記憶を維持している。
Flash memoryは不揮発性であり、HDD(Hard Disk Drive)の代替として利用されているが、FF、SRAM、DRAMの代替にはなりえない。近年、さまざまな不揮発性デバイスの研究開発が進んでいるが、その中でもMagnetic Tunnel Junction:MTJ(以下、MTJ)というスピントロニクス技術を用いたデバイスが実用化されつつあり、SONYやキオクシア等の国内メーカーも研究開発を行っている。MTJは、磁化された固定層及び自由層と、絶縁層を積層した構成をとっており、固定層の磁化の向きは常に一定で変化しないが、自由層の磁化の向きは書き込み電流により反転させることができる。固定層と自由層の磁化の向きが同じ場合と反対の場合でMTJの抵抗値は大きく異なり、この抵抗値の差によって1bitの情報を不揮発に記憶することができる。
MTJベースの不揮発性フリップフロップ(Non-Volatile Flip-Flop:NVFF(以下、NVFF))及び不揮発性メモリ(Magnetoresistive Random Access Memory:MRAM(以下、MRAM))を用いて、意図せず電源が切れてしまったとしても電源復旧後に何事もなかったかのように動作を継続可能なノンストッププロセッサ(Non-Volatile IO Core SoC:NVIOC(以下、NVIOC))が実現されている(参考文献[5])(図4)。プロセッサの全てのFFをNVFFで構成、主記憶をMRAMで構成し、それらを制御する不揮発性デバイスコントローラやデータの整合性を維持するキャッシュを搭載し、任意のタイミングで電源が切れても電源復旧直後にクロックサイクル粒度で処理を復帰・継続することが可能となっている。電源のオンオフを繰り返しても何事もなかったように処理を継続できる画期的な機能を有し、太陽電池や不安定な電源で動作する機器や安全性やメンテナンス性が重要な機器等への応用が期待されている。

一方でMTJには書き込み電流を流しても自由層の磁化の向きが必ず反転するとは限らない(つまりは書込が失敗するかもしれない)という問題点が存在する。自由層の磁化の向きが反転する確率、つまり書き込み成功率は、書き込み電流を流す時間、電圧、温度、MTJ素子の製造ばらつき等、さまざまな要素に依存している。
そこで、機械学習(AI)を用いてこれらの要素と書き込み成功率の関係を学習したうえで、適切な書き込み成功率を実現できるように、書き込み電流を流す時間や電圧を制御する仕組みが考案されている(参考文献[6])。この仕組みをLSI内部にハードウェアとして取り入れることで、チップ毎の製造ばらつきや動作温度等の違いをAIで吸収した制御が可能となる。このAI制御の仕組みはノンストッププロセッサ(NVIOC)以外にも、MTJを使用するさまざまな半導体デバイスに応用可能となっており、MTJベースの不揮発性デバイスの制御の困難さを引き下げることができる。

8. おわりに

本稿では、AI処理向けプロセッサ/アクセラレータに関して、現在主流となっているアーキテクチャをいくつか紹介した。実際には、それら以外にも非常に多くのAI処理向けプロセッサ/アクセラレータが研究開発されている。それらの中には、全く異なるアプローチでAI処理を高効率に行おうとしているものも存在している。また、AIはマイクロプロセッサ自体やLSIデバイス自体の制御にも使用され始めているということを紹介した。今後は、さまざまなアーキテクチャや半導体デバイスとAIを絡めた研究開発が増えていくことが予想される。

参考文献

[1]Akiyuki Mamiya and Nobuyuki Yamasaki, “Data Rearrange Unit for Efficient Data Computation,” International Journal of Networking and Computing, pp.295-316, July, 2022.
[2]Nakabeppu Shota, Ide Yosuke, Takahashi Masahiko, Tsukahara Yuta, Suzuki Hiromi, Shishido Haruki and Yamasaki Nobuyuki, “Space Responsive Multithreaded Processor(SRMTP)for Spacecraft Control,” IEEE Symposium in Low-Power and High-Speed Chips(COOL CHIPS), pp.1-3, April, 2020.
[3]Kaname Sato and Nobuyuki Yamasaki, “A Learning-based Control Scheme for Prioritized SMT Processor,” International Symposium on Computing and Networking Workshops(CANDARW),” pp.76-82, November, 2024.
[4]Yosuke Ide and Nobuyuki Yamasaki, “A Learning-based Fetch Thread Gating Mechanism for A Simultaneous Multithreading Processor,” International Symposium on Computing and Networking(CANDAR), pp.1-10, November, 2020.
[5]Shota Nakabeppu and Nobuyuki Yamasaki, “Non-Stop Microprocessor for Fault-Tolerant Real-Time Systems,” IEICE Transactions on Electronics Special Section on Solid-State Circuit Design ― Architecture, Circuit, Device and Design Methodology, Vol.E106.C, No.7, pp.365-381, July, 2023.
[6]Shota Nakabeppu and Nobuyuki Yamasaki, “A Learning-based Control Scheme for MTJ-based Non-volatile Flip-Flops,” IPSJ Transactions on System LSI Design Methodlogy, Vol.17, pp.16-35, February, 2024.

著者プロフィール

山﨑 信行 (やまさき のぶゆき)

慶應義塾大学理工学部情報工学科 教授

1996年慶應義塾大学大学院理工学研究科計算機科学専攻後期博士課程修了。博士(工学)。1996年電子技術総合研究所研究員。1998年慶應義塾大学助手。同大学専任講師、助教授、准教授を経て2013年より慶應義塾大学理工学部情報工学科教授。組込みリアルタイムシステム、プロセッサアーキテクチャ、コンピュータアーキテクチャ、リアルタイムネットワーク、光通信、LSI設計、SoC、SiP、RT-OS、ロボット等の研究開発に従事。IEEE、情報処理学会、電子情報通信学会、日本ロボット学会各会員。