ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

投機的実行

索引 投機的実行

投機的実行(とうきてきじっこう、)とは、コンピュータに必要としないかもしれない仕事をさせることである。この性能最適化技法は、パイプライン化されたプロセッサなどのシステムで使われている Butler Lampson Microsoft Research OPODIS, Bordeaux, France 12 December 2006。.

22 関係: 並行性マルチプロセッシングマイクロプロセッサマイクロソフトリサーチバトラー・ランプソンプリフェッチファイルシステム分岐予測分岐命令命令パイプラインコンパイラ最適化コンピュータ先行評価副作用 (プログラム)CPU遅延評価計算資源記憶装置関係データベース管理システムHaskell楽観的並行性制御最適化 (情報工学)

並行性

並行性(へいこうせい、concurrency)とは、計算機科学において、時間的にオーバーラップして実行される計算を伴うシステムの属性であり、そのような計算ではリソースを共有することがある。並行計算は、同一チップ上の複数のコア、単一プロセッサ上のプリエンプションを伴うマルチスレッド、物理的に分離した複数プロセッサ上などで行われる。並行計算のための数学的モデルとして、ペトリネット、プロセス計算、並列ランダムアクセス機械モデル、アクターモデル、 などが開発された。.

新しい!!: 投機的実行と並行性 · 続きを見る »

マルチプロセッシング

マルチプロセッシング(multi processing)とは、(本来は)ひとつのプロセスだけではなく複数の並行プロセスを同一システム内で使用することを意味する。 マルチタスクと同様ひとつのCPUを複数のプロセスが共有することも示すが、ひとつのシステム内の複数のCPUが複数のスレッドを動作させることも意味する。マルチプロセッサと言う場合は一般に後者のみを指す。.

新しい!!: 投機的実行とマルチプロセッシング · 続きを見る »

マイクロプロセッサ

マイクロプロセッサ(Microprocessor)とは、コンピュータなどに搭載される、プロセッサを集積回路で実装したものである。 マイクロプロセッサは小型・低価格で大量生産が容易であり、コンピュータのCPUの他、ビデオカード上のGPUなどにも使われている。また用途により入出力などの周辺回路やメモリを内蔵するものもあり、一つのLSIでコンピュータシステムとして動作するものを特にワンチップマイコンと呼ぶ。マイクロプロセッサは一つのLSIチップで機能を完結したものが多いが、複数のLSIから構成されるものもある(チップセットもしくはビットスライスを参照)。 「CPU」、「プロセッサ」、「マイクロプロセッサ」、「MPU」は、ほぼ同義語として使われる場合も多い。本来は「プロセッサ」は処理装置の総称、「CPU」はシステム上で中心的なプロセッサ、「マイクロプロセッサ」および「MPU(Micro-processing unit)」はマイクロチップに実装されたプロセッサである。本項では、主にCPU用のマイクロプロセッサについて述べる。 当初のコンピュータにおいて、CPUは真空管やトランジスタなどの単独素子を大量に使用して構成されたり、集積回路が開発されてからも、たくさんの集積回路の組み合わせとして構成されてきた。製造技術の発達、設計ルールの微細化が進むにつれてチップ上に集積できる素子の数が増え、一つの大規模集積回路にCPU機能を納めることが出来るようになった。汎用のマイクロプロセッサとして最初のものは、1971年にインテルが開発したIntel 4004である。このマイクロプロセッサは当初電卓用に開発された、性能が非常に限られたものであったが、生産や利用が大幅に容易となったため大量に使われるようになり、その後に性能は著しく向上し、価格も低下していった。この過程でパーソナルコンピュータやRISCプロセッサも誕生した。ムーアの法則に従い、集積される素子数は増加し続けている。現在ではマイクロプロセッサは、大きなメインフレームから小さな携帯電話や家電まで、さまざまなコンピュータや情報機器に搭載されている。.

新しい!!: 投機的実行とマイクロプロセッサ · 続きを見る »

マイクロソフトリサーチ

マイクロソフトリサーチ(Microsoft Research、MSR)は、計算機科学に関するさまざまな研究を行う機関。リチャード・ラシッド博士がマイクロソフトに入社する条件として、同研究所の設立と、その独立性を約束させ、1991年9月に設立された。 名称からもわかるようにマイクロソフトの関連機関ではあるが、完全に独立した研究機関であり、そこで行われる研究内容については、たとえマイクロソフト本社の首脳陣であっても一切の口出しは出来ないことになっている。 世界でも最も有力な研究機関の一つである。現在、チューリング賞受賞者のアントニー・ホーア、フィールズ賞受賞者のマイケル・フリードマン、ウルフ賞受賞者のLászló Lovász、MacArthur Fellowship受賞者のJim Blinn(ジム・ブリン)、Dijkstra Prize受賞者のレスリー・ランポートらをはじめ、著名な物理学・計算機科学・数学の専門家たちが数多く参加している。 研究は大きく分けて11の分野にカテゴライズされている。.

