l_n_m’s diary

よわい電気系の日記(本当にただの日記)

エスカ&ロジーのアトリエ Plus 開始! あと音ゲー

サボり

中間報告以来だったかな……完全に書くのサボってました。
いろいろ調べてお勉強、ってのも別に嫌いではないんですけどねー
というわけで久しぶりに何か書こうと思ったのですが、真面目なことだけじゃなくてたまには好きなゲームのことでも書けば楽しそうだなって。
そんなわけで、今回は先週プレイを始めたエスカ&ロジーのアトリエPlusとかについて書いてみます。
ネタバレはありありかもなので注意のこと。

ウィルベルかわいい

ほんとこれ!!
自立しているというか、飄々としたたくましいキャラが好きなんです。
酒場(でいいんだっけ)で手品見せてるシーンなんか良かった。こう、「こいつ上手いことやってんな」みたいなの。
あと戦闘でもやたら強い。最初は単にレベルが高いだけだったけど、装備とかも火力重視にしてみたらとんでもないことに。
必殺技で相手の体力1300くらい消し飛ばしたときには流石に大爆笑でした。

調合パズル

属性ごとにスキルがあり、それを使って調合を強化する。このシステムすごいですね!
かつてマナケミアでも似たようなの(属性は無いけど、仲間のアシスト)がありましたけど、それがリファインされて帰ってきたというか。
単にアイテムを集めて次のアイテムを作って、というだけではない、アトリエの更なる楽しさがあると思います。
かなり好きだな、これ……いい発想。

アイテム自動補充

ケチな性分なので、過去のアトリエ(そんなにいっぱいやってるわけではないですけど)ではアイテムを殆ど使ってなかったんです。
アトリエっぽい戦闘じゃないので、思えば結構損なことしてたのかも。
尤も、マナケミアなんかはスキルに通常攻撃強化にサポートに必殺技に、ものすごく充実してたので楽しかったんですけど。
本作ではなんと拠点に帰るたびにアイテムが自動補充、しかも使ったら使っただけ後でもらえるお金が増える! すばらしい
どんどんアイテム使って敵をバッサバッサ倒していくの爽快感ありますね。まだ序盤(?)ですが、オメガクラフト強いよ。強い。

というわけで

今2年目の10月です。毎晩夢中になって寝るのも起きるのも遅くなってる。マズいぞ。
まだまだ楽しんでいきます!

音ゲー

DDR

院試以来、ものすっごく体力が落ちたのであんまりやりに行く気力が湧かない……
でもやっぱり動くの好きなのでちょこちょこやってます。
一昨日の日曜日にハデスCDPクリアして、DP18残りひとつ(鬼プリン)です。
19はまだ大してやっていないのですが、そのうちやろっかなぁ。

SDVX3

