Index / Reload
そちらでしたか。なるほど、確かにページフォルトに関する状態保存は不要そうですね。
はしょりすぎて失礼しました。360のTR命令の変換テーブルと変換対象領域は、それぞれ高々2ページにまたがりますので、必要なら命令実行開始時にページフォールトを起しておけば、ループ実行中にはそれ以上の例外は起きないと思いますので、O(L)の状態は不要ではありませんか。TRONchipについては、おっしゃる通りだと思います。
もちろん有無は分かると思います。フォールトが起きたページをページインしたあと命令を再実行する方式の場合、その命令でアクセスするページ数が主記憶のサイズを越えるように細工してやると、永遠に次の命令に進めなくて楽しい(?)ですよね…って意味でした。これが、命令を途中で中断して、ページイン後は中断したところから再開する方式ならば、全部のページが主記憶に納まらなくても、先に進めるでしょうが…確か TRON chip は (m68k のように) 再開型ではなく、再実行型だったと思います。分かりづらくてすいません。
えっと、あの、命令の実行開始時にページフォールトの有無はわかると思いますよ。TRONの多段間接アドレッシングについては、嘆いていた人が...
はい、確かに。TR 命令の場合、機能の複雑さよりも、それが割り込みを許さず、ページフォールト時に巻き戻されるというあたりが超ヤバイですよね。なんでまたそういう仕様にする必要があったんでしょう。他のプロセッサで同時に動いているスレッドと共有しているメモリに対して実行した場合、他のプロセッサからはどう見えるんでしょうね。無限段間接の方は、定数サイズの状態だけプロセッサ内部に保持すれば実装できるでしょうから、O(L)の状態が必要な TR 命令よりは簡単なんだと思います。無限段命令の方は、もし実装されていたら、たった一命令でスラッシングを起こし、永遠に次の命令を実行できないプログラムとかで遊べたんじゃないかと思うと残念(?)です。
sodaさん:TRON chip も十分にやばいですね。でも多段のアドレッシングでもメモリ読み込みだけを繰り返している分には、何とか割り込みを実装できそうな気がします。今の AMD64 アーキテクチャだって、TLB が外れた場合のページテーブル検索は通常 4 段ですし、仮想化機能の Nested Paging が有効な場合は 4 + 4 = 8段のページテーブルを行いますから (^_^;名無しさん:どう使うのかは私も良く知らないのですが、ASCII ⇔ EBCDIC の文字コードの変換などに使うらしいです。D2(B2) の位置に256バイトの変換テーブルをおいて、D1(L,B1) の先にある文字列(バイト列)を変換するみたいですね。
不思議な命令ですね・・・どんな用途に使うんでしょうか・・・?
> ページフォルトが起きた場合はメモリに何もなかった状態に巻き戻されます (あるいは命令が完了してはじめてメモリに書き込まれます)あわわわ、そうなんですか。それはヤバい。TRON chip も 命令フォーマット上は、無限段間接アドレッシングみたいなとんでもない機能があったようですが、実装上は2段だか3段だかに制限されていたようですね。気合いがたりません。(ぉ(TRON chip は fault 後、68k 系のように命令を中途から再開するのではなく、よくある再実行タイプだったはずなんですが、ページフォールト時にどうするつもりで、そういう命令フォーマットにしたのか、昔から疑問でした。)
そちらでしたか。
なるほど、確かにページフォルトに関する状態保存は不要そうですね。
はしょりすぎて失礼しました。
360のTR命令の変換テーブルと変換対象領域は、それぞれ高々2ページにまたがりますので、必要なら命令実行開始時にページフォールトを起しておけば、ループ実行中にはそれ以上の例外は起きないと思いますので、O(L)の状態は不要ではありませんか。
TRONchipについては、おっしゃる通りだと思います。
もちろん有無は分かると思います。
フォールトが起きたページをページインしたあと命令を再実行する方式の場合、
その命令でアクセスするページ数が主記憶のサイズを越えるように細工してや
ると、永遠に次の命令に進めなくて楽しい(?)ですよね…って意味でした。
これが、命令を途中で中断して、ページイン後は中断したところから再開する
方式ならば、全部のページが主記憶に納まらなくても、先に進めるでしょうが…
確か TRON chip は (m68k のように) 再開型ではなく、再実行型だったと思います。
分かりづらくてすいません。
えっと、あの、命令の実行開始時にページフォールトの有無はわかると思いますよ。
TRONの多段間接アドレッシングについては、嘆いていた人が...
はい、確かに。
TR 命令の場合、機能の複雑さよりも、それが割り込みを許さず、ページフォールト
時に巻き戻されるというあたりが超ヤバイですよね。なんでまたそういう仕様にする
必要があったんでしょう。他のプロセッサで同時に動いているスレッドと共有して
いるメモリに対して実行した場合、他のプロセッサからはどう見えるんでしょうね。
無限段間接の方は、定数サイズの状態だけプロセッサ内部に保持すれば実装でき
るでしょうから、O(L)の状態が必要な TR 命令よりは簡単なんだと思います。
無限段命令の方は、もし実装されていたら、たった一命令でスラッシングを
起こし、永遠に次の命令を実行できないプログラムとかで遊べたんじゃないか
と思うと残念(?)です。
sodaさん:
TRON chip も十分にやばいですね。
でも多段のアドレッシングでもメモリ読み込みだけを繰り返している分には、何とか割り込みを実装できそうな気がします。今の AMD64 アーキテクチャだって、TLB が外れた場合のページテーブル検索は通常 4 段ですし、仮想化機能の Nested Paging が有効な場合は 4 + 4 = 8段のページテーブルを行いますから (^_^;
名無しさん:
どう使うのかは私も良く知らないのですが、ASCII ⇔ EBCDIC の文字コードの変換などに使うらしいです。D2(B2) の位置に256バイトの変換テーブルをおいて、D1(L,B1) の先にある文字列(バイト列)を変換するみたいですね。
不思議な命令ですね・・・どんな用途に使うんでしょうか・・・?
> ページフォルトが起きた場合はメモリに何もなかった状態に巻き戻されます (あるいは命令が完了してはじめてメモリに書き込まれます)
あわわわ、そうなんですか。それはヤバい。
TRON chip も 命令フォーマット上は、無限段間接アドレッシングみたいなとんでもない機能があったようですが、実装上は2段だか3段だかに制限されていたようですね。気合いがたりません。(ぉ
(TRON chip は fault 後、68k 系のように命令を中途から再開するのではなく、よくある再実行タイプだったはずなんですが、ページフォールト時にどうするつもりで、そういう命令フォーマットにしたのか、昔から疑問でした。)