電気と電子のお話

8. インターフェース

line


8.1. インターフェースの概要

8.1.(2) 同   期

8.1.(2-A) 概   要

8.1.(2-A-a) 同期とは

◆  いろいろな、インターフェースの、お話がでてきましたが、この章の主体は、ハードウェアとハードウェアのインターフェースです(図 8.1-3)。
インターフェースで、データのやり取りをする場合、送り側から、何の挨拶も無しに、いきなりデータを送りつけても、受け側で、データを受け取る準備ができていないと、うまく受け取ることが、できません。
◆  このような場合には、送り側から、「これからデータを送るよ」という合図をおくり、受け側で、データを受け取る準備を整えてから、データを送ります。このように、データをやり取りするために、合図をすることを、同期 と呼んでいます(図 8.1-14)。
なお、同期には、ソフトウェアレベルの同期と、ハードウェアレベルの同期とが、あります。

[図 8.1-14] 同期とは

同期とは
8.1.(2-A-b) データやり取りの方法

◆  データやり取りの仕方には、いろいろあります。同期の取り方も、データやり取りの方法によって、異なります。
データやり取りの方式は、まず、その方向性によって、単方向伝送 と、双方向伝送 の、2 つに分けられます(図 8.1-15)。また、同時に送るビット数によっても、直列伝送 (シリアル伝送 )と、並列伝送 (パラレル伝送 )との、2 つに分けることが、できます(図 8.1-16)。

[図 8.1-15] 単方向伝送と双方向伝送

単方向と双方向

[図 8.1-16] 直列伝送と並列伝送


直 列 伝 送
直列伝送


並 列 伝 送
並列伝送

◆  双方向伝送は、さらに、同時に双方向に送る全 2 重伝送 と、同時には単方向で、交互に送ることによって、双方向を実現する、半 2 重伝送 とがあります(図 8.1-17)。

[図 8.1-17] 全 2 重伝送と半 2 重伝送

全 2 重伝送
全 2 重伝送

半 2 重伝送
半 2 重伝送

8.1.(2-B) 同期の取り方

◆  同期の取り方には、いろいろなやり方があります。
まず、データの最小単位である、ビットの区切りを、識別するために、ビット同期 が必要です。ビット同期を取る、最も簡単な方法は、クロック信号を使用して、クロック信号で同期を取る方式です。ただし、このためには、データ線の他にクロック線が必要です(図 8.1-18)。

[図 8.1-18] クロックでビット同期を取る

ビット同期を取る

◆  送信側は、クロックの立ち上がりに同期して、今まで送っていた旧データを新データに切り替えて送信します。そして、データと共に、クックも送信します。受信側では、送られてきたクロックの、立下りに同期して、送られてきたデータを、読み取ります。
信号線が、2 本必要なことは、短距離であれば、問題ありません。しかし、長距離の場合には、コストアップになります。対策として、クロック情報を、データ信号の中に含ませて送る方法があります。これについては、後に説明することにして、さきに、データ自体のお話を進めます。
◆  データは、送信側、受信側の、お互いの約束事で、データのフォーマット (形式)を決めておく、必要があります。ビット単位の、独立したデータを、やり取りすることもありますが、通常は、ある長さのビット数を、まとめて一塊にして、受け渡しを行います。
最も短いデータの塊は、4 ビットを単位とする、ディジット(ニブル )です。しかし、1 ディジットのデータで表すことができるのは、BCD の数字だけです。
◆  短い一塊の単位として、一般に使われているのは、8 ビットを単位とする、バイトでしょう。1 バイトあれば、文字コードを使用して英数文字(英文字コード、すなわちASCIIコード)や、かな文字コードを表すことができます。2 進数であれば、1 バイトは、10 進に換算して 255 までの数を取り扱うことができます。
ASCIIコードは、コード自体は 7 ビットですが、コンピュータなどでは、7 ビット単位は、取り扱い難いので、1 バイトを使用します(MSB は空白)(図 8.1-19)。

[図 8.1-19] ディジット、バイト、ASCII

ディジット、バイト、ASCII

