Vscale-chip 修正

こんな感じに変更します。もともとHREADYは1サイクル遅れで返して、その場合はXbar内に保持したリクエストに差し替えていました。のつもりがあれ?そんな論理どこにも無いぞ??そうするつもりでまだやっていなかったのか?そりゃ動くはずがない。
f0054075_18471537.png
いやいや、ほかにもいろいろ変だぞ。V-scale は HREADY ネゲートのサイクルで前のリクエストを再送している。こんな感じで普通に動いていました。HREADYの次のサイクルに再送じゃないのか?上の図で合っているよね?
f0054075_18500259.png
そんなわけで、Xbar は HREADY を1サイクル早くして、V-scale の中は HREADY を1サイクル遅らして、プロトコル通りになりました。そして命令フェッチストールが1サイクル余分に出る件は、該当論理を削除しただけで一応動いているみたいです。
これで一応、バス周りの既知バグはなくなりました。わかってみると簡単な話ですが、チップのシミュレータを作ったからこそ発見できたのではないかと思います。また、例外キャンセルもめちゃくちゃですが、こっちは見なかったことにします。
元の論理がかなり混乱しているうえに、さらに適当な修正をしたのでめちゃくちゃになってしまっています。というか、今でも原作者の意図は理解できていません。今の構成はスレーブがHREADYを落とすことがないので、それには対応できないかもしれんせん。もう、他人の物は捨てて、1から作り直そうかなぁ。

[PR]
トラックバックURL : http://tom01h.exblog.jp/tb/27939174
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
by tom01h | 2017-07-02 00:41 | PCとか | Trackback | Comments(0)