2017年2月20日月曜日

メモリインタリーブ

平成28年秋季 問10. メモリインタリーブ

問題文「メモリインタリーブの目的として、適切なものはどれか。」

解答群
ア. 同一のバンクに連続してアクセスしたとき、アクセス時間を短くする。
イ. 同一のバンクの連続したアドレスにアクセスしたとき、キャッシュミス発生時のアクセス時間を短くする。
ウ. 一つのバンクが故障しても、システムが停止しないようにする。
エ. 複数のバンクに割り振った連続したアドレスにアクセスしたとき、アクセス時間を短くする。

まずもってInterleaveという単語が意味するところが分からない。単語を丸覚えするというのは苦手なので、意味を調べてみた。

goo辞書 Interleave より
3 (1)〈冊子などに〉(別紙を)交互に[1ページおきに]挟む[差し込む]
例文: Interleave the eight-page form with carbon paper.

カーボン紙を挟み込むという例文はかなりわかりやすいように思う。何かを何かの間に挟むというような意味なんだろうと理解。

そこで実際のメモリインターリーブについて検索すると、

IT用語辞典 e-Words【メモリインターリーブ】より抜粋
****************************************
メモリの読み書きにはいくつかの段階があり、CPUがアクセス要求を行ってから実際にデータが送られてくる(あるいは書き込みが完了する)までにはレイテンシ(遅延)と呼ばれる時間差が生じる。メモリへのアクセスは時間がかかるため、コンピュータの処理速度はこの「待ち時間」に足を引っ張られている。レイテンシを短縮する試みは常に行われているが、CPU内の記憶素子との差は埋めがたく、また、低レイテンシのメモリは高価である。
一方、メモリへのアクセス要求は短期的には局所性が極めて強く、連続した領域に順番に読み書きを行うことが多い。この特徴を利用して、複数のメモリバンクにまたがって連続したアドレスを交互に振っておき、あるデータにアクセスする遅延時間の最中に次のアドレスへアクセス要求を発行して時間を有効利用するのがメモリインターリーブである。バンクの数を増やせばその分高速にアクセスできるようになり、2つのバンクを用意すれば2倍、4つで4倍の高速化を図ることができる。
****************************************

内容的にはCPUからのメモリへのアクセス待ち時間を有効活用するために、複数のバンクと呼ばれるメモリの単位に分割して、同時アクセス可能にすることで見た目上のメモリアクセス時間を短縮するという技術なんだと読み解ける。

しかし概念的な説明に終始しているので、具体的には?というところがいまいち判然としない。
そこで他のサイトも探してみると以下のような補足説明があるところを見つけた。

日立ソリューションズ IT用語辞典【メモリインターリーブ】より抜粋
****************************************
・・・なお、現在のパソコンで広く使われているデュアルチャンネル、トリプルチャンネルはメモリインターリーブであり、複数のバンクを同期して読み書きすることで高速化を図っている。ただし、メモリインターリーブとは包括的な概念であり、各バンクの読み書きは完全に同期している必要はなく、そこに多少のズレがあってもよいとされている。
****************************************

デュアルチャンネルという言葉はPCを自作しているとよく聞く言葉で、ATXと呼ばれる大きなPCの箱では一般的にメモリを挿せる場所が4つ搭載されていて、マザーボードの説明書をよく読むと「デュアルチャンネルを有効にするためには同じ規格のものを1番と3番に挿せ」などと書いてあったと記憶している。

当然マザーボードの仕様によってどこに挿すかなどが変わってくると思われるが、ざっくりデュアルチャンネルに合わせてメモリを挿すと2か所同時にメモリに対して読み書きできるようになるので、CPUの速度とメモリの読み書きの間に生じる時間差(これをレイテンシ:遅延と言うらしい)を少しでも埋めることができるということだと思われる。

ちなみにずいぶん昔、このレイテンシという言葉を知らずに意味を聞いたら「そんなこともわからないのか?」みたいなことを言われて結局教えてもらえなかったことを思い出す。

その時点でわからない単語など知りようもないのだが・・・知らないことが恥だというような姿勢は人の好奇心を根こそぎ奪ってしまうのでいくないっ( ゚Д゚)

ざっくりとしか知らないがレイテンシというのは結局のところ、速度差のある二つの装置が同時に動くときに、その速度差から生じる全体的な処理の遅れのことを言っていると思われる。(違っていたら指摘ください。)

ここで改めて解答群を見てみると・・・
****************************************
ア. 同一のバンクに連続してアクセスしたとき、アクセス時間を短くする。
イ. 同一のバンクの連続したアドレスにアクセスしたとき、キャッシュミス発生時のアクセス時間を短くする。
ウ. 一つのバンクが故障しても、システムが停止しないようにする。
エ. 複数のバンクに割り振った連続したアドレスにアクセスしたとき、アクセス時間を短くする。
****************************************

バンク、つまりメモリを小分けにした塊としてとらえた場合にメモリインタリーブを説明しているのは、「複数のバンクに割り振った連続したアドレス」つまり、「小分けにしたメモリに分散した一つの連なりになっている情報」もっと言うと、「メモリを2つに分けて、一つには『1234』もう一つには『5678』という情報を置いていた時に、『1~8』までの連続した情報」を取りに行った場合に、1個の塊から全部取るよりも速くなるよ、ということになる。
なので、答えは「エ.」が正しいことになる。「ア.」「イ.」については「同一のバンク」としているので概念そのものが違う。「ウ.」は全く違う概念(というかそういう技術があるのかも定かではないが)を指しているので違うと言える。

ちなみに英語でも色々と探したところ、以下のようなサイトがあって面白そうだったのでついでに紹介させていただきたい。

University of Maryland: Computer Science, 2003年春「カリキュラム:CMSC311」の授業ノートより
Interleaved memory

全部はさすがに見れていないが、コンピュータを一から作る(組み立てるとかじゃなく、ガチで作る)方法について説明している授業らしく、まったく意味はわからないが初めから見るととても面白そうである。

アメリカで大学生の授業を含めて受講して思ったのだが、アメリカの授業ではしっかりと初めから読んで行くと間違いなくわかるように授業やテキストが作られていることが多くて、「努力しさえすれば絶対にわかるようになっている」のがすごい。

日本の大学では初めから小難しい説明が書かれていることが多いため、挫折以前に考えることを放棄されてしまうことの方が多いのではないかと思う。
それこそ「レイテンシ」の話ではないが、「ついてこれる奴だけついて来い」みたいな上から目線で教える姿勢が日本の特に文系大学で学べる内容を陳腐化し、ともすれば不毛としか言いようのない学術論争に終始してしまっているのではないかと考えてしまう。

「アメリカはチャンスの国」だとかつて言われていたように思うが、「努力すればチャンスを作れる土壌」が整っている/いたからこその話だったのではないだろうか。

ちょっと自己主張してしまったが、今度時間に余裕があってその時にまだ興味があれば読んでみたいと思う。

0 件のコメント:

コメントを投稿