みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

タイミングを合わせるとはどういうことなのか?

「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」書籍内の
「第2章:コンピュータを作ってみよう。」内の「他の制御ピンをつなぐ」(P42)のところで

>M1ピンは、タイミングを合わせるためのピンで、INTピンは、Z80 PIOからZ80 CPUに割り込みを要求するためのピンです。

↑このように記載されていますが、この

>M1ピンは、タイミングを合わせるためのピンで、

↑ということですが、「タイミングを合わせる」とはどういうことなんでしょうか?


そもそも「Z80CPU」及び「Z80PIO」にて、「タイミング」とは、なんのことを指しているのでしょうか?


わかりやすく教えてください。よろしくお願いします。

投稿日時 - 2018-07-27 09:37:40

QNo.9522297

すぐに回答ほしいです

質問者が選んだベストアンサー

>つまり、「フェッチサイクル」とは「マシンサイクル(3つのサイクル)」の内のひとつ(M1サイクル)という解釈でよろしいのでしょうか?

1つの命令を実行する際、複数のマシンサイクルが順に実行されますが、そのうち、最初のマシンサイクル(M1サイクル)を、フェッチサイクルと呼びます。

なお、1つの命令を実行する際のサイクル数は3とは限りません。

NOP命令は1サイクルしかありません(M1サイクルしかない)

INC (IX+d)命令は6サイクルもあります(M1~M6サイクルがある)

フェッチサイクルは、命令コードをフェッチするサイクルで、英語の「fetch」とは「何かを取ってくる(何かを取り出す)」と言う意味の動詞です。

命令コードをメモリから「取ってくる」サイクルなので「フェッチサイクル」と呼ばれます。

フェッチサイクルは、各サイクルにM1、M2、M3…M6と数字を振った場合の最初のサイクル、つまり「M1サイクル」で、CPUの「M1ピン」は、その名前の通り「M1サイクルを実行中にのみアクティブになるピン」です。

投稿日時 - 2018-08-03 11:16:08

補足

すいません。つまり、
「M1ピンの役割」とはCPUの「フェッチサイクル」処理が終わったことをI/O等に出力する(いわばCPUの処理状態を知らせる)役割を持つピンであり、その情報を元に、I/Oが「CPU」に対して、データを流すという解釈でよろしいのでしょうか?

例えると、交通整理する際に無線などで、最後に通過した車の特徴を相手に伝える。情報を伝えられた誘導員は、その特徴に一致する車が通過したのを確認したら、停車させていた車を流す。という感じでいいのでしょうか?

投稿日時 - 2018-08-11 11:50:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

>この「フェッチサイクル」というよりは「マシンサイクル」のほうが正しいと思いますが、どうなんでしょうか?

「フェッチサイクル」で正しいです。

例えば「LD (HL),A7H」を実行しようとすると、Z80は以下のような動作をします。

M1サイクル(フェッチサイクル):4クロック使用
PCレジスタの示すアドレスのメモリから、命令コード「36H」を取り出し、コードの解釈を行ない、PCをインクリメントする

M2サイクル(メモリリードサイクル):3クロック使用
PCレジスタの示すアドレスのメモリから、イミディエート値「A7H」を取り出し、PCをインクリメントする

M3サイクル(メモリライトサイクル):3クロック使用
HLレジスタの示すアドレスのメモリに、M2サイクルで取り出した「A7H」を書き込む

「マシンサイクル」とは、上記の3つのサイクル(M1、M2、M3)の事を言います。

「フェッチサイクル」とは、上記のマシンサイクルのうち、一番最初のサイクルである「M1サイクル」だけを言います。

そして「M1ピン」は、名前の通り「M1サイクル(フェッチサイクル)の時だけ」アクティブになります。M2サイクルやM3サイクルではアクティブになりません。

「マシンサイクル」は、前述の「M1、M2、M3サイクルを全部含めたサイクル」を意味するので間違いです。

投稿日時 - 2018-07-31 10:58:54

補足

つまり、「フェッチサイクル」とは「マシンサイクル(3つのサイクル)」の内のひとつ(M1サイクル)という解釈でよろしいのでしょうか?

投稿日時 - 2018-08-01 02:08:43

ANo.2

>>M1ピンは、タイミングを合わせるためのピンで、
>↑ということですが、「タイミングを合わせる」とはどういうことなんでしょうか?

Z80のM1ピンは「CPUがフェッチサイクルになっている時にアクティブになるピン」です。

フェッチサイクルとは「命令コードをメモリから取り出すサイクル」で、M1ピンはCPUがどういう状態になっているかを外部から知る、重要な信号ピンです。

フェッチサイクルが終了し、CPUが「命令の解析」を始めると、アドレスバスやデータバスは「CPUが使ってない、他の周辺チップで使える状態」になります。

「アドレスバスやデータバスを、他の周辺チップで使える状態」だと言うのをPIOに入力すれば、PIOは「使われてないタイミング」で、アドレスバスやデータバスを使用する事が出来ます。

この「空いてるタイミングを周辺チップに知らせる」のがM1ピンの役割で、CPUと周辺チップ同士で「タイミングを取る」のに欠かせません。

投稿日時 - 2018-07-27 11:03:44

補足

すいません。

>「CPUがフェッチサイクルになっている時にアクティブになるピン」と書かれていますが

この「フェッチサイクル」というよりは「マシンサイクル」のほうが正しいと思いますが、どうなんでしょうか?

投稿日時 - 2018-07-29 11:03:59

その書籍は持っていませんが。
しかしま~古い言葉がいっぱいですね。
INTピンの意味を考えてもらえればわかるかと
これ、「インターラプト」の略です。
PIOがデータを受け取ったりして、CPUに流そうと
思っていた時、CPUが例えば別の処理をしていてスルーしたら?
取りこぼしますよね?
なので、他のIO機器に状態の変化などがあり、それらを
教えたい!って時に、使っているものと思います。
Z80 SIOには、少しだけバッファがあった気がするので、
この場合はポーリングが使えるのですが、PIO=パラレルIO
の場合は、INTで呼び出し
「送るよ~」~「受け取るよ~」っていう「タイミング」を
あわせるという・・・
を意味している部分ではないかと。
でも、8255チップなんて、もう売ってるのかな~

投稿日時 - 2018-07-27 10:20:18

あなたにオススメの質問