質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • アルゴリズム

    420questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • データ構造

    48questions

    データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

「メモリ上にロードしておく」ことの意味について。

解決済

回答 7

投稿

  • 評価
  • クリップ 1
  • VIEW 1,782

tarotarosu

score 102

前提・実現したいこと

かなり根本的な部分で質問すること自体お恥ずかしいのですが、「メモリ上にロードする」の意味を教えていただきたいです。

例えば、CG処理などの重い処理を行う場合(CG処理が重いかどうかは詳しくはわかりませんが)、何度も使用するサイズの大きいデータなどは一度読み込んだらメモリ上にロードしておくと処理の負担が軽減できるという話を聞きました。
そこでふと思ったのですが、プログラミング中何度も使うものは定数や変数としてあらかじめ持たせていおいて、それらを利用すると思うのですが、これも「メモリ上にロードする」ことととらえてよいのでしょうか?
上記のCG処理の例で言いますと、あるCGのデータが必要になったタイミングで一度そのCGデータを読み込み変数に格納しておき、再びそのCGデータを使用するときはその変数を利用する、といったことも「メモリ上にロードしておく」と同じことなのでしょうか?

非常に抽象的でわかりにくい質問かとは思いますが、「メモリ上にロードする」ということがどういうことなのか詳しく説明していただけないでしょうか。
ご回答を頂けると助かります_(._.)_

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 7

checkベストアンサー

+1

※実際のメモリー管理はOSが行っていて、もっと複雑な処理が行われています。ここで述べているのはあくまで概念的なものであることにご注意ください。

基本的には、補助記憶装置(ハードディスクなど)やネットワーク経由で読み取ったデータを主記憶装置(いわゆるRAMメモリー)に書き込んでCPUなどが読み込めるようにすることを、「メモリ上にロードする」と言います。

通常は、データを処理するためには、そのデータがメモリー上に無いといけません。大きなデータはロードに時間がかかるので、快適に処理を行うためにはあらかじめ読み込んでおくなどの対応が必要となります。

OSの機能で、良く使うデータは「キャッシュ」としてメモリー上に常駐され、何度も補助記憶装置から読み込まなくても良いようにしてくれますが、これはあくまでOS任せの機能で、空きが無くなれば当然消去されてしまいます。

これを自前で行うには、データを「ロード」するための自由に読み書き出きできる領域を確保しておく必要があります。
例えば、ソフトのつくりによっては、画像の一部あるいは全部のデータ(ビットマップデータなど)を「変数」に格納する、具体的には何バイトもの連続した領域を確保(C言語ならalloc、言語によってはバイト配列をnew)して、そこに格納しておくことはあります。
この場合も、画像データをファイルから直接読み込む場合は「メモリ上にロード」と呼んで良いと思います。
JPEG形式の画像ファイルをデコードしてビットマップデータとして読み込む場合は、計算はしていますが、画像データを読み込むという意味では「メモリ上にロード」と言って良いと思います。

...

プログラムのコードもファイルとしてハードディスクに保存されているものをメモリーに転送してから実行していますので、「メモリ上にロード」していると言えます。
ただし、現在ではセキュリティー上の問題から、プログラムのコードは変数の領域とは隔離された領域にロードされます。

プログラムの中で計算した結果を保存しておくのは、ロードとは言いませんね。この場合は「キャッシュする」と言います。
定数の場合は「メモリ上にロード」に近いかも知れません。

...

余談ですが、OS機能の関連で言うと、大きなファイルを読み込むのにメモリマップトファイルという機能を使うこともあります。

参考リンク:

主記憶装置 - Wikipedia
https://ja.wikipedia.org/wiki/%E4%B8%BB%E8%A8%98%E6%86%B6%E8%A3%85%E7%BD%AE

メモリマップトファイル - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

HDDからメモリ上にロードするということでしょうか?

HDDに保存されたCG(画像)データや数値データを
メモリ上にロードすることで、高速にデータを扱うことができます。

使用するたびにHDD→メモリにロードすると時間がかかるので
使用しなくなるまでメモリ上にロードしておくほうが効率よく処理できます。
使用しなくなったらメモリ上から解放します。

つたない回答で申し訳ございません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

はい。同一処理を行うのであれば、「より速く」、「より少ない資源で」これを実現するものは「優れたプログラム」といえます。(近年はコンピュータ技術が進歩して人的資源の方が重要視されるので、「作りやすさ」や「修正しやすさ」も大事な要素です)

HDDよりもメモリの方が圧倒的に処理速度が速いので、繰り返し使うデータはメモリ上に読み込んだままの方が「速く」処理を実行できる場合が多いです。ただし、例外もあります。当然ながらメモリ容量は有限であり、全てのデータを格納することはできません。使用頻度の少ないデータを欲張ってメモリ上に常駐させれば、重要なデータの読み込みに制限がかかります。優先順序付けすることが必要です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

はい、その理解で大体あっています。
変数とは、メモリの扱いをプログラミング言語上で抽象化したものですので。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

プログラム(実行ファイル)は、メモリにロードされて
初めて実行することができるようになります。
「ロード」はかなりコストのかかる処理でして、
頻繁に繰り返すとコンピューター自体の負荷を高めます。

そこで、ロードしっぱなしならいいんじゃね?
という考えでメモリに常駐しているのが
Windows ではサービス、unix系だとデーモンと呼ばれるものです。
これはデータにも言えることですね。

ただし、メモリに常駐するということは、それだけ
他の用途に使えないという話でもあります。
それでも、潤沢に(物理的に)メモリを用意できるなら
メリットははかりしれないことでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

プログラムを実行すると言うことは、その前にプログラムをメモリにロードすることが必要です。
また、データをCPUが処理するためには、その前にディスクからメモリにロードすることが必要です。
しかし、メモリにも論理メモリ(仮想メモリ)と、物理メモリ(実メモリ)という概念が有り、仮想記憶機構のことまで考えると難しくなります。

コンピューターの基本的な動作を理解しない状態で、単独の言葉の意味を知ろうとするのは、本当の意味が理解できないため、あまり意味が無いと思います。
何か今困りごとが有り、急場をしのげさえすればいいと言うことなら別ですが。
CPU、メモリ、ディスク、プログラム 等の意味をしっかり把握してからの方が良いと思います。
「コンピューターは何故動くのか」のような本を読むのをお勧めします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

メモリーと外部記憶媒体の速度に違いがあった場合、オンメモリーが速くていいですね。
通常は外部記憶媒体から読み出す数倍の速さがメモリーにあったのです。

では、SSDはどうでしょう?

4GBキャッシュ付きのHDDではどうでしょう?

さらに、128MBのS−RAMをキャッシュに持ち、2GBのDRAMつきのHDDがPCIExpressで接続されたらどうでしょう?

メインメモリーは2GBで十分になります。速くなりすぎてわくわくします。メモリーと速度が変わりませんね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/20 12:48

    SATA/PCIe のバンド幅は 主記憶に比べると相当小さいッスよ?

    キャンセル

  • 2016/05/21 13:04

    実際にはSD-RAMによるHDD互換のPCIeのがありましたが、実際にはやってません。全ビット出揃うまでWAITが入るのでシリアルATAになったと思います。3GBの速度なので、300KBぐらいは出るのでしょうか。シリアルのSATAとパラレルのPCIeで4レーンに128MBのFIFO接続と競争させたいです。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • アルゴリズム

    420questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • データ構造

    48questions

    データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)