Update最後にこちらの話題に少しふれておきたい。Computingに関係するR&D寄りの話である。ComputingのためのProgrammingという話だ。parallelismという観点で論じている(Photo34)。これを支える方法として、既にいくつかの手法は実際に存在するが(Photo35)、ただこれらが普及しているとは言いにくいのも実情だ(Photo36)。parallelismはSSEに代表される命令を多用する話となる。Photo35:これとPhoto34の手法は、今のところ明確に区別できない。parallelismに分解するという方法になる。Parallelは、MATLABを使ったシミュレーションとか、大規模ベクトル演算位しかないのが実情だ。Photo36:直接的にPhoto35とこれが繋がるわけでは無いが、要するに新しい言語というか開発環境が出てきても、直ぐに普及するわけではない、という事をここでは言いたいようだ。したところに向けたIntelの開発プロジェクトがSTMとCt、Exoである。このうちExoは先にExoskeletonとしてこちらでレポートしているのでここでは割愛するとして、STMとCtについてもう少しレポートしたい。Photo37:あくまでこれはまだ研究途上の成果というレベルであって、本格的にこれで行ける、というものではないようだ。Memoryをソフトウェア側で実装する、という試みである。基本的なアイディアは、複数のThreadからのメモリのアクセス時に、そのTransaction管理を行おうというものであった。要するに複数のThreadから書き込みがあった場合、そこでCommitなりRollbackなりを掛けることで、予期せぬ値が書き込まれるのを防ごうというものだ(Photo38)。Memoryと名づけられた)ものだ(Photo39)。Section同様に扱えるという仕組みである。Photo38:ただし、DBの手法では一旦データを書き込んだ後でCommitを掛け、その戻り値でTransactionが成立したか失敗(Rollback)したかを判断する形になる。これをどうやってハードウェアで実現するかという点と、どの程度の粒度で制御を行うべきか(Bytes/bit単位では細かすぎるだろうし、Page単位では大きすぎる様に思われる)というあたりが課題となっている。Sectionの一種である。Photo40:単に__tm_atomicというディレクティブを定義しただけではなく、ランタイム側で色々やっている模様。Sectionの方がマシだったということにもなりかねない。このあたりをどう切り分けるか、も難しいところだ。いう部分に関してIntelが公開した説明はこちら(Movie01)。Memoryは干渉が起きそうな時だけ、自動的に調停を行ってアクセス順を定めるので、問題がおきにくいというアイディアである。Compilerのプロトタイプ版を公開しており、これを使ってのFeedbackを広く求めている状態だ。1.4MB)アイディアとしては面白いのだが、具体的にこれを内部でどう実装しているか、に関しては今回は一切発表がなかった。筆者が察するには、RuntimeのどこかでMemory管理を行うロジックが入っており、__tm_atomic{}ディレクティブ内部のアクセスは全てこのロジック経由でアクセスを行う様にしてあり、ここでアクセス調停を掛けるというあたりではないかと思う。Sectionをアプリケーションプログラマが意識する必要がないという観点では秀逸であるが、Commit/Rollbackモデルからすると一歩後退という観は否めない。あと、メモリ管理部分が最終的にボトルネックになりそうな気がする点もちょっと懸念事項だ。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。薄くて軽い外付けGPU、試してみるとハイパワーで便利。UpdateこのカテゴリーについてCPU、マザーボード、グラフィックスカードなど、各種パソコンパーツの製品情報から関連する最新テクノロジまで、パソコンの自作に関するさまざまな情報を発信。情報提供お詫びと訂正メールマガジンご興味に合わせたメルマガを配信しております。PC/デジタル、ワーク&ライフ、エンタメ/ホビーの3種類を用意。Corporation。