◆  なお、ASCII は、コンピュータでは、このように、1 文字が 1 バイトに対応していますが、インターネットのメールでは、本来の ASCII コードである、1 文字 / 7 ビットで送られます。インターネットは、現在では、世界的に使われています。世界的に使うためには、1 文字 / 8 ビットの方が、多国語に対応できるので、8 ビットが便利です。しかし、インターネットは、アメリカ国内で、始められたものなので、ASCII コードしか、念頭に無かったのです。
◆  7〜8 ビットの文字コードを使用しているときは、その 1 文字を、キャラクタ と呼んでいます。 ただし、漢字は文字数が多いので、漢字コードは、2 バイトが、単位です。数値は、通常、4 バイト長(32 ビット、10 進 9 桁)、または 8 バイト長(64 ビット、10 進 19 桁)のデータが、多く用いられています。

8.1.(2-C) 非同期式

◆  キャラクタを識別して、キャラクタ単位で同期を取る方式が、あります。この方式は、非同期式 と呼ばれ、以前、多く使用されていた方式です(図 8.1-20)。しかし、高性能のインターフェ−スを組むことができないので、現在では、非同期式は、ほとんど使われていません。
◆  ただし、組込み形マイコンでは、マイコンの LSI に内蔵されているのは、多くが、非同期式です。したがって、組込み形マイコンを、使用しているシステムでは、現在でも、非同期式が、使われています。
非同期式では、データを送ってないときは、ハイ(1)です。この状態をアイドル といいます。

[図 8.1-20] 非同期式

非同期式

◆  データを送るとき、まず、1 ビットの期間、データをロー(0)にします。これを、スタートビット といい、この1 から 0 への変化が、キャラクタ同期 信号です。引き続いて、1 キャラクタのデータを送り、送り終わったら、ハイにします。このハイにしてる期間は、1 ビットで、これをストップビット と呼んでいます(ハイにしている期間が、2 ビットの方式もあります)。
次のキャラクタを送るのは、ストップビット以降であり、次のキャラクタを送るまでの間は、アイドル、すなわち ハイ です。
◆  アイドルの期間は、全く任意であり、キャラクタの開始時期も任意です。何かの基準となるものに、同期を取る必要は、ありません。非同期式の名は、このことから、名付けられたものです。

8.1.(2-D) 同期式

◆  これに対して、図 8.1-18 の方式では、データは、クロック同期している必要があります。このことから、非同期式に対して、同期式 の名が付いています。現在使われているのは、ほとんどが、同期式です。同期式には、各種の方式があります。廃れてしまった方式も、いくつかあります。
◆  同期式では、必ずしも、データを、キャラクタ単位で、やり取りするとは限りませんが、キャラクタ単位でやり取りする場合には、ビット同期が取られていることを前提として、キャラクタ同期 を取ります。ただし、キャラクタ単位のやり取りは、現在あまり使われていません。昔は、やり取りするデータは、ほとんどが、キャラクタでしたが、現在では、キャラクタ以外のデータが多くなっているからです。
◆  しかし、まず、簡単に、キャラクタ方式について、説明しておきます。キャラクタ同期をとるためには、特定のビットパターンを持ったキャラクタを使用します。これを、同期キャラクタ (SYN )といいます。
送信側から、最初に、同期キャラクタ(SYN)を送り、さらに、同期キャラクタに引き続いて、データを送ります。受信側では、同期キャラクタ(SYN)を検出します。受信側で、同期キャラクタ(SYN)を検出したら、以降、ビット数を数えて、キャラクタの区切り識別します(図 8.1-21)。

[図 8.1-21] キャラクタ同期方式

同期式

◆  この同期式では、データの中に、同期パターンと一致するものがあると、それを、同期キャラクタと間違えて、同期が狂ってしまいます。何らかの原因で、同期が狂ってしまう現象を、同期外れ といいいいます。同期外れが発生しては困りますから、万一、同期外れが発生したとしても、回復するような対策を、立ててあります。しかし、この方式自体が、現在余り使われていませんので、対策についての具体的な説明は、省略します。
◆  キャラクタ同期方式以外の、同期式において、データのやり取りをする場合には、データを、ブロック単位にまとめて、やり取りします。 この、インターフェースで、やり取りする、ブロックのことを、フレーム といいます(図 8.1-22)。なお、フレームは、インターフェースの立場からの、一塊です。これに対して、ユーザーからみた、アプリケーション単位の一塊のことを、メッセージ といいます。
フレームとメッセージとは、1 対 1 で対応することもありますが、対応しないこともあります。

[図 8.1-22] フレームとメッセージ

フレーム

フレームとメッセージの対応

フレームとメッセージの対応

◆  フレームは、フレームの始まりを認識するために、その先頭に、フレーム同期 のための、同期パターン(SYN)をつけます。フレームの終わりの識別は、いろいろな方式があります。たとえば、フレームの長さが、予め決まっている場合には、フレームの受け側で、フレームの長さを数えて、フレームの終了を、判定します。
◆  フレームの終わりを示す、同期パターンを、使用する方式もあります。たとえば、キャラクタ単位のやり取りをする場合に、フレームの開始を意味する STX (スタート オブ テキスト )キャラクタと、フレームの終わりを意味する ETX (エンド オブ テキスト )キャラクタを使用します。
◆  STX や ETX は、やり取りするネットのデータではなく、制御のための制御キャラクタ です。制御キャラクタは、この STX や ETX の他にも、いろいろあります。制御キャラクタを使用することによって、定められた手順で、データのやり取りを行うことができます(図 8.1-23)。ただし、キャラクタ単位のやり取りは、古い方式であり、現在は、ほとんど使用されていません。

[図 8.1-23] 制御キャラクタによるデータのやり取り

制御キャラクタによるデータのやり取り

◆  図で、テキストというのがあります。テキストも、現在では、余り使われていない用語です。テキスト とは、キャラクタで構成された、ブロックのことです。
◆  データのやり取りに際しては、まず互いに、やり取を開始する準備を整えてから、やり取りを開始します。この、最初の準備の処理を、接続処理 といいます(図の回線接続)。接続処理では、たとえば、データやり取りの部分の回路の、スイッチがオフであれば、そのスイッチをオンにします。
そして、接続処理後、データのやり取りを行います。図の場合は、データのやり取りではなく、1 回送っているだけです。
◆  インターフェースでは、ノイズなどの影響で、やり取りしたデータの、1 がゼロに、ゼロが 1 に化けてしまうことが、あり得ます。このような場合には、データ化けが無く、正しく受け渡しが行われたことを確認し、もし正しく受け渡しができなかったときは、これを訂正する作業が必要です。このような作業を、伝送誤り制御といいます。
の伝送誤り制御がその処理で、正しくデータを受け取ったかどうかを、調べています。図の場合には、正しく受け取っているので、受け取ったデータを受け入れています。
正しく受け渡しが行われたときは、終了の処理を行います。これを、切断処理 といいます(の回線切断)。
◆  以上のように、データのやり取りは、ある定められた手順に従って行います。この定められた手順などの、データをやり取りする上での、約束事、のことを、通信の用語では、プロトコルと言います。正しくは、通信プロトコルですが、通常は、略して単にプロトコルと呼んでいます(コラム 8.1-2)。
◆  フレーム単位での、データのやり取りのときも、制御情報によって、データやり取りの流れを制御します。この制御情報のやり取りには、2 つのやり方があります。一つは、独立したフレームとして、制御情報を送ります。もう一つは、データフレームに含めて、制御情報を送ります。


[コラム 8.1-1] 同期のいろいろ

★ 同期の、最も普通の意味は、入学 卒業 入社などの年度が同じ、ということでしょう。同期会は、楽しいものです。

同期会       同期会

★ さて、用語としての同期 ですが、同期といっても、いろいろな同期があります。パソコンにおける同期は、複数のパソコンのデータを、同じ時期のデータに揃えることですが、これにも、いくつかあります。

パソコンデータの同期

★ 会社のパソコンと自宅のパソコンとの同期もあります。

会社のパソコンと自宅のパソコンとの同期

★ メディア における同期は、次のように、分けることが、できます。

別の分け方

★ パソコンでは、OS に、時計が内蔵されています。しかし、この OS 内蔵の時計は、正確ではありません。インターネットには、NTP サーバと呼ばれる、正確な時計があります。そして、この NTP サーバを利用して、パソコン内蔵の時計合わせを行う、便利なソフトウェアもあります(たとえば 桜時計)、このインターネットの時計を使って、定期的に、パソコン内蔵の時計の同期を取るとよいでしょう。



[コラム 8.1-2] プロトコル

★ プロトコル は、もともとは、議定書 という意味です。それが転じて、一般の約束事のことにも、用いられるようになりました。
議定書といえば、環境問題を討議した京都会議 における京都議定書 が思い浮かびます。

京都会議       京都会議

★ プロトコルの言葉は、通信プロトコルだけを、意味するものではありませんから、いろいろなプロトコルが、あります。下図左は、特許の国際出願プロトコル、右は、旗を並べるときのプロトコルです。

