長文で失礼いたします。
ページ化セグメント方式を採用している仮想記憶方式の計算機について
命令をCPUに読み込んだ直後から、オペランドの読み出しが終わるまでの一連の動作をCPU内の処理と主記憶装置へのアクセスを区別して示したい。但し次の仮定を用いる。
(1)命令のアドレス部では、ベースレジスタ、インデックスレジスタおよびディスプレースメント(ベースアドレスからの変位)を指定する。
(2)セグメント表の先頭アドレスは、セグメントベースレジスタに格納されている。
(3)オペランドは主記憶装置から1回のアクセスでとりだせる。
(4)オペランドなど必要な情報の存在するページ表は主記憶装置に取り出されているものとする。
次のようになると思うのですが、途中からわからないのです。
まず、セグメントベースアドレスとベースレジスタの内容をCPU内で加算処理を行う。これにより、セグメント表のアドレスを得ることが出来る。得たセグメト表のアドレスにより主記憶にあるセグメント表にアクセスする。そのセグメント表にあるページ表の先頭アドレスの値とインデックスレジスタの値をCPUで加算処理を行うとページ表のアドレスが得られる。主記憶にあるこのページ表のアドレスにアクセスする。・・・・
その後が判らないのです。オペランドの読み出しはどこまでなんでしょうか?
No.4ベストアンサー
- 回答日時:
No.2の ymmasayan です。
補足にお答えします。> 仮想アドレス(1)と仮想アドレス(2)との関係はどうなっているのですか?
仮想アドレス(2)がそのまま仮想アドレス(1)なのでしょうか?それともなんらかの処理が必要なのですか?それが(2)の過程なのでしょうか?
仮想アドレス(2)が本来の仮想空間につけられたアドレスそのものです。ところが、仮想アドレスと実アドレスの結び付けのためにセグメント、ページと言う管理単位を導入したために、仮想アドレス(2)をセグメント、ページであらわす必要性が生じてしまったのです。これが仮想アドレス(1)であくまでも便宜上の表し方です。
仮想アドレス(2)は仮想アドレス(1)の形に変換しないと、実アドレスのページに紐付け(変換)できないのです。おっしゃる通り、手順の(2)から(6)がその変換の過程です。
次に、若干のコメントを。
(1)間接アドレッシングと言うのが機種によって意味が2つ有りそうです。1つはtocoche さんの言われるインデックスレジスターを使ったアクセスです。
もう一つは私の言っているオペランドのアドレスでアクセスするデータの中身はアドレス(ポインタ)で、そのアドレスの中身が本当のデータと言うものです。IBMのホスト系では後者をインダイレクト(間接)アドレッシングと言っていると思います。インデックスは「指標、又は、修飾」であくまでも、表操作をするものだと思うのですが。
(2)ベースレジスタ選択/インデックスレジスタ選択/ディスプレースメント(ベースアドレス用)は、同時に使用して相対アドレス(2)を計算するものです。質問者:hatukaneko さんの言われるように「すべてを使って加算処理を行って仮想アドレスを得るのかと思っていました」と言うのはまさにその通りです。
御礼が大変遅くなって申し訳ありません。
間接アドレッシングとは2つの意味があるのですね。
どうやら私が借りたプリントでは回答者:ymmasayanさんがおっしゃるほうを前提としているようです。
本当に度々の質問に丁寧に答えて下さってありがとうございました。
No.3
- 回答日時:
まず確実に対応付けられるところから。
私が見たのは富士通系だったと思うのですが、論理,物理アドレスという呼び方をしていました。
・変換前のアドレス=仮想アドレス=論理アドレス
・変換後のアドレス=実アドレス=物理アドレス
次にアドレス変換に使うものですが、
[仮想アドレス内]
・セグメント番号
・ページ番号
・ページ内アドレス
[レジスタ関係]
・セグメントベースレジスタ
関係図がないので推測するしかありませんが、アドレス変換テーブルを使うときは、「このレジスタを参照する」と明示していないかぎり、シンプルな手順で変換すると思います。
例えば、セグメントベースレジスタの内容とセグメント番号を足した値で、セグメントテーブルをアクセスする。セグメントテーブルから得られた値とページ番号を足した値で、ページテーブルをアクセスする。ページテーブルから得た値とページ内アドレスを足して物理アドレスとする。 という具合です。
さて残りのものですが、
[命令内]
・ベースレジスタ選択
・インデックスレジスタ選択
・ディスプレースメント(ベースアドレス用)
[レジスタ関係]
・ベースレジスタ
・インデックスレジスタ
ベースレジスタ選択/インデックスレジスタ選択/ディスプレースメント(ベースアドレス用)は、同時に使用するものですか? アドレス変換でなくアドレッシングに関するのではないですか? アドレッシングに関するものなら、
・インデックスレジスタの値を使用した「間接アドレッシング」
・ベースレジスタの内容とディスプレースメントを足した値を使用した「ベースモードアドレッシング」
各々の場合について示せという問題だと思います。
このアドレッシングの呼び方も参考書によっていろいろあります。
・間接=インダイレクトレジスタ=レジスタ参照=ポインタ=(そのまま)インデックス など
・ベースモード=レジスタ相対 など
私が「普通」と思っていることも、他の参考書を読んだ人からは「違うぞ」と言われるかもしれません。(20年も前に勉強したので、参考書もなくなってしまった。「インデックス」ってDEC系かな?) あとは図書館でコンピュータアーキテクチャ関係の本を見て、図を探すくらいしかないでしょう。
この回答への補足
何度も丁寧な回答ありがとうございます。
>ベースレジスタ選択/インデックスレジスタ選択/ディスプレースメント(ベースアドレス用)は、同時に使用するものですか? アドレス変換でなくアドレッシングに関するのではないですか? アドレッシングに関するものなら、
同時に使用するものかどうかはわかりませんが、すべてを使って加算処理を行って仮想アドレスを得るのかと思っていました。順番等についてはわかりませんが。
またアドレッシングに関するものだと思います。
図については見つけたのですが仮想アドレスを得るまでの図は表現が異なっていて対応がわからず今だ理解できていません。
No.2
- 回答日時:
途中からの回答になりますが。
用語がいろいろ有るので、推測を交えながら。用語について以下のように整理しておきます。
・仮想アドレス(論理アドレス)・・変換前のアドレス。本来は実メモリーよりはるかに大きい仮想空間(補助記憶装置に生成)につけた0相対のアドレスの事。
・実アドレス(物理アドレス)・・変換後のアドレス。実装されている主記憶装置(主メモリー)につけられている0相対のアドレス。
・ベースレジスタ・・プログラムの再配置(リロケート)に対応するためのレジスタ。基本的にはOSやローダが値をセットする。
・インデックスレジスタ・・ユーザが表操作をするとき、表の行指定をするレジスタ。
次にアドレスの表現形を整理します。
・命令のアドレス部・・(ベースレジスタ)+(インデックスレジスタ)+(ディスプレースメント)
・仮想アドレス(1)・・(セグメント番号)+(ページ番号)+(ページ内アドレス)
・仮想アドレス(2)・・0相対の仮想アドレス。
・実アドレス(物理アドレス、主記憶アドレス)・・0相対の主メモリーアドレス。
次にオペランドの取り出しの過程(推測)です。図を書いてトレースしてください。
(1)命令のアドレス部で示される(ベースレジスタ)+(インデックスレジスタ)+(ディスプレースメント)を計算します。これが0相対の仮想アドレスになります。
(2)仮想アドレスをページ長で割り算して商と余りを計算します。ここでは仮に商にページ長を掛けてページ先頭アドレスを求めるものとします。
(3)プログラムごとのセグメント数は可変ですからちょっと厄介です。
(4)セグメントベースレジスタからセグメント表の先頭アドレスを取り出しテーブルサーチをします。先ほど計算したページ先頭アドレスよりも小さい直近のアドレスが目的のオペランドの所属するページの先頭アドレスです。
(5)セグメント表からそのセグメントのページ表の先頭アドレスをつかみます。
(6)セグメント先頭アドレスからページ先頭アドレスを引き、これをページ長で割ってセグメント内ページ番号を求めます。
(7)ページ表からページ番号でテーブルアクセスし、実アドレスのページ先頭アドレスを得ます。
(8)これに前に保存してあった余りを足すと実メモリーのアドレスが得られます。→これがオペランドのアドレスです。
なお、蛇足ですが、(4)でセグメントフォルト、(7)でページフォルトのチェックが入るべきだと思います。
主記憶のアクセス回数が1回と言う件ですが、間接アドレス命令(アドレステーブル経由)でなく、直接アドレス命令だという意味でしょう。そうでないと上記手順では(セグメント表N回)+(ページ表1回)+1回っデ2回どころでは有りません。
あと、実際の機械では、セグメント表やページ表はTLBやDATを使って高速化しています。(原理的には変わらないと思います)
この回答への補足
回答ありがとうございました。流れがわかりました。
さらに質問させて頂いてよろしいでしょうか?
次のところが判りません。
仮想アドレス(1)と仮想アドレス(2)との関係はどうなっているのですか?
仮想アドレス(2)がそのまま仮想アドレス(1)なのでしょうか?それともなんらかの処理が必要なのですか?それが(2)の過程なのでしょうか?
度々すみません。
No.1
- 回答日時:
普通、アドレス変換テーブルを使うときは、
1.変換テーブルの先頭アドレスを示す「テーブルベースアドレス」と、そこからの変位を示す「オフセット」を足した値(アドレス)で、変換テーブルをアクセスして「物理アドレス」のベースアドレス得る。
2.「物理アドレス」のベースアドレスに主記憶アクセス用の「ディスプレースメント」を足した値(アドレス)で主記憶をアクセスしてオペランドを得る。
と思うのですが、どの部分を何と呼ぶかは、参考書あるいはメーカ毎によって違いますので、まず対応を明確にすることが重要だと思います。
質問ではアドレス変換テーブルが、セグメントテーブルとページテーブルの2つあるようなので少し複雑ですが、2段階で変換テーブルをアクセスするときは、上記1の操作が繰り返されるものと思います。
>ディスプレースメント(ベースアドレスからの変位)
とありますが、この「ベースアドレス」は「物理アドレス」のベースアドレスに対応していますか?
>(4)オペランドなど必要な情報の存在するページ表は主記憶装置に取り出されているものとする。
ページテーブルの中にオペランドがあるわけじゃないですよね?(でもそうだとすると、1つのオペランドを取り出すのに主記憶を2回アクセスしなくてはならない)
このような問題が出るからには、教科書,参考書に図があると思うのですが。(推測では何と答えたらいいか)
この回答への補足
回答ありがとうございます。補足させて頂きます。
>>ディスプレースメント(ベースアドレスからの変位)
>とありますが、この「ベースアドレス」は「物理アドレス」のベースアドレスに対応していますか?
おそらくしていないと思います。「物理アドレス」を得るために「ベースレジスタ」と「インデックスレジスタ」というアドレスを使うのではないかと思うのですが。判りません。
また、「物理アドレス」とはどうも呼んでいない様なのでよくは分からないのですが。「仮想アドレス」、「実アドレス」という表現をされています。
「仮想アドレス」はアドレス変換の前で、「実アドレス」はアドレス変換後のアドレスを指しています。
さらに「仮想アドレス」にはセグメント番号、ページ番号、ページ内アドレスがのっています。
>>(4)オペランドなど必要な情報の存在するページ表は主記憶装置に取り出されているものとする。
>ページテーブルの中にオペランドがあるわけじゃないですよね?(でもそうだとすると、1つのオペランドを取り出すのに主記憶を2回アクセスしなくてはならない)
ページテーブルの中にオペランドは無いという事で考えています。
「物理アドレス」からオペランドを得るところはわかりました。
大変申し訳無いのですが、「物理アドレス」(おそらく「仮想アドレス」)を得るまでをご存知でしたら詳しく教えてください。「ベースレジスタ」と「インデックスレジスタ」の使い方が分からないのです。
実は他大学からの院受験でして、教科書や参考書は持っていないのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- システム CPUの問題について 2 2022/07/09 12:04
- その他(コンピューター・テクノロジー) 補助記憶装置についてその役割や仕組みを主記憶装置との違いから説明せよ。語群を用いること 語群(CPU 1 2023/07/10 22:25
- 固定IP MACアドレスはLAN内で相手を特定するアドレスですか? PCから監視カメラを閲覧するときに、セグメ 3 2022/07/23 09:04
- 法学 不正アクセス禁止法の扱いについて 4 2022/03/23 18:13
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- その他(教育・科学・学問) ハンドアセンブルの第3オペランドについて 2 2022/05/16 20:09
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どうしたらアドレスを青色で表...
-
複数アドレスにメール送信した...
-
@live.jpというメールアドレス...
-
無効なメールアドレスと判断さ...
-
署名の中に自分のアドレスを書...
-
アドレスの語尾 .com .co.jp ...
-
空メールが送信されてくるのは?
-
スイッチングハブのMACアドレス...
-
メール送信エラー。宛先アドレ...
-
@gol.comというメールアドレス...
-
メールがエラーで戻ってきまし...
-
@**dion.ne.jp は携帯アドレス...
-
メールを送れません?(@lapis...
-
社内でのメールアドレスの通知...
-
アウトルックで受信メールが連...
-
楽天カードの申し込みに対する...
-
Yahooメールを使っているのです...
-
電話番号とメルアド、どっちが...
-
MACアドレスをサイトにのせても...
-
Fromと返信先が異なるのはなぜ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数アドレスにメール送信した...
-
どうしたらアドレスを青色で表...
-
@live.jpというメールアドレス...
-
空メールが送信されてくるのは?
-
件名と本文なしのメールが多い...
-
アドレスの語尾 .com .co.jp ...
-
電話番号とメルアド、どっちが...
-
@**dion.ne.jp は携帯アドレス...
-
スイッチングハブのMACアドレス...
-
ybbメールとyahoo.co.jpメール...
-
これは本当に 「教えて!goo」 ?
-
Yahooメールアドレスを変更した...
-
@gol.comというメールアドレス...
-
メール送信エラー。宛先アドレ...
-
メールがエラーで戻ってきまし...
-
内定先企業へのアドレス変更連...
-
ヤフーのメールアドレスが何故...
-
メールアドレスがばれても悪用...
-
hotmailから携帯への送信
-
楽天カードの申し込みに対する...
おすすめ情報