2024.12.24
ビジネスが急速に変化する現代は「OODAサイクル」と親和性が高い 流通卸売業界を取り巻く5つの課題と打開策
俺ASICと俺CPU“松竹V(しょうちくぶい)” (全1記事)
リンクをコピー
記事をブックマーク
takeoka氏(以下、takeoka):俺ASICと俺CPUを作っているのでその話をちょっとします。
最近、日本でも半導体復興と言われています。(半導体は)お金持ちの物だと思っていたけれど、近頃はGoogleが安く作れるようにしてくれていたり、OpenEDAやOpenLANEというOSSのツールを使えば作れます。
これはだいぶ前からですが、Googleががんばっています。ほかにも、FOSSi(Free and Open Source Silicon Foundation)という非営利団体があって、ここでやった成果をもうちょっとだけ作りたい時は、50万円から100万円出せば作れるという道筋もあって、無料で試作したものを商用量産できるので、大変な零細企業でも作れる環境ができています。
RISC-V Foundationのボードメンバーの河崎さん(河崎俊平氏)はNEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)から資金を受けて、実際にちょっとしたLSI(Large Scale Integration)を作っています。
実はソフトはこれまでも一応あって、このへんに固有名詞が入っていますが、こういうツールでLSIは開発できていました。ところがPDK(Process Design Kit)という、トランジスタをここまで近づけていいという制約条件が書かれたファイルが大事にされてきたため、何千万円クラスのツールを作っている会社にしか供給されず、これまでは貧乏人には手も足も出ませんでした。
そんな中、Googleががんばってくれて、SkyWaterなんかは無料で手に入ります。日本でもこのPDKを勝手にオープンして「半導体をこっちでもオープンソースでやれ」と言って地味にやっている人たちがいて、日本の半導体工場のPDKもだんだん無料で手に入れるようになってきています。
GoogleなどのGAFAはFPGA(Field Programmable Gate Array)を使っていましたが、実はそんなに速くないし、消費電力がすごく大きく、データセンターでメチャクチャ使うと、電気をすごく食ってしまいます。なので、アナログ・デジタル混在でエッジ側でセンサーとすごく小さなマイコンが入ったようなものを作ってばらまこうとか考えているんじゃないかなと思っています。
政府も半導体産業の復興や再興、LSI開発の裾野を広げたいと、公的な半導体系の研究機関がOpenEDAに注目していたり、福岡にあるオープンソースツールで固めているセンターの職員は、親切にいろいろ教えてくれます。こういう合成ツール(CyberWorkBench)はNECの商品が使われていたり、ここの施設(福岡システムLSI総合開発センター)でもだいたい50万円から100万円でLSIの少量生産ができて、それは商売で使っていいですという感じです。
他に、ミニマルファブというのを非営利団体でやっている方がいます。(スライドを示して)似たような装置が並んでいますが、これは、少し作っては次の工程へ行き、またそこの工程から次と、一個一個の工程を手でやっていって半導体を作ります。人間の手間はかかりますが、費用は超安く、1個から作れます。こういうことをやっている人も日本にいて、「なんか楽しそうやな」という感じです。
私たちは今、SoC(System-on-a-chip)を作ろうとしています。65nmか90nmのわりと太いテクノロジーでASICを作ろうとしています。一応、省電力・省メモリのチップで、ロボットの部品モジュールが簡単にローコストで作れるものを作っています。そこにオレオレCPUである「松竹V」を突っ込みます。これは先ほどの制約を加えるやつで、ゲームみたいになっています。大して論理も入らないので、制約のキツイ中でどう戦うかみたいなゲームになっています。
僕がだいたい「こういう構成でいこうぜ」というところを決めて、まっちゃん、松永くんという大変よくできる人が、3日から10日間あったらわりと何でも機能を作ってくれるのですごいなと。そんな感じでやっています。
RISC-Vコアは東工大吉瀬研の「RVCoreP」というのを基に魔改造しているのですが、一応GnuPrologのコンパイルドコードを速くしています。「Prologなんか誰が使っているんですか」という話がありがちですが、この頃アメリカなんかでも「論理推論を入れないとやはりダメだ」と、機械学習と一緒に論理推論を入れている例が増えてきていて、実際にPrologがこっそりあちこちで使われているということがだんだん判明してきているので、私たちもこれまでどおりPrologを使いましょうと。それをちょっと速くするということをやっています。
それから、僕たちはOSを書き飽きたのでOSなんかのソフトは書かず、ハードウェアマルチスレッドで、ハードウェアでもってタスクスイッチします。一定時間ごとに切り替わるとかですね。それからハードウェア・セマフォで排他と同期をしています。他の排他制御と同期方式としてに一応LR/SCも付けました。キャッシュメモリはないけれどLR/SCが一応使えるようにしました。
これをちょっと今実装しようと思っています。間に合うかどうか。普通は割り込みを起こすんですが、割り込みをなしにして外部ピンからの入力でスレッド起床ができます。割り込みなしで、割り込み相当の処理を専用スレッドでやるということですね。これはOSのプログラムコードもいらないし、ワーキング・エリアも不要です。マルチスレッドだからスレッドのレジスタセットは持ちますが、これの管理コストのためのものがすごく少ないです。
かなり小さいハードウェアでこういうマルチスレッド機構ができています。それから次のページで説明しますが、ROS2の通信部分をハードウェアで実装してやっています。OS不要のチップを作っています。
ROS2プロトコルをハードウェア化しています。「ROS2rapper」という名前です。構成は、少しだけハードウェア用の拡張がありますが、文法的にはC言語ですね。LGPLで配ろうかなと準備をしています。通常ROSはLinuxがないと動かなくて、OSもメモリもたくさんいるし、CPUもMMUが必要な高級なものでないといけないのですが、ハードウェア化したことによってものすごく少ない論理で動いています。バッファ用のフリップフロップがたくさんになっていますが、正味の論理はかなり小さいです。
あとは「ハードウェア論理なので、送信パケットのチェックサムを同時に1クロックで計算できるだろ」と僕が言って、実際に担当者に作ってもらって、一応8サイクルを1サイクルでサム計算をやります。各層のIP層、UDP層、IP層のチェックサムを全部いっぺんにやりますが、なんか「最長パスが長くなって周波数が50MHzでしか動きまへん」とか担当者に言われて「あ、そうですか」と(苦笑)。
そこのチェックサム計算のところを分割すると、最高121MHzで動いて「あ、そうですか」と。うれしいのか悲しいのかよくわかりませんが、そうなっています。ハードウェアなのでロバストで速いです。Linuxのソフトで動くよりもはるかに高速です。それからハードウェアの論理値は小さいので、まぁまぁ良いものかなと(思っています)。
これにはLinuxもいりません。(スライドを示して)こいつ(Ros2アプリ)がC言語ソースになっているので「OSなしで行こうぜ」という感じでマルチスレッドのコントロールも全部ハードウェア化しました。
話が変わりまして、GnuPrologの高速化はどんな感じでしょうか。LispやPrologはその言語の性質から動的に型チェックして、それに対応する手続きをディスパッチしています。これから逃れられる、完全にコンパイルできると高速になるんです。Lispはその可能性があるのですが、Prologはやはりなかなかコンパイルに難しい面があります。
ふだんはGnuPrologのWAM(Warren Abstract Machine)という仮想マシンに変換して、(スライドを示して)ここにコンパイルされていく。これを見ているとswitch_on_termというやつで1つ目の引数の型、つまり引数の下3bitを見て分岐しています。
これはCでやっていますが、機械語のネイティブコードにすると、ネイティブコードのルーチンはこんな感じになっています。下位3bitを見て8方向分岐をしています。
80x86で見ると、これはネイティブコードになっていますが、これは飛び先のアドレスをレジスタにパカパカっと入れて、サブルーチンを呼んで最後にそれをやるとそこのどれかに分岐するようになっています。(スライドを示して)ここでCALLとかサブルーチンコールとかしているし、何しとんねんという感じですね。80x86は中のCPUがすごく複雑なので、たぶんあまり遅くはありませんが、5段パイプラインのRISC-Vなんかはすごく素朴なのでこんなことをやっているとすごく時間がかかって仕方がありません。
実際にRISC-Vの64bitのGnuPrologも同じことをやっています。アドレスを積んでサブルーチンを呼んで飛びます。
じゃあレジスタ間接で飛べるようにしましょう。(スライドを示して)ここらのレジスタ、X5からX7レジスタに飛び先アドレスが入っていて、IREGをX28として、X28レジスタの内容が6になっているので、X6番レジスタを参照して、その中身0x400100を取り出してプログラムカウンタに入れてジャンプします。そういう命令を作ってもらいました。
これをやったせいで、FPGA版では最長パスが伸びてクロック周波数が下がったんですが、今作ろうとしているLSIだとここは最長パスになっておらず、この機構が本質的には、クロックスピードを遅くすることはないことがわかっています。
これで最後ですね。一応CとかのHLS(High-Level Synthesis)、高位合成言語で書けるんですが、同時並列でバラバラにデータはアクセスされます。先ほど言ったチェックサムの計算は、データに同時並列でバラバラにアクセスできて、細粒度並列、データ並列度がすごく高まっているので1クロックでできます。
そういうところに気をつけると、ソフトをやっていた人が高級なハードを書けるようになります。そういうやり方で今はLSI作りを進めています。以上です。
司会者:ありがとうございました。13分ピッタリなので質問タイムはなしということで。というか、なんでこれをLTでやろうとしたんですか(笑)。
takeoka:これしかないので(笑)。
司会者:これはフルタイムでやってくださいよ(笑)。
takeoka:できあがったらまた長いほうで(笑)。
司会者:じゃあ次にお願いします。次回はフルタイムでお願いします。かなり興味深い。これをLTでやらないでくださいよっていう……(笑)。
takeoka:わかりました(笑)。
司会者:ありがとうございました。
2025.01.16
社内プレゼンは時間のムダ パワポ資料のプロが重視する、「ペライチ資料」で意見を通すこと
2025.01.20
組織で評価されない「自分でやったほうが早い病」の人 マネジメント層に求められる「部下を動かす力」の鍛え方
2025.01.21
言われたことしかやらないタイプの6つの言動 メンバーが自主的に動き出すリーダーのマインドセット
2025.01.15
若手がごろごろ辞める会社で「給料を5万円アップ」するも効果なし… 従業員のモチベーションを上げるために必要なことは何か
2025.01.14
目標がなく悩む若手、育成を放棄する管理職… 社員をやる気にさせる「等級制度」を作るための第一歩
2025.01.21
今までの1on1は「上司のための時間」になりがちだった “ただの面談”で終わらせない、部下との対話を深めるポイント
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.01.14
コンサルが「理由は3つあります」と前置きする理由 マッキンゼー流、プレゼンの質を向上させる具体的Tips
2025.01.22
部下に言いづらいことを伝える時のリーダーの心得 お願いを快く引き受けてもらう秘訣
2025.01.09
マッキンゼーのマネージャーが「資料を作る前」に準備する すべてのアウトプットを支える論理的なフレームワーク
コミュニケーション能力の高い人が“無自覚”にやっている話し方 5選
2022.08.07 - 2022.08.07
チームの生産性を上げるマネジメント術
2024.12.11 - 2024.12.11
特別対談「伝える×伝える」 ~1on1で伝えること、伝わること~
2024.12.16 - 2024.12.16
安野たかひろ氏・AIプロジェクト「デジタル民主主義2030」立ち上げ会見
2025.01.16 - 2025.01.16
国際コーチング連盟認定のプロフェッショナルコーチ”あべき光司”先生新刊『リーダーのためのコーチングがイチからわかる本』発売記念【オンラインイベント】
2024.12.09 - 2024.12.09