4-1バスの種類
日曜の閉店後、こむぎ堂のショーケースの上に、中古で譲ってもらったモニタが届きました。明日から「今日のおすすめ」を映す予定です。ミナトがノートPCの側面からケーブルを差そうとすると、モニタのケーブルの先は横に長い台形で、ノートPCの側面にある口は小さな楕円が二つだけでした。後ろから店長がのぞき込み、別の話を始めます。「ついでにさ、発酵室の温度を、ここに居ながら見られないかな。毎回扉を開けると生地が冷えるんだよ」。差し込めないケーブルと、まだ影も形も無い温度計。ミナトは相棒に打ち込みました。「機械どうしって、そもそも何でつながってるの」
相棒は、ケーブルの話をする前にノートPCの中から説明を始めました。外の機器とつながる前に、PCの中でもCPU・主記憶・SSD・画面の回路などの装置が、たえずデータをやり取りしているからです。装置どうしを結び、データや信号を受け渡す共通の伝送路を、バスと呼びます。乗合バスが決まった道を通って何人もの客を運ぶように、1組の信号線を複数の装置で共有して使います。
1本の道を全員で使うので、バスにはいくつかの決まりが要ります。いまどの装置が話しているのか、相手はどこなのか、何を運んでいるのか。この決まりと、バスの道幅や速さが、PCの性能を左右します。ITパスポートでは、バスは「装置どうしをつなぐ伝送路」と分かっていれば足ります。中の仕組みは、基本情報の範囲です。
ここから基本情報!バスを形づくる3種類の線
CPUと主記憶装置・入出力装置を結ぶバスの全体をシステムバスといいます。システムバスは、役割の違う3種類の信号線の束でできています。
一つめは、読み書きする場所、つまり主記憶の番地(アドレス)を伝えるアドレスバスです。二つめは、その番地から読み出したデータや、書き込むデータそのものを運ぶデータバスです。三つめは、「読め」「書け」の指示や、動作のタイミング、割込みの合図などの制御の信号を伝えるコントロールバス(制御バス)です。CPUが主記憶から1つのデータを読むときは、アドレスバスに番地を出し、コントロールバスで「読み出し」を指示し、データバスで値を受け取ります。
線の本数は、そのまま扱える量を決めます。アドレスバスが32本なら、区別できる番地は2の32乗で、4,294,967,296通り(約43億)です。データバスが64本なら、1回に64ビット(8バイト)を運べます。この1回に運べるビット数をバス幅と呼びます。
バスは、つなぐ場所によっても呼び分けます。CPUの中で演算装置やレジスタを結ぶものを内部バス(CPU内部バス)、CPUの外で主記憶や周辺の装置とつなぐものを外部バスといいます。外部バスはさらに、CPUと主記憶の間を結ぶメモリバスと、CPUと周辺機器を結ぶ入出力バスに分けて設けることがあります。主記憶とは高速にやり取りしたいので、遅い周辺機器と同じ道を通らないように分けるわけです。
後から拡張カード(画像処理のカードやネットワークのカードなど)を差し込むためのバスを拡張バスといいます。代表的な規格がPCI(Peripheral Component Interconnect)です。いまのPCでは、その後継のPCI Expressが主に使われています。
データの送り方でも二つに分かれます。複数の信号線を並べて、何ビットかを同時に送るのがパラレルバス、少ない信号線で1ビットずつ順に送るのがシリアルバスです。同時に送れるパラレルの方が速そうに見えます。ところが、速度を上げていくと、線ごとの信号の届く時間のわずかなずれや、隣の線との干渉が問題になり、それ以上速くできなくなりました。そこで、1本あたりの速さを大きく上げられるシリアルの方式が主流になっています。パラレルのPCIからシリアルのPCI Expressへの移り変わりも、この流れの一つです。
基本情報の範囲ここまで
PCの中のバスは、外からは見えません。ミナトが手に持っているケーブルは、PCの外の機器とつなぐための別の決まりの話です。その前に、もう少しだけPCの中にとどまります。
4-2バスの使い方と性能
店の朝のレジは、一つしかありません。会計を待つ列ができると、店長は「次の方どうぞ」と声をかけ、一人ずつ前に進んでもらいます。二人が同時にレジ台へ品物を出したら、どちらのパンなのか分からなくなるからです。ミナトは、相棒の説明を聞きながら、このレジの列を思い浮かべていました。
バスも、何台もの装置で一つの伝送路を分け合います。同じ瞬間に二つの装置が信号を出せば、線の上で信号がぶつかり、どちらのデータも正しく伝わりません。そのため、いまバスに信号を出してよい装置を一つに決め、受け取る側がデータを読むタイミングをそろえる仕組みが要ります。その仕組みと、バスがどれだけ速く運べるかの計算は、基本情報で扱います。
ここから基本情報!バスを分け合う仕組みと転送の速さ
バスにつながる装置の出力には、0と1のほかに、線から切り離されたのと同じ状態(ハイインピーダンス)を持たせます。この三つの状態を切り替えられる素子がスリーステートバッファ(三状態バッファ)です。話してよい装置だけが0か1を出し、ほかの装置は出力をハイインピーダンスにして線から離れていれば、1本のバスを取り合わずに済みます。レジ台に品物を出せるのが、呼ばれた一人だけなのと同じです。
受け取る側は、データがいつ確定したのかを知る必要があります。送る側がデータを線に出し終えたことを知らせる制御の信号をストローブ(ストローブ信号)といいます。受け取る側は、ストローブの信号が切り替わる瞬間(立上りや立下り)にデータを読み取ります。値が変わっている途中を読んでしまわないための合図です。スリーステートバッファとストローブは、ともに基本情報のシラバスの用語例には見当たらない語ですが、バスの動きを支える素子と信号として覚えておくと仕組みが追いやすくなります。
バスの性能は、主にバス幅とクロック周波数で決まります。1回に運べる量がバス幅で、1秒あたりの回数がクロック周波数(1クロックに1回転送する場合)です。こむぎ堂のノートPCのバスが、バス幅64ビット・クロック周波数100MHzで、1クロックに1回転送するとしましょう。
| 手順 | 計算 | 結果 |
|---|---|---|
| 1回に運べる量 | 64ビット ÷ 8 | 8バイト |
| 1秒あたりの転送回数 | 100MHz | 1億回 |
| 1秒あたりに運べる量 | 8バイト × 1億回 | 800Mバイト/秒 |
| 4Mバイトの写真1枚 | 4 ÷ 800 | 0.005秒(5ミリ秒) |
バス幅を倍の128ビットにするか、クロック周波数を倍の200MHzにすれば、1秒あたりの量も倍の1,600Mバイトになります。
基本情報のシラバスは、バスの容量と性能の項目にバスのアクセスモードという語を挙げています。バスを使ってデータを転送するときの方式を指す語ですが、どのような分け方を指すのかは、参考書によって説明が分かれています。バスの使い方の違いの例としては、1回ごとに番地を指定して1つずつ転送するやり方と、先頭の番地だけを指定して続くデータをまとめて転送するやり方(バースト転送)の区別があります。まとめて送る方が番地を出す手間が減るぶん、同じバス幅とクロック周波数でも実際に運べる量が増えます。
バスの組み立て方そのものにも二つの考え方があります。命令とデータを同じ主記憶に置き、同じバスで読み書きする方式(ノイマン型)では、命令を読む間はデータを読めません。命令を読むバスとデータを読み書きするバスを分けたのがハーバードアーキテクチャで、命令の読込みとデータのアクセスを同時に進められます。
基本情報の範囲ここまで
PCの中で装置どうしがどうつながっているかは、これで見えてきました。残っているのは、ミナトの手の中のケーブルです。PCの外にある機器と、どんな決まりでつなぐのか。
4-3有線のインタフェース
ミナトはモニタの裏をのぞき込みました。台形の口のほかに、小さく平たい口と、ピンの穴が三列に並んだ横長の口が並んでいます。ノートPCの小さな楕円の口には、ふだんスマートフォンの充電器を差しています。形は四つ。どれとどれが同じ仲間なのか、見ただけでは分かりません。
コンピュータと周辺の機器をつなぐときの、コネクタの形や、信号の送り方、やり取りの手順などの決まりを入出力インタフェースといいます。決まりがそろっていれば、作った会社が違う機器どうしでもつながります。ケーブルでつなぐ有線のものと、電波や赤外線でつなぐ無線のものがあります。
ノートPCの楕円の口は、USB(Universal Serial Bus)のコネクタでした。USBは、キーボードやマウス、プリンタ、USBメモリなど、多くの周辺機器をつなぐ汎用のシリアル伝送のインタフェースです。コネクタには、平たい長方形のType-A、四角に近いType-B、上下の区別なく差せる小さな楕円のUSB Type-Cなどの形があります。ハブを使うと、1つの口から何台もの機器をつなげます。電気を送れるので、ケーブル1本で周辺機器を動かしたり、スマートフォンを充電したりもできます。
ここから基本情報!USBの速さと転送のやり方
USBは、版が上がるごとに速くなってきました。最大5Gビット/秒で転送できるようにした規格がUSB 3.0で、この速さの転送の方式をスーパースピード(SuperSpeed)と呼びます。速さが出るのは、USB 3.0に対応した機器とケーブルをそろえて使ったときです。
USBには、データの性質に合わせた転送のやり方があります。その一つがアイソクロナス転送です。一定の時間ごとに決まった量を送れるよう帯域を確保する代わりに、誤りがあっても送り直しません。マイクの音声やカメラの映像は、少し欠けても止まらずに流れ続ける方が大事なので、この方式が向いています。送り直しをしてでも正しく届けたいファイルのコピーには使いません。
基本情報の範囲ここまで
モニタの裏の三つの口は、どれも映像を送るためのものでした。台形の口は古くからあるアナログRGBの端子で、VGA端子やD-Sub15ピンとも呼ばれます。赤・緑・青(RGB)の色の強さを、デジタルの数値ではなく連続して変わる電圧で送ります。ピンの穴が三列に並んだ横長の口はDVI(Digital Visual Interface)で、映像をデジタルのまま送りますが、音声は送れません。
小さく平たい口がHDMI(High-Definition Multimedia Interface)です。映像と音声を1本のケーブルでデジタルのまま送れるので、テレビやモニタ、ゲーム機で広く使われています。PC向けのモニタでよく見るもう一つの規格がDisplayPortで、業界団体のVESAが定めました。映像と音声をデジタルで送れる点はHDMIと同じです。
| 規格 | 信号 | 音声 | よく使われる所 |
|---|---|---|---|
| アナログRGB | アナログ | 送らない | 古いモニタ・プロジェクタ |
| DVI | デジタル | 送らない | 少し前のPC用モニタ |
| HDMI | デジタル | 送る | テレビ・モニタ・ゲーム機 |
| DisplayPort | デジタル | 送る | PC用モニタ |
ノートPCのType-Cの口は、映像の出力も兼ねていました。ただ、モニタの側にType-Cの口はありません。ミナトは、片側がType-C、もう片側がHDMIの変換ケーブルを買うことにしました。
ここから基本情報!高速な汎用規格と、PCの中と外の古い規格
IntelとAppleが開発したThunderboltは、PCI Expressのデータ信号とDisplayPortの映像信号を1本のケーブルにまとめて送る、高速な汎用のインタフェースです。Thunderbolt 3からは、コネクタにUSB Type-Cと同じ形を使っています。口の形が同じでも、Thunderboltの機能が使えるかどうかは、PCの側が対応しているかで決まります。
PCの中で、SSDやハードディスクをつなぐのに使われてきたのがシリアルATA(SATA)です。以前のATA(IDE)はパラレルで送る規格で、幅の広い平たいケーブルを使っていました。それをシリアルの伝送に置き換え、細いケーブルで速く送れるようにしたものです。ここでも、パラレルからシリアルへの流れが見えます。
RS-232Cは、コンピュータと周辺機器を結ぶ、古くからあるシリアルインタフェースの規格です。PCではUSBに置き換わりましたが、ネットワーク機器の設定用の端子や、工場の計測機器などでいまも使われています。
基本情報の範囲ここまで
4-4無線のインタフェースとLANカード
モニタの次は、発酵室の温度です。発酵室は厨房の奥にあり、ノートPCを置いているカウンタまでケーブルを引くには、壁に穴を開けるしかありません。店長は「穴はだめ」と首を振りました。ミナトは、電池で動いて温度を無線で飛ばす小さな温度計を探し始めます。商品の説明には、知らない無線の名前が並んでいました。
ケーブルの代わりに電波や赤外線を使う入出力インタフェースもあります。いちばん身近なのがBluetoothで、ワイヤレスのイヤホン、マウス、キーボードとPCやスマートフォンを、同じ部屋の中ほどの近い範囲でつなぐ無線の規格です。
Bluetoothの中には、消費電力を大きく下げたBLE(Bluetooth Low Energy)という方式があります。一度に送る量は少なくてよいので、ボタン電池で長く動かしたいセンサや腕時計型の端末に向いています。発酵室の温度計は、数分に一度、数字を一つ送れれば十分です。ミナトが見つけた温度計もBLEで温度を送るものでした。
ここから基本情報!センサをたくさんつなぐ無線
センサを何十台も網の目のようにつなぎたいときに使われる無線の規格にZigbeeがあります。IEEE 802.15.4という規格をもとにした、低速で消費電力の小さい方式で、センサどうしが電波を中継し合い、遠くの機器まで届ける使い方ができます。建物の照明や空調の制御などで使われます。
基本情報の範囲ここまで
電波ではなく赤外線の光で通信する規格がIrDAです。光は物にさえぎられるので、機器どうしを近づけて向かい合わせ、間に何も無い状態で通信します。かつては携帯電話どうしで連絡先を交換するのに使われていました。
こむぎ堂のレジにも無線のインタフェースがあります。お客さんがスマートフォンや交通系のICカードをかざすと支払いが済む、あの読取り口です。電波を使い、物の中のICタグの情報を触れずに読み書きする技術をRFIDといい、その中でも数cmから10cm程度までの、ごく近い距離で通信する規格がNFC(Near Field Communication)です。かざすという動作がそのまま「この相手と通信する」という意思表示になるので、決済や入退室の確認に向いています。
周辺機器だけでなく、店のネットワークにつなぐためのインタフェースもあります。カウンタのノートPCは無線で店のネットワークにつながり、レジ横の古いデスクトップPCはケーブルでつながっています。
ここから基本情報!ネットワークにつなぐ装置
LANのケーブル(イーサネットのケーブル)を差し込んで、有線のネットワークにつなぐための装置を有線LANインタフェースカード(有線LANカード)といいます。Wi-Fiなどの電波を使って無線のネットワークにつなぐための装置は無線LANインタフェースカード(無線LANカード)です。「カード」と呼びますが、いまのノートPCでは基板に組み込まれていることが多く、後から足すときはUSBで差すアダプタの形のものも使われます。
基本情報の範囲ここまで
4-5アナログ・デジタルと接続の形
発酵室には、昔ながらの針の温度計も掛かっています。針は27と28の目盛りの間を、ゆっくり行ったり来たりしています。ところが新しい温度計がノートPCに送ってきた値は「27.4」と「27.5」の二つだけで、その間の値は一度も出てきません。店長は「どっちが本当の温度なの」と聞きました。
どちらも本当の温度を表しています。違うのは表し方です。針の温度計は、温度の変化に合わせて針の位置が切れ目なく変わります。このように、量を連続した値で表す方式をアナログといいます。新しい温度計は、温度を0.1度刻みの数値にして送ります。量を飛び飛びの数値(コンピュータの中では2進数)で表す方式がデジタルです。
27.43度という温度は、0.1度刻みのデジタルでは27.4になり、0.03度の違いは表せません。それでもデジタルにするのは、数値ならコンピュータで計算・保存でき、送る途中で多少の雑音が混ざっても0と1を読み違えなければ値が変わらないからです。アナログRGBの映像がケーブルを長くするとにじみやすいのも、電圧そのものが情報なので、雑音がそのまま色の乱れになるためです。
機器が増えてくると、つなぎ方も考えることになります。レジ横には、USBの口が足りなくなったデスクトップPCのために、1つの口を4つに増やす小さな箱が付いています。このように、複数の機器からのケーブルを1か所に集めて中継する装置をハブといいます。USBのハブのほか、LANのケーブルを集めるハブもあります。LANのハブのうち単純なものは、ある口から受け取った信号を、ほかのすべての口へそのまま送り出します。
ここから基本情報!接続の形(トポロジ)
機器のつなぎ方の形をトポロジと呼びます。ハブのような中心の装置から、各機器へ1本ずつ線を伸ばすつなぎ方がスター接続です。1台の故障がほかの機器に広がりにくい代わりに、中心の装置が止まると全部が止まります。
ハブの口が足りなくなったら、ハブの先にさらにハブをつなぎます。このように、同じ種類の装置を段々につないで広げていくことをカスケード接続といいます。カスケードには「階段状の滝」という意味があります。ハブを何段もつなぐと、根元のPCから枝分かれして広がる、木を逆さにしたような形になります。この階層の形のつなぎ方がツリー接続で、USBはハブを使ってこの形に広げられます。
ハブを使わずに、機器から機器へ数珠つなぎにしていく方法もあります。PCから1台目の機器へ、1台目から2台目へ、と順に線をつなぎ、信号は途中の機器を通って先へ届きます。これがデイジーチェーン接続です。古くはSCSIという規格で周辺機器をこの形でつなぎました。Thunderboltも、この形で複数の機器をつなげます。
SCSIのように、線を延長していく形のバスでは、線の端で信号がはね返り、戻ってきた信号が次の信号に重なって誤動作の原因になります。そこで、線の両端に、信号を吸収してはね返りを防ぐターミネーター(終端抵抗)を取り付けます。最後の機器にターミネーターを付け忘れると、つないだ機器が正しく認識されないことがあります。
基本情報の範囲ここまで
4-6入出力の制御とデバイスドライバ
変換ケーブルが届いた月曜の朝、ミナトがノートPCとモニタをつなぐと、何も設定していないのに、数秒でモニタに「今日のおすすめ」の画面が映りました。一方、温度計の受信機をUSBに差したときは、「ドライバをインストールしています」という小さな通知が出ました。店長は「勝手に何か入れたの」と少し心配そうです。
PCのOSは、世の中のあらゆる機器の動かし方を最初から知っているわけではありません。機器ごとの細かな動かし方を引き受け、OSやアプリケーションからの指示を、その機器が分かる命令に置き換えて伝えるソフトウェアをデバイスドライバといいます。プリンタの会社が違っても、アプリケーションの「印刷」のボタンが同じように使えるのは、間にデバイスドライバがいるからです。
機器をつなぐだけで、OSがそれを見分け、合うデバイスドライバを組み込み、設定まで済ませて使える状態にする仕組みをプラグアンドプレイ(PnP)といいます。店長が見た通知は、このプラグアンドプレイが受信機のドライバを入れているところでした。勝手に入れたように見えますが、つないだ機器を使えるようにするための正規の動きです。PCの電源を入れたまま機器を抜き差しできる機能はホットプラグと呼ばれ、USBはこれに対応しています。
電源を入れた直後、OSがまだ動いていない間にも機器を動かす仕組みが要ります。マザーボード上のROMに書き込まれていて、電源が入ると最初に動き、キーボードやストレージなどの装置を点検して使える状態にし、OSを読み込んで起動させるプログラムをBIOS(Basic Input/Output System)といいます。いまのPCでは、BIOSに代わってUEFIという新しい仕組みが使われることが多くなっています。
入出力の装置は、CPUに比べてずっと遅く動きます。プリンタが1枚刷る間に、CPUは何億もの命令を実行できます。速さの違う装置の間でデータを受け渡すとき、いったんデータを記憶領域(バッファ)にためておき、受け取る側の都合に合わせて取り出す工夫をバッファリングといいます。値札の印刷データをまとめてバッファに渡しておけば、ノートPCは印刷の終わりを待たずに次の仕事に戻れます。動画を見るときに、少し先まで読み込んでおくのも同じ工夫です。
ここから基本情報!CPUと入出力装置の分担
入出力装置と主記憶の間のデータの受け渡しを、誰が受け持つか。その分け方で、入出力の制御の方式が分かれます。
CPUが入出力の命令を実行し、装置の状態を何度も確かめながら(ポーリング)、データを1つずつ自分で運ぶ方式がプログラム制御方式です。仕組みは単純ですが、転送している間、CPUはほかの仕事ができません。
そこで、CPUを通さずに、入出力装置と主記憶の間で直接データを転送する方式が考えられました。それがDMA(Direct Memory Access:直接記憶アクセス)方式です。CPUは、どこからどこへ何バイト送るかをDMAコントローラに指示するだけで、転送そのものはDMAコントローラが受け持ちます。転送が終わると、DMAコントローラは割込みでCPUに知らせます。その間、CPUは別の計算を進められます。
大型のコンピュータでは、入出力だけを受け持つ専用のプロセッサ(チャネル)を置き、入出力の手順そのものをまとめて任せるチャネル制御方式も使われます。DMA方式が「決めた量を運ぶ」ことを任せるのに対し、チャネル制御方式は入出力の一連の手順まで任せる点が違います。
基本情報の範囲ここまで
4-7IoTデバイス
温度計の値がノートPCに届くようになって一週間。店長の注文は増えました。「温度が上がりすぎたら、発酵室の換気扇を自動で回せないかな」。ついでに、厨房の天井の火災報知器も、店に誰もいない夜に鳴ったらスマートフォンに知らせてほしいそうです。測るだけだった温度計が、動かす仕組みへと話を広げていきます。
温度計や火災報知器のように、ものにセンサや通信の機能を組み込み、インターネットを通じて情報をやり取りする仕組みをIoT(Internet of Things)といいます。その中で、現場で測ったり動かしたりする機器をIoTデバイスと呼びます。IoTデバイスは、周りの状態を測るセンサ、測った値を処理する小さなコンピュータ、値を送る通信の装置、そして実際に何かを動かす装置を組み合わせてできています。
センサは、測るものの数だけ種類があります。発酵室で使っているのは温度センサーで、生地の乾き具合を見るなら湿度センサーも足せます。ほかにも、光の量を測る光学センサー、人や物が出す赤外線で人の動きを見つける赤外線センサー、磁石の向きや強さを測る磁気センサー、傾きや揺れを測る加速度センサーと回転の速さを測るジャイロセンサー、音波のはね返りで距離を測る超音波センサー、押す力を測る圧力センサーなどがあります。スマートフォンの画面が、持つ向きに合わせて回転するのは、加速度センサが傾きを測っているからです。
厨房の火災報知器の中にあるのは煙センサーです。部屋の中に入ってきた煙の粒子に光が当たって散る様子を受光部でとらえる方式(光電式)などで、煙を見つけます。この報知器を通信の機能のあるものに替えれば、夜の店で煙を見つけたとき、店長のスマートフォンへ知らせを送れます。
センサが測る側だとすると、動かす側にあたるのがアクチュエーターです。電気の信号を受け取って、回る・押す・開くといった物理的な動きに変える装置をまとめてこう呼びます。換気扇の羽根を回すのはDCモーターで、直流(DC)の電気で回転する、身近なアクチュエータの一つです。工場の機械のように大きな力が要る所では、油の圧力でピストンを押し出す油圧シリンダや、空気の圧力で動かす空気圧シリンダも使われます。
測ってから動かすまでの時間にも注意が要ります。煙を見つけてから知らせが届くまでに10分かかったら、その知らせには意味がありません。決められた時間の中で処理を終え、応答を返せる性質をリアルタイム性(即時性)といいます。発酵室の換気扇なら数十秒の遅れは問題になりませんが、火災の知らせや機械を止める操作では、遅れの小ささが性能そのものになります。
次の月曜の朝、ショーケースの上のモニタには、HDMIでつないだノートPCから「今日のおすすめ くるみパン」の文字が映っています。カウンタの画面の隅には、発酵室の温度計がBLEで送ってくる「27.5」の数字。30度を超えたら換気扇のモータが回るように設定も済ませました。店長は扉の前で手を止め、カウンタの数字を確かめてから、生地の様子を見に行きました。
合わなかったケーブルの正体は、映像を送るインタフェースの違いでした。Type-CからHDMIへ変換すれば、PCの中のバスを通ってきた映像のデータが、外の決まりに合わせて送り出されます。発酵室の温度は、センサが測り、BLEで送り、デバイスドライバの入った受信機を通ってノートPCに届きます。どの機器も、相手と同じ決まりで話せるときだけつながる、という点は同じでした。
ただ、ミナトにはまだ気になる数字があります。新しいレジの見積もりに、プリンタやバーコードの読取り装置が別々の項目で並んでいたのです。レジの周りの機器は、どれが入力でどれが出力なのか。それは次の章で確かめます。