スポンサーサイト

  • 2017.03.28 Tuesday

一定期間更新がないため広告を表示しています

  • 0
    • -
    • -
    • -

    【PS4/XboxOneの鍵】GPGPU性能引き上げのカギとなるCPUとGPUの連携

    • 2014.04.25 Friday
    • 18:56

     そもそもGPUが単に2Dグラフィック出力を行なうデバイスだった時代には、CPUとGPUの間の連携を考える必要はあまりなかった。

     というのはGPUは出力専用デバイスだったので、CPU側は単に描画コマンドをGPU側に投げるだけで良く、CPUが受け取るのは最終的に描画コマンドの完了通知だけであった。これは極端な話、割り込みを1つ受けるだけでも済むから、帯域云々の議論は皆無だ。CPUは自分の都合で処理を進め、GPU向けの描画命令を作り終わったらまとめて渡すという流れである。よって、GPUに求められることは、まずは「いかに受け取った処理を速やかに終わらせるか」で、次が「いかにCPUの処理負荷を減らすか」である。この2番目が、2Dの描画アクセラレータとして実装された要因である。

     しかし3Dになると少しだけ話が変わってきた。というのは描画命令に加えて、3Dのポリゴン表面に貼り付けるテクスチャデータが必要になったからだ。このテクスチャデータはものによっては非常にデータ量が多い。ビデオカードのオンボードメモリには乗り切らない可能性もあり、かつ処理に応じて任意のテクスチャを貼り付けるので、これをCPU側で管理するのは難しい(よって処理が間に合わない)恐れがあった。

     そこでIntelが音頭を取って開発したのが「AGP」である。テクスチャそのものは本体のメモリ上に格納しておくが、必要に応じてGPU側にDMA(Direct Memory Access)で高速に転送できるようにする、という発想で作られたものである。

     最初のAGP 1Xの転送速度は266MB/secで、以後2Xで533MB/sec、4Xで1.06GB/sec、8Xでは2.13GB/secまで転送速度は引き上げられたが、面白いのはこの速度はあくまでCPU(より正確にはメモリ)→GPUの速度であって、逆にGPU→CPUの転送速度は1X〜8Xの全てで266MB/secで固定されていた。要するに必要なのはCPU→GPUの速度であって、逆はどうでもいい(これは言いすぎかも知れないが)というわけだ。

     余談になるが、これで効果があったかといえば、あまりなかった。というのは、AGPが登場したのは1996年のことだが、この時期の代表的なビデオカードの1つということで、AGP 2Xに対応したNVIDIAの「RIVA TNT」のオンボードメモリの帯域は880MB/sec、AGP 4Xに対応した「RIVA TNT2」では2.4GB/secに達しており、AGPの転送速度の2倍以上になっている。搭載メモリ量もRIVA TNTで8〜16MB、RIVA TNT2で16〜32MBになっており、当時の3Dゲームのテクスチャを格納するのは十分なサイズだった。

     これは続く世代でも同じで、結局3Dゲームの必要とするメモリ量に合わせる形でオンボードメモリを増やしてきた(もしくはオンボードメモリ量の増加傾向を見越してゲームが構成を変えてきたのかも知れない)結果、AGPは3Dゲームのロード時にまとめてテクスチャの読み込みを行なうのに使われる程度で、ゲーム中にAGP経由で新規のテクスチャをロードするといった使われ方はほとんどなかった。これはその後、AGP 8X→PCI Expess Gen1に切り替わった時も、帯域は理論上倍(AGP 8X:2.13GB/sec、PCIe Gen1 x16:4GB/sec)になったにも関わらず、ゲーム性能に全く影響しなかった事からも窺い知れる。

     実のところ、こうした状況は現在もあまり変わっていない。例えばSLIやCrossFireを構成するとき、PCIe x16ではなくPCIe x8+x8、あるいはPCIe x8+x4+x4構成で接続したり、あるいはスロットこそx16相当ながら内部には信号がx1しかきてないといったマザーボードを使ったりしても、性能の劣化はほとんどないあたり、要するに1度GPUで描画を始めてしまうと、いちいち通信なんかしない(したら遅くなる)。結果的にインターフェイス速度は描画を始める前しか影響がないわけで、その意味で言えば、こと3D描画に関する限り、CPUとの連携とかを考えてもあまり意味はない(AMDのMantleはまた別の話である)し、もちろんデータ量やピクセル数、トライアングル数やテクスチャなどの絶対量が1996年ごろから桁違いに増えている昨今では、それなりに高速なインターフェイスは必要なものの、相変わらずCPUとGPUはある意味独立して動いていると言ってそう間違いではない。

     こうした話が変わってくるのは、GPGPU的な要素が出てきたからだ。GPUとして使う場合、演算結果(つまり最終的に生成した映像)をCPU側に戻す、という処理は基本的になかったが、GPGPUとして使う場合は演算結果を再びCPUに戻さなければならない。従って、まずはGPU→CPUの転送性能を上げなければならない。幸いにもAGPからPCI Expressに切り替わったことで、CPU⇔GPU間の転送性能は上りも下りも理論上同じになったから、特に戻しが遅い、というわけではなかった。

     次に、「そもそもPCI Expressが遅い」という話が出てきた。これには2つの側面がある。

     1つは絶対的な帯域である。最初のGPGPU向け製品となったNVIDIAのC870の場合、ピーク性能で430GFLOPSということになっている。すごくラフに、1FLOPS=32bit(4バイト)の結果を生成すると考えると、ピークで1.72TB/secの結果生成が行なわれる計算になる。もちろんオンボードメモリですらこんな帯域は持ち合わせていない(ピークで76.8GB/sec)から、演算効率をやや落とさざるを得ないのだが、オンボードのメモリは1.5GBしかないから、これを使い切ると当然ながらPCI Express経由でメインメモリに書き出さないといけない。こちらの帯域は(C870がPCI Express Gen1対応ということもあり)わずか4GB/secである。

     つまり、ある程度大きなデータ量の計算を行なおうとすると、430GFLOPSどころか1GFLOPS程度の性能に律速されてしまうことになる。この帯域のボトルネックというのは現在も引き続き存在するネックである。何しろPCI Express Gen2でも8GB/secだから2GFLOPS相当、Gen3でも16GB/secだから4GFLOPS相当にしかならない訳である。

     だからといってこれはどうしようもないので、プログラムの書き方を工夫して「なるべく転送を減らす」ことを心がけるしかない。例えば図1の様に「Y=AX^2+BX+C」という計算をGPUでやらせるのに、ベタに書いて、

    1.AとXを渡してAXの2乗を計算 
    2.BとXを渡してBXを計算 
    3.これをCPUでまとめてYを算出

    とやっていると、CPUの計算量も多いし、煩雑に転送が発生する。

     そこで最初にA/B/C/Xを全部渡し、全ての計算をGPUにやらせて、最後に結果だけ受け取るようにすれば、転送のオーバーヘッドが大幅に減る。ちなみに図1では、転送よりも計算の方が時間がかかるように描かれているが、実際には計算よりも転送の方が時間がかかる。どれだけ転送を減らし、まとめてGPUに計算させるかが、GPGPUのプログラミングでは大きなテーマになっており、これは今も変わらない。

    【図1】データ転送量を減らす工夫

     もう1つの側面は、同期の遅さである。例えば図2のように、CPUが複数のスレッド(これはNVIDIAやAMDが言うスレッドとは異なり、プログラム言語としてのスレッドの方である)をGPU上で動かすことを考える。こうしたやり方では、全てのGPUのスレッドには同程度の負荷を与えることで、特定のスレッドが長時間動くような事態を避けるように工夫するが、例えばオンボードメモリにアクセスが集中するから、スレッドによっては多少メモリアクセスの待ち時間が長くなって処理時間が増えるといったことは存在するので、各スレッドの終了時間は多少ばらつく。

    【図2】スレッドの待ち時間

     さて、終了するとスレッドからCPUに対して「タスク終了」の通知をするのだが、PCI Express(というか、I/Oデバイス一般)に、この通知の負荷が大きく、かつ遅いという問題があった。

     実はこれに対して最初に明確な解を持ち出してきたのはIntelである。2007年のIDF Beijingのプレス向け説明会において、「Geneseo」と呼ばれるPCI Expressのコプロセッサ向け拡張を明らかにした。要するにこれは、PCI Expressに色々と手を加えて、通知や同期のオーバーヘッドを大幅に減らそうという取り組みである。これは最終的に、PCI Express 2.1という形でPCI Express Gen2の拡張仕様として標準化された。「では昨今のGPGPUは全てこれを使っているか」と言えばさにあらず。提案したIntel自身も「Xeon Phi」ではこの拡張仕様に未対応だし、AMD/NVIDIAともに積極的に使おうという動きを見せていない。

    GPGPUで重要になるCPU-GPU間の通信

     ということで、ここからが本題である。CPUとGPUの連携に関して、最初に動いたのはAMDである。AMDによるATIの買収は、単にGPUコアを入手するだけでなく、将来、アクセラレータとしてGPUを使うことを想定してのものであったのは、後藤氏のこちらの記事にもある通り。実際に、買収直前に行なわれたインタビュー記事を読み直すと、趣深いものがある。

     ただ、このインタビューの中で故Phil Hester氏(2013年9月に逝去された)が述べていた「将来、もっとタイトな統合もできる」という話は、例えるなら図3のような構成であった。

    【図3】AMDが構想したCPUとGPUの統合

     要するにCPUパイプラインの中にGPU(=シェーダ)を組み込むといったものだ。もっともこの図はあくまでもCPUから見たGPUのポジションを示しただけで、GPUはGPUでデコーダ/スケジューラ/ディスパッチャといったユニットを別途持つ構想だったのかも知れないが、このあたりまでは不明だし、それはそれほど重要ではない。重要なのは、CPUとGPUが簡単にデータ交換や同期、メモリ共有を行なえる仕組みを持ち込むということである。

     AMDがやはり2007年に発表したSSE5はこの良い例で、16bitの浮動小数点演算やFMA(Fused Multiply Accumulate)命令などは、GPUとのデータ交換を前提にしたフォーマットと言っても過言ではない。最終的にAMDはSSE5を放棄してAVX互換としたが、拡張命令としてXOP/CVT16/FMA4を新たに定義した(こちらの記事を参照されたい)あたりは、このGPUとのデータ交換を引き続き重視していることの現れと考えて良いと思う。とはいえ、流石に図3のような構成を取るには、CPU側もGPU側も技術的な挑戦が多すぎるのは明らかで、もう少し現実的な路線にする必要があった。

     この「現実的な路線」の中には、外付けGPU(Discrete GPU)を統合することを放棄するという項目も含まれていた。先ほども書いたが、仮に同期の遅さを何とかして解消できたとしても、帯域の不足は補いようがないからだ。後述するようにメモリ空間を共有できるようにした場合、キャッシュコヒーレンシを取るためには、PCI Expressは絶望的に遅すぎる。そこでAMDは、オンチップのグラフィックに限った形でCPUとGPUの統合を進めることにした。

     ここからAMDはしばらく苦闘することになる。2008年末に発表されたロードマップで、APUという名前になった最初の製品が登場するのは2011年と予告された。最初のシリコンのお披露目は、2010年のCOMPUTEXのタイミングで行なわれている。ただ、このときの「Llano」はCPUとGPUが一体でダイ上に搭載され、かつメモリコントローラが共通化されたのが主要な特徴であるが、逆に言えばそれだけという言い方もできる。内部構造については下記の記事に詳細な解説があり、この世代のCPUとGPUの連携に関する特徴の最大のものは下記記事中の冒頭の図「Llanoのアーキテクチャ」に集約されているとも言える。具体的に言えば、「Onion」と「Garlic」という2種類の内部バスが混在していることだ。この理由については、下記の2番目の記事に解説があるが、もうちょっと基本的なところから説明し直したい。

     「Fusion」という名前で統合のプランを練ったCPUとGPUは、最終的にOpenCLをベースとした「HSA」(Heterogeneous System Architecture)という形で統合されることになった。OpenCLは、図3に出てくるような命令セットレベルより、もう少し大きな枠での処理分散の仕組みになる。ちょっと記事が前後するが、HSAの核となるのはHSAILと呼ばれる中間言語で、このHSAILがハードウェアの差異(例えばCPUとGPU)を吸収してくれる。具体的な実装はこちらの記事に詳しいので、ここではその詳細は置いておく。要点は、HSAILを利用することで、アプリケーション的にCPUとGPUの差異がなくなっていくことである。

     こうなってくると、これまでGPGPUをPCI Express経由でアクセラレータ的に使ってきたスキームでは効率が悪い。まずはメモリの問題。PCI Express経由とする場合、GPUはあくまでもI/Oデバイスの扱いになる。その場合、GPUがアクセスできるメモリ空間に限りがある。図4は簡単な模式図であるが、物理メモリはプログラム(=プロセス)に割り当てられるメモリ空間と、I/Oデバイスに割り当てられるI/O空間という2つに分割される。

    【図4】CPU、GPUがアクセスできる領域

     CPUはどちらにもアクセスできるが、GPUの方はI/O空間のみにしかアクセスできないという問題がある。「ではプロセスもI/O空間だけを使ってプログラムを走らせれば?」というのは無理な相談で、元々この領域はI/Oデバイスとの通信用に設けられた特殊な領域なので、プロセスからアクセスはできるといっても、本来のメモリ空間と同じように扱えるわけではない。よって、旧来の方式では、

    1.CPUが元データをメモリ空間からI/O空間にコピー 
    2.I/O空間にGPUがアクセスして処理を行ない、I/O空間に結果を書き戻す 
    3.CPUが結果をI/O空間からメモリ空間にコピー

    という面倒な手順になっていた。ところがHSAの環境は、そもそもこうしたCPUの介在なしにGPUが直接メモリ空間からデータを取得し、かつ結果を格納できることを前提としたものである。そうでないとオーバーヘッドが大きすぎて困るからだ。

     そこで、従来型のアクセスに加えて直接メモリ空間にアクセスできるための機能をGPUに追加しよう、という話になるのだが、ここで問題になるのは

    ・ページフォールト機能の追加 
    ・キャッシュコヒーレンシ機能の追加

    となる。

     まずページフォールト。CPUコア上で、あるプロセスがある仮想アドレスにアクセスしようとして、その仮想アドレスが物理メモリにマッピングされていない場合、CPUはページフォールトという割り込みを発生させる。これを受けて、OSがその仮想アドレスに物理メモリを割り当てるわけだが、GPUにもこれと同じ機能が必要になる。ところがI/Oデバイスがページフォールトを起こすことは、従来の構造ではそもそも考慮していなかった。そこで、既存のI/Oデバイス用のMMU(Memory Management Unit:メモリ管理ユニット)を拡張し、I/Oデバイスからのページフォールトを受け付けるような拡張が必要になった。これが「IOMMU v2」と呼ばれるものである。

     次はキャッシュコヒーレンシについて。既存のマルチコアCPUでは、CPUコアに付属するキャッシュ(L1/L2キャッシュ)についてはキャッシュコヒーレンシが保たれている。日本語では「キャッシュの一貫性」と訳す。例えば図5のような構造を考えてみよう。4コアのCPUだが、1コア毎に共有L2キャッシュを持っているケースだ。

    【図5】キャッシュコヒーレンシの概念

     ここでCPU #1があるメモリ領域に対して書き込みを行なったとする。その場合、まずはL1キャッシュに書き込まれ、これはL2キャッシュ経由でメモリに書き出される(図5-1)。この時に、もしCPU #2〜#4が同じメモリ領域をキャッシュしていたとすると、実際のメモリの値とそれぞれがキャッシュしていた値が食い違うことになる。そこで、こうしたケースではそれぞれのキャッシュに対して、同じ値になるように書き換えを行なう(図5-2)。これにより、全てのキャッシュの内容に食い違いがないようにする(一貫性を保つ)というメカニズムがキャッシュコヒーレンシである。さて、ここまでは話が単純であるが、ここにGPUが加わると、今度はCPU⇔GPU間のキャッシュコヒーレンシも取るような仕組みが必要になる。

     「取るような仕組みが必要になる」とさらっと書いたが、これを実現するためにはAMDとしても3世代に渡る実装が必要になった。「Llano」→「Trinity」→「Kaveri」とどう進化したかは下記の記事に詳しい。

     簡単にまとめると

    Llano:Onion/Garlicの2つの内部バスを設けることで、GPUコアのメモリへの広帯域アクセスと、限定的なGPU→CPU方向のキャッシュコヒーレンシを取る仕組みのみが実装された。

    Trinity:基本構成はLlanoと変わらないが、IOMMU v2が実装されてGPU側のページフォールトがハードウェアレベルでサポートされた。またOnionのバス幅が倍増された。

    Kaveri:新しく「Onion+」というバスが追加され、CPU→GPU方向のキャッシュコヒーレンシを取るための仕組みが実装された。

    といった形だ。

     ちなみにKaveriもまだ、ある意味で中途半端である。先の図5に戻るが、図5-1であるメモリ領域が変更された場合、図5-2で「そのデータをキャッシュしている場合に書き戻しをかける」(この操作をスヌーピングと呼ぶ)のだが、このスヌーピングの際には一般に「そのアドレスをキャッシュしているかどうか」を確認する方法が必要になる。なぜならある領域を書き換えたときに、無条件にそのほかのコアのキャッシュに書き換えリクエストを出していたら、トラフィックが膨大な量になるし、そもそもそのアドレスを、もしキャッシュしていなかったとすれば、スヌーピングそのものが無駄になるからだ。

     ところがKaveriの世代においても、CPUからGPUのキャッシュ領域を確認することができないので、そのままだと猛烈なトラフィックが発生することになってしまう。これを避けるため、KaveriではOnion+を経由する場合は、GPUのL2キャッシュをバイパスするという形で実装を行なっている。このあたりがまだKaveriと言えど完全なヘテロジニアス構成にはなりきっていない部分ではあるのだが、このあたりを解決するにはもう少し時間が必要になるであろう。

     ただ、不十分であっても一応HSAの基礎が整ったことで、CPUとGPUで付加分散を行なう仕組みが整ったことになる。これに併せて「hUMA」や「hQ」といった仕組みもKaveriに入れ込んだ事で、OpenCLベースのTaskに関する限り、CPUとGPUを並列に扱えるようになった。

     現在のAMDの問題は、ハードウェアよりもむしろソフトウェア面である。先にGPU側のページフォールトが「ハードウェアレベルで」サポートされたと書いたのは、ソフトウェア側の対応がまだ整っていないためだ。これはOS側の問題であり、実のところ現在のWindowsではHSAをフルに活用できない。これに関してはAMD単独ではどうしようもなく、色々OSベンダーと協議しているとは言っているが、具体的な実装スケジュールなどはまだ明確ではない。

     こうしたAMDの動きとは対照的に、後手に回ったのがNVIDIAである。CUDAがアクセラレータとしてGPUを利用するAPIとして広く普及してしまい、逆にこのモデルからの脱却が難しくなった、という側面もあるのだが、最大の理由はGPUしか持っていない(CPUを持ち合わせていない)点にある。もちろん2010年にPC向けチップセットから撤退を表明する前に、ARMベースのSoCに製品展開を切り替えて行なったのは以前こちらの集中講座で紹介した通りだ。

     ただ現在の「Tegra」シリーズは、製品ターゲットがモバイル向けとなっていることもあり、絶対的な性能は低い。少なくとも同社の「Tesla」のホストとして動かせるようなCPU性能もI/O性能も持ち合わせていないから、モバイル向けはともかくHPCなどCUDAの主戦場では引き続きIntelのプラットフォームを利用する必要がある。そうなるとPCI Expressベースのアクセラレータカードという以上のものに進化するのは物理的に難しい状況である。

     ただそのままの状況を放置する訳にも行かないので、アクセラレータとしての性能を高めつつ、かつCUDAの構成を少しずつほかの環境に対応出来るように切り替えてゆく必要がある。その兆候は例えば下記の記事からも読み取れる。

     PCのメモリとコヒーレンシを取るなど高速な転送を行なうことが短期的に不可能であれば、とにかくカードの上に大量に高速なメモリを積むことで性能を改善するしかなく、そのための策がTSV(Through Silicon Via:シリコン貫通ビア)を使った3DスタックドDRAMの利用や「OpenACC」の推進である。

     このうちTSVの3Dメモリは、2013年のGTCにおいて、「Volta」で実装されることが明らかにされた。また、Voltaと同じ時期に投入される、次々世代のTegraであるPascalが、やはりこの3DスタックドDRAMを利用することが明らかにされている。

     またCPUとの協調に関しては、Maxwell世代からCPUコアを統合していく方向になっており、おそらく2015年に投入されると予想されるMaxwellのハイエンドGPUには同社の「ARM v8」コアである「Denver」ベースのものが搭載されるだろう。もちろんこれに関しても、AMDと同様にキャッシュコヒーレンシに関する仕組みを仕込んでいく必要はあるが、CUDAそのものがまだHSAほどCPU/GPUの協調動作を前提としていないから、それほど複雑な仕組みは「今のところ」必要ではない。これに先立って、2013年5月に発表されたCUDA 5.5ではARMへの対応が実装されている。現実問題、CUDAを利用するためにはG80系以降のコアが必要であり、G70ベースのTegra 4までは意味がない。Tegra系では「Tegra K1」が初のCUDAベースの製品となるが、MaxwellへのDenverの実装もこれに準ずる形になるのではないかと思う。

     さらに、よりハイエンド向けにNVIDIAが発表したのが「NVLink」である。こちらの記事に詳細があるが、GPU-CPUおよびGPU-GPU用のインターコネクトであり、IBMのPowerプロセッサがこのNVLinkに対応することも報じられている。

     NVLinkの詳細は不明(物理層はともかくプロトコル層が非公開)なので断言はしにくいが、少なくともPCI Expressの延長にはないようだ。ということは、NVLinkで接続されたデバイスは、既存のカードと異なりI/Oデバイスの扱いにならない可能性がある。PCI Expressでは不可能だったキャッシュのスヌーピングなども実装出来る可能性がある。またNVLink自体は信号速度も高速であり、80〜200GB/secという帯域が可能となっている。これは3DスタックドDRAMに比べれば遅い(こちらは1TB/secを狙わんばかりの勢いだ)が、旧来のPCI Expressに比べればずっと高速であり、PCI Expressと同じような使い方をしても大幅に実効性能を引き上げられることを期待できる。

     AMD/NVIDIAともに、GPGPUの性能をどう引き上げるか、という根本部分は同じなのだが、解決法が大幅に違うのが面白いところである。最大のポイントは、すでにCPUを持っているか否かで、これがそのままソリューションの違いとして見えているわけだ。最近AMDはHPCマーケットを捨てた、という言われ方がしばしば(HPC業界の人から)聞くが、AMDのソリューションはある意味で外付けGPUカードを捨てたソリューションであり、そう言われても仕方がないところだ。逆にNVIDAのソリューションはHPCに特化する方向に進んでいるとも言えるわけで、あとはそのマーケットだけで本当にビジネスができるのかが問われることになるだろう。

    ソースhttp://pc.watch.impress.co.jp/docs/column/1month-kouza/20140425_646073.html




    スポンサーサイト

    • 2017.03.28 Tuesday
    • 18:56
    • 0
      • -
      • -
      • -
      コメント
      Thought I would comment and say neat theme, did you code it on your own? It looks really good!
      Great, thanks for sharing this blog.Thanks Again. Will read on...
      Wow! This can be one particular of the most helpful blogs We have ever arrive across on this subject. Basically Magnificent. I’m also an expert in this topic therefore I can understand your effort.
      This is really nice to know. I hope it will be successful in the future. Good job on this and keep up the good work.
      I will immediately seize your rss as I can not to find your e-mail subscription link or e-newsletter service. Do you have any? Kindly let me realize so that I may subscribe. Thanks.
      Tammy this a wonderful blog submit! It is so nice when persons appreciate all that you do.
      Oh my goodness! an incredible article dude. Thanks However I'm experiencing problem with ur rss . Don? know why Unable to subscribe to it. Is there anybody getting identical rss drawback? Anybody who is aware of kindly respond. Thnkx
      Nice post. I learn one thing tougher on totally different blogs everyday. It should all the time be stimulating to learn content material from other writers and apply a bit of one thing from their store. I? choose to use some with the content on my weblog whether or not you don? mind. Natually I?l provide you with a hyperlink on your web blog. Thanks for sharing.
      There are certainly a whole lot of details like that to take into consideration. That is a great point to bring up. I provide the ideas above as normal inspiration however clearly there are questions just like the one you bring up where the most important factor shall be working in honest good faith. I don?t know if best practices have emerged around things like that, but I'm certain that your job is clearly identified as a good game. Each boys and girls feel the impression of only a second? pleasure, for the rest of their lives.
      Oh my goodness! a tremendous article dude. Thank you Nonetheless I am experiencing difficulty with ur rss . Don? know why Unable to subscribe to it. Is there anybody getting identical rss downside? Anyone who knows kindly respond. Thnkx
      When I originally commented I clicked the -Notify me when new feedback are added- checkbox and now each time a remark is added I get four emails with the same comment. Is there any approach you can remove me from that service? Thanks!
      There is noticeably a bundle to learn about this. I assume you made sure nice points in options also.
      I impressed, I must say. Actually not often do I encounter a blog that? both educative and entertaining, and let me inform you, you have hit the nail on the head. Your concept is outstanding; the problem is something that not enough people are talking intelligently about. I'm very blissful that I stumbled throughout this in my search for something regarding this.
      This actually answered my downside, thank you!
      I'm often to running a blog and i really recognize your content. The article has really peaks my interest. I'm going to bookmark your site and maintain checking for brand new information.
      It? arduous to find educated individuals on this matter, but you sound like you already know what you?e speaking about! Thanks
      Greetings! Really beneficial guidance on this informative article!
      I enjoy the efforts you have put in this, thanks for all the great posts.
      I will immediately seize your rss as I can not to find your e-mail subscription link or e-newsletter service. Do you have any? Kindly let me realize so that I may subscribe. Thanks.
      Tammy this a wonderful blog submit! It is so nice when persons appreciate all that you do.
      Greetings! Really beneficial guidance on this informative article!
      Thanks for the share!
      Its such as you read my thoughts! You appear to understand so much about this, like you wrote the guide in it or something. I think that you just can do with a few p.c. to drive the message home a little bit, but other than that, that is excellent blog. A great read. I’ll certainly be back.
      I have been browsing online more than 3 hours nowadays, but I by no means discovered any interesting article like yours. It is lovely value sufficient for me. Personally, if all site owners and bloggers made good content as you did, the internet will probably be much more useful than ever before.
      Thanks for the share!
      【PS4/XboxOneの鍵】GPGPU性能引き上げのカギとなるCPUとGPUの連携 | ノルドの漢はゲハが好き
      http://www.adidaseqtsupportadv.us/ adidas originals eqt
      http://www.monclers.fr/ moncler femme
      http://www.jordan-11.co.uk/ jordan
      http://www.goyard.in.net/ goyard tote
      http://www.nikeairmax-2019.us.com/ air max 2019
      http://www.yeezy.in.net/ yeezy shoes
      http://www.red-bottoms.us.org/ red bottoms
      http://www.nikeairmax270.ca/ nike air max
      http://www.long-champs.us.com/ longchamp handbags
      http://www.ultra-boost.ca/ adidas boost
      http://www.jordan11.us.com/ jordan retro 11
      http://www.pandoracanadacharms.ca/ pandora canada
      http://www.moncler-uk.co.uk/ moncler uk
      http://www.adidascanada-shoes.ca/ adidas
      http://www.birkenstock.com.co/ birkenstock shoes
      http://www.goyards.ca/ goyard canada
      http://www.airmax90.fr/ nike air max 97
      http://www.kate-spadepurses.us/ kate spade bags
      http://www.yeezy-500.us/ yeezy boost 350
      http://www.skechers.in.net/ skechers sneakers
      http://www.adidas--yeezy.co.uk/ yeezy 350
      http://www.nike--trainers.org.uk/ nike trainers
      http://www.airmax-2019.us.com/ air max 2019
      http://www.nmd.us.org/ nmd
      http://www.monclers.ca/ moncler coat
      http://www.adidasshoes-outlet.us/ adidas outlet
      http://www.mizunos.us/ mizuno wave rider
      http://www.doudoune-moncler.fr/ moncler femme
      http://www.fjallravenkankens.us/ fjallraven backpack
      http://www.fjallravenkanken-backpack.us/ fjallraven backpack
      http://www.philipppleinoutlet.us/ philipp plein
      http://www.adidaszxflux.us/ adidas flux
      http://www.lebron-16shoes.us/ new lebrons
      http://www.philipppleins.us/ philipp plein
      http://www.salomon.us.org/ salomon
      http://www.lebron16-shoes.us/ lebron shoes
      http://www.nikeairmax.fr/ nike air max
      http://www.newjordans.in.net/ new jordans
      http://www.yeezy-750.us/ yeezy boost 750
      http://www.nike-vapormax.ca/ vapormax
      http://www.mizuno-shoes.us/ mizuno running shoes
      http://www.airjordan11.fr/ jordan 11
      http://www.redbottoms-shoes.us.org/ red bottom shoes
      http://www.pandoraukcharms.org.uk/ pandora rings
      http://www.jordan11shoes.us.com/ jordan 11
      htt
      http://www.pandoraearrings.us.com/ pandora charms
      http://www.nikeair-max90.co.uk/ nike air max
      http://www.mcm--bags.us.com/ mcm handbags
      http://www.coach--bags.us.com/ coach bags
      http://www.vapormaxs.us.com/ vapormax
      http://www.ultra--boost.us.com/ adidas ultra boost uncaged
      http://www.air-max-95.us.com/ air max 95
      http://www.nikelebron15.us.com/ lebron 15
      http://www.valentino--shoes.us.com/ valentino heels
      http://www.salomon-boots.us.com/ salomon boots
      http://www.polo-ralphlauren-outlet.us.com/ ralph lauren
      http://www.katespadepurses.us.com/ kate spade bags
      http://www.birkenstock--sandals.us.com/ birkenstock outlet
      http://www.kyrie-4.us.com/ kyire 3
      http://www.louboutinredbottoms.us.com/ christian louboutin
      http://www.airmax90shoes.us.com/ nike air max
      http://www.air-max-270.us.com/ nike air max 270 women
      http://www.adidas-yeezyboost350.us.com/ adidas yeezy
      http://www.nike--shoes.co.uk/ nike outlet
      http://www.fitflop--sandals.us.com/ fitflop sale
      http://www.hermes--belt.us.com/ hermes belt
      http://www.true--religion.us.com/ true religion
      http://www.kyrie-irving-shoes.us.com/ kyrie 4
      http://www.ed-hardys.us.com/ ed hardy
      http://www.huaraches.us.com/ huaraches
      http://www.yeezyboost350--v2.us.com/ yeezy boost 350
      http://www.air-max-97.us.com/ air max 97 mens
      http://www.truereligion--jeans.us.com/ true religion jeans for women
      http://www.moncler-coat.us.com/ moncler jacket mens
      http://www.nikeairmax-95.us.com/ nike air max 95 mens
      http://www.salomonspeedcross3.us.com/ salomon xa pro 3d
      http://www.longchampbackpack.us.com/ longchamp backpack
      http://www.hermesbirkin-handbags.us.com/ Hermes Birkin Bags
      http://www.nikeairvapormaxflyknit.us.com/ vapormax
      http://www.adidasyeezy-350.us.com/ yeezy
      http://www.airmax-2018.us.com/ air max
      http://www.adidas-ultraboost.us.com/ ultra boost
      http://www.nikeairmax97.co.uk/ nike air max 97
      http://www.jordans11shoes.us.com/ jordan 11 retro
      http://www.cartier-bracelet.us.com/ cartier love ring
      http:/
      http://www.nike-airmax.ca/ nike air max
      http://www.pandoraukcharms.org.uk/ pandora uk
      http://www.nikeairmax.fr/ nike fr
      http://www.jordan11.ca/ new jordans
      http://www.jordanretro11.in.net/ air jordan
      http://www.balenciagas.co.uk/ balenciaga shoes
      http://www.jordan-11.fr/ jordan 13
      http://www.zxflux.us/ adidas flux
      http://www.adidaschaussure.fr/ adidas superstar
      http://www.monclers.ca/ moncler sale
      http://www.louboutin-shoesuk.co.uk/ louboutin trainers
      http://www.salomonshoes.ca/ salomon boots
      http://www.lebron-16shoes.us/ lebron 15
      http://www.giuseppezanottisneakers.us/ giuseppe zanotti sneakers
      http://www.salomonboots.co.uk/ salomon xa pro 3d
      http://www.uggboots-uk.co.uk/ ugg boots
      http://www.kd11-shoes.us/ kd 11
      http://www.birkenstock-sandals.ca/ birkenstock shoes
      http://www.yeezys.fr/ yeezy boost 350 v2
      http://www.red-bottoms.org.uk/ christian louboutin
      http://www.adidas--yeezy.co.uk/ adidas yeezy
      http://www.salomon.us.org/ salomon shoes
      http://www.longchampbags.ca/ longchamp backpack
      http://www.redbottom-shoes.co.uk/ louboutin shoes
      http://www.jordan11.us.com/ jordan
      http://www.kate-spadepurses.us/ kate spade outlet
      http://www.adidas-nmd.fr/ Adidas Nmd Femme
      http://www.long-champs.us.com/ longchamp backpack
      http://www.nikeoffwhite.us.com/ off white clothing
      http://www.katespades.co.uk/ kate spade bags
      http://www.adidas--trainers.org.uk/ adidas uk
      http://www.nikeairmax-2019.us.com/ nike off white
      http://www.nike-vapormax.ca/ nike air vapormax
      http://www.redbottomslouboutinshoes.us.com/ red bottom shoes
      http://www.yeezyboost-350v2.fr/ adidas yeezy
      http://www.chaussure-adidas.fr/ adidas
      http://www.nike-canada.ca/ nike canada
      http://www.salomon-chaussures.fr/ salomon speedcross 4
      http://www.nike--trainers.org.uk/ nike shoes
      http://www.pandora-jewelrys.ca/ pandora rings
      http://www.ultra-boost.ca/ adidas boost
      http://www.pandoras.in.net/ pandora bracelet
      http://www.adidasshoes-outlet.us/ adidas shoes
      http://www.yeezy.in.net/
      http://www.wholesale-nfljerseys.us/ NFL shop
      http://www.boseheadphones.us/ bose soundlink mini
      http://www.adidas-nmd.us.org/ nmd shoes
      http://www.bikiniswimwear.us/ Bikini Swimwear
      http://www.chaussures-salomon.fr/ chaussure salomon homme
      http://www.mizuno.in.net/ mizuno
      http://www.trajeshugoboss.com/ Trajes Hugo Boss
      http://www.nikeairmax2019.us.org/ nike air max
      http://www.fjallravens.us.com/ fjallraven backpack
      http://www.pumashoesoutlet.us.org/ puma shoes
      http://www.northfaces.us.org/ north face jacket
      http://www.soccerjerseys.us/ custom soccer jerseys
      http://www.airmax-270.us.org/ air max 270
      http://www.puma.in.net/ puma shoes
      http://www.nike-chaussure.fr/ air max
      http://www.nikeairmaxshoes.us.org/ nike outlet
      http://www.airmax-97.us.org/ nike air max 97
      http://www.eccoshoesoutlet.us.org/ ecco
      http://www.adidas-eqt.us.com/ adidas eqt support
      http://www.mlbjerseys-shop.us/ MLB jerseys
      http://www.ninewest.us.org/ nine west shoes
      http://www.calvinkleins.us.com/ Calvin Klein Dresses
      http://www.nmd.in.net/ nmd
      http://www.adidaszxflux.us.org/ zx flux
      http://www.offwhite.in.net/ Off White Hoodie
      http://www.katespadebags.us.org/ kate spade purses
      http://www.chaussurefila.fr/ fila chaussure
      http://www.jordan11shoes.us.org/ jordan 11
      http://www.braceletpandoras.fr/ bijoux pandora
      http://www.airmax-90.us.org/ air max
      http://www.zapatillas-adidas.com/ Zapatillas Adidas Mujer
      http://www.zapatossocceradidas.com/ Botas Adidas
      http://www.ultraboosts.us.org/ adidas ultra boost
      http://www.airmax-95.us.org/ nike air max
      http://www.clarks.in.net/ clarks outlet
      http://www.katespadepurses.us.org/ kate spade purses
      http://www.nbajerseys-store.us/ NBA store
      http://www.adidas-chaussure.fr/ adidas
      http://www.zapatillas-vans.com/ Vans
      http://www.chromeheartsnecklace.us.com/ Chrome Hearts Glasses
      http://www.coachbagsoutlet.us.org/ coach outlet
      http://www.converses.us.org/ converse outlet
      http://www.zapatillas-converse.com/ Converse All Star
      http:
      コメントする








          

      PR

      calendar

      S M T W T F S
      1234567
      891011121314
      15161718192021
      22232425262728
      2930     
      << September 2019 >>

      selected entries

      categories

      archives

      recent comment

      • 【まじで死ぬ程恐いゲーム登場】サイレンヒルの新作?「P.T」をプレイする奥様をとらえた動画が届きました...この驚きよう...ま、やればわかりますがマジ。
        jordan shoes (09/16)
      • 【速報】PSvita新作ソフト「ソウルサクリファイスデルタ」
        Supreme Clothing (09/15)
      • 【ゲーム版でも泣けるのか?】PS3版ウォーキング・デッド 日本語版PV『究極の選択』篇
        Vans Old Skool (09/15)
      • 任天堂勝利!!...と言ってもWiiUの話しではない。
        Curry Shoes (09/15)
      • 【XboxOne終了】PS4にドラクエ来ました!動画有り。
        jordan 7 (09/15)
      • 【スカイリムに次ぐお散歩ゲー認定!!】GTA5ファーストインプレッション
        Fila Shoes Womens (09/15)
      • カーゲー版スカイリム UBIの「The Crew」のグラが実写並に凄い!!次世代機マジでこれでいけるのか!?
        Fitflop Sandals (09/15)
      • PS4no筐体設計の秘密が明らかに!!驚愕のエアフロー!!
        Curry 6 (09/15)
      • どうぶつのもりの村人がスカイリムで大暴れ...村人が恐くてたまらなくなりました。
        Red Bottoms (09/14)
      • 【動画】寝てる子猫に遊ぶ子猫がかわいいと話題に
        Salvatore (09/14)

      links

      profile

      search this site.

      others

      mobile

      qrcode

      powered

      無料ブログ作成サービス JUGEM