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

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

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

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

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

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

2017年2月19日日曜日

トレーニング日誌 2017/2/18~

一連の記事で行っている実験のまとめはこちらのページ、生活実験:トレーニングを参照ください。

ざっくりまとめると忙しい中で一日30分のトレーニングと食事制限で体脂肪を落とせるのか?という実験をやっています。

2017/2/18
体重:74.6kg
体脂肪率:20.3%
基礎代謝量:1657kcal
肉体年齢:37歳

シックスパックトレーナー Lv.15
※今日は職場の人と帰りに食事をして帰った。
帰りにタクシーに乗ろうと思っていたが、職場の人と別れてから歩きで家路につくのも久しぶりだと思って1時間かけて歩いて帰る。
途中で雨に降られるが、バイクで2時間かけて雪道を帰ることを考えれば大したことはない。
というか、確かに手は凍えるけども、感覚がなくなるほどではない。
帰る道すがら、公園で休憩時間の暖かい珈琲とタバコを楽しむ作業員の人を見かけた。ほんの5年前は同じ境遇にいたことを考えると何か感慨深いものを感じる。
途中で、一時期現場に入っていた公団住宅を見かける。えらく作りのちゃっちいマンションだなぁ・・・と思いながら通ったものだが、今はしっかりと全棟入っているようだった。
しばらく自分が通ったコンクリートの塊ですら、人の記憶の風化と共に美化されていくものなのかなぁ・・・と何やら不思議な感覚に包まれた。
家に帰って腹筋しながら皿を洗っていて思い出したのだが、一緒に飲んでた職場の人に「バイセクシャルというか・・・(性的な意味で、と思われる)どのカテゴリの人なんですか?」と聞かれたことを思い出す。
あくまで言わせていただくが、体を鍛えているからといって男色に走るような人と決めつけられるのは失礼しちゃうわっヽ(`Д´)ノプンプン




2017/2/16
体重:74.8kg
体脂肪率:21.8%
基礎代謝量:1630kcal
肉体年齢:39歳
フレンチプレス(7.5kg) x20
ワンハンドローイング(7.5kg) x10
ダンベルカール(7.5kg) x10
サイドレイズ+デッドリフト(7.5kg) x10
トライセプスエクステンション x10
大胸筋アイソメトリック x2

※昨日酒だけ飲んであまり食べずに寝たので、朝起きた時の体重が74.2kgになっていた。で、調子に乗ってドーナツ2つ食って帰ってきたら体重は増えていた。
おやつにサバの水煮缶を職場に持っていっているが、特に食べたいと思えないのがたまに傷である。ドーナツの誘惑に負ける日々が続く。
アーモンドを買って持っていこうか思案中。

2017年2月16日木曜日

トレーニング日誌 2017/2/15~

一連の記事で行っている実験のまとめはこちらのページ、生活実験:トレーニングを参照ください。

ざっくりまとめると忙しい中で一日30分のトレーニングと食事制限で体脂肪を落とせるのか?という実験をやっています。

2017/2/15
体重:74.4kg
体脂肪率:20.5%
基礎代謝量:1648kcal
肉体年齢:37歳

※今日は何もしなかった。仕事が終わって晩酌のネタ買って帰ったら日付が変わっていたからだ。仕事が遅くなったのでチョコドーナツとチョコデニッシュを食ってやった。




2017/2/16
体重:74.5kg
体脂肪率:21.5%
基礎代謝量:1631kcal
肉体年齢:39歳
フレンチプレス(7.5kg) x20
ワンハンドローイング(7.5kg) x10
ダンベルカール(7.5kg) x10
サイドレイズ+デッドリフト(7.5kg) x10
トライセプスエクステンション x10
大胸筋アイソメトリック x2

シックスパックトレーナー Lv.15

※昨日は仕事で帰りが日付変わっていたので、何もせずに晩酌をして寝た。
今日は代わりにダンベルと腹筋両方を行った。そして、日中ほとんど食べなかったからか、昨日遅すぎたかはわからないが急に酒が飲みたくなり、ストレスを貯めたくもなかったので今酒を飲んでいる。
言い訳みたいだが、昨日は全くカロリー計算せずに飲んだが、今日はしっかりカロリーを取ろうと思う。久々にステーキ三昧だ(*´▽`*)
挽きたてのブラックペッパーで食べるステーキは格別である。1枚200gオーバーでカロリーは460kcal、カロリーって素敵だっ(*´▽`*)

アドレス指定方式: 間接アドレス指定

平成28年秋季 問9. 関節アドレス指定方式

問題文「間接アドレス指定方式のアドレス部で指定するものはどれか。」

解答群
ア. 処理対象データが格納されている記憶場所のアドレス
イ. 処理対象データが格納されている記憶場所のアドレスが格納されている記憶場所のアドレス
ウ. 処理対象データが格納されている記憶場所のアドレスとアドレス計算の基準点との差分
エ. 処理対象データ自体

今回改めて解くと正解した。冷静に考えるとなんとなく設問から答えが推測はできるけど、改めて考えてみる。

まずはグーグル先生に「アドレス指定方式」を聞いてみたところ、色々なサイトが紹介しているのはいつものことだ。

四コマで勉強する基本情報処理」さんでは、4コマでざっくりと解説した上で詳しく書いてくれている。が、多分何もわからずに詳細を見ると何が何だかわからないかもしれない。

『経営と情報』に関する教材と意見」さんは見た目非常に難しく書かれているが、ゆっくり追っていくとかなり細かいところまで書いてくれているのでお勧めである。

K-fix」さんは見た目が非常に綺麗に作られていて、視覚的にわかりやすい。しかし細かいところの理解と言う点では「『経営と情報』に関する教材と意見」には少しかなわないかもしれない。

全体的なお勧めは「『経営と情報』に関する教材と意見」さんと「K-fix」さんを見比べながら理解するのが良いのではないかと思う。

上記の解説を基に、解答群を見てみると、
ア.は直接アドレス指定
イ.は間接アドレス指定
ウ.はベース(基底)アドレス指定
エ.は即値アドレス指定
となっていて、正解はイ.となる。

詳細は自分でもこの記事を読み返しながら復習したいものの、まずは以下のように覚えたい。

まず、CPUの命令は「命令部」と呼ばれる命令を指定している部分と、「アドレス部」と呼ばれる指定した命令を実行する対象の部分とに分かれている。

この「アドレス部」に記述されている内容が何を指しているかによって「アドレス指定方式」と呼ばれるものが変わってくる、今回の問題はまさにその部分についての設問である。

即値アドレス方式というのは、アドレス部に「値そのもの」が入っているという意味になる。

直接アドレス指定は、アドレス部に入っている値が、メモリのアドレス番地を指しているという意味で、そのためアドレス部のビット数がそのまま指定できるアドレスの上限になる。
24bitだと16,777,215、つまり16メガビット相当しかメモリのアドレスを持てなくなるため、アドレス部の長さそのものが利用できるメモリの上限となる。
これは、64bitマシンが出てきて、理論的な上限がほとんどないに等しくなった今となっては少なすぎることはわかっていただけると思う。

間接アドレス指定は、アドレス部に入っている値が、さらにメモリのアドレス$20170216追記:を指定している場所$を指定しているため、直接アドレス部のような制限がなくなるという利点があるが、アドレス部に入っている番地を探し、さらにその番地に入っている番地に実際使う値があるという意味では2回以上メモリへのアクセスを必要とするため、実際にメモリアクセスにかかる時間はほかのアドレス指定方式よりも長くなると言える。

基底アドレス方式やインデックス方式は、基準となるアドレスに対してアドレス部の値を加算することで実際に利用する値が入っているアドレスを指定しているとざっくり考えた。基準の指定の方式が単純に違うものと思われるが、その点についてはまた後日ゆっくり考えたい。

今日は仕事が終わったのが23時すぎだったので、この辺で許してほしい。

2017年2月15日水曜日

トレーニング日誌 2017/2/13~

一連の記事で行っている実験のまとめはこちらのページ、生活実験:トレーニングを参照ください。

ざっくりまとめると忙しい中で一日30分のトレーニングと食事制限で体脂肪を落とせるのか?という実験をやっています。

2017/2/13
体重:74.4kg
体脂肪率:20.9%
基礎代謝量:1640kcal
肉体年齢:38歳

フレンチプレス(7.5kg) x20
ワンハンドローイング(7.5kg) x10
ダンベルカール(7.5kg) x10
サイドレイズ+デッドリフト(7.5kg) x10
トライセプスエクステンション x10
大胸筋アイソメトリック x2
※最近は何故だかダンベルを体が求めている時がある。もちろん俺自身はそれほどしたいとも思っていないので、スケジュールに則ってダンベルするのだが、ある程度慣れてくると「犬が散歩を求める」ように体が運動を欲するのかもしれない。
ちなみに体が筋トレを求めているなどと書くと勘違いされかねないが、マゾなどの変な性癖があるわけでないのは自分の名誉のために書き添えさせていただく。




2017/2/14
体重:74.8kg
体脂肪率:21.1%
基礎代謝量:1645kcal
肉体年齢:39歳

シックスパックトレーナー Lv.15
※今日は試しに水をつけずにシックスパックトレーナーをやってみた、ら、あまり痛みはなかった。
ひょっとして水をつけてやるのは体に恐ろしく悪いかもしれない。
主観的だが、水をつけてやると最初の3分が拷問になる。将来的にほとんど効果が見られなくなったら水をつけるようになるかもしれないが、今のところは普通にしようと考えた。
改めて、そんな趣味は毛頭ないからだ。
今日は買い物をして帰って、いざ味噌汁を作ろうとしたら出汁パックの在庫がなくなっていた。出汁にも相当の塩分が含まれるが、減塩味噌よりは少ないのではないかと思っている。
味噌で味を濃くするのは避けたかったので、「塩分控えめ」と書いてあったコンソメスープの素を入れてみた。
心配していた味はちょっとだけ洋風な感じを受けただけで、味噌汁は味噌汁だった。味噌味最強である。
昨日はシフトの関係で帰ってから翌日の仕事まで時間があったので酒を飲んだ。今日の体重は400g増で、初めて飲酒翌日に体重が増えていた。
そうやって考えると酒を飲む翌日は休みが多いため、食事が極端に少なくなっているのが原因で実はカロリーから考えると増えて当たり前なのかもしれない。
ただし、昨日は餃子を18個とウィンナーを一袋食べたので増えたのかもしれない。
いずれにしても常習的に酒を飲むと体重は増えていくだろうと思うので、週に1・2回が丁度いいのだと思う。
今回の実験前はほぼ毎日酒を飲んでいた。そこから考えると酒を飲むのが「おいしい」と感じるのはたまに飲むからで、常習的に飲むと美味しいと思えなくなってくると感じる。
やはりなんでもほどほどが良いのだと思う。

2017年2月13日月曜日

ヒープソート

平成28年秋季 問6. ヒープソート

問題文「ヒープソートの説明として、適切なものはどれか。」

解答群
ア.ある間隔おきに取り出した要素からなる部分列をそれぞれ整列し、さらに間隔を詰めて同様の操作を行い、間隔が1になるまでこれを繰り返す。
イ.中間的な基準値を決めて、それよりも大きな値を集めた区分と、小さな値を集めた区分に要素を振り分ける。次に、それぞれの区分の中で同様な処理を繰り返す。
ウ.隣り合う要素を比較して、大小の順が逆であれば、それらの要素を入れ替えると言う操作を繰り返す。
エ.未整列の部分を順序木にし、そこから最小値を取り出して整列済みの部分に移す。この操作を繰り返して、未整列の部分を縮めていく。

まずもって名前を知らなければ解けない問題ではある。

まず「ヒープソート」から考えていくが、検索しても「与えられたデータをヒープ構造に追加していき・・・」とか書いてあって、

いやいや、ヒープってそもそもなんだ?( ゚Д゚)

と思ってしまうのは俺だけだろうか。

で、ヒープソートを検索していると次のYoutube動画を見つけた
ヒープソート byわくわくアカデミー

ヒープってなに?という疑問には答えてくれなかったが、女性の声が心地よかった。それと視覚的にこういう事するんだなぁということはわかった。

では、ヒープって何?ということで「ヒープとは?」でグーグル先生に聞いたところ、Wikipediaには以下のように書いてあるらしい。

ヒープ領域
******************************
ヒープ領域(heap memory)はコンピュータープログラミングにおいて、動的に確保可能なメモリの領域。ヒープ (heap) とは、『山積み』という言葉の中の『山』をさす英単語である。データ構造のヒープと直接的な関係があるかどうかは、ヒープ領域の構造の設計、保守にデータ構造のヒープの技術を使うかどうかに依る。
******************************

上の二つを組み合わせて考えると、スタックのような使い方をしているメモリ上で、大小関係を比較しながらメモリの最上位というか最下位というか端の方から取り出していきながらソート(並び替え)を行うということに見える。

プログラムを作ったらどうだろう?と言う風に考えたが、考えている内に頭がこんがらがってきたので予想だけすると、結局は以下のような形をした「完全二分木」と呼ばれる構造の上と左右をそれぞれ比較しながらソート(並べ替え)を行い、並べ替えが終わったら一番大きい(つまり一番上の値)を取り出して、1番下と交換し、またソートをし・・・
と言うのを繰り返すことで例えば大きい順に並べ替えを行うということだと思われる。


これを一列に並べ替えて、実際の操作を手作業で行ってみると


一番初めにHeap内を整理した後で、一番大きな値を取り除いて再度比較する際、入れ替わった場所だけ比較すれば良さそうなので、1回目と2回目以降のソートは別のループで実現するとわかりやすそうである。
また、2回目以降の操作は入れ替わった値のところだけを見ればよいので、文もそれだけ圧縮できるような気がする。

ここまで考えればなんとなく問題だけは解けそうであるw
今日はこのぐらいにしといてやるっ( ゚Д゚)

2017年2月12日日曜日

トレーニング日誌 2017/2/10~

一連の記事で行っている実験のまとめはこちらのページ、生活実験:トレーニングを参照ください。

ざっくりまとめると忙しい中で一日30分のトレーニングと食事制限で体脂肪を落とせるのか?という実験をやっています。

2017/2/10
体重:74.5kg
体脂肪率:21.2%
基礎代謝量:1637kcal
肉体年齢:38歳

シックスパックトレーナー Lv.15
※Lv.15はやはり始めだけつりそうになる。それ以外は負荷が丁度いいように思う。

今日は週に一度のカロリー計算なしの日。
ただ、体がなじんできたのかあまりカロリーが高い食べ物を食べなくなったように思う。
とんかつに醤油マヨネーズは行き過ぎだが、鶏の胸肉の皮を集めたものを湯通ししたものをゆずのポン酢で食べたり、なんかもうおやぢの域に入っている。

2017/2/11
体重:74.8kg
体脂肪率:21.6%
基礎代謝量:1634kcal
肉体年齢:39歳

フレンチプレス(7.5kg) x20
ワンハンドローイング(7.5kg) x10
ダンベルカール(7.5kg) x10
サイドレイズ+デッドリフト(7.5kg) x10
トライセプスエクステンション x10
大胸筋アイソメトリック x2
※日中普段通りの食事をしているのにも関わらず、何か飢餓感に襲われた。おやつに買っているサバの水煮はなんだか塩気が強すぎて欲しくないし、かと言って砂糖が欲しいわけでもない感じ。
強いて言うと体の水分量が余っているのを何かで埋めようとしているかのような感じ。
でも塩気が欲しくないのはなぜだろう。
同僚には菓子パン食うと宣言したものの、結局ホットコーヒーでごまかして過ごす。
最近になって塩分摂取を控えているのが効いているのだろうか?しばらく様子を見たいと思う。



2017/2/12
体重:74.5kg
体脂肪率:21.5%
基礎代謝量:1629kcal
肉体年齢:39歳

シックスパックトレーナー Lv.15
※体重は少しずつ落ちている様子。が、体脂肪率は増えている?www
実感としては腹回りがだいぶすっきりしてきているのでいい感じなのだと前向きに捉えている。
シックスパックトレーナーはやはり最初が拷問のようで、後になるにつれてそれほどでもなくなる。表面に水をつけているのが効いているのか?それとも体に悪いことなのかは不明。
ただし、負荷強度は増しているのは確実と言える。

1週間程前から減塩しているからか、すこーしだけ飢餓感に襲われるが、大体昼飯時だったり夕飯時だったりなので、切り抜けている。

カロリー摂取の運動強度は1.17程度で、普通の生活をしていると足りないぐらいのはずだから、少しぐらい腹が減るのは当たり前かもしれない。ただ、タンパク質が足りているからかそこまでの飢餓感はない。

昨日から脂質補給にアーモンドを取り入れているので、少しだけ満足度が増している。炭水化物が欲しい時などには効果が高いように思う。
アーモンドの効果は血管を柔らかくするというものもあるそうなので、薬を飲んでいる高血圧に効果があることを期待している。

脂質をあまり抑制すると性欲の減退があるそうなのだが、今のところそのような身体的な変化は見受けられない。ただ単に個性かもしれないが、基礎代謝量の下限とされる値を大分下回っているが問題はないように見える。炭水化物量も同様で、夜の間に少し欲しいかもしれないと思う程度で、完全に摂取を止めた時みたいな夢に見るほどの渇望感には見舞われない。

いずれも全くとらないと色々と弊害が出てきそうだが、意外と必要量は厚生労働量が謳っている下限を大きく下回っているのではないかとも思う。

しばらくは今の食生活を続けながら、必要に応じて削っていこうと考えている。