同じ画像を加工するプログラムでも、パソコンによって終わるまでの時間が違う。高性能な部品に替えたのに、思ったほど速くならない。こんな違いを、コンピュータの内側から考える分野があります。
「コンピュータシステム・半導体・高性能計算」分野では、計算を実行する装置とソフトウェアを結びつけ、速さ、電力、資源の使い方などを調べます。半導体を使う集積回路や、計算の中心を担うCPUだけでなく、データを一時的に置くメモリ、機器やプログラムを管理するOS、複数の計算機を一緒に動かす仕組みも学ぶ対象です。
「何を計算するか」に加えて、「その計算を、どんな仕組みで動かすか」に関心がある人の入口になります。
プログラムが動くまでを、内側から見てみる
画像の明るさを変える処理を例にすると、画像の情報を読み出し、画素ごとに計算し、結果を保存する必要があります。このとき、計算を担当する部分だけが動いているわけではありません。
- 回路・CPU:命令に従って演算や制御を行う。論理回路が、より大きな計算機の機能を支えます。
- メモリと記憶装置:処理に必要なデータを保持し、CPUへ渡す。容量だけでなく、アクセスにかかる時間や転送量も関係します。
- OS:プログラムがCPU、メモリ、ファイルなどを使えるように管理する。複数の処理をどう進めるかも扱います。
実際には、これらの部分が関係し合って動きます。例えば、処理が遅くて改善したいときは、演算そのものに時間がかかっているのか、データが届くのを待っているのかを測って調べます。CPUだけでなく、メモリやOSも含めた全体の仕組みを考える必要があるのです。
半導体から、情報処理の仕組みを考える
半導体は、シリコンなど、条件によって電気の流れやすさを変えられる材料です。その性質を利用した部品の一つが、電気の流れを制御するトランジスタです。トランジスタなどの部品と配線を一つの小さなチップに作り込み、回路にしたものを、集積回路(IC)と呼びます。[1]
一方、デジタル回路は、0と1のように区別した値で情報を扱う回路のことです。トランジスタをスイッチのように組み合わせると、足し算をしたり、値を記憶したりできます。CPUやメモリは、こうした回路を半導体チップに集積した代表例です。「半導体」は材料、「集積回路」は回路を小さなチップにまとめる作り方、「デジタル回路」は情報の扱い方に注目した言葉だと考えると、関係をつかみやすくなります。なお、集積回路には、音などの連続的な信号を扱うアナログ回路もあります。
材料の性質から、部品、回路、CPUやメモリへと学びを進めると、「同じ計算を、より少ない電力で動かせないか」といった問いを考えられます。
半導体に関心がある場合は、半導体・集積回路の学び方を紹介する記事も読んでみてください。材料や製造を深く学ぶ進み方と、回路や情報処理を中心に学ぶ進み方を紹介しています。
一つの計算を、複数に分けたら速くなる?
大量の画像を一枚ずつ加工する処理を考えてみましょう。[2] この場合は、画像を分担して複数のCPUコアで動かす方法を考えられます。コアは、CPU内で命令の実行を担う部分です。しかし、担当を決めたり結果を集めたりする時間も必要です。全員が同じ記憶装置からデータを読むために待つこともあります。
そのため、計算を担当するコアの数を2倍にしても、必ず所要時間が半分になるわけではありません。次の図は、処理にかかる時間を横棒で示したものです。1コアでは6秒かかる処理のうち、最初の2秒は分担できず、残りの4秒だけを2コアで分担できるとします。この場合、終わるまでの時間は3秒ではなく4秒になります。
並列化できない部分が残るため、速くできる程度には限りがある。この関係を表すのが「アムダールの法則」です。図では同じ量の処理を比べ、分担するための通信などにかかる時間は省いています。実際には、そうした時間も加わります。[3]
さらに、速さだけでなく、処理の順序にも注意が必要です。例えば10と20の平均を求めるなら、合計30が求まった後に、個数の2で割ります。合計ができる前に割り算を始め、合計を置く場所に残っていた0を使ってしまえば、答えは15ではなく0になります。
図の矢印は「前の処理の結果が、次の処理に必要」という関係を表しています。こうした関係をデータ依存関係と呼びます。どこは同時に進められ、どこは結果ができるまで待つ必要があるのかを見極めることが、正しく速いプログラムを作るために必要です。[3]
並列計算は、複数の処理を同時に進める考え方です。分散計算は、ネットワークでつながった複数の計算機などを協調させる考え方で、両者は重なります。大学では、処理の分け方、計算機同士の通信、ほかの処理が終わるのを待って足並みをそろえる方法、速さの測り方を学びます。[4]
高性能計算は、このような仕組みを大規模な計算へ生かす領域です。実例として理化学研究所の「富岳」の構成を見ると、計算を担当する多数の装置と、それらをつなぐ仕組み、プログラムを動かすソフトウェアの組み合わせを確認できます。大きなCPU一つで処理する機械、というイメージだけでは捉えられません。[5]
速さを比べるとき、何をそろえる?
計算機の構成を学ぶには、プログラミングに加えて、論理回路、数の表現、機械語、メモリの仕組みなどがつながります。OSや並列処理に進むと、処理が同時に動くときの管理や、限られた資源の配分も問題になります。
例えば、画像10枚の処理と1万枚の処理では、どの部分で時間がかかるかが変わるかもしれません。同じデータと同じ計算を用意し、仕組みの一部を変えて比べると、速さの違いが生まれる理由を調べられます。
次は、回路やプログラムの仕組みを変え、動きや性能を確かめる方法の例です。
- 小さな論理回路を組み合わせ、期待した結果が出るか確認する。
- プログラムがメモリへアクセスする順序を変え、実行時間を測る。
- 処理の分担方法を変え、速さと結果の正しさを比べる。
- センサーなどとつながる小さな計算機を動かし、時間や消費電力の制約を考える。
測定条件や入力の大きさをそろえること、速くした後も正しく動くか確かめることが、作業の意味を理解する手がかりになります。
ソフトウェア、AI、材料の学びとのつながり
「ソフトウェア・プログラミング」分野と比べると、「コンピュータシステム・半導体・高性能計算」分野では、プログラムを実行する基盤や資源の使い方に重点があります。境界は明確な壁ではなく、OSの開発などでは両方の知識が関わります。
「AI・機械学習」分野との関わりでは、学習や推論の方法を考えることと、それを高速・省電力に実行する基盤を考えることを分けると理解しやすくなります。同じAIを題材にしていても、中心に置く問いが違います。
また、回路やプロセッサは半導体技術とつながりますが、このサイトの「コンピュータシステム・半導体・高性能計算」分野が、半導体材料や製造プロセスの全領域を含むわけではありません。材料・デバイス・製造に関心がある場合は、電気電子系などの教育内容も確かめる必要があります。
大学で学ぶ科目
学部では、論理回路、計算機構成、OS、プログラミングなどを学びます。半導体・回路に進む課程なら、電気回路や電子デバイスも基礎になります。演習の例には、回路で足し算の仕組みを作ることや、複数のCPUコアへ処理を分担させ、どこで待ち時間が生じるか測ることがあります。[4]
大学院では、集積回路、計算機の構成、並列計算など、自分が深める部分の専門科目と研究に進みます。例えば、AIの計算を少ない電力で動かす回路を考える、複数の計算機への処理の分け方を変えて通信待ちを減らす、といった研究です。北海道大学の情報エレクトロニクスコースでは、集積システム・集積電子回路・半導体デバイスなどの教育研究が案内されています。[6]
回路を作るのか、OSを調べるのか、大規模な計算を速くするのかで必要な学びは変わります。専門科目と研究指導に加え、実験設備を授業や研究でどう使うかを確認することが大切です。
「コンピュータシステム・半導体・高性能計算」分野を学べる大学学部・大学院を探すから、関心のある計算機の仕組みを学ぶ経路を確かめてみましょう。
仕事・業界ガイドでは、仕事内容から関連する分野を確認したり、学びたい分野から仕事を調べたりできます。
tojihubの情報分野の区分について
tojihubは、半導体・集積回路・計算機構成・OS・組込み・並列分散処理・高性能計算を、この「コンピュータシステム・半導体・高性能計算」分野として整理しています。
CS2023と科研費の区分を参考にしています。参照した区分と、各分野に含める内容・隣接分野との関係は、「18の分野について」のページで説明しています。
参考文献・注釈
- [1]
- [2]この記事の画像処理の説明は、学び方を具体化するための例です。特定の授業や製品の性能を示すものではありません。 本文へ戻る
- [3]米国ローレンス・リバモア国立研究所「Introduction to Parallel Computing Tutorial」の Amdahl's Law・Data Dependencies。二つの図と数値例はtojihubが説明用に作成したもので、特定製品の測定結果ではありません。 本文へ戻る(1) 本文へ戻る(2)
- [4]ACM・IEEE-CS・AAAI『Computer Science Curricula 2023』最終報告(PDF)。AR・OS・PDC・SF・SPDの内容と学習成果を参照し、本文の例はtojihubが説明用に構成しました。DOI: 10.1145/3664191。 本文へ戻る(1) 本文へ戻る(2)
- [5]
- [6]北海道大学大学院情報科学院「情報エレクトロニクスコース」。教育研究分野と授業科目を参照。本文の研究課題は学び方の例であり、個別研究室の履修案内ではありません。 本文へ戻る