l_n_m’s diary

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

本日の教養: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」みたいなランクが出来るのか。
トップ層はどこまで行くのやら。

ポップンミュージック

おいでよポップン

Append Travelでの名言。

1年半ぶり?

今日夕方にポケモンGOを街中で試しつつゲーセン行きました。
パセリが安かったので、ボルテのポリブレがてら久しぶりにポップンに手を出してみたり。
弐寺やら発狂BMSやらをやっていたせいか、何故か上手くなってて爆笑。
最初28とかを恐る恐るやってましたが、数クレ後には42とかやってました。

放置効果

……なんでしょうか?
昔、下北沢に通っていた頃には38くらいまでしか出来なかった記憶があります。防人恋歌クリアして万歳してました。
でも、今日は43も1曲クリアしてしまいました……
その曲は! 「つぼみ」です!!
jubeatでもEXCしていて思い出の曲。ドラマニでも下のレベルをたまに叩いてます。
適正レベルも42って言えるかもしれません。何曲かクリア出来ました。天空とか人魚少女とか。

目標?

そんなにちょくちょくやるとは思いませんが、一応これから目標にしたいやつらをば。

です。ハードゲージきっついですね。13ミスでココロコネクトEX落ちました。
まぁ、ポリブレ期間(もう終わるのかな)&ボルテログインスタンプの間はやりそう。
あんまりやらないゲームをちょっとだけやるのって楽しいですね!

おまけ

ボルテとガンストもちょっとだけ。
千客万来無問題が989→995になったり、クロインGRVが961→966になったり。曲大好き。
ガンストはあんまり進捗無いけど、店員さん(プレイヤーでもある)と会話しました。僕がもうちょっと上手くなったらバーストしてみたいですね。
ぼちぼちしづねちゃんがA帯に上がってくれそう。頑張るぞ。

キムチ鍋

夏と言えば鍋!

この季節になりました。鍋ですよ鍋! あっつい中辛いキムチ鍋に大量の肉を投入して喰らう! 最高の夏!
友達5人を招待して6人で僕の下宿で開催しました。いいですね。大学生してるって感じ。

買い過ぎ

これ。
食べ盛り(?)の男が5人いるんだからすぐ無くなるやろ! と思ったのに意外とそうでもない。
豚肉3kgは無くならなかった(1.5kg食べて終わった)。
去年もそうだったのよな~
一年前にも同じようなパーティーを男4人呼んでやったんですけど、同じ轍を踏みました。

まぁ、ゲテ鍋にならなかっただけよしということで……
豆腐とか僕のものになってしまいました。

近況!

院試に向けて準備だったり、就活終わりだったり、みんなそれぞれの人生を歩んでいるんだなーと感じました。
僕も院試に向けてお勉強しないといけないんですけど、やる気が……ぐぅ……
流石にマズいのでもうやります。マジで。
研究も進めないといけないのにな……

今度は

今日来られなかった人も何人かいたので、次は参加してほしいですね。都合があってくれることを期待!
旅行に行こうといいつつ2年が経過してしまったので、そっちも。
院生になった後だとたぶん就職組が辛いんだろうし、早めに企画したい……うーむ。

片付け、普段散らかってるので結構大変でした。何より、えっちな本やゲームを隠すのが、ね……
ところで、リリウム・トライアングルというゲームを一昨日の夜にインストールしたのですが、もうエンディングひとつ見ちゃいました。
ゆり! 可愛い! 最高! 綺麗! えっち! というわけで興味のある方は是非調べてみてください。
百合豚が見ると萌え死ぬと思います。