※本記事はInterface誌2022年6月号に掲載されたものの原稿版になります
プロセッサの開発はどんな仕事?
スマートフォンやパーソナルコンピュータのようなコンピュータを直接意識する機器をはじめとして,自動車やテレビなどのデジタル家電,さらにはエアコンや白物家電まで,現在ではさまざまな機器にプロセッサが使われています.
これだけ多く使われているプロセッサです.ソフトウェアを開発している方はもちろん,機器を利用している方でもある程度その役割というのはイメージされていると思います.
しかし,それがどのように作られているかとなると,知らない方も多いのではないでしょうか.これから複数回に渡って,プロセッサ開発経験者がリレー形式で,開発の現場とその強みを本音でお伝えしたいと思います.開発に興味がある方はもちろん,そうでない方にも開発の一面を知って頂くことで,日頃の開発のヒントになることがあるのではないかと期待しています.
プロセッサ開発の今昔
プロセッサと一言で言っても,多種多様な種類が存在します.近年のプロセッサは,如何に処理の並列度を上げるかの勝負となっており,表1のように様々な技術がしかも組み合わされて使われます
表1:プロセッサで使われる並列化方式
しかし,プロセッサは最初からこんなに複雑だったわけではありません.複雑化の背景には大きく2つの要因がありました.第一に,LSIに使われる半導体製造プロセステクノロジの変化によるもの.第二に,LSIの設計技術の進化によるものです.
以前の半導体製造プロセスでは,一世代進むと平均ゲート遅延(LSI上の一つの論理素子がスイッチしてからから次の素子にそれが伝搬するまでの時間)は20~30%短くなり,電力も40~50%削減されるトレンドでした.ところが,近年では微細化による様々な制約が発生しています.一世代進んでも,電力こそやや減少するものの,平均ゲート遅延はあまり短くならなくなりました.一方で,同じ面積に搭載可能な素子(トランジスタ)数は一貫して加速度的に増加しています(図1).これが所謂ムーアの法則と呼ばれるものです.
図1:半導体プロセスのトレンド
結果として,プロセッサの性能を向上させるには,より多くの素子を使って,同時に複数の処理つまり並列処理をする必要に迫られているのです.
また,大昔はプロセッサの設計も他の論理回路同様,設計者が回路図を書くという方法でした.しかし,今では論理合成や高位合成の技術,論理検証や製造までの様々な開発管理手法が進化しました.非常に複雑な回路を設計できるようになったのです.
実際,私が仕事として最初にかかわったNECのV30というプロセッサは約4万トランジスタで構成されていました.一方,現在かかわっているNSITEXEのDR1000Cという並列プロセッサでは約3,000万トランジスタで構成されています.これでも組込向けの比較的コンパクトな物で,大規模なプロセッサでは数十億トランジスタに達するものも存在します.
その他,図2に主なプロセッサの構成トランジスタ数を示しておきます.
図2:プロセッサのトランジスタ数 (文献(1))
プロセッサ開発の進め方
プロセッサは,どのような形で開発が進んでいくのでしょうか.図3に開発プロセスの例を示しました.
図3:プロセッサ開発のプロセス概要
最初に重要となるのは,開発するプロセッサのコンセプト(実現したい姿)を定義することになります.
プロセッサの主なメリットとして,ソフトウェアにより柔軟に多種多様の機能を実現できることがあります.しかし,「柔軟」「多種多様」ということは,明確な最終目標となる機能定義がないということにもなります.これが,プロセッサ開発の大きな特徴です.プロセッサ・アーキテクトと呼ばれる人は,このコンセプトを決定し,その次の工程となるISA(Instruction Set Architecture; 命令セット構造定義)や,μArch.(Micro Architecture; パイプライン等の基本構造定義)の目指す方向を示します.
このコンセプトの良し悪しによって,プロセッサの価値は大きく変わります.成否を決定するといっても言い過ぎではありません.明確な最終目標がない中で,過去の経験・知見や既存製品に対するユーザからのフィードバック,ソフトウェアや対象システムのトレンド等,情報を最大限に活かします.そして,組み上げたコンセプトを成立させたものだけがプロセッサ・アーキテクトと呼ばれるのです.
プロセッサ開発の特性と地域差
プロセッサの開発は先に説明したように,プロセッサ・アーキテクトの「センス」に依存する部分が大きいのが現実です.なので,誰をプロセッサ・アーキテクトにするのかは,開発チームを構成する上で非常に重要になります.特に近年のプロセッサ開発ではチームは百~千の桁の人数で構成されますので,失敗すると大きな損失となります.
再び昔話で恐縮ですが,1990年代前半までは話は簡単でした.プロセッサのトランジスタ数はせいぜい百万以下.当時の設計技術でも大部分は一人で設計ができました.実際私もNECのV850およびその後継のV850E1というプロセッサについて,コンセプトから論理設計までをほぼ一人でやりました.ソフトウェアや応用を含めたプロセッサの知見をある程度持ち,ある程度論理設計に長けている者であれば,誰でもプロセッサが作れたのです.そして,そこで成功すれば自然とプロセッサ・アーキテクトになっていったのです.
一方,近年のプロセッサ開発では,一人で大部分を設計することは規模・複雑度の面で不可能と言って良いと思います.したがって,プロセッサ・アーキテクトは,チームの設計者が自分のコンセプトを実現してくれるように配慮しないといけません.経歴の長いプロセッサ・アーキテクトは,その経験自体がある種の「権威」となり,影響力を持つことができますが,新たにプロセッサ・アーキテクトに挑戦する人がその信頼を得るのは簡単ではありません.
この特性から,プロセッサ開発では特に地域差が出ることが多くあります.もちろん実際には会社やチーム毎に異なります.しかし,なかなか面白い特徴なので一例を挙げさせてください.
北米では,人材流動性の高さや資金調達の自由度の高さからか,アーキテクト人材ありきのチーム構成が多いです.つまり,先にプロセッサ・アーキテクトが自分であるいは誰かに呼ばれてプロジェクトを立ち上げ,そのプロジェクトに参加したい人がチームメンバになるというわけです.一方欧州では,組織として最適と思われる人材がプロセッサ・アーキテクトとして任命され,他のチームメンバも同様に組織として集められる場合が多いようにみえます.これは,多様性を重視する中で「正解」の無いコンセプトに対して合意を形成するのに適したやり方だと思います.
さて,それでは日本はどうでしょう.これも会社によると思いますが,日本の企業は一人に特別な役割を与えるのがやや苦手な印象があります.さらに,やっと決めても,その人が作った(何度も書いたように)曖昧で「正解」がないコンセプトを組織として「良し」と決断することもやや苦手な印象があります.
プロセッサのコンセプトで最も重要なのは,コンセプトが一貫していることです.合議的にいろんな意見が混ざって消化しきれていないものでは,十分な競争力を持てません.私は今CTOという立場ですが,この点には注意して開発体制を考えています.
それでは,日本はプロセッサ開発に向いていない国なのでしょうか.私はそんなことはないと思っています.なぜならば,決められたコンセプトを物にするという点で日本は非常に優れた環境であるからです.コンセプトを具現化するためには,チーム全員がコンセプトに従って同じ方向を向いて開発を進める必要があります.この点で,比較的自己主張が強い北米や,個々の論理的な整合性を重視する欧州より,所謂「摺合せ」が得意な日本のチームは良いものを作ります.実際ある程度応用が安定し,類似のプロセッサ同士の戦いとなると,日本の製品は高い競争力を持ちます.
残念ながら,近年日本発のプロセッサは目立たない存在になってしまっています.しかし,上記の強さにもう少しコンセプトの先見性・独自性が加われば,復活できるのではないかと期待しています.
プロセッサ開発からみた並列化の難しさ
ここまでやや総論的な内容でしたが,次回以降含めここからもう少し具体的なプロセッサ技術に触れていきたいと思います.
「プロセッサ開発の今昔」でも説明しましたように,今日のプロセッサ開発は並列化との戦いになっています.図4に示すように,既に様々な並列プロセッサが発売もしくは発表されています.では,これらの違いはなぜ発生しているのでしょうか.
図4:並列化コンセプトの分類
最も大きな違いは,対象となる処理(アプリケーション)の想定の違いになります.サーバなど大量の処理をまとめて処理する場合には,粗粒度すなわち大きな処理単位での並列化が有利になります.また,画像処理やビッグデータ処理等,同じ処理を大量のデータに対して行う場合には対称型の並列化が有利です.
一方で,組込み機器等では,短い時間で様々な処理を実行する必要があります.この場合これらの並列化手法では性能も効率も良くありません.細粒度(小さい単位)でかつ非対称な処理にも対応した方式が必要です.日本は組込み機器市場が大きいこともあり,過去からそのような処理にも適したプロセッサが多く開発されました.
それでは,日本のプロセッサは特殊な領域向けなものなのでしょうか.過去そういう時期もありました.しかし,今日ではサーバ系の処理でも複合処理(異なる処理を同時に同一または異なるデータに対して行う)が増加しています.逆に,組込み機器でも画像処理や画像認識等,センサデータの増大によって従来のサーバ的な処理も増加しています.
このため,プロセッサのアーキテクチャは双方が歩み寄る方向に進んでいます.GPGPUでもCPU的な柔軟性が強化されたり,CPUにもSIMD(Single Instruction Multi Data)やベクトル拡張等の対象並列化が採用されたりしています.
図5:ヘテロジニアス・マルチコアの構成例
さらに,この方向を進めたものとして,数年前から図5に示すように複数の特性のプロセッサ技術を組み合わせて柔軟性を向上させる(苦手部分を減らす)ヘテロジニアス・マルチコアという方向性も現実的になってきており,一旦懐を分けたサーバ系と組込み系のプロセッサ技術が,再び統合されようとしているようにもみえます.実際,このような方向性のプロセッサの発表が商用ベースでも始まっています.日本でも,同じようにより汎用的なプロセッサの開発を目指す活動は活発化しています.はたして日本は再び世界で戦えるのか.次回は,その一部を含め,より具体的に開発者の視点で語らせて頂ければと思います.
****
すぎもと ひでき
****
NSIでは、プロセッサを中心とした製品を “Akaria” というブランドで展開しております。
Akariaには、RISC-Vコアからアクセラレータまで様々なタイプのプロセッサをはじめ、モデル予測制御やセキュリティといったソリューションまで展開しております。
NSITEXE Akaria
参考文献
1.Intel, SIA, Wikichip, IC Insights
引用元; https://news.mynavi.jp/techplus/photo/article/20200324-1001886/images/001l.jpg