ボルテ3ももう終わりますね。
やっとこエンディングを見ました。なんだあのスタッフロール。
関わった人数物凄いゲームになりましたね。
最近全然やっていませんが、なんとかブロック解禁だけなら終わるかも?
ブラスターはムリですね。無理無理(ヾノ・∀・`)
とはいえブラスター救済はありがたいので暴龍天取るための解禁くらいはしとこうかな。

jubeat

Megalara Garuda!
めっちゃ話題になったしプレイしたい! のに、マッチングで全然出てこない……
100回くらいマッチングセレクトやったのに当たらないのは流石におこですよ。
解禁した人! 是非プレイしまくっていろいろな人に伝導して!!!

本日の教養:GPU

GPU(Graphic Processing Unit)

CPUに対してGPU。描画に特化した並列計算機ですね。今日はこの辺を調べます。大学入ってからずっとノートPCなのでグラボの知識も無いんですよね……
とはいえ今回は細かい構造ではなく、PC自作勢なら当然知っているだろう常識程度に留めます。今そんなに調べてる余裕無いので。また今度。性能比較とかもしませんよ。

ブランド

GeForce

NVIDIA社によるGPU。ノートPC用のものも多く、それらには(型番)M、とMが書かれている。
GTXシリーズはゲーム用の超高性能GPU。最新版ではTITAN Xというものも出ている。
下2桁はクラス、100の位以上はバージョンを表す。数字が大きいほど新しいor高性能。つまりGeForce GTX1080はGTXシリーズのバージョン1000、クラス80(80が最高)で、GTX 650はバージョン600のクラス50(そこそこの性能)、ということ。
性能比較サイトなんかを見ると、消費電力もものすごいばらついてますね。小さいもので64W、大きいもので375W。友達が電気代を心配していましたが、なんか納得しました。

Radeon

AMD社によるGPU。基本的に数字が大きいほど高性能。でもシリーズが多く、分かりにくい。Wikipediaが充実しているので気になる人は見るといいと思います。深入りしたくない。

その他

オンボードグラフィックはIntelなど多くの企業が製作している。わざわざ高性能なGPUを積まなくてもいいや、という人が多いのに合わせてってことなんでしょうけど。
ちなみにGeForceDirectX向けな一方、OpenGL向けのQuadroシリーズがNVIDIAで開発されていたりします。

GPUコンピューティング

さて、今回はグラボではなくてGPUのお話です。というわけで一歩踏み込みます。
GPUはその構成から(語ってませんね……多くのコアが並列に存在しているので、独立な複数の計算を一度に行えます。グラフィック計算では各ピクセルについて計算しているんだったかしら)、並列計算が得意です。ならばグラフィックに限らず数値計算にも活かせるよね、という話。

Tesla

NVIDIA社が開発しているGPUコンピューティングGPU。映像出力機能が取り払われています(!)。

CUDA

GPUコンピューティング向けの統合開発環境NVIDIA社が提供。凄いなNVIDIA
シーケンシャルな部分をCPU、並列化可能な部分をGPUが担当し、それら全体の管理もCPUがやるのが一般的です。
CUDAについてはまた後で調べることにします。

おまけ

すごくざっくり見ただけで終わり。自分用メモだからいいよね(
Batcher's Odd-Even Mergesortなんかは並列計算で高速化するためのアルゴリズムですよね。
Batcher's Odd-Even Mergesort - YouTube
ちなみにGPUとCPUの片方しか動かさないでいると、どんなに頑張ってもコアの使用率は67%程度で止まってしまうそうです。そこで、CPUの方で計算命令を発行してGPUのコアにどんどん投げる、というパイプライン化を行う手法が考案されました。詳しくはRan Ginosar先生の講義資料を参照。Many-core Plural architecture、というpdfにいろいろ書かれています。

明日

たぶん余裕無いので簡単なテーマがいいな……アーキテクチャ寄りの話ばっかりだったし、C++11のあれこれを適当に調べてみることにします。体系的にまとめるわけじゃないので(これまでもそうですね……)だいぶ散らかるとは思いますが、ご愛嬌ってことで。
ちなみに土日は完全に休んでましたが、気分次第でやったりやらなかったりということにします。あんまり厳格にやる必要もないし。それに、今は千恋*万花が楽しすぎるので最優先で進めたい。ふふふ。

本日の教養:DDR

DDR

Let's play DDR!
ではなくて。今日の話題はメモリのDDR(Double Data Rate)についてです。
そもそも何故この名前なのかというと、クロックの立ち上がりと立ち下がりの両方でデータを送るためです。HDL(Hardware Description Language)で設計したことがある人にとっては常識ですが、普通posedgeもしくはnegedge、つまりクロックの立ち上がりもしくは立ち下がりで動作させます。そうして一斉に回路を同期させて動かすのが同期回路。
大量のデータを送ろうとしたとき、その両方で送れたら倍速じゃん! ということで開発されたのがDDRAMDとかに支持され、今では普通に使われていますね。

DDR SDRAM

本当の名前はこれ。SDRAM(Synchronous Dynamic Random Access Memory)とは、DRAMのうちシステムバス(後で説明!)と同期して動作するもののことです。
DRAMはリフレッシュ動作の必要な揮発性メモリ。そのへんはまぁいいでしょう。

Synchronous?

何故同期する必要があるのでしょう。単純に応答させるだけなら非同期の方が速くなる。
その答えは、アドレスを取得することにあります。元々、RAS(Row Address Strobe)とCAS(Column Address Strobe)と呼ばれるふたつの線がDRAMには通っていました。メモリアクセスを簡単にするために、行と列に分けてアドレスを送っていたものの、一本のアドレス線からどのタイミングでそれぞれを読めばいいかをRASとCASを用いて教えなければならなかったのです。
http://ascii.jp/elem/000/000/597/597887/fig1_c_553x373.png
ascii.jpより画像を引用。
でーすーが、これが非常に面倒。RASとCASに対する応答を処理するために、非同期回路と同期回路を混在させたメモリコントローラを設計しなければならなかった。
しかしRASとCASをクロック信号を使いまわすことで代用。だいぶすっきりしました。
http://ascii.jp/elem/000/000/599/599291/fig1_c_730x240.png
同じくascii.jpより。
これによって、DRAMをパイプライン動作させることが可能になった上、いろいろな動作をさせやすくなりました。書き込み/読み出しのデコードが必要→じゃあ他の動作をする命令も使えるようにできるじゃん、という流れっぽい。
そういうわけで、非同期ではなく同期させた、SDRAMの方が凄くなったのでした。

DDRのバージョン

現在、DDR4まで出ています。各バージョン同士に互換性は無く、完全に新しいものになっています。
さて、DDRでは「DDR4-XXXX PC-YYYYY」のような表記をします。XXXXがメモリチップ規格、YYYYYがメモリモジュール規格です。

メモリチップとメモリモジュール

メモリチップとは記憶素子、メモリモジュールとはメモリチップを複数まとめて配線、接続端子を付けたものを指します。メモリモジュールの上にメモリチップが乗っている、というのが正しい。
というわけで、XXXXは動作周波数(=記憶素子の動作速度、MHz単位)、YYYYYは転送速度(モジュール全体の動作速度、MB/s単位)を表しています。

最新

今のところこんなのがあるようです。
DDR4最速更新で4266MHzに到達、一番乗りはまたもG.Skill「Trident Z」シリーズ | Ark Tech and Market News Vol.300249
……なんだこりゃ。メモリチップ最速はだいぶ凄いことになっているらしい。他のものを価格.comとかで見てみると、速いものでDDR4-3200 PC4-25600が見つかる。うーん。最先端のぶっ飛びようも凄いけど、一般に出回ってるのも凄いっぽい。ま、自作する予定は今のところ無いんですけどね(

明日

というわけで、DDR SDRAMについてざっと調べてみました。穴はそこかしこにありますが(各バージョンの違いとか見てないし)、自作勢とそこそこの会話が出来る……かも?
バス、メモリ周りを調べてきたので、次はちょっと毛色の違うものを調べたい。というわけで、GPUについて見てみたいと思います。そのうちまた分からないワードやらなんやらが出てきたときに、これまでの話題の復習兼補習をしようかな。

本日の教養:QPI

コンピュータ内部のあれこれ

昨日はコンピュータの外、バスやインタフェース(SATAとか)を書いたので、今日は逆に内部に目を向けます。
PCI-Expressの詳しい仕様とか書こうと思ってたけど、今日はもう眠い。また今度。

チップセット

とは

何らかの機能を持つ集積回路。コンピュータアーキテクチャでは、CPUと各外部装置を繋ぐバス上にある、制御装置と思っておけばいいのでは。
役割は、データ転送に関係する制御をすること。ちゃんと言っておかないと、確かにそういうものがあるのは分かるけど何のためなの、ということになってしまう……。

ノースブリッジとサウスブリッジ

http://www.pc-master.jp/jisaku/image/chipset2.jpg
参考文献(pc-master)より画像を引用。
マザーボード上には2種類のチップがある。それがノースブリッジとサウスブリッジ。図の接続順はちゃんと覚えよう。CPUとノースブリッジが繋がっていて、「ノースブリッジと」サウスブリッジが繋がっている。CPUとサウスブリッジは直接は繋がっていないので注意。
速く動作させたいものはCPUに近いノースブリッジに接続する、ということだけ覚えておけば後はどうでもいいかしら。マウスなんざサウスブリッジで、みたいにすぐ推測できるだろうし。
それぞれMCH(Memory Controller Hub)、ICH(I/O Controller Hub)と呼ばれることも。GPU内蔵のMCHをGMCHとも言うらしい。
ちなみに、信号変換するときの変換器をブリッジということを思い出せば、「ブリッジ」というネーミングも納得できるんじゃないかと思いますです。

実際

さっきまでのは古い話。一部のプロセッサでは、ノースブリッジはCPU中に含まれるようになった。
その結果、メモリは直接CPUから専用のバスで接続されるようになった。

FSBとBSB

現状をまとめると、
メモリ ←→ CPU ←→ チップセット
となっているわけです。実際にはメモリとCPUの間にキャッシュがあるので、
2次キャッシュ ←→ CPU ←→ チップセット
です。1次キャッシュはCPUの内部にあります。チップの外にあるとそれだけでアクセスに時間がかかるので。
左側のバスをBSB(Back Side Bus)、右側のバスをFSB(Front Side Bus)と呼びます。ノースが有るものと無いものとがあるので、右側の接続先は「チップセット(ノースかもしれないし、ノースは取り払われて直接サウスかもしれない)」としてあります。

QPI

出ましたよ出ましたよ! 本日のメインです!
FSBに変わる、めっちゃ速い接続技術。……ざっくりしすぎ?
CPUとチップセットだけを繋ぐわけではないんです。
今時のパソコンは複数コア(multi-coreであってmany-coreではないです)が普通という凄い時代。そのコア同士、コアとチップセット、いろいろなところを繋がなければなりません。
え、コアって独立だろうしコア同士は繋がなくていいんじゃないの、と思った人は教養が足りません。一緒に勉強していきましょう。
例えばマルチコアのプロセッサを初期化するとき、そのうちの一つでOSを起動し、その他をmaster-slave式に起動します。OSを起動し、その他に初期化信号を送るプロセッサをBSP(BootStrap Processor)、BSPに従って初期化されるプロセッサをAP(Application Processor)といいます。
この辺はMPInit(Multi-Processor Initialization)とかで調べると出てきます。Intelの仕様書見てみるとどんなことしてるのか分かって面白いかもですよ!
ともかく、初期化や割り込みなど、各プロセッサをOSが制御する以上、CPU同士も接続されていなければなりません。それらをまとめてFSBが繋いでいました。
でもこれだと速度が出ない! というわけで、point to point、つまりそれぞれを直接接続する技術がQPI。共用バスを使うのではなく、QPIによるネットワークを構築することで様々なデバイスにアクセス可能にするそうです。
2.4~3.2GHzで動作、19.2~25.6GB/sの速度で転送できるそうです。すげぇ……。

メモリアクセスの高速化

っておい! メモリの方にQPI関わってねぇじゃん! ……と思ったのですが。
どうやらそういうことではなく、MCHにあったメモリコントローラがCPUに統合されたことで、他へのアクセスとメモリアクセスを完全に分離できたことが大きかったようです。帯域を余計なアクセスに圧迫されて、高速なメモリアクセスが出来なかったのを解消したらしい。
この分離=QPIの採用、というのが本当のところ。QPIが速いからメモリアクセスも速い、というわけじゃないんですね。別の理由でメモリアクセスが高速になっていたのか。

偶然手に入れた情報

次の画像をどうぞ。pcsyosinsya.comさんより引用。
http://pcsyosinsya.com/MEMORY1.gif
この黒いいっぱいあるデカいの、全部メモリです。つまり、実際のマザーボード上にメモリは複数あるんです。さっきの構造は変わらず、ひとつのCPUがいくつもの箇所のメモリを使える、と。
http://www.hpc-technologies.co.jp/image-3/Nehalem-illust/Nehalem-BlockImage.jpg
こちらはhpc-technologies.co.jpさんより引用。Nehalemというコードで開発されたIntelのCPUのアクセス速度を示した図です。「近い」メモリと「遠い」メモリがあるのが分かるでしょうか。遠いメモリにアクセスするにはQPIを介していることが分かればいいかなと思います。ここが速ければメモリアクセス速度も上がりますよね。
Nehalemについての説明は省略。……いつかやるかな?
QPIがメモリアクセスを直接高速化する場合もあるようです。こっちはあまり理解できていないので、機会があればまた取り上げたいと思います。

明日は?

先生に「QPIとかその辺でメモリアクセスって速くなってるよね」と言われたので昨日今日とこういうテーマでやってました。でも実際のとこは違うじゃん!
そういうわけで、明日はDDRでも取り上げようかと思います。踊る方じゃないですよ。
それでは。そうそう、明日はピーターラビット展に行くことになりました。楽しみ。

本日の教養:バスと接続インターフェース

久しぶりに

ここしばらく、院試に卒論(中間報告)に忙しくて大したことができず……
しかも卒論のこと調べる上で自分の知識不足を痛感することになってしまいました。
そんなわけで、これからは1日1本……を目指して何かを書いて、何かしらの教養を得ることにします。
宣言しとけばちゃんとやるよね、自分よ。
でもあんまり忙しいときはしゃーないので無理せず、簡単なことを書きます。とにかく書く習慣は残したい。

バスとインターフェース

本日のテーマはこれ。
あんまり詳しいことは無視して、概要だけ。バスのピン数とか速度とかいちいち書いてても覚えられないってばよ。
詳しい仕様も省略します。だってそこに出てくるワード説明すんのめんどいもん。
あと、略語には必ず元の言葉を入れます。アクロニムって元が分からないと意味も分からないし覚えにくいですからね。

バス

バスって?

データを送るための信号線。導線だよ。
あんまりいっぱい用意すると邪魔なので、いくつものデバイスで共有するのが普通。共有していることを強調したいときには共有バスとか呼ばれる。
図にするとこんな感じ。Wikipediaの画像を引用。

https://upload.wikimedia.org/wikipedia/ja/4/43/Bus.png

所詮は線。とはいえ、何本あるのか、それぞれなんのためにあるのか、どうやってバスの使用権を制御する(バス調停機能)か、というところで規格同士の差異がある。

バス幅

何本の線でバスを構成しているか。バス幅16bitと言ったら16本ある。

PC/AT(The Personal Computer for Advanced Technologies 5170)

昔々のとあるパソコン。
PC/ATと互換性のあるデバイスやアーキテクチャなどをPC/AT互換機とかいう。でも実際には後方互換性なんか無くて、上位互換性を維持している、という程度のものが殆ど。
昔あった機能と同じものは入ってるよ(ただしめっちゃ改良されてる)、ってこと。

ISAバス(Industry Standard Architecture

バスの標準規格。PC/ATで採用されていたバスを標準として採用した(多少の改良はあったらしい)。
PC/ATで使われていた(ちょっと語弊があるけど)ことから、「ATバス」と呼ばれることもある。

MCA(Micro Channel architecture)

バス規格における、ISAの対抗馬。IBMによって作成された。でももう過去の遺物。

PCI(Peripheral Component Interconnect)

ISAバスは互換性の都合から速度を伸ばせず、MCAは特許料の都合から使いづらく。そこで新しくIntelなどによって作成されたのがPCI
汎用目的で、ピンを何にでも使える。バス幅は32bitか64bit。

PCI-Express

PCIとの互換性は無し。完全に新しい規格。
現在マザーボードとHDD、SSDなどの接続に使われる。
PCIと同様に汎用的。
レイヤーに分かれていたりとかなり複雑。その分"""強い"""。

通信インターフェース

バスに対してどう接続するか、というところ。
バスが提供する線はただの線ではなくて何らかの役割のある線(給電用の線とか接地用の線とかデータ転送用線とか)なので、そのどの部分をどうやって使うかという話。
とはいえその辺は省略。主なものの名前だけ出します。

IDE(Integrated Drive Electronics)

Compaqという会社が、開発したパソコンにおいて使用していたもの。

ATA(Advanced Technology Attachment)

IDEを元に作成された共通規格。単にATAといった場合、パラレル通信を行うこの規格を指す。区別するときにはパラレルATAとも。

パラレル通信

複数の線を用いて、データを一斉に送る方式。

SATASerial ATA

パラレルATAを改良したもの。パラレル通信ではクロックスキュー(信号が到達する時刻が信号線によってずれる問題)があるため、通信速度が上げにくい。
じゃあもう一本でよくね、という話。
現在、HDDとマザーボードを接続するときに使われている。

シリアル通信

一本の線に順番にデータを送る方式。区切り(クロック)も送る必要がある。

明日の予定

名前出すばっかりで終わってしまった。これではにわか止まりで教養があるとは言えない。
というわけで明日は今日の内容をもっと掘り下げたい。あと、チップ外の話ばっかだったけどQPIとかその辺も調べたい。

その他の偶然手に入れた情報

クリーンルーム設計

ある製品をリバースエンジニアリングし、それとは独立したチームが再設計を行う手法。
特許のある製品と同様のもの(完全に一緒ではない)を作るときに有効。
リバースエンジニアリングそのもののヤバさはさておき。

ベンダーロックイン

ある独自規格の製品を採用した結果、他の製品に乗り換えられなくなってしまうこと。
なんとかSoft Officeとかまさにそんな感じっぽい。
独占禁止法に引っかかりかねないらしい……けど、(少なくともMSOfficeの件は)利用者の能力不足が悪いと思うな。ソフトウェアはだいたいなんとかなるはず。
ハードの方は確かに問題。大量の物理資源を導入する際には互換性を気にしましょう、ということですね。

トポロジー

位相幾何学。ってそんなのは(少なくとも調べれば)誰にでも分かる。
幾何学=構造、ってことで、構造を指すときに使うことがある。ひとつの資源をいくつかのユーザーが交代で使うようなぶら下がり構造のときに、バス型トポロジーとか。

ベアメタル

むき出しの金属、という意味。
OSなどの入っていないハードディスクやコンピュータのこと。

ベアメタル方式

生のハード上にハイパーバイザーというプログラム(OSみたいなもの)を乗せて、その上で仮想サーバーを立ち上げる方法。
OSがあることで起きる悪影響(いくつかあるらしい。例えば他の仮想サーバーに処理速度を持っていかれるとか)を抑えられる。
このベアメタルサーバーを用いたクラウドサービスをベアメタルクラウドという。
でも最近では生のハードをそのまま用いたクラウドサービスのことをベアメタルクラウドということもあるらしい。解釈が分かれてクソっぽい。ワードはちゃんと使おうな。

レトロニム(retronym)

言葉の意味が変わったとき、原義を表すために新たに作られた言葉。
ベアメタルサーバー(原義)に新しく名前が付けば、それはレトロニム。
サファリ難民とかソフランとかにもレトロニムが出来ていい。

Vagrant使えないマン

簡単環境構築(大嘘)

えぇ(困惑)

進まないインストール

エラーメッセージも出ず、途中で固まるんですよね。
qemu-system-x86_64のインストールで死んでるっぽい。あるいは続いているけど遅い……?
調べてもよく分からないので明日まで待とうと思いまする。
12時間動かして終わらないは流石にダメな気がする。うーん。

ボルテ

初めて15を初見で接続しました(Paradission)。緊張した結果だいぶ早押しになって、FAST:74 LATE:3とかいうことに。鳥にはなりませんでしたとさ。
それでもかなり吃驚&嬉しい。自分の中ではかなりの快挙でした。やったぜ。

しづねちゃん昇格

銀AAA

やっとこAAAまで来ましたよん

ゲームの繋がり

よく行くお店(音ゲーメンテは別に良くない、というかボルテに至っては劣悪)で、店員さんと割と仲良い感じになりました。
お互いしづね使いってことでいろいろ教えてもらったり。あっちは金ランクなので、すごく参考になります。バーストしてもらったりもしました。
ゲームを介して交流が出来るっていいですね! ゲームというか、ゲーセンってそうあるべきだと思います。みんな楽しく。

今後

院試&卒論中間報告orz
でももうちょっとだけガンストやりたい。とりあえず今日か明日にでもまた時間貸ししてランクブチ上げるぜい!
今作というか、最終的には金中位くらいになりたい。
金になれたら、また茉莉ちゃんを使うのも視野。だってづねちゃんポイント稼ぎにくいんだもん(今はキャラ愛で乗り越えてるけど)。

プラチナGSの人も結構いるみたいだけど、この後のランク追加どうなるんだろう?
もうひとつプラチナの上が出来るのか、はたまたプラチナとかに属さない「EX」みたいなランクが出来るのか。
トップ層はどこまで行くのやら。