0x03 開発コード名「Sand Rapids」
残された僕たちは、狼谷さんとWINEを交換したりグループに追加したり、お茶を持ってきて一服したりと緩やかな時間を過ごしていた。
時間にすると三十分は経ったが、蒼と砂橋さんは戻ってきていない。
「どうしたんだろう、何かあったのか?」
「……わからない。でも、間違いなく上手くは行っていないと思う」
「大丈夫でしょうか……」
おろおろする道香ちゃんの語尾が消えかかったとき、玄関が勢いよく開け放たれる音が聞こえてくる。
「あっ、帰ってこられたみたいですっ」
「よかった」
それから数秒後。部屋に戻ってきたのは怒りに怒った蒼と、怒ってはいるけれども蒼の怒りように軽く引いている砂橋さんだった。蒼とはそこそこ長い付き合いの僕でも見たことがないくらいに、その眉は引き結ばれている。
「みんな、聞いて」
全員がびしっ、と姿勢を正す。それくらいの迫力がある、鋭い声だ。
「まず、狼谷さんの入部届は受理されたわ。学校側として部活として存続する条件は満たした」
「わあっ、良かったです」
「でも、それだけじゃない。校長先生からとっても有難いお言葉を頂いたわ」
「あーあー、これは多分言いながら蒼がキレちゃうからアタシが言うね。半導体を製造する君たちの部活には、多くの予算が必要なのはわかるだろう。今までは二つの部活が競い合って、より良い成果を出すために存続させていたが、人数も揃えるのがやっとな部活では電工研にいい影響を与えるほどの成果が出せるとは思えない。よって、廃部の方針は変更しない、って」
そんな砂橋さんの言葉に、僕たちは揃って息を呑んだ。
確かに蒼が怒るのにも納得だ。曲がったことがそもそもあまり好きじゃないのに、この特大後出しジャンケンをされたら仕方ない。
「へ……?」
「つまり、廃部になるってことか?」
「やり口が、汚い」
「そう、そんな事を仰ってくださったわけよ。だから、一つの条件を飲ませた」
「それは、どんな?」
「前期の間に一度でも電工研を抜かす、あるいはいずれかの大会で優勝すること。それが、廃部撤回の条件よ」
「それって……」
「出来るのか?」
弱気な発言に、砂橋さんがぐるりと僕たちを見回して言い放った。
「出来るんじゃなくて、やるんだよ。大丈夫、アタシたちはびっくりするぐらい優秀な仲間が居る。アーキテクトの蒼、物理設計のアタシ。電源と熱、ボードデザインの道香ちゃん。そして、プロセス技術の狼谷さん」
「氷湖、でいい」
「そ? じゃあ、プロセス技術の氷湖。正直、全部の分野のPEが揃うなんて思いもしなかった。それに心強い何でも屋の鷲流くんもいる」
その姿を見ていると、なんだか本当に出来るような気がしてくるな。
「おう、話のオチにでもなんでもなってやる」
僕の答えに砂橋さんはふふっ、と笑った。力強く蒼が宣言をする。
「いい? 電工研の連中に一泡吹かせてやるわよ。特に……あの人たちには」
「……ん」
それを聞いた狼谷さんも、小さく頷いた。
あの人たち。きっと一回の失敗でコン部を捨て、電工研へと移り、さらに狼谷さんの居場所まで奪った人たちの事だろう。
「よっし、開発チームも揃ったことだし、早速これからの活動について話すわよ。まずは、条件クリアに使える前期にある大きな大会二つから」
そう言って、蒼は部屋の片隅でつい二日前まで埃を被っていたホワイトボードに「第一回開発会議」と書き込んだ。
その下に点を二つ打つと、長ったらしい名前を書き連ねていく。
「一番大きい大会はJCRA主催の『学生電子計算機設計選手権』。頭が痛くなりそうな長い名前だから、大体は通称の『CPU甲子園』、って呼ばれてるわ。時期は八月のいわゆるお盆の前後のタイミングよ。今年は八月の十日から十一日で行われるわ」
「んじゃあ、ここでの優勝を目指すのか?」
「それが、そうも行かないんだよねえ」
ため息をつく砂橋さん。それから、至極かったるそうに理由を続けた。
「このCPU甲子園に参加する条件は二つ。まず一つ目は、去年の上位三チーム」
「私たちは去年棄権しているから、条件を満たさないわ」
蒼は、どこか苦しそうにその言葉を発する。やっぱり、何かがあったんだな。
「二つ目は、予選……ってわけじゃないけど、何かしらの国内大会で規定の条件を満たしていること。全部を集めてやるにはチーム数が多すぎるからね」
「そんなに全国でCPUを作ってるところがあるのか?」
「ここみたいな科技高だけで二十四チーム。私立の高校とか公立高校でやってるチームを入れると、百は優に越す」
「そんなにか……」
確かに、百チームも集めて一つの大会をするのは難しい。予選での絞り込みが必要になるのは無理もないな。
それを踏まえて、蒼はホワイトボードの二つ目の点にまた長い名前を書きつらねた。
「で、今から申し込んで間に合うのはこれ、『日本学生プロセッサIP技術大会』。あまりにも長ったらしい名前だから、ウチの部ではIP大会って略して呼んでる。時期は五月最後の日曜日、今年は五月の二十六日ね」
「それって、そのCPU甲子園とはどう違うんだ?」
「簡単に言うと、CPU甲子園は大会規定、ルールが最低限しかない総力戦よ。だけど、IP大会の方はCPUの中、実際にデータの処理や計算を行う『プロセッサ・コア』以外はIP……既製品を使ったチップを作るの。ボードなんかも指定されたIPを使うから、PEが多くない部でも参加しやすい大会ね」
「IP大会に出すチップは、IPの性能にチップ全体の性能も引っ張られるんだよね。例えば今回だと、ボードに載ってる電源回路があんまり強くないから消費電力を増やして高性能にするアプローチはしにくかったり」
「なるほど、CPU甲子園に比べるとお手軽な分制約も多いってことか」
「そういうことよ。それにIPがメインだから参加チームの質も高くないところが多くて、一番ライバルになりかねない電工研も今まで参加してないわ。だから、ここに参加して大人げなく優勝を掻っ攫わせて貰おうじゃない」
「それに、これも一つのCPU甲子園の予選の一つなんだよ。上位三チームはCPU甲子園への参加権を得れるってわけ」
IP大会はCPU甲子園に参加するための前提大会の一つでもあるから、もし一位になれなかったとしても上位であればCPU甲子園に出ることができるというわけだ。
今の僕たちにはチャンスが多いほうがいいだろうし、なにより参加しなければ部活が消える。参加しないという選択肢は無いな。
「まずはIP大会に参加するわ。これに関して皆異存はないわね?」
みんなが大きく頷く。決定だ。
「うん、決まりね。書類は送っておくわ」
ホワイトボードの日本学生うんたら、に打たれた点に赤いマーカーで花丸を書く蒼。
続けていくつかの内容を点を打ちながら箇条書きにしていく。
「というわけで、今日やることは三つ。大会規定の確認、性能目標の設定、そして開発コード名の決定よ」
「まず大会規定を簡単に伝えるね。まず一つ目、ボードと冷却装置は全チーム規定のIPを使うこと。だから道香ちゃんの出番はサブストレートの設計になるよ」
「『サブストレート』って何だ?」
「簡単に言えば、実際の半導体のチップから配線を引き出して、簡単に取り付けができるようにするための小さな変換基板のことですっ。半導体から直接出てくる配線の端子は密度が高すぎて配線しづらいですし、ボードも全部半導体ごとに変えなきゃいけなくなっちゃいます」
「それは確かに、お金も時間も掛かりそうだな」
「なので、サブストレートという……そうですね、変換基板を噛ませるんですっ。この基板で端子を並べ替えたりピンを生やしたりすることで汎用ボードに取り付けできるようになるんですよ。今回のIPのボードにもチップを取り付けるためには必要なんです」
「ボードの資料は後で渡すわね」
「はい、お願いしますっ」
これで道香ちゃんの仕事は決まりだ。変換基板、というとなんだか簡単に聞こえるけど、きっと難しいことがあるに違いない。
「次の規定は使用可能な製造技術よ。露光技術とかに関しても色々指定があるから、氷湖、確認お願いしても良いかしら?」
「もちろん、任せて。後で早速ファブで確認する」
「あとのめぼしい規定はL2キャッシュ以降はIPを使うこと、IP込みのシリコンサイズで百平方ミリメートル以内でトランジスタのサイズはJCRA標準90nmプロセスサイズルールに従うこと、命令セットはx64の基本だけでOK、拡張命令はIntechの実装に従う限り制限なしってくらいかな」
「わかったわ、そのあたりは問題ないと思うけど」
「アタシも配置のときには面積に気をつけるね。ってことで、概要はこんな感じ」
L2キャッシュという場所があるのだろう、そこから先はIPを使って構成すること。そして半導体のサイズ自体は百平方ミリメートル、一センチ四方くらいのサイズに抑える必要があるということ。日本語であることは辛うじてわかるのだが、問題は単語の意味がまったくわかっていないことだ。
「『命令セット』と『x64』ってなんだ?」
「簡単に言えば、『命令セット』っていうのはCPUが理解できる言葉のことよ。シュウだっていきなりスワヒリ語で話しかけられても何もわからないでしょ?」
「そりゃあ、なあ」
そもそもスワヒリ語ってどこの言葉だ。名前すら知らない言葉で話しかけられても当然理解はできないだろう。
「それと一緒でCPUにも理解できる言葉と出来ない言葉があるの。CPUに向けての言葉、具体的に言うと命令とデータで使うゼロとイチを並べるルールがいろいろあるのよ。例えばAの言語は足し算が01010なんだけど、Bの言葉だと01010が表すのは掛け算とかね。この〇と一を並べるルールのことを言語、命令セットって言うわ」
「ふんふん、『x64』って言うのはそのルールの一つってことなのか」
「そ、具体的に言えばみんなが使ってるパソコンで一般的に使われてる命令セットね。アメリカのAMTって会社が作ったもので、最大手のIntechも互換命令セット……さっきの言葉でいうと方言みたいなもので動いているわ」
蒼の口から紡がれたのは、パソコン用のチップメーカーの名前。AMTもIntechもニュースとかで聞いたことのある名前だ。
「他の命令セットは、携帯とかでよく使われている『LEG』とかが有名でしょうか?」
これもニュースで聞いたことがある名前だ。スマホのCPUなんかがこれだと聞いたことがある気がする。
「命令セットって、基本は特許でガチガチに固められてるんだ。だけど、営利販売をしない条件で使える許可をJCRAは貰ってる。だからアタシたちはやりたい放題できるってわけ」
「なるほどなあ。でも、IntechもAMTもどっちも日本のチップメーカーじゃないよな?」
「そうよ、どちらもアメリカのメーカー。メジャーなところには勝てないってことだと思うわ、何しろ動くソフトの数が違いすぎるから。お陰で、科技高のOBは大学を出た後海外に行く人も多いみたいよ」
「やんごとなき事情ってやつか……」
きっと政治的やりとりがあったに違いない。とはいえ最新の商業チップの世界に日本人が多く携わっているのであれば、それもまた一つの成果と言えるのだろう。
蒼は表情で理解したことを察したのか、笑顔で話を進め始めた。
「シリコンサイズもそもそも引っかかるようなサイズにはならないでしょうし、あとは特段気にする事でもないわ」
「本番はどうやって順番を付けるんだ、性能とかか?」
「そ、いつも通りLIMPACKでFLOPSを測るのと一時間の安定性評価よ」
「んーと、去年の優勝チームが実測550MFLOPSくらいだったかな。最新の売ってるCPUなんかは数百GFLOPSが当たり前だし、CPU甲子園でも数GFLOPSくらいを叩き出すチームはいるからやっぱり格は落ちるね」
「この安定性評価、っていうのは具体的に何をするんですか?」
「ああ、そんなに高尚なことをするわけじゃないよ。このLIMPACKってベンチマークソフトを動かした状態で一時間くらい放置するだけ。チップが燃えたり、OSごとハングアップしたり、突然システムが再起動したりしなければオッケー」
「なるほど、本当に最低限の安定性評価ですね」
「その一時間の間で一秒ごとにFLOPSを計測し、それを平均したのがスコア。シンプルで非常にわかりやすい」
四人の会話から、何かのプログラムで性能を測ってそれを比較するということはわかった。さらに、そのテスト中に壊れたりフリーズしたりしないこと、というのも条件に入るらしい。
とりあえず、無理せずわからない単語を聞いていくことにする。
「『FLOPS』ってのは?」
「『FLoating point Operation Per Second』、 その名の通り浮動小数点……小数点の数の計算を一秒間にどれだけできたかを表す数値よ。例えば10MHz、一秒間に一千万回の処理ができるCPUがあったとするわ。そのCPUが一つの処理に十クロック、つまり一秒に百万回浮動小数点の計算ができるなら、それは1MFLOPSという数字になるわ」
「『クロック』、ってのは処理の基準になるON/OFFの信号のこと。一秒間に内部で信号のON/OFFをする回数のことをクロック周波数、クロックとかって言う。数字が大きいほど速い」
「たとえばさっき一秒間に一千万回の処理ができるって言ったけど、チップは基本的にクロックがON/OFFされるどっちかのタイミングでしか処理ができない。だから、演算装置が一つ積んであって一秒間に一千万回処理ができるCPUなら、一千万ヘルツ、つまり10MHzのクロックで動作するってわけ」
「なるほど、わかりやすくていいな。じゃあ例えばさっきの話だと、一秒間に百万回小数点の足し算ができれば1MFLOPSってことか」
「足し算だけのプログラムで測れば、そうなるわね」
「条件が付くのか」
「そだよ。どんなCPUにも、人間みたいに得意な処理と不得意な処理が存在する」
「ふんふん」
「例えば、あるCPUはクロックと同じ速度で小数点の足し算ができる。でも、小数点の掛け算をするときには十六クロックかかる。そんなCPUで、足し算しかしないプログラムと掛け算しかしないプログラム、それぞれで性能を測ったらどうなる?」
「そしたら、同じCPUでも十六倍の性能差に見えちゃうな」
「その通り。だから、何かでベンチマーク……処理性能を測るときには、できるだけ本番で使うものと同じもので見るべきよ。プログラムによって出てくる性能は全然違ってしまうから」
「とりあえずはわかった。今回はそのLIMPACKというものを使って、計算をさせてその性能で勝負をするわけだ」
「そういうこと。『LIMPACK』ってのは行列計算を猛烈に走らせるベンチマークだあね」
「時間も無いし、コアはとりあえず今動く手持ちのコアを基本に作っていくことにする。シミュレーションで改めてLIMPACKの論理性能を見てみるから分かり次第教えるわ。大会に関してはこれくらいかしら」
それから蒼は、ホワイトボードの目標と書かれたところをばしん、と叩いた。
「次はざっくりした性能目標を決めるわ。さっき結凪が言った通り、去年の優勝チームでも500MFLOPSよ。だから、私達はその二倍以上で1GFLOPS以上を目指すわ」
「いきなり二倍って、そんなこと出来るのか?」
「不可能じゃないわよ。クロックさえ十分に伸びれば1.5GFLOPSくらいまでは大したことないの」
「いきなり三倍になったが?」
二倍ですら驚くのにいきなり三倍だ。そんなこと本当にできるんだろうか?
「技術的には、うちにあるものでそれくらいは作れるってことよ」
「まー、最初の目標には届かないことは往々にしてあることだけどね」
「そ、そうなんですかっ?」
「実際の半導体チップの特性によってしまうから、仕方ない。クロックは、チップの中の構造と半導体に使う材料の特性で物理的な限界がある」
「氷湖の言ってる通りそゆこと。最初の方に作ったチップだと製造の時に変わる特性もぜんぜんこなれてなくて、目標には全然届かないことなんてよくあること。だから、そこから限られた時間でどれだけ目標に近づけるかってのが鍵になるんだよ」
はえー、と頷いている道香ちゃん。同じように作ったシリコンチップでも、性能の違いが出てしまうということなのだろう。
そんな僕たちを見て、蒼は満足げに次に話を進めた。
「さて、性能目標も立てたし最後に開発名を付けましょう」
「開発名?」
「そ、このCPUの名前よ。チップごとに名前を付けるのよ」
「それってそんなに大切なのか?」
「大切だよ、名前を付けるとなんというか、具体的に作るんだなって感じがするじゃん?」
「名前を付けるときが一番ワクワクするといっても過言ではありませんっ」
「そ、そんなもんか」
名づけの大切さを力説する三人に、思わず気圧されてしまう。まあ確かに、名前を付けると愛着が湧くという感覚は分かるけど。
「はいはーい、五人で作るわけだし、五を表すPENTagonと何何の、って意味のラテン語IUMを合わせてペンティア――」
「訴状を覚悟する勇気は私にはないわ」
「あ、やっぱり?」
それから、皆で訴状が届きそうな商標を避けながら名前を考えてみる。
「んー……」
「何か面白いもの……」
だが、そうは言われてもなかなか良いアイデアは出てこない。
そんな中、狼谷さんがすっと手を上げた。
「Sand Rapids?」
「その心は?」
「シンプル。砂橋さんのSandと、早瀬さんだからRapids」
「部長副部長コンビってわけか」
「いいんじゃないでしょうか、かっこいいと思いますっ」
「なんだか恥ずかしいわね……みんなが良いなら良いけど」
「アタシもいいよー」
「んじゃ、決まりだな」
これでようやく新しいチップ、Sand Rapidsの計画が具体的に立ったことになる。いよいよ本格的に開発が始まるんだ。
どこかわくわくしている自分が居ることに、我ながら驚く。これが新しいものを自分たちで作る、ということなんだろうか。
「最後にIP大会に向けて今後のスケジュールを説明していくわ。そうね……これから一週間半で設計して、来週末の十九日に最初のチップの製造開始を目指す。再来週の二十五日、木曜日からテストを始めてデータを取ったら、本番用のチップは五月の十五日までには製造を開始するわ。だから設計変更は出来て二回だと思って。厳しいスケジュールだけど、頼むわね」
「うええ、また寝る間を惜しんで配置かあ」
「結凪のところで性能が決まるわ、頼んだわよ」
「もうちょっといいツールがあれば楽になるのになあ」
「数億円の儲けが出たら考えるわ。質問は?」
「儲けって、売る訳じゃないのに儲けられるわけないじゃん……」
「ってことは、十九日までにチップの全部の設計をひとまず終わらせないといけないってことだろ? そんなん出来るのか?」
許された時間は一週間半だという。二人の言葉からもかなり厳しい日程だということは伝わってきた。
それを直接ぶつけてみると、蒼も砂橋さんもにっこりと笑う。どうも腹案があるようだ。
「ゼロからだったらそれは無理よ。でも、今回はほぼそのまますぐに使えるコアがある。私の論理設計は大体終わってるから、結凪が死ぬ気で頑張れば可能だわ」
「そのアタシが死ぬ気で頑張れば、ってのも語弊があるね。さっきのはジョークで、標準90nmプロセスだったらもう基本的なロジックは物理設計まで終わった『ライブラリ』、つまり……CPUを実際に作るときに組み合わせる元の部品はある程度出来てるから、全然間に合うと思う。今回指定されてるIPも全部使ったことあるし」
「部品みたいなのはもうある程度揃ってるから、期間が短くても大丈夫ってことか」
「そゆこと。こういう急造品でもなんとかなるのは、IP大会の良さだよね」
「そっか、既製品だもんなIPって」
肝心なコア、と呼ばれる部分以外は既製品であるIPを使うって確かにさっきも言っていたな。ここで、砂橋さんが言っていたIPを使うメリットってのが出てくるわけだ。
「というわけよ。出来次第データは結凪に渡すから、結凪は早速今あるのもののチェックと配置をお願い」
「はいよー、デザインルールはどうする?」
「今までのデザインルールの資料はある? JCRA標準プロセスを作る時の」
「ん、あるよ」
「わかった、じゃあそれを変えずに作ってみる」
「ありがと、それならアタシの方は今まで通りで設計させてもらうね」
「道香ちゃんにはチップのデザインが終わり次第サブストレートを設計してもらうから、それまではボードIP資料の確認をお願い」
「はいっ、お任せください」
「氷湖はクリーンルームで製造設備の確認とSRAMのテスト製造をしてみてちょうだい、去年作った90nmプロセスの資料はデータで送るわ。周波数と電力特性まで取ってくれると助かる」
「わかった。プロファイルは、明後日くらいまでには出せると思う」
「シュウは……そうね、どこに行っても変わらなさそうだし、好きなところで見学していいわよ。勉強してちょうだい」
「そうか、じゃあ……」
何が気になるかな、と思った時、一番最初に思ったのは蒼がやっている論理設計だった。なにしろ論理設計、というものの具体的な話を聞けていないし、蒼に付いていくのが得策だろう。
「蒼のところかな。論理設計とやらに関して教えてくれ」
「わかったわ、スパルタで教えるから覚悟しなさい。じゃあ、解散!」
蒼のその一声で皆が立ち上がった。僕も立ち上がると、蒼が手招きしているのに気付く。
「シュウ、行くわよ。覚えることは沢山あるわ」
「おう、元々そのつもりだ。好きにしてくれ」
砂橋さんと狼谷さんは二人で製造関係の資料を確認するため会議室に残るようで、道香ちゃんと蒼と三人でオフィスエリアに戻ることになった。
「道香ちゃん、今ファイルをチャットに上げたわ。分からないことがあったら聞いてね」
「ありがとうございますっ」
「シュウはちょっと待ってて、シミュレーション掛けちゃうから」
蒼は席に着くと早速パソコンを叩き、何やらツールを走らせている。並んだ二枚の画面にマウスを行ったり来たりさせながら、大量の文字が並んだソフトを操っていた。
その間にちらりと蒼のデスクの上を見ると、様々な資料や本が山のように積まれている。本に貼り付けられた付箋や印刷された資料に書き込まれた字を見ると、どれだけの努力をしてきたのかが嫌でも伝わってきた。
とりあえずは、自分の居場所を確保する必要があるな。
「蒼、隣の机使っていいか?」
「ええ、結凪が占拠してる一角以外は誰も使ってないわ。道香も、好きな場所を使ってちょうだい」
「ありがとうございまーすっ」
「了解、っと」
蒼のソフトをいじる姿を横目に、空いている隣のデスクを仮の拠点とすることにした。といっても、荷物を置いて腰を下ろしたら終わりだ。
「お待たせ、始めましょうか」
「ん、いいのか?」
「どうせシミュレーションは何時間も掛かるから平気よ」
しばらくの間蒼がソフトを色々といじっているところを見ていると、ある程度設定が終わったのだろう、蒼が笑顔で声を掛けてくれた。いよいよ蒼先生の授業の始まりだ。
「まずはマイクロアーキテクチャ、本格的な論理設計について学ぶ前に、コンピューターについて話をしちゃいましょうか」
「『コンピューター』って、今向かってるそれだろ?」
そう言って、床に転がっている四角い箱を指さす。でもその答えは蒼からすると満点ではないみたいで、首を横に振られてしまった。
「んー、三十点ってとこね。コンピューターって言うといわゆるパソコンを思い浮かべがちだけど、例えばシュウが持ってるスマホも、電卓も、なんならそこにあるコピー機も広義のコンピューターよ」
「電卓やコピー機も?」
「そうよ。とはいえ広義のコンピューターの話はすぐに分からないだろうから……そうね、電卓がいいかしら。シュウ、電卓に必要な機能って何だと思う?」
さすがに電卓は使ったことがある。必要な機能か、えーっと……
「そうだな……まずは、ボタンを押して数字を入力するだろ?」
「正解。それから?」
「で、足し算とか引き算とかのボタンを押すだろ?」
「そうね。どんな処理をするか入力しないといけないわ」
「もう一つの数字を入力するだろ? それから、イコールボタンを押すと計算された数字が出てくる」
「大正解。さすがに電卓くらいは使ったことあるのね」
「まあな。ってか、そこまでコンピューター自体を避けるのは無理だよ」
そう。未だにコンピューターに対して良い印象はない。だけど同時に、コンピューターは今は無くてはならないものであることも事実だ。
なんならゲームに熱中して夜を明かすくらいだし。
「さて、今の中でCPUの要素は大体全部揃ったわ」
「マジで?」
「大マジよ。順を追って説明していくわね」
「おお、頼む」
そう言うと、蒼は近くにあったノートを開いて丸と線を組み合わせたような図形を描きながら説明を始めた。
「まず、二つの数字を入れたわよね、あれがデータの『入力』よ。何かを計算するにも、元のデータが無いと計算のしようがないわ」
「それはそうだな」
「でも、計算機は忘れっぽいから入れられただけじゃ一瞬で忘れちゃうの。だから、入力された数字を『記憶』する機能が必要。だから、電卓は入力と記憶をセットでやってる、と考えてもらっても大きく外れないわ」
「確かに、人間も数字を見ただけじゃ計算できないもんな」
「そうそう。次にどんな計算をするかのボタンを押したわよね? 足し算をしなさいー、とか、引き算をしなさいー、とかっていう指示を出してあげることを、コンピュータでは『制御』って呼ぶわ」
「今のこんな高性能なCPUでも、足し算なんてやってるのか?」
てっきりもっと凄いことだけをやっているのかと思ってたけど、実はそんなことは無いらしい。
「当たり前でしょ、あんたのスマホに入ってる電卓アプリがどうやって計算してると思ってるのよ。もちろん、実際にはシュウの言う通り色々な命令が実装……つまりはいろんな種類の計算の指示ができるようになってるわ」
蒼はデスクに並べられた本の中から並の辞書よりもぶ厚い本を指さした。表紙には何やら英語でタイトルが書かれている。もしかして中身も全部英語なんだろうか。
「例えば、今回使うx64なんて全部の命令を把握してる人なんてほぼ居ないんじゃないかしら? ちなみに参考資料はこれよ」
「こ、これ?」
これを全部読むなんて、はっきり言って正気じゃない。もっとも、それは蒼も同じ考えのようでひらひらと手を振った。
「ま、これを全部読んでたらそれだけで数年掛かりそうだし、いい勉強にはなるけど実質不可能だから置いておくわね。さて、そしてイコールボタンを押すと計算するわよね?」
「一番肝心なところだな」
ここが出来なければ、電卓の存在意義は無くなってしまう。計算機、というからには計算が出来ないといけないのは間違いない。
「この時に使うのが『データパス』、いわゆる計算回路よ。計算回路にも基本的な四則演算はもちろん、小数点の計算をする回路だったり行列の計算をしたり、他にもいろんな処理があるわ」
「さっきの指示通りに計算をする回路、ってことか」
「その通り。計算した結果も忘れないように『記憶』しておいたうえで、そして最後に、答えを人間が分かるように画面に表示する。これが『出力』ね、こう考えてみると簡単でしょう?」
「ああ、何となくはわかった。でも、最新のCPUと電卓でも構成要素は同じなのか?」
これはずっと思っていたことだ。電卓とパソコンとかのCPUなんて、あまりにもかけ離れているように感じてしまう。
「もちろん構造なんかは全然違うわ、処理の複雑さに応じて回路の構成を変えてるし。でも、電卓もパソコンも、なんならスーパーコンピューターまで基本的な構造は同じよ。データを入力して、覚えて、制御を受けたデータパスで処理して、最後に出力する。この基本構造はどんなに複雑な計算機でも応用できるわ」
ふむふむ、と小さく頷くと、蒼はさらに説明を続けてくれた。
「『入力』はプログラムをメモリから持ってきたり、キーボードの入力を受け取ったりするし、『記憶』はCPUの中にレジスタやキャッシュメモリって言う小さいものが入っているの。それを命令の制御を受けた巨大な『データパス』、CPUの中のコアが処理する。その結果をメモリ、最終的にはグラフィックコントローラやサウンドコントローラに『出力』して、人間には液晶ディスプレイやスピーカーの音とか伝える。こうやって考えると、電卓もパソコンも中心のCPUがやってる仕事は同じでしょ?」
つまりは規模の違いだけで、やっていること――CPUで行う処理の根本は電卓もパソコンも同じことをしているわけだ。
「はー、なるほどな。ようやく、前に蒼が言ってた『CPUは巨大な電卓だ』ってのが分かった気がする」
「実際には、電子計算機の構成要素として五つが挙げられているわ。『入力』、『出力』、『記憶』、『データパス』、そして『制御』ね。この五つの要素を併せ持つものを電子計算機、コンピュータって呼ぶの」
「確かに、となるとスマホとかも全部コンピュータ、か」
「そういうこと。必要要素の関係性を図に起こすとこうなっているわ」
そう言うと、さらに手元のノートに箱を書き始める蒼。五つの箱が組み合わされた図に入力、出力、記憶、データパス、制御と書いてからペンを置く。
「すげえ、こうやって見ると簡単なんだな」
「ちなみにさっきは電卓で簡単に説明したけど、これから私たちが作るCPUの構造はこうなってるわ」
蒼が画面に表示させたのは、四角が三十個ほど並んだ図。はっきりいって、比べ物にならないほど複雑だ。目を白黒させていると、蒼は楽しそうに話し始めた。
「まず最初は命令をキャッシュかメモリから持ってくる『フェッチ』、ここが『入力』を司る部分ね。それから、取ってきた命令が何者かを解釈する『デコード』、ここが『制御』の肝ね。それを色々と処理してから『ALU』……計算回路のお化けに突っ込んで処理する、これが『データパス』。きちんと並べ替えてからレジスタやメモリに書き戻すところが『出力』になるかしら。最後に、CPUの中の計算用の小さいメモリ、『レジスタ』が『記憶』を担うわ。って流れ」
「頭痛がしてきそうだ……」
はっきり言って、実際のCPUの方はよくわからなかった。それなり以上に勉強が必要なのは間違いなさそうだ。
「かなり複雑な構造をしてるから、最初から理解しようとする必要なんてないわ。まずは……そうね、この本を読んでみるといいかも」
そういって手渡されたのは、さっきほどじゃ無いけどそれでも辞書くらいぶ厚い本二冊。これを全部読み切るなんて可能なのか?
「『コンピュータの設計と構成』?」
「そ、通称は筆者二人の名前を取ってパタヘネ。大学とか、ウチの計算機工学科の授業とかでも使われる、そうね……いわばコンピュータの教科書よ。来週末までのノルマはこれを読み切ることかしら」
「ら、来週末!?」
来週末までというと、一週間強だ。そんな短時間でこの本を読み切る自信ははっきり言ってない。そもそも勉強をまともにしたのなんてしばらく前だ。
「そ。わかんないところはいつでも教えてあげるから、私に訊いて。ってわけでもう一つ、大事なところを今日は教えるわ」
「大事なとこ、っていうと?」
「論理設計と物理設計の違いよ。私と結凪がやってること、何が違うかわかる?」
「論理と物理、だよな? 正直わからん」
「簡単に言いなおすと、論理設計は回路図までを作る仕事よ。物理設計は、その回路図を元に実際に製造するための設計図を作るのが仕事で、物理設計で作った設計図を元に製造するのが製造の仕事」
「回路図は、設計図の一つじゃないのか?」
「うーん、まああながち間違いでもないんだけど……」
それから蒼は顎に手を当てて、数秒考えてから説明を始めた。
「まず私がやってる論理設計は、フロントエンド設計とも呼ばれるわ。皆で決めた仕様を満たすようにチップの機能の設計をするのが仕事よ」
「ほうほう?」
「一番大事なのは、CPUの構造をどうするか、どんなCPUを作るのかを決めることね。『マイクロアーキテクチャ』って呼ばれるのが、その構造よ」
「構造、ってどういうことだ?」
「簡単に言えば、プロセッサ・コア、通称コアの処理能力を決めるの。消費電力、トランジスタの大まかな数でバランスを取りながら、目標の性能になるようコアの構造を決める感じね」
「ってことは、蒼の設計の時点でもうどれくらいの性能になるか決まってるのか」
「そういうことよ。一クロックの間で幾つの命令が実行できるか、っていう『IPC』は特に私のところで決まるわ」
まずはどんなチップを作るのか、ってことを決める必要があるってことで大きくは外れてない、かな。
例えば、ある目標性能があったときにそれを達成するためにはどんな構造をしたCPUを作ればいいのかを考える必要があるってことだ。性能に直接関わるし、何よりどうやったら性能が良くなって、どうなったら他とのバランスが取れるのかも知っている必要がある。
一番大事な仕事、って言うのもあながち間違いじゃないわけだ。
「その構造が決まったら、次はそれを実際の設計図に落としていく仕事よ。でも、数億個のトランジスタ一個一個をどうするか考えながらやってたら死ぬまで掛かっても設計は終わらないわ。当然ね」
「そりゃそうだろうなあ」
数億個にもなるというトランジスタの数。その設計を全部手作業でやるのは狂気の沙汰だ。そうじゃないのは流石にわかる。
「だから、こういうのを書くのよ」
そう言って蒼が開いたのは、プログラムの画面だった。灰色の画面にカラフルなアルファベットが大量に踊っていることはわかるが、逆に言えばそれくらいしかわからない。
「これが機能設計をするための『ハードウェア記述言語』、HDLって呼ばれる言語よ。簡単に言えば、半導体や電子回路の設計をするためのプログラム言語ね」
「じゃあ、プログラムみたいに文章で設計するのか」
てっきり、もっと図形をぐりぐり動かしたり、線を引いたりして設計をするものだと思ってた。そういう意味では、想像とは全然違う光景が目の前に広がっている。
「ある意味そうね、これは回路図に変換しやすい特別な言語なの」
「回路に変換しやすい、ってのはどういうことだ?」
「普通のプログラムは原則上から順番に処理を行うけど、HDLでは特筆しない限り全部同時に処理されるとか、プログラムで言う変数にレジスタとワイヤがあるとか、そんな違いよ。まあ、今は理解できなくてもいいわ」
「あーなんだ、つまりは電子回路の設計用に色々と普通のプログラムする奴とは違うってことなんだな」
「その理解で合ってるわ。一番の違いは、コンピュータで実行するためのプログラムは、A +B=、って書いたら、電子計算機が理解できる形に翻訳されて足し算をするの。でも、このハードウェア記述言語は、同じようにA+B=、って書くと、ソフトを通して出てくるのはA+Bをするための回路図が出てくるわ」
「回路図を作るための設計図を文章で書いてるってことか」
文章の形でどことどこを繋いだり、そこで足し算の回路や割り算の回路、データを保存する回路など、どんな処理をしたい、ということを書いていくということだ。
そんな緩やかな理解をすると、蒼は笑顔で頷く。
「そうよ、そしてそれが主に論理設計屋さんの仕事になるわ。さっき説明した要素それぞれの組み合わせや処理性能なんかを勘案しながら、自分で処理する回路を作ったりIPを使う判断をしたりするってわけ」
「なるほど、なんとなく理解できた気がする」
「そして、そのHDLを回路に翻訳する処理のことを『論理合成』って呼ぶわ。実際の回路が思った通りに動くことを確認したら、私の仕事は終わり。これが論理合成後の回路よ」
「うわ、何だこれ……」
そこに表示されたのは、膨大な数の線が飛び交う図面だった。
図の中の四角いブロックをクリックすると、同じくらいに線と箱にまみれた図面が出てくる。見たことのある回路図の記号にたどり着くのははるか先らしい。
一目で、どれだけ複雑なことをしているかがわかった。
「でも、ここからが砂橋さんの仕事だったよな」
「そうなるわね。結凪がやってる物理設計は、私が作った回路図通りに半導体を加工するための設計図を準備する作業になるわ。詳しくは今度結凪を捕まえて聞いてみて」
このぐちゃぐちゃな回路図を、実際の設計図にしていくんだ。はっきり言って想像もつかないが、きっとまた何か凄いことをしてるんだろう。
「わかった。とりあえず、まずはこの本か」
僕は、それを理解するためにも勉強する必要があった。
「そうね、それを読めば計算機工学の最初の一歩くらいはわかるようになるんじゃないかしら」
「最初の一歩かよ」
「あら、今まで数えられないくらいの天才たちが考えてきたものにたった千五百ページくらい読めばさらっと触れるんだから、お得だと思わない?」
それに、と付け加えるようにパラパラと本を捲ると、序盤のあるページで手を止めた。
「ここにハードウェア寄りとソフトウェア寄り、とあるでしょう? そのハードウェア寄り、のところだけでいいわ。残りは時間がある時に勉強してちょうだい」
確かに、眼鏡のような図を使ってどこを読むべきかが説明されている。とはいえ、蒼に言われた部分はそれでも半分を超えていた。
それでも素人の僕には、頷く以外の選択肢は無い。ここの部員になった以上は、少しでも皆の役に立ちたいし。
「んじゃ、わからないところがあったら声を掛けて頂戴」
「わかった」
蒼はその返事を聞くと、満足そうに頷いて自分のパソコンへと向き直った。
この本を読まなければ、まず蒼のしていることを理解するなんて到底できない。親父が何をしているかなんて猶更だ。
「えーっと、コンピュータの抽象化とテクノロジー……」
だから、勇気を持ってその一歩目を踏み出してみる事にした。
読み始めてみると、確かに教科書というだけあって、それなりには分かりやすく解説がしてある。図もところどころに入っているから、ただただ難解な文章を読んでいる感じはしない。
とはいえ、理解できないところを調べながらだとあっという間に時は進んでしまう。
「どう、読めた?」
「いや、こんな短時間で調べながら読み切れるかよ……」
蒼に声を掛けられてようやく意識を現実に戻す。時計を見るともう十八時半、完全下校まであと三十分だ。一章を読み終わる前にこんな時間になってしまった。
「ま、そうよね。もちろんすぐ読み切れるなんて思ってないわ」
「面白いのは本当だから、頑張って読み進めてみるよ」
でも、面白いと思えたのはお世辞でもなんでもなく、事実だった。興味を持ち始めたことだから、ってのもあるかもしれない。
こんなぶ厚い技術書を読むのは初めてだけど、今のところそこまで苦じゃないのが我ながら驚きだ。
その反応を見てか、蒼はどこまでも楽しそうに、にっこりと笑った。
「ね? 面白いでしょう?」
「蒼は、今作ろうとしてるのを全部自分で作ったのか?」
「いいえ、違うわ。ほぼ自分で作ったコアもあるけどまだ未完成だし、IP大会には間に合わないわ。だから今回使うのは、去年先輩たちが作ったモノをより性能が出るよう軽く手直ししたものよ」
「自分で作ってるのがあるのか。先輩たちが作ったのを改良するだけじゃ何か足りないのか?」
「先輩たちが作ってた設計も悪くはないわ。でも、何というか……性能自体はそこまで良くない構造をしているの。手を入れはしたけど、やっぱり元の設計が原因で性能が伸びないところがある」
「だから、自分でより高性能になるものを設計してる、ってことか」
「そう。自分で言うのもなんだけど、かなり速いわよ。もちろん問題点もいくつかあるんだけど……しばらくは作らないでしょうから、このCPUが終わってからゆっくり調整することにするわ。それに、これももしかしたら……」
そう言う蒼の表情には、どこか影があった。何か言いづらいものを隠しているような、奥歯にモノが挟まったような言い方だ。
それを追及する前に蒼が立ち上がってしまったから、深くは聞かないことにした。きっと言いたくない何かがあるのかもしれない。
今日はもう終わりにするのだろう、蒼はそのままシャットダウン、と書かれた場所をクリックした。それを見て、空っぽだった鞄に蒼から借りた本をしまう。久々に中身が入ったかばんを持って帰るな。
「さて、今日は終わりにしましょう。週末でも、分からないところは聞きに来てくれて構わないからね」
「ああ、何せお隣さんだからな」
そう言って笑い合うと、二人でまだ活動を続けている部員たちに声を掛けて回ることにした。
◇
翌週月曜日の休み時間。
「おいシュウ、何読んでんだ?」
「んあ?」
「うっわ、何だお前そんな辞書みたいなの読んで。らしくないな」
教室で件の本を読んでいると、悠と宏が声を掛けてきた。ちなみに週末を費やし二章ほど読み進めたけど、逆に言えばそれでも二章だけ。ゴールはまだまだ遠い。
今日も相変わらず見た目だけはかわいらしい廃人の悠と目が死んでる宏だが、目の下のクマはそこまでではないように見えた。
「悪いな、最近ゲームに付き合ってやれてなくて」
「うーんにゃ、気にすんなって」
そう適当に返してくる悠。親に怒られでもしたか、そろそろゲームどころじゃ無くなってきてるのかもしれない。
あと、相変わらず教室の空気は改善されていなかった。そこの女子、こっち見ながら何かひそひそ話してるの見えてるから本当にやめて欲しい。
「ああ、何せ悠だけじゃなく女まで誑かしてんだからなコイツ」
そんな微妙な空気に、宏があっさりと火を点けた。誑かしてるわけもないし、何より悠が先に出てくることに異論を唱えたい。頼むからおかしいことに気付いてくれ。
「よーし宏お前は表出ろ、何ならそこから紐なしバンジーでもいいぞ」
親指を窓の外に向けると、宏はははは、と笑った。
……ったく。まあ、こいつなりの冗談だってもちろん判ってはいたんだけどさ。社会の目ってのがある。
今も僕たちにその目線が突き刺さっているように感じるのは気のせいじゃないだろう。
「なあ、悠ってこのクラスで一番可愛い女子じゃね?」
「ああ、目のクマさえ無ければな。メイクしてやりゃいいんじゃね?」
「あ、やっぱりそう思うよね? 今度柳洞くんのメイクしてみたいなぁ」
ほら、あっという間に悠がピンチだ。完全に女子として見られてるぞ。
そんな友人のピンチも気にせず、宏は笑いながら聞いてきた。神経の図太い奴だ。……いや、神経の配線が焼き切れてるのかもしれない。
「ほーん、部活か?」
悠も悠で、そんな外野の声を気にした様子もなく聞いてくる。こいつの配線もどうやら焼け落ちて久しいらしい。
「そう、何せ素人だからな。本でも読んで勉強しないと始まんないってわけ」
「どれどれ……あーパタヘネか。まともな教科書読んでんだな」
読んでる本の表紙を覗き込むと、宏は本のあだ名を口にした。蒼いわく、コンピューターの勉強をしてる人には大体通じるあだ名らしい。
確かにこいつはコンピューターに詳しい奴だとは思っていたけど、この本を知ってるのか。
「宏、お前知ってんの?」
「そりゃもう。超有名だぜその本、コンピューター設計に興味あるなら読んだことない人の方が少ないくらいじゃねえか?」
「そんな本なのか。知らなかった」
曖昧に頷くと、宏はにいっと笑顔になった。何を言い出すか少し不安になるのは日ごろの行いのせいだろう。
「俺も一応読み終わってるから、分かんないことあったら聞いてくれよな」
だが、飛び出したのは思いがけない言葉。心強い先生がもう一人身近なところに居た。
「ん、サンキュ」
とはいえこいつに頼るのは最終手段にしておこう。何だか癪だ。
「ま、何にせよだ」
肩を軽くばしっと叩いてくる悠。その目は、割と本気で安心した笑顔に見える。
「お前がこんな部活を楽しめるようになってくれて、俺は嬉しいよ」
母親を亡くして、塞ぎこんでいた僕。それを、ゲームを通じて救ってくれたのは悠だった。
そのままあらゆるゲームの沼に叩き込んだのもこいつだけど、それはそれで思うところがあったのかもしれない。
「おう、さすがにゲームだけの青春は寂しいからな」
でも、やっぱり素直に言うのは何だか癪だ。はぐらかすように肩をすくめて言う。
「おーおー、それ俺に言うか?」
「いや、お前はいろんな意味でその方がいいと思うぞ。チャームポイントの目の下のエグいクマを消さない方がいい」
「何のことだ?」
知らぬが仏、と言い始めた昔の人の偉大さを改めて感じながら、本を閉じていつもの馬鹿たちと飯を食うことにした。
◇
長くて眠たい午後の授業を終えた放課後、僕たちは蒼の号令で再び会議室に集まっていた。
「全員揃ってるわね、じゃあ第二回開発会議を始めるわ。まずは氷湖、テストチップは出来たのよね? 状況を教えてもらえるかしら」
蒼が意気揚々と会議の開始を宣言する。指名された狼谷さんの表情は相変わらず薄くて、今はその感情を読むことが出来ないくらいになっている。
「まず、これを見て欲しい」
話す声はいつもと同じ落ち着いた声に聞こえるけれど、資料に目を落としたその顔はほんのりと厳しい表情になった気がする。
「去年の製造パラメータを全て同一にして、プロセスルールのみ90nm世代に合わせてSRAMチップをテスト製造した」
プロジェクタにPCが繋がれ、スライドが会議室に投影される。
表示されていた資料を見て道香ちゃんは息を呑み、蒼と砂橋さんはため息をついた。狼谷さんが厳しい表情になったのは勘違いじゃなかったようだ。
SRAM、というのは、Static Random Access Memoryの略。RAMという名前がついている通りデータを一時的に保持しておくための、トランジスタという素子を六つ組み合わせた回路だ。
このSRAMを大量に並べたチップは、回路が単純なこと、同じ回路の繰り返しで簡単に設計できること、良不良のテストがしやすいこと……などなど、様々な理由でよく半導体の一番最初の製造の時に使われる回路の一つなんだという。
逆に言えば、SRAMチップがまともに作れなければ、それより数倍回路が複雑になるCPUは作ることすら難しいと言えてしまうだろう。
「ウエハーは八インチ。まずそもそも、ウエハーレベルで良品率が十%だった。テストで十枚製造を走らせたけど、ちゃんとしたチップが取れたのは一枚だけ」
「ってことは、残りの九枚は全部不良品が出来たってことか?」
「そう。しかも、全部」
「え、全部って……」
「あの円盤に作られた奴、全部駄目だったのか?」
「切り分けてチップとして動いたのはわずか四つ」
「SRAMチップのサイズを考えると、良品率は余裕で一%を切るわね……」
そう。シリコンのウエハ、薄い円盤上には小さい複数のチップが一気に作られる。
それを後工程、と呼ばれる終盤の工程で小さいチップに切り分けていく訳だけど、あるウエハ一枚から作ることが出来るチップの全てが不良品だったものが90%ということだ。
つまりは、切り分けた後のチップの観点で見たら良品率は致命的に低い訳で。
「やっぱり、か……」
砂橋さんが大きくため息をつく。やっぱり、ということは、ある程度予想できている結果だったのだろうか。
「思い当たる節があるのか?」
「……魔の八月の主な原因は、この低すぎる『イールド』、良品率だったのよ」
「90nmなんて、ウチにある機材なら安定して作れるはずなんだけどなあ」
「製造装置的には、あり得ない良品率。全てが酷い」
ここで、初めて魔の八月の主な原因を知った。つまりは、正常に動作するものがきちんと作れなかった、ということなのだろう。
ちゃんと動くものが作れなければ、大会で成績を残しようが無い。去年の動くチップが無いと言っていたのも、去年大会を辞退したというのも、これが原因だろう。
「しかも、『最高動作周波数』が1.5Vで97MHzって……低すぎませんか?」
道香ちゃんが不安げに言う。そうはいっても、どれくらい変なのかは分からない。
「そんなに低いのか?」
「ええ、本来なら1.5Vも掛ければ不出来なチップでも1GHzくらいで動いてほしいものよ」
まるで頭痛をこらえるように、蒼は額を抑えながら言葉を続ける。
「半導体って電圧を上げればその分クロックも伸びる傾向があるんだけど、耐えられる電圧はプロセスルール、つまりは製造するトランジスタの大きさで大体決まっているの。1.5Vっていうのは、ほぼ90nmプロセスで作った半導体が耐えられる限界だから、電圧を上げての伸びしろはもうないと思っていいわ」
電圧を上げると、電気を流そうとする力が大きくなる分クロックを上げやすくなる。でも電圧が限界ってことは、どんなに頑張ってもこのクロックでしか動かないということだ。
本来なら1GHz以上、つまり1000MHz以上で動いてほしいと言っていたということは、動作スピードは目標のわずか十分一以下。さすがにまずいのはわかった。
「1.1Vか1Vでこの周波数、っていうならまだわかるんだけどね……」
「はっきり言って、目標の性能の二十分の一以下の性能しか出ていない」
「二十分の一以下って……まずいんじゃないのか?」
今の性能目標は確か去年の優勝チームの二倍。作ったチップの性能が目標の二十分の一になると、去年の優勝チームのわずか十分の一だ。優勝どころの話ではなくなってしまう。
「ええ、相当まずいわ。今の設計だとせめて1GHzくらいで動いてくれないと」
「それに、スケジュールもかなり厳しいですよね? 最初のテープインの目標は今週の金曜日じゃあ……」
それに、僕たちには時間もない。この間の口ぶりだと必要最低限の回数しか作り直しができないから、最初のチップを作り始めるのが遅れると大打撃になってしまう。ワンミスがあったら終わり、というのがまずいのはなんとなくわかる。
「そうなのよね……これでCPU本体の回路を作ったらかなり大変なことになる」
蒼の言葉で、会議室が沈黙に包まれた。このままでは大会出場すら危うくなってしまう。
その沈黙を破ったのもまた、狼谷さんだった。
「策はある」
「どんな?」
蒼が静かに訊く。それに対して、狼谷さんは少し怯えるような表情を浮かべた。何か気になることがあるんだろうか。
「でも、荒療治になる」
「ええ、聞きましょう。どんな荒療治も、今のまま行くよりはマシよ」
だけど、そんな表情をものともせず蒼は踏み込んでいく。
その姿勢に降参したかのように、狼谷さんはゆっくりと言った。
「……去年の製造プロセスのデータを全部を捨てて、私流の設定にする。そうすれば、ほぼ間違いなく要求性能は出せると思う」
「いいじゃない。それで行きましょ」
元気に蒼は言い放った。まるでさっきまでの重い雰囲気を吹き飛ばすように。
それを聞いた狼谷さんは、見てわかるくらいにきょとん、とした表情をしている。
「……いいの?」
「いいに決まってるじゃない。去年の設定そのままで上手くいかないのはある意味織り込み済み。これできっぱりと過去と訣別できるわ。無策じゃないなら、それをやってみて頂戴」
でも、それだけでさっぱりと納得する狼谷さんじゃない。静かに残りの懸念を述べていく。
「納入されている機械が微妙に違うから完全に同一ではないけれど、性能的には去年の電工研が使っていたものとほぼ同等のものになる。一つの妥協点だし、同時に一つの懸念」
「十分じゃない。どこが懸念なの?」
「それに、JCRA標準のプロセスサイズでしょ? 酸化膜の厚みとか工夫できるところはなくもないけど、そこまで変えられるパラメーターも多くなかったよね?」
「電工研のプロセス開発が成功していた場合。彼女たちが開発していたプロセスは、致命的なほどの良品率の悪さこそあるけれど、上手く動いた時のシリコン性能は私が知っているものを超えるかもしれなかった」
「えっ、電工研もIP大会に出るの?」
「そんなに変なことなのか? 同じような部活だったら出てもおかしくないんじゃないの?」
「前も言った通り、CPU甲子園の出場権を持ってるときにはIP大会には出たことがないんだよ。その時間をCPU甲子園用のチップの開発と検証に当てた方が有益だからって」
その方針は、確かに腑に落ちるな。出場権を既に持っていて、かつ出す予定のチップが準備出来ているのであれば、本番であろうCPU甲子園と大会のレギュレーションが全然違うIP大会に出る必要はない。わざわざチップを作る時間と労力、それに部費を掛けるのがもったいない、ってわけだ。
「IPがメインなこともあって参加チームの質も高くないところが多い、っていうのはそういうことよ。強豪って呼ばれるようなところは夏の大会に集中するから、出てきても二軍とか新入生とかのチームになるってわけ。実際どうなの? 何か聞いていた?」
「少なくとも、私はその話は聞いていない。電工研は既に去年の大会でCPU甲子園への出場条件を満たしているから、出る必要はないはず」
「……とりあえず氷湖のプロセスを適用するってことで問題ないと私は考えるわ。去年の電工研の製造技術は他の学校を凌駕していた。この大会で勝つだけならば問題ないと思うけど……皆はどうかしら」
「うーん、アタシも賛成かなあ。競争力は一旦置いておいたとしても、とりあえず動くものを作らないと始まらないし」
「わたしも、結凪先輩のおっしゃったことはもっともだと思います」
「ってわけだし、今度は氷湖の知ってるパラメータでやってみてもらっていいかな? 配置はそこまで進んでないからアタシの方は気にしなくていいからさ」
設計に直接携わるみんなからもゴーサインが出た。でも、狼谷さんは滲む不安を崩さない。
どちらかというと、技術的なものよりも、精神的なモノのように見えた。
「本当に、私の好きにして、いいの?」
「むしろ氷湖の好きにしてちょうだい。何しろ今は製造プロセスを全部触れるのは氷湖しか居ないんだから」
自信満々に言い切る蒼。その表情は、心からそう思っていることを疑わせない。
それを見た狼谷さんはしばし戸惑うような表情を浮かべた後、ほんの少しだけ表情に笑みが混じった。
「わかった。1.2Vで3GHzで動くものを作る」
「そこまで出来るの?」
「三日でやる」
「氷湖だから心配は無用だったわね」
「任せて。デザインルールはJCRA標準のままでいい、そこに合わせる」
「ま、そこは大会のルールだしね。頼んだよ」
「ん。信じて」
「よし、プロセスはやり直しで決まりね。金曜日のこの時間で報告して貰えるかしら?」
「わかった」
「そのデータを見て『テープイン』、製造開始のGo/NoGoを決めるわ。いいわね?」
「任せて」
そう言って頷く狼谷さんは、どこかやっぱり楽しげに見えた。
「次は私ね、コアの方はシミュレーションも通ったしほぼ完成よ。シミュレーション結果では1GHzもあれば650MFLOPSは出るはず」
本を読みながら時々蒼の作業を見ていたけど、そんなに追い詰められながら開発していたような感じはしていない。先輩たちが作ったコアに少し手を入れただけと言っていたし、ほぼモノが出来ているというのは間違いないのだろう。
それに、蒼の口から伝えられた予測性能はかなりのものだった。
「おお、去年の優勝チームは超えるんだな」
「もちろん、あくまでこの周波数で動けばの話よ。安定して動いてくれなきゃ意味がないわ」
「安定性テストもあるんですもんね」
「そ、あとは半導体自身の性能次第ね。結凪、そっちの進捗はどう? 先週末に『コア』のデータは送ってあるはずだけど」
「まっかせて、週末の間に配置までプログラムを走らせておいた。今朝結果を見てみたけど、そこまでの手直しは必要なさそう」
砂橋さんが得意げに話し始めると、場の空気が少し緩んだ。
仕方ない、道香ちゃんなんて完全に猫とかを眺めるときの目だ。別に小学校低学年の子が自慢げに話しているようで微笑ましい、だなんて決して思ってない。
「ん、物理設計もとりあえず大丈夫そうね。道香ちゃん、ボードと設計ツールは触ってみた?」
なんとか表情を引き締める努力をしているように見える蒼は、とっとと道香ちゃんへと会話のボールを渡すことにしたようだ。
その道香も、自信満々な笑顔の花を咲かせた。
「はいっ、どちらも大体のことはわかりました。サブストレートだけであればそんなに時間も掛からずできるかと」
「上々ね。結凪が物理設計の最初の方でシリコンの『バンプ』配置は決めてくれるはずだから、それを貰い次第すぐ設計に入っちゃって」
「もうシリコン側のバンプ配置は八割決まってるからすぐ送るよ、よろしくね」
「わかりましたっ」
謎の会話が繰り広げられているけど、何はともあれ道香ちゃんも順調なようだ。
この部活にもちゃんと馴染めているようで、あらためてほっとした。道香ちゃんなら大丈夫だと思ってたけど。
「とまあ、こんなところかしら」
蒼が全体を見渡すと、砂橋さんも道香ちゃんも、狼谷さんも頷く。
「よっし、じゃあSand RapidsのAステッピング、最初の試作は予定通り今週末の製造開始を目指すわ。頑張りましょうっ!」
「「「「「おおーっ!」」」」」
皆で元気よく声を上げて、今日の開発会議はとりあえずお開き。
オフィスエリアに戻ろうと椅子を立とうとしたところで、蒼に声を掛けられた。
「さて、今日は折角だし結凪の作業を見てみたらどうかしら?」
「砂橋さんの?」
「さっきちらっと話した通り、私の今回のプロジェクトのための仕事は現時点でひと段落しちゃってるのよ。だから、これから忙しくなる結凪の物理設計を見たら勉強になるんじゃないかと思って」
「確かに、それもよさそうだ」
確かに、この間蒼がどんな仕事をしているかの話は聞いた。そのつながりで、砂橋さんの仕事も知っておくのはよさそうだな。
「ん、呼んだー?」
蒼からの提案に頷いていると、名前が聞こえたからか、とてとてと砂橋さんがやってきた。
「ええ、今日は結凪がシュウのことを見てくれないかと思って」
「アタシが?」
その言葉を聞いて、珍しく砂橋さんの表情が曇ったように見えた。
「せっかくだし物理設計の仕事を見てもらおうと思ったのよ」
「よっし、そういうことなら任せて」
でも、次の瞬間には普段の表情に戻ってしまった。今の表情、見るのは……二回目だろうか。初日に一瞬見せたものと同じ気がする。
「シュウ? 聞いてる?」
「っと、ごめん。砂橋さんに教えてもらうってことだったよね?」
「そゆこと。今日はアタシが先生ってわけ」
「よろしく頼むよ、砂橋さん」
さっきまでの表情はどこへやら。なんとなく楽しげな砂橋さんの後を追って、オフィスエリアへと向かうことにした。
「適当に座って、えーっと」
オフィスエリアに着くと、砂橋さんの席に向かう。相変わらず色々なものが城塞を成しているデスクだ。
席に着いた砂橋さんはその小さい体を椅子に乗っけると、パソコンを何やら操作し始める。その間に、折角の機会だからデスクを見回してみた。
「……改めて凄いデスクだな、砂橋さん」
砂橋さんの周りには、さまざまな本や書類で構成される塔が二桁基ほど高層ビル群を成している。
「あー? んー、まあ手元に何でもあるから便利だよ」
どんな書類が積んであるんだろうと、試しに一枚捲ってみると。
「うわっ……」
そこにはみっちりと英語が書かれていた。いわゆる論文とかいう奴なのだろうか。
当然のように周辺の机も侵食していて、都合三人分の机くらいを使っているようだ。この言い方はあまり良くないけど、部員が少なくて砂橋さん的には良かったに違いない。
とりあえず、タワーの基礎と化した隣の机から椅子を持ってきて腰を下ろす。砂橋さんのパソコンには大きな画面が二枚繋がれていて、画面を見ると左側にはプログラムのような文字の羅列が、右側には四角い箱のような図形が表示されていた。
「さて、アタシの仕事は物理設計。簡単に言うと、蒼が書いた回路図を元に半導体の設計図を作っていく仕事だよ。今画面に表示されてるのが、アタシの物理設計の仕事が全部できるソフト、『EDAツール』って奴だね」
確かに、左側に表示されているのは前に蒼に見せてもらったものと同じ、HDLと呼ばれるもの。蒼の作ったものを踏まえて仕事をする、っていうのは間違いじゃなさそうだ。
「あれ、砂橋さんもHDLを使うのか」
「あー、これは特別な時に見るくらいかな。後でちょっと紹介するよ」
それから砂橋さんがちょっと操作をすると、突然画面に色とりどりの線の塊みたいなものが表示された。
「うわっ、何だこれ!?」
「これが実際の半導体の設計図だよ。拡大していくとわかるけど」
そう言ってマウスのホイールを転がす砂橋さん。その塊はどんどんと拡大され、どうやら小さな塊ごとに別れていることがわかるようになり、やがておびただしい量の縦と横の線の集合体であることがわかり、ついには一本一本の線が見えるようになった。
「これが、実際の露光工程で使う『レチクル』、マスクの元データだね。これを氷湖に渡して、専用の装置で製造してらうってわけ」
「なんというか、トラウマになりそうな見た目だな」
集合体恐怖症の人が見たら卒倒しそうな画面だ。あまりにも情報量が多い画面だけど、それをものともせずに砂橋さんは解説を続けていく。
「この図面を作る作業のことをP&R……プレースアンドルート、日本語だと『配置と配線』になるかな、って言うんだよ」
「回路図を元に、トランジスタを置いていくのか」
「もちろんそれもやるけど、最初から数億個のトランジスタと戦うのは賢くないかな。まあ当然だけど、適当にこんな配線とかトランジスタの配置をしてるってわけじゃないし」
「そりゃそうだろうな、よっぽど考えないと配線中あっというまに詰みそうだ」
「それもあるし、性能に影響しちゃうこともあるからね。ってわけで、作業の流れをざーっくり追ってみようか」
それから砂橋さんはまたパソコンをカチカチといじると、画面上のさっきの色とりどりの線は消えて、白枠のブロックに置き換わった。
「蒼に回路見せてもらったでしょ? あの時、おおまかに回路のブロックに別れてたところがあったの覚えてる?」
「ああ、あの白い箱がすげー量の線で繋がってる奴か」
蒼の画面でも、幾つかのブロックを組み合わせたような図を見た気がする。そのことだよな、多分。
「そうそう。そこで使うくらいの粒度で、どんな感じでブロックを置くか決めてくの。そのことを『フロアプラン』って言って、第一の大事なポイントだね。まあ、大体はコンピューターがある程度やってくれるんだけど」
「そりゃそうだ、手でやってたら大変だろうし」
その白い箱の数だって少なくはなかった。コンピューターが助けてくれるのも納得だ。
「フロアプランが出来たら、実際に電源のラインとかトランジスタ、配線を置いていくよ。ここが一番大事なところだね。一番下の層にびっちりトランジスタを置いて、その上の配線を作っていくの」
「そうだよな、SRAMだって計算する回路だって同じトランジスタで作るんだもんな」
データを保存できるSRAMという回路も、計算するALUと呼ばれる回路も同じ『電界効果トランジスタ』、FETという部品を組み合わせて作っていると読んだ。なんなら、基本的な計算機の機能は全てそのFETを組み合わせて作られているのだという。
「でも、半導体って層になってるのか。そうは見えなかったけど」
「そりゃそうだ、全部合わせても十マイクロメートルとかかな? 全部の層を合わせても髪の毛の太さの五分の一の厚みだよ」
「あー、そりゃ確かに見えないわ」
「ま、そんな感じで何層にも分けて配線をしていかないと収まりきらないんだよ。ここもある程度はプログラムがやってくれるんだけどね」
「ってことは、砂橋さんの仕事は大体プログラム任せってことか」
今の話だと、このP&Rという作業はある程度プログラムがやってくれているように聞こえるな。でも、僕の言葉を聞いて砂橋さんは大きくため息をついた。どうやら違うらしい。
「そうだったら良かったんだけどね……ねえ鷲流くん、3GHzで動くチップの中で、電気は1クロック中にどれだけ進めると思う?」
唐突な算数の問題が出てきて面食らう。
えーっと、3GHzっていうのは一秒間に三十億回ONとOFFが切り替わる。つまり光が進めるのは三十億分の一秒だ。光は一秒間に三十万キロ進んで……えーっと?
「答えはね、わずか0.0001キロメートル。千メートルで一キロ、一メートルは百センチメートルでしょ? つまり」
「十センチ?」
「正解。ま、アタシらのチップはそこまで動くかわからないけど、まあ光でもそれくらいしか進めない訳。さらにトランジスタがONとOFFを切り替えるのにも電気から見るとそれなりの時間が掛かるから、配線の長さは極力まで抑えないといけないんだよ」
「なるほど……?」
「ある程度はプログラムが良しなにやってくれるんだけど、限界があるからね。一番信号の伝達に時間が掛かる場所を『クリティカルパス』って言うんだけど、プログラムがやってくれた結果が目標の伝達時間を満たさないときは、それを縮めるために手作業で延々とパズルをしないといけない」
「な、なるほど……それは確かに重労働だな」
「それに、配置だけじゃどうしても無理な時には、論理合成で作られた結果の回路からもっと高速に動かせる回路に出来ないか見直したりもするんだよ。それを、目標時間以上掛かっちゃってるところ全部でやるのはなかなか骨が折れるんだなあ」
遠い目をする砂橋さん。どうやらその作業は本当に大変なようだ。
「……プログラム任せなんて言って悪かった」
「わかってくれればいいってことよ。この右側が、実際にソフトが配置した結果の物理的な設計図。下に出てる赤字のところが目標時間を超えちゃってる良くない回路のところだね、この目標を超えちゃってる、つまりクロックのタイミングに合ってないことを『タイミング違反』っていうんだ」
「このセットアップとホールド、ってとこか」
「それそれ。『セットアップ』は、クロックのゼロイチが変わるどれくらい前に処理が終わった信号が届いてるか、って数字なんだ。これがマイナスになるとどうなると思う?」
確かに、赤くなっているところの幾つかはセットアップの数字がマイナスだ。えーっと、クロックが変わるタイミングに対してプラスだとそれだけ時間に余裕があるってことだ。つまり、マイナスは……
「クロックが変わってから、処理が終わった信号が届くってことか」
「大正解、ってことはまともに動かないのもわかるよね?」
「ああ、だってクロックについて行けてないんだもんな」
「このセットアップ時間違反のうち、一番数字が大きいのが信号の伝達に一番時間が掛かる場所ってこと。つまり?」
「クリティカルパス、だったっけ?」
「そーそー、よく覚えてたね。このクリティカルパスが結局クロックの上限を決めるんだよ」
「そうか、クロックを上げたところで信号の伝達や処理に掛かる時間が短くなるわけじゃないんだもんな」
「その通り、クロックを上げるってことはその門限が早くなるだけなんだよ。だから、例えばクロックを上げすぎると普通のクロックだと問題ない回路でもこのセットアップ時間違反を起こして間に合わなくなって、おかしくなるってわけ」
「はー、なるほどな」
確かに、クロックに合わせて処理をしていくというのに、そのタイミングまでに処理が間に合わないのは間違いなくよくない。その処理の時間よりクロックが早くなってしまったらまずいし、逆に言えばちゃんと動く中で最も速いクロックはこのセットアップ時間によって決まってしまう、というわけだ。
「ちなみに早すぎてもバグるんだよね、データが早く来すぎるのが『ホールド』違反。これはクロックが変わるタイミングでデータを保持しておく『ラッチ』って部分、そこに使われてる『フリップフロップ』って回路がデータをちゃんと覚えきる前に値が変わるとおかしくなる、って話なんだけど……ま、ここは難しいから後ででいいや」
さらに色々制約があるみたいだけど、とりあえずは先に進んでくれるらしい。ここまででも頭はいっぱいいっぱいだから正直助かった。
再びマウスをカチカチとクリックして、さっきの回路図と図形が描かれたタブに戻る。この右側の図形が回路になるらしい。
その下には、赤い字が表示されている。ざっと流すようにスクロールして見ると数十行ほどあるようだ。砂橋さんは至極面倒くさそうな顔をしている。
「うーん、タイミング違反は二桁だし今週中には間違いなく終わるかな。さて、こうやってなんとか希望の配線が終わったのがさっきの図面。一つこれを見て、何か気付いたことはない?」
「んー? 気付いたこと、ねえ」
そこに表示されているのは、さっきと同じような縦と横の線が入り混じった図だ。これを見て気付いたこと、なんて……
「そういえば、斜めの線って引かないんだな」
「お。正解、半導体の設計では斜めは使わないんだよ。縦線と横線で別の層になってるから、斜めに繋ぎたい時は下から縦横縦横って配線を重ねるの」
「何で斜めを使わないんだ? 配線を短くするなら斜めを使ったほうが良いんじゃないのか?」
それこそ最短距離を狙うなら、斜めもどんどん使ったほうがいい気がする。でも、砂橋さんは楽しそうにちっちっち、と指を振った。
「答えは簡単、斜めを使い始めると配線の密度が上げられないからね。数十億本の配線をする必要があるのに、例えば右上から左下まで一本線を引いたらもうその層はまともに長い配線を飛ばせなくなっちゃうでしょ?」
「確かに、限られた層に配線を詰め込むとなるとそうなるのか」
斜めの線は短くなるけど、他の配線の邪魔になるから逆に使いづらいというわけだ。確かに斜めの配線が入るだけで、もう縦にも横にも長い線は引けない。それに、繋ぎたい角度ごとに層を準備してたら層がいくらあっても足りないよな。
「ついでに説明しちゃうと、この線の端にある四角いところが『ビア』って言って、下にあるトランジスタと繋いだり上の層にある配線と繋ぐための端子だね。今はこんなに大きく拡大してるけど、実際の半導体の上では配線の横幅が大体50nmになるよ」
「髪の毛の千分の一、だっけか……」
そう言われると、何だか実感が湧いてきた気がした。CPU、僕たちの作る半導体は、この目の前に表示している設計図を、いわば極限まで縮小コピーして作るのだ。
「この配線を何層にも重ねるんだろ?」
「そうだね、今回は八層かな?」
こんな配線を、まるでミルフィーユのようにナノメートル単位でぴったり合わせて八層も重ねることで半導体はようやく半導体として動作するモノが完成するということ。
「すげえんだな、半導体って……」
改めて設計図の形で見ると、恐ろしいほどの精度で、恐ろしいほど細かい加工をして制作しているんだという実感が湧いてきた。さらに、それを何十ピコ秒、つまり十億分の一秒刻みで電子が動いていくタイミングを合わせながら動いている。もはや狂気の域だ。
「実感が湧いてきたでしょ? 凄いものを作ろうとしてるんだって」
「ああ……砂橋さんもやっぱり凄いんだな」
「アタシだけじゃ造れないんだな、これが。論理設計の蒼や製造の氷湖と協力しないといいものって出来ないんだよ」
「というと?」
「例えば、アタシがどんなに最適化しても蒼の元々の設計の出来がイマイチだったら性能は伸びない。氷湖が、アタシが作ったデータの通りに作ってくれなかったらそもそも動かない。だからね、計算機工学はチームワークなんだよ」
そう、コンピュータ……電子計算機は、一人の天才だけで全てを完成させることは難しい。優秀な技術者同士が綿密にやりとりをして、ようやく形にすることが出来るんだ。まるで、チーム一丸にならないと勝てない団体スポーツみたいだな。
「そうか、本当に……蒼も砂橋さんも、みんなまとめて凄いんだな、ここは」
ざっくりとした感想を聞いて、砂橋さんは苦笑いを見せる。
「ま、アタシも技術だけは人並みにあるからね」
その苦笑いは、やっぱりどこか引っかかるものがあった。
でも、さすがにそれだけで訊いてみる勇気はない。もしかしたら僕の感想に呆れてるのかもしれないし。
「こっからは実践編いくよ。出来るだけ説明もするけど、わかんないとこあったら聞いてね」
そう言った砂橋さんの表情には、やっぱりさっきの違和感はない。気のせいだった、んだろうか。一旦その疑問はしまって、回路の修正作業を見学する。
時々渋い顔でカエルが潰れたような可愛くない声を上げながらも、鮮やかな手さばきで回路や配置された設計図、シミュレーションの結果と蒼が書いたHDLの間をいったり来たりしながら修正していく砂橋さん。
その淀みなく流れるような手際は、まるでその道のプロのように見えた。
「鷲流くん、ちょっと紙とペンとって」
「はいよ、ってことは回路ごと直すってことか?」
「ん、この書き方だと良い回路にならないから。えーっと? 組み合わせ回路がこれで……」
そんな砂橋さんに対して、助手のように手伝いをしながら邪魔をしないようにしつつ、時々表示されている回路や設計図に関して質問するのがやっと。
「おーいお二人さん、そろそろ下校時刻よ。いい感じの所で切り上げて頂戴」
気付いた時には、蒼が最終下校三十分前の声かけに回ってきていた。二人でかなり集中してしまっていたようだ。
「おっと、もうこんな時間。道香ちゃーん、サブストレート設計の調子はどーお?」
「信号線も少ないですし、そこまで信号も速くないのですぐできると思います。金曜までには間違いないかと」
砂橋さんの確認に、道香ちゃんがむん、と腕に力を入れて見せる。もちろん力こぶは出来ず、細くて華奢な腕を曲げているようにしか見えないのはご愛敬。
「ん、ならよーし。チップ側でもなんでも、判らないことがあったらすぐ言ってね」
「はいっ、宜しくお願いしますっ」
敬礼する道香ちゃんを見て、よしっ、と笑う砂橋さん。その様子を見て、僕も素直に感謝の言葉が出た。
「今日は教えてくれてありがとな」
「気にしないで、面白かったかどうかは判らないけど……」
「凄い面白かったよ。蒼との棲み分けもなんとなく判ったし」
「論理設計と物理設計、全部一人で出来ないこともないんだけどね。今はソフトも優秀だし」
「そうなのか? 今日見てる限りだと今の分だけで十分に地獄を見ていたような気がするが」
正直、あれだけの改良を蒼のやっている論理設計をやりながら一人で出来るとは思えない。砂橋さんは少し自慢げに、そして楽しげににひひ、と笑った。
「それはね、その分性能の目標を高くしてるから。蒼とアタシがいるからこそ、製造技術に頼らなくても高速な回路を作れるってわけ」
「なるほどな……」
「動作周波数の目標を一段階下げれば、確かにソフトが吐き出したものそのままで十分。でも、その先が目指せるなら目指さなきゃ勿体ないでしょ?」
「ああ、その通りだな。実際にチップになって出てくるのが楽しみだ」
「アタシもそう。いっつも凄い楽しみで、それと同じくらい胃に穴が開きそうになる」
「はははっ、砂橋さんでもそうなるんだな」
「ちょっと、鷲流くんはアタシのことを何だと思ってるの?」
「でも、そんな思いをしてもやめられないってことは……大好きなんだな、コンピュータが」
そう答えると、砂橋さんはひひっ、と笑った後――やっぱりどこか陰のある、困ったような笑顔を見せた。
「うん、アタシにはそれしか無いからね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます