Renesas Synergy™

FAQ 1008850 : ウエイト(Wait)

CPUがメモリやI/Oデバイスをアクセスするときに、リード/ライトできる状態になるまで待ち合わせをすることです。CPUが高速で、メモリやI/Oデバイスが低速の場合に、ウエイト制御が必要になります。
つまり、CPUが一方的にリード/ライトしようとしても、メモリやI/Oデバイスのアクセス時間が経過するまではアクセスできないため、ウエイト・サイクルを挿入して、ストローブ信号のアクティブ期間を延長させます。

電車にたとえると、ドアの開いている期間が短すぎると、乗り降りができないのと同様です。電車の発車時刻だからといって一方的にドアを閉めると、乗り遅れ る人が取り残されますが、乗客の乗り降りが終わるまでドアを開けておけば、取り残される人はいなくなりますね。ここで言う「ドアの開いている間」というの は、リード・ストローブ信号やライト・ストローブ信号がアクティブの期間に相当します。



リード・ストローブ信号がアクティブになると、メモリやI/Oデバイスからデータがデータ・バスに出力されますが、それを待たずにリード・ストローブ信号をインアクティブにすると、CPUはデータをリードできません。
また、ライト・ストローブ信号がアクティブになると、CPUがデータ・バスに出力しているデータがメモリやI/Oデバイスに入力されますが、それを待たずにライト・ストローブ信号をインアクティブにすると、メモリやI/Oデバイスにデータをライトできません。

実際のリード動作では、ストローブ信号がインアクティブになるタイミングに対して、事前にデータが確定している必要があり、これをセットアップ(設定)時 間と呼びます。外部デバイスのアクセス時間と、CPUのセットアップ時間を合計した期間だけ、リード・ストローブ信号をアクティブにしておく必要がありま す。
また、ライト動作では、外部デバイスのセットアップ時間だけ、ライト・ストローブ信号をアクティブにしておく必要があります。

なお、余分なウエイト・サイクルを挿入すると、リード/ライト・サイクルが無意味に長くなって、システム速度の低下を招きますので、各外部デバイスのアクセス時間に合わせたウエイト制御の最適化が、効率的なシステム設計に必要です。

余談ですが、ストローブ信号がインアクティブになってから、短時間ですが、データを固定しておく必要があり、これをホールド(保持)時間と呼びます。ただし、ホールド時間はデバイスの特性で決まっており、ウエイト制御とは無関係です。



メモリやI/Oデバイスのアクセス・スピードに応じて、挿入するウエイト・サイクル数を制御します。このサイクルは、クロック・サイクルで決定されます。 また、ウエイト制御には、WAIT信号によるハードウエア制御(WAITがアクティブの間、ウエイト・サイクルを挿入)と、レジスタ設定によるソフトウエ ア制御(設定クロック数だけ、ウエイト・サイクルを挿入)があります。



なお、ウエイトに似た機能にレディがあります。通常、ハードウエア制御で入力をチェックする場合、ウエイトでは負論理のWAIT(-)信号がアクティブ (ロウ・レベル)ならCPUがウエイト状態になり、レディでは正論理のREADY信号がインアクティブ(ロウ・レベル)ならCPUがウエイト状態になりま す。つまり、CPUの動作は同じですが、ウエイトはCPUが待機する考え方で、レディは外部I/Oデバイスが動作可能状態を通知する考え方です。
ウエイトは周辺に合わせてできるだけ早く動作させることに主眼を置き、レディはシステムを確実に動作させることに主眼を置いていると言えます。
CPUのWAIT(-)信号とREADY信号は同義の場合もありますが、もともとレディ制御は、周辺の準備ができたら動作を開始するという、ハンドシェークのような待ち合わせ手順です。

他にご質問がございましたら、リクエストを送信してください