新しい!!: 投機的実行とマイクロソフトリサーチ · 続きを見る »

バトラー・ランプソン

バトラー・W・ランプソン(Butler W. Lampson、1943年 - )は、アメリカ合衆国の計算機科学者。.

新しい!!: 投機的実行とバトラー・ランプソン · 続きを見る »

プリフェッチ

プリフェッチ(prefetch)、事前読込み(じぜんよみこみ)は、コンピュータで、将来に利用が予測されるデータを予め、より高速なメモリに読み込んでおき、性能の向上を図る動作である。 例として次のようなものがある。.

新しい!!: 投機的実行とプリフェッチ · 続きを見る »

ファイルシステム

ファイルシステムは、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。 より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ、階層構造、データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。.

新しい!!: 投機的実行とファイルシステム · 続きを見る »

分岐予測

ンピュータ・アーキテクチャにおける分岐予測(ぶんきよそく、Branch Prediction、ブランチプレディクション)とは、プログラム実行の流れの中で条件分岐命令が分岐するかしないかを予測することにより、命令パイプラインの効果を可能な限り維持し、性能を高めるためのCPU内の機能である。.

新しい!!: 投機的実行と分岐予測 · 続きを見る »

分岐命令

分岐命令(ぶんきめいれい)は、プロセッサの命令の一種である。ジャンプ命令ともいう。条件ジャンプ命令と無条件ジャンプ命令があり、厳密には「分岐」するのは条件ジャンプであって無条件ジャンプは「分岐」と言えないかもしれないが、特に区別しないことが多い。サブルーチン呼出や戻りの命令も分岐命令の一種とすることもある。 一般的なプロセッサでは、機械語の命令列はアドレスの昇順に逐次実行されるが、分岐命令が実行されると次に実行される命令が切り替わる。高水準言語のコンパイラは、条件文・Goto文・サブルーチンなどの制御構造から分岐命令を生成する。 分岐命令は引数として少なくともターゲットアドレスを持つ。ターゲットアドレスは、分岐命令の実行により、プログラムカウンタに代入される。 命令パイプラインが深い一方で、先読みが浅いプロセッサでは、ジャンプによりパイプラインにバブルが発生しペナルティとなる設計にならざるをえないことがある。そのペナルティを軽減するため、分岐命令の直後を「遅延スロット」と称し、そこにある命令は分岐処理の直前に実行されるものとする、遅延分岐という方式がある。MIPS、SH、SPARCなど、初期のいわゆるRISCに採用例が多いが、1986年にNECから発表されたμPD77230、1988年にTIから発表されたTMS320C30、デジタルシグナルプロセッサにも(その前から)多い。ディレイスロット(にある命令)の数は、μPD77320の場合で 1 、TMS320C30の場合で 3 であった。大多数のRISCのディレイスロットは 1 である。 パイプライン処理では命令のフェッチが重要であり、分岐予測が用いられることがある。分岐予測は失敗時のコストが大きいので、これを減らすために投機的実行などの技術が用いられる。 ARMやIA-64では、全ての命令を条件実行命令として、分岐命令の必要性を低減しパイプラインストールの可能性を低くする工夫をしている。.

新しい!!: 投機的実行と分岐命令 · 続きを見る »

命令パイプライン

命令パイプライン(Instruction pipeline)は、コンピュータなどのデジタル電子機器で命令スループット(単位時間当たりに実行できる命令数)を向上させる設計技法の1つで、命令レベルの並列性を高める1技法。 命令パイプラインのあるプロセッサは、命令の処理を独立して実行できる工程(ステージ)に分割する。各工程は、前の工程の出力を自身の入力とし、自身の出力を次の工程の入力とするように相互接続されている。このような構成で各工程を並列化し、全体としての処理時間を大幅に削減する。.

新しい!!: 投機的実行と命令パイプライン · 続きを見る »

コンパイラ最適化

ンパイラ最適化(こんぱいらさいてきか、Compiler optimization)の記事では、コンピュータ・プログラムの最適化に関する話題のうち、もっぱらコンパイラに関係するものに関して説明する。最も一般的な要求はプログラムの実行時間を最小化することであり、その次に使用するメモリ量を最小化することである。また、携帯可能なコンピュータが増えるにつれて、消費電力を最小化するという最適化も生まれてきた。 一部のコード最適化問題はNP完全問題であることが示されている。実際には、プログラマがコンパイラによる最適化の完了を待てる時間の上限なども考慮してコンパイラ最適化を実装する(最適化はCPU時間とメモリを多大に使用する)。かつては、コンピュータのメモリ実装量も実行できる最適化を制限する要因だった。 コンパイラメーカによっては、「コンパイラの最適化の能力が売り上げや評判に大きく影響する」と信じている場合があり、そういう信念に従って「最適化コンパイラ」と銘打つことがある。少なくとも、同程度にバグが無いコンパイラ同士であれば、という前提の範囲内なら、最適化の能力が高いほうが魅力的と言えるであろう。.