特許の国際出願プロトコル     旗を並べるプロトコル

★ さて、通信プロトコルですが、通信プロトコル は、通信規約 通信手順 とも呼ばれています。
たとえば、英語しか話せない人と、日本語だけ喋れる人とでは、互いに会話することができません。

プロトコルとは

★ 同様に、通信においても、互いのプロトコルが等しくないと、データのやり取りは、できません。
★ 人間は、融通性が高いですから、会話のプロトコルは、かなり自由です。また、言葉だけでなく、身振り手振りで、補助することができます。テレビ電話は別ですが、一般の電話は、100 % 声だけのやり取りになりますが、それでも、高い自由度があります。文法を気にしながら喋る人はいません。ただし、機械相手の部分は、正しく操作する必要が、あります。

電話の使い方

★ 通信プロトコルは、機械対機械のやり取りですから、人間のような、融通性は、ありません。少しでも、互いのプロトコルに、等しくないところがあると、正常なやり取りが、できません。通信を行う場合には、互いのプロトコルは、等しくなければ、なりません。
★ また、何らかの原因で、ハングアップしてしまうことも、問題です。何か、異常があっても、ハングアップすることなく、終了することが、必要です。
★ 実用されているプロトコルは、複雑です。しかし、正常時のプロトコルは、意外に単純です。複雑な部分は、異常が発生したときの、回復処理です。
プロトコルを理解するためには、正常時のシーケンスだけに注目し、それを追いかけると、良いでしょう。下図は、本文の図.8.1-23に示した、プロトコルの詳細(ただし、正常時のみ)を示したものです。実際には、異常の処理が、加わります。

_正常時のプロトコル

★ 上記の形式の図を、状態遷移図 (シグナルフローダイアグラム )といいます。状態遷移図は、状態を○で表し、○の中に状態を記入します。○と○とを結ぶ線が、状態の変化を表します。記入されている名称は、状態が変化する要因です。図で、○の中に、状態名を記入してないものは、図を見やすくするための、ダミーです。
★ この状態遷移図で、初期状態は、図の左端の、アイドルです(親、子 共)。この初期状態から、通信を開始するとき、最初に、親が、ENQ を送りAKC 待ちの状態になります。子は、この親が送った ENQ を受けます。子は、受信可能であれば、ACK を送信してテキスト待ちの状態になります。親は、ACK 待ちの状態で、子からの、ACK を待ちます。以下、このように、図を見て行けば良いわけです。
★ なお、通常の、世間一般の状態遷移図は、親は親だけ、子は子だけの図で、互いに独立した図です。しかし、これでは、互いのやり取りが、分かり難いので、親と子の状態遷移図を対比させて配置してあります。
★ また、通常の状態遷移図では、親と子のやり取りは、記入されていませんが、これを追加してあります。
★ コンピュータプログラムは、通常フローチャートと呼ばれる形式の図で、表現します。上図と同じものを、フローチャートの形式で表したものが、下図です。フローチャートは、プロトコルを表現するのには、あまり適していないことが、分かります。

フローチャートの形式で表す

★ 状態遷移図は、見やすいことが特徴ですが、細かいところまで、きちんと表現するのには、向きません。きちんとした表現には、状態遷移表 が、適しています(下図)。図で − は、何もしないことを、表します。この、何もしないことを含んで、表が、全て埋まっていなければ、なりません。表に、埋まっていないところがあれば、表が未完成であることを、意味します。

状態遷移表

★ 以上のほか、プロトコルの表現法に、コマンドシーケンス があります(下図)。単純なプロトコルであれば、この 形が、最も、分かり易いでしょう。

コマンドシーケンス

★ プロトコルは、通信の手順/規約のことですが、プロトコルが、ユーザーソフトウェアと、渾然一体となっていると、汎用性が、ありません。
プロトコルの部分が独立していて、コンピュータ ソフトソフトウェアの、サブルーチンのような感じで、ユーザーソフトウェアから、呼び出して利用する形になっていると、汎用性が高く、便利に使用することが、できます。
★ コンピュータのサブルーチン は、下図のように、ユーザーソフトウェア(図のメイン・プログラム)から、呼び出して使用するように、なっています。したがって、1 つのサブルーチンを、多くのプログラムが、共用することが、できます。

コンピュータのサブルーチン


_

目次に戻る     前に戻る     次に進む