ステート
読み:ステート
外語:state
クロック
を基準に動作する
マイクロプロセッサー
で、クロックの立ち上がりから次の立ち上がりまでの1単位のこと。単にクロックと呼ぶこともある。
目次
概要
特徴
ステートとマシンサイクル
マシンサイクルの動き
マシンサイクルが複数のとき
概要
最近では既に死語と化しているが、
Z80
など
8ビットマイクロプロセッサー
の時代にはよく使われており、CPUこのステートを単位として稼働する。
CPUに供給されるクロックは
正弦波
である。波は上下上下上下上下…のように振動してCPUに供給される。このうち、「上下」という一組、すなわちクロックの一周期が「ステート」である。
命令は必ずステートの単位で実行される。1.5クロックのような、1クロック以下の刻みで実行されるものは無い。
特徴
ステートとマシンサイクル
Z80の場合、実際には1ステートで実行が終わる命令はなく、最低4クロック(4ステート)が必要である(
NOP
命令ですら)。
このような、数クロックを組み合わせた意味のある単位を「マシンサイクル」という。一つの命令で複数のマシンサイクルがある場合、一つ目をM1サイクル、二つ目をM2サイクル、のように呼び分ける。
Z80が1命令に4ステートも必要なのは、Z80の特殊な仕様によるもので、メモリーリフレッシュも含めているからである。
マシンサイクルの動き
例えば、「ADD A,B」のようにオペコードが1バイトのシンプルな命令は、4ステートの処理時間を要する。また命令は1マシンサイクルである。
T1ステート
T2ステート
T3ステート ‐ クロック立ち上がり時にデータバスから命令をフェッチする
T4ステート ‐ メモリーリフレッシュ
マシンサイクルが複数のとき
例えば、「LD A,55h」の場合、オペコード1バイト・オペランド1バイトで計2バイト命令、7ステートの処理時間を要し、また命令は2マシンサイクルである。
サイクル数が2ということは、命令フェッチをおこなうM1サイクルの後に、オペランドを読み出すためのM2サイクルが続くことを意味する。
M1サイクル
T1ステート
T2ステート
T3ステート ‐ クロック立ち上がり時にデータバスから命令をフェッチする
T4ステート ‐ メモリーリフレッシュ
M2サイクル
T5ステート
T6ステート ‐ クロック立ち上がり時にデータバスからデータをフェッチする
T7ステート ‐ メモリーリフレッシュ
同様に、「LD HL,1234h」の場合、オペコード1バイト・オペランド2バイトで計3バイト命令、10ステートの処理時間を要し、また命令は3マシンサイクルである。
Z80の場合、M1サイクルは常に4ステート、M2サイクル以降は常に3ステートなので、2マシンサイクルなら7ステート、3マシンサイクルなら10ステートの処理時間を要することが求められる。
M1サイクル
T1ステート
T2ステート
T3ステート ‐ クロック立ち上がり時にデータバスから命令をフェッチする
T4ステート ‐ メモリーリフレッシュ
M2サイクル
T5ステート
T6ステート ‐ クロック立ち上がり時にデータバスから下位バイトをフェッチする
T7ステート ‐ メモリーリフレッシュ
M3サイクル
T8ステート
T9ステート ‐ クロック立ち上がり時にデータバスから上位バイトをフェッチする
T10ステート ‐ メモリーリフレッシュ
再検索