新しい!!: 投機的実行とコンパイラ最適化 · 続きを見る »

コンピュータ

ンピュータ(Computer)とは、自動計算機、とくに計算開始後は人手を介さずに計算終了まで動作する電子式汎用計算機。実際の対象は文字の置き換えなど数値計算に限らず、情報処理やコンピューティングと呼ばれる幅広い分野で応用される。現代ではプログラム内蔵方式のディジタルコンピュータを指す場合が多く、特にパーソナルコンピュータやメインフレーム、スーパーコンピュータなどを含めた汎用的なシステムを指すことが多いが、ディジタルコンピュータは特定の機能を実現するために機械や装置等に組み込まれる組み込みシステムとしても広く用いられる。電卓・機械式計算機・アナログ計算機については各項を参照。.

新しい!!: 投機的実行とコンピュータ · 続きを見る »

先行評価

先行評価(せんこうひょうか、eager evaluation)、正格評価(せいかくひょうか、strict evaluation)、厳密評価とは、プログラミング言語における評価戦略の一種であり、多くの言語処理系で標準的に使われている戦略である。.

新しい!!: 投機的実行と先行評価 · 続きを見る »

副作用 (プログラム)

プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることをいう。代表的な例は変数への値の代入である。 例えば与えられた数字を二倍して返す機能"double"があるとする。 このような機能では次のことが成立する。.

新しい!!: 投機的実行と副作用 (プログラム) · 続きを見る »

CPU

Intel Core 2 Duo E6600) CPU(シーピーユー、Central Processing Unit)、中央処理装置(ちゅうおうしょりそうち)は、コンピュータにおける中心的な処理装置(プロセッサ)。 「CPU」と「プロセッサ」と「マイクロプロセッサ」という語は、ほぼ同義語として使われる場合も多いが、厳密には以下に述べるように若干の範囲の違いがある。大規模集積回路(LSI)の発達により1個ないしごく少数のチップに全機能が集積されたマイクロプロセッサが誕生する以前は、多数の(小規模)集積回路(さらにそれ以前はディスクリート)から成る巨大な電子回路がプロセッサであり、CPUであった。大型汎用機を指す「メインフレーム」という語は、もともとは多数の架(フレーム)から成る大型汎用機システムにおいてCPUの収まる主要部(メイン)、という所から来ている。また、パーソナルコンピュータ全体をシステムとして見た時、例えば電源部が制御用に内蔵するワンチップマイコン(マイクロコントローラ)は、システム全体として見た場合には「CPU」ではない。.

新しい!!: 投機的実行とCPU · 続きを見る »

遅延評価

遅延評価(ちえんひょうか、lazy evaluation)や必要呼び(ひつようよび、call-by-need)は評価戦略の一種類であり、非正格な関数型言語で使用もされる。対義語は先行評価(eager evaluation)。.

新しい!!: 投機的実行と遅延評価 · 続きを見る »

計算資源

計算資源(けいさんしげん、英語: computational resource)とは、コンピュータ科学などで、計算機(具体的なコンピュータ、そこで動くプロセスやジョブ、あるいは抽象的な計算模型)が「計算量」のために費す、具体的あるいは抽象的な「資源」である。計算機資源と言うこともあるが、その場合はプロセッサ時間や記憶装置などコンピュータのハードウェアの占有量のような具体的なものを指していることが多い。 その他に、アプリケーションプログラムの設定データのような情報をデスクトップ環境などのシステムが保存しているものを「リソース」と呼ぶことがある。詳細は、最後の#その他の節のリンク先を参照のこと。.

新しい!!: 投機的実行と計算資源 · 続きを見る »

記憶装置

GB SDRAM。一次記憶装置の例 GB ハードディスクドライブ(HDD)。コンピュータに接続すると二次記憶装置として機能する SDLT テープカートリッジ。オフライン・ストレージの例。自動テープライブラリで使う場合は、三次記憶装置に分類される 記憶装置(きおくそうち)は、コンピュータが処理すべきデジタルデータをある期間保持するのに使う、部品、装置、電子媒体の総称。「記憶」という語の一般的な意味にも対応する英語としてはメモリ(memory)である。記憶装置は「情報の記憶」を行う。他に「記憶装置」に相当する英語としてはストレージ デバイス(Storage Device)というものもある。.

新しい!!: 投機的実行と記憶装置 · 続きを見る »

