Yamamoto's Laboratory
Z80
 タイミング

プログラムはどのように分解できるか

ユーザーが作成したプログラムの実行時の動作は,「命令(instruciton)」と「マシンサイクル」,「Tサイクルに」に分けて考えることができます.後者になるほど細かくなります.「プログラム」は「命令(instruction)」集まったもの,「命令(instruction)」は「マシンサイクル(Mサイクル」が集まったもの,「マシンサイクル(Mサイクル」は「Tサイクルに」が集まったものです.CPUの動作を理解するためには,これらの概念を理解しなくてはなりません.ここでは,これらについて,できるだけ簡単な説明を行います.

命令(instruction)とは

ユーザーが作成したソースプログラムを実行するためには,コンパイラーにより実行ファイルに変換する必要があります.コンパイラーは,ソースプログラムを命令(instruction)の集まりに変換します.この命令がプログラムの最小単位です.Z80 の命令(instruction)を別ページ「命令セット」に示します.これを見ると,命令が1バイト(8ビット)単位のビット列からできていることが分かるでしょう.

これらの命令をCPU で実行するためには,このビット列をメモリーにロードする必要があります.別の言い方をすれば,メモリーにロードされた命令のみが実行可能ということです.ユーザーが書いたプログラムはビット列である命令(instruction)に分解された形でメモリーにロードされ,実行されるということです.

マシンサイクルとは

マシンサイクルからは,CPUの実行単位になります.CPUの実行単位で意味のある最小単位です.

命令(instruction)は,複数の処理から構成されます.たとえば,「LD (HL),A7H」は,(1)命令をメモリーから読み込む,(2)データをメモリから読み込む,(3)データをメモリーに書き出す — という3つの処理があります.これらの処理単位をマシンサイクルと呼びます(図1参照).この処理では,3マシンサイクル(M1, M2, M3)が実行されます.命令毎とマシンサイクル数も,別ページ「命令セット」に示します.

命令セット」に示すとおり,ひとつの命令は数バイトのビット列でできています.CPUは,これを1バイトずつメモリーから読み込みます.1バイトの読み込み処理に1マシンサイクルが必要です.1バイトの書き込みにも,1マシンサイクルを要します.計算などの様々な処理には,数マシンサイクルが必要になります.従って,一つの命令のマシンサイクル数は,命令を構成数するバイト数よりも同じか,すこし多くなります.

Tサイクルとは

ひとつのマシンサイクルも複数の処理から成り立っています(図1).この処理単位を T サイクルと呼び,CPU の6番ピン(CLK)に印可されたパルス周期で実行されます.この T サイクルが CPU の最小処理単位です.この単位で,CPUの各端子とおよび内部の論理回路の電圧は,変化します.

図1の例は,メモリーからデータを読み込んで,メモリーにそのデータを格納する命令のマシンサイクルとTサイクルの例です.3 マシンサイクル,10 Tサイクル必要なことが分かります.CPUのクロックが 1[MHz] ならば,実行時間は 10 [μsec]になります.

Z80 Timming
CPUの基本タイミング

マシンサイクルの動作

マシンサイクルとは

CPUにとって,意味のある動作の最小単位をマシンサイクルといいます.一つの命令(instruction)は複数のマシンサイクルから構成されます.命令の最初に実行されるマシンサイクルから,「M1サイクル」,「M2サイクル」,「M3」サイクル,… と呼ばれます.具体的に,1マシンサイクルで実行される動作は以下の通りです.

  • メモリー読み出し
  • メモリー書き出し
  • I/O入力
  • I/O出力
  • バス要求
  • 割り込み要求

具体例

代表的な命令「LD (HL),A7H」処理を例にとり,マシンサイクルの動作を考えます.これは,16進数「F0」をHLレジスタが示すメモリーのアドレスに格納命令する命令で,3 マシンサイクルで,実行に 10 Tサイクルの時間がかかります(図1).ここでは,この命令が CPU でどのように実行されるか,見ていきましょう.

この命令の実行開始前のメモリーの様子を図に示します.スタックポインターが示すアドレスに,LD 命令のビット列「00110110」が格納されています.次のアドレスは,データの(F0)16であるビット列「10100111」となっています.メモリーのどこかに,HLレジスターが示すアドレスがあり,そこななにがしかのビット列になっています.

実行開始後は,CPU (Z80)は,マシンサイクル毎に次のように動作します.

  1. M1:OPコードフェッチ 実行開示時に,プログラムカウンター(PC)は,この命令のオペコードが書かれているメモリーを指し示します.最初に命令のビット列「00110110」を読み込みます.そして,その命令を解読します.
  2. M2:メモリー呼び出し 読み込まれた命令に従い,次のアドレスのデータ「10100111」を読み出します.
  3. M3:メモリー書きだし 読み込まれた命令に従い,マシンサイクルM2で読み込んだデータ「10100111」をHLレジスターが示すアドレスに書き込みます.

Tサイクルの動作

ここでは,CPUの最小実行単位であるTサイクルの動作について説明します.ひとつのMサイクルは複数のTサイクルから構成され,「T1サイクル」,「T2サイクル」,「T3サイクル」,…

命令フェッチ

M1サイクルは必ず命令フェッチです.ここで,命令(instruction)のオペコードをメモリーから読み込みます.

Z80 M1サイクル
命令フェッチ(M1サイクル)

メモリーのリード/ライト

Z80 メモリーのリードライト
メモリーのリード/ライト

入出力 (I/O)

Z80 入出力(IO)タイミング
入出力(IO)

バス要求/アクノリッジ

Z80 バス要求/アクノリッジタイミング
バス要求/アクノリッジ

割り込み要求/アクノリッジ

Z80 割り込み要求/アクノリッジタイミング
割り込み要求/アクノリッジ

ノンマスカラブル割り込み

Z80 ノンマスカラブル割り込み
ノンマスカラブル割り込み

ホルト

Z80 ホルト
ホルト

ページ作成情報

参考資料

  1. ZiLOG, Z80 Family CPU User Manual, web で入手可能です.
  2. シャープ(株), Z80ファミリーテクニカルマニュアル[1], 1983年.
  3. 柏谷栄一 佐野羊介 中村陽一 若島正敏, マイコン応用システム入門[ハード編], 東京電機大学出版局, 2005年
    図解Z80 マイコン応用システム入門 ハード編図解Z80 マイコン応用システム入門 ハード編
    柏谷 英一 中村 陽一 佐野 羊介 若島 正敏

    東京電機大学出版局 2000-05
    売り上げランキング : 417353

    Amazonで詳しく見る
    by G-Tools

更新履歴

2014年 ページの新規作成
2015年08月30日 タイミングチャート作成


no counter