関係データベース管理システム

関係データベース管理システム(かんけいデータベースかんりシステム)、リレーショナルデータベースマネジメントシステム(relational database management system、略称:RDBMS)は、関係データベースの管理システムである。2007年の時点では、広く知られていてまた広く使われているデータベースのほとんどは関係データベースであったが、その後NoSQLが発展したため必ずしもそうとは言えなくなっている。 一定の人々は、関係モデルを煩雑であるなどとみなしているためか、RDBMSの簡単な定義として、「データを表の形式で永続化し、かつデータ間の関連もまた表の形式で永続化できるDBMS」と考えているようである。 関係データベースをオブジェクトデータベースと融合させたオブジェクト関係データベースなどといったものもある。その管理システムはオブジェクト関係データベース管理システムなどと呼ばれる (ORDBMS) 。 関係データベースの、標準の問い合わせ言語として SQL がある。 商用の RDBMS としては Oracle Database や IBM DB2 などが、オープンソースの RDBMS としては MySQL や PostgreSQL などが、広く知られている。ただし、これらの DBMS を 真のRDBMS と呼んで良いのかどうかについては、後述のとおり、議論の対象となっている。.

新しい!!: 投機的実行と関係データベース管理システム · 続きを見る »

Haskell

Haskell(ハスケル)は非正格な評価を特徴とする純粋関数型プログラミング言語である。名称は数学者であり論理学者であるハスケル・カリーに由来する。.

新しい!!: 投機的実行とHaskell · 続きを見る »

楽観的並行性制御

楽観的並行性制御(らっかんてきへいこうせいせいぎょ、optimistic concurrency control)とは、並行性制御(ロック)の手段の種別の一種である。楽観的ロックの概念である。他の処理と競合してはならないトランザクションにおいて、開始時には特に排他処理など行なわず、完了する際に他からの更新がされたか否かを確認し、もし他から更新されてしまっていたら自らの更新処理を破棄し、エラーとする。対照的に悲観的並行性制御がある。.

新しい!!: 投機的実行と楽観的並行性制御 · 続きを見る »

最適化 (情報工学)

ンピュータ関連において最適化(Optimization)という語は、最適化問題のそれを指すことも多いが、ここでは、コンパイラ最適化などに似た話題について説明する(「情報工学」と記事名には付いているが、全く information engineering の話題ではない)。コンピュータシステムは、主としてコストパフォーマンス上の理由から、効率的に(efficiently)動作することが望ましいことが多い。例えば、コンパイラ最適化は、高速化のためだったり、メモリの使用量を削減するためだったり、電力消費を抑えるためだったりする。最適化の対象となるシステムは、1つのプログラムの場合もあるし、複数のコンピュータの場合もあるし、インターネットのようなネットワーク全体の場合もある。 "optimization" という単語の語源は "optimal"(最適な、最善な)と同じだが、最適化によって真に最適なシステムとなることは稀である。最適化されたシステムは一般にある面でのみ最適となる。プログラムの実行時間を削減するためにメモリ使用量を増やしてでも実行時間を最適化したり、逆にメモリが少ないシステムで実行時間が長くなることを覚悟してメモリ使用量が少ないアルゴリズムを選んだりする。あらゆる場合に最適な方法や設計は存在しないので、技術者は最も重要と思われる観点での最適化のために妥協点を探る。さらに、ソフトウェアを完全に最適にする(それ以上どうやっても最適化できない状態にする)のに要する労力は、その最適化されたシステムを利用することで得られる利益よりも大きい。従って、最適化の工程は完全な最適解に到達する以前に終了させられるのが普通である。幸いなことに、効果の大きい改善は最適化工程の初期に現れることが多い。 最適化は様々なレベルで行われる。最も高いレベルの最適化は設計段階に行われる。設計が最適化されていれば、実装でも効率的なアルゴリズムを利用でき、品質のよいコードになるという利点がある。コンパイラ最適化を使えば、実行ファイルがさらに最適化される。最も低いレベルでは、コンパイラを使わずに人間がアセンブリ言語で最適なコードを書く。コンパイラ最適化の技術の進歩と最近のCPUの複雑さのため、コンパイラよりも最適なコードを人間が書くには大変な技能を要する。そのため、このような最適化を行うプロジェクトは滅多にない。最適化は例外的なケースを考慮しつつ、複雑な妥協点を探ることが多い。従って最適化されたプログラムはプログラマが理解できないほど難解になることも多い。可能であれば等価であることが保証されながらプログラムを変形させるなどの手法でバグの可能性をゼロにすべきだが、できない場合、できてないコードではバグを多く含む危険性がある。.

新しい!!: 投機的実行と最適化 (情報工学) · 続きを見る »

ここにリダイレクトされます:

投機実行

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »